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