התחבר לרשת ה-WiFi החזקה ביותר ב-ESP32 באמצעות WiFiMulti Function

Hthbr Lrst H Wifi Hhzqh Bywtr B Esp32 B Mz Wt Wifimulti Function



ESP32 הוא לוח מיקרו-בקר מבוסס IoT עם תמיכה ב-WiFi ו-Bluetooth. ESP32 יכול לפעול בשלושה מצבי WiFi שונים (תחנה, גישה או שניהם). שימוש בכל המצבים הללו ESP32 יכול לשפר את הקישוריות האלחוטית שלו על ידי קיפולים רבים. היום נדון בתמיכה בריבוי WiFi ב-ESP32 כדי להתחבר לרשת הזמינה החזקה ביותר.

ESP32 עם WiFiMulti Function

ESP32 יכול להתחבר לרשתות מרובות אם יש לנו גישה ליותר מרשת אחת, אנחנו רק צריכים להגדיר את ה-SSID והסיסמה שלהם בתוך הקוד. הוא יחפש את הרשת הזמינה ויתחבר לרשת ה-Wi-Fi החזקה ביותר שאנו מגדירים בקוד.







הערה: זכור שהוא יתחבר לרשת אחת בכל פעם אם החיבור לרשת זו אבד אז ESP32 יתחבר לרשתות WiFi זמינות אחרות.



אנו יכולים לפתוח דוגמה WiFiMulti ב- Arduino IDE:



לך ל : קובץ > דוגמאות > WiFi > WifiMulti





כיצד להוסיף מספר רשתות WiFi ב-ESP32

כדי להוסיף מספר רשתות WiFi בלוח ESP32. נשתמש ב- WifiMulti לתפקד עם addAP() . הפונקציה addAP() יכולה לקבל מספר SSID וסיסמאות כארגומנט. כדי להוסיף מספר רשתות יש להגדיר בנפרד את ה-SSID והסיסמאות שלהם. להלן התחביר להוספת יותר מרשת אחת באמצעות WifiMulti לתפקד עם addAP() :



wifiMulti. addAP ( 'רשת SSID1' , 'סיסמה 1' ) ;

wifiMulti. addAP ( 'רשת SSID2' , 'סיסמה 2' ) ;

wifiMulti. addAP ( 'רשת SSID3' , 'סיסמה3' ) ;

כיצד להתחבר לרשת ה-WiFi החזקה ביותר ב-ESP32

כדי לחבר את ה-ESP32 עם הרשת החזקה ביותר שזמינה, נשלב את סריקת ה-ESP32 WiFi ודוגמה רבת WiFi. נכתוב קוד ב-Arduino IDE שיבצע את השלבים הבאים:

  • סרוק אחר הרשתות הזמינות
  • הדפס את ה-RSSI (חוזק אות) שלהם על צג טורי. אז, אנחנו יכולים לבדוק את הרשת החזקה ביותר הזמינה
  • מתחבר אוטומטית לרשת החזקה ביותר
  • אם הוא מאבד את החיבור, הוא יתחבר אוטומטית לרשת הבאה החזקה ביותר

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

כעת העלה את הקוד שניתן בלוח ESP32 באמצעות Arduino IDE.

קוד

פתח את Arduino IDE והעלה קוד ב-ESP32. זכור לבחור ביציאת COM.

#include /*ספריית WIFI כלולה*/

#include /*ספריית WIFI מרובת כלולה*/

