蓝牙模块兼容小白控教程
1,硬件基础,考验你焊工的时候到啦
虽说咱们使用小白控时就跟使用串口没什么区别。但是接收机发出的DBus信号实际上和TTL电平是反相的关系。所以在A板和C板上实际上有一个反相电路,实时把DBus信号反相,转换为TTL电平。
所以还不能直接把蓝牙模块插到DBus接口上,需要对A板的硬件做一点修改。
上图中标出的“MCU Rx”焊点,即为反相器输出端,直接与单片机引脚相连。当反相器输入端悬空时,可以通过直接操作这一点电平向单片机发送信号。在这里我直接把蓝牙模块的Tx引脚飞线连接到了这个焊点。
(资料图)
信号线连接上后再把供电也连接上,就可以使用蓝牙模块了。至此,硬件部分准备完毕。
2,遥控器的替代——手机
有大佬开发了一款手机APP,可以使用蓝牙模块模拟很多东西。这是介绍的文章/p/1a8262492619。建议还是先看一遍这个文章再接着往下看。我们就用这个APP模拟遥控器。
首先在通信设置里添加要发送的数据。五个摇杆通道用short(int16_t)发送。由于这个app的控件限制,两个拨杆开关使用byte(int8_t)发送。
小白控的发送周期为14mS,我们这里保持一致。选择持续定时发送,间隔为14mS。
添加控件后给每个控件绑定要发送的数据,在图上用红字已标出。五个摇杆的数据范围为[-660,+660]。两个拨杆对应的滑动条,范围为[0,2]。 至此,手机部分准备完毕
3,调用官方的代码完成接收
本着有现成的就不再自己写驱动的精神,我们在这里使用官方的代码完成数据接收。我们在这里使用宏定义的方法来兼容两套控制方式。
在remote_中修改下方代码
改为
通过修改BlueCtrl的宏定义值即可切换两套控制方式。之后的代码都将采用宏定义的if语句来判断。官方代码使用DMA接收,通过判断已收到的字节数来判断是否接受完整个数据包。我们自定义的数据包只有15个字节,所以要对这部分进行修改。否则将永远无法正常接收。
在中对cubeMX生成的用于初始化串口1的代码进行修改如下。同时记得在中包含remote_头文件。
因为有些蓝牙模块并不支持100Kbps这样特殊的波特率。所以要在此处把串口1在蓝牙控制时,切换为115200波特率,无校验位,1停止位。这个波特率一版蓝牙都支持,且为最常用的波特率。
最后修改解包函数sbus_to_rc(volatile const uint8_t *sbus_buf, RC_ctrl_t *rc_ctrl)
至此,所有兼容工作完成。
其实这个APP也有一点缺点,就是他不支持多点触控。有点烦。
X 关闭
- 太阳能