黃 鶯
(柳州鐵道職業技術學院 電子技術學院,廣西 柳州 545616)
微電機技術、網絡技術、計算機技術和嵌入式技術不斷地高速發展,使得生產和管理進入了自動化、智能化和網絡化時代。為了解決生產和管理中操作控制復雜的問題,適應社會新管理和控制要求,提高勞動者工作效率,嵌入式多功能小車無疑是一種高效率的工具。多功能小車由于行動模式比較簡單,被廣泛應用于生產、生活和救援中。目前,小車系統實現的功能大多數只有自動循跡、自動避障、測距等功能,功能較單一、集成度不高;部分小車可實現紅外、無線和藍牙控制,但缺乏遠程數據傳輸、存儲和控制;在小車行走路徑引導中采用CCD攝像頭傳感器獲取道路信息,圖像信息豐富,但由于使用單片機處理,導致數據處理能力不強,圖像分析速度慢、分析結果精度較低;尤其是在無人能達的惡劣環境下工作時,遠程的控制幾乎不可能實現[1-2]。由于智能手機的便攜性和普及性,使得手機在各個領域中得到廣泛應用。基于此原因,本文以小車為控制裝置,采用STC公司的IAP15F2K61S2單片機為處理器核心,借助智能手機處理速度快、存儲容量大的特點,該小車依托Android平臺,結合各種傳感器和云臺攝像頭,搭配WiFi無線網絡傳輸模塊,設計了嵌入式多功能小車,具有自動循跡、自動避障、手機控制、碼盤測速、無線圖像傳輸和處理等功能,使小車功能更豐富,在惡劣環境下也能實現數據信息的采集。
多功能小車車體采用四輪結構,在四個步進電機驅動下采用差動方式轉向,利用左右電機的速度差控制小車的前進、后退、左轉、右轉;使用光電傳感器電路板實現小車循跡;核心板與WiFi轉串口模塊連接,實現小車與上位機的數據通信和云臺攝像頭的圖像傳輸;小車的前面安裝有功能板,功能板上安裝有光強傳感器、超聲波傳感器,實現光強測量、距離測量和障礙物的檢測。上位機控制軟件采用Android平臺,在谷歌第二代NEXUS 7平板安裝監控軟件,用于給小車發送工作命令,接收小車發送回來的圖像、數據,進行處理和存儲,并顯示所有的數據信息。具體結構如圖1所示。

圖1 多功能小車結構框圖
嵌入式單片機采用STC公司生產的IAP15F2K61S2型號。該單片機是增強型8051處理器,運行速度快,內置61 kB FLASH程序存儲器和2048 B的SRAM、EEPROM,兼容MSC-51單片機系列,支持ISP/IAP功能,內部時鐘頻率5~35 MHz,內置8通道10位高速ADC和3通道捕獲/比較單元,各種接口齊全,方便擴展。
循跡采用的是檢測黑線的方法,本模塊采用的是8個紅外傳感器來檢測黑線。當紅外傳感器檢測到黑線時,紅外光被吸收,安裝在小車上的紅外接收管接收不到信號,紅外傳感器電路板上的LED燈滅,當檢測不到黑線時,紅外管接收到反射回來的紅外光,輸出低電平,紅外傳感器電路板上的LED燈亮;通過檢測IO口的信號,根據IO口的信號來判定小車是否處于黑色線上或小車是否偏離黑線,并以此信號對小車進行調整。具體電路如圖2所示。

圖2 循跡傳感器電路圖
傳感器的安裝:本模塊采用的是8個相同光電傳感器,第4、5個傳感器處于黑線上,黑線兩邊各安裝3個。在調整靈敏度時,黑線兩邊的紅外傳感器的靈敏度要稍高,第4、5個傳感器的靈敏度要稍低,這樣有利于循跡過程中當小車偏離黑線時能進行更好的調整。
多功能小車采用四個步進電機作為小車驅動電路,電機采用的是H型橋路驅動電路,采用UL2003、L298芯片驅動步進電機工作;采用PWM技術實現對小車的調速,利用左右電機的速度差實現轉向。電路實現簡單,控制方便,調速范圍大。由于電機驅動模塊的驅動芯片需要較大電流,因此,電機驅動模塊與單片機連接的引腳需設置成推挽輸出,PCA模塊0-2全部設置為8位PWM模式。
圖3中的T1是超聲波的發射探頭,由TRIG控制是否發送指令,T2是超聲波的接收探頭,接收到的脈沖數據送入單片機的外部中斷入口進行計數,同時設置內部定時器/計數器T0處于定時模式,用于計算從發射數據到接收數據的時間差,再根據公式2S=VT求得距離S=VT/2=172T,其中V是聲波速度,取344 m/s,T 為時間差[3]。

