תקשורת אלחוטית בין מכשירים אלקטרוניים ומודולים חשובה מאוד, כדי להפוך אותם ל'מתאימים 'בעולם האינטרנט של הדברים. פרוטוקול HTTP ושפת HTML אפשרו להעביר את הנתונים לכל מקום בעולם, דרך האינטרנט. כבר כיסינו כמה פרויקטים שמשתמשים ב- Wi-Fi עם Arduino, בדוק אותם לספר תחילת העבודה:
- שליחת דוא"ל באמצעות מודול WiFi של Arduino ו- ESP8266
- רובוט מבוקר WiFi באמצעות Arduino
- שליטה ב- RGB LED באמצעות Arduino ו- Wi-Fi
כעת במדריך זה אנו בונים תוכנית לשליחת נתונים לרשת באמצעות מודול Arduino ו- Wi-Fi. לשם כך אנו זקוקים תחילה לכתובת IP של שרת גלובלי או מקומי, כאן לצורך הקלות והדגמה אנו משתמשים בשרת מקומי.
רכיבים נדרשים:
- ארדואינו UNO
- מודול Wi-Fi ESP8266
- כבל יו אס בי
- חוטי חיבור
- מחשב נייד
- ספק כוח
מודול Wi-Fi ESP8266:
חיבורי מעגל:
תרשים המעגל ל"פרסום נתונים מארדואינו לרשת " מובא להלן. אנו זקוקים בעיקר למודול Wi-Fi של Arduino ו- ESP8266. סיכות ה- Vcc וה- GND של ESP8266 מחוברות ישירות ל- 3.3V ו- GND של Arduino ו- CH_PD מחובר גם ל- 3.3V. סיכות Tx ו- Rx של ESP8266 מחוברות ישירות לסיכה 2 ו- 3 של Arduino. הספרייה הסדרתית של תוכנה משמשת כדי לאפשר תקשורת טורית בסיכה 2 ו- 3 של Arduino. כבר כיסינו בפירוט את ממשק ה- Wi-Fi ESP8266 ל- Arduino.
באמצעות הספרייה הסדרתית התוכנה כאן, אפשרנו תקשורת טורית על סיכה 2 ו -3, והפכנו אותם ל- Rx ו- Tx בהתאמה. כברירת מחדל פין 0 ו- 1 של Arduino משמשים לתקשורת טורית אך באמצעות ספריית SoftwareSerial אנו יכולים לאפשר תקשורת טורית על פינים דיגיטליים אחרים של Arduino.
הערה: כדי לצפות בתגובה של ESP8266 על צג סדרתי, אנא פתח את צג הסידורי של Arduino IDE.
הסבר עבודה:
קודם כל עלינו לחבר את מודול ה- Wi-Fi שלנו לנתב Wi-Fi לצורך קישוריות רשת. לאחר מכן נגדיר את השרת המקומי, נשלח את הנתונים לאינטרנט ולבסוף נסגור את החיבור. תהליך זה ופקודות הוסברו בשלבים הבאים:
1. ראשית עלינו לבדוק את מודול ה- Wi-Fi על ידי שליחת פקודת AT , היא תחזיר תגובה המכילה אישור .
2. לאחר מכן, עלינו לבחור מצב באמצעות הפקודה AT + CWMODE = mode_id , השתמשנו במצב id = 3. מזהי מצב:
1 = מצב תחנה (לקוח)
2 = מצב AP (מארח)
3 = AP + מצב תחנה (כן, ל- ESP8266 יש מצב כפול!)
3. כעת עלינו לנתק את מודול ה- Wi-Fi שלנו מרשת ה- Wi-Fi המחוברת בעבר, באמצעות הפקודה AT + CWQAP, מכיוון ש- ESP8266 הוא ברירת המחדל המחובר אוטומטית לכל רשת Wi-Fi שזמינה בעבר.
4. לאחר מכן, המשתמש יכול לאפס את המודול באמצעות פקודת AT + RST . שלב זה הוא אופציונלי.
5. כעת עלינו לחבר את ESP8266 לנתב Wi-Fi באמצעות הפקודה הנתונה
6. עכשיו קבל כתובת IP באמצעות הפקודה הנתונה:
זה יחזיר כתובת IP.
7. הפעל כעת את מצב המולטיפלקס באמצעות AT + CIPMUX = 1 (1 לחיבור מרובה ו- 0 לחיבור יחיד)
8. כעת הגדר את ESP8266 כשרת באמצעות AT + CIPSERVER = 1, port_no (יציאה עשויה להיות 80). עכשיו ה- Wi-Fi שלך מוכן. כאן '1' משמש ליצירת השרת ו- '0' למחיקת השרת.
9. כעת באמצעות פקודה נתונה יכול המשתמש לשלוח נתונים לשרת המקומי שנוצר:
מזהה = מזהה של חיבור שידור
אורך = אורך הנתונים המרבי הוא 2 קילו-הרץ
10. לאחר שליחת מזהה ואורך לשרת, עלינו לשלוח נתונים כמו: Serial.println ("[email protected]");
11. לאחר שליחת נתונים עלינו לסגור את החיבור בפקודה הנתונה:
כעת הועברו נתונים לשרת המקומי.
12. כעת הקלד כתובת IP בשורת הכתובת בדפדפן האינטרנט ולחץ על Enter. כעת המשתמש יכול לראות נתונים מועברים בדף האינטרנט.
עיין בסרטון למטה לקבלת התהליך המלא.
שלבים לתכנות:
1. כלול את SoftwareSerial Library כדי לאפשר תקשורת טורית ב- PIN 2 ו- 3 ולהצהיר על כמה משתנים ומחרוזות.
#לִכלוֹל
2. לאחר מכן, עלינו להגדיר כמה פונקציות לביצוע המשימות הרצויות לנו.
בשנת Setup () פונקציה, אנו initialise תקשורת UART סדרתי מובנה עבור ESP8266 כמו client.begin (9600); בקצב שידור של 9600.
הגדרת חלל () {Serial.begin (9600); client.begin (9600); wifi_init (); Serial.println ("מערכת מוכנה.."); }
3. בפונקציה wifi_init () , אנו מאתחלים את מודול ה- wifi על ידי שליחת פקודות כמו איפוס, הגדרת מצב, התחברות לנתב, הגדרת חיבור וכו '. פקודות אלה הוסברו לעיל בחלק התיאור.
בטל wifi_init () {connect_wifi ("AT", 100); connect_wifi ("AT + CWMODE = 3", 100); connect_wifi ("AT + CWQAP", 100); connect_wifi ("AT + RST", 5000);…………………
4. בפונקציה connect_wifi () , אנו שולחים נתוני פקודות ל- ESP8266 ואז קוראים תגובה ממודול ה- Wi-Fi ESP8266.
בטל connect_wifi (מחרוזת cmd, int t) {int temp = 0, i = 0; בעוד (1) {Serial.println (cmd);…………………
5. פונקציית sendwebdata () משמשת לשליחת נתונים לשרת מקומי או לדף אינטרנט.
בטל sendwebdata (String webPage) {int ii = 0; ואילו (1) {unsigned int l = webPage.length (); Serial.print ("AT + CIPSEND = 0,"); client.print ("AT + CIPSEND = 0,");…………………
6. פונקציה void send () משמשת לשליחת מחרוזות נתונים לפונקציה sendwebdata () . זה יישלח עוד לדף האינטרנט.
שלח בטל () {webpage = "
ברוך הבא ל- Circuit Digest
"; sendwebdata (דף אינטרנט); דף אינטרנט = שם; דף אינטרנט + = dat;…………………7. פונקציית get_ip () משמשת לקבלת כתובת IP של השרת המקומי שנוצר.
8. בפונקציה loop loop () , אנו שולחים הוראות למשתמש לרענון הדף ולבדוק האם השרת מחובר לא. כאשר המשתמש מרענן או מבקש את דף האינטרנט, הנתונים מועברים אוטומטית לאותה כתובת IP.
לולאה בטלה () {k = 0; Serial.println ("אנא רענן את הדף שלך"); בעוד (k <1000)………………
אנו יכולים להציג את כל הנתונים מארדואינו לדף אינטרנט באמצעות תהליך זה, כמו טמפרטורת ולחות בחדר, זמן שעון, קואורדינטות GPS, קצב פעימות לב וכו '.