DIY 開源智能手錶(選螢幕篇)
最近因為各種原因想買一只智能(慧)手錶,可是由於我只喜歡方形的,所以剩下的選擇大概只有智慧手環、大號智慧手環跟 Apple Watch 可以選了。嘛,其實除了這些還有其他的啦,然而市場上就一堆很奇怪的選擇都沒一個完全對得上我想要的東西。 小米手環 8 Pro / 華為手環 8 :性價比跟功能都不錯,可是螢幕是像一般手環般長方形的不是方形Venu Sq 2:功能超棒,但是這個配色的品味只能說很獨特(?Fitbit (Google 旗下)Versa 4:這外形和黑邊遠看還以為是玩具Apple Watch SE:功能和外形都很棒,就是只支持 iOS 跟需要每天一充 說實話我覺得最好看的設計一定是屬於 Sony 的 Smartwatch 3 了。如果把這個設計換上最新的 AMOLED 螢幕和把那個用久了會黏手的 rubber wrist band 換成其他材質(如 silicon / TPU)就更完美了。 所以作為一個 DIY 愛好者,很自然的我會去想:假設我要自己做一只智能手錶的話,我會怎樣設計呢?首先,我想到的大概是以下的一些技術規格: 基於 ESP32 C3 的方案(在寫本文的時候最新支援 BLE + WiFi 的 MCU)AMOLED 螢幕 + 環境光傳感器(自動亮度調整)內置基本的傳感器(光學心跳 + 血氧、accelerometer(步數)、gyroscope(移動距離),如果有空位的話可以再塞個地磁 sensor 做指南針之類的) 然而有一些我也很想做的部分,是現在很多便宜的智能手錶沒有的 無線充電(對,現在很多大號手環還是在用磁石彈針來充電)Cloud First 資料傳輸(就是以 WiFi 為先,資料先到伺服器再同步到其他手機和裝置,有點像 ArozOS 的設計邏輯)開源、可由使用者自行編程(基於 ESP32 Arduino 內核 + LVGL?) 螢幕選擇 要做到上面的東西其實不難,最難的部分應該說是螢幕。螢幕這東西不像 電路板 可以隨便畫一畫送出去就能做,而是需要很大量的定制才會有這樣的產品。所以在設計這只手錶的電路板之前,就要先決定好手錶的外殼大小,而外殼大小就是取決於螢幕大小。 我覺得我也不是第一個遇到這樣困難的開發者。例如說著名的 Pebble 智能手錶之所以是長這樣是完全因為生產它的公司被 Sharp 生產的 Memory LCD display (1.33 inch)所限制,所以只能夠圍繞著這個當時唯一一片 high refresh rate 又省電的黑白螢幕來開發整個產品。 初代 Pebble 智能手錶 SHARP 1.33 inch Memory LCD display 雖然說現在很多智能手錶的出現而讓市場上多了很多 1.3 - 1.9 寸的螢幕,但是這又產生出另一堆問題: 便宜的智能手錶很多時候都會使用 TFT (IPS)螢幕大部分現有的 AMOLED 螢幕都是圓的很多做螢幕的廠商都只做螢幕、做電容觸控層的都只做觸控層、要找到非現有產品在用的螢幕總成很困難 單單是後兩個問題就把我能選擇的螢幕大小限制住了。把圓的 AMOLED 跟沒有觸控的去除掉之後,剩下的就只有 1.69 inch ,在開源 smartwatch project 很常見到的 waveshare 模組以外就差不多沒其他選擇了。 不過不得不說,這 1.69 雖然在黑色背景的畫面下看上去還不錯,但是一但亮起來你就會發現它黑邊粗得要死,還要上下闊度不同!(噴血 AMOLED 螢幕最佳選 然後就到這個,這是我在某中國的螢幕供應商那邊看到這片要價快 6 美元的 1.78 寸 AMOLED 螢幕,368 * 448 pixel https://www.dwo.net.cn/pd.jsp?id=11921 這個數字是不是有點眼熟,沒錯,這就是 Apple Watch SE 44mm 在用的那一片螢幕( 上下黑邊總於是一樣的了 只是說這片螢幕要用 ESP32 驅動會有點小問題:這東西只支援 SPI、QSPI 跟 MIPI DSI。MIPI DSI 先不用說了(這東西要用 arm 處理器才推得動),剩下的只有 SPI 跟 QSPI 能用。SPI 的問題在於即使是 ESP32 用 SPI half_speed (最高 80Mhz,但是考慮到 FreeRTOS 後面還有其他東西要跑,先把一半的 CPU cycle 預留給其他 vTasks 好了)速度來驅動它,你還是會看到動畫像 ppt 一樣(我猜的),但是我把計算資料塞給 chatGPT 後它也告訴我大概只能跑到 15.16 FPS,所以應該是肉眼可見的卡(? 這樣我就剩下 QSPI 可以選擇了。QSPI 大概就是拿四個針腳來推資料,理論上應該會快上不少。ChatGPT 說大概能推到 60fps,但是我先保守估計抓個 30…