תוכן עניינים:

חיבור חיישן DHT11/DHT22 לענן באמצעות לוח מבוסס ESP8266: 9 שלבים
חיבור חיישן DHT11/DHT22 לענן באמצעות לוח מבוסס ESP8266: 9 שלבים

וִידֵאוֹ: חיבור חיישן DHT11/DHT22 לענן באמצעות לוח מבוסס ESP8266: 9 שלבים

וִידֵאוֹ: חיבור חיישן DHT11/DHT22 לענן באמצעות לוח מבוסס ESP8266: 9 שלבים
וִידֵאוֹ: Vid009 #shorts #dht11 #dht22 #temperature #humidity #sensor 2024, נוֹבֶמבֶּר
Anonim
חיבור חיישן DHT11/DHT22 לענן באמצעות לוח מבוסס ESP8266
חיבור חיישן DHT11/DHT22 לענן באמצעות לוח מבוסס ESP8266

במאמר הקודם חיברתי את לוח ה- NodeMCU מבוסס ESP8266 שלי לשירות Cloud4RPi. עכשיו, הגיע הזמן לפרויקט אמיתי!

אספקה

דרישות חומרה:

  • כל לוח המבוסס על שבב ESP8266 (למשל NodeMCU)
  • חיישן DHT11 או DHT22

תוכנות ושירותים:

  • ספריית חיישני DHT על ידי Adafruit - גרסה 1.3.7
  • חיישן מאוחד של Adafruit - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - לוח בקרה בענן למכשירי IoT
  • PlatformIO IDE עבור VSCode

שלב 1: מדידת טמפרטורה ולחות

מדוד טמפרטורה ולחות
מדוד טמפרטורה ולחות

כבר היה לי חיישן DHT11, אז החלטתי להשתמש בו למדידות טמפרטורה ולחות. בואו לבחור ספריית Arduino לקריאת נתוני חיישנים.

רישום Arduino מכיל מספר ספריות, מהן בחרתי את הספרייה הפופולרית ביותר.

על פי מאגר GitHub שלהם, אנו נדרשים להוסיף חבילת חיישן מאוחדת של Adafruit.

שלב 2: צור והגדר את הפרויקט

צור והגדר את הפרויקט
צור והגדר את הפרויקט

כבר תיארתי כיצד ליצור פרויקט PlatformIO ולהתקין ספריות בחלק הראשון. הפרויקט שלי נקרא "MyNodeMCU". המבנה מוצג למעלה.

פרויקט זה הוא דוגמה מעט שונה של Cloud4RPi. החלטתי לאחסן את אסימון המכשיר ואת אישורי ה- Wi-Fi בקובץ התצורה במקום בקוד.

קובץ platform.io נראה כך:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] פלטפורמה = espressif8266 מסגרת = לוח arduino = 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 = / -ASS_I D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"

ספריות שנוספו יותקנו אוטומטית בתיקיית המשנה של הפרויקט.

הכותרת main.cpp נראית כך:

#include #include #include #include "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; לצוף t; }; DHT_Result dhtResult;

הפונקציה הבאה מראה כיצד לקרוא נתוני חיישנים ולאחסן אותם במבנה הנתונים שתואר לעיל

void readSensors () {float h = dht.readHumidity (); // קרא את הטמפרטורה כצף צלזיוס (ברירת המחדל) t = dht.readTemperature ();

// בדוק אם קריאה נכשלה וצאי

if (isnan (h) || isnan (t)) {Serial.println (F ("קריאה נכשלה מחיישן DHT!")); לַחֲזוֹר; } 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 _ !!!"); #endif

לאחר מכן, הצהיר על משתנים עבור קריאות 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 ("זמן פעולה");

הערה: הפונקציה millis שבה אני משתמש כדי להשיג אפס זמן פעולה לאפס כל ~ 50 ימים. וזה די והותר לפרויקט שלי.

הקוד הבא קובע ערכי משתני אבחון:

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

הפונקציה uptimeHumanReadable ממירה אלפיות השנייה לצורה נוחה:

זמן מחרוזת מחרוזת HumanReadable (אלפיות השנייה לא חתומות) {uptimeStr [32]; שניות ארוכות ללא סימן = אלפיות השנייה / 1000; דקות ארוכות ללא סימן = שניות / 60; שעות אינט לא חתומות = דקות / 60; ימים ללא חתום = שעות / 24; שניות -= דקות * 60; דקות -= שעות * 60; שעות -= ימים * 24; sprintf (uptimeStr, "%d days%2.2d:%2.2d:%2.2d", (בייט) ימים, (בייט) שעות, (בייט) דקות, (בייט) שניות); מחזור מחזור (uptimeStr); }

הפונקציה מוציאה מחרוזת כזו 5 ימים 10:23:14 במקום מספר גדול ומוזר.

שלב 7: התחל ונטר את הפרויקט

התחל וניפוי באגים של הפרויקט
התחל וניפוי באגים של הפרויקט

לאחר ריכוז הקוד שנוצר והבזק אותו ל- NodeMCU, המכשיר מתחבר לשירות ענן ומתחיל לשלוח נתונים.

אתה יכול להגדיל את נדיבות הרישום על ידי הגדרת משתנה ה- CLOUD4RPI_DEBUG למעבדים קדומים ל -1 (הוסף -D CLOUD4RPI_DEBUG = 1 לסעיף build_flags בקובץ platform.io).

לאחר מכן, פתח את אתר cloud4rpi.io והבחין במכשיר החדש באינטרנט. פתח אותו כדי לראות את כל ערכי המשתנים המתקבלים מהמכשיר: חיישן ואבחון.

שלב 8: תצורת לוח המחוונים

תצורת לוח המחוונים
תצורת לוח המחוונים

בשלב זה, חיבור הנתונים לענן הוא תפעולי. כעת, בואו להגדיר את הייצוג החזותי של הנתונים.

השתמשתי בממשק המשתמש לתצורת לוח המחוונים ליצירת לוח המחוונים הבא.

לוח המחוונים ניתן לשיתוף, כך שאני משתף אותו מיד עם חבר שלי.

שלב 9: מסקנה

סיכום
סיכום

קוד הפרויקט המלא זמין בעיקרו.

זה הכל לעת עתה!

שאלות והצעות יתקבלו בברכה בתגובות.

מוּמלָץ: