康玉忠, 何擁軍, 曾文權, 余君
(廣東科學技術職業(yè)學院 1. 計算機學院;2. 大數據與人工智能學院,珠海 519090)
隨著移動互聯網技術的不斷發(fā)展,移動智能手機控制技術已經在生活中得到廣泛應用[1、2]。多功能智能探測小車以Android手機應用程序APP為客戶端,借助WIFI無線通信技術[3-4],設計制作的移動小車作為服務器端接收手機命令信號,分析控制命令,并驅動小車行進,將車載探測采集的數據實時傳到手機APP顯示。
系統(tǒng)由S5pv210芯片系統(tǒng)模塊、智能手機終端系統(tǒng)模塊和WiFi通信系統(tǒng)模塊三大部分組成。硬件部分是以S5pv210芯片為核心作為開發(fā)平臺,任務驅動板集成小車行駛驅動、無線網卡、攝像頭以及超聲波、溫濕度、LED燈和蜂鳴器等組成,開發(fā)手機APP、ARM程序以及通信程序,小車實現手機語音、重力遙控、程序定制路徑和自動行駛等行走控制,并實現小車探測的數據采集、拍照、照明和警報等功能,系統(tǒng)結構如圖1所示。
系統(tǒng)以嵌入式Linux為軟件開發(fā)平臺,設有控制服務器和視頻服務器。在硬件平臺上,車載探測傳感器程序控制采集信號,控制服務器主要接受客戶端發(fā)送的控制請求,并執(zhí)行采集數據等操作,如小車的行駛方式控制命令、聲音交互喚醒命令、舵機轉動操控命令、溫濕度命令等操作。選用面向連接的、可靠的傳輸的TCP 協(xié)議[5],利用 socket 網絡通信技術(TCP 協(xié)議)進行數據傳輸。設置 mjpg-streamer視頻服務器,從攝像頭獲取視頻流,并利用網絡(UDP 協(xié)議)將視頻流發(fā)送到客戶端,從而達到視頻實時監(jiān)控。系統(tǒng)軟件架構如圖2所示。
小車行駛驅動設計采用履帶式傳動機構,該機構結構穩(wěn)定,與地面接觸面積大,具有良好的越野能力。主控板通過對驅動L298N芯片的控制實現對履帶兩后輪直流電機的控制,L298N是專門用來驅動兩相及四相電機的,它的輸入端能夠接收標準TTL電平信號,輸出端包含兩個H橋的大電壓大電流雙全橋式驅動器。行駛電機驅動電路圖如圖3所示。

圖1 系統(tǒng)結構圖

圖2 系統(tǒng)軟件結構

圖3 行駛電機驅動控制電路圖
小車的轉向控制由控制兩個后輪驅動直流電機正反轉而控制轉向的,其中 OUT1、OUT2 和 OUT3、OUT4 之間分別接小車后輪驅動電動機。IN1、IN2、IN3、IN4 引腳從開發(fā)板的 GPIO 接口輸入控制電平,電機轉動狀態(tài)編碼如表1所示。

表1 小車電機轉動狀態(tài)編碼
根據小車電機轉動狀態(tài)編碼,分別對INT1、IN2、IN3、IN4給予不同的高低電平,從而控制小車的行駛。
探測小車通過接口可靈活加載傳感器,如溫濕度、瓦斯傳感器等,采集數據在手機端進行計算處理、存儲、顯示、記錄等,加載DHT11溫濕度采集模塊。檢測溫濕度是采用了DHT11溫濕度模塊,工作電壓3.3-5 V,模板尺寸:3.2 cm*1.4 cm,濕度測量范圍為:20%-95%(誤差為+-5%),溫度測量范圍:0°C -50°C(誤差為+-2°C)。在小車上添加溫濕度檢測功能必須要編寫該驅動代碼,本小車采用的交叉編譯工具鏈為gcc-4.4.4.tar.bz2,linux內核版本為linux-2.6.35.7-gec-v3.0.3.tar,編寫驅動代碼。
探測小車的視頻采集采用全景360度拍攝,為實現功能由攝像頭模塊、云臺舵機模塊組成。
視頻采集攝像頭模塊選擇OV9650一款CMOS彩色圖像傳感器芯片,共有1300×1028像素, CMOS傳感器具有低噪聲和高靈敏度特點,且集成度高、體積小、功耗低、編程方便、易于控制等優(yōu)點,接口電路將圖像信號進行A/D轉換和處理,傳送到處理器的CAMIF,微系統(tǒng)核心模塊通過I2C串行總線實現對傳感器的控制。
云臺舵機控制攝像頭轉動實現全景360度拍攝,采用雙軸舵機驅動控制水平方向上旋轉和垂直上下仰角轉動,云臺舵機控制電路圖如圖4所示。

圖4 云臺舵機控制電路圖
水平舵機采用28BYJ48步進電機驅動,由采用核心板芯片GPIO輸出信號經ULN2003芯片驅動電機旋轉,程序按步距精確地控制水平轉角。轉子齒為50齒的四相電機,在八拍運行時,步距角為θ=360度/(50*8)=0.9度,每接收一個脈沖信號轉過0.9°。
云臺舵機垂直仰角的轉動,采用sg90舵機直接連接核心板芯片GPIO,連續(xù)的PWM的方波控制信號經sg90舵機內信號調制芯片,獲得直流偏置電壓,它內部有一個基準電路,產生周期為20 ms,寬度為1.5 ms的基準信號,將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出,電壓差的正負值決定電機的正反轉,由內部驅動電路驅動電機旋轉,當電機轉動帶動內部級聯減速齒輪旋轉,調節(jié)電位器電阻值使得電壓差為0,舵機停止轉動。通過程序使核心板芯片GPIO輸出可調占空比PWM的方波來整舵機的垂直轉角。
視頻采集采用了一種開源視頻服務器軟件MJPG-streamer 完成多媒體數據的處理及存儲,采用的 V4L2 架構采集視頻,每采集到一幀數據,就將該數據進行預處理并壓縮編碼為H.264 格式,然后,選擇UDP網絡協(xié)議傳輸視頻,采用FFmpeg 進行視頻格式轉換處理,將視頻格式進行轉化后在手機屏上顯示。
基于該軟件的特點和體系結構,通過修改MJPG-streamer 的源代碼,添加新的功能模塊,以增強這款軟件的功能。并重新交叉編譯后,移植到嵌入式系統(tǒng)中,以實現一個可控制前端設備的基于Arm8 的嵌入式遠程視頻監(jiān)控系統(tǒng)。mjpg-streamer源碼可以從官網上下:http://sourceforge.net/projects/mjpg-streamer/從官網上獲取mjpg-streamer的源碼后,通過arm的4.5.1工具鏈對源碼進行交叉編譯,把所生產的mjpg-streamer庫文件移植到小車的/lib目錄上,啟動mjpg-streamer服務器./mjpg_streamer -i "./input_uvc.so -y" -o"./output_http.so - w ./www"當視頻服務啟動完畢后,該服務會不斷的采集視頻數據并上傳到網絡中,用戶只需要訪問該網絡的端口與IP地址則能獲取圖像數據。
手機應用程序利用eclipse開發(fā)工具進行研發(fā),Andriod控制軟件程序流程如圖5所示。

圖5 Andriod控制軟件程序流程
程序采用多線程的設計模式,UI線程為主線程,子線程分別為視頻處理線程和指令數據發(fā)送線程。程序開始時設置運行相關參數,以建立客戶端與服務器之間的網絡連接,如IP地址、端口號,進入主程序,APP數據處理模塊利用手機進行采集數據存儲、語音識別等處理,進入視頻處理子線程,采用UDP協(xié)議通信,讀取數據緩沖區(qū)中的視頻數據,由SurfaceView類繪制并實時顯示視頻。主程序控制UI主線程用于用戶交互操作,傳送指令或采集數據,當用戶觸發(fā)事件時,監(jiān)聽組件根據響應發(fā)送指令子線程,通過Socket發(fā)送程序命令控制字(用戶的指令意圖編制的指令數組數據),ARM芯片獲取及解析指令,輸出控制信號并執(zhí)行相應的操作或采集數據。
在探測小車通信設計中,手機通過WiFi與小車端進行數據傳輸,從而達到控制小車的行駛和采集數據。采用雷凌RT3070 無線網卡,以AP接入方式組建無線網絡,與S5pv210核心板主控制器進行通信,WiFi其覆蓋范圍半徑超過一百米以上,可覆蓋無供電、無網絡的救援、探測的特殊場所。
在系統(tǒng)中TCP 協(xié)議發(fā)送由 Socket 套接字編程來實現,應用程序通過“套接字”向移動小車發(fā)出指令控制信息或采集數據。服務端與客戶端通訊程序的設計流程如圖6所示。

