2026/08/31

多年前寫的Android App又被 Google 要求升級了!

 幾乎每隔幾年, Google Play store 都會要求更新 Android SDK 的版本. 今年要求更新到 API Level 36.



這款 Color LED Controller App 是我和我兒子多年前開發的. 主要功能是透過藍牙連線來控制 RGB LED. 目前在 Google Play 上獲得 5.0 星評分,下載次數超過 10 萬次。

用途:搭配 Arduino 或相容模組,讓手機能直接控制 LED 顏色與亮度。



特色:

支援多種 Android 裝置

簡單直覺的操作介面

適合 Maker、學生或喜歡 DIY 燈光效果的使用者

版本更新:目前已更新至 v3.4,符合 Google 最新 Android API Level 要求。

如果你有興趣的話, 我的部落格裡有完整的免費的軟硬體教學+程式碼完全公開~ 😊


硬體教學:

https://stonez56.blogspot.com/2014/09/arduino-android-led.html

手機 App 教學:

https://stonez56.blogspot.com/2015/02/arduino-project-android-control-color.html


2026/08/17

從零打造「智慧喝水管家」:ESP32-C3 硬體設計、3D 列印與全韌體開發實錄

前言:

當初想做這個專案,起因很簡單:桌上的麵包板插滿了杜邦線,像蜘蛛網一樣連接著 ESP32、感測器和螢幕。雖然功能能跑,但只要手一碰就接觸不良。如果想做成一個真正能放在桌上、每天穩定用半年的實用裝置,勢必得走過一次完整的產品化流程:從電路佈局、打樣、3D 機構整合到韌體通訊協議的選擇。

這篇文章記錄我從麵包板原型推進到完整硬體的整個過程,以及中間踩過的所有坑。

歡迎透過以下連結註冊 JLCPCB 繁體中文站並進行下單 https://jlcpcb.com/hk?from=Stonez56


一、 專案發想與健康科學背景

1.1 為什麼需要一個「智慧喝水管家」?

                 許多人日常工作中常遇到的問題是:工作一忙起來就忘記喝水,或者直到劇烈口渴才一次暴飲暴食般地灌水。在預防醫學與生理學中,大腦脫水  就會引發專注力下滑與認知下降,而人體腎臟每小時處理水分也有其上限。為了實現「少量多次」的科學補水,我需要一個能夠非侵入式感測喝水動作、定時溫和提醒、且具備超長續航力的智慧貼合裝置。


1.2 產品原型與形態演進

  • 原型階段 (Breadboard Prototype): 使用 ESP32-C3 SuperMini 開發板 + MPU6050 六軸感測器 + 0.96 吋 SSD1306 OLED 螢幕,搭上外接 TP4056 充電模組與鋰電池。
  • 痛點: 杜邦線易鬆脫、體積龐大、電源路徑衝突(拔掉 USB 就斷電,或是充電時電池過熱)。
  • 終極目標: 將所有核心元件整合進一片 的微型雙層 PCB 上,並結合 3D 列印弧形膠囊外殼與高彈性矽膠帶,輕鬆安裝於任何日常水壺上。

二、 電路原理圖與 PCB 佈局

我使用 EasyEDA Pro (嘉立創 EDA Pro) 進行設計,它可以免費使用之外, 也可以一鍵送出圖檔並下單, 完美對接 JLCPCB 的生產與 SMT 代工規範。 由於這是我第一次畫電路板, 所以錯誤很多...哈...過程中也學習了很多!

第一版的原理圖...錯誤很多~~😂


2.1 核心模組選型與 LCSC 編號綁定

為了能直接讓 JLCPCB 進行 SMT (自動貼片焊接),我們在 EasyEDA 的原理圖中,所有關鍵被動元件與主晶片均綁定了 LCSC 零件編號 (Part Number),實現一鍵報價與自動比對庫存:

零件名稱

規格與封裝

LCSC 訂購編號

設計功能與眉角

ESP32-C3 插座

1x7 2.54mm 排母 (x2)

C22550

保持 15.24 mm (600 mil) 標準跨距,方便插拔模組

充電設定電阻 (R1)

3.3k ohm ±1% (0603)

C22978

TP4056 PROG 腳電阻,設定充電電流為 364 mA,安全保護鋰電池

防倒灌二極體 (D1)

SS14 蕭特基二極體 (SMA)

C14998

