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#include
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