王尊冉+龐俊騰+陳均健+裴宇+杜啟亮??
摘要:為實(shí)現(xiàn)具有環(huán)境數(shù)據(jù)采集功能的智能小車控制,設(shè)計(jì)并實(shí)現(xiàn)了基于Arduno控制板的控制系統(tǒng)。選用Arduino Mega 2560控制板為控制核心,搭配DS1B20溫度傳感器、DHT11濕度傳感器、MQ2煙霧傳感器、超聲波測(cè)距傳感器、EP8266Wifi通訊模塊組成硬件系統(tǒng);采用PWM脈寬調(diào)制技術(shù)調(diào)節(jié)小車行進(jìn)速度,PID算法調(diào)節(jié)小車的行進(jìn)方向。調(diào)試結(jié)果表明,小車具有基于Wifi的無線遙控操作功能,能夠?qū)ζ鹚幁h(huán)境中的溫度、濕度、煙霧數(shù)據(jù)進(jìn)行實(shí)時(shí)測(cè)量、采集和傳輸,并能自動(dòng)檢測(cè)前方障礙物。證明了基于Arduino控制板的控制系統(tǒng)在環(huán)境數(shù)據(jù)采集智能小車中應(yīng)用的可行性。
關(guān)鍵詞:Arduino;數(shù)據(jù)采集智能小車;Labview;脈寬調(diào)制;PID
中圖分類號(hào):TP29文獻(xiàn)標(biāo)識(shí)碼:ADOI:10.3969/j.issn.10036199.2017.01.014
1引言
在特定環(huán)境下,比如隧道、沙漠、危險(xiǎn)區(qū)域等,如果采用傳統(tǒng)的人工方式采集環(huán)境數(shù)據(jù),實(shí)現(xiàn)難度大,可操作性不強(qiáng),甚至?xí)邪踩[患。而具有數(shù)據(jù)采集功能的智能小車,可代替或輔助人力完成數(shù)據(jù)采集的任務(wù),與傳統(tǒng)的人工采集方式相比,可操作和實(shí)用性更強(qiáng),環(huán)境數(shù)據(jù)采集難度大大降低,且實(shí)現(xiàn)成本一般低于人工采集方式,性價(jià)比高。數(shù)據(jù)采集智能小車應(yīng)具有遠(yuǎn)程控制和自適應(yīng)控制的功能,通過安裝各種傳感器可實(shí)現(xiàn)對(duì)溫度、濕度、煙霧顆粒度等物理量的采集,并能通過無線通訊返回所采集的環(huán)境數(shù)據(jù),同時(shí)還應(yīng)具有自動(dòng)避障的功能。
Arduino是一個(gè)開放源代碼的單芯片微控制器采用基于開放源代碼的軟硬件平臺(tái),建構(gòu)于簡(jiǎn)易輸出/輸入(simple I/O)界面板,并且具有使用類似Java、C語言的Processing/Wiring開發(fā)環(huán)境[1]。它將單片機(jī)編程中許多常用的功能模塊化后封裝成一個(gè)個(gè)子函數(shù),可供開發(fā)者調(diào)用,所以開發(fā)者只需著眼于程序的邏輯實(shí)現(xiàn)而不必關(guān)心底層函數(shù)的具體設(shè)計(jì),降低了開發(fā)的難度。此外,開發(fā)人員可將編寫好的程序通過USB下載到Arduino開發(fā)板,程序的調(diào)試也變得相對(duì)容易[2]。
本文基于Arduino控制板設(shè)計(jì)了數(shù)據(jù)采集智能小車的控制系統(tǒng)方案,使其具有遠(yuǎn)程控制和視頻傳輸功能,可實(shí)時(shí)采集并傳輸數(shù)據(jù)信息。
2總體架構(gòu)
2.1機(jī)電結(jié)構(gòu)
本文所述智能小車采用亞克力材料制作車架,采用2主動(dòng)輪+2從動(dòng)輪的運(yùn)動(dòng)機(jī)構(gòu),兩個(gè)直流電機(jī)直接驅(qū)動(dòng)主動(dòng)輪,利用差速實(shí)現(xiàn)轉(zhuǎn)向,采用鋰電池供電。
2.2控制系統(tǒng)的總體架構(gòu)
智能小車的控制系統(tǒng)分為幾大模塊,包括Arduino控制板模塊、傳感器數(shù)據(jù)采集模塊、電源模塊、電機(jī)及驅(qū)動(dòng)模塊、上位機(jī)模塊[3]。圖1所示為智能小車控制系統(tǒng)的總體架構(gòu)。
4.1.1整體程序
在程序設(shè)計(jì)中,一開始程序進(jìn)行初始條件設(shè)置,比如設(shè)置波特率、中斷條件以及管腳屬性。然后進(jìn)入循環(huán)結(jié)構(gòu),在循環(huán)結(jié)構(gòu)中接收數(shù)據(jù)和處理數(shù)據(jù)、執(zhí)行命令、收集數(shù)據(jù)和發(fā)送數(shù)據(jù)。
當(dāng)上位機(jī)向下位機(jī)發(fā)送數(shù)據(jù),下位機(jī)檢測(cè)有數(shù)據(jù)輸入,則將數(shù)據(jù)存在接收數(shù)據(jù)緩沖器中,再利用相關(guān)算法將數(shù)據(jù)轉(zhuǎn)化為可執(zhí)行命令,從而改變小車的狀態(tài),如向左、向右或者進(jìn)行PID調(diào)節(jié)等等;當(dāng)下位機(jī)收集完有關(guān)環(huán)境參數(shù)數(shù)據(jù)后,準(zhǔn)備發(fā)送數(shù)據(jù),則會(huì)將數(shù)據(jù)放在發(fā)送數(shù)據(jù)寄存器,等待程序去執(zhí)行發(fā)送;同時(shí)下位機(jī)會(huì)根據(jù)小車狀態(tài)進(jìn)行必要的調(diào)節(jié),如當(dāng)小車向前或向后運(yùn)行時(shí),下位機(jī)會(huì)通過PID調(diào)節(jié)去控制小車左右輪子的速度一致。整個(gè)過程是不斷循環(huán)進(jìn)行。程序流程圖如圖9所示。
4.1.2運(yùn)動(dòng)控制子程序
在整個(gè)程序運(yùn)行中,程序不斷循環(huán)檢測(cè)是否有數(shù)據(jù)輸入,如果有就將字符串?dāng)?shù)據(jù)轉(zhuǎn)化為單個(gè)字符,然后存到一個(gè)數(shù)組中,再通過for循環(huán)判斷命令,對(duì)命令做出動(dòng)作。流程如下:
4.1.3數(shù)據(jù)采集子程序
各種傳感器將數(shù)據(jù)送到I/O口,等待CPU處理其他事件,然后CPU到達(dá)提取數(shù)據(jù)階段,會(huì)從I/O口提取數(shù)據(jù),并轉(zhuǎn)化為字符串類型,儲(chǔ)存到內(nèi)存塊中,等待發(fā)送[6]。數(shù)據(jù)采集子程序如圖11所示。
4.1.4無線通訊模塊
當(dāng)CUP將數(shù)據(jù)送到輸出數(shù)據(jù)緩沖區(qū)時(shí),WIFI模塊會(huì)直接在TXD端口將數(shù)據(jù)送到上位機(jī)接口;當(dāng)上位機(jī)將數(shù)據(jù)送給WIFI模塊時(shí),WIFI模塊會(huì)直接將數(shù)據(jù)送到Arduino的RXD端口,并存在數(shù)據(jù)緩沖區(qū)。無線通訊模塊程序流程圖如圖12所示。
4.2Labview上位機(jī)設(shè)計(jì)
4.2.1開發(fā)工具及關(guān)鍵技術(shù)
基于對(duì)數(shù)據(jù)采集和遠(yuǎn)程控制的需求,以Labview為平臺(tái)開發(fā)一套數(shù)據(jù)采集系統(tǒng),通過TCP協(xié)議實(shí)現(xiàn)PC端上位機(jī)界面經(jīng)Wifi模塊與Arduino小車的通訊,具有數(shù)據(jù)接收、參數(shù)設(shè)置等功能。程序主要包括兩個(gè)部分:前面板(即人機(jī)界面)和流程圖程序[7]。根據(jù)TCP協(xié)議,設(shè)定PC機(jī)為服務(wù)器,Arduino小車作為客戶端,其通訊流程包括:PC 機(jī)先對(duì)指定的小車Wifi模塊端口監(jiān)聽并處于等待連接狀態(tài);而作為客戶端的數(shù)據(jù)采集端經(jīng)Wifi模塊端口向服務(wù)器端發(fā)出連接請(qǐng)后,若PC端響應(yīng)則可,向客戶端發(fā)送參數(shù)指令,同時(shí)也可讀取客戶端發(fā)送的數(shù)據(jù),并讀取客戶端反饋的表示確認(rèn)握手成功。
4.2.2上位機(jī)軟件結(jié)構(gòu)設(shè)計(jì)
上位機(jī)結(jié)構(gòu)主要由三部分組成,分別是:
(1)讀取并顯示客戶端發(fā)送的數(shù)據(jù),其Labview程序圖如圖13所示,其對(duì)應(yīng)的程序流程圖如圖14所示。
設(shè)置參數(shù),并將其發(fā)送到客戶端,其Labview程序圖如圖15所示,其對(duì)應(yīng)的程序流程圖如圖16所示。
(2)顯示客戶端采集的視頻,其對(duì)應(yīng)的Labview程序圖如圖17所示,其對(duì)應(yīng)的程序流程圖如圖18所示。5調(diào)試
5.1硬件制作裝配調(diào)試
整體實(shí)物圖如下圖,超聲波測(cè)距模塊和攝像頭安裝在車頭前中間,其余傳感器安裝在兩邊,WiFi模塊放置在車的中間,兩個(gè)電機(jī)驅(qū)動(dòng)器安裝在中間兩邊,如圖19所示。