張瑋 楊森
摘 要:該文介紹了WIFI視頻監(jiān)控智能小車的上位機視頻監(jiān)控,鼠標(biāo)軌跡控制智能小車的實現(xiàn)方法。在虛擬儀器軟件LabVIEW2014環(huán)境下,用圖形化編程語言編程實現(xiàn)TCP通信以及串口通信,使得LabVIEW上位機程序采集利用攝像頭所拍攝到的圖像進行實時監(jiān)控,和下位機硬件的四路驅(qū)動進行數(shù)據(jù)交換,控制智能小車的運動。通訊方式上采用藍牙、WIFI兩種方式并用,適用于各種平臺。文章詳細介紹了上位機軟件平臺的數(shù)據(jù)采集、數(shù)據(jù)處理分析、數(shù)據(jù)存儲以及讀取,最終實現(xiàn)了網(wǎng)絡(luò)攝像頭的實時監(jiān)控,四路電機的鼠標(biāo)軌跡控制。經(jīng)驗證,系統(tǒng)穩(wěn)定,控制方式靈活,可拓展性強。
關(guān)鍵詞:WIFI通訊 視頻監(jiān)控 LabVIEW 智能小車 鼠標(biāo)軌跡控制
中圖分類號:TP24 文獻標(biāo)識碼:A 文章編號:1674-098X(2016)06(a)-0070-05
隨著科技的發(fā)展,智能化已經(jīng)融入了平常百姓的生活,對智能化機器人的控制也變得至關(guān)重要,但是目前市面上多數(shù)智能化系統(tǒng)采用的是單片機和上位機PC相結(jié)合的方式,而且上位機編程環(huán)境大多采用VB\VC等進行設(shè)計,這一種系統(tǒng)優(yōu)點明顯,就是下位機單片機的價格便宜,但同樣缺點也明顯,那就是上位機編程語言的編程及調(diào)試過程非常復(fù)雜,編程的成本高昂。當(dāng)然,還有一種就是基于美國NI公司的硬件采集卡和上位機LabVIEW編程軟件的設(shè)計,這種方式的優(yōu)點是上位機采用的是圖形化編程語言,編程簡單易上手,而且后臺自動調(diào)試避免大量編程錯誤出現(xiàn),編程以及調(diào)試非常便捷,缺點是NI硬件采集卡較為昂貴,因此該設(shè)計將以上兩種方式融合為一體,利用上位機LabVIEW和下位機單片機進行結(jié)合,既造價低廉又具有簡單可靠的編程調(diào)試環(huán)境。
1 系統(tǒng)總體方案設(shè)計
此項目設(shè)計了一套帶有避障功能的智能小車系統(tǒng),可以實現(xiàn)網(wǎng)絡(luò)攝像頭實時監(jiān)控,通過上位機可以用鼠標(biāo)軌跡控制小車的運動軌跡。上位機部分程序可以通過藍牙或者WIFI兩種方式和下位機硬件小車部分單片機進行數(shù)據(jù)交換,進行控制信號的傳遞。上位機程序采用LabVIEW進行編寫,下位機單片機程序采用Keil進行編寫。其系統(tǒng)整體硬件框圖如圖1所示。
2 硬件設(shè)計和選型
系統(tǒng)下位機硬件部分由7部分組成,分別為基于STC89C52芯片的單片機主控模塊、超聲波避障模塊、WIFI數(shù)傳模塊、HC06藍牙模塊、高清攝像頭及其舵機模塊、42步進電機及A4988步進電機驅(qū)動、電源模塊構(gòu)成。
項目所用各個模塊在硬件選用時遵循性價比最高、可拓展性強的原則進行選用,以便于系統(tǒng)功能拓展時下位機硬件部分的改動。下面對硬件核心部件進行介紹。
2.1 電機及其驅(qū)動模塊
小車采用4個A4988驅(qū)動來驅(qū)動4個42步進電機。A4988是一個完整的帶有內(nèi)置轉(zhuǎn)換器的電機驅(qū)動,便于操作最小控制線。A4988驅(qū)動是一種帶有轉(zhuǎn)換器和過流保護的微步驅(qū)動器。該項目采用這一款驅(qū)動主要在于A4988驅(qū)動的轉(zhuǎn)換器,有此轉(zhuǎn)換器后,只要在“步進”輸入端輸入脈沖,即可驅(qū)動微步電機產(chǎn)生微步。
2.2 WIFI模塊
WIFI模塊通過無線路由器+USB攝像頭方案代替數(shù)傳與圖傳模塊。選取無線路由器進行改裝并刷OpenWrt固件,安裝UVC攝像頭驅(qū)動,Ser2net串口轉(zhuǎn)發(fā)軟件、mipg-streamer視頻解析軟件并設(shè)置為隨機啟動。改裝后,該WIFI模塊即可作為中轉(zhuǎn)站,實現(xiàn)USB高清攝像頭的視頻傳輸以及上位機與單片機的TTL串行通信。
2.3 超聲波模塊
小車采用HC-SR04超聲波測距模塊,此模塊性能穩(wěn)定,測量距離精確,模塊精度高,盲區(qū)小,小車的避障模塊利用超聲波傳感器測距的原理設(shè)計,程序中超聲波檢測到障礙物后會執(zhí)行相關(guān)程序進而控制小車執(zhí)行相應(yīng)的動作來躲避障礙物。
2.4 藍牙模塊
小車采用HC05藍牙模塊,使用此模塊是因為它是主從一體的藍牙串口模塊,當(dāng)藍牙設(shè)備連接好后,可以無視其內(nèi)部協(xié)議,直接當(dāng)作串口使用,較為簡便。該項目中采用WIFI、藍牙雙通道進行控制,適應(yīng)于各種特殊環(huán)境,近距離遠距離皆可進行控制。
3 上位機控制系統(tǒng)設(shè)計
此系統(tǒng)上位機采用LabVIEW對鼠標(biāo)坐標(biāo)的軌跡進行記錄并轉(zhuǎn)化為控制信號進行處理,上位機部分還可以對攝像頭模塊采集的動態(tài)視頻進行顯示。下位機單片機選用Keil C51開發(fā)環(huán)境,對小車下位機的驅(qū)動模塊、超聲波避障模塊、上下位機的通信部分進行程序編寫。下面對上位機的核心部分進行介紹。
3.1 視頻監(jiān)控
首先系統(tǒng)需要顯示一個實時監(jiān)控畫面,就需要視覺開發(fā)工具包中的幾個子模塊進行調(diào)用,同樣是4個節(jié)點。
(1)首先,調(diào)用視頻資源打開函數(shù),將視頻對應(yīng)COM口連入對應(yīng)接線端,這里設(shè)置為可調(diào)模式是因為在不同的用戶終端電腦那里的COM口可能會有所不同。(如圖2所示為視頻顯示部分程序框圖)
(2)其次,調(diào)用視頻參數(shù)配置函數(shù),通過該函數(shù)對圖像進行動態(tài)采集,利用IMAQ Create VI向系統(tǒng)獲取與其相對應(yīng)的緩存,將采集的圖像和獲得的緩存?zhèn)鬏數(shù)絍I函數(shù)IMAQ Grab中。
(3)再次,調(diào)用VI函數(shù)IMAQ Grab,該函數(shù)會將獲取的圖像的當(dāng)前幀并存于緩沖中再獲得下一幀,將圖像以幀為單位一幀一幀地按順序顯示在顯示控件Image Display上,這樣用戶便可以在前面板看到實時的視頻監(jiān)控圖像了。
(4)最后,視頻的顯示控件需要放置在While循環(huán)中,否則只會顯示一幀的圖像而非連續(xù)變化的視頻。嵌套一個判斷結(jié)構(gòu)需要打開視頻時便顯示,否則不顯示。當(dāng)程序停止時,程序會停止執(zhí)行函數(shù)VI IMAQ Dispose釋放緩存以及函數(shù)VI IMAQ Close Camera,關(guān)閉攝像機從而結(jié)束視頻監(jiān)控程序。
3.2 VISA串口及TCP/IP通訊
LabVIEW中用于串口通信函數(shù)編寫的便是在VISA庫函數(shù)的基礎(chǔ)上編寫的。VISA庫函數(shù)是虛擬儀器軟件體系結(jié)構(gòu)的英文縮寫(即Virtual Instruments Software Architecture),其在功能上說實際上是一個應(yīng)用于硬件標(biāo)準(zhǔn)I/O口應(yīng)用程序的接口,屬于一種通用的標(biāo)準(zhǔn)應(yīng)用程序接口。
LabVIEW將串口通信的各個底層步驟進行了子模塊化的封裝,利用結(jié)點進行串口通信,便于調(diào)試編程,相關(guān)的子模塊結(jié)點總共有8個分別用于實現(xiàn)串口打開、串口初始化、串口讀、串口寫、串口中斷、串口關(guān)閉等串口相關(guān)功能。
LabVIEW中最基礎(chǔ)的串口通信包括4個步驟,分別為串口初始化、串口打開、讀寫串口、關(guān)閉串口。該項目同樣包括這樣幾個步驟。
(1)調(diào)用VISA串口配置函數(shù)(VISA Configure Serial Port)。用于串口的初始化,配置串口的基本信息,設(shè)置波特率、數(shù)據(jù)位、停止位和校驗位超時等待等,系統(tǒng)中設(shè)計的是和藍牙模塊之間的串口通信,所以將其串口波特率設(shè)為9 600 bps,8位數(shù)據(jù)位,1位停止位,無奇偶校驗位。
(2)VISA串口數(shù)據(jù)寫入函數(shù)(VISA Write)。將上位機PC端處理生成的控制指令寫入指定串口緩沖區(qū)中,通過與下位機的藍牙模塊建立連接發(fā)送到下位機單片機接收緩沖區(qū)中。
(3)VISA串口數(shù)據(jù)讀取函數(shù)(VISA Read)用于返回指定串口接收緩沖區(qū)中的數(shù)據(jù)。下位機在完成相關(guān)指令后會向上位機反饋一個“0”字符代表上一個指令執(zhí)行完畢,上位機將通過VISA串口數(shù)據(jù)讀取函數(shù)判斷下位機是否執(zhí)行完畢,進而發(fā)送下一條控制指令,形成一個閉環(huán)系統(tǒng)以避免發(fā)生上一條指令未執(zhí)行完畢就執(zhí)行下一條指令的情況發(fā)生。
(4)VISA串口關(guān)閉函數(shù)(VISA Close)用于結(jié)束與指定的串口資源會話,停止所有讀寫操作,關(guān)閉串口。利用串口配置函數(shù)設(shè)置好串口參數(shù),添加一個While循環(huán)來隨時監(jiān)測串口緩沖區(qū)中的數(shù)據(jù),并且利用串口字節(jié)數(shù)函數(shù)判斷緩沖區(qū)中是否存在字節(jié),如果有字節(jié),開始數(shù)據(jù)處理、顯示、存儲。
該系統(tǒng)采用網(wǎng)絡(luò)通信協(xié)議中的TCP/IP協(xié)議進行通訊,所謂網(wǎng)絡(luò)通信協(xié)議就是在網(wǎng)絡(luò)中傳遞、管理信息的一些規(guī)范,是計算機之間、計算機與設(shè)備之間通過網(wǎng)絡(luò)通信所需要共同遵守的一些規(guī)則。系統(tǒng)之所以采用TCP/IP協(xié)議是因為TCP/IP協(xié)議是目前協(xié)議體系最成功、使用最頻繁的互聯(lián)網(wǎng)協(xié)議。
LabVIEW將TCP/UDP的通訊底層函數(shù)進行了打包,形成了具有各個模塊功能的子函數(shù)VI,使得開發(fā)者可以直接調(diào)用,省去了繁雜的網(wǎng)絡(luò)底層系統(tǒng)的實現(xiàn),封裝好的子函數(shù)VI和VISA串口通信的子函數(shù)功能較為相似,TCP通訊一般采用服務(wù)端與客戶端通信的模式。由于該系統(tǒng)是PC端和單片機端進行通信,所以當(dāng)上位機用于發(fā)送控制指令時,將上位機PC端作為客戶端,單片機端作為服務(wù)端,(這里簡稱為發(fā)送端和接收端);當(dāng)上位機接收反饋信號時,將上位機PC端作為服務(wù)端,單片機端作為客戶端。
(1)調(diào)用TCP/IP通訊打開函數(shù),配置好相應(yīng)的TCP/IP地址以及端口,這里的地址和端口需要和接收端所配置的目的地址相同。下位機單片機端通訊開啟后一直處于數(shù)據(jù)偵聽狀態(tài),等待上位機發(fā)送端發(fā)送指令。
(2)調(diào)用TCP/IP寫入函數(shù),將上位機PC端處理生成的控制指令寫入指定串口緩沖區(qū)中通過WIFI傳遞至小車數(shù)據(jù)接收緩沖區(qū)。
(3)調(diào)用TCP/IP讀取函數(shù),讀取下位機反饋的指令完成信號。
(4)有錯誤或者程序執(zhí)行結(jié)束調(diào)用TCP/IP關(guān)閉函數(shù),停止所有讀寫操作關(guān)閉TCP/IP通道并釋放緩沖區(qū)。
3.3 鼠標(biāo)軌跡控制
該系統(tǒng)中,上位機的主要控制方式是鼠標(biāo)的軌跡控制小車行進軌跡,因此上位機需要在事件結(jié)構(gòu)中捕捉到鼠標(biāo)的坐標(biāo)變化。
事件結(jié)構(gòu)中的事件指的是一種觸發(fā)信號,目的是通知程序也就是控制端有事情發(fā)生。對于LabVIEW上位機來說前面板用戶界面的任何動作,外部設(shè)備的任何I/O口信號或是程序中的一段代碼都可以作為觸發(fā)事件來觸發(fā)事件結(jié)構(gòu)。使用事件結(jié)構(gòu)這樣一種結(jié)構(gòu)可以實現(xiàn)僅當(dāng)事件發(fā)生時程序才響應(yīng),未發(fā)生事件的其他時間程序可以正常地處理其他的進程,若是和單片機相比較的活,時間結(jié)構(gòu)就像是單片機當(dāng)中的中斷結(jié)構(gòu)。相反如果在處理一些多線程、復(fù)雜的程序任務(wù)時不采用事件結(jié)構(gòu),計算機會采用“輪詢”的方式不斷循環(huán)檢測事件是否發(fā)生,雖然結(jié)果都可以檢測到事件的發(fā)生,但是很明顯,后者運行時會占用大量的CPU,會使得上位機有卡頓等現(xiàn)象的發(fā)生。而事件結(jié)構(gòu)恰好可以在不影響其他程序的同時解決這一問題。
該系統(tǒng)設(shè)計中將鼠標(biāo)按下作為觸發(fā)事件結(jié)構(gòu)的條件,只要鼠標(biāo)在指定區(qū)域內(nèi)按下鼠標(biāo)左鍵,便會觸發(fā)程序中事件結(jié)構(gòu)部分的窗格鼠標(biāo)按下事件,程序會進入此結(jié)構(gòu)中執(zhí)行結(jié)構(gòu)中的程序,將鼠標(biāo)左鍵按下時的坐標(biāo)位置以(X,Y)坐標(biāo)的形式取出并記錄下來。(見圖6)并通過一系列算法加以處理轉(zhuǎn)換為下位機控制電機所需的相應(yīng)代碼。
4 實驗結(jié)果
經(jīng)過系統(tǒng)功能測試表明,WIFI視頻監(jiān)控智能小車機器人完美地實現(xiàn)了視頻的無線傳輸、鼠標(biāo)軌跡控制小車行走、自動避開障礙物等功能。上位機程序啟動后用戶只需配置相關(guān)參數(shù)后便可進入主體部分,可以選擇使用已經(jīng)規(guī)劃好的路徑控制小車行走,也可以選擇重新規(guī)劃路徑控制小車行走,按下DELETE鍵表示路徑記錄完成,如需調(diào)出監(jiān)控視頻,按下開啟視頻鍵即可,操作簡單,控制方便,人機交互性好。
5 結(jié)語
基于WIFI的視頻監(jiān)控智能小車機器人是一個集攝像頭、WIFI模塊、單片機、步進電機等硬件于一體的智能小車機器人,采用Keil C51、LabVIEW為小車的上下位機進行編程。創(chuàng)新點在于小車可以根據(jù)上位機鼠標(biāo)移動所制定的軌跡進行移動,不拘泥于前后左右控制,操作方便。其次后期拓展性能非常好,針對不同的環(huán)境任務(wù)要求,可以增加相應(yīng)的功能,如機械臂、各種探測傳感器,探測的數(shù)據(jù)可以通過WIFI傳回上位機進而進行實時探測。
參考文獻
[1] 文武松.單片機實戰(zhàn)寶典:從入門到精通[M].機械工業(yè)出版社,2014.
[2] 劉甫,陳健美.單片機原理及典型應(yīng)用接口技術(shù)[M].中國水利出版社,2014.
[3] 張秀關(guān).單片機與計算機串口通信實踐[M].電子工業(yè)出版社,2014.
[4] 閻芳,郭奕崇,劉軍.虛擬儀器與數(shù)據(jù)采集[M].機械工業(yè)出版社,2015.
[5] 曹衛(wèi)彬.虛擬儀器典型測控系統(tǒng)編程實踐[M].電子工業(yè)出版社,2012.
[6] 李江全.虛擬儀器設(shè)計測控應(yīng)用典型實例[M].電子工業(yè)出版社,2010.
[7] 張重雄.虛擬儀器技術(shù)分析與設(shè)計[M].電子工業(yè)出版社,2007.