何玲,陳佳偉,范鵬,孫志文,梁璄軍
(廣東水利電力職業(yè)技術(shù)學(xué)院,廣東廣州, 510000)
本文設(shè)計(jì)并制作的小車是基于STM32搭配ESP8266WiFi 模塊控制的多功能小車。 該小車以STM32F103C8T6 為主控板,搭配超聲波模塊HC-SR04、舵機(jī)模塊SG90、 電機(jī)驅(qū)動(dòng)模塊TB6612FNG、直流減速電機(jī)、WiFi 模塊ESP8266、五路循跡模塊tcrt50001、降壓模塊DM02-28050016DS、溫濕度傳感器DHT11、1.8寸TFT 顯示屏。該小車具有循跡功能、避障功能、WiFi 控制功能、環(huán)境溫濕度檢測(cè)功能、顯示屏數(shù)據(jù)顯示等功能。通過Android studio 編寫安卓APP 實(shí)現(xiàn)TCP網(wǎng)絡(luò)通信,實(shí)現(xiàn)小車WiFi 控制以及速度控制等;小車通過五路循跡行駛模擬自動(dòng)駕駛,并且能夠在遇到障礙物時(shí)進(jìn)行行駛躲避;TFT 顯示屏能夠?qū)崟r(shí)顯示當(dāng)前小車所處的環(huán)境溫濕度、電源電壓、循跡避障狀態(tài)等實(shí)現(xiàn)數(shù)據(jù)交互;并且小車上搭載了電源穩(wěn)壓模塊,能夠?qū)崿F(xiàn)鋰電池的12V 穩(wěn)定降壓到5V,提供給單片機(jī)以及各種外設(shè)供電工作。
硬件電路框圖設(shè)計(jì)如圖1 所示,該多功能WiFi 控制小車采用STM32F103C8T6 做主控核心板;使用12V 可充電鋰電池供電,DM02 降壓模塊來(lái)實(shí)現(xiàn)12V 轉(zhuǎn)5V 提供穩(wěn)定工作電壓,供后續(xù)電路使用;ATK-ESP8266 可以實(shí)現(xiàn)無(wú)線聯(lián)網(wǎng)遠(yuǎn)距離通信控制駕駛;在小車的電機(jī)驅(qū)動(dòng)上使用TB6612FEN 能夠節(jié)省小車PCB 板面積,并且更好的驅(qū)動(dòng)電機(jī)無(wú)須考慮過熱等問題;使用1.8 寸的TFT 高清顯示屏實(shí)現(xiàn)用戶交互功能;在測(cè)距方面使用HC-SR04 超聲波測(cè)距,用于檢測(cè)前方是否有障礙物,SG90 用于旋轉(zhuǎn)超聲波方向?qū)崿F(xiàn)多方位測(cè)距;使用五路循跡燈來(lái)模擬自動(dòng)駕駛功能DHT11 實(shí)現(xiàn)車內(nèi)溫濕度檢測(cè)。
圖1 硬件電路框圖
硬件電路原理圖如圖2 所示,該電路主要由主控核心板STM32、ADC 采樣電路、獨(dú)立按鍵電路、DC-DC 降壓模塊電路、電機(jī)驅(qū)動(dòng)模塊電路、1.8 寸TFT 顯示屏、WiFi 模塊、舵機(jī)模塊、超聲波模塊等組成?;赟TM32 的多功能WiFi小車使用F103 系列做芯片,根據(jù)所需外設(shè)選擇了C8T6 型號(hào),該芯片從封裝到內(nèi)存,再到外設(shè)都剛好滿足整個(gè)系統(tǒng)的配置需求,可以很好的利用其所有的GPIO 口及各種外設(shè)。并且模塊安裝都通過插件式安裝,只需要將引腳對(duì)準(zhǔn)排母插上去即可,方便后續(xù)模塊損壞換新。DCDC 降壓模塊中的電源指示電路是通過輸入的5V 電源到GND 之間連接接一個(gè)分壓電阻和LED 來(lái)實(shí)現(xiàn)。當(dāng)插上電源后,打開開關(guān),電壓進(jìn)入電路形成閉合回路指示燈就會(huì)被點(diǎn)亮。獨(dú)立按鍵電路中三個(gè)按鍵通過電阻實(shí)現(xiàn)引腳電壓上拉,電容用于按鍵濾波,這樣可以節(jié)省軟件編程中的按鍵濾波,實(shí)現(xiàn)按鍵硬件濾波。而ADC 采樣電路是直接使用三個(gè)電阻進(jìn)行串聯(lián)分壓,將12V 電源電壓分壓到單片機(jī)ADC 外設(shè)能檢測(cè)的電壓范圍內(nèi),因此我們直接將12V 電壓通過兩個(gè)20kΩ 電阻和一個(gè)10kΩ 電阻,分壓到原來(lái)的1/5, 即2.4V 電壓,因此可以通過ADC 來(lái)讀取10kΩ 電阻上的電壓判斷當(dāng)前電池的電壓,進(jìn)行簡(jiǎn)單的電壓檢測(cè)。
圖2 電路板原理圖
主程序流程圖如圖3所示,多功能WiFi 智能小車的主程序從main.c 文件中的main 函數(shù)開始執(zhí)行。進(jìn)入main 函數(shù)后首先進(jìn)入Init()初始化子函數(shù),該函數(shù)中包括所需外設(shè)引腳的初始化函數(shù)以及GUI界面初始化布局;delay_init()函數(shù)對(duì)滴答定時(shí)器進(jìn)行初始化,用于后面的延遲操作;LED_Init()、KEY_Init()、SG90_Init()、XunJi_Init()函數(shù)用于配置LED 燈、按鍵、舵機(jī)接口、循跡燈等GPIO 口的模式;USART2_Config(115200)函數(shù)配置串口2 的波特率為115200bps, 用于與ATK-ESP8266 進(jìn)行通信;ESP8266_Init()函數(shù)用于向ATK-ESP8266 發(fā)送AT 指令,設(shè)置多鏈接以及開啟服務(wù)器并設(shè)置通道端口為8989;TIM1_PWM_Init(1000-1,72-1)函數(shù)用于配置定時(shí)器1 為PWM 輸出模式,重裝載值為1000,預(yù)分頻數(shù)為72,即每個(gè)脈沖周期為1ms,PMW 頻率為1kHz,用于驅(qū)動(dòng)電機(jī);Timer_SRD_Init(4999,7199)函數(shù)用于初始化定時(shí)器3 為計(jì)數(shù)模式,重裝載值為5000,預(yù)分頻數(shù)為7200,即一次中斷可計(jì)時(shí)500ms,適用于超聲波測(cè)距計(jì)時(shí);Lcd_Init()函數(shù)用于對(duì)TFT 屏進(jìn)行初始化操作;TIME4_Init(99,7199)函數(shù)用于配置定時(shí)器4 為計(jì)時(shí)模式,每10ms執(zhí)行一次中短,用于產(chǎn)生時(shí)鐘序;ADC1_Init()函數(shù)用于配置ADC1 外設(shè)實(shí)現(xiàn)讀取電源電壓功能;GUI_Init()函數(shù)用于給顯示屏進(jìn)行GUI界面布局顯示。在將各個(gè)外設(shè)模塊初始化完成后,進(jìn)入while 主循環(huán),在循環(huán)中執(zhí)行Wave_SRD_Strat()超聲波測(cè)距函數(shù)、BZ()避障函數(shù)、Get_Temp_Humi()讀取溫濕度數(shù)據(jù)函數(shù)、Get_ADC()讀取電壓值函數(shù)、EY_Listen()按鍵監(jiān)聽函數(shù)以及Get_Count()函數(shù)用于判斷功能時(shí)序是否到達(dá)。
圖3 主程序流程圖
溫濕度檢測(cè)功能使用單總線通信,核心板每隔200ms發(fā)送一次數(shù)據(jù)獲取,DHT11 就會(huì)將當(dāng)前環(huán)境的溫濕度數(shù)值通過單總線傳輸回核心板,核心板再將獲取到的溫濕度數(shù)據(jù)通過TFT 顯示屏顯示出來(lái)。主要程序設(shè)計(jì)如圖4 所示,功能測(cè)試實(shí)現(xiàn)效果如圖5 所示。
圖4 溫濕度功能程序設(shè)計(jì)
圖5 溫濕度功能測(cè)試實(shí)現(xiàn)效果
通過小車前面的五路循跡模塊可以使小車在黑線上循跡行駛,模擬小車的自動(dòng)循跡功能。主程序中通過創(chuàng)建一個(gè)定時(shí)器每隔10ms 進(jìn)行一次定時(shí)中斷,并在中斷服務(wù)函數(shù)中對(duì)小車的循跡燈狀態(tài)進(jìn)行判斷,當(dāng)循跡燈狀態(tài)表示小車不處于黑線中間時(shí),則修改小車兩邊的輪子轉(zhuǎn)速,讓小車重新行駛回黑線中間。主要程序設(shè)計(jì)如圖6 所示,功能測(cè)試實(shí)現(xiàn)效果如圖7 所示。
圖6 自動(dòng)循跡功能程序設(shè)計(jì)
圖7 自動(dòng)循跡功能測(cè)試實(shí)現(xiàn)效果
通過超聲波傳感器測(cè)量小車前面距離障礙物的距離,再根據(jù)距離調(diào)整行駛方向躲避障礙物。當(dāng)超聲波傳感器檢測(cè)到距離面前障礙物距離小于指定距離之后,小車就會(huì)停止,并轉(zhuǎn)動(dòng)舵機(jī)將超聲波方向轉(zhuǎn)到左右兩邊方向,并重新進(jìn)行超聲波測(cè)距,測(cè)距結(jié)束后判斷兩邊距離再重新轉(zhuǎn)向來(lái)躲避障礙物。主要程序設(shè)計(jì)如圖8 所示,功能測(cè)試實(shí)現(xiàn)效果如圖9所示。
圖8 超聲波避障功能程序設(shè)計(jì)
圖9 超聲波避障功能測(cè)試實(shí)現(xiàn)效果
通過小車上的ESP8266WiFi 模塊實(shí)現(xiàn)無(wú)線通信,再通過手機(jī)打開Android 程序即可實(shí)現(xiàn)無(wú)線控制駕駛功能。手機(jī)連接上ESP8266 發(fā)出的熱點(diǎn)之后,通過打開Android 并進(jìn)行TCP 連接即可實(shí)現(xiàn)小車的無(wú)線控制駕駛功能,當(dāng)前進(jìn)按鍵被按下后小車收到前進(jìn)指令后會(huì)向前行駛,且可以通過加減按鍵來(lái)實(shí)現(xiàn)小車速度控制。主要程序設(shè)計(jì)如圖10 所示,功能測(cè)試實(shí)現(xiàn)效果如圖11 所示。
圖10 無(wú)線控制駕駛功能程序設(shè)計(jì)
圖11 無(wú)線控制駕駛功能測(cè)試實(shí)現(xiàn)效果
該多功能小車可以廣泛應(yīng)用于服務(wù)業(yè),比如常見的飯店送餐機(jī)器人,其實(shí)也是由一輛智能小車演變而來(lái),通過在店內(nèi)設(shè)計(jì)好行駛軌跡,再將飯菜放在小車上,選好餐臺(tái)號(hào)即可自動(dòng)行駛到相應(yīng)餐臺(tái)。也可以應(yīng)用于危險(xiǎn)場(chǎng)所,比如我們的生活中有一些可燃易爆的物品以及具有腐蝕性和輻射性的物品,這些物品的寄存之地通常都是比較危險(xiǎn)的,運(yùn)用AGV 小車來(lái)進(jìn)行轉(zhuǎn)移,能夠降低人工轉(zhuǎn)移過程中發(fā)生意外風(fēng)險(xiǎn)的概率,能更好地維護(hù)員工的生命安全。其創(chuàng)新性體現(xiàn)在通過Android Studio 編寫Android 程序,生成sdk 安裝在手機(jī)上,打開手機(jī)WiFi 功能選擇智能小車上的ESP8266發(fā)出的WiFi 熱點(diǎn)進(jìn)行連接,從而與小車搭建通信通道,即可實(shí)現(xiàn)手機(jī)遠(yuǎn)程控制駕駛。通過上面的連接按鍵點(diǎn)擊連接與WiFi 熱點(diǎn)搭建sokect 通信,連接成功后即可通過+、-按鍵調(diào)節(jié)小車速度,再通過下面的方向鍵控制小車行駛。