從AP/STA衝突走到穩定上線:HUB 8735 Ultra故事機的網路與時間校正實戰
這次測試不是單純把Wi-Fi連上,而是一步步找出RTL8735B在AP+STA共存時的限制,最後確立「STA為主、AP為故障備援」的穩定架構。實測結果顯示,故事機能透過分享器取得IP、自動完成NTP校時,手機控制頁、管理後台、播放統計與實體按鈕皆能正常運作。
一、這一版完成了什麼?
- 以STA模式連接既有Wi-Fi,IP由分享器DHCP自動分配。
- STA連線成功後自動執行NTP,不需由手機按鈕觸發。
- NTP失敗時自動嘗試HTTP Date;手機時間只作最後備援。
- STA連線、上網或校時失敗時,才啟動
192.168.4.1備援AP設定入口。 - STA與AP互斥,不再使用不穩定的Concurrent Mode。
- 首頁可播放五組內容、停止播放、調整音量並查看即時狀態。
- 管理後台可查看時間來源、STA狀態、統計、最近事件及下載CSV。
- 保留JQ6500非阻塞播放、中途切歌、停止及提示音寬容Watchdog。
二、最終網路架構:STA為主,AP為輔
若沒有STA設定、Wi-Fi連線逾時、連線中斷,或NTP與HTTP都無法驗證外網,系統才切換到:
三、為什麼不再同時開啟AP與STA?
早期版本曾讓AP與STA同時運作。手機剛連上192.168.4.1時,Web短暫正常;但STA連上分享器後,即使把預設路由切回AP,Web仍然失效。這表示問題不只在IP路由,而是STA加入時可能重建底層網路介面,使原本的TCP監聽socket失效。
另一個現象是Concurrent Mode執行NTP UDP請求時,曾直接重新開機。反覆修正路由並不能真正解決底層模式切換問題,因此最後不再勉強共存,而是採用互斥模式。
| 架構 | 測試結果 | 決策 |
|---|---|---|
| AP固定192.168.1.1+STA | AP與分享器Gateway同網段,路由衝突 | 淘汰 |
| AP固定192.168.4.1+STA Concurrent | STA加入後Web只能短暫使用,NTP亦可能不穩 | 淘汰 |
| STA主要+AP故障備援 | STA Web、NTP、播放與統計均正常 | 採用 |
四、NTP自動校時測試成功
[STA] IP: 192.168.1.122 [STA] Gateway: 192.168.1.1 [TIME] STA connected; automatic NTP queued [NTP] Attempting UDP time sync [TIME] Synced by NTP | 2026-08-24 21:02:08 [MODE] STA online service ready
這段紀錄證明NTP不是由手機按鈕決定,而是STA取得DHCP位址後由狀態機自動排程。分享器IP仍維持原設定,故事機不會要求使用者修改Gateway。
五、手機故事控制首頁
手機與故事機連接同一部分享器後,以序列監控器顯示的STA IP進入首頁。本次測試網址為http://192.168.1.122/。這個IP由DHCP分配,實際部署時可能不同。
六、管理後台:從播放控制走向可維護系統
後台不只是遠端按鈕,而是展場維運工具:可以確認現在是否CONNECTED、時間是否來自NTP、RSSI是否足夠、各故事被播放幾次,以及播放器是否曾進行自動復原。
七、後台畫面的JavaScript除錯經驗
V1.0-09h初版曾出現:
null is not an object
(evaluating $('channel').textContent=s.staChannel||1)
原因是新版不再要求AP與STA同頻道,因此畫面移除了「頻道」欄位,但JavaScript仍更新channel元素。API其實已正常回傳,卻因前端找不到DOM元素而中斷。
八、JQ6500播放與Watchdog經驗
JQ6500的BUSY腳位實測定義為:
| BUSY | 狀態 |
|---|---|
| LOW(0) | 待機 |
| HIGH(1) | 播放中 |
故事曲目001~005採嚴格Watchdog;若沒有進入播放狀態,程式會復原播放器。但006~009屬短提示音,部分JQ6500不一定可靠回報BUSY,因此採「寬容Watchdog」:提示音未回報BUSY時只推進狀態,不再重複Pause、Reset與播放008,以免提示音造成系統鎖定。
| 檔案 | 內容 | 用途 |
|---|---|---|
| 001.mp3 | 白馬故事 | 故事 |
| 002.mp3 | 烏龜故事 | 故事 |
| 003.mp3 | 姻緣花故事 | 故事 |
| 004.mp3 | 水井三寶總故事 | 故事 |
| 005.mp3 | 創作者資訊 | 故事 |
| 006.mp3 | 開機提示 | 系統提示 |
| 007.mp3 | 準備完成 | 系統提示 |
| 008.mp3 | 錯誤提示 | 系統提示 |
| 009.mp3 | 停止提示 | 系統提示 |
九、主要接線
| HUB 8735 Ultra | 連接裝置 | 功能 |
|---|---|---|
| GPIO8/Serial2 TX | JQ6500 RX | 播放命令 |
| GPIO15/Serial2 RX | JQ6500 TX | 播放器回傳 |
| GPIO4 | JQ6500 BUSY | 播放狀態 |
| GPIO10 | 白馬按鈕→GND | 001.mp3 |
| GPIO11 | 烏龜按鈕→GND | 002.mp3 |
| GPIO12 | 姻緣花按鈕→GND | 003.mp3 |
| GPIO20 | 停止按鈕→GND | 中斷播放 |
| GPIO7 | 音量+→GND | 增加音量 |
| GPIO6 | 音量-→GND | 降低音量 |
十、測試結論
- 故事機成功連接STA並取得
192.168.1.122。 - NTP由STA連線後自動啟動並校時成功。
- 手機控制首頁可正常播放、停止、切歌及調整音量。
- 管理後台可正確顯示CONNECTED、NTP、RSSI、統計及事件。
- 實體按鈕與Web操作皆維持非阻塞。
- STA與AP互斥後,不再發生Concurrent Mode導致的Web短暫可用問題。
這次最寶貴的經驗,不是找到一個能編譯的Wi-Fi函式,而是從真實紀錄判斷:能連線不代表架構穩定;展場系統應優先選擇可預測、可復原、可維護的模式。
測試平台:HUB 8735 Ultra(RTL8735B)+JQ6500;測試日期:2026年8月24日。
沒有留言:
張貼留言