最近折騰一個智能小車,功能如下:1,小車有超聲波測距模塊用于壁障;2,MPU6050陀螺儀模塊用于小車兩個電機PID控制,按設定的偏航角自動運行;3,ESP8266模塊接入機智云平臺,可以用安卓APP在局域網(WIFI)和廣域網(手機流量)環境下控制小車,說白了就是加入了所謂“IOT”物聯網技術,4,硬件平臺是STM32F103VE核心板,加了ILI9341顯示,移植了EMWIN5.26,做了電子指南針顯示陀螺儀各個參數;5,加了NRF2401無線模塊,接受有關遙控器控制;6,用GPIO的AD通道檢測小車電量,低電量報警;7,用了10個LED顯示;8,電機控制模塊;9,兩節舊手機鋰電池供電,加了5V穩壓芯片,因為超聲波模塊需要5V電源。這么多功能加進去,程序用平常的While循環方式肯定是搞不定的!因為接受遙控器的命令較多,各個模塊要協調工作幾乎不可能!本人參考安富萊科技的資料加工改進了一個調度器,這個調度器仿照UCOS操作系統原理設計,可以在任務中增加和刪除任務,經過測試效果很好。剛開始以為做這樣的一個智能小車應該是個很簡單的事,可是真正做起來還真的不容易,那么多模塊連接杜邦線就用了幾十根。軟件方面比較難的是要把機智云協議嵌入工程模板;基本上就是把機智云的工程重新拆解封裝。話說這機智云工程模板是基于面向對象思想的結構,變量用的幾乎都是結構體,非常經典;值得學習!原來,C語言也可以這樣玩。經過一周折騰,程序下載進去試車,TMD經常死機,有時候無法正常進入主程序。經過兩周調試,現在基本上可以正常控制了,實現了上面功能。最長一次通電24小時,沒有死機。為什么會死機呢?多個任務搶占CPU導致。
總結一點,程序是測試出來的,理論上邏輯上沒有問題的代碼下載到產品上可能就根本不能用或者基本就無法實現設計功能。只有通過硬件測試調試才能做出性能穩定的東西。我相信,真正技術好的人一定是在實驗室泡出來的,而不是在書里啃出來的!現在準備移植UC/os_ii操作系統進去控制小車,看看效果怎么樣?
經常聽到搞技術的朋友感慨自己落伍了,感覺自己不懂不會的東西實在太多而自己精力有限。這個問題曾經真的一直困擾我了;就拿stm32來說吧,M3,M4,M7推陳出新真的很快,感覺自己永遠就是跟屁蟲。學技術干什么?不就是想掌握一技之長有個安家立命的本錢嗎?現在覺得學技術一定要根據自己的實際情況主要是學習能力和工作需要有選擇性的學習。以前,我就忽略了學習PCB設計,導致現在折騰一些東西的時候只能在網上買核心板,這就導致東西做好了以后好難看,到處是導線或者杜邦線,拉拉扯扯的。好了,老夫決心踏踏實實學習PCB設計了,恰好幾年前有個網友發了一份哈工大PCB設計視頻,共13集約30個小時,感覺講的不錯,軟件是
ALTIUM DESIGNER,下載的是最新版本。相信有些網友能幫助到我。
對老夫而言,學會PCB設計就可以自己畫板子,做出個性化產品出來。到時從硬件到軟件自己一個人就可以搞定了;相信易安卓,JAVA,,ESP8266等等這些應該也有用處。個人認為學精用精M3就已經很牛逼了!如果有人不服氣,老夫可以請教請教他一些問題。做自己有能力做的,學習自己能學習的,窮盡一生精力做好一件事這就是工匠精神。
|