جدول المحتويات:

توصيل مستشعر DHT11 / DHT22 بالسحابة بلوحة تعتمد على ESP8266: 9 خطوات
توصيل مستشعر DHT11 / DHT22 بالسحابة بلوحة تعتمد على ESP8266: 9 خطوات

فيديو: توصيل مستشعر DHT11 / DHT22 بالسحابة بلوحة تعتمد على ESP8266: 9 خطوات

فيديو: توصيل مستشعر DHT11 / DHT22 بالسحابة بلوحة تعتمد على ESP8266: 9 خطوات
فيديو: الدرس السادس عشر: توصيل حساس DHT11 مع لوحة الاردوينو | ومقارنة بين DHT11 vs DHT22 2024, شهر نوفمبر
Anonim
توصيل مستشعر DHT11 / DHT22 بالسحابة باستخدام لوحة تعتمد على ESP8266
توصيل مستشعر DHT11 / DHT22 بالسحابة باستخدام لوحة تعتمد على ESP8266

في المقالة السابقة ، قمت بتوصيل لوحة NodeMCU المستندة إلى ESP8266 بخدمة Cloud4RPi. الآن ، حان وقت مشروع حقيقي!

اللوازم

متطلبات الأجهزة:

  • أي لوحة تعتمد على شريحة ESP8266 (على سبيل المثال ، NodeMCU)
  • مستشعر DHT11 أو DHT22

البرمجيات والخدمات:

  • مكتبة مستشعر DHT بواسطة Adafruit - v1.3.7
  • مستشعر Adafruit الموحد - v1.0.3
  • cloud4rpi-esp-اردوينو - v0.1.0
  • Cloud4RPI - لوحة التحكم السحابية لأجهزة إنترنت الأشياء
  • PlatformIO IDE لـ VSCode

الخطوة 1: قياس درجة الحرارة والرطوبة

قياس درجة الحرارة والرطوبة
قياس درجة الحرارة والرطوبة

كان لدي بالفعل جهاز استشعار DHT11 ، لذلك قررت استخدامه لقياسات درجة الحرارة والرطوبة. دعنا نختار مكتبة Arduino لقراءة بيانات المستشعر.

يحتوي سجل Arduino على العديد من المكتبات ، والتي اخترت منها أكثرها شعبية.

وفقًا لمستودع GitHub الخاص بهم ، نحن مطالبون أيضًا بإضافة حزمة Adafruit Unified Sensor.

الخطوة 2: إنشاء المشروع وتكوينه

إنشاء وتكوين المشروع
إنشاء وتكوين المشروع

لقد وصفت بالفعل كيفية إنشاء مشروع PlatformIO وتثبيت المكتبات في الجزء الأول. يسمى مشروعي "MyNodeMCU". الهيكل مبين أعلاه.

هذا المشروع هو مثال Cloud4RPi تم تعديله بشكل طفيف ، لقد قررت تخزين الرمز المميز للجهاز وبيانات اعتماد Wi-Fi في ملف التكوين بدلاً من الرمز.

يبدو ملف platform.io على النحو التالي:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 framework = لوحة اردوينو = nodemcuv2

الخطوة 3: تثبيت المكتبات

تثبيت المكتبات
تثبيت المكتبات

تركيب المكتبات بسيط للغاية. يمكنك القيام بذلك من الواجهة الرسومية لـ IDE ، أو عن طريق إضافة أسماء المكتبة المطلوبة إلى قسم lib_deps من ملف platform.io:

؛ … lib_deps = cloud4rpi-esp-arduino Adafruit Unified Sensor مكتبة مستشعر DHT build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -D SS_ASS / "_WIF_ASS D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"

سيتم تثبيت المكتبات المضافة تلقائيًا في المجلد الفرعي للمشروع.

يبدو رأس main.cpp كما يلي:

# تضمين # تضمين # تضمين # تضمين "DHT.h"

الخطوة 4: قم بتوصيل مستشعر DHT11

يوفر Adafruit مثال DHTtester.ino لاتصال المستشعر.

يقوم هذا الكود بتهيئة جهاز الاستشعار وتحديد بنية لتخزين نتيجة القياس (في حالة نجاحها):

#define DHTPIN 2 // دبوس رقمي متصل بمستشعر DHT # حدد DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN ، DHTTYPE) ؛ dht.begin () ، //… Struct DHT_Result {float h؛ تطفو ر } ؛ DHT_Result dhtResult ؛

توضح الوظيفة التالية كيفية قراءة بيانات المستشعر وتخزينها في بنية البيانات الموضحة أعلاه

readSensors () باطلة {float h = dht.readHumidity () ؛ // قراءة درجة الحرارة على أنها مئوية (الافتراضي) float t = dht.readTemperature () ؛

// تحقق مما إذا فشلت أي قراءات واخرج

if (isnan (h) || isnan (t)) {Serial.println (F ("Failed to read from DHT sensor!"))؛ إرجاع؛ } dhtResult.h = h ؛ dhtResult.t = t ؛ }

الخطوة 5: إرسال البيانات إلى السحابة

بمجرد حصولنا على هذه البيانات ، فإن الخطوة التالية هي إرسالها إلى خدمة Cloud4RPi.

