王勝++王紅心++湯莉莉++李大江++劉進(jìn)++王泉濤++黃思嘉++孫江波
摘 要:本設(shè)計(jì)采用STM32單片機(jī)作為機(jī)械臂核心控制器,通過(guò)移植Linux操作系統(tǒng)與Qt界面到S3C2440開(kāi)發(fā)板上并在其上建立局域網(wǎng)服務(wù)器,實(shí)現(xiàn)了多種功能與多種控制方式,可以使用手勢(shì)感應(yīng)手套對(duì)其進(jìn)行操控,也可使用Android手機(jī)APP端、PC等進(jìn)行控制,還可讓其自動(dòng)運(yùn)行。同時(shí)在局域網(wǎng)內(nèi)的電腦上或藍(lán)牙手機(jī)上都可以通過(guò)攝像頭對(duì)機(jī)械臂進(jìn)行實(shí)時(shí)監(jiān)控。本設(shè)計(jì)可以廣泛應(yīng)用在智能工業(yè)、環(huán)境探索、智能家居等領(lǐng)域。
關(guān)鍵詞:STM32單片機(jī) 手勢(shì)感應(yīng)手套 遠(yuǎn)程監(jiān)控
中圖分類(lèi)號(hào):TP399;TN923 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2017)10(a)-0009-02
Abstract: This design uses STM32 microcontroller as the core controller of mechanical arm, the transplantation of Linux operating system and Qt interface to the S3C2440 development board and the establishment of the LAN server on which to achieve a variety of functions and various control modes, you can use the glove gesture sensing control, can also be controlled by the use of Android mobile phone APP terminal, PC and other controls, but also allow them to run automatically. At the same time, in the LAN computer or Bluetooth phone, you can monitor the mechanical arm real-time through the camera. The design can be widely used in intelligent industries, environmental exploration, smart home and other fields.
Key Words: STM32 microcontroller; Gesture-sensing glove; Remote monitoring
智能機(jī)械臂因?yàn)槠渑c人手的相似性,成為人類(lèi)在工業(yè)生產(chǎn)與生活的一大助力,特別是對(duì)于工業(yè)生產(chǎn),機(jī)械臂常用于生產(chǎn)產(chǎn)品,運(yùn)輸產(chǎn)品,成為代替人力的一種智能生產(chǎn)方式,解放了勞動(dòng)力?;诠I(yè)的節(jié)能性、安全性、穩(wěn)定性,本設(shè)計(jì)使用ARM 9系列的S3C2440芯片進(jìn)行機(jī)械臂的底層控制,在機(jī)械臂上安裝了藍(lán)牙模塊用于藍(lán)牙客戶端交換數(shù)據(jù),使得機(jī)械臂的工作狀態(tài)可以實(shí)時(shí)被客戶端獲取,同時(shí)也可以讓客戶端對(duì)機(jī)械臂進(jìn)行控制。使用手勢(shì)感應(yīng)對(duì)機(jī)械臂進(jìn)行控制,可以簡(jiǎn)化人對(duì)機(jī)械臂的控制難度,使得機(jī)械臂在操控上也能與人控制自己的手大致相似。為了配合工業(yè)控制與科考調(diào)查,機(jī)械臂上搭載一個(gè)攝像頭進(jìn)行實(shí)時(shí)監(jiān)控,并顯示于LCD上,或通過(guò)以S3C2440開(kāi)發(fā)板為中心構(gòu)造的局域網(wǎng)內(nèi)任意一臺(tái)電腦上的客戶端程序來(lái)進(jìn)行監(jiān)控與控制,也可通過(guò)無(wú)線路由器組建的無(wú)線局域網(wǎng)達(dá)到無(wú)線監(jiān)控與控制的功能,有效增加機(jī)械臂工作的安全性。
1 總體設(shè)計(jì)方案
本設(shè)計(jì)的機(jī)械臂部分使用STM32單片機(jī)作為機(jī)械臂終端的控制核心,安裝藍(lán)牙HC-05模塊與無(wú)線模塊[1-2],以便實(shí)現(xiàn)手機(jī)APP控制與手勢(shì)感應(yīng)控制,在S3C2440開(kāi)發(fā)板移植linux系統(tǒng)[3]與Qt界面,使用串口與STM32控制的機(jī)械臂終端進(jìn)行通信,添加攝像頭模塊,并建立服務(wù)器,為局域網(wǎng)內(nèi)所有PC機(jī)上的Qt客戶端提供控制與監(jiān)視機(jī)械臂的服務(wù)。系統(tǒng)框圖如圖1所示。
這樣的設(shè)計(jì),可以使得S3C2440成為物聯(lián)網(wǎng)機(jī)械臂系統(tǒng)的中樞,通過(guò)服務(wù)器程序的編寫(xiě)以達(dá)到控制一個(gè)或多個(gè)機(jī)械臂終端,同時(shí)采集視頻圖像,為Qt編寫(xiě)的上位機(jī)軟件提供監(jiān)控與控制的服務(wù)。
對(duì)于手勢(shì)感應(yīng)手套,使用一個(gè)STM32芯片為主控制器,連接三軸加速度傳感器模塊與無(wú)線模塊,采集人手的位置信息,通過(guò)無(wú)線模塊發(fā)送到機(jī)械臂終端。設(shè)計(jì)框圖如圖2所示。
2 機(jī)械臂軟件設(shè)計(jì)
機(jī)械臂軟件設(shè)計(jì)是采用S3C2440開(kāi)發(fā)板運(yùn)行的服務(wù)器為核心。設(shè)計(jì)方案如圖3所示。主要包括:攝像頭數(shù)據(jù)的采集,與STM32串口的數(shù)據(jù)交互,STM32藍(lán)牙模塊的控制,STM32與手勢(shì)感應(yīng)手套的交互,以及采集到數(shù)據(jù)后數(shù)據(jù)的處理與打包發(fā)送等內(nèi)容。
3 設(shè)計(jì)方案特點(diǎn)及擴(kuò)展說(shuō)明
3.1 設(shè)計(jì)特點(diǎn)
本方案是以機(jī)械臂為終端,為了能使機(jī)械臂適應(yīng)各種使用環(huán)境,開(kāi)發(fā)多種控制方式,同時(shí)移植Linux系統(tǒng)于S3C2440之上,使得機(jī)械臂的功能更為強(qiáng)大,本設(shè)計(jì)的特色有以下幾個(gè)方面。
(1)使用S3C2440移植Linux系統(tǒng),使得S3C2440上的服務(wù)器端可以多任務(wù)運(yùn)行,響應(yīng)速度變快,功能更為強(qiáng)大。
(2)使用STM32微控制器直接對(duì)機(jī)械臂進(jìn)行操控,通過(guò)串口再與S3C2440的服務(wù)器端交互數(shù)據(jù),即使舵機(jī)發(fā)生問(wèn)題也不會(huì)對(duì)服務(wù)器造成影響,使得整個(gè)系統(tǒng)更為安全。
(3)使用手勢(shì)感應(yīng)手套采集手勢(shì)數(shù)據(jù),模擬人手動(dòng)作進(jìn)行操控,又或讓機(jī)械臂自主重復(fù)單一的動(dòng)作,穩(wěn)定,實(shí)用和易操作。
(4)使用上位機(jī)監(jiān)控的同時(shí),通過(guò)程序中的算法可以判斷出攝像頭監(jiān)控的范圍內(nèi)是否有物體運(yùn)動(dòng)。
3.2 擴(kuò)展說(shuō)明
移植了Linux系統(tǒng)的S3C2440芯片具備了強(qiáng)大的拓展性能,具體有以下幾個(gè)方面。endprint
(1)使用zigbee代替串口,使得系統(tǒng)更為安全的同時(shí),更是可以遠(yuǎn)程操控多個(gè)機(jī)械臂終端。
(2)將S3C2440的服務(wù)器更改為一個(gè)客戶端,將視頻數(shù)據(jù)發(fā)送到購(gòu)買(mǎi)的騰訊云服務(wù)器上,使得用戶可以在全球范圍內(nèi)監(jiān)控與控制機(jī)械臂。
(3)使用GSM/GPRS發(fā)短信,當(dāng)檢測(cè)到異常時(shí),向用戶發(fā)出警告。
4 設(shè)計(jì)難點(diǎn)與關(guān)鍵技術(shù)
本設(shè)計(jì)的主要設(shè)計(jì)難點(diǎn)有以下幾個(gè)方面。
(1)多種無(wú)線方式的編程控制,藍(lán)牙的控制、NRF24L01無(wú)線模塊的控制,以及傳輸協(xié)議的制定。
(2)V4L2接口采集圖像數(shù)據(jù),內(nèi)存的分配方式,以及采集隊(duì)列的分配。
(3)使用TCP進(jìn)行服務(wù)器編程,在服務(wù)器中需要多線程處理圖像,還有串口、客戶端請(qǐng)求,這都需要考慮到線程間的同步以及各種傳輸協(xié)議的制定,還需要保證圖片傳輸?shù)耐暾浴?/p>
(4)上位機(jī)的圖形界面設(shè)計(jì),以及跨平臺(tái)的兼容性。
本設(shè)計(jì)的關(guān)鍵技術(shù)概述如下。
(1)通信協(xié)議的指定。
(2)手勢(shì)感應(yīng)手套采集人體手勢(shì)的方法。
(3)S3C2440服務(wù)器的編程與線程同步。
(4)機(jī)械臂的藍(lán)牙與NRF24L01的編程設(shè)計(jì)。
(5)機(jī)械臂運(yùn)動(dòng)的平滑處理與搬運(yùn)動(dòng)作設(shè)計(jì)。
(6)Qt上位機(jī)與服務(wù)器交互流程設(shè)計(jì)。
5 系統(tǒng)調(diào)試與結(jié)果分析
物聯(lián)網(wǎng)手勢(shì)感應(yīng)機(jī)械臂的主要調(diào)試內(nèi)容分為3個(gè)部分。
(1)網(wǎng)絡(luò)連接。
服務(wù)器為客戶端提供使用TCP協(xié)議進(jìn)行通信。S3C2440開(kāi)發(fā)板IP為192.168.1.230,使用ping指令判斷網(wǎng)絡(luò)是否通暢,ping指令采用的是ICMP的包,沒(méi)有端口號(hào),是IP的子協(xié)議,可以通過(guò)ICMP的reply來(lái)判斷網(wǎng)絡(luò)[4],見(jiàn)圖4。
(2)視頻監(jiān)控。
當(dāng)PC能夠ping通開(kāi)發(fā)板后,說(shuō)明它們已經(jīng)在同一個(gè)網(wǎng)段中,此時(shí)便可以使用上位機(jī)監(jiān)控機(jī)械臂了。
(3)藍(lán)牙客戶端的控制與手勢(shì)感應(yīng)手套的控制。
使用Android手機(jī)打開(kāi)編寫(xiě)的藍(lán)牙客戶端APP,連接好HC-05藍(lán)牙模塊,任意鍵入一個(gè)指令,成功控制的同時(shí)可以看見(jiàn)STM32發(fā)回手機(jī)端的PWM波的占空比值。
使用手勢(shì)感應(yīng)手套時(shí),將手套的串口接入電腦,打開(kāi)串口助手,就可以看到手套采集到的各個(gè)軸的數(shù)據(jù)。
6 結(jié)語(yǔ)
通過(guò)反復(fù)的聯(lián)調(diào)及修改出現(xiàn)的bug,本設(shè)計(jì)可以使用手機(jī)APP、手勢(shì)感應(yīng)手套進(jìn)行操控,又或讓機(jī)械臂重復(fù)單一的動(dòng)作,還可以在LCD視頻監(jiān)控,或使用上位機(jī)軟件監(jiān)控并控制。多種控制方式可以讓機(jī)械臂適應(yīng)多種控制環(huán)境,配合遠(yuǎn)程監(jiān)控使得控制更為方便,圖像識(shí)別更是可以提示機(jī)械臂的異常。這些技術(shù)更是可以廣泛應(yīng)用于智能家居、智能工業(yè)等領(lǐng)域。本設(shè)計(jì)亦可添加zigbee模塊,來(lái)實(shí)現(xiàn)無(wú)線控制多個(gè)機(jī)械臂,將程序放在云服務(wù)器上便可全球監(jiān)控。此外,還可以添加GSM/GPRS模塊對(duì)機(jī)械臂的異常進(jìn)行報(bào)警。
參考文獻(xiàn)
[1] 蒙博宇.STM32自學(xué)筆記[M].北京:北京航空航天大學(xué)出版社,2012.
[2] 劉火良,楊森.單片機(jī)與嵌入式:STM32庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2013.
[3] 韋東山.嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2008.
[4] 袁國(guó)忠,徐宏譯.CCNA學(xué)習(xí)指南[M].北京:人民郵電出版社,2012.endprint