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