เชื่อมต่อกับเครือข่าย WiFi ที่แรงที่สุดใน ESP32 โดยใช้ฟังก์ชัน WiFiMulti

Cheuxm Tx Kab Kherux Khay Wifi Thi Raeng Thisud Ni Esp32 Doy Chi Fangkchan Wifimulti



ESP32 เป็นบอร์ดไมโครคอนโทรลเลอร์ที่ใช้ IoT ที่รองรับ WiFi และ Bluetooth ESP32 สามารถทำงานในโหมด WiFi ที่แตกต่างกันสามโหมด (Station, Access หรือทั้งสองโหมด) การใช้โหมดทั้งหมดนี้ ESP32 สามารถปรับปรุงการเชื่อมต่อไร้สายได้หลายเท่า วันนี้เราจะพูดถึงการรองรับ multi-WiFi ใน ESP32 เพื่อเชื่อมต่อกับเครือข่ายที่แรงที่สุดที่มีอยู่

ESP32 พร้อม WiFiMulti Function

ESP32 สามารถเชื่อมต่อกับหลายเครือข่ายได้หากเรามีสิทธิ์เข้าถึงมากกว่าหนึ่งเครือข่าย เราเพียงแค่กำหนด SSID และรหัสผ่านภายในโค้ด มันจะค้นหาเครือข่ายที่มีอยู่และเชื่อมต่อกับเครือข่าย Wi-Fi ที่แรงที่สุดที่เรากำหนดไว้ในรหัส







บันทึก: โปรดจำไว้ว่ามันจะเชื่อมต่อกับเครือข่ายหนึ่งครั้งหากการเชื่อมต่อกับเครือข่ายนั้นขาดหายไป ESP32 จะเชื่อมต่อกับเครือข่าย WiFi อื่น ๆ ที่มีอยู่



เราสามารถเปิด WiFiMulti ตัวอย่างใน Arduino IDE:



ไปที่ : ไฟล์ > ตัวอย่าง > WiFi > WifiMulti





วิธีเพิ่มเครือข่าย WiFi หลายเครือข่ายใน ESP32

ในการเพิ่มเครือข่าย WiFi หลายเครือข่ายในบอร์ด ESP32 เราจะใช้ Wifi มัลติ ฟังก์ชั่นด้วย เพิ่มAP() . ฟังก์ชัน addAP() สามารถรับหลาย SSID และรหัสผ่านเป็นอาร์กิวเมนต์ หากต้องการเพิ่มหลายเครือข่าย ควรกำหนด SSID และรหัสผ่านแยกกัน ต่อไปนี้เป็นไวยากรณ์เพื่อเพิ่มมากกว่าหนึ่งเครือข่ายที่ใช้ Wifi มัลติ ฟังก์ชั่นด้วย เพิ่มAP() :



wifi มัลติ เพิ่มAP ( 'เครือข่าย SSID1' , 'รหัสผ่าน1' ) ;

wifi มัลติ เพิ่มAP ( 'เครือข่าย SSID2' , 'รหัสผ่าน2' ) ;

wifi มัลติ เพิ่มAP ( 'เครือข่าย SSID3' , 'รหัสผ่าน 3' ) ;

วิธีเชื่อมต่อกับเครือข่าย WiFi ที่แรงที่สุดใน ESP32

ในการเชื่อมต่อ ESP32 กับเครือข่ายที่แข็งแกร่งที่สุด เราจะรวมการสแกน WiFi ของ ESP32 และ WiFi หลายตัวอย่างเข้าด้วยกัน เราจะเขียนโค้ดใน Arduino IDE ซึ่งจะทำตามขั้นตอนต่อไปนี้:

  • สแกนหาเครือข่ายที่มีอยู่
  • พิมพ์ RSSI (ความแรงของสัญญาณ) บนจอภาพแบบอนุกรม ดังนั้นเราจึงสามารถตรวจสอบเครือข่ายที่แข็งแกร่งที่สุดที่มีอยู่
  • เชื่อมต่อกับเครือข่ายที่แรงที่สุดโดยอัตโนมัติ
  • หากขาดการเชื่อมต่อ ระบบจะเชื่อมต่อกับเครือข่ายที่แรงที่สุดที่มีอยู่ถัดไปโดยอัตโนมัติ

