المكونات
اردوينو نانو R3
DHT11 مستشعر درجة الحرارة والرطوبة
Everything ESP ESP8266 ESP-01
المقاوم 10K أوم
المقاوم 2.21k أوم
حول هذا المشروع
نظرة عامة
الهدف من هذا المشروع هو أن توضح لك كيف يمكنك الوصول عبر الإنترنت إلى ما تتم قراءته في أحد مسامير إدخال Arduino الخاصة بك.
يتم ذلك دون أي خادم ويب على Arduino الخاص بك ولكن باستخدام خدمة عبر الإنترنت.
في مشروعنا نحن نستخدم نموذج اردوينو نانو. لا توجد مشكلة في استخدام نموذج مجلس آخر - نانو هو واحد مع الموارد ليه - ولكن عليك أن تولي اهتماما بشأن التي هي دبابيس المناسبة لحالتك.
وأخيرًا ، للتخلص من جانب الخادم ، سنستخدم الخدمة عبر الإنترنت
هنـــــــــــــــــــــــــــــــــــــا حيث يمكننا ربط الأجهزة والتطبيقات بحساب اجتماعي واحد.
تشغيل المكونات على
يرجى ملاحظة أن هذا هو برنامج تعليمي نموذجي وليس منتج قائم بذاته بشكل مثالي. ما أعنيه هو أنني سأستخدم مصدر جهد مثبت مختبريًا لتحقيق 3.3 فولت اللازم لـ ESP8266 ولن أقوم بنشر كل ما يلزم للحصول على هذا الجهد من 5 فولت أو بطاريات أو شبكة ... فقط لتسهيل الأمر.
... ولكن ، إذا قررت الحصول على هذه 3 ، 3V من مصدر آخر ، فيجب مراعاة ما يلي:
ESP8266 حساس جدا. سوف الفولت فوق 3.6V تقلى ذلك. هناك بعض المناقشات على الشبكة حول ما إذا كان يمكن أن تقف لمزيد من الجهد ، ولكن ذلك يعتمد على كيفية توصيل دبابيس أخرى أو أي صانع هو من. لا تأخذ المخاطر ، تذكر: أقل من 3.6V.
ما لم يقله أحد لي وربما يوفر عليك يومًا واحدًا هو أنك قد ترى الوحدة الخاصة بك تعمل بكفاءة ، مع المصابيح المتلألئة ... ولكن المشاكل المتكررة للوصول إلى الشبكة. يبدو أن تربيطا تحت الجهد الاسمي قد يفترض وجود نقص في الطاقة التي يمكن أن تؤثر على أداء الترددات اللاسلكية.
يجب أن تدرك أن ESP8266 قد تستهلك ما يصل إلى 250mA. لا تحاول أبدا أن مصدرها من دبوس "3.3V" الخاص بك نانو ، وأنها ليست قادرة على مصدر هذا التيار.
مرة أخرى ، من أجل البساطة ، لن أستخدم مصدر 5Vdc خارجي لتشغيل لوحة Nano حيث سيتم توصيله بالكمبيوتر مع منفذ USB (كما ستجد في هذا البرنامج التعليمي ، سيتم مراقبة الاتصال التسلسلي على USB لتصحيح الأخطاء) ).
... ولكن إذا قررت الحصول على 5V من مصدر آخر ، فعليك أن تأخذ بعين الاعتبار:
السماح للنانو ، وليس فقط الجهد 5V ، ولكن التيار الكافي. يجب أن يكون المصدر قادراً على توفير 1A أو أكثر.
توصيل المصدر على دبوس "فين" من نانو ، وليس في دبوس "5V". الأول هو المكان المناسب لأنه محمي من قبل جهة تنظيم داخلية (لا تخف من إعطاء 6V). والثاني هو الإخراج الذي يمكن أن يغذي مكونات أخرى (سيكون لطيفا لجهاز استشعار DHT11 لدينا).
توصيل وحدة WiFi إلى اللوحة
قبل أن نصل إلى لوحة ...
... هل تعرف حقا أي معدل الباود التسلسلي يتم تعيينه في وحدة ESP8266 الخاصة بك من قبل صانع أو أي دولة أخرى؟ إذا كانت الإجابة بنعم ، فانتقل إلى النقطة التالية.
صناع عادة تعيينه إلى 9600 أو 115200 ، ولكن ربما معدل آخر.
قد ترغب في معرفة ذلك بعد طريقة التجربة والخطأ عند الترميز ، ومجرد محاولة معدلات الباود مختلفة ومعرفة ما إذا كان يعمل.
أو قد ترغب في توصيل جهاز الكمبيوتر الخاص بك بـ ESP8266 ، المتصل بين وحدة نمطية FTDI ، لطلب معدل الباود الفعلي باستخدام أوامر ATT. أوصي بهذه الطريقة لأنه أكثر توضيحًا بالإضافة إلى أنه يمكنك التأكد من أن الوحدة تعمل بشكل صحيح (وليس مقليًا أو تالفًا بصمت). ولتحقيق ذلك ، اتبعت هذا البرنامج التعليمي ، فهو جيد جدًا وواضح.
أوصي بتعيينه في 9600 bauds: سهل وبطيء للإلكترونيات الخاصة بك ، بسرعة كافية لصبرك. سيكون الأمر الصحيح هو AT + CIOBAUD = 9600.
الاتصال باللوحة
والآن بعد أن عرفنا معدل البث بالباود الذي لدينا على وحدة ESP8266 ، يمكننا المضي قدمًا.
لن نستخدم منفذ UR RX / TX الخاص بلوحة Nano للاتصال بـ ESP8266. هذا لأننا نريد الحصول على هذه القناة مجانًا لتصحيح الأخطاء من جهاز الكمبيوتر الخاص بنا.
ثم سنستخدم اثنين من دبابيس رقمية مختلفة أن يكون لها منفذ تسلسلي آخر ، ما يسمى "المنفذ التسلسلي للبرمجيات". دعونا اليوم D2 سيكون TX و D3 سيكون دبوس RX. لا تقلق بشأن كيفية تنفيذ هذا المنفذ الجديد ، ستجد في قسم الترميز مدى سهولة التعامل مع المكتبة.
ثم ، هذه هي الطريقة التي يجب أن يكون الاتصال بين ESP8266 واللوحة نانو.
لاحظ أنه يجب تمكين CHIN PIN على ESP8266 من خلال تعيين حالة عالية (3.3 فولت). يتم وضع المقاوم 10Kohm للحماية.
هناك مفهوم آخر يجب أخذه في الاعتبار هو أن de TX / RX مزروع بمستويات جهد مختلفة في كلا الجهازين. يعمل ESP8266 بين 0 و 3.3 فولت ، يعمل Nano بين 0 و 5 فولت. ونظرًا لأن Nano قادر على اكتشاف 3.3V كدولة عالية ، يمكنك توصيل RX على Nano مباشرةً إلى TX على ESP8266. ولكن على العكس من ذلك ينصح مقسم التوتر لحماية المدخلات RX مع الجهد المناسب 3.3V عندما عالية.
... الشيء هو أن لي والعديد من الآخرين قد فحص أنه يعمل بشكل جيد خلال أشهر دون الحاجز التوتر ، ويبدو ESP8266 المحمية بما فيه الكفاية. لكن لا تثق بي ، افعل ذلك جيداً.
ضبط جهاز استشعار درجة الحرارة
ما نراه هو أنه يحتوي على 3 دبابيس فقط. سيكون "+" هو المكان الذي سيتم فيه توفير 5 فولت ، حيث يتم توصيله بـ "5V" من لوحة Nano. "-" هي الأرضية المشتركة مع بقية المكونات. و "الخارج" ليس ناتجا تناظريا أو مقاوما كما قد يخمنه المرء ، بل هو في الواقع ناتج تسلسلي رقمي حيث أن هذا المستشعر مزود بمكونات ذكية على متنه.
سنقرأ هذا الاتصال التسلسلي على رقم التعريف الشخصي 5 في مثالنا (نعم ، يمكن أن يكون أي دبوس رقمي آخر من اللوح الخاص بك بينما تضعه في الاعتبار عند الترميز).
لذلك ، الاتصال ببساطة كما يلي
يجب أن يكون كل ذلك متصلاً هكذا:
تسجيل دبوس على الخدمة عبر الإنترنت
اتبع العملية للاشتراك في circusofthings.com إذا لم يكن لديك حساب حتى الآن. انها حرة وتبحث عن اختبار.
في لوحة البيانات الخاصة بك ، قم بإنشاء "إشارة جديدة". لاحظ أنه يعرض مفتاحًا يحدد الإشارة. تذكر ذلك للخطوة التالية
قبل ضبط الرمز ، سيكون عليك الحصول على بعض مكتبات Arduino:
مكتبة DHT الاستشعار ، للتواصل مع مجس. أحضره هنا.
CircusWifiLib ، لتنفيذ API للمجتمع عبر الإنترنت. أحضره هنا.
(أنت لا تحتاج إلى أي lib لـ Wifi / ESP8266 كما تتم بواسطة CircusWifiLib).
الآن يمكننا إلقاء نظرة على الكود:
#include <CircusWifiLib.h>
// ------------------------------------------------
// These are the CircusWifiLib related declarations
// ------------------------------------------------
int TXPinForWifiModule = 2; // IO port in your arduino you will use as TX for serial communication with the wifi module
int RXPinForWifiModule = 3; // IO port in your arduino you will use as RX for serial communication with the wifi module
char ssid[] = "your_ssid_here"; // your wifi network SSID
char pass[] = "your_wifi_password_here"; // your wifi network password
int wifiSerialBaudRate = 9600; // Baud rate between your arduino and your wifi module. Did you check that your module actually uses this baud rate?
int debugSerialBaudRate = 9600; // Baud rate between your arduino and your computer
char token[] = "your_token_here"; // Your API token for Circus
char analogSignalTemperatureKey[] = "944668525"; // The key of the signal you have created at circusofthings.com
SoftwareSerial ss(RXPinForWifiModule,TXPinForWifiModule);
CircusWifiLib circus(Serial,&ss,ssid,pass,DEBUG_YES,KEEP_ALIVE);
// ------------------------------------------------
// These are the Example related declarations
// ------------------------------------------------
#define DHTPIN 5 // digital for serial propietary portocol of sensor DHT11
#define DHTTYPE DHT11 // exact model of temperature sensor DHT 11 for the general library
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(debugSerialBaudRate);
ss.begin(wifiSerialBaudRate);
dht.begin();
circus.begin();
}
void loop() {
float t = dht.readTemperature();
if (isnan(t)) {
t=-1; // if so, check the connection of your DHT11 sensor
}
delay(3000);
circus.write(analogSignalTemperatureKey,t,token);
}
ضع كلمة مرور WIFI بدلاً من your_wifi_password_here.
ضع رمز حسابك بدلاً من your_user_token_here.
ضع مفتاح الإشارة التي أنشأتها بدلاً من your_signal_key_here.
سيحصل الرمز أعلاه على قيمة المستشعر كل 3 ثوانٍ وسيقوم بنشره على الإشارة المحددة بواسطة المفتاح الذي تملكه.
كما يلي
وفتح الشاشة التسلسلية من IDE (إشعار في حالتنا قمنا بتعيين 9600 baud لتصحيح)
إذا سار كل شيء بشكل صحيح ، فيجب أن تشاهد الإشارة والتي توضح درجة الحرارة التي لديك بالفعل في غرفتك
الآن ، يمكنك تعديل مستوى رؤيتها في لوحة التحكم وتعيينها للجمهور.
ثم لديك الرابط لمشاركتها مع أولئك الذين ليس لديهم حساب
يمكن الوصول إليه الآن من خلال أي جهاز أو تطبيق آخر في العالم.
آمل أن تكون مثيرة للاهتمام بالنسبة لك. شكرا على انتباهك