摘要:單片機與PC串行通信可用于實時控制系統中。本文首先簡單介紹了實時控制系統中的微處理器系統,接著定義了串口通信協議,并在此基礎上采用多線程編程工具CserialPort類,用VC++編寫基于對話框的MFC串口通信程序來控制移動機器人的行進。通過實驗驗證,該串口通信設計方案能較好地控制移動機器人,達到了預期效果。
關鍵字:PC機 單片機 通信協議 CserialPort類 VC++
1 引言
對于傳統的移動機器人,多采用紅外遙控的方式控制移動機器人的行進,而目前移動機器人的自主行進方式還不太成熟,所以采用串口通訊的方式來控制移動移動機器人的行進也是不錯的選擇。并且串口通訊簡單靈活易控制,通訊過程中所采用的協議具有統一的標準。因此,無論是在工控系統、遙感控制、實時控制系統中都得到了廣泛應用。
2 實時控制系統介紹
實時控制系統主要包括上位機(PC機)、單片機、串口通信模塊以及2.4G的無線攝像頭視頻采集模塊。該系統主要實現功能是利用2.4G的無線攝像頭采集移動機器人周邊的環境,根據不同的環境給單片機發送不同指令,實現方法是利用串口通信把上位機(PC機)所發送指令通過串口發送到單片機,進而遠程控制移動機器人的行進。
3 串行通信設計
串行通信設計包括選擇合適的微處理器系統、制定串口通信協議、串口通信編程、人機控制界面。其主要目的是通過串口通信把PC機發送的不同組合指令給單片機,單片機解析出相應指令,根據指令來控制機器人的前、后、左、右運動。
3.1 微處理器系統。AT89C2051是Atmel 公司生產的與MCS-51系列兼容的單片機。內含:一個精密模擬比較器、2k字節的FlashEEPROM、15根I/O引線、128字節RAM、1個五向量兩級中斷結構、2個16位定時器/計數器,1個全雙工串行口等。由于該系統用于簡單的移動機器人控制,且從性價比方面考慮,AT89C2051完全滿足設計的要求。
3.2 串口通信協議。通訊口設置為“9600,N,8,1”,控制指令為:88HT88H ,T有四種可能,分別為01H、02H、03H、04H,對應的控制分別為前、后、左、右。其中確認幀為67H。當單片機收到的控制指令為所定義的格式時,即接收到的信號無差錯,確定為控制機器人行進,單片機就發送確認幀67H給PC機,如果在某一時間間隔內未收到確認幀就重新發送指令。
3.3 串口通信編程。PC機通過串口發送指令給單片機,通過串口發送指令就必須涉及到串口通信程序。對串口通信編程的方式很多,如Cserial 類、Windows API串口編程、MSCOMM控件、Qt串口、多線程編程工具CserialPort類,在此選用了CSerialPort類。CSerialPort類是基于多線程的,由Remon Spekreijse提供的免費串口類。在該類中,其主程序工作流程仍然是打開串口、配置串口、讀寫操作以及關閉串口。
3.3.1 設置串口參數InitPort()。串口的通信參數一般涉及到波特率、串口號、奇偶校驗方式、數據位、停止位等。在CserialPort類中用串口初始化函數InitPort來設置串口參數。
3.3.2 串口通信檢測StartMonitoring()。在串口通信中,對于串口接收的一端,因為不知道何時數據到來,也不知道有多少數據需要被接收。因而需要一個串口通信檢測線程來檢測串口事件的響應(串口接受數據、流控制事件以及其他串口事件)。在此就串口接收數據而言,通過開啟串口通信檢測線程StartMonitoring()來隨時檢測串口是否接受到數據,一旦檢測到該事件就以消息方式來通知主程序,激發消息處理函數來進行數據處理。對于串口發送的一端,可直接向串口發送數據。
3.3.3 串口發送數據WriteToPort()。在打開串口并啟動串口通信檢測線程后,可調用WriteToPort()來發送數據。而對串口接收一端通過編寫串口接收函數即可。
3.3.4 停止或暫停線程檢測StopMonitoring()。用來暫停或停止對串口的檢測。
3.3.5 關閉串口ClosePort()。關閉串口和停止或暫停線程檢測有很大的區別,即使停止了對串口的檢測,但串口資源仍然被暫時,為了釋放該資源,就必須調用關閉串口函數。一旦關閉串口后,要想重新對串口通信則必須從InitPort()開始。
4 控制界面設計
對移動機器人的控制方式即通過鍵盤或按鈕控制來發送指令,鍵盤控制是利用鍵盤上的上下左右鍵控制,按鈕控制則通過界面上點擊四個方向控件(前進、后退、左轉、右轉)來發送指令,這些指令分別對應的是移動機器人的前進、后退、左轉、右轉。
5 室內行走實驗
基于前面所述的串口通信系統設計,在室內對移動機器人進行了遙操作,該系統基本能實現以下功能:根據攝像頭采集到的移動機器人周邊環境,可以用兩種不同的方式來控制移動機器人的前、后、左、右運動,基本上能實現機器人安全、可靠、穩定的行進。不過在實驗過程中還存在一些不足之處,由于2.4G無線攝像頭傳輸的數據有一定的延遲,導致在控制的過程中還不能太精確。所以在接下來的工作中會利用無線傳輸模塊和相應的視頻采集模塊來提高視頻數據的傳輸效率和質量,進而更加準確的控制機器人的運動。
6 總結
該系統基本實現設計所需功能。由于軟硬件知識比較簡單,容易掌握,編程易實現,且設計界面友好,開發周期短,比較適合小型的實時控制系統,在實際應用中也取得了較好的效果。
參考文獻
[1] 謝印忠,張保洲.MScomm控件在自動測控系統中的應用[J].電腦學習,2009(4)
[2] 曾自強,王玉菡.用VC++實現單片機與PC機串口通信的三種方法[J].自動化與儀器儀表,2005(3)
[3] 杜梅,賈輝然.基于VC 的PC機與單片機無線串行通信的實現[J].電腦知識與技術,2007(1)