ในการทดสอบโค้ด เราจะใช้ a สมาร์ทโฟน ฮอตสปอตและเครือข่าย WiFi กำหนดชื่อง่าย ๆ ให้กับเครือข่ายฮอตสปอตมือถือเสมอเพื่อหลีกเลี่ยงข้อผิดพลาด

ตอนนี้อัปโหลดรหัสที่กำหนดในบอร์ด ESP32 โดยใช้ Arduino IDE

รหัส

เปิด Arduino IDE และอัพโหลดโค้ดใน ESP32 อย่าลืมเลือกพอร์ต COM

#include /*รวมไลบรารี WIFI*/

#include /*รวมไลบรารี Multi WIFI*/

WiFiมัลติไวไฟมัลติ ;
/*ต่อเวลาเชื่อมต่อ AP เพิ่มขึ้นเมื่อ ESP32 ใช้เวลาในการเชื่อมต่อนานขึ้น*/
คอสต์ uint32_t connectTimeoutMs = 10,000 ;
เป็นโมฆะ ติดตั้ง ( ) {
อนุกรม. เริ่ม ( 115200 ) ; /*เริ่มการสื่อสารแบบอนุกรม*/
ล่าช้า ( 10 ) ;
ไวไฟ. โหมด ( WIFI_STA ) ; /*ESP32 WIFI เริ่มต้นเป็นสถานี*/
/*พิมพ์ SSID ที่รู้จักทั้งหมดและรหัสผ่าน*/
wifi มัลติ เพิ่มAP ( 'SSID ของคุณ' , 'รหัสผ่าน' ) ; /*เครือข่าย 1 ที่เราต้องการเชื่อมต่อ*/
wifi มัลติ เพิ่มAP ( 'โทรศัพท์' ) ; /*เครือข่าย 2 ที่เราต้องการเชื่อมต่อ*/
// WiFi.scanNetworks จะให้เครือข่ายทั้งหมด
นานาชาติ = ไวไฟ. สแกนเครือข่าย ( ) ; /*สแกนหาเครือข่ายที่ใช้ได้*/
อนุกรม. พิมพ์ ( 'สแกนเสร็จแล้ว' ) ;
ถ้า ( == 0 ) {
อนุกรม. พิมพ์ ( 'ไม่มีเครือข่ายที่ใช้ได้' ) ; /*พิมพ์หากไม่พบเครือข่าย*/
}
อื่น {
อนุกรม. พิมพ์ ( ) ;
อนุกรม. พิมพ์ ( 'พบเครือข่าย' ) ; /*พิมพ์หากพบเครือข่าย*/
สำหรับ ( นานาชาติ ผม = 0 ; ผม < ; ++ ผม ) {
อนุกรม. พิมพ์ ( ผม + 1 ) ; /*พิมพ์ SSID และ RSSI ของเครือข่ายที่ใช้ได้*/
อนุกรม. พิมพ์ ( ':' ) ;
อนุกรม. พิมพ์ ( ไวไฟ. SSID ( ผม ) ) ;
อนุกรม. พิมพ์ ( '(' ) ;
อนุกรม. พิมพ์ ( ไวไฟ. RSSI ( ผม ) ) ;
อนุกรม. พิมพ์ ( ')' ) ;
อนุกรม. พิมพ์ ( ( ไวไฟ. ประเภทการเข้ารหัส ( ผม ) == WIFI_AUTH_OPEN ) ? ' ' : '*' ) ;
ล่าช้า ( 10 ) ;
}
}
/*เชื่อมต่อกับเครือข่ายที่กำหนดไว้ที่แข็งแกร่งที่สุดด้วย SSID และรหัสผ่าน*/
อนุกรม. พิมพ์ ( 'กำลังเชื่อมต่อ Wi-Fi...' ) ;
ถ้า ( wifi มัลติ วิ่ง ( ) == WL_CONNECTED ) {
อนุกรม. พิมพ์ ( '' ) ;
อนุกรม. พิมพ์ ( 'เชื่อมต่อกับเครือข่าย WIFI' ) ;
อนุกรม. พิมพ์ ( 'ที่อยู่ IP ของเครือข่ายที่เชื่อมต่อ:' ) ;
อนุกรม. พิมพ์ ( ไวไฟ. IP ท้องถิ่น ( ) ) ; /*พิมพ์ที่อยู่ IP ของเครือข่ายที่เชื่อมต่อ*/
}
}
เป็นโมฆะ ห่วง ( ) {
ถ้า ( wifi มัลติ วิ่ง ( connectTimeoutMs ) == WL_CONNECTED ) { /*หากขาดการเชื่อมต่อก็จะเชื่อมต่อกับเครือข่ายถัดไป*/
อนุกรม. พิมพ์ ( 'เชื่อมต่อ Wi-Fi: ' ) ;
อนุกรม. พิมพ์ ( ไวไฟ. SSID ( ) ) ;
อนุกรม. พิมพ์ ( ' ' ) ;
อนุกรม. พิมพ์ ( ไวไฟ. RSSI ( ) ) ;
}
อื่น {
อนุกรม. พิมพ์ ( 'ไม่ได้เชื่อมต่อไวไฟ!' ) ; /*หากเงื่อนไขทั้งหมดล้มเหลวให้พิมพ์สิ่งนี้*/
}
ล่าช้า ( 1,000 ) ;
}

