劉怡沛,江龍韜,秦 嶺,張 卓
(河海大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 常州 213002)
隨著國(guó)內(nèi)智慧環(huán)保理念的發(fā)展,如何推動(dòng)智慧環(huán)保落地成為各地政府關(guān)心的問題[1-3]。在推進(jìn)智慧環(huán)保落地的過(guò)程中,最重要的是環(huán)境監(jiān)測(cè)任務(wù)[4]。但由于部分地區(qū)環(huán)境復(fù)雜多樣,傳統(tǒng)的非移動(dòng)式監(jiān)測(cè)無(wú)法檢測(cè)空間狹小,環(huán)境惡劣、位置險(xiǎn)要的環(huán)境[5-6];人力監(jiān)測(cè)方式耗費(fèi)過(guò)多力資源,且效率低下;部分地區(qū)森林火災(zāi)頻發(fā),如何在保障消防員安全的前提下進(jìn)行環(huán)境監(jiān)測(cè),避免不必要的犧牲,也成為當(dāng)下的焦點(diǎn)問題[7-8]。
因此設(shè)計(jì)出一種可遠(yuǎn)程控制的環(huán)境監(jiān)測(cè)機(jī)器人成為亟待解決的問題[9]。針對(duì)此需求,郭威[9]等設(shè)計(jì)了一種可移動(dòng)滑桿式環(huán)境監(jiān)測(cè)機(jī)器人,環(huán)境監(jiān)測(cè)效果良好,但對(duì)環(huán)境要求高,需搭建滑桿供機(jī)器人滑行;趙靜[10]等設(shè)計(jì)了一種基于樹莓派的VR環(huán)境監(jiān)測(cè)機(jī)器人,解決了監(jiān)測(cè)對(duì)環(huán)境要求高的問題,但樹莓派成本較高。本文設(shè)計(jì)了一種基于STM32嵌入式系統(tǒng)的可移動(dòng)環(huán)境監(jiān)測(cè)機(jī)器人。通過(guò)控制平臺(tái)的搖桿模塊控制檢測(cè)平臺(tái)的移動(dòng),檢測(cè)平臺(tái)上通過(guò)藍(lán)牙實(shí)時(shí)傳送監(jiān)測(cè)數(shù)據(jù)給控制平臺(tái),并將環(huán)境參數(shù)等顯示在遠(yuǎn)程控制平臺(tái)的OLED上,且當(dāng)前方存在障礙物時(shí),檢測(cè)平臺(tái)發(fā)出警報(bào),操控者此時(shí)需改變行進(jìn)方向。該機(jī)器人具備環(huán)境監(jiān)測(cè)、無(wú)線傳輸、遠(yuǎn)程控制的功能,解決了監(jiān)測(cè)環(huán)境受限的問題,也降低了成本,對(duì)于推動(dòng)智慧環(huán)保的建設(shè)和檢查火災(zāi)等災(zāi)情情況,保障消防員安全等具有重要幫助。
該系統(tǒng)方案采用意法半導(dǎo)體公司生產(chǎn)的STM32F103C8T6微控制器作為機(jī)器人的主控芯片。其中,該系統(tǒng)由遠(yuǎn)程控制平臺(tái)和檢測(cè)平臺(tái)兩部分組成。其中,硬件電路由溫濕度傳感器模塊、光照傳感器、煙霧傳感器和超聲波測(cè)距模塊、OLED顯示模塊、蜂鳴器報(bào)警模板等組成。主要完成對(duì)環(huán)境中溫度、濕度、光照強(qiáng)度、障礙物距離和空氣中顆粒的濃度的測(cè)量及障礙物判斷和報(bào)警。軟件部分主要由藍(lán)牙、測(cè)試平臺(tái)的行進(jìn)算法和舵機(jī)控制算法組成。檢測(cè)平臺(tái)和遠(yuǎn)程控制平臺(tái)通過(guò)HC-05藍(lán)牙傳遞數(shù)據(jù)。遠(yuǎn)程控制設(shè)備的主控輸入有按鍵模塊和搖桿模塊;機(jī)器人的主控輸入有和超聲波測(cè)距模塊,4個(gè)傳感器的數(shù)據(jù)通過(guò)藍(lán)牙傳遞給遠(yuǎn)程控制設(shè)備的主控,再通過(guò)OLED分別顯示。通過(guò)按鍵模塊的4個(gè)按鍵實(shí)時(shí)更新對(duì)應(yīng)的4個(gè)傳感器的數(shù)據(jù)并通過(guò)OLED顯示,搖桿模塊控制機(jī)器人行進(jìn)方向的目標(biāo)?;谇度胧降沫h(huán)境監(jiān)測(cè)機(jī)器人系統(tǒng)總體設(shè)計(jì)如圖1所示。
圖1 系統(tǒng)構(gòu)成
具體實(shí)現(xiàn)流程如下:
1)操控遠(yuǎn)程控制平臺(tái)上的搖桿控制檢測(cè)平臺(tái)的行進(jìn)方向,搖桿的偏移度控制行進(jìn)速度。檢測(cè)平臺(tái)能夠?qū)崟r(shí)讀取與障礙物的距離,設(shè)定安全距離閾值,當(dāng)實(shí)時(shí)讀取的距離小于安全閾值時(shí),蜂鳴器報(bào)警,操控人員需改變行進(jìn)方向。
2)遠(yuǎn)程控制平臺(tái)上有4個(gè)按鍵,分別對(duì)應(yīng)機(jī)器人的溫濕度檢測(cè)模塊、光照檢測(cè)模塊、空氣質(zhì)量檢測(cè)模塊和超聲波測(cè)距模塊的數(shù)據(jù)讀取,并更新顯示在遠(yuǎn)程控制平臺(tái)的OLED上。
系統(tǒng)目標(biāo)為實(shí)現(xiàn)可遠(yuǎn)程控制的環(huán)境監(jiān)測(cè)機(jī)器人。能夠?qū)崟r(shí)監(jiān)測(cè)環(huán)境狀態(tài)、解決日常環(huán)境下監(jiān)測(cè)低效的難題,提高了測(cè)量精度,實(shí)現(xiàn)了智能化控制,因此需要實(shí)現(xiàn)以下兩個(gè)目標(biāo)。
1)高效性:若檢測(cè)平臺(tái)的MCU實(shí)時(shí)采集4個(gè)環(huán)境傳感器的監(jiān)測(cè)數(shù)據(jù),則系統(tǒng)總體的反應(yīng)速度將會(huì)被影響,且過(guò)于頻繁的數(shù)據(jù)接收將會(huì)使系統(tǒng)內(nèi)部系統(tǒng)穩(wěn)定性降低。因此設(shè)計(jì)的機(jī)器人系統(tǒng)通過(guò)按鍵控制讀取目標(biāo)傳感器的數(shù)值并在OLED更新顯示,避免了長(zhǎng)時(shí)間連續(xù)的接收冗雜傳感器數(shù)據(jù)的問題,能夠有效提高環(huán)境監(jiān)測(cè)的效率和實(shí)際情況下工作的穩(wěn)定性[11]。
2)智能化:環(huán)境監(jiān)測(cè)機(jī)器人前行的過(guò)程中會(huì)出現(xiàn)障礙物或道路崎嶇的困境,系統(tǒng)設(shè)定了障礙物安全距離閾值,當(dāng)真實(shí)距離小于閾值時(shí),蜂鳴器發(fā)出警報(bào),提示操作者更改行進(jìn)方向。
系統(tǒng)設(shè)計(jì)中需滿足硬件的使用要求及設(shè)計(jì)要求,參數(shù)的具體范圍如表1所示。
表1 系統(tǒng)相關(guān)參數(shù)表
系統(tǒng)硬件涉及到的硬件模塊主要有主控模塊、溫濕度傳感器電路、光照傳感器電路、煙霧傳感器電路和超聲波測(cè)距電路。
系統(tǒng)主控選擇意法半導(dǎo)體公司的基于Cortex-M3內(nèi)核的32位微控制器STM32F103C8T6作為主芯片,系統(tǒng)最高工作頻率可達(dá)72 MHz,內(nèi)存包含64 Kb的Flash和20 Kb的SRAM。其系統(tǒng)主要由4個(gè)控制單元和4個(gè)受控單元(SRAM、FLASH、FSMC和AHB2APBx)組成,其中AHB是一種高性能的系統(tǒng)總線,用于連接CPU和DMA等高性能模塊,由主模塊、從模塊和基礎(chǔ)結(jié)構(gòu)3個(gè)部分過(guò)程;APB是一種高級(jí)外圍總線,主要用于UART等外設(shè)的連接,其主模塊是APB橋,數(shù)據(jù)的傳輸均由主模塊發(fā)起、從模塊回應(yīng)。
且含有3個(gè)16位的計(jì)時(shí)器和1個(gè)16位的PWM計(jì)時(shí)器、2個(gè)SPI、3個(gè)UART,37個(gè)GPIO口和12位的ADC,由于其外設(shè)資源眾多,工作的時(shí)鐘頻率不盡相同,因此采用5個(gè)時(shí)鐘源,有8 MHz的系統(tǒng)內(nèi)部時(shí)鐘振蕩器HSI,40 MHz的實(shí)時(shí)時(shí)鐘振蕩器。芯片的封裝體積小,性價(jià)比高,更具實(shí)用性。
溫濕度傳感器選擇的型號(hào)是DHT11,是一款經(jīng)校準(zhǔn)后傳輸數(shù)字信號(hào)的復(fù)合型傳感器。該傳感器與MCU間通過(guò)DATA數(shù)據(jù)線傳輸,傳輸方式屬于半雙工通信方式。數(shù)據(jù)傳輸格式為一次傳輸40 bit,順序依次為:8 bit的溫度整數(shù)部分+8 bit的溫度小數(shù)部分+8 bit的濕度整數(shù)部分+8 bit的濕度小數(shù)部分+8 bit的校驗(yàn)和[12]。通過(guò)校驗(yàn)位判斷傳輸過(guò)程是否出錯(cuò),提高傳輸?shù)姆€(wěn)定性和高效性。
其電路應(yīng)包含一個(gè)電阻式感濕元件和一個(gè)NTC感溫元件。外界濕度越高,電阻值越?。?NTC感溫元件與1 kΩ的電阻串聯(lián),通過(guò)采集電阻兩端電壓值的變化來(lái)確定環(huán)境溫度。其中需要加入一個(gè)4.7 kΩ的上拉電阻,可以提高輸入信號(hào)的噪聲容限,增強(qiáng)電路的抗干擾能力。電路設(shè)計(jì)如圖2所示。
圖2 溫濕度傳感器的電路設(shè)計(jì)
光照傳感器選擇的型號(hào)是GY-30,采用BH1750FVI芯片。該傳感器有5個(gè)端口,除VCC和GND外,還有SCL、SDA和ADDR,因此BH1750FVI通過(guò)IIC協(xié)議與MCU進(jìn)行通信,其中ADDR在該傳感器中的作用為控制讀寫指令,當(dāng)ARRD=0xB8/0x46時(shí)為寫操作,ARRD=0xB9/0x47時(shí)為讀操作。MCU傳遞8 bit控制字,由7 bit的發(fā)送器地址和1 bit的寫命令組成,BH1750FVI收到后應(yīng)答,再由MCU發(fā)送測(cè)量指令,BH1750FVI收到后發(fā)送高8位的數(shù)據(jù),在單片機(jī)應(yīng)答后,在傳送低8位數(shù)據(jù),此時(shí)一次通信結(jié)束[13]。
BH1750內(nèi)部由光敏二極管、運(yùn)算放大器、ADC采集和晶振等組成。光敏二極管將光信號(hào)轉(zhuǎn)變?yōu)殡娏餍盘?hào),經(jīng)過(guò)運(yùn)算放大器放大后,通過(guò)ADC采集電壓,轉(zhuǎn)換成16位二進(jìn)制數(shù)存貯到內(nèi)部寄存器中。且光照強(qiáng)度越高,光電流越大,采集到的電壓越大。光照強(qiáng)度與電壓之間存在對(duì)應(yīng)關(guān)系,但二者之間不是嚴(yán)格的線性關(guān)系。BH1750FVI芯片內(nèi)部對(duì)于采集到的電壓又進(jìn)一步地進(jìn)行了線性處理,因此處理后的電壓與光照強(qiáng)度近似線性。
從BH1750采集到的數(shù)據(jù)并不是最終的光照強(qiáng)度,需要下列公式進(jìn)行轉(zhuǎn)換,其中,Value為實(shí)際值,Measured為測(cè)量值,trans為透光率,mode為模式:
(1)
圖3中,C3電源的濾波電容,能夠使工作性能更加穩(wěn)定。光照傳感器的電路設(shè)計(jì)如圖3所示。
圖3 光照傳感器電路設(shè)計(jì)
煙霧傳感器選擇的型號(hào)是MQ-135。對(duì)空氣中的硫化物、氨氣和污染氣體的靈敏度高,是適應(yīng)森林火災(zāi)監(jiān)測(cè)、城市環(huán)保等多場(chǎng)合的低成本傳感器。MQ-135有兩種輸出:AOUT和DOUT,分別對(duì)應(yīng)模擬量輸出和數(shù)字量輸出,選擇模擬量輸出,將LM393的輸出電壓作為參考值,按照換算關(guān)系:電壓每升高0.1 V,實(shí)際被測(cè)氣體的濃度增加200 pm。滿足以下?lián)Q算公式:
(2)
煙霧傳感器常用電路有兩種,本文選用比較器電路監(jiān)控。將MQ135的2引腳,即隨煙霧濃度變化的直流信號(hào)做比較器的2腳,IN作為比較器的門檻電壓。當(dāng)煙霧濃度高于門檻電壓時(shí),LM393的輸出電平為0 V,則D1燈亮;當(dāng)煙霧濃度低于門檻電壓時(shí),LM393的輸出電平為VCC,D1燈滅。電路設(shè)計(jì)如圖4所示。
圖4 煙霧傳感器的電路設(shè)計(jì)
超聲波測(cè)距模塊選擇的型號(hào)為HC-SR04,有4個(gè)端口:VCC、GND、Trig(控制端)、Echo(接收端)。其中模塊會(huì)自動(dòng)發(fā)送方波,即通過(guò)TRIG端通過(guò)傳輸10 μs的高電平型號(hào)觸發(fā)測(cè)距,此時(shí)模塊會(huì)自動(dòng)發(fā)送8個(gè)40 kHz的方波,并檢測(cè)是否有信號(hào)返回。若前方存在障礙物,則通過(guò)Echo輸出高電平,則距障礙物的距離dis(m)為:
(3)
其中:Vvoice為聲速,t為超聲波從發(fā)射到返回的時(shí)間。
圖5 超聲波測(cè)距的電路設(shè)計(jì)
超聲波電路主要由放大電路、選頻電路和比較電路組成。其中Net端是漏極開路。當(dāng)開始測(cè)距時(shí),TRIG端發(fā)送一個(gè)10 μs的高電平觸發(fā)脈沖,此時(shí)NET端引腳置低,濾除干擾信號(hào),此時(shí)該模塊發(fā)送8個(gè)40 kHz的脈沖來(lái)啟動(dòng)定時(shí)器和開中斷,等待接收到接收觸發(fā)中斷信號(hào)后再關(guān)閉定時(shí)器、中斷,計(jì)算計(jì)時(shí)器的時(shí)間。在此電路中,用到兩級(jí)運(yùn)放,均由GS324運(yùn)算放大器放大,該放大器具有低輸入偏置電流、失調(diào)電流和快速電壓轉(zhuǎn)換率的優(yōu)點(diǎn)。在第一級(jí)放大中,放大倍數(shù)為6.2倍,二級(jí)放大倍數(shù)為7.5倍。超聲波的電路設(shè)計(jì)如圖5所示。
系統(tǒng)的軟件部分采用STM32F103C8T6系統(tǒng)進(jìn)行C語(yǔ)言的編輯,Keil 5 MDK編譯軟件作為系統(tǒng)的編譯平臺(tái)。
首先完成各類傳感器的初始化和藍(lán)牙配對(duì),OLED顯示各傳感器參數(shù)的顯示界面,若此時(shí)按鍵未按下,機(jī)器人跟隨遠(yuǎn)程控制設(shè)備的控制狀態(tài)行進(jìn)或停止;若按鍵按下,則讀取對(duì)應(yīng)傳感器的數(shù)據(jù),并通過(guò)OLED更新顯示,并判斷此時(shí)距障礙物的距離是否小于安全閾值,若小于安全閾值,則蜂鳴器報(bào)警,發(fā)出警告。軟件設(shè)計(jì)部分主要分為三方面:藍(lán)牙配對(duì)、串口中斷算法和機(jī)器人行進(jìn)控制算法。具體流程如圖6所示。
圖6 軟件系統(tǒng)的設(shè)計(jì)流程圖
環(huán)境監(jiān)測(cè)機(jī)器人的藍(lán)牙選擇了正點(diǎn)原子公司的HC-05模塊。該模塊是一款高性能、主從一體的藍(lán)牙串口,支持波特率范圍為4 800~1 382 400 baud,機(jī)器人的藍(lán)牙波特率設(shè)定為38 400 baud,8位數(shù)據(jù)位,1位停止位,無(wú)校驗(yàn)位。機(jī)器人傳輸讀取到的傳感器數(shù)據(jù)至遠(yuǎn)程控制設(shè)備,需通過(guò)藍(lán)牙的AT指令完成藍(lán)牙配對(duì),并設(shè)置主機(jī)和從機(jī)。
實(shí)際應(yīng)用中的步驟如下:
1)進(jìn)入AT模式。將AT引腳置高,當(dāng)藍(lán)牙模塊state燈變?yōu)槁W,則表明已經(jīng)進(jìn)入AT模式;
2)恢復(fù)藍(lán)牙的默認(rèn)狀態(tài):打開串口調(diào)試助手,調(diào)用AT+ORGL/r/n 即恢復(fù)默認(rèn)設(shè)置;
3)設(shè)置藍(lán)牙名稱:配置第一個(gè)藍(lán)牙的名稱:AT+NAME= Bluetooth-Marster/r/n(主),第二個(gè)藍(lán)牙:AT+NAME= Bluetooth-Slave/r/n(從);
4)設(shè)置藍(lán)牙的配對(duì)碼為:AT+PSWD= 0000/r/n;
5)將第一個(gè)藍(lán)牙設(shè)置為主機(jī): AT+ROLE=1/r/n,并將第二個(gè)藍(lán)牙設(shè)置為從機(jī):AT+ROLE=0/r/n;
6)配置串口參數(shù):配置波特率、停止位和校驗(yàn)位:AT+UART=115 200,0,0/r/n,設(shè)置藍(lán)牙通信串口波特率為9 600,停止位1位,無(wú)校驗(yàn)位;
7)查詢地址: AT+ADDR?/r/n,得到地址為:2015:2:120758;
8)綁定藍(lán)牙: AT+CMODE=1/r/n(調(diào)節(jié)為綁定模式) AT+BIND=2015,2,120758/r/n
至此,藍(lán)牙已完成配對(duì)。此時(shí)機(jī)器人可實(shí)現(xiàn)與遠(yuǎn)程控制設(shè)備的數(shù)據(jù)傳輸。
3.2.1 遠(yuǎn)程控制設(shè)備的傳輸協(xié)議
藍(lán)牙完成配對(duì)后,通過(guò)串口傳輸數(shù)據(jù)。遠(yuǎn)程控制設(shè)備控制機(jī)器人運(yùn)動(dòng)和按鍵選擇對(duì)應(yīng)的傳感器讀取數(shù)據(jù)需要通過(guò)串口函數(shù)USART_SendData()傳遞給機(jī)器人,串口通信協(xié)議如表2所示,采用數(shù)據(jù)幀格式:{0xFF、0xFE、spe_dat,x_value&0x00FF、x_value&0xFF00、y_value&0x00FF、y_value&0xFF00}。
表2 遠(yuǎn)程控制設(shè)備傳輸協(xié)議的語(yǔ)法解釋
由數(shù)據(jù)幀順序,0xFF和0xFE為數(shù)據(jù)幀的幀頭,兩個(gè)幀頭能夠大幅提高數(shù)據(jù)傳遞的準(zhǔn)確性,同時(shí)避免過(guò)多幀頭導(dǎo)致的數(shù)據(jù)傳輸效率低的問題。spe_dat是中斷檢測(cè)到的被按下按鍵的值,取值為0-4,0則是未按下,無(wú)需檢測(cè),1-4分別對(duì)應(yīng)遠(yuǎn)程控制設(shè)備上的4個(gè)按鍵、也對(duì)應(yīng)檢測(cè)平臺(tái)的4個(gè)傳感器:空氣質(zhì)量傳感器、溫濕度傳感器、光照傳感器和超聲波傳感器。x_value&0x00FF和x_value&0xFF00分別代表x_value的低八位和高八位,y_value&0x00FF和y_value&0xFF00分別代表y_value的第八位和高八位。通過(guò)將高八位左移八位,與低八位相加,即可恢復(fù)x_value和y_value的原始數(shù)據(jù)。
x_value=x_value&0x00FF+x_value&0xFF00?8
(4)
y_value=y_value&0x00FF+y_value&0xFF00?8
(5)
檢測(cè)平臺(tái)獲得x_value和y_value的原數(shù)據(jù)后,可按照機(jī)器人的行進(jìn)控制算法,計(jì)算運(yùn)行方向。
3.2.2 機(jī)器人的傳輸協(xié)議
檢測(cè)平臺(tái)接收到通過(guò)串口傳遞來(lái)的按鍵數(shù)值后,讀取響應(yīng)的傳感器數(shù)據(jù),將讀取到的參數(shù)再次通過(guò)串口傳輸,串口傳輸協(xié)議如表3所示。
由于一次僅傳輸一個(gè)傳感器的讀取數(shù)據(jù),此次的傳輸?shù)木唧w值根據(jù)檢測(cè)平臺(tái)接收到的按鍵值變化。當(dāng)檢測(cè)平臺(tái)收到遠(yuǎn)程控制設(shè)備傳來(lái)的參數(shù)spe_dat=1時(shí),此時(shí)對(duì)應(yīng)空氣質(zhì)量傳感器,讀取到空氣質(zhì)量數(shù)據(jù)air,則Temp1此時(shí)為空氣質(zhì)量air的低八位,Temp2此時(shí)為空氣質(zhì)量air的高八位,光照傳感器和距離傳感器的格式也是如此。當(dāng)機(jī)器人收到遠(yuǎn)程控制設(shè)備傳來(lái)的參數(shù)spe_dat=2時(shí),此時(shí)對(duì)應(yīng)溫濕度傳感器,讀取到溫度數(shù)據(jù)wendu、濕度數(shù)據(jù)shidu,則Temp1此時(shí)為溫度值,Temp2此時(shí)為濕度值。
表3 系統(tǒng)間傳輸協(xié)議的語(yǔ)法解釋
3.3.1 舵機(jī)控制算法
舵機(jī)是一種帶有輸出軸的伺服電機(jī),是由可變寬度的脈沖信號(hào)進(jìn)行控制的。PWM信號(hào)是脈寬調(diào)制信號(hào),即通過(guò)改變脈沖時(shí)間寬度實(shí)現(xiàn)信號(hào)控制,舵機(jī)的PWM信號(hào)控制周期是20 ms,基準(zhǔn)寬度為1.5 ms,即對(duì)應(yīng)圖7中的中間位置,此時(shí)的轉(zhuǎn)動(dòng)角度為90°。脈沖持續(xù)時(shí)間每增加/減少0.5 ms,對(duì)應(yīng)轉(zhuǎn)動(dòng)順時(shí)針/逆時(shí)針45°。本系統(tǒng)中,檢測(cè)平臺(tái)選用的舵機(jī)型號(hào)為MG995R,為180°可轉(zhuǎn)動(dòng)舵機(jī),可控制的角度范圍為0~180°,脈沖寬度范圍為0.5~2.5 ms[14],脈沖范圍對(duì)應(yīng)的多級(jí)轉(zhuǎn)動(dòng)如圖7所示。
圖7 PWM信號(hào)控制舵機(jī)示意圖
1)分頻值的確定:脈沖輸出是利用通用定時(shí)器通過(guò)GPIO引腳輸出。檢測(cè)平臺(tái)的主控中選用定時(shí)器3,先初始化TIM3,選擇向上計(jì)數(shù)模式[15]。由舵機(jī)信號(hào)的控制周期20 ms計(jì)算對(duì)應(yīng)頻率脈沖50 Hz。
設(shè)置自動(dòng)重裝載寄存器周期的值為1 999,TIMx時(shí)鐘頻率的預(yù)分頻值為719,根據(jù)分頻計(jì)算公式可知:
(6)
式中,arr為PWM輸出高電平的計(jì)數(shù)時(shí)間,psc為預(yù)分頻計(jì)數(shù)器的值。
2)由信號(hào)控制舵機(jī)轉(zhuǎn)動(dòng):定時(shí)器輸出模式選擇PWM1模式。在輸出不同高電平占空比的過(guò)程中需要通過(guò)調(diào)用定時(shí)器通道1比較函數(shù)TIM_SetCompare1(TIM2,arr)來(lái)裝填TIMx->CCR1寄存器的值。第一個(gè)參數(shù)TIM2是操作的定時(shí)器,第二個(gè)參數(shù)arr是輸出PWM的高電平計(jì)數(shù)時(shí)間。通過(guò)設(shè)定不同的計(jì)數(shù)時(shí)間,就可以輸出不同高電平占空比的PWM方波[16]。通過(guò)輸出的舵機(jī)信號(hào)來(lái)控制檢測(cè)平臺(tái)的方向轉(zhuǎn)動(dòng)角度,定義函數(shù)Steer_Angle(u16arr);
void Steer_Angle(u16 arr)
{
TIM_SetCompare1(TIM2,arr);
}
其中,arr的值為機(jī)器人接收到的搖桿模塊x值經(jīng)過(guò)轉(zhuǎn)換后,范圍在[50,250]之間。將arr值裝填進(jìn)入TIMx->CCR1之后,arr的值將會(huì)與TIMx_CNT寄存器的計(jì)數(shù)值對(duì)比,當(dāng)計(jì)數(shù)值低于arr時(shí)引腳為高電平,當(dāng)計(jì)數(shù)值高于arr時(shí)引腳為低電平,因此,通過(guò)控制arr的值就可以控制舵機(jī)輸出對(duì)應(yīng)的角度中arr的值與角度轉(zhuǎn)換關(guān)系如下所示:
(7)
其中:θ為舵機(jī)輸出角度,當(dāng)其為90°時(shí),檢測(cè)平臺(tái)方向回正。
3.3.2 檢測(cè)平臺(tái)行進(jìn)控制算法
圖8為行進(jìn)控制算法的流程圖,通過(guò)遠(yuǎn)程控制設(shè)備的搖桿模塊轉(zhuǎn)動(dòng)控制檢測(cè)平臺(tái)前進(jìn)、后退和左右轉(zhuǎn)彎的方向,搖桿模塊具有(X,Y)2軸模擬輸出,且輸出電壓值x和y的范圍為0~4 095。x和y的數(shù)值由藍(lán)牙通過(guò)USART通信傳遞給檢測(cè)平臺(tái)的主控。由于檢測(cè)平臺(tái)是由舵機(jī)控制轉(zhuǎn)向,因此將轉(zhuǎn)化后用于控制舵機(jī)的參數(shù)tempx控制范圍在[50,250],對(duì)應(yīng)舵機(jī)的占空比(0.5~2.5 ms),同時(shí)對(duì)應(yīng)舵機(jī)的轉(zhuǎn)動(dòng)角度[-90°,90°]。將控制方向的參數(shù)tempy控制范圍在[-100,100],利用轉(zhuǎn)換公式即可完成轉(zhuǎn)換:
tempx=150-(x-2 048)*0.048 828 125
(8)
tempy=(y-2 048)*0.048 828 125
(9)
圖8 機(jī)器人行進(jìn)控制算法流程圖
控制前進(jìn)/后退方向:當(dāng)tempy>0時(shí),標(biāo)記方向dir=1,即檢測(cè)平臺(tái)前進(jìn);
當(dāng)tempy<0時(shí),標(biāo)記方向dir=0,即檢測(cè)平臺(tái)后退,并將取反,取絕對(duì)值。
控制左右轉(zhuǎn)彎方向:由于tempx和tempy的范圍不一致,因此先通過(guò)公式
tx=tempx-150
(10)
因此將tx的范圍控制為[-100,100]。行進(jìn)速度為:
(11)
通過(guò)函數(shù)Steer_Angle(tempx)控制左右轉(zhuǎn)彎角度,Motor_Power(speed,dir)函數(shù)控制行進(jìn)方向和速度。
此部分函數(shù)定義為Motor_Power(power,dir), power為速度,dir為前進(jìn)和后退的標(biāo)志位,代碼如下:
void Motor_Power(u16 power,u8 dir)
{
u8 arr;
if(dir==1)
{
arr = power;
TIM_SetCompare1(TIM4,arr);
TIM_SetCompare3(TIM4,arr);
TIM_SetCompare2(TIM4,0);
TIM_SetCompare4(TIM4,0);
}
else
{
arr = power;
TIM_SetCompare1(TIM4,0);
TIM_SetCompare3(TIM4,0);
TIM_SetCompare2(TIM4,arr);
TIM_SetCompare4(TIM4,arr);
}
}
當(dāng)計(jì)算出的y<0時(shí),dir=0,檢測(cè)平臺(tái)后退;計(jì)算出的y>0時(shí),dir=1,檢測(cè)平臺(tái)前進(jìn)。此處調(diào)用了庫(kù)函數(shù)TIM_SetCompare1 (TIM4,arr),該函數(shù)的作用是設(shè)置TIM4->CCR1的值,通過(guò)比較TIM4_CNT與TIM4->CCR1, 就可以控制定時(shí)器引腳高低電平的輸出,進(jìn)而通過(guò)設(shè)定不同的arr就可以輸出不同高電平占空比的PWM波來(lái)類比不同的電壓模擬量,以此來(lái)控制檢測(cè)平臺(tái)前行的速度。
由上文的舵機(jī)控制算法和檢測(cè)平臺(tái)行進(jìn)控制算法,就可以將遠(yuǎn)程控制設(shè)備的X,Y雙軸模擬偏移量,通過(guò)藍(lán)牙傳輸給檢測(cè)平臺(tái),進(jìn)而控制其方向和速度。
為了驗(yàn)證本文設(shè)計(jì)的基于嵌入式的可移動(dòng)環(huán)境監(jiān)測(cè)機(jī)器人在現(xiàn)實(shí)生活中的環(huán)境監(jiān)測(cè)準(zhǔn)確性,與各試驗(yàn)點(diǎn)的真實(shí)環(huán)境數(shù)據(jù)進(jìn)行對(duì)比。實(shí)驗(yàn)地點(diǎn)分別在操場(chǎng)、實(shí)驗(yàn)室和地下停車場(chǎng),各試驗(yàn)點(diǎn)經(jīng)過(guò)30次實(shí)驗(yàn)。本次實(shí)驗(yàn)主要針對(duì)傳感器讀取的準(zhǔn)確度測(cè)試[17-18],同時(shí)判斷其遇障報(bào)警功能。
首先測(cè)試環(huán)境狀態(tài)監(jiān)測(cè)機(jī)器人的遠(yuǎn)程控制功能是否正常,通過(guò)對(duì)檢測(cè)平臺(tái)及遠(yuǎn)程控制設(shè)備進(jìn)行供電,待藍(lán)牙連接完成后,推動(dòng)搖桿進(jìn)行上下左右移動(dòng)的測(cè)試,測(cè)試結(jié)果表明,檢測(cè)平臺(tái)可以根據(jù)發(fā)出的指示進(jìn)行運(yùn)動(dòng),當(dāng)改變搖桿在Y軸上的狀態(tài)時(shí),檢測(cè)平臺(tái)會(huì)相應(yīng)的向前向后變速行駛,當(dāng)改變搖桿在X軸上的狀態(tài)時(shí),檢測(cè)平臺(tái)的舵機(jī)會(huì)相應(yīng)的轉(zhuǎn)動(dòng),決定檢測(cè)平臺(tái)的前進(jìn)方向。
檢測(cè)平臺(tái)的舵機(jī)跟隨遠(yuǎn)程控制設(shè)備的轉(zhuǎn)動(dòng)正常行駛,經(jīng)過(guò)實(shí)際的測(cè)試表明,檢測(cè)平臺(tái)可以很好的聽從遠(yuǎn)程控制設(shè)備的命令進(jìn)行移動(dòng),可以滿足日常場(chǎng)景下的遠(yuǎn)程控制需求。
接著對(duì)各傳感器的檢測(cè)功能進(jìn)行測(cè)試,看其是否能夠傳回實(shí)時(shí)環(huán)境的目標(biāo)監(jiān)測(cè)數(shù)據(jù),傳送回來(lái)的數(shù)據(jù)在OLED上更新顯示。
OLED顯示屏上包括了DHT11溫濕度傳感器、GY-30光照傳感器、HCSR04超聲波傳感器、MQ135空氣質(zhì)量檢測(cè)傳感器回傳回來(lái)的各種數(shù)據(jù),從上到下分別是距離、溫度、濕度、光照強(qiáng)度、空氣質(zhì)量等環(huán)境監(jiān)測(cè)狀態(tài)[19]。實(shí)驗(yàn)的測(cè)試結(jié)果如下:
經(jīng)過(guò)30次測(cè)試,部分測(cè)試數(shù)據(jù)如表4所示。
表4 實(shí)驗(yàn)室部分測(cè)試結(jié)果
操場(chǎng)測(cè)試結(jié)果:經(jīng)過(guò)30次測(cè)試,部分測(cè)試數(shù)據(jù)如表5所示。
表5 操場(chǎng)部分測(cè)試結(jié)果
地下停車場(chǎng)測(cè)試結(jié)果:經(jīng)過(guò)30次測(cè)試,部分測(cè)試數(shù)據(jù)如表6所示。
由上述在3個(gè)不同的測(cè)試地點(diǎn)中,檢測(cè)平臺(tái)各傳感器的測(cè)試結(jié)果和實(shí)際結(jié)果對(duì)比基本一致,綜合準(zhǔn)確率達(dá)到97.7%。
表6 地下停車場(chǎng)部分測(cè)試結(jié)果
但在實(shí)驗(yàn)室和地下停車場(chǎng)時(shí),由于在室內(nèi)時(shí)受到照明燈的影響,在不同的位置上光照強(qiáng)度會(huì)由于有輕微波動(dòng),因此在實(shí)驗(yàn)室和地下停車場(chǎng)的光照強(qiáng)度有波動(dòng)。本次測(cè)試中,將安全距離設(shè)定為10 cm,在實(shí)驗(yàn)過(guò)程中遇到障礙物時(shí)報(bào)警功能正常。綜上,實(shí)驗(yàn)結(jié)果達(dá)到預(yù)期目標(biāo)。
未來(lái)無(wú)論在消防救助領(lǐng)域還是在狹隘、復(fù)雜空間下的環(huán)境監(jiān)測(cè)和高污染地區(qū)的環(huán)境檢測(cè)等,可移動(dòng)的環(huán)境監(jiān)測(cè)機(jī)器人都將發(fā)揮巨大的作用,推進(jìn)智慧環(huán)保落地,檢測(cè)危險(xiǎn)環(huán)境、保護(hù)消防員安全[20-21]。本文設(shè)計(jì)的基于嵌入式的可移動(dòng)環(huán)境監(jiān)測(cè)機(jī)器人能夠通過(guò)遠(yuǎn)程控制平臺(tái)的搖桿控制檢測(cè)平臺(tái)行駛,并通過(guò)檢測(cè)平臺(tái)上的傳感器完成對(duì)周圍環(huán)境的高精度檢測(cè),通過(guò)藍(lán)牙傳遞回遠(yuǎn)程控制平臺(tái),并通過(guò)OLED顯示實(shí)時(shí)的監(jiān)控?cái)?shù)據(jù)。經(jīng)過(guò)多場(chǎng)景測(cè)試,環(huán)境監(jiān)測(cè)機(jī)器人具有較高的穩(wěn)定性,各項(xiàng)指標(biāo)達(dá)到了預(yù)期結(jié)果,執(zhí)行任務(wù)時(shí)運(yùn)行穩(wěn)定。未來(lái)考慮將藍(lán)牙換用傳輸距離更遠(yuǎn)的WIFI模塊;加入攝像頭模塊,返回檢測(cè)現(xiàn)場(chǎng)環(huán)境狀態(tài)和拓展環(huán)境監(jiān)測(cè)的指標(biāo)[22]。