جدول المحتويات:
- الخطوة 1: الأجهزة المطلوبة
- الخطوة 2: توصيلات الأجهزة
- الخطوة 3: رمز جدولة المهام
- الخطوة 4: كود لقراءة قيم درجة الحرارة والرطوبة
- الخطوة 5: رمز استضافة خادم ويب
- الخطوة 6: إعداد الكلام
- الخطوة 7: رمز إرسال البيانات إلى الشيء الحديث
- الخطوة 8: الكود العام
- الخطوة 9: الاعتمادات
فيديو: تطبيق THINGSPEAK TEMPERATURE AND HUMIDITY APP باستخدام ESP8266: 9 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
أثناء العبث بالأشياء الإلكترونية الخاصة بي ، خطرت لي هذه الفكرة لإنشاء تطبيق طقس على شبكة الإنترنت. يستخدم تطبيق الويب هذا مستشعر SHT31 للحصول على بيانات درجة الحرارة والرطوبة في الوقت الفعلي. لقد نشرنا مشروعنا على وحدة ESP8266 WiFi. متصل أو غير متصل! لا داعي للقلق ، سواء كنت متصلاً بالإنترنت أو غير متصل بالإنترنت ، فستتلقى تحديثات الطقس من أي مكان وفي أي وقت. ينشر تطبيق الويب هذا البيانات إلى خادم الويب المحلي بالإضافة إلى السحابة. بالنسبة للعمليات السحابية ، فإننا نستخدم ThingSpeak API. يستخدم SHT31 I2C للحصول على البيانات من المستشعر.
SHT 31 عبارة عن مستشعرات درجة الحرارة والرطوبة من إنتاج شركة Sensirion. يوفر SHT31 مستوى عاليًا من الدقة حول ± 2٪ RH. تتراوح رطوبتها ما بين 0 إلى 100٪ ومدى درجة الحرارة بين -40 إلى 125 درجة مئوية. إنه أكثر موثوقية وسرعة مع 8 ثوانٍ من وقت استجابة المستشعر. تتضمن وظائفه معالجة الإشارات المحسنة وتوافق I2C. لديها طرق مختلفة للعمليات مما يجعلها موفرة للطاقة.
في هذا البرنامج التعليمي ، قمنا بتوصيل SHT 31 مع لوحة Adafruit Huzzah. لقراءة قيم درجة الحرارة والرطوبة ، استخدمنا درع ESP8266 I2C. هذا المحول يجعل جميع المسامير في متناول المستخدم ويوفر بيئة I2C سهلة الاستخدام.
الخطوة 1: الأجهزة المطلوبة
الأجهزة المستخدمة لإكمال هذه المهمة:
- SHT 31
- حوزة أدافروت ESP8266
- محول ESP8266 I2C
- كابل I2C
الخطوة 2: توصيلات الأجهزة
تتضمن هذه الخطوة دليل توصيل الأجهزة. يشرح هذا القسم بشكل أساسي توصيلات الأسلاك المطلوبة بين المستشعر و ESP8266. الاتصالات هي على النحو التالي.
- يعمل SHT31 فوق I2C. توضح الصورة أعلاه العلاقة بين وحدة ESP8266 و SHT31. نحن نستخدم كبل I2C لذلك إما أنه يمكننا استخدام 4 أسلاك توصيل F إلى F.
- يتم استخدام سلك واحد لـ Vcc ، والسلك الثاني لـ GND واثنين آخرين لـ SDA و SCL على التوالي
- وفقًا لمحول I2C ، يتم استخدام pin2 والدبوس 14 من لوحة ESP8266 كـ SDA و SCL على التوالي
الخطوة 3: رمز جدولة المهام
في هذا البرنامج التعليمي ، نقوم بإجراء ثلاث عمليات
- اقرأ البيانات من SHT11 باستخدام بروتوكول I2C
- قم باستضافة خادم الويب وانشر قراءة المستشعر على صفحة الويب
- انشر قراءات المستشعر في ThingSpeak API
لتحقيق ذلك نحن نستخدم مكتبة TaskScheduler. لقد قمنا بجدولة ثلاث مهام مختلفة تشير إلى ثلاث عمليات تحكم مختلفة. هكذا يتم فعل هذا
- المهمة 1 لقراءة قيمة المستشعر تعمل هذه المهمة لمدة ثانية واحدة حتى تصل إلى 10 ثوانٍ.
- عندما تصل Task1 إلى مهلتها ، يتم تمكين المهمة 2 وتعطيل Task1.
- نقوم بالاتصال بـ AP في رد الاتصال هذا ، يتم أخذ متغيرين منطقيين لرعاية التبديل بين STA و AP
- في المهمة 2 ، نستضيف خادم ويب على 192.168.1.4. تعمل هذه المهمة كل 5 ثوانٍ حتى تصل إلى مهلتها وهي 50 ثانية
- عندما تصل المهمة 2 إلى مهلة انتهاء المهلة ، يتم تمكين المهمة 3 وتعطيل Task2.
- نقوم بالاتصال بـ STA (عنوان IP المحلي) في هذا calback في المهمة 3 ، ننشر قراءة المستشعر إلى واجهة ThingSpeak API السحابية
-
يتم تشغيل المهمة 3 كل خمس ثوان حتى تصل إلى مهلتها ، أي 50 ثانية
- عندما تصل Task3 إلى مهلتها ، يتم تمكين المهمة 1 مرة أخرى ويتم تعطيل Task3.
- عندما لا يتم استدعاء أي رد أو أن الجهاز في وضع الخمول ، فإنه ينتقل إلى Light Sleep وبالتالي توفير الطاقة.
TaskI2CCallback () باطلة ؛
TaskI2CDisable () باطلة ؛ TaskAPCallback () باطلة ، TaskAPDisable () باطلة ؛ TaskWiFiCallback () باطلة ، TaskWiFiDisable () باطلة ، // مهام i2c ، استضافة خادم الويب والنشر على مهمة Thingspeak tI2C (1 * TASK_SECOND ، TASK_FOREVER ، & taskI2CCallback ، & ts ، false ، NULL ، & TaskI2CDisable) ؛ مهمة tI2C (1 * TASK_SECOND ، TASK_FOREVER ، & taskI2CCallback ، & ts ، false ، NULL ، & taskI2CDisable) ؛ Task tAP (5 * TASK_SECOND ، TASK_FOREVER ، & taskAPCallback ، & ts ، false ، NULL ، & taskAPDisable) ؛ مهمة tWiFi (5 * TASK_SECOND ، TASK_FOREVER ، & TaskWiFiCallback ، & ts ، false ، NULL ، & TaskWiFiDisable) ؛ // مهلة المهام tI2C.setTimeout (10 * TASK_SECOND) ؛ tAP.setTimeout (50 * TASK_SECOND) ، tWiFi.setTimeout (50 * TASK_SECOND) ، // تمكين مهمة I2C tI2C.enable () ؛
الخطوة 4: كود لقراءة قيم درجة الحرارة والرطوبة
نحن نستخدم مكتبة Wire.h لقراءة قيم درجة الحرارة والرطوبة. تسهل هذه المكتبة اتصال i2c بين المستشعر والجهاز الرئيسي. 0x44 هو عنوان I2C لـ SHT31.
يعمل SHT31 في وضع مختلف للعمليات. يمكنك الرجوع إلى ورقة البيانات لذلك. نحن نستخدم 0x2C و 0x06 كـ MSB و LSB على التوالي لعملية طلقة واحدة.
// I2C Task callback void taskI2CCallback () {Serial.println ("taskI2CStarted") ؛ جذر int غير موقع [6] ؛ // بدء الإرسال من 0x44 ؛ Wire.beginTransmission (العنوان) ؛ // من أجل إرسال طلقة واحدة مع قابلية عالية للتكرار ، نستخدم 0x2C (MSB) و 0x06 (LSB) Wire.write (0x2C) ؛ Wire.write (0x06) ؛ // نهاية الإرسال Wire.endTransmission () ؛ // طلب البايت من 0x44 Wire.beginTransmission (Addr) ؛ Wire.endTransmission () ؛ Wire.request From (Addr، 6) ؛ إذا كانت (Wire.available () == 6) {// data [0] والبيانات [1] تحتوي على 16 بت من درجة الحرارة. الجذر [0] = Wire.read () ، الجذر [1] = Wire.read () ، // البيانات [2] تحتوي على 8 بت من جذر CRC [2] = Wire.read () ؛ // البيانات [3] والبيانات [4] تحتوي على 16 بتًا من جذر الرطوبة [3] = Wire.read ()؛ الجذر [4] = Wire.read () ؛ // البيانات [5] تتكون من 8 بت جذر CRC [5] = Wire.read () ؛ } int temp = (root [0] * 256) + root [1] ؛ // تحول MSB بمقدار 8 بتات إضافة LSB float cTemp = -45.0 + (175.0 * temp / 65535.0) ؛ تعويم fTemp = (cTemp * 1.8) + 32.0 ؛ // انقل MSB بمقدار 8 بتات وأضف LSB مقسمًا عليها بدقة كاملة و * 100 للنسبة المئوية للرطوبة الطافية = (100.0 * ((root [3] * 256.0) + root [4])) / 65535.0 ؛ tempC = cTemp ؛ tempF = fTemp ؛ رطوبة = رطوبة؛ Serial.print ("درجة الحرارة في C: / t")؛ Serial.println (سلسلة (cTemp، 1)) ؛ Serial.print ("درجة الحرارة في F: / t")؛ Serial.println (سلسلة (fTemp، 1)) ؛ Serial.print ("الرطوبة: / t")؛ Serial.println (سلسلة (الرطوبة ، 1)) ؛ }
الخطوة 5: رمز استضافة خادم ويب
لقد استضفنا خادم ويب من أجهزتنا على عنوان IP ثابت.
تستخدم مكتبة ESP8266WebServer لاستضافة خادم الويب
- نحتاج أولاً إلى الإعلان عن عنوان IP والبوابة وقناع الشبكة الفرعية لإنشاء عنوان IP الثابت الخاص بنا
- أعلن الآن عن SSID وكلمة المرور لنقطة الوصول الخاصة بك. قم بالاتصال بنقطة الوصول من أي جهاز STA
- قم باستضافة الخادم على المنفذ 80 وهو منفذ افتراضي لبروتوكول اتصال الإنترنت ، وأدخل بروتوكول نقل النص التشعبي (HTTP) 192.168.1.4 على متصفح الويب الخاص بك لصفحة الويب التمهيدية و 192.168.1.4/Value لصفحة ويب قراءة المستشعر
// ثابت IP لـ APIPAddress ap_local_IP (192 ، 168 ، 1 ، 4) ؛ IPAddress ap_gateway (192 ، 168 ، 1 ، 254) ؛ IPAddress ap_subnet (255 ، 255 ، 255 ، 0) ؛ // ssid و AP لشبكة WiFi المحلية في وضع STA ، const char WiFissid = "*********" ؛ const char WiFipass = "*********" ؛ // ssid و pass for AP const char APssid = "********" ؛ تجاوز الحرف الثابت = "********" ؛ خادم ESP8266WebServer (80) ؛ إعداد باطل {server.on ("/"، onHandleDataRoot)؛ server.on ("/ القيمة"، onHandleDataFeed)؛ server.onNotFound (onHandleNotFound) ؛} باطل TaskAPCallback () {Serial.println ("تم بدء تشغيل TaskAP") ؛ server.handleClient () ، } void onHandleDataRoot () {server.send (200، "text / html"، PAGE1)؛ } void onHandleDataFeed () {server.send (200، "text / html"، PAGE2)؛ } void onHandleNotFound () {String message = "لم يتم العثور على الملف / n / n"؛ الرسالة + = "URI:" ؛ message + = server.uri () ؛ message + = "\ n الطريقة:" ؛ message + = (server.method () == HTTP_GET)؟ "GET": "POST" ؛ message + = "\ n الوسائط:" ؛ message + = server.args () ؛ الرسالة + = "\ n" ؛ server.send (404، "نص / عادي" ، رسالة) ؛ } إعادة الاتصال باطل APWiFi () {WiFi.mode (WIFI_AP_STA) ؛ تأخير (100) ؛ WiFi.disconnect () ؛ الحالة المنطقية = WiFi.softAPConfig (ap_local_IP، ap_gateway، ap_subnet) ؛ إذا (الحالة == صحيح) {Serial.print ("Setting soft-AP…") ؛ boolean ap = WiFi.softAP (APssid ، APpass) ؛ إذا (ap == true) {Serial.print ("متصل بـ: / t") ؛ // IPAddress myIP = WiFi.softAPIP () ؛ Serial.println (WiFi.softAPIP ()) ؛ } server.begin () ؛
}
الخطوة 6: إعداد الكلام
ThingSpeak هي عبارة عن منصة إنترنت الأشياء. ThingSpeak هي خدمة ويب مجانية تتيح لك جمع بيانات المستشعر وتخزينها في السحابة.
في هذه الخطوة ، سأقدم لك إجراءً موجزًا لإعداد حساب Thing Speak الخاص بك
- قم بالتسجيل للحصول على حساب مستخدم جديد في ThingSpeak
- قم بإنشاء قناة جديدة عن طريق تحديد القنوات ، والقنوات الخاصة بي ، ثم القناة الجديدة
- قم بتحرير الحقول الخاصة بك
- تحتوي هذه الحقول على بيانات المستشعر الخاصة بك
- لاحظ كتابة مفتاح API ومعرف القناة
- في رسم Arduino الخاص بك ، يمكنك استخدام مكتبة ThingSpeak لـ Arduino أو يمكنك نشر البيانات مباشرة على ThingSpeak API
- توضح الخطوة التالية كيفية نشر المحتوى على Thing Speak API
الخطوة 7: رمز إرسال البيانات إلى الشيء الحديث
نحن هنا ننشر قراءات المستشعر على Thing Speak. الخطوات التالية مطلوبة لإكمال هذه المهمة-
- قم بإنشاء حسابك في شيء يتكلم إنشاء قنوات وحقول لتخزين بيانات المستشعر الخاص بك
- يمكننا الحصول على البيانات ونشرها من ESP إلى thingSpeak والعكس بالعكس باستخدام طلبات GET و POST إلى واجهة برمجة التطبيقات.
- يمكننا نشر بياناتنا على ThingSpeak على النحو التالي
معرف TaskWiFiCallback () {WiFiClient wifiClient؛ if (wifiClient.connect (hostId، 80)) {String postStr = apiKey؛ postStr + = "& field1 ="؛ postStr + = سلسلة (رطبة) ؛ postStr + = "& field2 ="؛ postStr + = String (tempC) ؛ postStr + = "& field3 =" ؛ postStr + = String (tempF) ؛ postStr + = "\ r / n / r / n"؛ wifiClient.print ("POST / تحديث HTTP / 1.1 / n") ؛ wifiClient.print ("المضيف: api.thingspeak.com / n") ؛ wifiClient.print ("اتصال: إغلاق / n") ؛ wifiClient.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n") ؛ wifiClient.print ("نوع المحتوى: application / x-www-form-urlencoded / n") ؛ wifiClient.print ("طول المحتوى:") ؛ wifiClient.print (postStr.length ()) ، wifiClient.print ("\ n / n") ؛ wifiClient.print (postStr) ؛ } wifiClient.stop () ، }
الخطوة 8: الكود العام
الرمز العام متاح في مستودع GitHub الخاص بي
الخطوة 9: الاعتمادات
- اردوينو جسون
- ESP826WebServer
- جدول المهام
- SHT 31
- مسح I2C
- HIH6130 تعليمي تعليمي
- الأسلاك
- NCD.io
موصى به:
التحكم في ESP8266 باستخدام تطبيق Telegram: 7 خطوات
التحكم في ESP8266 باستخدام تطبيق Telegram: مرحبًا ، ما الأمر يا رفاق! Akarsh هنا من CETech هل تساءلت يومًا عن الدردشة مع أجهزتك عبر تطبيق مراسلة؟ يبدو غريبًا ، صحيح. لكننا اليوم سنفعل شيئًا مشابهًا لذلك. لا تقلق ، فأنت لست بحاجة إلى شراء هواتف محمولة
تطبيق Weather Web باستخدام Esp8266: 7 خطوات
تطبيق Weather Web باستخدام Esp8266: SHT 31 عبارة عن مستشعرات درجة الحرارة والرطوبة من إنتاج شركة Sensirion. يوفر SHT31 مستوى عاليًا من الدقة حول ± 2٪ RH. تتراوح رطوبتها ما بين 0 إلى 100٪ ومدى درجة الحرارة بين -40 إلى 125 درجة مئوية. إنه أكثر موثوقية وسرعة مع
إنشاء تطبيق Android للشركات الصغيرة باستخدام MIT APP و Google Fusion Table: 7 خطوات
إنشاء تطبيق Android للأعمال الصغيرة باستخدام MIT APP و Google Fusion Table: هل أردت يومًا إنشاء تطبيقك الخاص الذي يمكن أن يكون متاحًا في متجر google play !!! إذا كان لديك عمل تجاري فإن هذا البرنامج التعليمي سيغير حياتك. بعد قراءة هذا بعناية ستتمكن من تقديم طلبك الخاص. قبل
استخدام تطبيق MATLAB App Designer مع Arduino: 5 خطوات
باستخدام MATLAB App Designer مع Arduino: MATLAB App Designer هو أداة قوية تسمح لك بتصميم واجهات مستخدم رسومية (GUIs) مع جميع وظائف MATLAB. في هذا البرنامج التعليمي ، سنقوم بإنشاء واجهة مستخدم رسومية للتحكم في سطوع مؤشر LED من خلال من السهل اتباع الخطوات. N
كيفية التحكم في Wemos D1 Mini / Nodemcu باستخدام تطبيق Blynk (IOT) (esp8266): 6 خطوات
كيفية التحكم في Wemos D1 Mini / Nodemcu باستخدام تطبيق Blynk (IOT) (esp8266): مرحبًا يا أصدقاء ، في هذا الدليل ، سأوضح لك كيفية التحكم في wemos D1 mini أو (nodemcu) باستخدام تطبيق blynk. إنه دليل مطلق للمبتدئين. للحصول على البرنامج التعليمي التفصيلي يجب أن تشاهد الفيديو لا تنسى أن تحب ، تشارك & amp؛ اشترك في قناتي