تعتبر الرطوبة ودرجة الحرارة من العوامل الشائعة جدًا للقياس في العديد من الأماكن مثل المزرعة والبيوت البلاستيكية والطبية والصناعات المنزلية والمكاتب. لقد قمنا بالفعل بتغطية قياس الرطوبة ودرجة الحرارة باستخدام Arduino وعرض البيانات على شاشة LCD.
في مشروع إنترنت الأشياء هذا ، سنقوم بمراقبة الرطوبة ودرجة الحرارة عبر الإنترنت باستخدام ThingSpeak حيث سنعرض بيانات الرطوبة ودرجة الحرارة الحالية عبر الإنترنت باستخدام خادم ThingSpeak. يتم تحقيقه عن طريق اتصالات البيانات بين Arduino ووحدة الاستشعار DHT11 ووحدة WIFI ESP8266 وشاشات الكريستال السائل. يعرض مقياس الحرارة ذو المقياس المئوي ومقياس الرطوبة مقياس النسبة المئوية درجة الحرارة المحيطة والرطوبة من خلال شاشة LCD ويرسلها أيضًا إلى خادم ThingSpeak للمراقبة الحية من أي مكان في العالم.
العمل وإعداد ThingSpeak:
يتكون هذا المشروع القائم على إنترنت الأشياء من أربعة أقسام ، أولاً مستشعر الرطوبة ودرجة الحرارة DHT11 يستشعر بيانات الرطوبة ودرجة الحرارة . ثانيًا ، يستخرج Arduino Uno بيانات مستشعر DHT11 كرقم مناسب بالنسبة المئوية ومقياس درجة مئوية ، ويرسلها إلى وحدة Wi-Fi. ثالثًا ، ترسل وحدة Wi-Fi Module ESP8266 البيانات إلى ThingSpeak's Sever. وأخيرًا ، يحلل ThingSpeak البيانات ويظهرها في شكل رسم بياني. تُستخدم شاشة LCD الاختيارية أيضًا لعرض درجة الحرارة والرطوبة.
يوفر ThingSpeak أداة جيدة جدًا للمشاريع القائمة على إنترنت الأشياء لـ Arduino. باستخدام موقع ThingSpeak ، يمكننا مراقبة بياناتنا عبر الإنترنت من أي مكان ، ويمكننا أيضًا التحكم في نظامنا عبر الإنترنت ، باستخدام القنوات وصفحات الويب التي توفرها ThingSpeak. ThingSpeak "يجمع" البيانات من أجهزة الاستشعار، "تحليل وتصور" البيانات و 'أعمال' عن طريق إحداث رد الفعل. نوضح هنا كيفية إرسال البيانات إلى خادم ThingSpeak باستخدام وحدة ESP8266 WIFI:
1. أولاً وقبل كل شيء ، يحتاج المستخدم إلى إنشاء حساب على موقع ThingSpeak.com ، ثم تسجيل الدخول والنقر على البدء.
2. اذهب الآن إلى قائمة "القنوات" وانقر على خيار قناة جديدة في نفس الصفحة لمزيد من العملية.
3. الآن سترى نموذجًا لإنشاء القناة ، قم بملء الاسم والوصف حسب اختيارك. ثم املأ "الرطوبة" و "درجة الحرارة" في تسميات الخانة 1 والخانة 2 ، وحدد مربعات الاختيار لكلا الحقلين. حدد أيضًا مربع الاختيار لخيار "جعله عامًا" أدناه في النموذج وأخيراً احفظ القناة. الآن تم إنشاء قناتك الجديدة.
4. الآن انقر فوق علامة التبويب "مفاتيح API" واحفظ مفتاحي الكتابة والقراءة API ، وهنا نستخدم فقط مفتاح الكتابة. تحتاج إلى نسخ هذا المفتاح في char * api_key في الكود.
5. بعد ذلك ، انقر فوق "استيراد / تصدير البيانات" وانسخ عنوان URL لطلب GET لخلاصة القناة المحدثة ، وهو:
api.thingspeak.com/update؟api_key=SIWOYBX26OXQ1WMS&field1=0
6. يحتاج المستخدم الآن إلى فتح "api.thingspeak.com" باستخدام وظيفة httpGet مع postUrl كـ "update؟ api_key = SIWOYBX26OXQ1WMS & field1 = 0" ثم إرسال البيانات باستخدام موجز البيانات أو عنوان طلب التحديث.
قبل إرسال البيانات ، يحتاج المستخدم إلى تحرير سلسلة الاستعلام هذه أو postUrl باستخدام حقول بيانات درجة الحرارة والرطوبة ، كما هو موضح أدناه. لقد أضفنا هنا كلا المعلمتين في السلسلة التي نحتاج إلى إرسالها عبر استخدام طلب GET إلى الخادم ، بعد أن استخدمنا httpGet لإرسال البيانات إلى الخادم. تحقق من الكود الكامل أدناه.
sprintf (postUrl، "update؟ api_key =٪ s & field1 =٪ s & field2 =٪ s"، api_key، humidStr، tempStr) ؛ httpGet ("api.thingspeak.com"، postUrl، 80) ؛
يتم توضيح العملية برمتها في قسم الفيديو ، في نهاية هذه المقالة.
يعتمد العمل في هذا المشروع على اتصال تسلسلي أحادي السلك لجلب البيانات من DHT11. يرسل Arduino أولاً إشارة بدء إلى وحدة DHT ثم يعطي DHT إشارة استجابة تحتوي على بيانات. يقوم Arduino بجمع واستخراج البيانات في جزأين أولهما الرطوبة والثاني درجة الحرارة ثم إرسالها إلى 16x2 LCD وخادم ThingSpeak. يعرض ThingSpeak البيانات في شكل رسم بياني على النحو التالي:
يمكنك معرفة المزيد حول مستشعر DHT11 وتفاعله مع Arduino هنا.
سيركويت دسكريبتيون:
تعتبر الوصلات الخاصة بمشروع ThingSpeak لمراقبة درجة الحرارة والرطوبة بسيطة للغاية. هنا يتم استخدام شاشة عرض بلورية سائلة لعرض درجة الحرارة والرطوبة ، والتي ترتبط مباشرة بـ Arduino في وضع 4 بت. دبابيس LCD وهي RS و EN و D4 و D5 و D6 و D7 متصلة برقم دبوس Arduino الرقمي 14 و 15 و 16 و 17 و 18 و 19. شاشة LCD هذه اختيارية.
وحدة الاستشعار DHT11 متصلة بالدبوس الرقمي 12 من Arduino. تتصل دبابيس Vcc و GND بوحدة Wi-Fi ESP8266 مباشرةً بـ 3.3 فولت و GND من Arduino و CH_PD متصل أيضًا بـ 3.3 فولت. دبابيس Tx و Rx من ESP8266 متصلة مباشرة بالدبوس 2 و 3 من Arduino. تُستخدم مكتبة البرامج التسلسلية هنا أيضًا للسماح بالاتصال التسلسلي على الدبوس 2 و 3 من Arduino. لقد قمنا بالفعل بتغطية واجهة وحدة ESP8266 Wi-Fi إلى Arduino بالتفصيل.
جزء البرمجة:
يلعب جزء البرمجة في هذا المشروع دورًا مهمًا للغاية لأداء جميع العمليات. بادئ ذي بدء ، نقوم بتضمين المكتبات المطلوبة وتهيئة المتغيرات.
# تضمين "dht.h" // تضمين مكتبة لـ dht #include
بعد ذلك أدخل مفتاح Write API الخاص بك وأخذ بعض السلاسل.
char * api_key = "SIWOYBX26OXQ1WMS" ؛ // أدخل مفتاح كتابة API الخاص بك من ThingSpeak static char postUrl ؛ إنت هيومي ، تيم ؛ httpGet باطل (String ip، String path، int port = 80) ؛
في وظيفة الحلقة الفارغة () نقرأ درجة الحرارة والرطوبة ثم نعرض تلك القراءات على شاشة LCD.
يتم استخدام وظيفة send2server () باطلة لإرسال البيانات إلى الخادم. وظيفة Send2server هي إحدى روتين خدمة مقاطعة المؤقت ، وتستدعي كل 20 ثانية. عندما نستدعي وظيفة التحديث ، يتم استدعاء روتين خدمة مقاطعة المؤقت.
send2server () باطلة {char tempStr؛ شار رطب dtostrf (tem ، 5 ، 3 ، tempStr) ؛ dtostrf (humi، 5، 3، humidStr) ؛ sprintf (postUrl، "update؟ api_key =٪ s & field1 =٪ s & field2 =٪ s"، api_key، humidStr، tempStr) ؛ httpGet ("api.thingspeak.com"، postUrl، 80) ؛ }