WiFiMulti wifiMulti ;
/*לזמן חיבור AP. הגדל כאשר ל-ESP32 לוקח יותר זמן לחיבור*/
const uint32_t connectTimeoutMs = 10000 ;
בָּטֵל להכין ( ) {
סידורי. התחל ( 115200 ) ; /*תקשורת טורית מתחילה*/
לְעַכֵּב ( 10 ) ;
וויי - פיי. מצב ( WIFI_STA ) ; /*ESP32 WIFI אותחל כתחנה*/
/*הקלד את כל ה-SSID הידועים והסיסמאות שלהם*/
wifiMulti. addAP ( 'ה-SSID שלך' , 'סיסמה' ) ; /*רשת 1 שאנחנו רוצים לחבר*/
wifiMulti. addAP ( 'טלפון' ) ; /*רשת 2 שאנחנו רוצים לחבר*/
// WiFi.scanNetworks ייתן סך כל הרשתות
int נ = וויי - פיי. scanNetworks ( ) ; /*סרוק לאיתור רשת זמינה*/
סידורי. println ( 'סריקה בוצעה' ) ;
אם ( נ == 0 ) {
סידורי. println ( 'אין רשתות זמינות' ) ; /*מדפיס אם לא נמצאה רשת*/
}
אַחֵר {
סידורי. הדפס ( נ ) ;
סידורי. println ( 'נמצאו רשתות' ) ; /*מדפיס אם נמצאה רשת*/
ל ( int אני = 0 ; אני < נ ; ++ אני ) {
סידורי. הדפס ( אני + 1 ) ; /*הדפס את ה-SSID וה-RSSI של הרשת הזמינה*/
סידורי. הדפס ( ':' ) ;
סידורי. הדפס ( וויי - פיי. SSID ( אני ) ) ;
סידורי. הדפס ( '(' ) ;
סידורי. הדפס ( וויי - פיי. RSSI ( אני ) ) ;
סידורי. הדפס ( ')' ) ;
סידורי. println ( ( וויי - פיי. EncryptionType ( אני ) == WIFI_AUTH_OPEN ) ? '' : '*' ) ;
לְעַכֵּב ( 10 ) ;
}
}
/*מתחבר לרשת המוגדרת החזקה ביותר עם SSID וסיסמה זמינות*/
סידורי. println ( 'מתחבר ל-Wifi...' ) ;
אם ( wifiMulti. לָרוּץ ( ) == WL_CONNECTED ) {
סידורי. println ( '' ) ;
סידורי. println ( 'מחובר לרשת WIFI' ) ;
סידורי. println ( 'כתובת IP של רשת מחוברת: ' ) ;
סידורי. println ( וויי - פיי. localIP ( ) ) ; /*מדפיס את כתובת ה-IP של הרשת המחוברת*/
}
}
בָּטֵל לוּלָאָה ( ) {
אם ( wifiMulti. לָרוּץ ( connectTimeoutMs ) == WL_CONNECTED ) { /*אם החיבור אבד הוא יתחבר לרשת הבאה*/
סידורי. הדפס ( 'WiFi מחובר:' ) ;
סידורי. הדפס ( וויי - פיי. SSID ( ) ) ;
סידורי. הדפס ( '' ) ;
סידורי. println ( וויי - פיי. RSSI ( ) ) ;
}
אַחֵר {
סידורי. println ( 'WiFi לא מחובר!' ) ; /*אם כל התנאים נכשלים הדפס את זה*/
}
לְעַכֵּב ( 1000 ) ;
}

הקוד התחיל בהגדרת ספריות WiFi עבור ESP32, ואז יצרנו א WiFiMulti לְהִתְנַגֵד. לאחר מכן, בחלק ההתקנה הוספנו שתי רשתות. האחת היא רשת WiFi שמוצפנת בסיסמה ולכן עלינו לספק סיסמה בעוד הרשת השנייה שהיא נקודה חמה לסמארטפון פתוחה, כך שאיננו צריכים שום סיסמה רק הקלדנו את ה-SSID של הרשת.

לאחר מכן, באמצעות wifiMulti.run() הפקודה ESP32 תתחבר לרשת החזקה ביותר הזמינה. לאחר חיבור ה-WiFi הקוד ידפיס את ה-SSID של הרשת המחוברת, כתובת ה-IP וה-RSSI.

תְפוּקָה

לאחר העלאת קוד ל-ESP32 תחילה הוא יסרוק את הרשת הזמינה ואז הוא יתחבר לרשת הזמינה החזקה ביותר. כאן נוכל לראות ערך RSSI עבור כל רשת. RSSI נמוך יותר אומר שהרשת חזקה יותר.

  תיאור טקסט נוצר באופן אוטומטי

אנו יכולים לראות ש-ESP32 מחובר ל- רשת הטלפון כי יש לו RSSI ערך של -62 והרשת האחרת שה-SSID והסיסמה שלה מוגדרים היא צוות SAM שהערך שלו -73. כאן לרשת הנקודות החמות הניידות יש ערך RSSI קרוב יותר לאפס פירושו חיבור חזק יותר.

כעת נתק את הנקודה החמה של הטלפון החכם. ESP32 יחבר את עצמו לרשתות זמינות חזקות אחרות. כמו בפלט אנו יכולים לראות שה-ESP32 מחובר כעת לרשת החזקה הבאה הזמינה. הרשת שאליה הוא מחובר היא Team SAM בעלת ערך RSSI 0f -65.

סיכום

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