基于STM32+UCOS的智能車載終端系統總結

      網友投稿 735 2022-05-29

      @TOC

      一、賽題

      1. 設計目標

      設計制作一款可以人機交互、具備移動互聯功能的智能車載終端系統。

      2. 基本要求

      車載娛樂播放

      (1)讀取儲存在SD卡中的音樂文件,并通過揚聲器播放出來。

      (2)以TFT彩屏作為顯示終端,顯示當前的音樂文件信息,歌曲名、進度條、音量、碼率等。

      (3)實現歌曲播放控制,具有"上一首"、“下一首”、"暫停"等基本操作功能。

      車載儀表顯示

      (4)以TFT彩屏作為顯示終端,顯示照明燈的狀態(開/關)、繼電器的狀態(開/閉);顯示水溫(單位攝氏度)、油位(無單位,數值一般為占滿量程的比例)、車速(單位千米/小時)信息。

      (5)水溫來自于溫度傳感器、油位來自于滑動變阻器、車速來自于旋轉的步進電機測速;水溫數據、油位數據、車速數據每隔2秒動態刷新;采用合理方式調整水溫、油位信號變化,以產生可見動態變化效果。

      (6)設計按鍵模擬油門給出"加速"、“減速”、"停車"等輸入指令,控制步進電機做相應動作,并將車速及運行狀態"加速/減速/停車"顯示于TFT屏。

      3. 擴展要求

      (1)可以實現音頻文件的錄制功能,不通過第三方的導入功能,直接錄制并存儲音頻。

      (2)實現歌曲播放控制的更多操作,例如生成播放列表、設置循環模式(單曲、順序、隨機)等。

      (3)模擬實現汽車"黑匣子"功能:當某一按鍵按下時,系統記錄當前時刻的儀表信息(如水溫、油位、車速及運轉狀態、照明燈與繼電器狀態等),并存儲于EEPROM硬件中;關機后重新開機能夠復現前次的各類信息。

      4. 發揮要求

      移動互聯功能

      (1)通過以太網或WIFI網絡方式,與移動互聯模塊(手機或平板)之間進行車內儀表數據的上傳。

      (2)編制安卓或蘋果APP,實現與車內儀表類似的界面顯示。

      智能語音控制

      (3)通過語音識別實現對硬件設備的控制,例如說出"打開照明燈"、"關閉繼電器"等,可直接轉換為對應的輸出設備動作。

      二、分析

      在拿到題目的時候,首先瀏覽了一遍題目,第一感覺:

      這什么鬼、題目量也太大了吧,裸機手擼死翹翹好吧,所以果斷選擇uCos來作為調度系統,進行多任務管理。雖然任務量很大,但對處理器的要求并不是很高,只是邏輯布置很麻煩,所以我計劃使用STM32F103ZET6來做這個。

      然后開始逐步分解題目內容,從基本要求開始做,一點一點增加任務,完成項目,下面開始講解基本任務:

      1. 基本要求-車載娛樂播放

      第一點要求讀取SD卡音樂文件,并且播放,這里的技術要點主要是建立一個FAFT文件系統,掛載SD卡,讀取我們指定的音樂目錄下的音樂文件,然后通過解碼播放,這里選擇VS1053模塊來做解碼,接一個揚聲器播放。

      TFT顯示信息直接使用LCD就行,使用極其方便,初始化一下,直接調用API就行,這里我一開始想使用EMWIN來做界面,但考慮到直接使用這些不是熟練,故放棄使用EMWIN做界面。關于顯示歌曲的信息,因為直接使用的VS1053,可以直接通過寄存器發送讀取對應信息的指令,之后讀取對應返回值進行處理就行,這部分代碼在正點原子戰艦的例程里面有給出,代碼封裝的風格很好,讀一遍基本可以理解,然后就能調用。關于音樂切換其實就是在mp3初始化時,把所有音樂的文件路徑存儲到一個字符串鏈表里面,播放不同音樂就是根據鏈表重新選擇一下文件路徑,然后再進入死循環播放就行了,音樂暫停,在UCOS里面直接使用掛起任務就可以完成,需要繼續播放則使用任務恢復API就可以完成恢復。

      2. 基本要求-車載儀表顯示

      基于STM32+UCOS的智能車載終端系統總結

      儀表顯示因為沒有使用emwin界面工具,用單純的純手畫圖方式設計一個好看界面太占據內存,并且效率不高,實現意義不大,故直接使用最傳統的方式----顯示文字法,節省內存,提高效率(就是丑了點~)

      溫度采集使用DS18B20來采集溫度信息,單總線結合GPIO模擬協議進行寫入和讀取,電機速率采集則使用紅外對管測速,通過外部中斷配合定時測量一段時間內轉動碼盤上經過的孔的數量,從而計算出速率,加速減速通過改變步進電機脈沖之間的時間。

      DS18B20:

      測速模塊:

      3. 擴展要求-音頻錄制

      音頻的錄制和mp3播放使用的同一個模塊,故在使用音頻播放時需要創重新初始化vs1053同時需要重新配置mp3播放的功能,錄音的使用和mp3其實差不了多少,正點原子關于這個模塊有較詳細的敘述,后面我也簡單的寫一下。

      4. 擴展要求-歌曲列表

      歌曲列表的顯示其實就是輪詢SD卡音樂文件夾下各個音樂的信息,然后將音樂名稱打印出來,每次切換音樂都重新打印,可以刷新列表,關于切換音樂,順序播放切換音樂就是對鏈表切花時位移一個,單曲位移為0,使播放原地踏步,隨機播放呢,我使用的UCOS內部產生32位隨機數的API然后除以最大音樂數目取余數,相當于在所有音樂之中隨機播放音樂。

      5. 擴展要求-汽車黑匣子

      黑匣子這個難度不是很大,IIC連接EEPROM存儲信息就行了,但是跑著uCos上可能會出一些問題,尤其在使用正點原子的ucos延時時會出現這個問題,正點原子ucos代碼us級延時誤差挺大,我文中會給出解決方法。

      EEPROM模塊:

      6. 發揮要求-移動互聯功能

      移動互聯網功能就是一個上云功能,at指令配好,了解一下MQTT協議就能完成,然后就可以傳輸數據上云了(公網云),我們這使用的是阿里云平臺,因為他有個快速制作app界面的功能,所以使用起來很方便,也能做出題目要求的界面效果,所以使用阿里云。

      ESP8266模塊:

      7. 發揮要求-智能語音控制

      語音識別直接配置完整的模塊,寫入識別信息,模塊自帶匹配功能,識別之后執行對應的指令,配置過程很簡單,直接使用源碼沒有問題!

      LD3320語音識別模塊:

      三、制作

      分析完理論知識和需要的模塊的之后,開始正式進入code環節,下面繼續按照上面的步驟進行調試代碼。

      1. 實現原理:

      項目首先構建硬件連接關系圖,連接硬件,通過MDK對STM32F103ZET6進行軟件編程,使用uCos實時系統,調度STM32F103ZET6內部串口、定時器、中斷、硬件SPI、IIC等資源,配置外部模塊,使STM32F103ZET6可以對外圍模塊進行控制及數據采集,進一步進行處理與邏輯控制,使stm32可以達到用戶所需要的目的。

      2. 硬件框圖:

      STM32F103ZET6與外圍電路的連接框圖如下,通過IO口連接步進電機、矩陣鍵盤、燈、繼電器,通過SPI連接語音識別模塊ASR、1053_MP3模塊,通過串口連接ESP32WIFI模塊,通過FSMC輸出信息給TFT液晶屏,通過ADC模塊轉化電位器位值,通過外部中斷檢測紅外對管電平,通過SDIO協議讀取SD卡數據信息,通過單總線協議讀取DS18B20的溫度信息;

      3. 軟件流程:

      項目使用STM32基于UCOS實現所有功能,在代碼編寫上,共計建立了9個任務進行調度,調度流程如下,調度過程中,CPU使用率基本上穩定在50%以下,同時任務運行穩定,長時間運行不崩潰,切任務實時性高,處理事件反應快,達到較好的用戶交互效果。

      四、結果

      作品展示

      1.1 項目連接的整體視角:

      1.2 TFT初始化后的UI界面:

      1.3 手機端APP界面:

      1.4 矩陣鍵盤按鍵功能圖:

      2. 功能實現

      2.1 基本要求的實現

      讀取了SD卡的音樂文件并播放,《音樂播放器》板塊顯示了歌曲名、進度條、音量、碼率等,并可通過按鍵1、2、3實現切歌、暫停。

      在采集信息板塊,LIGHT為照明燈狀態,RELAY為繼電器狀態,Temp為水溫,OIL_H為油位,SPEED為車速信息,并每隔2s刷新。通過按鍵9、10、11實現步進電機相應動作,并將車速顯示在擋位上,運行狀態顯示在電機狀態上。

      2.2 擴展要求的實現

      錄音狀態顯示在《WAV錄音機》板塊,通過按鍵16實現音頻錄制功能,錄制完成后按下按鍵14存儲音頻。歌曲的更多操作顯示在《音樂播放器》板塊,按鍵7切換播放模式,將模式顯示在播放后,按鍵4和按鍵8實現音量增減并顯示音量VOL。汽車黑匣子顯示在復現信息板塊,由按鍵5和按鍵6實現,按鍵6寫入當前狀態數據,按鍵5讀取之前狀態。

      2.3 發揮要求的實現

      數據通過WIFI模塊上傳至云平臺后,云服務器顯示已連接,上圖為手機接收到的儀表數據,顯示在APP上。按下按鍵3后暫停MP3并使用語音識別,在說出“關閉照明燈”及“打開繼電器”均能實現相應數據更新動作。

      五、源碼

      github:鏈接

      gitee:鏈接

      數據結構 語音通話

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:配置tftp服務
      下一篇:安卓應用及鴻蒙應用安全檢測指南
      相關文章
      在线精品亚洲一区二区| 亚洲综合在线成人一区| 久久久国产亚洲精品| 久久精品国产亚洲av四虎| 国产亚洲精品高清在线| 久久久久亚洲AV无码专区网站| 欧美色欧美亚洲另类二区| 亚洲成a人片在线观看精品| 91亚洲国产成人精品下载| 久久精品亚洲综合专区| 亚洲AV无码国产精品麻豆天美| 亚洲欧洲日产国码无码久久99 | 久久久久亚洲AV无码专区网站 | 亚洲国产高清视频在线观看| 亚洲综合一区二区精品久久| 亚洲精品国产专区91在线| 亚洲视频在线观看网址| 亚洲日产2021三区在线| 亚洲人成网站18禁止久久影院| 亚洲国产成人va在线观看网址| 亚洲一级毛片免费在线观看| 亚洲五月丁香综合视频| 亚洲熟妇AV一区二区三区浪潮| 亚洲美国产亚洲AV| 国产精品亚洲色婷婷99久久精品| 亚洲av无码偷拍在线观看| 亚洲成a人无码av波多野按摩| 亚洲国产黄在线观看| 国产成人综合亚洲AV第一页| 亚洲精品狼友在线播放| 亚洲无删减国产精品一区| 亚洲美女aⅴ久久久91| 亚洲男人的天堂久久精品| 亚洲欧美一区二区三区日产| AV激情亚洲男人的天堂国语| AV激情亚洲男人的天堂国语| 久久久久亚洲AV成人网人人软件 | 亚洲AV日韩综合一区尤物| 国产精品亚洲专区无码牛牛| 亚洲男人av香蕉爽爽爽爽| 久久亚洲国产中v天仙www|