微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 以ARM为核心的嵌入式体感遥控器的设计方案

以ARM为核心的嵌入式体感遥控器的设计方案

时间:10-08 来源:互联网 点击:

统任务进行划分。首先,我们必须对系统整体的控制任务有清楚地了解,具体任务划分如表1所列。

  
  表1中除OSTaskStat和OSTaskIdle任务为系统自带,其他8个任务均为用户创建。其中:App_TaskStart为起始任务,系统运行后第一个建立的任务,其作用是为初始化系统时钟和底层设备创建所有事件和其他任务;App_TaskAD任务监视电池电压的变化,当电压低于设定值Low Battery时,将启动蜂鸣器报警;App_TaskAHRS任务通过DMA不断接收iNEMO惯性导航模块数据,然后交由USART1接收缓冲区,实时获得手部姿态信息;App_TaskCmd根据手部姿态信息转化为机器人运动指令,然后按照制定的通信协议通过nRF24L01无线模块将指令数据包发送出去;App_TaskData任务在每发送一次指令数据包后,通过nRF24L01无线模块接收机器人本体回传的运动状态信息包;App_TaskLCD任务实现运动指令、机器人运动状态、电池电量、实时时钟在12864液晶显示模块上的显示;App_TaskLED_B任务通过LED指示遥控器上的主控芯片与iNEMO惯性导航模块、遥控器与机器人是否通信正常,当电池电量过低时,通过蜂鸣器进行报警;App_TaskClock任务得到DS1302的实时时钟,通过消息邮箱App_LCDClockMbox发送给App_TaskLCD任务予以实时显示。

  3.2 任务间通信设计

  任务和中断服务子程序可以通过事件控制块与其他任务进行通信,常用的通信方式有信号量、邮箱和消息队列,同时,通过事件标志实现任务与事件之间的同步。本操作系统共创建了8个消息邮箱和1个事件标志:

  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个标志位:

  #define Flg_GreenLED 0x0001

  #define Flg-BlueLED 0x0002

  #define Flg_Buzzer 0x0004

  3.3 软件系统流程图设计

  软件系统流程图如图4所示。体感遥控器经上电初始化后,首先采集电池电压,然后通过邮箱*App_ADMbox将采集得到的电量值发送给12864液晶显示模块进行显示,若电量过低,则使标志位Flg_Buzzer置位,即通过蜂鸣器进行报警。并且,通过DMA把iNEMO惯性导航模块的数据接收到USART1,判断校验位是否正确,若不正确则重新配置DMA,重新接收数据;若正确则将接收到的数据转化为控制指令,通过nRF24L01无线模块发送给机器人。同时通过邮箱*App-LCDCmdMbox将指令发送给App_TaskLCD任务,在12864液晶显示模块显示当前发送的指令,并通过置位Flg_GreenLED点亮相应LED,以表示STM32F103C8T6与iNEMO模块通信正常;机器人本体接收到指令后,会给遥控器返回数据包,如果遥控器接收的数据错误标志位没有置位,则说明遥控器与机器人本体通信正常,通过邮箱*App_LCDDataMbox将机器人的状态信息发送给App_Tas kLCD任务,在12864液晶显示模块上显示机器人本体运动状态,同时通过置位Flg_BlueLED点亮相应LED,以表示遥控器与机器人本体通信正常。App_TaskClock任务通过邮箱*App_LCDClockMbox向App_TaskLCD任务发送当前时间信息,并予以显示。

  体感遥控器 软件系统开发环境为IAR EWARM5.4,mu ;C/OS-II版本为V2.86,STM32F103C8T6的调试工具为J-Link仿真器,STM32F103C8T6的固件库版本为V2.0.3.

  3.4 遥控器与机器人本体通信方案设计

  本设计采用严格的“一问一答”形式,即每发送一条指令都需要机器人本体返回一帧数据包。遥控器发送一条指令后,等待机器人本体返回的数据包,只有获得机器人本体返回的数据包后才可以继续发送指令包。如果机器人本体接收到错误指令(经校验错误的指令),置位通信错误标志位,上传数据包;同时,机器人本体报警,将机器人速度置0,接下来1 s内下位机清除串口DMA,重新接收指令。如果遥控器收到的数据包中通信错误标志位置位,则重新配置nRF24L01无线模块,重新发送指令。

  4 性能测试

  对本文所描述的嵌入式机器人体感遥控器进行了相应的测试,测试环境分别为室内走廊环境和室外环境,测试结果如表2所列。测试结果表明,在室内走廊环境中,收发指令的正确率在95%以上;在室外环境中,由于环境中可能存在多种干扰,并且距离在20~30 m,正确率在90%以上。由于遥控器底层软件具备一定容错能力,90%以上的正确率完全满足要求。

  结语

本文讨论了基于STM32F103C8T6的嵌入式服务机器人体感遥控器的设计方案,该方案对具体的硬件电路和软件系统进行了详细的介绍。经过大量的实例证明,本体感遥控器具有操作简便

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top