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