2023年12月31日 星期日

控制 TOTO 免治便座


老家新裝的免治馬桶座是用紅外線遙控的, 結果遙控器失效, 但沒死透(?)
給它加電流還是有一定的機率可以復活, 於是把它 "激活" 以後擷取數據
依數據重作一個發信器, 重新取得馬桶控制權

老爸說遙控器裝電池按了沒反應, 我拿來看了一下, 發現電池漏液, 清理了一下接點, 一開始可以開機
但一下子就斷電, 螢幕內容消失, 我就拿可調電源給它灌進去, 結果可以開

這個遙控器內建一個繪圖型 LCD, 可以繪製多國語言界面, 不知道把一個遙控器搞這麼騷幹麻XD
我沒注意最高電流是多少, 只看到有一次跳到 200 多 mA, 之後就沒看到了, 懷疑有短路
可能把短路的零件給燒斷了, 給可調電源幹過以後每次都能開機
遙控器正面有一排電容式觸摸按鈕, 那些按鈕有時有效, 有時無效, 應該是那裡有故障
背面的 LCD 螢幕和微動開關則正常, 每次插電後都可以操作, 接著我搞一個簡易電源

這也是可調電源, 最高 12V, 這是直流風扇用的, 透過調整電壓改變風速
這很便宜, 但由於沒有顯示電壓, 使用前用電錶量一下再插上, 麻煩了點

之後就用這樣蒐集數據, 用 WT-25 蒐集, 然後拿別的計畫用的板子 WT-27 改一個遙控器
原遙控器是一個類似 NEC CIR 協議的設備, 但修改了一下, 一樣是 38K 載波
發載波時為固定長度, 無載波時間隔長的為 1 短的為 0, 然後總資料量為 39 bits
注意, 39 個, 不能多也不能少, 不是 8 的倍數, 所以程式要算送了幾個, 不能只看 byte
正面電容觸摸按鈕發送內容如下

1:
02 88 aa 2d 07
02 88 aa 2d 07
02 88 aa 2d 07
02 08 00 00 00
02 08 00 00 00
02 08 00 00 00

2:
02 08 9a 80 1a
02 08 9a 80 1a

3:
02 08 9a 8a 10
02 08 9a 8a 10

4:
02 08 1a 01 1b
02 08 1a 01 1b

5:
02 08 9a c4 5e
02 08 9a c4 5e

6:
02 08 00 03 03
02 08 00 03 03
02 08 00 03 03
02 08 00 04 04
02 08 00 04 04
02 08 00 04 04

7:
02 08 80 83 03
02 08 80 83 03

8:
02 08 00 44 44
02 08 00 44 44

-~+
02 08 01 02 03
02 88 01 82 03
02 08 02 02 00
02 88 02 82 00
02 08 03 02 01

上~下
02 08 a8 82 2a
02 08 a0 82 22
02 08 98 82 1a
02 08 90 82 12
02 08 88 82 0a

接著發放源碼和線路圖, 源碼:wt-27-toto.zip 線路:wt-27_cir.pdf

有做 Uart Loader, 可透過 uart 更新韌體, 玩法和前篇 在 ubuntu 上開發 nuvoton Mini58 相同
但 config 有點不同, 這裡就只記錄命令, 不再重複說明
操作命令:

make uart-loader
make

sudo ./bin/openocd -f interface/stlink-v2.cfg -f target/numicro.cfg -s share/openocd/scripts

$ telnet localhost 4444
> reset init
> numicro chip_erase
> numicro write_isp 0x300000 0xFFFFFF3F
> flash write_image erase toto-cir_uart-loader.bin 0x100000
> reset

gcc update.c -o update
./update /dev/ttyUSB0 toto-cir.bin

第一次刷韌體一定可以成功, 但第二次開始就要注意, 因為 MCU 會休眠, 休眠後不會收 uart
可以做成休眠也能收但怕遇到干擾時一直醒來浪費電, 所以沒有這樣做, 若要刷機需斷電重開
或是按下任意按鈕喚醒後再下命令刷
裝起來的樣子:

這板子上有非常多東西, 所以電路圖是等效電路, 不是實際內容
這 MCU 是新唐的超低功耗系列, 第一次使用這類 MCU, 正好用這專案簡化環境方便除錯
這系列 MCU 對標 STM32L0 系列, 這兩家各有特色, 目前比出來的是這樣:
先說結論, 我個人的操作感覺是新唐的比 STM32L0 好的多
新唐比 STM32L0 的麻煩點是必須盤點所有接腳, 沒用到的以及封裝沒引出的必須設為輸入並拉高
或是設為輸出然後拉低, 注意是包含 "封裝沒引出的", 這容易漏掉, STM32L0 沒有這問題
而新唐和 STM32L0 共通的部份是 Cortex M0 的省電配置都一樣, 畢竟核心是一樣的
同樣都是 M0 該配置的都要配置才會進省電模式, 這沒得比, 都一樣
深度休眠後都可以透過硬體事件喚醒, 不過條件可能有些不同, 事件就是像是 uart 有資料進來這樣
而新唐比 STM32L0 好的地方就多了, 首先 STM32L0 GPIO 喚醒只有 3 隻腳可以用
接腳數少的封裝甚至只有 2 隻, 只有很少的腳可以在深度休眠狀態透過改電壓喚醒
而新唐的 "每一隻腳都可以配置成深度喚醒", 對於需要比較多外部按鈕的情境會好用得多
STM32L0 要到極致省電需要配置很多東西, 要配置電壓還有運轉速度
新唐的只要兩個 bit 設下去, 可謂 "一鍵省電" XD
然後還有一個, 也是我認為差最大的, 就是 STM32L0 睡眠後記憶體也停掉, 喚醒等同重開機
雖然很多文件都說 STM32L0 可以配置成記憶體保留, 但我試不出來
STM32L1 則有明確的 bit 配置保留記憶體, 不過我沒有那系列 MCU 沒法測
所以如果用戶的應用需要保存狀態, 必須自己想辦法節錄重要的資料塞進 RTC 那幾十個 byte 裡
相當麻煩, 而新唐的進入休眠時記憶體是維持運作的不會掉資料, 喚醒時會從休眠時那裡繼續執行
這讓程式開發變得輕鬆很多!而且省電後功耗完全不輸 STM32L0, 如下圖:

只有 1.1uA, 超級省



完成後和原機相比:

外型土砲, 但有功能, 而且可以維修
我給老爸看電路板腐蝕的位置, 老爸說可能是清掃廁所時噴水噴到的
為什麼要花時間自己搞一個看起來更破的呢? 原因有二, 一是剛好手邊有低功耗 MCU 計畫
二是......這遙控器網上一隻報價 3800 元! 夭壽貴!
但是拆解以後看了內容, 又...好像沒有很離譜, 只是這麼貴的一台放廁所的遙控器卻沒做防水
不知道原廠是什麼心態, 我覺得就算花錢買了也不能解決問題, 因為還是會進水, 還是要換
還不如用自己的材料, 這個就算單獨開張電路板也不用 3800, 只是要研發費用XD

我先用 WT-25 讀出資料, 然後做好 "產品" 寄回家, 結果老爸說按了沒反應
只好帶電腦和開發工具回家現場測試, 這個叫 onsite support, 一般是出問題被抓去罰站
客戶會氣噗噗的在現場等廠商出面, 然後開始靠北XD

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。