(2026/03/21)
教學影片:https://youtu.be/77Z4nCuv9fA
這篇文章將測試如何利用各種方式來遙控小車
透過WIFI利用"MQTT通訊協定"來遙控小車(控制介面:電腦網頁或手機APP)
透過WIFI利用"UDP通訊協定"來遙控小車(控制介面:電腦軟體或手機APP)
透過藍牙來遙控小車(控制介面:手機APP)
透過"BLE遙控器"來遙控小車(控制介面:虛擬手機遙控器)
透過"網頁遙控器"來遙控小車(控制介面:網頁介面)
透過WIFI可以遠距離遙控(近距離更沒問題);透過藍牙可以近距離遙控
一、WiFi設定
STA模式(station):連上本地的無線路由器
需要有路由器的SSID(名稱)及密碼
AP模式(Access Point):設定為熱點,本身來當無線AP
輸入自己的SSID(名稱)及密碼
預設的網址為:192.168.4.1
三、認識UDP及透過UDP伺服器來遙控小車
認識UDP伺服器:(Gemini提供資料)
UDP(User Datagram Protocol,用戶資料報協定)伺服器是一種基於「非連接」導向的網路服務架構。與常見的 TCP(如 HTTP、LINE 訊息)不同,UDP 追求的是極速與低延遲,而不是資料的完整性。
以下是 UDP 伺服器的核心特點與運作邏輯:
1. UDP 的運作原理:丟了就跑
UDP 伺服器就像是一個「投遞信箱」。當客戶端傳送資料時,它不需要先跟伺服器「握手」建立連線,而是直接把資料包(Datagram)丟出去。
無連接性(Connectionless): 伺服器不會追蹤客戶端的狀態。
不保證到達: 如果網路擁塞導致封包遺失,UDP 不會自動重傳。
不保證順序: 先寄出的封包不一定先抵達。
2. UDP 伺服器的優缺點
優點
速度極快: 減少了建立連線的往返時間(RTT)
資源消耗低: 伺服器不需要維持成千上萬個連線狀態。
支援廣播/多播: 可以同時向多個設備發送數據。
缺點。
不可靠: 可能掉包,且接收端不會通知發送端。
無流量控制: 容易因傳送過快導致接收端緩衝區溢出。
安全性較低: 容易成為 DDoS 放大攻擊的工具。
3. 常見的應用場景
因為 UDP 容許少量的資料遺失,但對「即時性」要求極高,所以常用於:
線上遊戲: 玩家的座標更新(掉了一格沒關係,重點是下一秒的即時位置)。
影音串流/直播: 視訊通話時畫面閃爍一下(掉包)比畫面卡住 2 秒(等待重傳)更能接受。
DNS 查詢: 為了快速獲取網址對應的 IP。
VoIP(網路電話): 語音通訊需要極低延遲以維持對話自然。
4. 簡單的運作流程
Socket 建立: 伺服器開啟一個 UDP Socket。
綁定(Bind): 綁定一個特定連接埠(Port),例如 8080。
接收(Recvfrom): 進入等待狀態,接收任何來源丟過來的封包。
處理與回覆: 根據封包內的來源地址,將結果直接回傳。
利用PicoW擔任UDP伺服器
發送端:電腦sokit軟體、手機APP(如V7RC)
有關sokit軟體下載,請看10 亞柏Pico小車(microBlock)
接收端:小車
小車程式如下:
測試時,使用AP模式沒有成功
左邊使用電腦sokit軟體、右邊使用V7RC的APP
四、透過藍牙來遙控小車
參考資料:02 非接觸控制
利用藍牙遙控小車
發送端:手機APP(如Serial Bluetooth Terminal、V7RC)
接收端:小車
小車程式如下:
左邊使用Serial Bluetooth Terminal的APP、右邊使用V7RC的APP
五、利用BLE_遙控器來遙控小車
參考資料:02 非接觸控制
利用BLE 遙控器來遙控小車
發送端:虛擬手機遙控器
接收端:小車
小車程式如下:
感謝亞柏老師指導:上面程式,用到【開關】,導致按鈕要按一下開按一下關,不適合用在小車的控制,把程式修改如下採用【方形按鈕】就可以了!!
感謝Mason老師指導:BLE 遙控器裏面走的就是 linkit remote 的協定,所以不一定要用電腦來連,可試看看裝 android 手機來連即可,還蠻方便的. 底下是我修改後的 linkit remote app 可玩看看.
Mason老師:可試看看我之前寫的網頁遙控器看看了,手機 chrome 打開下面網址 https://bleremote.netlify.app/
打開後,可按右上角三個點,再按加至主畫面,就可以變成一個 app 放到手機上了
以上是針對 android 手機,ios 應該不行. 但 ios 可在 app store 找到 linkit remote 來裝看看.
成功使用
六、利用網頁遙控器來遙控小車
利用網頁遙控器來遙控小車
發送端:在PicoW架設了網頁伺服器,網頁介面於下
接收端:小車
小車程式如下:
網頁介面
最後提供亞柏老師所提供的網頁伺服器程式,供下次寫複雜程式時的參考