我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


經常有夥伴跟我反應ESP32的網路連不上的問題,經常就是序列視窗一直出現無限的

........................................................................................................................

會印出上面這些點就是代表ESP32還在尋找網路,所以你應該檢查的是"網路環境"及"SSID名稱密碼",而不是程式碼。

image

發生這樣的問題可以分成以下幾種可能:

1.SSID或Password打錯:SSID、Password都有分大小寫,名字越簡單約好,不要用中文、空白及其他特殊符號,尤其是IOS手機,分享熱點的名稱就是手機名稱,所以請依照一下方式修改
   -進入設定/一般/關於本機/名稱
   -修改手機顯示的名稱

iphone 熱點名稱


2.網路訊號太差:手機、筆電能連得到,不代表esp32也可以,畢竟版載天線功率有限,如果真的沒辦法請使用外接天線(需修改0R電阻)

3.WiFi AP是5G頻段:越來越多的WiFi支援5G頻段,但是ESP32只有2.4G,如果AP是5G WiFi,那連到天荒地老也不會成功,而且目前很多手機或電腦分享WIFI時會預設開啟5G網路,例如IOS手機可以開啟"最大化相容性",否則ESP32無法連線,Android手機也有這個選項

iphone-maximize-compatiblity-5ghz-wifi-2.jpg image
IOS手機開啟最大化相容性(2.4G WiFi) Android手機開啟擴充相容性(2.4G WiFi)

4. 不可使用連線後才登入的網路:有些網路連線SSID時不用密碼,但是連線後有一個登入畫面,要輸入使用者名稱或密碼才能用網路,這種網路物聯網裝置也無法使用,因為他沒辦法在連線後輸入帳號密碼,例如像是學術網路TANet,要輸入Mail及密碼這種,ESP32就無法連線了。
 
image


5. 有時候就是ESP32要RST才能連上
上面的問題中最惱人的就是第4,長期的經驗發現ESP32在特定狀況就是要連不上時按一下RST重開,然後...她就連上了,問題是什麼我並不清楚,不過解決方案倒是滿簡單的,就是加入嘗試一段時間後依然連不上網路時,就下ESP.restart()重開機即可。

例如以下的語法


  WiFi.begin(ssid, password);
  int WifiTryCount=0;
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    if (WifiTryCount++ >= 20)  ESP.restart();
  }


這樣的話,如果連不上就會自己重開機了

image

另一個作法是改用WifiMulti的作法,這部份就留著下次講吧

arrow
arrow

    夜市 小霸王 發表在 痞客邦 留言(0) 人氣()