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

UbiDots-חיבור ESP32 ופרסום נתוני חיישן מרובים: 6 שלבים
UbiDots-חיבור ESP32 ופרסום נתוני חיישן מרובים: 6 שלבים

וִידֵאוֹ: UbiDots-חיבור ESP32 ופרסום נתוני חיישן מרובים: 6 שלבים

וִידֵאוֹ: UbiDots-חיבור ESP32 ופרסום נתוני חיישן מרובים: 6 שלבים
וִידֵאוֹ: Установка прошивки Multi-PAN (RCP) с Zigbee и Thread на стиках Sonoff ZBDongle-E и ZB-GW04 2024, יוני
Anonim
UbiDots-חיבור ESP32 ופרסום נתוני חיישן מרובים
UbiDots-חיבור ESP32 ופרסום נתוני חיישן מרובים

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

יצירת פורטל Captive
יצירת פורטל Captive
יצירת פורטל Captive
יצירת פורטל Captive
יצירת פורטל Captive
יצירת פורטל 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 ו- UbiDots
מתן אישורי 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
  • מתזמן משימות

מוּמלָץ: