王坤,張樂年
(南京航空航天大學 機電學院,江蘇 南京 210016)
基于LM3S微處理器的機械手無線控制系統
王坤,張樂年
(南京航空航天大學 機電學院,江蘇 南京 210016)
摘要:介紹了一種使用LM3S811微處理器與SM63無線模塊搭建的手持式無線遙控器,該遙控器正面設置多個實體按鍵,并對不同按鍵定義了不同的功能。使用該遙控器配合一套機械手控制系統,實現了機械手的遠程無線遙控。
關鍵詞:無線遙控;控制系統;LM3S811微處理器
Wireless Control Manipulator System Based on Microprocessor
WANG Kun, ZHANG Lenian
(Nanjing University of Aeronautics and Astronautics, Nanjing 210016, China)
Abstract:This paper introduces a wireless remote controller equipped with LM3S811 microprocessor and SM63 wireless module, which is equipped with many physical keys in the front. The functions of the various keys are defined. This controller can be used with a manipulator control system to control the whole system.
Keywords:wireless remote control; control system; LM3S811 microprocessor
0引言
無線遙控器是利用無線信號對遠程各種機構進行控制的遙控設備。這些信號被遠程接收設備接收后,可以通過指令驅動各種相應的電子設備去完成各種相應的操作,如閉合電路、移動手柄、開啟電動機等,之后再通過機械系統完成所需要的操作。作為一種與紅外遙控器相補充的遙控器種類,在車庫門,電動門、道閘遙控控制,防盜報警器,工業控制以及無線智能家居等領域得到了廣泛的應用。
1無線遙控器硬件設計
無線遙控器控制系統結構如圖1所示。系統包括兩個部分——控制端和執行端。控制端包括手控盒和無線發送模塊,手控盒上設計了多個實體按鍵,用來給執行端發送不同的動作指令。執行端包括單片機控制核心、無線接收模塊、電動機和機械手,響應控制端指令執行不同的動作。

圖1 控制系統結構圖
控制端采用LM3S811+SM63的架構,當按下或釋放不同按鍵時,LM3S811內部程序判斷按鍵值并將相應指令通過串口發送至SM63無線模塊,無線模塊與發出無線信號,執行端連接SM63模塊的單片機等控制元件接收到信號后,解析協議,將動作指令轉換成電動機控制信號發送給電動機,由電動機驅動機械手在相應方向上的動作。此系統可以應用于多種工業控制系統中,如工業機器人控制,閥門控制,設備參數設定等場合,具有鮮明的實用價值。
1.1LM3S系列芯片簡介
LM3S811 ARM微控制器是Luminary公司推出的一款結構簡單、性能出眾且帶有ARM Codex-M3處理器內核的32位微控制器,它擁有與8位和16位器件相同的價格,卻能為用戶提供32位器件的性能。Codex-M3處理器是首個基于ARMv7M架構,主要針對汽車車身系統、工業控制系統以及無線網絡等對成本和功耗極端敏感的嵌入式應用領域,是以實現高系統性能為目的而專門設計的ARM內核。
其電源電壓為3.3 V,最高時鐘頻率50 MHz,64 kHz的單周期FLASH;3個32位通用定時器,可分成6個16位定時器使用;一組同步串行接口(SSI),2個異步串行接口(UART);4通道模數轉換器(ADC),1組模擬比較器和I2C接口;3個脈寬調制信號(PWM)模塊,32個通用輸入輸出管腳(GPIO)及硬件看門狗等。
SM63低電壓型無線模塊是一種半雙工無線通信模塊,可實現無線信號的點對點,點對多傳輸,具有體積小、低成本、低功耗、發送數據量大、傳輸距離遠的優點。
遙控器中,將LM3S811的UART0串口分配給SM63無線模塊,二者間連接電路如圖2所示。

圖2 LM3S811與SM63模塊連接圖
1.2按鍵電路設計
按鍵部分采用實體按鍵,硬件電路設計,如圖3所示。

圖3 按鍵電路設計圖
KEY0-KEY6引腳與LM3S811輸入輸出口的PB0-PB6相連,當按鍵未按下時,由于有3.3V上拉電源,PB口輸入為高電平,當某一按鍵按下時,對應PB口輸入變為低電平并觸發中斷,當有中斷發生時,主函數使用查詢方式獲得鍵值,發出相應命令碼。其中,PB口中斷觸發方式有上升沿、下降沿或雙邊沿觸發,如果改為雙邊沿觸發,即可實現按下和彈起對應不同動作,如電動機的啟動和停止。
2程序設計
控制程序在Keil μVision4環境中使用C語言編寫,便于維護和移植。另外,使用J-LINK連接到JTAG下載口,可對遙控器進行在線調試。
函數流程如下:

圖4 遙控器程序流程圖
按鍵按下判斷時使用延遲檢測方法:即當檢測到按鍵狀態變化時,延遲一定時間再次讀取按鍵狀態,若確實變化了,再開始響應,否則視為誤操作,不動作。此方法可以改善因按鍵抖動引起的誤操作。當按鍵按下后,啟動計時,若在時間到達1.5s之前松開按鍵,則視為短按,此時遙控器向單片機發送短距命令,單片機控制電動機走完該圈數時自動停止;若在時間到達1.5s后,按鍵仍未松開,則視為長按,此時遙控器向單片機發送長距命令,單片機控制電動機持續轉動,當按鍵松開時,遙控器發送停止命令,電動機停止。
中斷檢測及通信部分程序如下:
//中斷檢測
void GPIO_Port_B_ISR( void )// B口中斷服務函數
{
uint32 ulStatus;
uint8 stateKey;
ulStatus = GPIOPinIntStatus( GPIO_PORTB_BASE, TRUE );// 讀取中斷狀態
GPIOPinIntClear( GPIO_PORTB_BASE, ulStatus );// 清除中斷狀態
if( ulStatus & KEY0 )
{
stateKey = Generate_Input_Read(0);// 讀取KEY0鍵狀態
if( !stateKey )// KEY0鍵按下
{
SysCtlDelay( 2000 * ( SysMainOSC / 300000 ));//延時20ms再檢測
stateKey = Generate_Input_Read(0);
if( !stateKey )// KEY0鍵按下
{
KeyDownNum = 0;//為定時器指示按鍵號
//do something
TimerEnable( TIMER1_BASE, TIMER_A );//開始檢測按鍵時間
}
}
else// KEY0鍵松開
{
…
}
}
else if( ulStatus & KEY1 ) // KEY1鍵按下
{
…// 同KEY0鍵
}
…// 同上
}
//通信部分:串口初始化和發送字符:
uint8 Uart0Init( uint32 ulBaudRate, uint8 ucPrio )
{
if( ulBaudRate > 115200 )// 波特率> 115200,返回
return(FALSE);
SysCtlPeripheralEnable( SYSCTL_PERIPH_UART0 );// 使能串口0外圍設備
SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOA );// 使能GPIOA
GPIOPinTypeUART(GPIO_PORTA_BASE,
GPIO_PIN_0 | GPIO_PIN_1); // 設置PA0,PA1為RXD0,TXD0
//配置串口參數:串口地址,波特率,數據長度為8位,1位停止位,無校驗
UARTConfigSet(UART0_BASE,
ulBaudRate,
UART_CONFIG_WLEN_8|
UART_CONFIG_STOP_ONE|
UART_CONFIG_PAR_NONE);
UARTFIFOLevelSet( UART0_BASE, // 設置收發FIFO中斷觸發深度
UART_FIFO_TX2_8, // 發送FIFO為2/8深度(4B)
UART_FIFO_RX2_8 ); // 接收FIFO為6/8深度(4B)
IntPrioritySet( INT_UART0, ucPrio ); // 設置中斷優先級
// IntEnable( INT_UART0 ); // 使能串口0系統中斷
UARTIntEnable(UART0_BASE,
UART_INT_RX |
UART_INT_RT);// 使能串口0接收中斷和接收超時中斷
UARTEnable(UART0_BASE);// 使能串口0發送和接收
return(TRUE);
}
void SendToUart0( uint8*pucBuffer,uint16 usByte )// 發送數據
{
while( usByte )
{
if( UARTSpaceAvail(UART0_BASE) )// 確定發送FIFO中是否還有任何可用的空間
{
UARTCharNonBlockingPut( UART0_BASE, *pucBuffer++ );// 發送一個字符到指定端口
usByte--;
}
}
}
3控制協議
通信協議是通信雙方的一種約定,約定包括對數據格式、同步方式、傳送速度、傳送步驟、檢糾錯方式以及控制字符定義等問題做出的統一規定,通信雙方必須共同遵守。無線通信協議的設計應遵循簡單、有效、可靠的原則。
本系統中遙控器控制指令根據機械手系統需要設計為17位byte類型字符,除包頭包尾外,其余各位用來指定單片機、指定電動機以及設置電動機的運行方向、速度、圈數等,具體各個位代表意義如表1所示。

表1 通信協議各位定義
4結語
使用LM3S811微控制器與SM63無線通信模塊相結合,實現了通過實體按鍵對遠端機械手的無線控制,實際現場使用效果很好,靈活方便,并且節省了部分成本。此系統可以通過改變遙控器端的控制程序、機械手端的控制芯片和控制方式以及二者之間的通信協議,推廣到各種需要無線遙控的工業控制場合。
參考文獻:
[1] 黃志偉. 32位ARM微控制器系統設計與實踐—基于Luminary Micro LM3S系列[M]. 北京:北京航空航天大學出版社,2010.
[2] Luminary Micro LM3S811數據手冊[S]. Luminary Micro公司.
[3]來清民. ARM Cortex-M3嵌入式系統設計和典型實例—基于LM3S811[M]. 北京:北京航空航天大學出版社,2013.
[4] Theodore S.Rappaport.無線通信原理與應用[M]. 北京:電子工業出版社,2012.
[5]10mV/50mV-ISM低電壓無線收發模塊[S]. 上海:上海上志電子信息技術有限公司.


收稿日期:2014-12-18
中圖分類號:TP241
文獻標志碼:B
文章編號:1671-5276(2015)04-0161-03
作者簡介:王坤(1988-),男,江蘇徐州人,碩士研究生,研究方向為機電一體化。