圖3 碼盤測速測距電路原理圖
多功能小車采用的是光電碼盤式轉速傳感器,通過測量脈沖的方式求得距離和速度。具體的電路如圖3所示。使用外部的中斷0對光電碼盤的脈沖個數進行計數,計數變量為MP,然后通過MP的個數計算出小車行進的距離,進而可以求得速度。經測知,小車的車輪直徑為6.5 cm,車輪走一圈的周長為20.41 cm,使用示波器測得小車走一圈,MP數為152個,因此小車每行走1 cm,MP數量約為7。程序中可以根據MP個數來計算小車所走過的距離,把距離除以時間就可計算速度。
光強傳感器模塊采用的是光強傳感器BH1750FVI,具有良好的光譜靈敏度、16 bit串行數據輸出。光強傳感器BH1750FVI是數字照度傳感器,其與單片機的連接只需3個I/O口,使用I2C通訊協議實現與單片機的數據通訊[4]。具體連接電路如圖4所示。
WiFi模塊設置成服務器模式,協議通信設置為TCP,端口統一設置為60000,IP地址可以根據需要設定。WiFi模塊通過串口方式與單片機連接,WiFi模塊的WiFi_RX接到單片機的TXD,WiFi_TX接到單片機的RXD。云臺攝像頭配置和小車上的WiFi模塊一一對應,開啟攝像頭和小車WiFi,攝像頭自動連接WiFi。WiFi模塊具體電路連接如圖5所示。
多功能小車底層驅動程序主要由小車循跡程序、超聲波測距、光強檢測、碼盤測距程序等組成。
主程序的工作流程具體是:系統通電后,單片機進行初始化,云臺攝像頭進行自檢,與WiFi模塊進行網絡連接,連接成功后就進入等待接收上位機發送過來的字符,再根據指令作出相應的操作,處理結束后,就把相應的數據信息通過串口轉WiFi模塊發送到上位機進行處理和存儲,以備查用,如圖6所示。

圖4 光強傳感器電路圖

圖5 WiFi模塊電路圖
字符代表小車功能操作具體如表1所示。

圖6 下位機工作流程圖

表1 上位機與單片機通信字符控制表
3.1.1 循跡程序設計
循跡主要是依據循跡傳感器模塊采集的IO信息來確定的。在小車運行過程,單片機對小車各種狀態進行分析,不同狀態下給予不同程序的調整。小車在行走的過程中,經分析共有10種狀態,具體的狀態如表2所示。

表2 小車循跡控制表
根據上述10種狀態,利用左右電機的速度差實現小車動作。具體循跡流程如圖7所示。
3.1.2 超聲波測距程序
程序中使用外部中斷2和定時器/計數器T0配合共同完成超聲波測距功能。當小車接收到平板電腦發送的測距指令時,單片機P35置成高電平,同時啟動定時器/計數器T0,超聲波發射出去,超聲波在傳播過程中碰到障礙物就立即返回來,當接收頭接收到數據,即外部中斷2發生中斷,關閉定時器T0和關閉外部中斷,接著進行中斷處理,計算定時器T0的數值參數為wavaVal,然后調用距離計算函數并進行處理,向上位機傳送數據,定時器時間差wavaVal=TH0*256+TL0,距離計算流程圖如圖8所示。

圖7 小車循跡流程圖

