于振中,徐 靜
(江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 無(wú)錫 214122)
基于STM32和Android的桌面型碼垛機(jī)器人控制系統(tǒng)設(shè)計(jì)*
于振中,徐 靜
(江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 無(wú)錫 214122)
針對(duì)我國(guó)缺乏具有自主知識(shí)產(chǎn)權(quán)的低成本碼垛機(jī)器人這一現(xiàn)狀,設(shè)計(jì)了基于STM32和Android的桌面型碼垛機(jī)器人控制系統(tǒng)。首先介紹了桌面型碼垛機(jī)器人的機(jī)械結(jié)構(gòu),然后以STM32F103RCT6微處理器為主控制系統(tǒng)核心,以Android為平臺(tái)開(kāi)發(fā)了客戶端作為示教控制系統(tǒng),同時(shí)根據(jù)碼垛機(jī)器人的需求,完成了對(duì)整個(gè)控制系統(tǒng)的設(shè)計(jì)。實(shí)際運(yùn)行效果表明,系統(tǒng)工作穩(wěn)定、制造成本低、使用靈活。
桌面型碼垛機(jī)器人;控制系統(tǒng);STM32F103RCT6;Android
Abstract: In view of China’s lack of low cost palletizing robot with independent intellectual property rights, this paper designs a control system of the desktop palletizing robot based on STM32 and Android. Firstly, the mechanical structure of palletizing robot is introduced. Then the STM32F103RCT6 microprocessor is used as core of the main control system. Teaching control system is the client based on the Android platform. And the whole control system is designed to meet the needs of palletizing robot. The practical operation shows that the system operation is stable, manufacturing cost is low and it is flexible to use.
Key words:desktop palletizing robot; control system; STM32F103RCT6; Android
作為物流自動(dòng)化領(lǐng)域的一門(mén)新興學(xué)科,碼垛技術(shù)能夠幫助企業(yè)提升生產(chǎn)效率,改善勞動(dòng)條件,其應(yīng)用在工業(yè)生產(chǎn)領(lǐng)域越來(lái)越廣泛??刂葡到y(tǒng)是碼垛機(jī)器人的核心組成部分,對(duì)實(shí)現(xiàn)機(jī)器人碼垛功能和保障作業(yè)性能起著決定性作用[1]。近年來(lái),許多院校已開(kāi)設(shè)了機(jī)器人學(xué)方面的有關(guān)課程,為了滿足碼垛機(jī)器人有關(guān)課程教學(xué)示范和實(shí)驗(yàn)教學(xué)的需求,開(kāi)發(fā)一款具有教學(xué)適用性、成本低、靈活性好的控制系統(tǒng)十分必要。
經(jīng)調(diào)查發(fā)現(xiàn),目前工業(yè)碼垛機(jī)器人多采用“PLC+觸摸屏”組合的控制系統(tǒng),這種構(gòu)架形式工作靈活性較差,成本高,對(duì)電源要求也高,安全性差,不適用于教育領(lǐng)域的機(jī)器人。而ARM具有強(qiáng)大的數(shù)學(xué)運(yùn)算能力、豐富的接口,能完全滿足對(duì)碼垛機(jī)器人的控制要求,其開(kāi)發(fā)成本也要比PLC低[2]。并且隨著智能終端的普及和其運(yùn)行速度不斷提升,為提高機(jī)器人控制系統(tǒng)的靈活性提供了新思路。利用Android平臺(tái)開(kāi)發(fā)移動(dòng)智能終端,示教控制碼垛機(jī)器人[3]。這樣用戶就可以利用Android手機(jī)或者平板電腦和碼垛機(jī)器人進(jìn)行無(wú)線通信,可以更好地整合資源,提高效率。針對(duì)本文所研究的桌面型碼垛機(jī)器人,利用ARM與Android平臺(tái)設(shè)計(jì)碼垛機(jī)器人的控制系統(tǒng)。
圖1 控制系統(tǒng)硬件結(jié)構(gòu)
碼垛機(jī)器人控制系統(tǒng)由示教器、控制主機(jī)、步進(jìn)驅(qū)動(dòng)器和機(jī)器人本體組成,其硬件結(jié)構(gòu)如圖1所示。示教器作為人機(jī)交互接口,為用戶提供美觀實(shí)用的操作界面??刂浦鳈C(jī)、步進(jìn)驅(qū)動(dòng)器和電源等由各種線纜連接并安裝在控制柜內(nèi)。機(jī)器人本體由各個(gè)運(yùn)動(dòng)機(jī)構(gòu)、步進(jìn)電機(jī)和限位開(kāi)關(guān)構(gòu)成。
控制主機(jī)通過(guò)無(wú)線WiFi與示教器進(jìn)行通信實(shí)現(xiàn)數(shù)據(jù)交互,構(gòu)成整個(gè)控制系統(tǒng),整體為自主研發(fā)的裝置??刂浦鳈C(jī)接收示教器發(fā)送來(lái)的控制指令,解析后控制碼垛機(jī)器人做出相應(yīng)動(dòng)作。示教器從控制主機(jī)獲取機(jī)器人的當(dāng)前信息并呈現(xiàn)在界面上,用戶根據(jù)信息向控制主機(jī)發(fā)出控制指令。
本文控制主機(jī)選擇的ARM芯片是Cortex-M3內(nèi)核的STM32F103,其內(nèi)核性能高,具有很高的代碼效率且成本低。晶振頻率為72 MHz,有豐富的I/O端口,支持以太網(wǎng)與相機(jī)接口,具有很好的可擴(kuò)展性和高性能、低功耗等優(yōu)點(diǎn),很好地滿足了桌面型碼垛機(jī)器人控制系統(tǒng)的輸入輸出需求[4]??刂浦鳈C(jī)的硬件電路包含:電源電路、復(fù)位電路、時(shí)鐘電路、JLINK下載電路、串口通信電路以及通過(guò)串口通信模塊外擴(kuò)的無(wú)線WiFi模塊,使得碼垛機(jī)器人可以進(jìn)行WiFi通信,這樣用戶可以通過(guò)Android手機(jī)終端和碼垛機(jī)器人進(jìn)行信息交互和控制,如圖2所示。
圖2 控制主機(jī)的硬件電路組成
控制系統(tǒng)軟件分為主控制系統(tǒng)軟件和示教控制系統(tǒng)軟件兩個(gè)部分,采用模塊化思想,對(duì)控制系統(tǒng)軟件結(jié)構(gòu)設(shè)計(jì)按功能進(jìn)行模塊化分[5]。示教器與控制器主機(jī)根據(jù)用戶不同的需求而采用不同的模塊組合,并通過(guò)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸。主控制器軟件的主要功能包括初始化模塊、定時(shí)器模塊、運(yùn)動(dòng)控制模塊、原點(diǎn)搜索模塊以及和與示教器的通信處理模塊。其中運(yùn)動(dòng)控制模塊是碼垛機(jī)器人控制系統(tǒng)的核心部分,它具有運(yùn)動(dòng)學(xué)分析、軌跡規(guī)劃等豐富的控制功能,使用方便,滿足了機(jī)器人碼垛作業(yè)的需求。示教控制軟件的主要功能包括界面顯示、手動(dòng)控制以及與主控制器的通信。
2.1主控制系統(tǒng)的軟件設(shè)計(jì)
主控制系統(tǒng)的程序流程如圖3所示,程序啟動(dòng)后,首先要對(duì)系統(tǒng)進(jìn)行相關(guān)初始化,主要有時(shí)鐘初始化、延時(shí)初始化、中斷初始化、定時(shí)器初始化、通信初始化、GPIO初始化與配置以及TCP/IP模塊初始化等。機(jī)器人回零后對(duì)示教器發(fā)送過(guò)來(lái)的控制指令進(jìn)行解析,經(jīng)過(guò)一系列運(yùn)動(dòng)學(xué)正反解、軌跡規(guī)劃后,與初始狀態(tài)進(jìn)行比較,從而到達(dá)目標(biāo)位置的坐標(biāo)。
圖3 主控制系統(tǒng)程序流程圖
圖3中機(jī)器人回零是指,主控制器在對(duì)示教器發(fā)送來(lái)的控制指令進(jìn)行解析前,要使大臂、小臂、腰部、手腕處的步進(jìn)電機(jī)都達(dá)到原點(diǎn),通過(guò)分布在各個(gè)關(guān)節(jié)的限位開(kāi)關(guān)來(lái)實(shí)現(xiàn)?;亓愠绦虻牧鞒倘鐖D4所示。
圖4 機(jī)器人回零程序流程圖
圖3程序流程圖中從插補(bǔ)運(yùn)算到運(yùn)行至末端點(diǎn)這一運(yùn)動(dòng)過(guò)程就是軌跡規(guī)劃模塊,本文選用直線插補(bǔ)和關(guān)節(jié)插補(bǔ)來(lái)確保碼垛機(jī)器人的運(yùn)動(dòng)軌跡平滑以及運(yùn)行平穩(wěn)有序。對(duì)軌跡關(guān)鍵點(diǎn)之間通過(guò)插補(bǔ)算法自動(dòng)計(jì)算出各個(gè)插補(bǔ)點(diǎn)的坐標(biāo),然后經(jīng)過(guò)運(yùn)動(dòng)學(xué)反解求出各關(guān)節(jié)角度。其軌跡控制過(guò)程如圖5所示。
圖5 軌跡控制流程圖
2.2示教控制系統(tǒng)的軟件設(shè)計(jì)
Android是建立在Linux系統(tǒng)之上的開(kāi)源手機(jī)開(kāi)發(fā)平臺(tái),該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用程序組成。Android的應(yīng)用程序是用Java語(yǔ)言開(kāi)發(fā)的。隨著智能終端的上市,強(qiáng)大的性能和開(kāi)放性使Android系統(tǒng)在市場(chǎng)上的普及率也越來(lái)越大,也讓其成為智能終端相關(guān)科研項(xiàng)目很好的選擇[6]。利用移動(dòng)智能終端對(duì)碼垛機(jī)器人的控制靈活性高這一優(yōu)點(diǎn),本文選擇Android作為示教控制軟件開(kāi)發(fā)平臺(tái),在Android提供的應(yīng)用程序框架上開(kāi)發(fā)桌面型碼垛機(jī)器人的示教系統(tǒng)。
2.2.1客戶端框架
該系統(tǒng)總體設(shè)計(jì)思路是采用C/S系統(tǒng)架構(gòu),開(kāi)發(fā)基于控制主機(jī)的服務(wù)器及Android平臺(tái)的客戶端。在Android Studio 開(kāi)發(fā)環(huán)境下,采用Java語(yǔ)言,基于軟件的分層架構(gòu)思想對(duì)客戶端進(jìn)行設(shè)計(jì),如圖6所示。表示層:負(fù)責(zé)生成用戶的操作界面,其功能是控制機(jī)器人當(dāng)前狀態(tài)、單方向運(yùn)動(dòng)、單軸運(yùn)動(dòng)、點(diǎn)到點(diǎn)之間的運(yùn)動(dòng)。業(yè)務(wù)邏輯層:用于處理各種事物。數(shù)據(jù)訪問(wèn)層:主要用于網(wǎng)絡(luò)數(shù)據(jù)通信。應(yīng)用程序接口(Application Programming Interface,API)是由所有的參數(shù)數(shù)據(jù)集合而成,這樣業(yè)務(wù)邏輯層就可以直接調(diào)用API接口模塊,API接口模塊與通信模塊直接交互。
圖6 機(jī)器人示教軟件分層架構(gòu)
2.2.2通信程序設(shè)計(jì)
IT和工業(yè)通信領(lǐng)域中常見(jiàn)的通信方式有串口、并行口、USB等,但由于傳輸效率低、抗干擾能力弱,無(wú)法實(shí)現(xiàn)示教器與控制主機(jī)之間通信的準(zhǔn)確性和及時(shí)性。以太網(wǎng)以其高速率、遠(yuǎn)距離傳輸?shù)膬?yōu)勢(shì),逐漸成為工業(yè)控制網(wǎng)絡(luò)建設(shè)的一種新思路。而WiFi作為以太網(wǎng)的擴(kuò)展,主要應(yīng)用于搭建無(wú)線局域網(wǎng)。它具有功耗高、成本低、傳輸速率快、安全性低等特點(diǎn)。
本設(shè)計(jì)中,Android客戶端使用無(wú)線WiFi網(wǎng)絡(luò)通過(guò)TCP/IP協(xié)議與控制主機(jī)服務(wù)端連接,從而實(shí)現(xiàn)人機(jī)交互。示教軟件作為Android系統(tǒng)的應(yīng)用軟件層,通過(guò)Java語(yǔ)言進(jìn)行編程,而TCP通信的客戶端是由Java語(yǔ)言提供封裝的套接字Socket類來(lái)實(shí)現(xiàn),Socket包括還IP地址、端口號(hào),程序員可方便地訪問(wèn)TCP/IP協(xié)議[7]。
控制主機(jī)的TCP服務(wù)器端與示教器的 TCP客戶端的通信流程如圖7所示。控制主機(jī)作為服務(wù)器,連接時(shí)服務(wù)器進(jìn)入監(jiān)聽(tīng)模式,等待來(lái)自客戶端的連接請(qǐng)求,當(dāng)遠(yuǎn)端IP地址和端口號(hào)正確時(shí)可連接成功。Android 手機(jī)客戶端接入無(wú)線WiFi網(wǎng)絡(luò)后,通過(guò)Socket編程接收和發(fā)送數(shù)據(jù),將其接收到的機(jī)器人當(dāng)前狀態(tài)連續(xù)地顯示在客戶端上 。
圖7 TCP通信流程
3.1數(shù)據(jù)傳輸實(shí)驗(yàn)測(cè)試
先借助串口助手將WiFi模塊設(shè)置為服務(wù)器,然后用戶在示教器客戶端輸入服務(wù)端IP和端口號(hào),點(diǎn)擊【連接】請(qǐng)求,若符合服務(wù)器的內(nèi)部參數(shù),即可與服務(wù)器建立Socket連接,接收框中顯示“OK,CONNECT”,效果如圖8所示。在客戶端發(fā)送數(shù)據(jù),會(huì)在服務(wù)器中顯示接收到的數(shù)據(jù)。通過(guò)實(shí)驗(yàn)測(cè)試,示教器客戶端與服務(wù)器的通信連接成功,對(duì)數(shù)據(jù)進(jìn)行準(zhǔn)確快速的發(fā)送。這時(shí)將設(shè)置好的WiFi模塊接入控制主機(jī)的通信接口,實(shí)現(xiàn)Android客戶端和碼垛機(jī)器人的人機(jī)交互和控制。控制主機(jī)STM32芯片上的TCP/IP模塊初始化程序如下:
Char msg1[]="AT+CIPMUX=1 ";
Char msg2[]="AT+CIPSERVER=1,8001 ";
for(t=0;t<=12;t++)
{while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
USART_SendData(USART3,msg1[t]);}
delay_ms(1000);
for(t=0;t<=20;t++)
{while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
USART_SendData(USART3,msg2[t]);}
while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
圖8 TCP/IP通信實(shí)驗(yàn)測(cè)試
3.2現(xiàn)場(chǎng)控制測(cè)試
手機(jī)先連接上WiFi,開(kāi)啟客戶端后,點(diǎn)擊菜單上的【連接設(shè)備】,自動(dòng)連接控制板上WiFi模塊的IP地址,地址連接成功后指示燈亮,機(jī)器人當(dāng)前狀態(tài)就會(huì)顯示回零點(diǎn)的坐標(biāo)和角度。點(diǎn)擊每個(gè)控制按鈕都會(huì)通過(guò)控制器發(fā)送指令給機(jī)器人使其運(yùn)動(dòng),并通過(guò)控制器將機(jī)器人當(dāng)前坐標(biāo)和旋轉(zhuǎn)的角度反饋給客戶端。
經(jīng)測(cè)試,客戶端的每條指令可下發(fā)給控制主機(jī),控制的靈活性、連續(xù)性均良好,該系統(tǒng)達(dá)到預(yù)期目標(biāo)。只要在WiFi覆蓋的區(qū)域內(nèi),碼垛機(jī)器人都能夠迅速對(duì)用戶的控制做出反饋,完成相應(yīng)動(dòng)作。
本設(shè)計(jì)采用STM32作為主控制器,以Android為平臺(tái)設(shè)計(jì)了示教器,兩者通過(guò)無(wú)線WiFi模塊進(jìn)行通信,構(gòu)成整個(gè)控制系統(tǒng),克服了傳統(tǒng)碼垛機(jī)器人控制系統(tǒng)的擴(kuò)展性差、靈活性差、成本高等缺點(diǎn)。還可以將該控制系統(tǒng)推廣應(yīng)用到課堂教學(xué),該系統(tǒng)使用弱電控制、安全系數(shù)高、成本低,根據(jù)需要學(xué)生可自主設(shè)計(jì)控制系統(tǒng)。通過(guò)實(shí)樣機(jī)的運(yùn)行測(cè)試,該系統(tǒng)可完成60 m范圍內(nèi)的無(wú)線通信,實(shí)現(xiàn)無(wú)線人工遙控和自主運(yùn)動(dòng)。由于Android手機(jī)與碼垛機(jī)器人的無(wú)線通信擴(kuò)大了碼垛機(jī)器人的功能,且該系統(tǒng)運(yùn)行穩(wěn)定、操控效果良好,具有實(shí)用價(jià)值及推廣價(jià)值。
[1] 李曉剛,劉晉浩.碼垛機(jī)器人的研究與應(yīng)用現(xiàn)狀,問(wèn)題及對(duì)策[J].包裝工程,2011,32(3):96-102.
[2] 郭亞奎.基于ARM的嵌入式碼垛機(jī)器人控制系統(tǒng)的研究與設(shè)計(jì)[D].南京:南京航空航天大學(xué),2014.
[3] 陳瑋,秦會(huì)斌,曹曙光,等.基于Android平臺(tái)的智能家居系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2015,41(10):158-160.
[4] 于振中,蔡楷倜.基于STM32的機(jī)器人仿真示教器設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2016,35(23):38-41.
[5] 陳致遠(yuǎn),朱葉承,周卓泉,等.一種基于STM32的智能家居控制系統(tǒng)[J].電子技術(shù)應(yīng)用,2012,38(9):138-140.
[6] ENCK W, OCTEAU D, MCDANIEL P, et al. A study of android application security[C]. USENIX Conference on Security, 2011: 21-21.
[7] 徐宏宇,程武,張博.基于ARM和Android的智能家居控制系統(tǒng)設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2017,36(3):29-32.
Control system design of desktop palletizing robot based on STM32 and Android
Yu Zhenzhong, Xu Jing
(School of Internet of Things Engineering, Jiangnan University, Wuxi 214122, China)
TP242.2
A
10.19358/j.issn.1674- 7720.2017.18.001
于振中,徐靜.基于STM32和Android的桌面型碼垛機(jī)器人控制系統(tǒng)設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2017,36(18):1-3,7.
江蘇省2016年度普通高校研究生實(shí)踐創(chuàng)新計(jì)劃項(xiàng)目(SJZZ16_0219)
2017-03-22)
于振中(1980-),男,博士,副教授,主要研究方向:機(jī)電一體化。
徐靜(1992-),女,碩士研究生,主要研究方向:電機(jī)與電器。