تصف صفحة Cloud4RPi for Arduino API للمكتبة ، وهي عبارة عن مجموعة من الأساليب المستخدمة من أجل:

  • إنشاء وقراءة وتحديث المتغيرات ،
  • إرسال قيم متغيرة إلى السحابة باستخدام بروتوكول MQTT.

تدعم المكتبة ثلاثة أنواع من المتغيرات: Bool و Numeric و String.

يبدأ سير عمل المكتبة بإنشاء مثيل API باستخدام رمز الجهاز من موقع الويب cloud4rpi.io (راجع جزء المقالة 1 للحصول على التفاصيل).

#if تعريف (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN) ؛ #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!")؛ #إنهاء إذا

ثم ، أعلن عن متغيرات قراءات DHT11:

c4r.declareNumericVariable ("DHT11_Temp") ؛ c4r.declareNumericVariable ("DHT11_Hum") ؛

بعد ذلك ، احصل على البيانات من المستشعر ، واحفظها في متغيرات وانشر البيانات إلى Cloud4RPi:

c4r.setVariable ("DHT11_Temp" ، dhtResult.t) ؛ c4r.setVariable ("DHT11_Hum" ، dhtResult.h) ؛ c4r.publishData () ؛

لا تتغير درجة الحرارة والرطوبة بسرعة ، لذا لا يلزم إرسال أكثر من قيمة واحدة لكل 5 دقائق.

الخطوة 6: التشخيص

يدعم Cloud4RPi البيانات التشخيصية إلى جانب القيم المتغيرة. لقد استخدمت الجهوزية وقوة إشارة Wi-Fi وعنوان IP كبيانات تشخيصية:

c4r.declareDiagVariable ("IP_Address") ؛ c4r.declareDiagVariable ("RSSI") ؛ // قوة إشارة WiFi c4r.declareDiagVariable ("وقت التشغيل") ؛

ملاحظة: وظيفة المللي التي أستخدمها للحصول على إعادة تعيين وقت التشغيل إلى الصفر كل 50 يومًا تقريبًا. وهو أكثر من كافٍ لمشروعي.

يحدد الكود التالي قيم متغيرات التشخيص:

c4r.setDiagVariable ("RSSI"، (String) WiFi. RSSI () + "dBm")؛ c4r.setDiagVariable ("IP_Address"، WiFi.localIP (). toString ()) ؛ c4r.setDiagVariable ("Uptime"، uptimeHumanReadable (currentMillis)) ؛ c4r.publishDiag () ،

تعمل وظيفة uptimeHumanReadable على تحويل المللي ثانية إلى شكل مناسب:

String uptimeHumanReadable (مللي ثانية طويلة بدون إشارة) {static char uptimeStr [32]؛ ثوان طويلة بدون توقيع = مللي ثانية / 1000 ؛ الدقائق الطويلة غير الموقعة = ثانية / 60 ؛ عدد الساعات غير الموقعة = دقيقة / 60 ؛ عدد الأيام غير الموقعة = ساعات / 24 ؛ ثانية - = دقيقة * 60 ؛ دقيقة - = ساعات * 60 ؛ ساعات - = أيام * 24 ؛ sprintf (وقت التشغيل Str، "٪ d يوم٪ 2.2d:٪ 2.2d:٪ 2.2d"، (بايت) أيام، (بايت) ساعة، (بايت) دقيقة، (بايت) ثانية)؛ سلسلة العودة (الجهوزية ستر) ؛ }

تقوم الوظيفة بإخراج سلسلة مثل هذه 5 أيام 10:23:14 بدلاً من رقم كبير غريب.

الخطوة 7: ابدأ المشروع وتصحيحه

بدء المشروع وتصحيحه
بدء المشروع وتصحيحه

بعد تجميع الكود الذي تم إنشاؤه ووميضه في NodeMCU ، يتصل الجهاز بخدمة سحابية ويبدأ في إرسال البيانات.

يمكنك زيادة الإسهاب في التسجيل عن طريق تعيين متغير المعالج المسبق CLOUD4RPI_DEBUG إلى 1 (إضافة -D CLOUD4RPI_DEBUG = 1 إلى قسم build_flags في ملف platform.io).

بعد ذلك ، افتح موقع cloud4rpi.io ولاحظ الجهاز الجديد عبر الإنترنت. افتحه لرؤية جميع القيم المتغيرة المستلمة من الجهاز: المستشعر والتشخيصات.

الخطوة 8: تكوين لوحة القيادة

تكوين لوحة القيادة
تكوين لوحة القيادة

في هذه الخطوة ، يتم تشغيل اتصال البيانات بالسحابة. الآن ، دعنا نهيئ التمثيل المرئي للبيانات.

لقد استخدمت واجهة مستخدم تكوين لوحة التحكم لإنشاء لوحة المعلومات التالية.

لوحة القيادة قابلة للمشاركة ، لذا أشاركها على الفور مع صديقي.

الخطوة 9: الخاتمة

استنتاج
استنتاج

كود المشروع الكامل متاح في جوهره.

هذا كل شئ حتى الان!

الأسئلة والاقتراحات مرحب بها في التعليقات.

موصى به: