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

תחילת העבודה עם AWS IoT עם חיישן טמפרטורה אלחוטי באמצעות MQTT: 8 שלבים
תחילת העבודה עם AWS IoT עם חיישן טמפרטורה אלחוטי באמצעות MQTT: 8 שלבים

וִידֵאוֹ: תחילת העבודה עם AWS IoT עם חיישן טמפרטורה אלחוטי באמצעות MQTT: 8 שלבים

וִידֵאוֹ: תחילת העבודה עם AWS IoT עם חיישן טמפרטורה אלחוטי באמצעות MQTT: 8 שלבים
וִידֵאוֹ: Shiba Inu Shibarium Bone & DogeCoin Multi Millionaire Whales Launched ShibaDoge & Burn Token + NFTs 2024, נוֹבֶמבֶּר
Anonim
תחילת העבודה עם AWS IoT עם חיישן טמפרטורה אלחוטי באמצעות MQTT
תחילת העבודה עם AWS IoT עם חיישן טמפרטורה אלחוטי באמצעות MQTT

במדריכים קודמים, עברנו פלטפורמות ענן שונות כמו 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 זמינים לשימוש סדרתי

  1. RX0 GPIO 3, TX0 GPIO 1
  2. RX1 GPIO9, TX1 GPIO 10
  3. 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
מתחבר ל- 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
הדמיה של נתונים ב- AWS
הדמיה של נתונים ב- AWS
הדמיה של נתונים ב- AWS
הדמיה של נתונים ב- AWS
הדמיה של נתונים ב- AWS
  • היכנס לחשבון AWS שלך.
  • בפינה השמאלית של סרגל הכלים תמצא את הכרטיסייה שירותים
  • לחץ על כרטיסייה זו ותחת הכותרת Internet of Things בחר IoT Core.
  • בחר את ה- QoS ולא. של הודעות למנויים. הזן את שם הנושא.

שלב 8: קוד כולל

תוכל למצוא את הקוד הכולל במאגר Github זה.

נקודות זכות

  • ארדואינו ג'סון
  • חיישני טמפרטורה ולחות אלחוטיים
  • ESP32
  • PubSubClient

מוּמלָץ: