2022年7月19日 星期二

讓 ESP32 成為行動熱點 (WiFi 接入點,無線AP)


本實作使用 WeMos LoLin32 開發板,WiFi 802.11b/g/n 進行基地台連線測試。直接將 WeMos LoLin32 以 USB 線連接到開發電腦進行程式編譯上傳即可。

使用Arduino IDE 編譯 ESP32 程式前請先確認已經正確選定開發板規格。

當把ESP32接上電腦後可能會發現COM埠無法使用,這是因為少了 USB to UART Bridge Driver ,去官網下載驅動程式回來安裝即可,網址如下:
https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
要讓ESP32開發板成為行動熱點、AP基地台分享網路連線給其他的無線裝置,可利用WiFiAP程式庫(在撰寫程式時請直接引入 WiFi 程式庫即可)中的softAP()方法:
 bool softAP(const char* ssid, const char* passphrase = NULL, int channel = 1, int ssid_hidden = 0, int max_connection = 4, bool ftm_responder = false);

softAP()方法參數說明: 
  • ssid:基地台名稱 
  • passphrase:基地台連入密碼,預設沒有密碼 
  • channel:連線頻道號碼,預設頻道1 
  • ssid_hidden:是否隱藏基地台名稱 
  • max_connection:最大用戶端連線數,預設上限為4個用戶 
  • ftm_responder:是否啟用精確定時測量(FTM)功能,預設不啟用
撰寫實驗程式如下:
#include <WiFi.h>
//設定AP基地台的名稱
const char ssid[] = "SillyESP32"; //名稱最長32個字元
//指定連線密碼
const char psw[] = "12345678";  //長度最長64個字元

void setup() {
  Serial.begin(115200); //設定序列通信速率
  WiFi.softAP(ssid, psw); //設定AP基地台基本資料並啟動服務

  Serial.print("基地台的IP位址:");
  Serial.println(WiFi.softAPIP());   // 在序列埠監控視窗顯示基地台IP
  Serial.print("基地台的網域:");
  Serial.println(WiFi.softAPNetworkID());   // 在序列埠監控視窗顯示基地台網域
  Serial.print("基地台的廣播IP:");
  Serial.println(WiFi.softAPBroadcastIP());   // 在序列埠監控視窗顯示基地台廣播IP
}

void loop() {}
執行結果如下圖: