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