תוכן עניינים:
- שלב 1: מפרט חומרה ותוכנה
- שלב 2: יצירת פורטל Captive
- שלב 3: מתן אישורי WiFi ו- UbiDots
- שלב 4: פרסום קריאות חיישן ל- UbiDots
- שלב 5: הדמיה של הנתונים
- שלב 6: קוד כולל
וִידֵאוֹ: UbiDots-חיבור ESP32 ופרסום נתוני חיישן מרובים: 6 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
ESP32 ו- ESP 8266 הם SoC מוכרים מאוד בתחום ה- IoT. אלה סוג של ברכה לפרויקטים של IoT. ESP 32 הוא מכשיר עם WiFi משולב ו- BLE. פשוט תן את תצורות ה- SSID, הסיסמה וה- IP שלך ושלב את הדברים בענן. כאן במדריך זה, נחשוב על כמה מהמונחים הבסיסיים של IoT כמו פלטפורמת IoT, MQTT, פורטלים שבויים וכו '. אז תנו לנו לעבור את זה
- ארכיטקטורת IoT במילים פשוטות מאוד מורכבת ממכשיר מוטמע ופלטפורמת IoT להכניס את המכשיר לענן. כאן אנו משתמשים בפלטפורמת IiT של UbiDots כדי להמחיש את נתוני החיישן.
- ניהול הגדרות ה- IP ואישורי המשתמש יכול להוות כאב ראש למשתמש. מה אם המשתמש רוצה לשנות את אישורי ה- WiFi? מה אם המשתמש רוצה להחליף את הגדרות ה- DHCP/IP סטטי? מהבהב ה- ESP32 בכל פעם אינו אמין ואפילו לא הפתרון לבעיות אלה. אז נעבור בפורטל השבוי כדי לשמור את אישורי ה- WiFi ותצורות אחרות.
- MQTT הופך כעת למונח נפוץ מאוד בעולם ה- IoT. היא עקפה את הבקשות והתגובות (HTTP) על ידי פרסום והרשמה בגלל הארכיטקטורה המהירה, החזקה והרזה.
כאן במדריך זה, אנו הולכים להפגין.
- מתן אישורי WiFi ו- MQTT באמצעות פורטל Captive.
- פרסום והרשמה של נתוני חיישן מרובים ל- UbiDots.
- קריאת נתוני החיישן מחיישני טמפרטורה ולחות אלחוטיים.
- אירוח טופס אינטרנט מ- ESP32.
- קריאה וכתיבה מ- SPIFFS ESP32.
שלב 1: מפרט חומרה ותוכנה
- ESP32 WiFi/BLE
- חיישן טמפרטורה ולחות אלחוטי
מפרט תוכנה
Arduino IDE
שלב 2: יצירת פורטל Captive
פורטל שבוי הוא דף אינטרנט המוצג למשתמשים המחוברים לאחרונה לפני שהם מקבלים גישה רחבה יותר למשאבי רשת. כאן אנו מגישים שלושה דפי אינטרנט לבחירה בין DHCP והגדרות IP סטטיות. אנו יכולים להגדיר את כתובת ה- IP ל- ESP בשתי דרכים.
- כתובת IP DHCP- זוהי דרך להקצות דינאמית את כתובת ה- IP למכשיר. כתובת ה- IP של ברירת המחדל של ה- ESP היא 192.168.4.1
- כתובת ה- IP הסטטית- הקצאת כתובת IP קבועה למכשיר הרשת שלנו. כדי לספק את ה- IP הסטטי למכשיר אנו צריכים להגדיר את כתובת ה- IP, כתובת השער ומסכת רשת המשנה.
דף האינטרנט הראשון מתארח בכתובת 192.168.1.77. כאן המשתמש מקבל את לחצני האפשרויות לבחירה בין הגדרות DHCP והגדרות IP סטטיות. בדף האינטרנט הבא, עלינו לספק את המידע הקשור ל- IP כדי להמשיך הלאה.
קוד HTML
קוד HTML לדפי אינטרנט ניתן למצוא במאגר Github זה. תוכל להשתמש בכל IDE או עורך טקסט כמו Sublime או פנקס רשימות ++ כדי ליצור דפי אינטרנט HTML.
- ראשית צור דף אינטרנט הכולל שני לחצני בחירה לבחירה בין הגדרות DHCP והגדרות IP סטטיות.
- כעת צור את הכפתור לשלוח את תגובתך
- תן שם כלשהו ללחצני האפשרויות.
- מחלקת שרת האינטרנט של ESP תיקח את השמות הללו כארגומנטים ותקבל את תגובת כפתורי הבחירה באמצעות ארגומנטים אלה
- כעת הכנס כפתור 'שלח' לשליחת התגובה למכשיר. בדפי האינטרנט האחרים יש לנו תיבות טקסט.
- תן את ערך השם וסוג הקלט לתיבת הטקסט והוסף כפתור שלח כדי 'שלח' שלח את התגובה.
- צור כפתור 'איפוס' לאיפוס התוכן של שדה הטקסט.
שלב 3: מתן אישורי WiFi ו- UbiDots
הבעיה העיקרית מתרחשת בעת ניהול אישורי ה- WiFi. למרות שיש לנו ספריית WiFiMulti לשם כך אנו יכולים לתת מספר SSID וסיסמאות למכשיר והמכשיר יתחבר לרשת הזמינה. אבל מה אם הרשת הזמינה אינה נמצאת ברשימת WiFiMulti. להבהב את מכשיר ESP32 כל הזמן אינו פתרון אמין.
כדי לפתור בעיה זו, אנו מארחים דף אינטרנט שבו המשתמש יכול לשלוח את ה- SSID והסיסמה של הרשת הזמינה. זה עובד כדלקמן.
- דף האינטרנט מתארח ב- IP הסטטי או ב- IP DHCP לפי בחירת המשתמש מהפורטל השבוי
- דף אינטרנט זה מכיל שדות טקסט להזנת SSID, סיסמה ומזהה אסימון UBIDOTS לחיבור המכשיר ל- UbiDots.
- הזן את SSID והסיסמה של ה- WiFi המקומי שלך בשדות הקלט, הזן את מזהה האסימון של UbiDot והזן SUBMIT
- אישורים אלה נשמרים ב- EEPROM של ESP32
- לאחר 60 שניות המכשיר יתנתק אוטומטית מ- AP
- בפעם הבאה שתפעיל את המכשיר, המשתמש לא יצטרך לבצע הליך זה, המכשיר יביא אוטומטית את אישורי המשתמש מ- EEPROM וימשיך לפרסם את קריאות החיישן ל- UbiDots.
שלב 4: פרסום קריאות חיישן ל- UbiDots
כאן אנו משתמשים בחיישני טמפרטורה ולחות אלחוטיים עם מכשיר ESP 32 כדי לקבל את נתוני הטמפרטורה והלחות. אנו שולחים את הנתונים ל- UbiDots באמצעות פרוטוקול MQTT. MQTT עוקב אחר מנגנון פרסום והרשמה במקום בקשה ותגובה. הוא מהיר ואמין יותר מ- HTTP. זה עובד כדלקמן.
- אנו משתמשים במתזמן המשימות כדי לתזמן את המשימה כמו אחזור נתונים מחיישנים, פרסום קריאות החיישנים, הרשמה לנושא MQTT.
- ראשית, כלול את קבצי הכותרת של מתזמן המשימות, מופע זה ומתזמן את המשימות.
- קבענו שתי משימות המתייחסות לשתי פעולות בקרה שונות.
#הגדר _TASK_TIMEOUT#כולל
מתזמן ts;
// --------- משימות ------------ // משימה tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Task TWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);
משימה 1 מיועדת לקריאת ערך החיישן משימה זו פועלת למשך שנייה אחת עד שהיא מגיעה לפסק זמן של 10 שניות
- כאשר משימה 1 מגיעה לשעת פקודה אנו מתחברים ל- Wifi מקומי ולמתווך MQTT.
- כעת משימה 2 מופעלת ואנו משביתים את משימה 1
- משימה 2 מיועדת לפרסום נתוני החיישנים לברוקר UbiDots MQTT משימה זו נמשכת במשך 20 שניות עד שהיא מגיעה לפסק זמן של 20 שניות
- כאשר משימה 2 מגיעה לפסק הזמן, משימה 1 מופעלת שוב ומשימה 2 מושבתת. שוב, אנו מקבלים את הערך המעודכן והתהליך נמשך.
קריאת נתוני חיישן I2C
אנו מקבלים מסגרת של 29 בתים מחיישני הטמפרטורה והלחות האלחוטיים. מסגרת זו מופעלת על מנת לקבל נתוני טמפרטורה ולחות בפועל
uint8_t נתונים [29];
data [0] = Serial1.read (); עיכוב (k); // chck עבור בת ההתחלה if (data [0] == 0x7E) {while (! Serial1.available ()); עבור (i = 1; i <29; i ++) {data = Serial1.read (); עיכוב (1); } if (data [15] == 0x7F) /////// כדי לבדוק אם הנתונים המתקבלים נכונים {if (data [22] == 1) //////// ודא את סוג החיישן זה נכון {
לחות = ((((נתונים [24]) * 256) + נתונים [25]) /100.0); לחות /=10.0; cTempint = (((uint16_t) (data [26]) << 8) | data [27]); cTemp = (float) cTempint /100.0; cTemp /= 10.0; fTemp = cTemp * 1.8 + 32; fTemp /= 10.0; סוללה = אקראית (100, 327); מתח = סוללה/100; nodeId = data [16];}
מתחבר ל- API של UbiDots MQTT
כלול את קובץ הכותרת לתהליך MQTT
#לִכלוֹל
הגדר משתנים אחרים עבור MQTT כמו שם לקוח, כתובת מתווך, מזהה אסימון (אנו שולפים את מזהה האסימון מ- EEPROM)
#define MQTT_CLIENT_NAME "ClientVBShightime123"
char mqttBroker = "things.ubidots.com";
מטען חרוסת [100]; נושא חרוטה [150];
// צור משתנה לאחסון מזהה אסימון
String tokenId;
צור משתנים לאחסון נתוני חיישן שונים וצור משתנה char לאחסון הנושא
#define VARIABLE_LABEL_TEMPF "tempF" // הערכת התווית המשתנה #הגדר VARIABLE_LABEL_TEMPC "tempC" // הערכת התווית המשתנה #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "the label" //
נושא char 1 [100]; char topic2 [100]; נושא char3 [100];
פרסם את הנתונים לנושא MQTT שהוזכר המטען ייראה כמו {"tempc": {value: "tempData"}}
sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (מטען, "%s", ""); // מנקה את המטען sprintf (מטען, "{"%s / ":", VARIABLE_LABEL_TEMPC); // מוסיף את הערך sprintf (מטען, "%s {" ערך / ":%s}", מטען, str_cTemp); // מוסיף את הערך sprintf (מטען, "%s}", מטען); // סוגר את סוגריים במילון Serial.println (מטען); Serial.println (client.publish (נושא 1, מטען)? "פורסם": "לא פורסם");
// עשו את אותו הדבר גם לנושא אחר
client.publish () מפרסם את הנתונים ל- UbiDots
שלב 5: הדמיה של הנתונים
- עבור אל Ubidots והתחבר לחשבונך.
- נווט אל מרכז השליטה מהכרטיסייה נתונים המופיעה למעלה.
- כעת לחץ על סמל "+" כדי להוסיף את הווידג'טים החדשים.
- בחר יישומון מהרשימה והוסף משתנה והתקנים.
- ניתן להציג את נתוני החיישנים בלוח המחוונים באמצעות ווידג'טים שונים.
שלב 6: קוד כולל
קוד Over עבור HTML ו- ESP32 ניתן למצוא במאגר GitHub זה.
נקודות זכות
- לוח פריצת ncd ESP32.
- חיישני טמפרטורה ולחות אלחוטיים.
- סאב פאב
- UbiDots
- מתזמן משימות
מוּמלָץ:
קריאה ורישום נתוני חיישן אור וטמפרטורה עם פטל פטל: 5 שלבים
קריאה ורישום נתוני חיישן אור וטמפרטורה עם פטל פאי: במדריך זה תלמד כיצד לקרוא חיישן אור וטמפרטורה עם פטל פאי וממיר אנלוגי לדיגיטלי ADS1115 וגרף אותו באמצעות matplotlib. נתחיל עם החומרים הדרושים
IoT: הדמיה של נתוני חיישן אור באמצעות צומת אדום: 7 שלבים
IoT: הדמיה של נתוני חיישן אור באמצעות Node-RED: במדריך זה תלמד כיצד ליצור חיישן מחובר לאינטרנט! אני אשתמש בחיישן אור סביבה (TI OPT3001) להדגמה זו, אך כל חיישן לבחירתך (טמפרטורה, לחות, פוטנציומטר וכו ') יעבוד. ערכי החיישן
שליחת נתוני חיישן טמפרטורה ולחות אלחוטיים לאקסל: 34 שלבים
שליחת נתוני חיישן טמפרטורה ולחות אלחוטיים לאקסל: אנו משתמשים כאן בחיישן הטמפרטורה והלחות של NCD, אך השלבים נשארים שווים לכל אחד ממוצר ה- ncd, כך שאם יש לך חיישנים אלחוטיים אחרים מסוג ncd, אין לך אפשרות לצפות לצד בנוסף. בעזרת עצירת הטקסט הזה, עליך
נתוני חיישן רטט וחיישן טמפרטורה ל- MySQL באמצעות Node-RED: 40 שלבים
נתוני חיישן רטט וחיישן טמפרטורה ל- MySQL באמצעות Node-RED: היכרות עם חיישן רטט וטמפרטורה אלחוטי תעשייתי אלחוטי של NCD בטווח הרחוק של 2 קילומטרים בשימוש במבנה רשת אלחוטית. מכשיר זה כולל חיישן רטט וטמפרטורה מדויק של 16 סיביות, מכשיר זה עובר
Arduino Uno + SIM900 + DHT22 + Thingspeak [ENG /PL] נתוני חיישנים מרובים !: 3 שלבים
Arduino Uno + SIM900 + DHT22 + Thingspeak [ENG /PL] נתוני חיישנים מרובים !: היי, ראיתי שחסר מידע כיצד מפרסמים נתוני חיישן מרובים לדברים של Arduino Uno עם מודול SIM900. אז עשיתי הוראה קצרה לחיבור והתצורה של Arduino UNO עם חיישן SIM900 ו- DHT22. נתונים מ- DHT22 (מזג