2026年8月24日 星期一

長按進入AP+自動重啟+網路診斷:展場維護版實測成功

水井三寶故事機|V1.0-10

長按進入AP+自動重啟+網路診斷:展場維護版實測成功

這一版讓 HUB 8735 Ultra 故事機即使沒有電腦、沒有 Arduino IDE,也能透過一顆實體停止按鈕完成網路救援。短按用來停止播放;長按5秒進入AP設定;長按10秒則清除舊Wi-Fi、自動重新啟動並開放備援設定入口。

5秒進入AP設定
10秒清除STA設定
自動重新啟動
192.168.4.1備援入口

一、為什麼需要V1.0-10?

故事機進入展場、社區或教學現場後,最大的維護問題往往不是故事能不能播放,而是現場Wi-Fi環境改變時,設備要如何重新設定。如果每次都要接上電腦、重新編譯並燒錄程式,維護成本會非常高。

因此,V1.0-10將原本的GPIO20停止按鈕擴充成「維護入口」,保留日常操作,同時提供不需電腦的網路救援功能。

設計原則

  • STA為主要連線:平時連接現場分享器並由DHCP取得IP。
  • AP為故障備援:只有STA設定不存在、連線失敗或使用者主動要求時才啟動。
  • 按鈕優先:Web、網路校時與播放程序都不能阻塞實體按鈕掃描。
  • 可現場復原:不連電腦也能清除舊Wi-Fi並重新設定。

二、GPIO20一顆按鈕,三種操作

操作方式系統動作使用情境
短按GPIO20立即停止目前播放一般使用
長按5~9秒後放開切換至AP設定模式臨時開啟維護入口,但保留原STA資料
長按10秒以上後放開清除STA的SSID、密碼與頻道,寫入Flash後自動重啟更換分享器、密碼錯誤或完全無法連線
關鍵設計:系統在「放開按鈕」時才決定執行5秒或10秒功能。如此一來,使用者長按超過5秒後仍可繼續按到10秒,不會在第5秒就被迫切換模式。

三、這次除錯最重要的發現

第一次測試時,按住停止按鈕只看到:

[BUTTON] Pressed GPIO20
[STOP] Ignored: already idle

當時容易懷疑GPIO20接線、按鈕彈跳或長按計時程式有問題。但進一步檢查開機標題後,發現設備實際執行的仍是:

HUB 8735 Ultra + JQ6500 Story Player V1.0-09h
STA Primary + AP Fallback Configuration Portal

也就是說,硬體沒有故障,真正原因是板子仍在執行舊版韌體。重新燒錄V1.0-10後,開機標題正確顯示:

HUB 8735 Ultra + JQ6500 Story Player V1.0-10
Long-Press AP + Auto Restart + Network Diagnostics
經驗結論:測試新功能前,第一步不是先拆接線,而是先核對序列監控視窗中的版本標題。這個小動作可以節省大量除錯時間。

四、如何確認長按真的被持續掃描?

管理後台開啟測試模式後,序列監控會定期顯示六顆按鈕的原始電位:

[BUTTON RAW] G10=1 G11=1 G12=1 G20=1 G7=1 G6=1

GPIO按鈕採用上拉輸入並接到GND,因此:

數值按鈕狀態
1未按下
0已按下

實測長按期間,GPIO20持續保持為0:

[BUTTON RAW] G10=1 G11=1 G12=1 G20=0 G7=1 G6=1
[BUTTON] Stop held 5s: release to enter AP setup mode
[BUTTON RAW] G10=1 G11=1 G12=1 G20=0 G7=1 G6=1
[BUTTON] Stop held 10s: release to clear Wi-Fi and restart

這證明按鈕、接線、上拉邏輯與非阻塞掃描均正常,主迴圈沒有因STA、NTP、Web或音訊狀態機而停止更新。

五、10秒清除Wi-Fi的完整實測流程

GPIO20
持續按住10秒
放開後
清除STA資料並存入Flash
自動重啟
開放AP備援入口

放開按鈕後,系統依序完成:

[MAINTENANCE] Clearing STA credentials
[FLASH] Batch saved: STA credentials cleared
[SYSTEM] Restart scheduled: STA credentials cleared
[SYSTEM] Restarting: STA credentials cleared

重新啟動後,Flash資料區仍可正常讀取音量、開機次數與統計資料,但STA憑證已被清除:

[FLASH] Volume = 16
[FLASH] Boot count = 48
[STA CONFIG] Not configured
[STA CONFIG] Missing; AP fallback queued

這也驗證了程式並非清空整個Flash,而是只清除指定的STA網路設定。

六、重新啟動後自動進入AP備援

系統完成開機語音006、準備完成語音007及JQ6500狀態判定後,自動啟動純AP模式:

[AP] Starting pure fallback AP mode
[AP NET] IP: 192.168.4.1
[AP NET] DHCP: 192.168.4.x
[AP NET] Configuration OK
[AP] SSID: Shuijing-Story
[WEB] http://192.168.4.1
[ADMIN] http://192.168.4.1/admin
[MODE] AP fallback configuration portal

手機維護資訊

AP名稱Shuijing-Story
AP密碼shuijing8735
故事控制首頁http://192.168.4.1/
管理後台http://192.168.4.1/admin
管理PIN8735

七、展場人員的標準維護程序

  1. 確認故事機已正常供電,避免使用供電不穩定的PC USB孔。
  2. 按住停止按鈕至少10秒,看到燈號快速同步閃爍後再放開。
  3. 等待設備自動重新啟動。
  4. 手機連上 Shuijing-Story
  5. 在瀏覽器輸入 http://192.168.4.1/admin
  6. 輸入管理PIN,重新設定現場分享器的SSID、密碼與頻道。
  7. 儲存後等待設備自動重啟,再由分享器查詢故事機取得的新STA IP。

八、V1.0-10完成的展場可靠性

項目實測結果
實體故事按鈕正常
Web故事控制正常
GPIO20短按停止正常
GPIO20長按5秒可辨識AP維護動作
GPIO20長按10秒可清除STA設定
Flash延遲保存正常,其他統計資料保留
自動重新啟動正常
純AP備援正常,固定為192.168.4.1
STA主要連線與NTP有憑證時自動連線與校時

九、這次測試留下的寶貴經驗

  • 先看韌體版本,再查硬體:序列監控的版本標題是除錯起點。
  • 原始GPIO紀錄很重要:[BUTTON RAW]能區分接線問題與程式狀態問題。
  • 長按功能要在放開時決策:才能同時支援5秒與10秒兩種命令。
  • 網路程序必須非阻塞:即使STA連線、NTP校時或無手機連入,按鈕仍應持續掃描。
  • STA與AP不要勉強同時運作:RTL8735B在本案採「STA主要、AP故障備援」比並行模式穩定。
  • Flash只清必要欄位:清除網路憑證時仍保留音量、開機次數及故事統計。
  • 穩定供電是系統的一部分:改用可靠市電電源後,可避免USB供電不足造成反覆重置與開機語音重播。

測試平台:HUB 8735 Ultra(RTL8735B)+JQ6500|韌體版本:V1.0-10|測試日期:2026年8月24日

沒有留言:

張貼留言