低壓降 (0.2V),防止 USB 5V 與電池電壓倒灌的單向防護閘門

I2C 上拉電阻

4.7k ohm x2 (0603)

C25900

強化 SDA (GPIO9) / SCL (GPIO8) 總線訊號品質,防止螢幕黑屏

分壓檢測電阻

100k ohm ±1% (0603)

C25891

精密分壓路徑,降低微安培級靜態洩漏電流

濾波瓷片電容

100nF (0603)

C14663

並聯於 ADC 腳位與 GND 之間,吸收高頻雜訊維持電量讀數穩定

側按式輕觸開關

2-pin SMD 帶固定耳

C2906288

承受水平側按推力,連接至 GPIO1 作為選單互動鍵

電池連接插座

JST-PH-2.0mm 2P

C173752

標準化防呆插座 (Pin 1=GND, Pin 2=BAT),避免正負極接反燒毀


2.2 電源路徑管理 (Load Sharing) 的工程血淚與 AI 現實

在可攜式裝置中,電源路徑管理(Load Sharing)一直是一大難關。最初我試圖完全依賴 AI 輔助生成的電源切換電路,但在實際測試中發現:直接將 TP4056 輸出端與系統負載併聯,會導致 TP4056 無法正確判斷「充滿截止電流 (C/10)」,進而引發過熱甚至電池膨脹;當插拔 USB 瞬間,系統也會因為電壓突波而反覆重啟。

這驗證了一個事實:AI 在程式碼編寫與概念發想上非常高效,但在複雜的類比電路、電源管理與硬體細節上,目前依然無法完全取代專業工程師的經驗。(如果你有成功使用AI完成這一塊, 請和大家分享)

為了讓這個產品順利落地,我最終花了不少錢😅,在 Fiverr 上聘請了一位經驗豐富的電子工程師 (EE Freelancer) 幫我重構電源切換電路。

最終工程師協助落實了單向二極體防護與無縫切換機制

  1. 單向二極體防護: 採用 SS14 蕭特基二極體 (D1)。陽極接電池開關 (VBAT_SW),陰極接系統主電源 (V_SYS / 5V)。

  2. 無縫電源切換:

  • 插上 USB 時: 外部 5V 直接為 V_SYS 供電,使二極體反向偏壓截止,電池專心接收 TP4056 充電。

  • 拔除 USB 時: 二極體瞬間導通,電池電壓穿過 SS14 (極低壓降 0.2V) 為系統供電,ESP32-C3 不會發生重啟。

2.3 電池電量監測 (High-Impedance Voltage Divider)

為了讓 ESP32-C3 即時讀取 300mAh 鋰電池電壓:

  • 設計一組由 100k ohm 與 100k ohm 精密金屬膜電阻分壓的迴路連至 GPIO3 (ADC1_CH3)

  • 並聯一顆 100nF MLCC 陶瓷電容濾除高頻雜訊。

  • 採用 100k ohm 大阻值將靜態洩漏電流控制在 (4.2V / 200k ohm) 約等於 21uA,完全不影響睡眠續航。



2.4 PCB Layout 走線筆記

  1. 電源走線 (Power Traces):

  • 3.3V、VBAT 與 V_SYS 的走線寬度特別加粗至 0.65 mm (25 mil),確保 ESP32-C3 在 Wi-Fi/藍牙突發發射電流時不掉壓。

  1. 訊號線 (Signal Traces):

  • I2C 訊號線 (SDA/SCL) 設定為 0.2 mm (8 mil),保持等長平行,避開高頻開關電源迴路。

  1. RF 天線淨空區 (Antenna Keep-out Area):

  • ESP32-C3 板載陶瓷天線的正下方與周圍,不論 Top Layer 或 Bottom Layer 均劃定禁止鋪銅區 (Keepout Zone),禁止任何走線與銅箔,確保無線訊號穿透力。

  1. 地平面大面積鋪銅 (GND Copper Pour):

  • 上下層全板鋪銅,打上記號打孔 (Vias) 連結頂層與底層接地,減少迴路阻抗,提供良好散熱與抗干擾能力。

藍色的箭頭處即為電源走線,使用較粗的電路 0.65mm


2.5 下單 JLCPCB 與 SMT 貼片

PCB 背面


JLCPCB 可即時看到 PCB 的排列(layout)線路

