第14章-蓝牙遥控小车 手把手做蓝牙APP遥控小车 蓝牙串口通讯讲解
使用:HC-05 主从机一体蓝牙串口透传模块注意: 供电3.6V-6V(最好5V)引脚顺序 VCC GND TXD RXD。
本文讲解手机蓝牙如何遥控小车,如何编写串口通信指令
第14章-手机遥控功能
我们要实现蓝牙遥控功能,蓝牙遥控功能要使用:1.单片机的串口、2.蓝牙通信模块
所以我们先调试好:单片机的串口->蓝牙模块->接到一起联调
14.1-电脑控制小车
完成功能:电脑连接单片机串口三 控制小车前进后退
先看原理图
通过原理图可以看出这是使用的串口3 在使用的时候注意把跳线帽,跳线到蓝牙通信位置
打开初始化软件
生成代码
在main 定义全局变量
uint8_t g_ucUsart3ReceiveData; //保存串口三接收的数据
开启串口三中断接收
HAL_UART_Receive_IT(&huart3,&g_ucUsart3ReceiveData,1); //串口三接收数据
在usart.c 重新实现串口中断回调函数
然后我们可以在中断回调函数里面中编写遥控命令控制逻辑了
//串口接收回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if( huart == &huart3)//判断中断源
{
if(g_ucUsart3ReceiveData == 'A') motorPidSetSpeed(1,1);//前运动
if(g_ucUsart3ReceiveData == 'B') motorPidSetSpeed(-1,-1);//后运动
if(g_ucUsart3ReceiveData == 'C') motorPidSetSpeed(0,0);//停止
if(g_ucUsart3ReceiveData == 'D') motorPidSetSpeed(1,2);//右边运动
if(g_ucUsart3ReceiveData == 'E') motorPidSetSpeed(2,1);//左边运动
if(g_ucUsart3ReceiveData == 'F') motorPidSpeedUp();//加速
if(g_ucUsart3ReceiveData == 'G') motorPidSpeedCut();//减速
HAL_UART_Receive_IT( &huart3, &g_ucUsart3ReceiveData, 1);//继续进行中断接收
}
}
在usart.c中声明外部变量
extern uint8_t g_ucUsart3ReceiveData; //保存串口三接收的数据
然后我们更改一下 主函数内容,把PID红外循迹代码注释掉,然后我们增加串口三的输出,以便我们后面观察数据。
串口不定长输出
我们把转速等信息都可以显示在OLED上,那么如何通过串口输出那?
sprintf((char *)Usart3String,"V1:%.2fV2:%.2f\r\n",Motor1Speed,Motor2Speed);//显示两个电机转速 单位:转/秒
HAL_UART_Transmit(&huart3,( uint8_t *)Usart3String,strlen(( const char *)Usart3String),50);//阻塞式发送通过串口三输出字符 strlen:计算字符串大小
sprintf((char *)Usart3String,"Mileage%.2f\r\n",Mileage);//计算小车里程 单位cm
HAL_UART_Transmit(&huart3,( uint8_t *)Usart3String,strlen(( const char *)Usart3String),50);//阻塞式发送通过串口三输出字符 strlen:计算字符串大小
sprintf((char *)Usart3String,"U:%.2fV\r\n",adcGetBatteryVoltage());//显示电池电压
HAL_UART_Transmit(&huart3,( uint8_t *)Usart3String,strlen(( const char *)Usart3String),50);//阻塞式发送通过串口三输出字符 strlen:计算字符串大小
HAL_Delay(5);
把之前PID初始化时候速度PID目标值改成0
然后我们测试
硬件连接
我们现在使用USB-TTL连接串口三,单片机串口三与电脑通信(底板不需要插入蓝牙)
然后打开软件
发送指令小车就会对应运动
在电脑串口软件查看输出信息、发送 指令控制小车运动
14.2-手机蓝牙控制小车
功能:蓝牙遥控小车前进、后退、停止、左右转、加速、减速、手机显示数据
蓝牙模块和电脑通信
蓝牙模块-硬件介绍
使用:HC-05 主从机一体蓝牙串口透传模块
注意: 供电3.6V-6V(最好5V)
引脚顺序 VCC GND TXD RXD
先调试蓝牙模块-设置波特率
如图先把蓝牙模块通过USB-TTL模块相连接,然后
如果反复测试不能进入AT模式,可能是新版蓝牙模块,
-
先连接好蓝牙模块的几根线,然后按住蓝牙模块的按键
-
然后连接电脑,然后几秒后蓝牙小灯慢闪,说明进入AT模式
-
然后串口助手通过38400发送设置指令:AT+UART=115200,0,0
-
然后收到OK数据,说明设置成功。
这个是设置波特率截图
5. 然后重新拔插蓝牙模块(不用按按键)
-
在手机系统蓝牙配对HC-50 密码1234
-
串口助手设置波特率115200,然后打开手机APP发送任意内容测试
这个是后面通信测试截图
8. 设置按键-按照代码设置按下发送的数据
9.
蓝牙模块连接单片机
把蓝牙插入到底板、跳线帽选择蓝牙通信
按下不同按钮小车会对应控制
1. 小车开源笔记资料:
我用夸克网盘分享了「V3小车笔记网盘」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/959b889e058b
2.小车实物或者更多最新资料:
https://item.taobao.com/item.htm?id=811175824266&pisk=frNHu_4FKJkIvsTuuCcCEX7mzo69AHGSPud-2bnPQco69uhKwVlZk4dE8DRe7R4bqDQ5dXeiqlriYBF-9zrgok2pv6ipru4SXud8J726Zra79wGRRXaINbSADshuRyG7W7pYYWxa74awT0JeiYyTPbSAD_bhCncja8hTullQsYb2pHeVxW6nemxKmuePZQnZ0yoUJyFwHvJQ-cDxh5u3M0UFPQRzs2D3we3f5wHLUrMb9SCk1XU0Qfu34sSE_rygkvVhmBnSE5q3EkQJFV2uzSGI6U5U7Xmn35FFVTmZ_yHzZvjVQlHoxRPEIURz7fiKe8qhxpiUplDj7A8lGVExbyNUIata8onnTVkOgZ4ZURFIhWIwtjybJXezb1A30gJ2QKPbmQgNy5JWFvusSm3U67YDehXMzNbM3-ME525ASNvWFvusSmQGSK7sLVgFM&spm=a21xtw.29178619.product_shelf.3.6043fc79LdVbgq
3.小车最新视频:
https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)