圖6 Socket編程設計流程
服務器端先初始化Socket,將Socket與端口綁定(bind),對端口進行監(jiān)聽(listen),調用accept阻塞,等待客戶端連接。客戶端初始化Socket,如果有申請連接服務器(connect),如果建立連接成功,客戶端發(fā)送數據請求,服務器端接收請求并向客戶端發(fā)送數據。
手機應用程序利用eclipse開發(fā)工具進行研發(fā),手機APP程序通過事件屏幕觸發(fā)事件向小車硬件發(fā)送指令,用戶通過小車反饋信息或實際位置,實時操控手機界面進行行駛及測控操作,智能小車手機端操控UI界面如圖7所示。
手機上app的界面中定義了一個虛擬搖桿控件,以圓形區(qū)域設計搖桿,從45度開始,范圍是90度,劃一等份,將整個圓形搖桿分為四等份,分別對應左下右上四個方位,當用戶在手機屏上觸摸虛擬控制搖時,根據觸摸區(qū)域的座標,調用小車前后左右行走指令,從而控制小車行走。
開啟語音模式適用于繁忙用戶,可以直接口述指令集的相應指令就能操控小車,操作簡單。用戶向手機APP口述相應的指令如表2所示。
程序調用了科大訊飛的語音喚醒開源碼,根據用戶口述指令,手機程序經語音檢測、噪聲抑制、特征提取、解碼器等模塊,識別判斷口述的指令結果[8],手機的語音喚醒功能根據指令結果給小車下達相應的執(zhí)行命令。
開啟重力模式時,根據手機app的偏斜角度來實現探測小車的行駛功能。以手機端水平擺放時為標準,當手機前傾、后傾、左右傾時對應前后左右四個方位,從而可以根據手機實時傾斜情況達到探測小車的行駛功能。先在程序中注冊一個重力傳感器并注冊監(jiān)聽器,通過傾斜手機的方向來改變想x,y,z軸的加速度來控制方向,由于智能探測小車只需要實現前后左右4個方向,即不改變z軸加速度的情況下,根據判斷x,y軸的加速度來調用的小車的四個方向指令,從而實現小車的行走。

圖7 手機操控UI界面圖

表2 指令集
探測小車實現了360°全景拍攝,通過攝像頭、溫濕度傳感器采集數據在手機端進行計算處理、存儲、顯示、記錄等,手機APP界面上,顯示視頻和溫濕度數字記錄如圖8所示,浮窗顯示采集溫濕度繪成折線圖如下圖9所示。

圖8 采集視頻和溫濕度

圖9 采集視頻和溫濕度折線圖
[1] 郭志濤, 韓海凈,孔江浩, 等. 基于Android移動終端的多功能視頻監(jiān)控系統(tǒng)設計[J].現代電子技術, 2018,41(16):96-99.
[2] 張琪,宋愛國.基于Android的小型移動機器人遠程控制系統(tǒng)設計[J].電子測量技術,2017,40(12):33-36.
[3] 張萍,陳國壯,候云雷,等. 基于Android平臺的WIFI遙控智能小車的設計[J],計算機測量與控制,2018,26(6):189-191
[4] 聶茹. 基于Android手機藍牙控制的智能小車設計與實現[J], 微型電腦應用,2015(9):68-69
[5] 羅劉敏,王明霞, 郭艷花,等. 基于單片機的智能小車控制系統(tǒng)設計[J]. 儀表技術與傳感器, 2018(1):123-126.
[6] 戈惠梅,徐曉慧,顧志華, 等. 基于Arduino的智能小車避障系統(tǒng)的設計[J]. 現代電子技術,2014,37(11): 118-120.
[7] 蔡卓凡. 基于多超聲波傳感器避障機器人小車的設計[J]. 自動化技術與應用,2014, 33(5):86-88.
[8] 黃麗雯,韓榮榮,宋江敏,基于 Arduino /Android的語音控制小車設計[J]. 實驗室研究與探索,2015,34(12):53-55.