圖8 超聲波測距流程圖
3.1.3 光強檢測程序
光強檢測采用的是BH1750芯片,與單片機的3個IO口連接就可以正常工作(SCL、SDA和ADDR分別接單片機的P14、P15和P42)。BH1750與單片機的通信使用是標準的I2C通訊協議,單片機通過I2C接口向BH1750發送各種控制命令并讀取測量數據,然后對數據進行轉換處理,向上位機傳送數據。
3.1.4 碼盤測距程序
使用外部的中斷0對光電碼盤的脈沖個數進行計數MP,然后通過MP的個數計算出小車行進的距離,進而可以求得速度。外部中斷0的具體實現如下:void exint0()interrupt 0{MP++;}。然后再根據MP的數值計算小車前進距離,比如要使小車前進30 cm就停止,根據前文公式可以求得MP為223。實現碼盤測距偽代碼如下:
Begin
等待中斷,并對MP進行計數
If G_Flag并且MP>223
則0→G_Flag并且調用STOP函數
End
其中G_Flag是小車前進的標志位,STOP代表的是讓小車停止。
Android操作系統是一個自由、開源的系統,具有資源豐富的特點,廣泛應用于便攜設備中,具有廣闊的應用前景[5]。上位機是在Eclipse開發軟件下結合SDK進行開發的。上位機主要有WiFi連接功能、按鈕控制、數據顯示等功能。上位機通過WiFi連接功能與小車上的WiFi模塊進行連接,通過WiFi網絡向下位機發送相應的控制字符命令,下位機接收到此控制字符命令后進行驗證并返回一個數值,上位機根據數值判定連接是否成功。連接成功后點擊上位機監控軟件中的按鈕,通過WiFi網絡向下位機發送相應的控制命令,下位機接收到控制命令并解析后會執行相應的操作,實現對小車的控制,在進行控制的同時向上位機發送數據信息和狀態信息,上位機對數據信息和狀態信息進行處理并顯示、保存[6-7]。具體工作流程如圖9所示。

圖9 上位機工作流程圖
對于上位機通過WiFi網絡向下位機發送“photo”命令,下位機接收到此命令后通過WiFi模塊向云臺攝像頭發送拍照命令,云臺攝像頭拍照成功后會通過WiFi模塊向上位機無線發送圖片,并完成圖片顏色識別同時把處理結果向下位機發送,以實現對小車的控制。顏色識別過程可以描述為:先獲取圖片得到圖片的寬和高,判定圖片上各點的像素值,接著對像素進行分離得到RGB的值,再對RGB進行判定,如果R像素比較多,就判斷為紅色,如果G像素比較多,就判斷為綠色,否則就判斷為藍色。

圖10 平板控制軟件運行圖
測試前先使用下載線把下位機程序下載至下位機單片機中,把小車放到指定的賽道上。通過安裝在平板電腦上的軟件,點擊相應的按鈕,可以發送相應的命令實現小車的前進、倒退、左轉、右轉、停止、高速、中速、低速、拍照、顏色識別和測距等功能。平板電腦軟件運行效果圖如圖10所示,小車實物圖如圖11所示。

圖11 小車實物運行圖
點擊上位機的“循跡”,“前進”,“倒退”,“左轉”,“右轉”,“停車”,選擇“速度檔”中“高速”、“中速”、“低速”,“倒車”,“拍照”,“顏色識別”等按鈕100次,觀察小車運動控制的情況,計算出準確率。點擊“攝像頭”按鈕一次,攝像頭會轉動90°,再按一次,攝像頭會旋轉到初始角度,重復這樣的過程100次,觀察攝像頭旋轉的準確率。
具體功能測試結果如表3所示。

表3 測試情況表
測試結果表明,點擊上位機的“循跡”,“前進”,“倒退”,“左轉”,“右轉”,“停車”,選擇“速度檔”中“高速”、“中速”、“低速”,“倒車”,“拍照”,“顏色識別”和“攝像頭”等按鈕,系統都能正確執行相應的功能,準確率都在95%以上。經過分析,由于平板電腦與小車上的WiFi模塊網絡連接偶爾會斷線,導致無法控制小車運動;顏色識別準確率則是與攝像頭拍攝圖片的距離有一定關系,距離過近,拍攝的圖片易出現色差,導致顏色識別準確率降低。總之,本文設計的運用Android系統控制的多功能小車系統,具有良好的操控性和實用性,小車工作穩定,界面直觀友好,實時性較好。
[1]葛廣軍,楊帆.基于單片機的智能小車控制系統設計[J].河南城建學院學報,2011(3):47-50.
[2]孫青.基于嵌入式控制系統的自動導引小車設計與實現[D].南京理工大學,2010.
[3]侯益坤,侯聰玲,劉益標.基于ARM嵌入式的智能小車的控制系統設計[J].機電工程技術,2010(1):21-23,105.
[4]王建,毛騰飛,陳英革.基于BH1750芯片的測光系統設計與實現[J].常熟理工學院學報,2011,25(2):117-120.
[5]徐誠.零點起飛學Android開發[M].北京:清華大學出版社,2013:2-3.
[6]朱丹峰,葛主冉,林曉雷.基于Android平臺的無線遙控智能小車[J].電子器件,2013,36(3):408-412
[7]林長青,成海量.基于Android系統和藍牙通信的手機遙控車設計[J].山西電子技術,2012(3):56-58.