תוכן עניינים:
- שלב 1: הגדרת חשבון AWS
- שלב 2: מפרט חומרה ותוכנה
- שלב 3: חיישני רטט וטמפרטורה אלחוטית
- שלב 4: קושחת ESP32 AWS
- שלב 5: קבלת נתוני החיישן מחיישן רטט וטמפרטורה אלחוטית
- שלב 6: התחברות ל- AWS
- שלב 7: הדמיה של נתונים ב- AWS
- שלב 8: קוד כולל
וִידֵאוֹ: תחילת העבודה עם AWS IoT עם חיישן טמפרטורה אלחוטי באמצעות MQTT: 8 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
במדריכים קודמים, עברנו פלטפורמות ענן שונות כמו Azure, Ubidots, ThingSpeak, Losant וכו '. השתמשנו בפרוטוקול MQTT לשליחת נתוני החיישנים לענן כמעט בכל פלטפורמת הענן. למידע נוסף על MQTT, היתרונות והיתרונות שלה על פני פרוטוקול HTTP תוכל להתייחס להוראה זו.
במדריך זה נתקרב לעוד פלטפורמת ענן ומוכרת ביותר של Amazon Web Services. ייתכן שרבים מכם מכירים את AWS המכונה Amazon Web Services ואת פונקציונליות הענן המסופקת על ידי AWS. זה היה הליבה של פיתוח אתרים במשך שנים רבות. עם ההיקף הגובר של יישומי IoT, AWS המציא את הפתרון של AWSIoT. AWSIoT הוא פתרון אמין לאירוח יישומי IoT שלנו.
על ידי ביצוע הוראה זו:
- תוכל להגדיר חשבון AWS ליישום IoT שלך
- תוכל לחבר את ESP32 לליבת AWS IoT
- שלח וקבל הודעות באמצעות פרוטוקול MQTT ו-
- דמיינו את הנתונים שנשלחו ב- AWS
שלב 1: הגדרת חשבון AWS
הגדרת חשבון AWS היא קלה למדי. אתה רק צריך להעלות כמה אישורים, לצרף אליה מדיניות, לרשום את המכשיר ולהתחיל לקבל את הודעות נתוני החיישן ב- AWS.
כדי להגדיר את חשבון AWS בצע הדרכה זו.
שלב 2: מפרט חומרה ותוכנה
מפרט תוכנה
חשבון AWS
מפרט חומרה
- ESP32
- חיישן טמפרטורה ורטט אלחוטי
- מקלט זיגמו גייטוויי
שלב 3: חיישני רטט וטמפרטורה אלחוטית
זהו חיישן רטט וטמפרטורה אלחוטי תעשייתי IoT לטווח ארוך, המתגאה בטווח של עד 2 מייל באמצעות ארכיטקטורת רשת אלחוטית. חיישן זה כולל חיישן רטט וטמפרטורה של 16 סיביות, ומעביר נתוני רטט מדויקים ביותר במרווחי זמן שהוגדרו על ידי המשתמש. יש לו את התכונות הבאות:
- חיישן רטט תעשייתי בדרגה 3 צירים עם טווח ± 32 גרם
- מחשב רטט RMS, MAX ו- MIN g
- הסרת רעשים באמצעות מסנן Low-pass
- טווח תדרים (רוחב פס) עד 12, 800 הרץ
- קצב דגימה עד 25, 600Hz
- תקשורת מוצפנת עם טווח אלחוטי של 2 מייל
- טווח טמפרטורות הפעלה -40 עד +85 מעלות צלזיוס
- מארז מדורג IP65 מותקן על הקיר או על מגנט, תוכנת דוגמה עבור Visual Studio ו- LabVIEW
- חיישן רטט עם אפשרות בדיקה חיצונית
- עד 500, 000 שידורים מ -4 סוללות AA הרבה אפשרויות שער ומודם זמינים
שלב 4: קושחת ESP32 AWS
כדי להתחבר ל- AWS ולהתחיל לשלוח את הנתונים, עברו את השלבים הבאים
- הורד את ספריית AWS ממאגר Github הבא
- שיבוט את הריפו והנח את קובץ AWS_IOT לתיקיית הספרייה של ספריית ה- Arduino
שיבוט git
עכשיו נעבור על הקוד:
- ביישום זה, השתמשנו בפורטל שבוי לשמירת אישורי ה- WiFi ולרחף דרך הגדרות ה- IP. לקבלת ההקדמה המפורטת בפורטל captive, תוכל לעבור על ההוראות הבאות.
- הפורטל השבוי נותן לנו את האפשרות לבחור בין הגדרות סטטיות ו- DHCP. פשוט הזן את האישורים כמו IP סטטי, מסכת רשת משנה, שער ושער חיישן אלחוטי יוגדרו על ה- IP הזה.
- מתארח דף אינטרנט שבו רשימה המציגה רשתות WiFi זמינות ויש RSSI. בחר את רשת ה- WiFi והסיסמה והזן שלח. האישורים יישמרו ב- EEPROM והגדרת ה- IP תישמר ב- SPIFFS. עוד על זה ניתן למצוא במדריך זה.
שלב 5: קבלת נתוני החיישן מחיישן רטט וטמפרטורה אלחוטית
אנו מקבלים מסגרת של 54 בתים מחיישני הטמפרטורה והרטט האלחוטיים. מסגרת זו מנוהלת כדי לקבל את נתוני הטמפרטורה והרטט בפועל.
ל- ESP32 שלושה UARTs זמינים לשימוש סדרתי
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- RX2 GPIO 16, TX2 GPIO 17
ו -3 יציאות סידריות חומרה
- סידורי
- סדרתי 1
- סדרתי 2
ראשית, אתחל קובץ כותרת סידורי חומרה. כאן נשתמש ב- RX2 ו- TX2 aka. סיכות GPIO 16 ו- GPIO 17 של לוח ESP32 כדי לקבל את הנתונים הטוריים.
#לִכלוֹל
# הגדר RXD2 16 # הגדר TXD2 17
Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // סיכות 16 rx2, 17 tx2, 19200 bps, 8 סיביות ללא סיביות 1 ביט עצירה
השלבים הבאים יובילו אותך הלאה להשגת ערכי החיישנים האמיתיים
- צור משתנים לאחסון טמפרטורה, לחות, סוללה וערכי חיישן אחרים
- הגדר את סיביות Rx, סיכת tx, קצב שידור וזוגיות עבור סדרת החומרה
- ראשית, בדוק שיש מה לקרוא באמצעות Serial1.available ()
- נקבל את המסגרת של 54 בתים.
- בדוק אם 0x7E הוא בית ההתחלה.
- נתוני הרטט מורכבים מערך RMS לציר 3, ערכי דקות עבור 3 צירים, ערכי מקסימום עבור 3 צירים.
- ערכי הטמפרטורה והסוללה יכילו 2 בתים של נתונים
- קבל את שם החיישן, הסוג, גרסת החיישן תכיל 1 בתים של נתונים וניתן להשיג משם את הכתובת המתאימה
if (Serial2.available ()) {Serial.println ("קריאה סדרתית"); data [0] = Serial2.read (); עיכוב (k); if (data [0] == 0x7E) {Serial.println ("יש לי חבילה"); while (! Serial2.available ()); עבור (i = 1; i <55; i ++) {data = Serial2.read (); עיכוב (1); } if (data [15] == 0x7F) /////// כדי לבדוק אם הנתונים המתקבלים נכונים {if (data [22] == 0x08) //////// ודא את סוג החיישן נכון {rms_x = ((uint16_t) (((data [24]) << 16) + ((data [25]) << 8) + (data [26])))/100); rms_y = ((uint16_t) (((נתונים [27]) << 16) + ((נתונים [28]) << 8) + (נתונים [29])))/100); rms_z = ((uint16_t) (((נתונים [30]) << 16) + ((נתונים [31]) << 8) + (נתונים [32])))/100); int16_t max_x = ((uint16_t) (((נתונים [33]) << 16) + ((נתונים [34]) << 8) + (נתונים [35])))/100); int16_t max_y = ((uint16_t) (((נתונים [36]) << 16) + ((נתונים [37]) << 8) + (נתונים [38])))/100); int16_t max_z = ((uint16_t) (((נתונים [39]) << 16) + ((נתונים [40]) << 8) + (נתונים [41])))/100);
int16_t min_x = ((uint16_t) (((נתונים [42]) << 16) + ((נתונים [43]) << 8) + (נתונים [44])))/100); int16_t min_y = ((uint16_t) (((נתונים [45]) << 16) + ((נתונים [46]) << 8) + (נתונים [47])))/100); int16_t min_z = ((uint16_t) (((נתונים [48]) << 16) + ((נתונים [49]) << 8) + (נתונים [50]))/100);
cTemp = ((((נתונים [51]) * 256) + נתונים [52])); סוללת צף = ((נתונים [18] * 256) + נתונים [19]); מתח = 0.00322 * סוללה; Serial.print ("מספר חיישן"); Serial.println (נתונים [16]); senseNumber = data [16]; Serial.print ("סוג חיישן"); Serial.println (נתונים [22]); Serial.print ("גרסת קושחה"); Serial.println (נתונים [17]); Serial.print ("טמפרטורה בצלזיוס:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("רטט RMS בציר X:"); Serial.print (rms_x); Serial.println ("מ"ג"); Serial.print ("רטט RMS בציר Y:"); Serial.print (rms_y); Serial.println ("מ"ג"); Serial.print ("רטט RMS בציר Z:"); Serial.print (rms_z); Serial.println ("מ"ג");
Serial.print ("רטט מינימלי בציר X:");
Serial.print (min_x); Serial.println ("מ"ג"); Serial.print ("רטט מינימלי בציר Y:"); Serial.print (min_y); Serial.println ("מ"ג"); Serial.print ("רטט מינימלי בציר Z:"); Serial.print (min_z); Serial.println ("מ"ג");
Serial.print ("ערך ADC:");
Serial.println (סוללה); Serial.print ("מתח סוללה:"); Serial.print (מתח); Serial.println ("\ n"); if (מתח <1) {Serial.println ("זמן להחליף את הסוללה"); }}}} אחר {עבור (i = 0; i <54; i ++) {Serial.print (נתונים ); Serial.print (","); עיכוב (1); }}}}
שלב 6: התחברות ל- AWS
- כלול קבצי כותרת AWS_IOT.h, WiFi.h כדי להגדיר חיבור עם רכזת AWSIoT
- הזן את כתובת המארח שלך, מזהה הלקוח שיהיה שם המדיניות ושם הנושא שיהיה שם הדבר
// ********* AWS אישורים ************ // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";
צור משתנה char לאחסון ה- JSON שלך, במקרה זה יצרנו פורמט לאחסון JSON
const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, \" rmsY / ":%d, \" rmsZ / ":%d, \" cTemp / ":%d, \" מתח / ":%. 2f}";
צור מופע של המחלקה AWS_IOT
AWS_IOT esp; // מופע של מחלקת AWS_IOT
כעת התחבר לרכזת AWSIoT בשיטה הבאה
void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("מחובר ל- AWS"); עיכוב (1000);
אם (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))
{Serial.println ("הרשמה מוצלחת"); } else {Serial.println ("הרשמה נכשלה, בדוק את שם הדבר והתעודות"); בעוד (1); }} else {Serial.println ("חיבור AWS נכשל, בדוק את כתובת HOST"); בעוד (1); }
עיכוב (2000);
}
לפרסם את נתוני החיישנים לאחר כל דקה אחת
if (tick> = 60) // פרסם לנושא כל 5 שניות {tick = 0; מטען פחמן [PAYLOAD_MAX_LEN]; snprintf (מטען, PAYLOAD_MAX_LEN, פורמט, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, מתח); Serial.println (מטען); if (hornbill.publish (TOPIC_NAME, מטען) == 0) {Serial.print ("פרסם הודעה:"); Serial.println (מטען); } else {Serial.println ("הפרסום נכשל"); }} vTaskDelay (1000 / portTICK_RATE_MS); טיק ++;
שלב 7: הדמיה של נתונים ב- AWS
- היכנס לחשבון AWS שלך.
- בפינה השמאלית של סרגל הכלים תמצא את הכרטיסייה שירותים
- לחץ על כרטיסייה זו ותחת הכותרת Internet of Things בחר IoT Core.
- בחר את ה- QoS ולא. של הודעות למנויים. הזן את שם הנושא.
שלב 8: קוד כולל
תוכל למצוא את הקוד הכולל במאגר Github זה.
נקודות זכות
- ארדואינו ג'סון
- חיישני טמפרטורה ולחות אלחוטיים
- ESP32
- PubSubClient
מוּמלָץ:
תחילת העבודה עם חיישני טמפרטורה ורטט אלחוטיים לטווח ארוך: 7 שלבים
תחילת העבודה עם חיישני טמפרטורה ורטט אלחוטיים לטווח ארוך: לפעמים רעידות הן הגורם לבעיות חמורות ביישומים רבים. החל מפירים וממסבים ועד לביצועי הדיסק הקשיח, רעידות גורמות לנזק למכונה, החלפה מוקדמת, ביצועים נמוכים וגורמת לפגיעה משמעותית בדיוק. מעקב
תחילת העבודה עם ממשק חיישן I2C ?? - ממשק MMA8451 שלך באמצעות ESP32s: 8 שלבים
תחילת העבודה עם ממשק חיישן I2C ?? - ממשק ה- MMA8451 שלך באמצעות ESP32s: במדריך זה, תלמד הכל על איך להתחיל, להתחבר ולהשיג מכשיר I2C (מאיץ) שעובד עם בקר (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
תחילת העבודה עם ערכת שולחן העבודה של Raspberry Pi 4: 7 שלבים
תחילת העבודה עם ערכת שולחן העבודה של Raspberry Pi 4: Raspberry Pi 4 הוא מחשב מיני קטן וחזק, עם תמיכה במסך כפול 4K, USB 3.0, מעבד חדש ו- GPU ועד זיכרון RAM בנפח של עד 4GB. למד כיצד להגדיר את Raspberry Pi 4 דגם B ולהתקין כל מה שאתה צריך כדי להשתמש ב- fu
תחילת העבודה עם Amazon AWS IoT ו- ESP8266: 21 שלבים
תחילת העבודה עם Amazon AWS IoT ו- ESP8266: פרויקט זה מראה לך כיצד לקחת את מודול ESP8266 ולחבר אותו ישירות ל- AWS IOT באמצעות מערכת ההפעלה Mongoose. מערכת ההפעלה Mongoose היא מערכת הפעלה של קוד פתוח עבור בקרי מיקרו ששמה דגש על קישוריות ענן. הוא פותח על ידי Cesanta, דבלין
תחילת העבודה עם ESP32 CAM - הזרמת וידאו באמצעות ESP CAM באמצעות Wifi - פרויקט מצלמות אבטחה ESP32: 8 שלבים
תחילת העבודה עם ESP32 CAM | הזרמת וידאו באמצעות ESP CAM באמצעות Wifi | פרויקט מצלמות אבטחה ESP32: היום נלמד כיצד להשתמש בלוח ה- CAM החדש של ESP32 וכיצד אנו יכולים לקודד אותו ולהשתמש בו כמצלמת אבטחה ולקבל סרטון סטרימינג באמצעות wifi