2014年6月19日 星期四

自製退伍計時器

這個計畫早在去年就已經開始
不過做了半成品後就放著了, 直到今年...


抽中了!XD
我又可以進去算日子了 (雖然只有 5 天XD)
所以馬上又把計畫重啟並完成

這是基於前篇 自製 MP3 播放機 的製品
以該篇文的 WT-09 為基礎持續發展
並加上一些修改, 終於完成這套系統
主要元件長這樣:

紅色板是鋰電池升壓到 5V 的 DC-to-DC 升壓模組
上方寫有 mini_RTC 的是 DS1307 模組板, 用來計算並儲存時間
最右側連接四條線的小板是 SHT-1X 溫濕度感測器, 瑞士製造的高級品
中間黏在 WT-09 上, 也是四條線接上的模組是 GY-80 感測器模組
用來量測加速度, 電子羅盤, 陀螺儀, 以及大氣壓力, 用於四槳直昇機的感測模組

全部的架構圖是這樣的 :

除了最右邊四個方塊外剩下都是 WT-09 上的元件
D-filp-flop 已移除, 把短路電阻接上, 改為 AVR 接腳直接控制
發現組合 byte 並控制 CS 會導致效能低下, 運算式太長
改成直控以後就可以播 320kbps 的 MP3, 任何 MP3 都能解
組這板時有進一些新貨, 順便進幾顆 VS1053, 想試試高串流到底能多少
組了這片 :

前篇說 VS1003 要割銅箔, 試著上了 VS1053, 把 2.5V 穩壓換成 1.8V, 結果不用割
看來原本抄來的線路確實是給 VS1053 用的
不過上了 VS1053 還是沒法解 flac, 蠻複雜的, 要放韌體到 DSP 上
怎麼試也試不出來, 只好先丟著了, 果然很難搞, 反正 320kbps 能解了, 這不急

本來想用 3D 印表機印個殼, 結果偏偏在此時又有零件壞了, 目前維修中
只好換方法做外殼, 找來這個:

這是家裡電線插座沒用時在蓋的保護殼XD
用塑鋼補土 (也就是環氧樹脂補土條) 捏出固定底座黏上去

然後板子放進去, 加上開關以及固定螺帽, 接好電線以及鋰電池接點
鋰電池接點用細黃銅線製作, 先黏好補土, 再鑽孔把折好的黃銅線塞進去
然後再把它們用補土固定起來

鋰電池可換, 是舊 Nokia 手機在用的, 目前廣泛的被對岸拿去用在隨身播放機上
選這種超通用規格以後才不會找不到替換料

背面的樣子

中間的孔是耳機, 這是本機唯一的輸出孔, 沒有充電 USB, 也沒有 SD 卡槽
要換電池和 SD 卡要把面板拆下才行

正面的樣子 :

由於製作時間緊迫, 用改造板做的, 然後塗上模型漆, 2014 年那裡沒塗好, 搞砸了
教召完後被染上百元鈔票的紅點, 這些都是以後需要改進的

本機的韌體原始碼附上:

mcounter.zip

GPL 協議 !

製作心得:
DS1307 模組蠻糟糕的, 時間很不準, 一天就能差個幾秒鐘
主要問題在振盪器, 該公司有生產另一顆 DS3231
那顆內建晶振並含溫度補償, 如果有改版下次一定上那顆
一顆 IC 加上週邊一點料而已, 設計簡單, 而且軟體和 DS1307 相容
DS1307 是吃 5V 電源的, 我的 3V 系統一開始完全讀不到, 後來才發現問題
接上 5V 若要和 3V 系統連接需把 i2c 上拉電阻拔掉, 如下圖紅框處

因為我的 i2c bus 上接了一堆 3V 感測器
不這樣會弄壞我的感測器
這顆 RTC 只要超過 3V 就會識別為高電位
所以雖是 5V 電源, 拉高電阻只拉到 3V 還是能動

溫濕度感測器採用瑞士製造的 SHT-1X, 這顆反應速度不錯, 開個口就能量測
這顆挺棒的, 下次若改版會沿用

以上兩料操作方式很簡單, 就不再多做敘述, 有興趣可參考源碼的 sensor.c 那隻檔
GY-80 感測器模組比較複雜, 另開一篇介紹內容, 放這裡:
讀取 GY-80 模組:加速度計(ADXL345) 陀螺儀(L3G4200) 電子羅盤(HMC5883) 氣壓計(BMP085)
若要改版暫時先不換料, 最近還沒看到更好的方案, 最想換掉的是那顆陀螺儀, 怪怪的

這套系統經過測試, Nokia 1250mAh 電池充到滿拿去播 MP3
每個檔案幾乎都是 225kbps VBR 的 MP3, 可持續播放 12 小時, 十分給力

以下為各界面介紹

一開機是這, 就只是一個時鐘


可以設定時間


按一下功能鍵可顯示離退伍剩多久

倒數時間接近 9999 小時會自動換成以天數計算
超過 9999 天則停在 9999 天, 不過如果超過 9999 天建議還是別算了XD

退伍時間可設定, 設定後會依這去算, 這時間存在 AVR 內建的 EEPROM 裡



如果只是打開開關, 就只會有上面兩功能
要開進階選單需要按 "密技"XD
按法自行研究源碼, 這裡不解釋XD
進入後顯示功能表


指北針顯示目前方位

在基地迷路時或許能用XD

陀螺儀也是方位, 只是基於指定方向來計算, 詳細請參考前篇


溫濕度計, 也就是瑞士那顆, 自動計算危險係數

最近濕度高, 幾乎都在 35-40 之間, 還好我不是新兵XD

加速度計

這個目前只隨便顯示, 若有下次改版考慮改為水平儀

氣壓計

可記憶當前氣壓, 移動後計算和記憶地點的氣壓差多少, 然後顯示高度差

另外還提供標準資料來計算, 通常海平面氣壓會以 1013 hPa 作為基準
按個按鈕會出現 Std 圖示表示以 1013 hPa 為基準計算


最後是寫超久的 MP3 播放機能 !!

列出檔案, 標示 D 的是目錄, 點選會進目錄

標示 M 的是可播放的 MP3 檔, 目前只顯示 FAT32 的 11-byte 短檔名
不要解中文檔名了, 寫到這裡 32K 程式空間又吃到 90% 了, 不能再塞了XD
點選後播放, 螢幕清空, 晚上偷聽時不用擔心螢幕過亮
播完一首自動找下一首, 看到目錄就自動鑽進去, 全部播完自動再從根目錄找第一首播

這次的程式算多的了, 畢業後很少寫這麼多的程式
32K 用 USBASP 燒錄要 19 秒, 加上 6-10 秒驗證, 實在有久
所以要清楚架構, 想清楚再改, 不要改了一點試試看這樣, 這樣燒寫很容易失去耐性
這貨雖然還有些缺點, 不過已經是完整可用的裝置了, 這個專案可以完全關閉了
除非有想到要改版才會重做, 接下來可以開始想新玩具要玩啥

沒有留言:

張貼留言

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