電子價簽墨水屏折騰記


先放上源碼https://github.com/muyuchl/epaper_price_tag_mod
由於是東拼西湊的,請不要要求太多。

 

一切要從某魚說起。平時會在某魚搜索開發板之類的,突然有一天被推薦了電子價簽這東西。
看着價格也不貴,10元以內就有墨水屏,電池,光拆下來就值這錢了。於是上網搜資料,
結果只有在某莫論壇上有看到。點注冊,居然要八十大洋!還好能下載到帖子里發的附件。看
着挺好玩的,一時沖動就買了10個紅黑屏的來玩。為什么買這么多?因為10個包郵。

一開始沒仔細看,原來紅黑屏用的是CC2640單片機,而黑白屏使用的是MSP430,430的
能下到測試代碼。只好重新買了黑白屏的,看原論壇里說的5元就買到,現在漲價了。還得要
下載器,於是搞了塊二手的430 launchpad。

到手后,編譯,下載測試程序,屏上出現了圖片,比較順利。墨水屏拿掉電池還能保持顯示很多天(
據說有半年)。想起10年花大錢買了9.8寸Kindle后開箱時第一次看到時的情景,和紙真的很像。


廢話少說,開始學習。雖然讀書時就久仰MSP430大名,卻無緣(錢)接觸到,今天終於可以玩一玩了。
找文章看,找電子書看,結果發現還沒有某個網頁教程實用(https://www.embeddedrelated.com/showarticle/179.php)。
有51單片機基礎的理解起來還是容易的。

電子價簽里用的是A7106這個2.4G無線芯片,如果用無線來更新圖像比編譯下載會方便多了。結果這個資料比較難找,官方網站上居然有沒下載,只寫着請聯系銷售人員。
怪不得知名度和nrf2401沒法比。在某魚上只看到一兩個賣家在賣模塊,10元一個,比價簽都貴了。又看到有人在問A7106和
A7105的區別。我簡單比較了A7105和A7106的區別,發現A7106就是多了個寄存器,猜測程序應該兼容(后來也證實基本兼容)。
上網搜A7105,這個賣家就多了很多,發現很多是當做遙控器的。下單買了5個拆機模塊(為了包郵,唉,省錢小王子),再說了,
以后給女兒改玩具遙控或許用得上(之前買了好多個nrf模塊也是這樣想的,結果測了一下通信就放一邊了)。

拆機模塊到手后,發現排針是剪腳的,間距也不是常見的2.54,GIO2也沒有引出。用電烙鐵拆了一上午才拆掉兩個,再焊上線。

手頭剛好有兩塊stm32f103 (老外起了個外號Blue pill,萬能的某寶少於10元就能買到),就想着先在STM32上調通無線通信。理想總是美好的,搞了一下午,結果連個SPI都沒通信成功,讀回的要么全0,
要么全1。附上網上的打滑詩一首:鋤禾日當午,不如碼農苦,桌前調代碼,一調一下午。不知道原因了,可能拆管腳時燙壞了,
可能自己沒焊好。

放棄拆機A7105,從某寶下單新的A7105模塊。

重新學習了A7105的參考代碼,然后移植到STM32上,跳頻什么的聽上去太高級,我就偷懶固定一個頻率。這次調試用上了20幾元買的邏輯分析儀,杜邦線接線看上去太亂了,好在出來的波形正常,可以順利讀到寫入的ID。證明SPI通信沒問題!接下來開始調兩個STM32無線通信,經過辛酸的不停嘗試,終於實現一收一發。

兩個STM32無線通信正常后,我又用STM32和Launchpad上的MSP430進行無線通信,又是一番折騰。然后把launchpad上的代碼移植到價簽上,這回比較順利,說明A7105和A7106基本兼容。為什么要加個“基本”,因為我也不知道哪些有不同的,能用就行了。

MSP430的RAM太少了,所以得把無線傳來的圖片先放到SPI FLASH里去,再加載到屏幕。以前看嵌入式的書,對SPI Flash看上去都挺簡單。這次得真干了,屏內的芯片是25vq21b,什么,居然搜不到數據手機?在下載了幾個其它廠家的手冊后,
才知道這些芯片大部分都一樣的命令。我又在某寶上下單一個winbond的同樣類型芯片,也想先在stm32上調通再移到430上,因為直接使用屏內調試沒串口不方便。芯片
到手后直接使用STM32CubeIDE的SPI配置,順利讀到JedecID。后面讀取寫入也沒有費很大周折。然后移植到430時失敗了,好挫折。我對比了邏輯分析儀上的波形,實在看不出來和stm32出來的區別在哪里。邏輯分析儀解析出來的發送命令也是對的,FLASH就是沒有回復正確。失敗了多次后在網上繼續搜。不能直接復制,就對着抄。終於抄到一個可以正確讀取Jedec ID的。網上的IO模擬SPI代碼也是五花八門,我自己也搞不清了。所以至今也不明白我自己移植的錯在哪里。

墨水屏,無線通信,FLASH看上去都搞定了,可以開始整合了。我使用如下圖方案:
PC機運行上位機,使用串口和STM32通信
STM32使用A7105和價簽的A7106通信
MSP430從A7106獲取並執行命令。


我也想過其它方案,如:
不使用STM32,直接拿一個價簽實現。問題是價簽沒有直接可用的串口。
理論上可以使用背面的IO模擬,雖然TI有application note,但看上去還是麻煩

 

先寫個程序把Flash前4KB讀回到電腦上,解決一些BUG后得到了如下的圖。

左右是鏡像的了,不過還算有規律。這是解碼數據造成的,解碼是針對最原始demo程序帶的圖像數據做的。因為我發現直接按
從左到右,從上到下顯示那個圖像,出來的結果是上下和左右都是翻轉的,所以在顯示到界面前自己先翻轉一下。其實問題不大,
在傳給墨水屏前自己先翻轉成所需要的就行了。雖然我查了數據手冊和程序的初始化命令,看上去沒問題啊,X增加,Y增加,
但是結果就是這樣,不明白。

繼續實現了一些小功能:把數據傳到Flash,從Flash加載圖片數據。目前存在的問題是時間長一點價簽就沒反應,由於價簽沒串
口,也不知道是程序跑飛了,還是無線模塊出問題。測試程序的墨水屏使用延時,而不是讀管腳來判斷墨水屏是否忙。按照網友逆向
出來的墨水屏電源控制,開關並不起作用,具體點就是關墨水屏,然后執行刷新命令,屏幕還是會刷新。

其實做的過程中,我比較想實現的是把它當成一個名言警句顯示器,FLASH可以存放64張圖,每天自己更換。

 

一點感想
自己不搞嵌入式多年了,現在只是作為愛好,稍微玩玩。搞嵌入式賺錢不多,請不要拿個例來反駁。要學習的
東西可以說多(各種芯片,模塊),也可以說少(常用協議其實不多)。現在STM32Cube把一些通用的提取出來,
在界面上直接配置好就生成代碼了,這個非常方便,讓人把心思放在業務上。調試是個麻煩事,有時是硬件問題,
有時是接觸不良,有時是自己犯的低級錯誤(比如線拔了忘記插回去)。

就這樣吧,順便感謝一下某莫的網友們。

 

后記

每日更新圖片功能完成

在添加了超時重傳后,傳輸基本上都成功了,如果還是不行可以增加重傳次數或放到鐵盒子里。

MSP430代碼邏輯改成了如下:

開機時無線打開 ,調試用,如果下載FLASH數據建議不要用電池供電。X (比如3)分鍾沒無線數據則關閉無線,省點電。

1分鍾定時器醒一次,如果累積24小時了,切換圖片,否則休眠LPM3。

我測了一下電量,13天前3.07V,現在2.97V,看來還是挺耗電啊,估計再過一段時間就會停了,暫時不知道怎么優化了,可以某些IO腳應該關起來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM