web server裝置如為AP mode當PC、手機連上時導向指定網頁此稱為Cative Portal

要讓手機或電腦在連上 Raspberry Pi Pico W 的 AP 模式(無線基地台)時自動跳出指定網頁,這個功能在網路上被稱為 「強制網路門戶」(Captive Portal),就像我們在機場或咖啡廳連線免費 Wi-Fi 時,會自動跳出登入或歡迎網頁一樣

要達成這個效果,除了原本的 Web 伺服器 之外,Pico W 還必須同時充當 DNS 伺服器。因為當手機連上沒有網際網路的 Wi-Fi 時,系統會自動在背景向特定的網址(例如 Apple 的 ://apple.com 或微軟的 msftconnecttest.com)發送請求測試網路。

程式設計步驟

Libraries:DNSServer.h、LEAmDNS.h、ESPAsyncWebServer.h

AsyncWebServer server(80);

DNSServer dnsServer;

dnsServer.start(53,"*",apIP)//DNS port:53,apIP:(192.168.4.1)

dnsServer.processNextRequest();//放loop()內

// 關鍵防呆:當手機在背景亂戳微軟、蘋果或 Google 的測試網址時,一律強制把它導回 192.168.4.1 首頁

server.onNotFound([](AsyncWebServerRequest *request) {
request->redirect("http://192.168.4.1");

#include 可以讓 Raspberry Pi Pico / Pico W 支援 mDNS(多播網域名稱系統),方便透過主機名稱(例如 my-pico.local)在區網內連線

基本使用步驟

  • 引入標頭檔:
    在程式碼開頭加入 LEAmDNS.h 與網路相關標頭檔。
  • 初始化 mDNS:
    在連上 Wi-Fi 之後,呼叫 MDNS.begin("你的主機名稱")。
  • 更新狀態:
    務必在 loop() 迴圈中加入 MDNS.update(),否則可能會發生回應異常或無法解析的問題

參考網站LINK