מכשירי IoT יכולים לעשות דברים מגניבים, אבל חלק מהותי מהמשוואה הוא איך הם מתקשרים. אתה יכול לנהל את זה עם מודול ESP-01.

להיות עם תקציב לא אומר בהכרח שאתה לא יכול לקחת על עצמך פרויקטים מתקדמים עשה זאת בעצמך. אם אתם מחפשים מודול WiFi קטן, זול ונוח להגדלת פרויקטי ה-IoT שלכם, מודול ESP-01 הוא בחירה מצוינת. עם זאת, שילוב של מודול כזה עם פרוטוקול קל משקל כמו MQTT יכול להיות מסובך, במיוחד אם אתה חדש בפיתוח IoT.

תכנות הלוח ESP-01 לבדו יכול להיות מאתגר בהשוואה למודולים אחרים מסדרת ESP8266. אבל בוא נעבור על היסודות של כל הגדרות החומרה והתוכנה שאתה צריך כדי להתחיל להשתמש במודול וכן כיצד להגדיר את MQTT בצורה פשוטה ופרוצדורלית.

היכרות עם המועצה

ESP8266 ESP-01 הוא מודול WiFi קטן וקומפקטי המגיע עם שבב ESP8266EX, שהוא SoC משולב במיוחד המיועד ליישומי IoT.

המודול כולל מיקרו-בקר אלחוטי עם שבב יחיד עם מחסנית פרוטוקול TCP/IP ומסוגל להתחבר לרשת אלחוטית או לשמש כנקודת גישה. מודול ה-ESP-01 כולל גם כותרת פינים 2x4 המספקת גישה לפיני ה-GPIO שלו, מתח והארקה וממשק UART.

הגדרת החומרה

המודול אינו ידידותי כלל ללוח הלחם. מטעמי נוחות, אתה יכול לקנות לוח הארכה בנוי מראש או פשוט ללכת בדרך הישנה - באמצעות חוטי מגשר ולוח לחם.

instagram viewer

יש מתכנת ייעודי, ESP8266 Serial Module Board, שיכול להקל על חווית התכנות שלך. אם אתה מעדיף ללכת בדרך זו, עשה זאת בעצמך יש מדריך שימושי כיצד להבריז תוכנית למודול ESP-01 באמצעות מתכנת (כולל מתאם מודול ממיר USB ל-TTL CH340G).

אבל, אתה עדיין יכול לתכנת את המודול באמצעות לוח Arduino. עיין בתרשים המעגל להלן לעיון.

למרות שזה עשוי להיראות מפתה, אנו בדרך כלל לא ממליצים לחבר את המודול ישירות לפין 3.3V של Arduino מכיוון שהוא דורש יותר זרם ממה שהפין מספק. במקום זאת, חבר את ה- Arduino 5V לווסת מתח 3.3V כמו LM1117/LD117, ואז הפעל את מודול ה-WiFi מהווסת.

אל תחבר את VCC ו CH_PD פינים של ה-ESP ל- 5V סיכה של הארדואינו. חיבור המודול ל 5V כוח יכול להזיק לו.

כל הקבלים הם 10uF והנגד הוא א 1K נַגָד.

דרישות תוכנה

מודול ESP-01 נמצא בשימוש נפוץ עם פלטפורמת Arduino. ככזה, הגדרת התוכנה די פשוטה, במיוחד אם אתה מכיר את Arduino C. עם זאת, אם אתה מכיר יותר את פטל, יש הרבה פרויקטי IoT של Raspberry Pi אתה יכול לנסות.

אלו הדרישות הבסיסיות:

  • מתווך או שרת MQTT (כגון Mosquitto או CloudMQTT).
  • Arduino IDE עם ספריית הליבה ESP8266.
  • ספריית PubSubClient עבור Arduino.

אתה צריך לזכור ששרת MQTT משלך באופן מקומי נותן לך גמישות בפרויקטים שלך.

התקנת הספריות הדרושות

ראשית, הורד והתקן את Arduino IDE במחשב שלך. לאחר ההתקנה, פתח את Arduino IDE ועבור אל קוֹבֶץ > העדפות.

בתוך ה כתובות URL נוספות של מנהל לוחות בשדה, הזן את כתובת האתר הבאה:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

נְקִישָׁה בסדר כדי לסגור את חלון ההעדפות.

לאחר מכן, עבור אל כלים > גלשן > מנהל מועצות.

לאחר מכן חפש esp8266 והתקן את חבילת הלוח esp8266 - זה כולל את כל הספריות הדרושות למודול ESP-01.

כדי להתקין את ספריית PubSubClient, עבור אל סְקִיצָה > כלול ספרייה > ניהול ספריות.

לחפש אחר PubSubClient ולחץ על הספרייה כדי להתקין אותה.

לאחר שתתקין את כל הספריות הדרושות, תוכל להתחיל לתכנת את מודול ESP-01. עם זאת, דבר אחד שכדאי לציין הוא שאתה יכול להשתמש ב- Wifi.h אשר כלול בספרייה, או הורד את ESPWifi.h סִפְרִיָה ולכלול אותו בסקיצה שלך.

יצירת קשר בין ESP-01 ל-MQTT Broker

מתווך MQTT הוא שרת שפועל כמתווך בין לקוחות MQTT. זה מאפשר ללקוחות לשלוח ולקבל הודעות זה לזה וממנו באמצעות מודל פרסום-הרשמה.

כדי לחבר את מודול ה-ESP-01 שלך למתווך MQTT, תצטרך לציין את כתובת ה-IP ומספר היציאה של המתווך בקוד שלך. כמו כן, תצטרך לספק זיהוי לקוח ייחודי המזהה את מודול ה-ESP-01 שלך למתווך.

ראשית, כלול את הספריות הדרושות בראש הסקיצה שלך

#לִכלוֹל <ESP8266WiFi.h>
#לִכלוֹל <PubSubClient.h>

לאחר מכן, הגדר את פרטי חיבור ה-WiFi וה-MQTT.

constלְהַשְׁחִיר* ssid = "YOUR_SSID";
constלְהַשְׁחִיר*סיסמה = "הסיסמה שלך";
constלְהַשְׁחִיר* mqtt_server = "YOUR_MQTT_SERVER";

אל תשכח להחליף את מצייני המיקום בפרטי חיבור WiFi ו-MQTT משלך.

לאחר מכן, צור לקוח WiFi והתחבר לרשת ה-WiFi המקומית שלך:

WiFiClient espClient;
בָּטֵלsetup_wifi(){
עיכוב (10);
WiFi.begin (ssid, סיסמה);
בזמן (WiFi.status() != WL_CONNECTED) {
עיכוב (500);
}
}

יש לקרוא לפונקציה זו ב- להכין() הפונקציה של הסקיצה שלך.

לאחר מכן, תצטרך ליצור לקוח MQTT ולהתחבר לברוקר MQTT שלך:

PubSubClient לָקוּחַ(פרטי לקוח);
בָּטֵללהתחבר מחדש(){
בזמן (!client.connected()) {
אם (client.connect("ESP01", mqtt_user, mqtt_password)) {
// הירשם לנושא
client.subscribe("מבחן/נושא");
} אַחֵר {
עיכוב (5000);
}
}
}

לאחר שהתחברת לברוקר MQTT שלך, תוכל להתחיל לפרסם ולהירשם לנושאים.

פרסום נתונים מ-ESP-01 ל-MQTT Broker

כעת, לאחר שחיברת בהצלחה את מודול ה-ESP01 שלך לברוקר MQTT, הבה נראה כיצד תוכל לפרסם נתונים מה-ESP-01 למתווך.

כדי לפרסם נתונים, השתמש ב- client.publish() פונקציה לפרסום הודעה ל- inTopic נוֹשֵׂא.

client.publish("inTopic", "שלום מ-ESP-01");

זה יפרסם את ההודעה "שלום מ-ESP-01" ל- inTopic נוֹשֵׂא.

אתה יכול גם לפרסם נתוני חיישנים מה-ESP-01 לברוקר. לדוגמה, אם יש לך חיישן טמפרטורה המחובר ל-ESP-01 שלך, אתה יכול לפרסם את נתוני הטמפרטורה למתווך כפי שמוצג להלן.

לָצוּף טמפרטורה = 25.5;
חוּט TemperaturString = חוּט(טֶמפֶּרָטוּרָה);
לְהַשְׁחִיר temperatureChar[5];
מחרוזת טמפרטורה.toCharArray(טמפרטורהChar, 5);
client.publish("טמפ", temperatureChar);

זה יפרסם את נתוני הטמפרטורה ל- טמפ' נוֹשֵׂא.

ניתן לפרסם נתונים בלולאה או במרווחי זמן קבועים, בהתאם לדרישות הפרויקט שלך. ודאו שאתם לא מציפים את המתווך בכמות גדולה מדי של נתונים ושאתם מפרסמים במרווח סביר.