在 EasyEDA Pro 中完成所有設計後:

  1. DRC (Design Rule Check) 點檢: 執行系統 DRC,確保最小線寬/線距符合 JLCPCB 的製造規範 (> 6 mil),且無未連線網路。

  2. 導出 Gerber 與 BOM/CPL 檔案:

  • 快捷鍵 Shift + M 一鍵導出 Gerber 壓縮檔。

  • 導出 BOM (物料清單) 與 CPL (組裝座標檔/Pick and Place)。

  1. JLCPCB 官網一鍵下單:

  • 上傳 Gerber 檔,選定 紫色經典黑 高質感 PCB 板色。

  • 勾選 SMT Assembly,上傳 BOM 與 CPL 檔。

  • 系統會自動比對 LCSC 零件庫存,連 0603 被動元件與 JST 端子都能精準對位,預覽 SMT 貼片成果! (有機會一定要試試看...太方便了)


三、 避坑血淚史:PCB 除錯

在研發過程中,我們並非一帆風順。以下記錄幾次關鍵的「踩坑與復盤」:

請高手幫我檢查, 並以跳線方式讓PCB通電

  1. 最重大的錯誤: ESP32-C3 根本就放反了~~ 5V, GND, 3V3 是在對面啦... .OMG?!🥲

  2. D1 二極體極性顛倒地雷:

  • 錯誤: 初版將 SS14 的陰極對準了電池端,導致 USB 輸入的 5V 電壓無法通過二極體進入 V_SYS,開機瞬間系統直接死鎖。

  • 解法: 在原理圖中確認箭頭指向 V_SYS,讓 USB 電壓順利進入系統,同時阻斷電池電流逆流。

  1. 3D 模型的「航空母艦」縮放危機:

  • 錯誤: 嘗試更換 5mm 矮排母時,在 3D 管理器中輸入高度,軟體因預設開啟「等比例縮放 (Uniform Scaling)」,導致整顆排母膨脹成覆蓋全板的「航空母艦」。

  • 解法: 手動解開 X/Y/Z 軸連動鎖定,獨立輸入 Z 軸尺寸。


四、 3D 機構設計與 3D 列印實戰

4.1 從 3D Preview 到 STEP 骨架導出

在 EasyEDA Pro 中完成 PCB 佈局後,點擊「文件 -> 匯出 -> 3D 模型 (STEP)」。我們將獲得一個包含所有元件真實尺寸的 3D STEP 檔案,並直接匯入 Fusion 中進行外殼建模。


把 STEP 檔在 Fusion 裡開啟



4.2 貼合曲面膠囊外殼與機構細節

  1. 外殼造型: 採用背弧化膠囊設計,完美貼合直徑 60-85 mm 的圓柱形水壺。

  2. 避讓公差:

  • Type-C 充電口開孔預留 1.2 mm 的插頭外殼沉頭空間,防止因壁厚過厚導致 USB 線無法插到底。

  • OLED 螢幕開孔留有 0.5 mm 微小間隙,並搭配 1.2 mm 厚度的亞克力透明面板防塵。

  1. 高彈性矽膠帶固定: 外殼上的細長溝糟帶,搭配高彈性矽膠束帶或是髮帶,可快速拆卸轉移至不同水壺上。

上下蓋合體

底蓋上視圖
AI 建議後面加兩條肋, 可以讓裝置在圓的水壼的表面維持水平
真的有效呢!


3D 最終完成圖檔




五、 韌體開發與系統架構 (Firmware Development)

我們的韌體採用 Arduino IDE / ESP-IDF 開發,結合了語音/視覺互動與極低功耗機制。

5.1 MPU6050 姿態辨識與 EMA 濾波

為了辨識使用者是「拿起水壺喝水」還是「攜帶水壺走路晃動」,我們導入了指數移動平均濾波 (EMA Filter)向量內積角度演算法

EMA_t = alpha * X_t + (1 - alpha) * EMA_(t-1)


  • 透過計算重力加速度向量與水壺中心軸的夾角,精準判定仰角 > 35度 且持續超過 1.5秒 的動作為有效「飲水行為」。


裝置上的 OLED 顯示出不同時期及表情, 快速知道喝水狀態~

很棒...有持續喝水的好習慣~


嗯..目前有點缺水了, 快點喝一口水

喔...太缺水了, 快點補充水份吧~


5.2 狀態機與 Deep Sleep 低功耗架構

