תוכן עניינים:
- אספקה
- שלב 1: מדידת טמפרטורה ולחות
- שלב 2: צור והגדר את הפרויקט
- שלב 3: התקן ספריות
- שלב 4: חבר חיישן DHT11
- שלב 5: שליחת נתונים לענן
- שלב 6: אבחון
- שלב 7: התחל ונטר את הפרויקט
- שלב 8: תצורת לוח המחוונים
- שלב 9: מסקנה
וִידֵאוֹ: חיבור חיישן DHT11/DHT22 לענן באמצעות לוח מבוסס ESP8266: 9 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
במאמר הקודם חיברתי את לוח ה- 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: מסקנה
קוד הפרויקט המלא זמין בעיקרו.
זה הכל לעת עתה!
שאלות והצעות יתקבלו בברכה בתגובות.
מוּמלָץ:
חיבור WiFi Arduino לענן באמצעות ESP8266: 7 שלבים
חיבור WiFi Arduino לענן באמצעות ESP8266: במדריך זה נסביר לך כיצד לחבר את Arduino שלך לענן IoT באמצעות WiFi. נקבע הגדרה המורכבת מארדואינו וממודול WiFi ESP8266 כדבר IoT ונעשה אותו מוכן לתקשר עם ענן AskSensors.L
יסודות IoT: חיבור ה- IoT שלך לענן באמצעות מערכת הפעלה Mongoose: 5 שלבים
יסודות IoT: חיבור ה- IoT שלך לענן באמצעות מערכת ההפעלה Mongoose: אם אתה אדם שעוסק בהתעסקות ואלקטרוניקה, לעתים קרובות יותר תתקל במונח Internet of Things, בדרך כלל מקוצר IoT, וכי הוא מתייחס לקבוצת מכשירים שיכולים להתחבר לאינטרנט! להיות אדם כזה
חיישן תנועה מבוסס PIR מבוסס Arduino: 4 שלבים
חיישן תנועה מבוסס PIR מבוסס Arduino: בעזרת פרויקט זה, אתה יכול לשלוט על המצב הגבוה והרגישות של PIR
משחק משחק ציפור פלאפפי עם לוח פיתוח מבוסס M5stack Esp32 מבוסס M5stick C: 5 שלבים
משחק משחק Flappy Bird עם לוח פיתוח מבוסס M5stack Esp32 מבוסס M5stick C: היי חברים היום נלמד כיצד להעלות את קוד משחק הציפורים ללוח הפיתוח של m5stick c המסופק על ידי m5stack. לפרויקט קטן זה תזדקקו לשני דברים הבאים: m5stick-c לוח פיתוח: https://www.utsource.net/itm/p/8663561.h
בנה מכשיר חיישן טמפרטורה של Apple HomeKit (DHT22) באמצעות RaspberryPI ו- DHT22: 11 שלבים
בנה מכשיר חיישן טמפרטורה של Apple HomeKit (DHT22) באמצעות RaspberryPI ו- DHT22: חיפשתי חיישן טמפרטורה / לחות בעלות נמוכה שאוכל להשתמש בו כדי לעקוב אחר המתרחש במרחב הזחילה שלי, מכיוון שגיליתי שהאביב הזה היה רטוב מאוד , והיה לו הרבה לחות. אז חיפשתי חיישן במחיר סביר שאוכל לעמוד בו