הרשמה לנושאי MQTT וקבלת נתונים ב-ESP-01

כדי להירשם לנושא, השתמש ב- client.subscribe() פוּנקצִיָה. במקרה שלנו להלן, הלקוח נרשם ל- outTopic נוֹשֵׂא.

client.subscribe("נושא מחוץ");

לאחר שנרשמת לנושא, תוכל לקבל הודעות שפורסמו בנושא זה באמצעות client.loop() לתפקד ב לוּלָאָה() פונקציה בסקיצה למטה:

בָּטֵללוּלָאָה(){
אם (!לָקוּחַ.מְחוּבָּר()) {
reconnect();
}
לָקוּחַ.לוּלָאָה();
}

זה יבדוק ללא הרף הודעות חדשות ויבצע את פונקציית ההתקשרות חזרה כאשר התקבלה הודעה חדשה.

כדי לטפל בהודעות שהתקבלו, הגדר פונקציית התקשרות חזרה כמו זו שמוצגת להלן:

בָּטֵלהתקשר חזרה(לְהַשְׁחִיר*נושא, בייט* מטען, לא חתום int אורך){
// הדפס את ההודעה שהתקבלה
סידורי.הדפס("התקבלה הודעה בנושא:");
סידורי.הדפס(נוֹשֵׂא);
סידורי.הדפס(". הודעה: ");
ל (int i=0;אניסידורי.הדפס((לְהַשְׁחִיר)מטען[אני]);
}
סידורי.println();
}

פונקציה זו תיקרא כאשר תתקבל הודעה חדשה בנושא הרשום. זה ידפיס את ההודעה שהתקבלה לצג הטורי.

שימוש ברמות QoS (איכות שירות) ותכונות אבטחה

אחת הטכניקות החשובות ביותר המשמשות בטיפול בבקשות היא שימוש ברמות QoS (איכות שירות) עבור הודעות ה-MQTT שלך. רמות QoS מגדירות כיצד המתווך והמנויים צריכים לטפל בהודעות שלך. ישנן שלוש רמות של QoS: 0, 1 ו-2.

רמת QoS 0 היא הכי פחות אמינה, שכן הודעות נשלחות פעם אחת בלבד ולא מובטחת שיימסרו למנוי. רמת QoS 1 אמינה יותר, שכן הודעות נשלחות לפחות פעם אחת ומובטחות שיימסרו למנוי לפחות פעם אחת. רמת QoS 2 היא האמינה ביותר, שכן הודעות נשלחות פעם אחת בדיוק ומובטחות להימסר למנוי פעם אחת בדיוק. האופן שבו המכשירים שלך מתקשרים עולה בקנה אחד עם אחרים בעיות אבטחה ותיקונים נפוצים באינטרנט של הדברים (IoT). אתה רוצה להישאר בפסגה.

כדי להשתמש ברמות QoS, אתה יכול לציין את הרמה הרצויה בעת פרסום הודעות באמצעות client.publish() פוּנקצִיָה:

client.publish("נוֹשֵׂא", "שלום עולם!", 1);

זה יפרסם את ההודעה שלום עולם! אל ה נוֹשֵׂא נושא עם רמת QoS 1.

טכניקה מתקדמת נוספת היא שימוש צוואה אחרונה וצוואה (LWT) הודעות. הודעות LWT הן הודעות שנשלחות על ידי המתווך כאשר לקוח מתנתק באופן בלתי צפוי. אנו מאמינים שזה חשוב לאיתור מכשירים לא מקוונים או להפעלת פעולות כאשר מכשיר מתנתק.

כדי להשתמש בהודעות LWT, אתה יכול לציין את הודעת LWT בעת התחברות למתווך באמצעות client.setWill() פוּנקצִיָה:

client.setWill("סטָטוּס", "לא מקוון", 1, נָכוֹן);

זה יקבע את הודעת LWT ל במצב לא מקוון על סטָטוּס נושא עם QoS רמה 1 ודגל השמירה מוגדר ל נָכוֹן.

הכנה לפרויקט ה-IoT הבא שלך

מודול ESP-01 הוא פתרון סביר וקומפקטי לפרויקטים של IoT, והשימוש בו עם MQTT יכול לקחת את הפרויקט שלך לשלב הבא. למרות שההגדרה הראשונית יכולה להיות מרתיעה, היתרונות של MQTT, כמו תקשורת קלת משקל ומדרגיות גבוהה, הופכים אותה להשקעה משתלמת.