MiniFly 遥控器系统框架:

蓝牙语音遥控器Android_stm32


STM32F103C8T6 作为控制 MCU, 外围硬件主要有蓝色 0.96 寸

OLED、 NRF24L01+、 RF 功率放大、 2.4G 天线、 摇杆、按键、 蜂鸣器、 LED 等。

1,MCU STM32F103C8T6:

32-bit Cortex-M3 内核芯片, 具有 20KB SRAM、 64KB FLASH、 7 个定时器、 7 通道 DMA 控制器、 2 个 SPI、 2 个 IIC、 3 个串口、1 个 USB 全速接口、 1 个 CAN 接口、 2 个 12 位 ADC、 以及 35 个通用 IO 口等。

MiniFly 遥控器主要使用了 SPI、 USB、 ADC、DMA 等外设。

SPI 主要用于与 OLED 和 NRF24L01 通信;

USB 主要用于与上位机通信和固件升级;

ADC 和 DMA 主要用于采集摇杆电压

2,OLED

0.96 寸 ,分辨率为 128*64,内部驱动芯片为 SSD1306,该芯片内部集成

DCDC 升压, 只需 3.3V 供电即可正常工作, 支持 8 位 6800 并口、 8 位 8080 并口、 IIC 以及4 线 SPI 等通信方式。 这里我们使用了 4 线 SPI 方式通信, O_RST 为复位控制脚、 O_DC 为数据命令控制脚、 O_CLK 为 SPI 时钟控制脚、 O_MOSI 为 SPI 数据输入脚。

OLED 的控制使用的是 STM32 的 SP2

蓝牙语音遥控器Android_摇杆_02


3,NRF24L01+和四轴主机通信:

蓝牙语音遥控器Android_嵌入式_03


NRF24L01+,嵌入了 Enhanced ShockBurst 通信机制,可以实现实时双向通信。

配置为 TX 模式时:

当发送不带 ACK 标志数据包时,通信机制自动打包数据并启动发送,发送后立即进入低功耗模式等待下一次发送。

当发送带 ACK 标志数据包时, 通信机制启动发送后立即转为接收模式等待应答包, 如果接收到应答包则进入低功耗模式等待下一次发送并产生发送完成中断。 如果等待接收超时则会自动重发, 当重发次数达到设定的值时会结束当前发送并产生重发失败中断。

配置为 RX 模式时:

模块一直处于接收状态,如果接收到数据包则会根据 ACK 的标志来选择要不要返回应答包。

NRF24L01+的控制使用 STM32 的 SPI1

蓝牙语音遥控器Android_摇杆_04


4,摇杆和按键接口

摇杆是带按键和 360°自动回中的,一个摇杆有 2 个电位器, 电位器中心抽头连接到 MCU 的 ADC 引脚。

油门摇杆: 2个电位器的电压 AD 值转换为对应 THRUST(油门)和 YAW(航向角) 的控制值;

方向摇杆: 2 个电位器的电压 AD 值转换为对应 PITCH(俯仰角)和 ROLL(横滚角) 的控制值。

所有电位器采集的 AD 值范围都在 0-4095, 然后将 AD 值转换为对应控制值:

THRUST(油门) 通道 AD 值换为控制值: 0~100, 当发送 0 表示没有油门输出, 发送 100表示油门满量程输出。

YAW(航向角) 通道 AD 值换为控制值: -200~200,当发送值 yaw 小于 0 时, 四轴逆时针旋转, yaw 越小旋转快。相反, 当发送值 yaw 大于 0 时,四轴顺时针旋转, yaw 越大旋转越快。

**PITCH(俯仰角)**通道 AD 值换为控制值: -30~30,当发送值 pitch 小于 0 时,四轴向后运动,pitch 越小运动越快。 相反, 当发送值 pitch 大于 0 时,四轴向前运动, pitch 越大运动越快。

ROLL(横滚角) 通道 AD 值换为控制值: -30~30,当发送值 roll 小于 0 时,四轴向左运动, roll 越小运动越快。 相反, 当发送值 roll 大于 0 时,四轴向右运动, roll 越大运动越快。

5,LED和蜂鸣器

2 个 LED 和 1 个蜂鸣器

蓝牙语音遥控器Android_摇杆_05


LED0(红)和 LED1(蓝)分别用于指示通信失败和通信成功:

当通信失败时 LED0常亮;

当通信有干扰时 LED0、 LED1 会交替闪烁;

当通信良好时 LED1 常亮。

蜂鸣器主要用于操作提示和低电量报警。

6,电源和USB接口TP4059 相当于单节锂离子电池充电器的芯片,带电池正负极反接保护反接, 支持高达600mA 的充电电流。 该芯片的充电电流可以通过 PROG 脚的下拉电阻设定,遥控器电池为 200mAh 1C 的电池, 最大充放电流200X1= 200ma。 所以电路中设置的电阻 R2 为 4.7K,则充电电流为 200mA。 5V 电源(笔记本或者移动电源) 可以通过USB 线接上遥控器就可以给电池充电。

XC6204B302 是一款低压差线性稳压器(LDO) , 输入电压高达 10.0V, 输出 3.0V。

如图,5V和VCC是相连的

蓝牙语音遥控器Android_蓝牙语音遥控器Android_06


上图,当插入USB时,带来5V,5V通过TP4059充电芯片给电池充电,5V又通过线性稳压芯片XC6204B302降压到3.3V,3.3V就是系统的工作电压。边充电边使用遥控器。

蓝牙语音遥控器Android_串口通信_07


上图,当不插USB时,开关打到5V/VCC,由电池供电,经过线性稳压芯片XC6204B302降压到3.3V,3.3V就是系统的工作电压。

7,下载接口

MiniFly 遥控器板载 SWD 仿真下载接口和 USART1 接口

蓝牙语音遥控器Android_嵌入式_08