【开源项目赏析】遥控四旋翼直升机项目——MiniQ

github网址

https://github.com/billhsu/MiniQ

项目介绍

本项目包括遥控器和四旋翼两部分,遥控器是一个安卓app,四旋翼主要包括:
蓝牙模块:用于接收遥控器指令。
IMU:惯性测量单元(Inertial Measurement Unit),也就是MPU6050,用于获取当前四旋翼状态。
电机:通过对其输出PWM信号,控制其转速快慢。
在这里插入图片描述

控制指令解析部分

四旋翼通过一个蓝牙转串口模块获取控制指令,因此接收的指令数据流是在蓝牙模块对应的串口中断中处理,具体是在UARTs.c文件的void USART1_IRQHandler(void)中:
其中重要代码如下:

	RX_dat=USART_ReceiveData(USART1);// & 0x7F;
    //status = RX_dat;
    if(recvStatus==0)
    {
      if(RX_dat==0xff) recvStatus=1;
    }
    else if(recvStatus==1)
    {
      if(RX_dat==0xaa) recvStatus=2;
      else recvStatus=0;
    }
    else if(recvStatus==2)
    {
      recvCmd=RX_dat;
      recvStatus=3;
    }
    else if(recvStatus==3)
    {
      recvLength=RX_dat;
      recvStatus=4;
    }
    else if(recvStatus==4)
    {
      if(recvPos<recvLength)
      {
        recvData[recvPos]=RX_dat;
        ++recvPos;
      }
      if(recvPos==recvLength) 
      {
        parseCmd(recvCmd,recvLength);
        recvPos=0;
        recvStatus=0;
      }
    }

RX_dat是本次中断接收到的一个字节,这部分通过状态机的方式对数据流进行解析,可以看出,一条完整的指令内容如下:

内容字节数
0xff1
0xaa1
指令类型1
指令长度1
指令内容n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值