廣大的工程師及電子愛好者朋友們,大家好!
在我們“來實(shí)戰(zhàn)”欄目上線后度過了第一個(gè)周末,相信經(jīng)過這幾天,大家更加關(guān)注我們進(jìn)度。別急,我們這是一個(gè)比較基礎(chǔ)的開源項(xiàng)目,所以我們前期準(zhǔn)備了大量的工作,爭(zhēng)取讓大家都搞懂。無論是沒有基礎(chǔ)的朋友還是老手,希望看了以后都有所幫助。
關(guān)于本次開源項(xiàng)目,我們計(jì)劃這樣來操作:
1.對(duì)標(biāo)摩爾吧中的相關(guān)主題智能小車項(xiàng)目(基于恩智浦平臺(tái)智能汽車),我們這次用基于意法半導(dǎo)體的STM32平臺(tái)來打造多功能智能小車,最終實(shí)物性能如何?基于意法半導(dǎo)體平臺(tái)的智能小車PK恩智浦智能小車,誰更勝一籌?電路城開源項(xiàng)目組現(xiàn)在開始就通過逐步實(shí)操并最終打造出來,最后實(shí)物演示操作對(duì)比。
2.項(xiàng)目更新進(jìn)度:每?jī)商煸凇秮韺?shí)戰(zhàn)》欄目上更新設(shè)計(jì)進(jìn)度內(nèi)容,在工程沒有實(shí)質(zhì)性進(jìn)度的時(shí)候也可以在論壇發(fā)帖分享進(jìn)行實(shí)施困難點(diǎn)、設(shè)計(jì)技術(shù)難點(diǎn)和原理講解及器件分析等。
3.建立對(duì)應(yīng)項(xiàng)目討論群。利用現(xiàn)有已建立的技術(shù)Q群資源,我們?cè)谧雒恳粋€(gè)不同主題方向的項(xiàng)目時(shí),為方便討論同時(shí)活躍Q群用戶,歡迎更多志同道合的小伙伴加進(jìn)來參加開源項(xiàng)目討論或給我們提供建議。
4.采購(gòu)設(shè)計(jì)工具
?。?)工具:電焊臺(tái)(刀頭、尖頭)、焊錫絲、吸錫器、助焊膏、烙鐵架子帶夾子、松香、熱熔膠槍、螺絲刀、萬用表、剪鉗、鑷子、鉗子、海綿、美工刀、元器件收納盒、手持鉆孔機(jī)等等,以后可以慢慢完善。示波器以及信號(hào)源、多功能電源。
?。?)元器件及材料:采購(gòu)電子元器件以及打板。
5.我們會(huì)定期舉辦開源項(xiàng)目直播交流,或制作一些項(xiàng)目設(shè)計(jì)過程中的小視頻,在項(xiàng)目交流群中與大家分享,感興趣的小伙伴馬上加入我們吧。
6.建立開源項(xiàng)目貢獻(xiàn)者名單榮譽(yù)榜,不定期在本開源項(xiàng)目頁(yè)面更新。項(xiàng)目結(jié)束后,對(duì)該開源項(xiàng)目貢獻(xiàn)突出的小伙伴,我們?cè)u(píng)選出“開源之星”給予神秘大獎(jiǎng)獎(jiǎng)勵(lì)。開源項(xiàng)目貢獻(xiàn)者名單會(huì)被注明在最終的開源項(xiàng)目方案中。
7.期待更多的志同道合的技術(shù)大咖加入我們“開源項(xiàng)目智囊團(tuán)”,出謀劃策,為開源貢獻(xiàn)自己應(yīng)有的力量。
PS:這是一個(gè)開源項(xiàng)目,項(xiàng)目已經(jīng)被全部分享本項(xiàng)目的下載資料,供大家免費(fèi)下載。
步驟1:設(shè)計(jì)的要求及技術(shù)指標(biāo)
在該環(huán)節(jié),我們將根據(jù)項(xiàng)目的流程,從以下四個(gè)方面來闡述我們對(duì)應(yīng)的要求和指標(biāo):
1. 硬件系統(tǒng)(確定硬件設(shè)計(jì)思路,完成主要器件選型及相關(guān)資料查找);
1)硬件設(shè)計(jì)思路:我們初步定下來是使用意法半導(dǎo)體的STM32F103系列??赡苡械呐笥褧?huì)問了,就做個(gè)小車子還用什么STM32,51單片機(jī)就能做好了,或者是向我們推薦更好的主控芯片。我們思考了很久,覺得51單片機(jī)還是太基礎(chǔ)了,市場(chǎng)上應(yīng)用的太少了,所以選擇比較合適的STM32單片機(jī)。
2)主要器件的選擇及性能要求
(1)內(nèi)核:ARM 32位的Cortex-M3 CPU
(2)存儲(chǔ)器:64K或128K的閃存程序存儲(chǔ)器
(3)時(shí)鐘、復(fù)位和電源管理
(4)低功耗
(5)2個(gè)12位模數(shù)轉(zhuǎn)換器
(6)DMA直接存儲(chǔ)器
(7)快速I/O口
(8)7個(gè)定時(shí)器
(9)9個(gè)通信接口
2. 軟件系統(tǒng)
我們的程序編寫是一個(gè)什么樣的框架?這個(gè)也是動(dòng)手寫程序之前的一個(gè)很好的問題,只有先確定框架,程序才會(huì)有條理。我們這個(gè)小車要實(shí)現(xiàn)循跡、避障、語(yǔ)音識(shí)別、通信、電機(jī)驅(qū)動(dòng),后面還有圖像處理等等。
我們的遙控板和主控板不同的是重要的還有ADC的采集和數(shù)據(jù)的處理,這也是非常重要的一個(gè)知識(shí)點(diǎn)。所以程序在我們確定好硬件使用資源后,就可以制定框架進(jìn)行程序編寫了。
3.設(shè)計(jì)方案的模塊選擇
我們的小車設(shè)計(jì)已經(jīng)到了實(shí)際階段,基本完成了初步設(shè)計(jì),今天我們就來討論一下我們的具體方案。我們選擇的是履帶式坦克小車,原因很簡(jiǎn)單,相比四輪小車感覺要酷一點(diǎn)。另外一點(diǎn)呢對(duì)地形要求低,可玩性大大提高。電機(jī)采用的是CGM-25-370直流減速電機(jī)。電池我們采用大容量鋰聚合物電池,INPUT:DC-12.6V,OUTPUT:10.8-12.6V.容量是3000mAh,小車的續(xù)航能力有了保證。主控板的電源管理上,我們采用了德州儀器的TPS54531。
我們根據(jù)官方資料以及網(wǎng)友提供的設(shè)計(jì)資料,設(shè)計(jì)了DC-DC斬波電路及LDO降壓模塊LDO降壓采用了AMS1117-3.3這款常見的線性穩(wěn)壓LDO。大家可能對(duì)TPS54531不太熟悉,沒關(guān)系,不是一定要使用TPS54531,電路城還有很多DC-DC斬波電路。我們的電機(jī)驅(qū)動(dòng)采用的是A4950,為什么采用A4950呢?它的優(yōu)點(diǎn)如下,主要是比L298N電機(jī)驅(qū)動(dòng)起來要簡(jiǎn)單。我們通信采用大家熟悉的NRF24L01,nRF24L01是由NORDIC生產(chǎn)的工作在2.4GHz~2.5GHz的ISM 頻段的單片無線收發(fā)器芯片。我們采用的是E01-ML01S模塊。
整個(gè)設(shè)計(jì)過程中其實(shí)就是在思考著幾點(diǎn):第一點(diǎn)追求性價(jià)比,哪個(gè)參數(shù)好、便宜;第二點(diǎn)哪個(gè)應(yīng)用簡(jiǎn)單,降低設(shè)計(jì)開發(fā)難度;第三點(diǎn)哪種方案更方便大家接受,最好是資料充足的,利于自行學(xué)習(xí)。最后給大家看一下我們組裝的車體,主控板也會(huì)盡快和大家見面喲!
步驟2:硬件系統(tǒng)設(shè)計(jì)
硬件系統(tǒng)各模塊功能介紹
紅外避障模塊主要有一對(duì)紅外對(duì)管以及電壓比較器LM393構(gòu)成,原理如上圖所示。
(1)紅外模塊:該傳感器模塊對(duì)環(huán)境光線適應(yīng)能力強(qiáng),其具有一對(duì)紅外線發(fā)射與接收管,發(fā)射管發(fā)射出一定頻率的紅外線,當(dāng)檢測(cè)方向遇到障礙物(反射面)時(shí),紅外線反射回來被接收管接收,經(jīng)過比較器電路處理之后,綠色指示燈會(huì)亮起,同時(shí)信號(hào)輸出接口輸出數(shù)字信號(hào)(一個(gè)低電平信號(hào)),可通過電位器旋鈕調(diào)節(jié)檢測(cè)距離,有效距離范圍 2~30cm,工作電壓為 3.3V-5V。該傳感器的探測(cè)距離可以通過電位器調(diào)節(jié)、具有干擾小、便于裝配、使用方便等特點(diǎn),可以廣泛應(yīng)用于機(jī)器人避障、避障小車、流水線計(jì)數(shù)及黑白線循跡等眾多場(chǎng)合。
我們給它上電,電源指示燈亮起,進(jìn)入正常工作狀態(tài)。當(dāng)出現(xiàn)障礙物時(shí),輸出指示燈亮起,說明輸出信號(hào)電平已經(jīng)被拉低。這里測(cè)試一定要用白色障礙物,黑色探測(cè)距離最小,白色最大。如果是黑色障礙物,基本上是檢測(cè)不到障礙物的存在,所以根據(jù)這個(gè)我們也可以使用該模塊進(jìn)行循跡操作。當(dāng)模塊對(duì)準(zhǔn)黑線時(shí),輸出電平?jīng)]有被拉低。當(dāng)模塊偏離黑線的時(shí)候,輸出指示燈亮,電平被拉低。由此我們可以驗(yàn)證該模塊應(yīng)用于循跡是可以的。但是單模塊還是沒有辦法很好的執(zhí)行循跡,容易偏離丟失,推薦使用兩個(gè)或者多個(gè)模塊共同用于循跡。假設(shè)兩對(duì)紅外對(duì)管放在車頭,對(duì)管A檢測(cè)到是黑線,電平不改變;對(duì)管B檢測(cè)到非黑線,電平被拉低,這個(gè)時(shí)候車輛便要往A方向單位移動(dòng),這樣就可以較好的實(shí)現(xiàn)循跡。使用四路的話呢,有兩路可以用來防碰撞、防跌落或者避障。
這種紅外對(duì)管模塊用來避障有一個(gè)缺點(diǎn),那便是距離太短,有效距離范圍 2~30cm。后面會(huì)給大家介紹到超聲波模塊,探測(cè)距離會(huì)長(zhǎng)一點(diǎn),可用于避障也可用于測(cè)距。
(2)語(yǔ)音模塊:LD3320芯片是一款“語(yǔ)音識(shí)別”專用芯片,基于ICRoute公司設(shè)計(jì)生產(chǎn)。該芯片集成了語(yǔ)音識(shí)別處理器和部分外設(shè)電路,包括麥克風(fēng)接口、AD、DA轉(zhuǎn)換器、聲音輸出接口等。本芯片高效與節(jié)能,不需要外接任何如Flash、RAM等的存儲(chǔ)芯片,直接集成在功能所需的器件即可以實(shí)現(xiàn)語(yǔ)音識(shí)別/聲控/人機(jī)對(duì)話功能。另外,可以任意動(dòng)態(tài)編輯識(shí)別的關(guān)鍵詞語(yǔ)列表。首先我們根據(jù)資料掌握該模塊串口接收使用功能,這里設(shè)置要傳輸?shù)淖止?jié),比如我們發(fā)送AA BB CC DD。這里總共是13個(gè)字節(jié),其中可用字節(jié)是10個(gè),后面必須有FF FF FF做結(jié)束標(biāo)志。通過語(yǔ)音觸發(fā)以后,就開始向串口發(fā)送相關(guān)信息。使用USB轉(zhuǎn)TTL模塊連接電腦,打開串口調(diào)試器,做出相應(yīng)語(yǔ)音控制,便能將對(duì)應(yīng)的數(shù)據(jù)通過串口發(fā)送至串口調(diào)試工具。我們可以看到,電腦串口調(diào)試工具成功接收到了語(yǔ)音識(shí)別模塊發(fā)送的數(shù)據(jù)。如果該模塊連接的是小車主控板,那么就可以通過串口將所要傳輸?shù)淖止?jié)發(fā)送給主控板,主控板會(huì)經(jīng)過處理作出相應(yīng)動(dòng)作。所以該模塊用于簡(jiǎn)單語(yǔ)音控制是非常便利的,我們可以通過語(yǔ)音來控制小車的簡(jiǎn)單動(dòng)作,比如:前進(jìn)、后退、轉(zhuǎn)圈以及轉(zhuǎn)彎。
那么,同理,在我們小車實(shí)現(xiàn)某些動(dòng)作后也可以將定義好的數(shù)據(jù)通過串口傳輸至語(yǔ)音處理模塊,播放相應(yīng)提示詞。所以由于這個(gè)模塊的使用大大方便了我們控制,但是這個(gè)并算不上真正意義上的語(yǔ)音控制,沒有學(xué)習(xí)功能,沒有數(shù)據(jù)庫(kù),我想這只能算作人工制杖了。
步驟3:軟件系統(tǒng)設(shè)計(jì)
軟件系統(tǒng)各模塊功能介紹
(1) PWM輸出測(cè)試:在我們硬件通過測(cè)試后就要進(jìn)行程序的編寫了,通過定時(shí)器來進(jìn)行PWM輸出。前面也有跟大家提到過,STM32F103CBT6有7個(gè)定時(shí)器。這3個(gè)16位的定時(shí)器,每個(gè)定時(shí)器有多達(dá)4個(gè)可做PWM輸出的通道,所以最多可以有12路PWM輸出。前面也有跟大家介紹A4950,可以控制1個(gè)電機(jī)正反轉(zhuǎn),需要2個(gè)PWM引腳。(如果不需要反轉(zhuǎn),只需要1個(gè)PWM引腳。)使用比L298簡(jiǎn)單的多,程序編寫也比較方便。配置管腳參數(shù),輸出比較通道的初始化,定時(shí)器的初始化。時(shí)間基數(shù)單位設(shè)置:TIM_TimeBaseStructure.TIM_Period這個(gè)是設(shè)置計(jì)數(shù)終止值,假設(shè)是7200-1,則在7200個(gè)頻率后產(chǎn)生一個(gè)更新和中斷。TIM_TimeBaseStructure.TIM_Prescaler簡(jiǎn)單說就是從0開始計(jì)數(shù)。TIM_TimeBaseStructure.TIM_CounterMode簡(jiǎn)單說就是設(shè)置計(jì)數(shù)方式,定時(shí)器分為向上、向下、中心對(duì)齊三種計(jì)數(shù)方式。經(jīng)過我們上述步驟后就能產(chǎn)生pwm輸出了,因?yàn)槲覀円M(jìn)行電機(jī)控制,所以還需要一個(gè)pwm輸出控制函數(shù),來調(diào)節(jié)pwm輸出。如:這樣其實(shí)就相當(dāng)電機(jī)控制的接口函數(shù)做出來了,通過我們這個(gè)函數(shù)可以實(shí)現(xiàn)完美電機(jī)控制,經(jīng)過測(cè)試是可用的。注意,這里我們只使用了TIM2的通道1和通道2;TIM3的通道3和通道4。這個(gè)地方有點(diǎn)不明白的同學(xué)可以去看一看A4950的控制方式。
(2)程序編寫及清單:通過幾天的測(cè)試程序編寫,可以實(shí)現(xiàn)對(duì)小車的遙控控制。通過NRF24L01實(shí)現(xiàn)遙控控制,可控制前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)。原理就是遙控ADC采集搖桿電位器的電壓通過處理再傳給主控板實(shí)現(xiàn)對(duì)兩個(gè)電機(jī)的控制。這個(gè)控制的難點(diǎn)其實(shí)就是PWM輸出的程序的編寫,因?yàn)锳4950模塊通過脈寬調(diào)制(PWM)控制兩個(gè)直流電動(dòng)機(jī),輸入端通過應(yīng)用外部 PWM 控制信號(hào)以控制直流電動(dòng)機(jī)的速度與方向。內(nèi)部同步整流控制電路用來降低脈寬調(diào)制 (PWM) 操作時(shí)的功率消耗。其次呢就是NRF24L01無線通信程序的編寫,但是網(wǎng)上有很多例程,所以相對(duì)來說還比較好解決一點(diǎn)。前面那個(gè)控制A4950驅(qū)動(dòng)的程序例程比較少,需要自己摸索。
步驟4:實(shí)物測(cè)試及項(xiàng)目總結(jié)
1.焊接(待元器件集齊,打板完成,進(jìn)行焊接以及相關(guān)結(jié)構(gòu)制作,模型安裝等);
2.軟件調(diào)試;
3.硬件調(diào)試(結(jié)合軟硬件調(diào)試,完成程序修改,確保功能實(shí)現(xiàn),驗(yàn)證硬件部分沒有問題);
4.設(shè)計(jì)結(jié)果分析(測(cè)試功能、驗(yàn)證相關(guān)參數(shù),有什么不足以及改正,對(duì)做的不好的地方留時(shí)間補(bǔ)救);
5.測(cè)試過程(完整測(cè)試的發(fā)表,實(shí)測(cè));
6.項(xiàng)目總結(jié)
版權(quán)聲明:本文系電路城原創(chuàng)內(nèi)容,未經(jīng)授權(quán)禁止轉(zhuǎn)載,侵權(quán)必究!