為了讓 300mAh 鋰電池能維持長效續航,系統實作了狀態機管理



  1. Deep Sleep 進入條件: 無動作超過 10 秒後,ESP32-C3 關閉 OLED 電源,進入 Deep Sleep,靜態電流降至約 5uA。

  2. Wake-on-Motion (WoM) 喚醒: MPU6050 保持低功耗加速度監測,當偵測到震動時,INT 中斷腳(連至 ESP32-C3 GPIO0/D0)拉低電位,瞬間喚醒主控。

5.3 離線與 Wi-Fi/NTP 時間同步雙重機制

  • 配網介面: 開機後啟動 SoftAP 模式提供網頁配網。

  • Dual-Bypass 容錯: 若無 Wi-Fi 訊號,使用者可點擊網頁「Cancel」或長按實體按鈕跳過配網。系統自動切換至內建 millis() 計算的「累積運作計時器」,維持計時與飲水提醒功能不中斷~


內建兩組記憶 WiFi Hotspot 方便連線



六、 成品展示與 JLCPCB 打樣體驗總結

6.1 最終成品寫真

經過近四個月的研發,這款「智慧喝水管家」最終呈現在我們眼前:

  • 體積輕薄: 雙層板卡結合 3D 列印外殼,總厚度僅 18 mm。

  • 質感優雅: 3D 列印加上高質感紫色 PCB,搭配高對比 OLED 顯示畫面,徹底甩開了傳統創客套件「裸露麵包板與杜邦線」的廉價感。


6.2 JLCPCB 服務評測心得

  1. 極致性價比: 打樣 5 片高品質 PCB 僅需數美元,SMT 貼片服務更是大幅減少了手工焊接 0603 貼片零件的崩潰感。

  2. EasyEDA Pro 無縫整合: 從設計、查看 3D 模型,到直接匯出下單,流程極其順暢。

  3. 交期迅速: 從上傳 Gerber 檔到拿到實體打樣板,僅需短短數個工作天,這對於需要快速迭代的 Maker 專案來說是無可替代的優勢!

結語

從原理圖的一條線,到拿在手上沉甸甸、能精準提醒喝水的智慧產品,這次與 JLCPCB 合作的專案經驗讓我深刻體會到「把想法實體化」的無限魅力。如果你也正在規劃自己的下一個物聯網專案,不妨打開 EasyEDA,讓 JLCPCB 幫你把心中的藍圖變成真實的硬體吧! 歡迎透過以下連結註冊 JLCPCB 繁體中文站並進行下單 https://jlcpcb.com/hk?from=Stonez56



**版權所有,未經授權禁止轉載、改作或商用**

2026/08/14

基隆海洋大學 - AI 應用:辦公行政自動化 課程

謝謝 茶米老師教室 黃信溢老師推薦!👍 讓我有機會在 8/11 與 8/13,來到 國立海洋大學 連續兩場分享「AI 應用:辦公行政自動化」,兩場總計超過 300 位師生參與,這是我第一次在如此大型的場合教授 AI 課程,場面既震撼又令人振奮!







特別的是,大多數學員使用的是 智慧型手機而非筆電。這讓我臨場調整教學方式,不再要求大家逐步操作,而是由我在舞台上直接 示範 Gemini 的各種案例,包括:

🔹 生成式 AI 概念
🔹 提示詞 RTF 框架:角色,任務,格式三步驟,讓 AI 輸出更精準
🔹 Canvas 共筆:從單向問答邁向深度協作,快速生計畫書
🔹 快速製作網頁/資訊圖表
🔹 使用 🌈Stonez56 色彩探索家 快速給網頁專頁的配色
🔹 GEMs 與 RAG 知識庫:打造校務百問助理,強化行政決策
🔹 會議錄音摘要自動化:逐字稿秒轉待辦清單,提升效率

雖然學員無法即時操作,但透過舞台上的 即時 Demo,大家仍能清楚看到 AI 如何將行政流程「從模糊到精準、從手動到自動」。課堂中顯示 AI 工具的魅力與實用性。

這次經驗讓我深刻體會:只要教學設計靈活,AI 課程不受設備限制,依然能帶來震撼與啟發。未來我也會持續優化,讓更多人能在不同場域中感受 AI 的力量。

如果您對這門課程或相關AI應用培訓有興趣,歡迎直接聯絡我😊

#AI行政自動化 #GoogleGemini #智慧校園 #Stonez56創客工坊 #Stonez56 #Gemini #AI教學