以ARM為核心的嵌入式體感遙控器的設(shè)計方案
2.2 電源模塊電路
本遙控器采用8.4 V鋰電池供電,采用TL750M05C穩(wěn)壓芯片提供5 V電壓,選用REG1117-3.3穩(wěn)壓芯片為系統(tǒng)提供3.3 V電壓。STM32F1 03C8T6電源分為模擬電源與數(shù)字電源,為了保證其正常工作,將兩路電源進(jìn)行隔離設(shè)計,在模擬地與數(shù)字地之間通過0Ω電阻實(shí)現(xiàn)單點(diǎn)共地。為監(jiān)測鋰電池電源電壓,將電池電壓經(jīng)電阻分壓及阻容濾波電路濾波后作為STM32F103C8T6采樣輸入。
2.3 無線通信模塊及顯示模塊電路
無線通信模塊采用2.4 GHz頻段射頻芯片nRF24L01作為無線數(shù)據(jù)收發(fā)芯片,工作于2.4~2.5GHz ISM頻段,輸出功率和通信頻道可通過程序進(jìn)行配置。nRF24L01功耗低,在以-6 dBm的功率發(fā)射時,工作電流只有9 mA;接收時,工作電流只有12.3 mA,多種低功率工作模式(掉電模式和空閑模式)使節(jié)能設(shè)計更方便。nRF24L01采用SPI總線方式與控制芯片進(jìn)行通信。
12864液晶顯示模塊,可顯示漢字及圖形,內(nèi)置8192個中文漢字(16×1 6點(diǎn)陣)、128個字符(8×16點(diǎn)陣)及64×256點(diǎn)陣顯示RAM(GDRAM),具有并行數(shù)據(jù)傳送方式和串行數(shù)據(jù)傳送方式,其中串行數(shù)據(jù)傳輸方式只用到CS、SID、SCK 3個通信引腳,較并行數(shù)據(jù)傳送方式節(jié)省單片機(jī)的I/O引腳,本文采用串行傳輸方式進(jìn)行設(shè)計。
3 軟件系統(tǒng)設(shè)計
體感遙控器的軟件系統(tǒng)設(shè)計基于實(shí)時嵌入式操作系統(tǒng)mu;C/OS-II,借助于mu ;C/OS-II內(nèi)核的多任務(wù)管理和優(yōu)秀的實(shí)時性能,大大簡化了軟件系統(tǒng)設(shè)計,并且可以保證系統(tǒng)響應(yīng)的實(shí)時性。
3.1 任務(wù)分配與實(shí)現(xiàn)
在任務(wù)規(guī)劃的過程中,采用分層次和模塊化的思想將整個系統(tǒng)任務(wù)進(jìn)行劃分。首先,我們必須對系統(tǒng)整體的控制任務(wù)有清楚地了解,具體任務(wù)劃分如表1所列。
表1中除OSTaskStat和OSTaskIdle任務(wù)為系統(tǒng)自帶,其他8個任務(wù)均為用戶創(chuàng)建。其中:App_TaskStart為起始任務(wù),系統(tǒng)運(yùn)行后第一個建立的任務(wù),其作用是為初始化系統(tǒng)時鐘和底層設(shè)備創(chuàng)建所有事件和其他任務(wù);App_TaskAD任務(wù)監(jiān)視電池電壓的變化,當(dāng)電壓低于設(shè)定值Low Battery時,將啟動蜂鳴器報警;App_TaskAHRS任務(wù)通過DMA不斷接收iNEMO慣性導(dǎo)航模塊數(shù)據(jù),然后交由USART1接收緩沖區(qū),實(shí)時獲得手部姿態(tài)信息;App_TaskCmd根據(jù)手部姿態(tài)信息轉(zhuǎn)化為機(jī)器人運(yùn)動指令,然后按照制定的通信協(xié)議通過nRF24L01無線模塊將指令數(shù)據(jù)包發(fā)送出去;App_TaskData任務(wù)在每發(fā)送一次指令數(shù)據(jù)包后,通過nRF24L01無線模塊接收機(jī)器人本體回傳的運(yùn)動狀態(tài)信息包;App_TaskLCD任務(wù)實(shí)現(xiàn)運(yùn)動指令、機(jī)器人運(yùn)動狀態(tài)、電池電量、實(shí)時時鐘在12864液晶顯示模塊上的顯示;App_TaskLED_B任務(wù)通過LED指示遙控器上的主控芯片與iNEMO慣性導(dǎo)航模塊、遙控器與機(jī)器人是否通信正常,當(dāng)電池電量過低時,通過蜂鳴器進(jìn)行報警;App_TaskClock任務(wù)得到DS1302的實(shí)時時鐘,通過消息郵箱App_LCDClockMbox發(fā)送給App_TaskLCD任務(wù)予以實(shí)時顯示。
3.2 任務(wù)間通信設(shè)計
任務(wù)和中斷服務(wù)子程序可以通過事件控制塊與其他任務(wù)進(jìn)行通信,常用的通信方式有信號量、郵箱和消息隊列,同時,通過事件標(biāo)志實(shí)現(xiàn)任務(wù)與事件之間的同步。本操作系統(tǒng)共創(chuàng)建了8個消息郵箱和1個事件標(biāo)志:
OS_EVENT *App_AHRSMbox
OS_EVENT *App_CommandMbox
OS_EVENT *App_DataMbox
OS_EVENT *App_ADMbox
OS_EVENT *App_LCDCmdMbox
OS_EVENT *App_LCDDataMbox
OS_EVENT *App_LCDADMbox
OS_EVENT *App_LCDClockMbox
OS_FLAG_GRP *App_GreenLEDFlag
其中,App_GreenLEDFlag包括3個標(biāo)志位:
#define Flg_GreenLED 0x0001
#define Flg-BlueLED 0x0002
#define Flg_Buzzer 0x0004
紅外遙控器相關(guān)文章:紅外遙控器原理
評論