郭俊杰,朱洪應(yīng),蔡超敏,黃培鑫,陳如麒
(華南農(nóng)業(yè)大學(xué),廣東廣州 510642)
隨著各種科學(xué)技術(shù)的不斷提高,自動(dòng)化技術(shù)的不斷加深,智能遙控技術(shù)將跨領(lǐng)域應(yīng)用,并深入普及。機(jī)器人小車的研究是移動(dòng)機(jī)器人分支的一部分,是一項(xiàng)涉及到計(jì)算機(jī)技術(shù)、傳感技術(shù)、通訊技術(shù)等相關(guān)技術(shù)的綜合系統(tǒng)。它的主要功能是利用無(wú)線網(wǎng)絡(luò)視頻技術(shù)實(shí)現(xiàn)識(shí)別路徑,控制車速及操縱轉(zhuǎn)向等。機(jī)器人小車是一個(gè)借助人工遙控達(dá)到環(huán)境感知、規(guī)劃決策及任務(wù)輔助的綜合體。研究并設(shè)計(jì)開發(fā)出基于單片機(jī)的機(jī)器人小車不僅符合科技發(fā)展潮流即,同時(shí)也是提高實(shí)踐者綜合技術(shù)的途徑之一,對(duì)各種社會(huì)領(lǐng)域具有廣泛遷移的價(jià)值,如用于非制造業(yè)并服務(wù)于人類的服務(wù)機(jī)器人、軍用機(jī)器人以及娛樂(lè)機(jī)器人等等。
小車采用STM32單片機(jī)作為主制器,通過(guò)一款Wifi射頻模塊RT5350實(shí)現(xiàn)遠(yuǎn)程視頻畫面的傳輸,整個(gè)項(xiàng)目涵蓋的知識(shí)面廣,包括單片機(jī)編程技術(shù),OpenWrt路由器系統(tǒng)以及Windows上位機(jī)軟件開發(fā)等等不同技術(shù)領(lǐng)域。下面分為三個(gè)層面來(lái)介紹視頻小車的實(shí)現(xiàn)方法:(1)底層驅(qū)動(dòng)層:以STM32單片機(jī)實(shí)現(xiàn)對(duì)小車的驅(qū)動(dòng)控制;(2)中層傳輸層:借助RT5350路由器平臺(tái)傳輸控制命令以及視頻流;(3)頂層控制層:在Windows平臺(tái)實(shí)現(xiàn)對(duì)小車的控制
小車整體是實(shí)現(xiàn)STM32單片機(jī)控制小車電機(jī)的運(yùn)動(dòng)和控制攝像頭的舵機(jī)云臺(tái)的運(yùn)動(dòng)。由于STM32單片機(jī)提供的電流非常微小,不足以讓小車動(dòng)起來(lái),所以需要電機(jī)驅(qū)動(dòng)模塊,這里使用了L298N模塊驅(qū)動(dòng)小車的直流電機(jī)。
小車左輪右輪上分別配有兩個(gè)電機(jī),左輪電機(jī)A與右輪電機(jī)B的正轉(zhuǎn)、反轉(zhuǎn)和停止決定著小車的運(yùn)動(dòng)模式。而STM32單片機(jī)4根電機(jī)控制信號(hào)線連接著 L298N的 IN1~I(xiàn)N4,另外兩根PWM調(diào)速信號(hào)線連著ENA和ENB。電路圖詳情見圖1。
輸入信號(hào)線IN1和IN2控制電機(jī)A的運(yùn)動(dòng),直流電機(jī)A接OUT1和OUT2。同理,IN3和IN4合起來(lái)控制了電機(jī)B的運(yùn)動(dòng)。對(duì)應(yīng)小車的對(duì)應(yīng)的運(yùn)動(dòng)模式詳情見表1。
圖1 電路原理圖
表1 小車的對(duì)應(yīng)的運(yùn)動(dòng)模式
如上圖1中L298N上還有有ENA和ENB兩個(gè)信號(hào)輸入端口,這兩個(gè)端口的作用是控制信號(hào)的使能,低電平有效。只有當(dāng)信號(hào)線拉低時(shí)候,L298N才會(huì)遵循表1中列出的運(yùn)動(dòng)模式。
由于L298N有控制使能的信號(hào)線,則可以通過(guò)控制ENA和ENB的信號(hào)來(lái)進(jìn)行PWM調(diào)速。原理是開關(guān)管在一個(gè)周期T的時(shí)間內(nèi)導(dǎo)通的時(shí)間為t,那么電機(jī)兩端的平均電壓aV。其中,a=t/T(占空比),V是電源電壓。電動(dòng)機(jī)的轉(zhuǎn)速與電動(dòng)機(jī)兩端的電壓成正比,而電動(dòng)機(jī)兩端的電壓與控制波形的占空比成正比,因此電動(dòng)機(jī)的轉(zhuǎn)動(dòng)速度與PWM信號(hào)的占空比成比例,信號(hào)的占空比越大電動(dòng)機(jī)轉(zhuǎn)動(dòng)得越快。在硬件電路上將STM32單片機(jī)的PA0~PA3端口分別接到L298N的IN1~I(xiàn)N4上,通過(guò)改變PA0~PA3口的高低電平控制小車的行駛方向,通過(guò)調(diào)節(jié)信號(hào)線ENA和ENB上的PWM占空比來(lái)控制小車運(yùn)動(dòng)速度。
云臺(tái)控制攝像頭的運(yùn)動(dòng),這里采用了MG995舵機(jī)云臺(tái)。二自由度的MG995舵機(jī)云臺(tái)是一款扭矩大、性價(jià)比高的小型云臺(tái),可以在水平方向和垂直方向做180°的二自由度運(yùn)動(dòng)。安裝上攝像頭可以實(shí)現(xiàn)圖像監(jiān)控、圖像識(shí)別和定位追蹤等功能;加裝超聲波測(cè)距傳感器或紅外傳感器可以組合成一體化探測(cè)裝置,使機(jī)器人能感測(cè)周圍的障礙物,從而可以實(shí)現(xiàn)機(jī)器人自動(dòng)避障功能。
舵機(jī)云臺(tái)驅(qū)動(dòng)原理也是PWM調(diào)速信號(hào)控制,舵機(jī)最早用于船舶上實(shí)現(xiàn)特定的轉(zhuǎn)向功能,由于通過(guò)程序可以控制其連續(xù)轉(zhuǎn)角,因而被廣泛應(yīng)用在智能小車和機(jī)器人等關(guān)節(jié)運(yùn)動(dòng)上。舵機(jī)的控制信號(hào)周期為20 ms的脈寬調(diào)制信號(hào),脈沖寬度0.5~1.5 ms相對(duì)應(yīng)的舵盤位置為0 ~180°,這個(gè)過(guò)程呈線性變化。給舵機(jī)提供周期為20 ms寬度在0.5~1.5 ms中的某個(gè)的脈寬信號(hào),舵機(jī)的輸出軸就會(huì)保持相對(duì)應(yīng)角度。無(wú)論外界轉(zhuǎn)矩怎么改變,輸出軸的位置不會(huì)改變。除非提供一個(gè)新的脈寬信號(hào),舵機(jī)才會(huì)改變輸出角度到新的對(duì)應(yīng)位置上。
在STM32單片機(jī)上給出兩條信號(hào)線分別連接水平方向和垂直方向上的兩個(gè)舵機(jī),通過(guò)調(diào)制出周期為20 ms寬度在0.5~1.5 ms的 PWM 信號(hào)即可控制舵機(jī)在兩個(gè)方向上的角度,即可控制云臺(tái)攝像機(jī)的位置。初始化時(shí)將脈寬調(diào)制到1.5 ms,使舵機(jī)在90度的中間位置,程序正常運(yùn)行時(shí)通過(guò)上位機(jī)的指令來(lái)調(diào)整脈寬的寬度來(lái)控制舵機(jī)相應(yīng)的位置。
實(shí)物見圖2。
圖2 視頻小車實(shí)物圖
傳輸層是完成對(duì)控制命令的傳輸,是連接小車和電腦的橋梁,同時(shí)也負(fù)責(zé)視頻畫面的采集和編碼,這里用Ralink公司的一款RT5350路由器芯片完成工作。RT5350平臺(tái)是基于 MISP的Linux系統(tǒng),和我們的 PC配置類似,有必要的CPU、內(nèi)存和硬盤。CPU是MIPS架構(gòu)360M主頻RT5350芯片,內(nèi)存則是32MB SDRAM芯片,硬盤是8MB的FLASH閃存,采用的是基于Linux的OpenWrt路由器系統(tǒng)。內(nèi)核里安裝了 UVC的USB攝像頭驅(qū)動(dòng)程序,并且運(yùn)行了Mjpg-Streamer視頻傳輸服務(wù)器軟件,實(shí)現(xiàn)了對(duì)視頻畫面的傳輸。控制命令的傳輸是通過(guò)Ser2net一款I(lǐng)P轉(zhuǎn)串口的軟件,實(shí)現(xiàn)IP協(xié)議與單片機(jī)命令的對(duì)接。
RT5350是RaLink公司2010年推出的一款單芯片 IEEE 802.11n 1×1 MIMO WLAN SoC,RT5350內(nèi)部集成了基帶處理器和射頻功率放大器,具有高性能的MIPS 24Kc CPU內(nèi)核,具有五端口百兆以太網(wǎng)交換機(jī)。集成 MIPS 24Kc 360MHz處理器,支持 16-bit最高 64MB的SDRAM 內(nèi)存,支持 USB 2.0 Host/Device,接口具有 GPIO,SPI,I2C,I2S,PCM,UART 及 JTAG 接口。
RT5350的特征是性價(jià)比高,成本優(yōu)勢(shì)大,因而迅速占領(lǐng)了很大部分的低端路由器市場(chǎng)。由于支持USB2.0的擴(kuò)展,配合3G網(wǎng)卡能擴(kuò)展成3G路由器,配合USB攝像頭能擴(kuò)展成Wifi攝像機(jī),配合USB聲卡能擴(kuò)展成Wifi音響,還可以用來(lái)做Wifi智能插座。這里,正是運(yùn)用了配合USB攝像頭來(lái)實(shí)現(xiàn)視頻畫面的傳輸。
OpenWrt是一個(gè)嵌入式 Linux發(fā)行版,是三大主流路由器系統(tǒng)之一。很多智能路由器都采用了OpenWrt系統(tǒng),能在系統(tǒng)上實(shí)現(xiàn)很多第三方功能,如能實(shí)現(xiàn)校園網(wǎng)認(rèn)證登錄功能,能支持SAMBA服務(wù)器,能支持離線下載等等功能。
由于RT5350的普及性,OpenWrt系統(tǒng)已經(jīng)全面支持RT5350系統(tǒng)。大致編譯方法:在Ubuntu系統(tǒng)上下載OpenWrt的源碼,安裝相應(yīng)的交叉編譯器,配置相應(yīng)的驅(qū)動(dòng)及軟件即可編譯出所需要的OpenWrt系統(tǒng)。有了操作系統(tǒng),接下來(lái)安裝所需要的功能軟件。主要安裝的是MJPG-Streamer和Ser2net軟件,前者負(fù)責(zé)視頻傳輸,后者負(fù)責(zé)命令傳輸。
MJPG-streamer是一款MJPG視頻流服務(wù)器,其中”input-uvc.so”輸入插件是Linux上的通用攝像頭插件,”ouput_http.so”輸出插件是網(wǎng)站服務(wù)器插件,這兩款插件配合使用,將USB攝像頭采集的視頻數(shù)據(jù)復(fù)制到了Http服務(wù)器中,用戶通過(guò)訪問(wèn)服務(wù)器即可獲得USB攝像頭上的MJPG視頻流,再通過(guò)相應(yīng)的解碼即可獲得視頻圖像。
當(dāng)系統(tǒng)啟動(dòng)完成后,MJPG-streamer正常運(yùn)行,就可以在PC通過(guò)Http協(xié)議訪問(wèn)相應(yīng)的視頻地址獲得MJPG視頻流數(shù)據(jù),火狐瀏覽器就可以播放MJPG視頻流,也可以參考MJPG視頻流協(xié)議寫出解碼程序。
Ser2net是運(yùn)行在Linux系統(tǒng)上一款I(lǐng)P轉(zhuǎn)串口軟件。由于電腦上通信協(xié)議是 IP協(xié)議,而STM32單片機(jī)資源有限使用了串口通信協(xié)議,Ser2net正是溝通這兩種協(xié)議間的橋梁,有了它電腦就能通過(guò)IP編程對(duì)小車控制了。
大致原理是RT5350平臺(tái)開啟一個(gè)TCP服務(wù)端口比如2001,當(dāng)電腦端連接上此端口后,所有傳向2001端口的IP流數(shù)據(jù)都會(huì)轉(zhuǎn)發(fā)帶RT5350的串口上,所以發(fā)向RT5350串口的數(shù)據(jù)都會(huì)轉(zhuǎn)發(fā)到遠(yuǎn)程 IP終端。而 RT5350的串口連接上STM32單片機(jī)串口,所以Ser2net軟件實(shí)現(xiàn)了IP協(xié)議到小車的數(shù)據(jù)通路。
在STM32單片機(jī)里定義了控制協(xié)議,這個(gè)協(xié)議自己定義,比如發(fā)送數(shù)據(jù)包 0xff,0xff,0x01,0x01代表前進(jìn)。前面兩位用于標(biāo)識(shí)頭碼,第三位標(biāo)識(shí)對(duì)象,第四位標(biāo)識(shí)數(shù)據(jù)值。
表2 控制小車的通信協(xié)議
小車上的RT5350模塊已經(jīng)提供了基于HTTP協(xié)議的MJPG視頻流,在上位機(jī)軟件端需要編寫軟件解碼視頻流即可獲得小車視頻畫面。這里簡(jiǎn)單介紹一下在VS2010中C#的解碼思路:
第一步:Http請(qǐng)求視頻地址
第二步:獲取視頻流
第三步:找到JPEG頭和尾
第四步:將獲得的JPEG圖像顯示出來(lái)
小車的控制方法是創(chuàng)建一個(gè)TCP連接至小車的2001端口,向這個(gè)端口直接發(fā)送控制命令,參考表1的通信協(xié)議即可控制小車的運(yùn)動(dòng)。這里簡(jiǎn)單介紹一下在VS2010中C#的編程思路:
第一步:創(chuàng)建一個(gè)套接字
第二步:連接上小車的IP地址和控制端口
第三步:繪出控制相應(yīng)的按鈕和按鍵
第四步:編寫響應(yīng)按鈕和按鍵的事件,通過(guò)已連接的套接字發(fā)送對(duì)應(yīng)的控制命令
主界面見圖4。
圖4 C#編寫的小車上位機(jī)軟件
[1] 李婕,基于STM32的無(wú)線視頻監(jiān)控智能小車設(shè)計(jì)[D].蘭州:蘭州理工大學(xué),2014:11-19.
[2] 陶福壽.基于STM32的無(wú)線視頻監(jiān)控機(jī)器人設(shè)計(jì)與實(shí)現(xiàn)[D].昆明:云南大學(xué),2013:23-27.
[3] 周賽賽.基于Wifi的無(wú)線視頻監(jiān)控系統(tǒng)研究與設(shè)計(jì)[D].西安:西安工業(yè)大學(xué),2014:79-85.
[4] 周柱.基于STM32的智能小車研究[D].四川:西南交通大學(xué),2011:92-97.
[5] 王杰.基于STM32的多攝像頭無(wú)線視頻警報(bào)系統(tǒng)的設(shè)計(jì)與研究[D].重慶:重慶大學(xué),2013:32-37.