โค้ดเริ่มต้นด้วยการกำหนดไลบรารี WiFi สำหรับ ESP32 จากนั้นเราก็สร้างไฟล์ WiFiมัลติ วัตถุ. ต่อไป ในส่วนการตั้งค่า เราได้เพิ่มสองเครือข่าย เครือข่ายแรกคือเครือข่าย WiFi ที่เข้ารหัสด้วยรหัสผ่าน ดังนั้นเราต้องระบุรหัสผ่านในขณะที่เครือข่ายที่สองซึ่งเป็นฮอตสปอตของสมาร์ทโฟนเปิดอยู่ ดังนั้นเราจึงไม่ต้องการรหัสผ่านใดๆ เพียงแค่พิมพ์ SSID เครือข่าย

ต่อไปโดยใช้ wifiMulti.run() คำสั่ง ESP32 จะเชื่อมต่อกับเครือข่ายที่แข็งแกร่งที่สุดที่มีอยู่ เมื่อรหัสเชื่อมต่อ WiFi จะพิมพ์ SSID เครือข่ายที่อยู่ IP และ RSSI ที่เชื่อมต่อ

เอาต์พุต

หลังจากอัปโหลดโค้ดไปยัง ESP32 ก่อน ระบบจะสแกนหาเครือข่ายที่มีอยู่ จากนั้นระบบจะเชื่อมต่อกับเครือข่ายที่แข็งแกร่งที่สุดที่มีอยู่ ที่นี่เราสามารถเห็นค่า RSSI สำหรับแต่ละเครือข่าย RSSI ที่ต่ำกว่าหมายถึงเครือข่ายที่แข็งแกร่งกว่า

  คำอธิบายข้อความที่สร้างขึ้นโดยอัตโนมัติ

เราจะเห็นว่า ESP32 เชื่อมต่อกับ เครือข่ายโทรศัพท์ เพราะมันมี RSSI มูลค่าของ -62 และเครือข่ายอื่นที่มีการกำหนด SSID และรหัสผ่านไว้ ทีม บสส ซึ่งมีค่า -73. ที่นี่เครือข่ายฮอตสปอตมือถือมีค่า RSSI เข้าใกล้ศูนย์ หมายถึงการเชื่อมต่อที่แรงกว่า

ตอนนี้ตัดการเชื่อมต่อฮอตสปอตของสมาร์ทโฟน ESP32 จะเชื่อมต่อตัวเองกับเครือข่ายอื่นๆ ที่แรงกว่า ในเอาต์พุตเราจะเห็นว่าตอนนี้ ESP32 เชื่อมต่อกับเครือข่ายที่แข็งแกร่งที่สุดถัดไป เครือข่ายที่เชื่อมต่อคือ Team SAM ที่มีค่า RSSI 0f -65

บทสรุป

ESP32 สามารถเชื่อมต่อกับเครือข่ายที่แข็งแกร่งที่สุดในแวดวงของมัน เราเพียงแค่ต้องกำหนด SSID และรหัสผ่านหลายเครือข่ายภายในรหัส ใช้ WiFiมัลติ ฟังก์ชัน ESP32 จะสแกนหาเครือข่ายที่ใช้ได้ และเมื่อการเชื่อมต่อขาดหายไป ก็จะเชื่อมต่อกับเครือข่ายอื่นๆ ที่อยู่ภายในช่วง ESP32