Temperature logger

紀錄了七個多小時我在公司座位的溫度,看起來的確是蠻冷的。
這個溫度感測紀錄也是用Cypress PSoC弄的。之前搞定了行動電源縮時攝影快門後,想說要做點純數位的東西,練習MCU的數位介面溝通。不過其實都已經模組化了,充其量只能說是應用,沒有寫到底層協議部分。
為了要將溫度的資料可以記錄在電腦上,需要有可以跟電腦溝通的介面,PSoC1最基礎的介面就是UART,不過這只需要單方向從MCU丟資料到電腦,所以選用比較簡單的TX模組即可,還可以省掉一根RX腳位。
再來就是MCU與溫度感測器的溝通,這個是用Ti的溫度感測器,i2c介面。介面膜組的使用很方便,application note寫得清清楚楚了。
不過之中遇到了一些問題,後來才知道是這顆MCU的flash space不夠用(4k byte),導致本來想要印含有小數點的溫度資訊,只能先丟16進制的資料出來,在把log出來的資料丟給excel使用hex2dec轉成溫度。
為什麼4k byte不夠用? 為了完成以上的工作,需要用到的MCU user module有: UART_TX8, I2C_HW, counter8(for uart baud rate generation), sleep_timer(for delay),還有一些標準函式庫的資料,例如ftoa(將浮點數轉成字元,為了要印在UART_TX上),ftoa用了大概1.6k的flash空間,上網找解決辦法有人說可以用csprintf...後來發現這個吃更多2.5k左右。不過還是很感謝上網問人馬上解答才能讓我知道真正的原因在哪裡,在這裡也覺得Cypress服務做的真是不錯。最後附上連結是我上網問問題的網頁,並且有FAE順便將他過去如何減少code space的經驗寫進去,服務真好! 




留言

這個網誌中的熱門文章

樂高像素拼圖之照片像素化教學

照片的後製觀點