第14章-蓝牙遥控小车 手把手做蓝牙APP遥控小车 蓝牙串口通讯讲解

本文讲解手机蓝牙如何遥控小车,如何编写串口通信指令

第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);//计算小车里程 单位cmHAL_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模式,可能是新版蓝牙模块,
在这里插入图片描述

  1. 先连接好蓝牙模块的几根线,然后按住蓝牙模块的按键

  2. 然后连接电脑,然后几秒后蓝牙小灯慢闪,说明进入AT模式

  3. 然后串口助手通过38400发送设置指令:AT+UART=115200,0,0

  4. 然后收到OK数据,说明设置成功。

这个是设置波特率截图
在这里插入图片描述
5. 然后重新拔插蓝牙模块(不用按按键)

  1. 在手机系统蓝牙配对HC-50 密码1234

  2. 串口助手设置波特率115200,然后打开手机APP发送任意内容测试

这个是后面通信测试截图
在这里插入图片描述
8. 设置按键-按照代码设置按下发送的数据
9.在这里插入图片描述
在这里插入图片描述

蓝牙模块连接单片机

把蓝牙插入到底板、跳线帽选择蓝牙通信
在这里插入图片描述
按下不同按钮小车会对应控制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/16831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络工程师备考2——vlan

vlan 1、什么是VLAN? VLAN(Virtual LAN),翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域…

ABeam 德硕 Team Building | SDC Green Day——环保公益行动

山野好拾光 春日公益行 继上年度大连办公室Green Day活动的顺利举办,环保的理念更加深入到ABeam每一位员工的心中。春日天气晴好,西安办公室的小伙伴们也迫不及待来上一场说走就走的Green Day Outing活动。 本次环保公益行动主题为「夏日Go Green畅享山…

千亿级开源大模型Qwen110B部署实测

近日,通义千问团队震撼开源 Qwen1.5 系列首个千亿参数模型 Qwen1.5-110B-Chat。 千亿级大模型普通显卡是跑不了推理的,普通人一般也没办法本地运行千亿级大模型。 为了探索千亿级大模型到底需要计算资源,我用云计算资源部署了Qwen1.5-110B-…

谷歌AI搜索功能“翻车”,用户体验引担忧

近期,谷歌对其搜索引擎进行重大更新,推出了全新AI搜索功能“AI Overview”,试图通过人工智能技术提供更智能便捷的搜索体验,并追赶微软和OpenAI等竞争对手。然而事与愿违,这项备受期待的功能上线后却频频出错&#xff…

测试基础06:软件产品的运行环境dev、sit、test、fat、uat、pre、pro

​​​​​​​课程大纲 1、Dev开发环境 (Development environment) 使用者 开发人员使用。 用途 用于编程,版本变动很大。 外部能否访问 外部用户无法访问。 2、sit/ITE系统集成测试环境 (System Integration Testing en…

30多万汉字词语押韵查询ACCESS\EXCEL数据库

押韵,也作“压韵”。作诗词曲赋等韵文时在句末或联末用同韵的字相押,称为押韵。诗歌押韵,使作品声韵和谐,便于吟诵和记忆,具有节奏和声调美。旧时押韵,要求韵部相同或相通,也有少数变格。现代新…

《开发问题解决》Window下7z解压:cannot create symbolic link : 客户端没有所需的特权

问题描述: 今天使用7z来解压东西的是突然出现这个问题。 问题解决: download直接下载到c盘中,由于所在文件夹有权限限制。无法进行正常解压。 7.zip解压时使用管理员权限进行解压,解压时使用管理员权限。即如图 使用管理员权限重…

【面试干货】找出一个偶数能够表示为两个素数之和的所有可能情况

【面试干货】找出一个偶数能够表示为两个素数之和的所有可能情况 1、实现思想2、代码实现 💖The Begin💖点点关注,收藏不迷路💖 1、实现思想 功能:通过循环遍历奇数,找出一个大于等于 6 的偶数能够表示为两…

【C++初阶】auto关键字

目录 1.auto简介 2.auto的使用 1.auto简介 在早期C/C中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的 是一直没有人去使用它,大家可思考下为什么? C11中,标准委员会赋予了auto全…

红队项目PinkysPalace格式字符串缓冲区溢出详解

简介 渗透测试-地基篇 该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。 请注意: 本文仅用于技术讨论与研究,对于所有笔记中复现的…

视频白平衡没调好怎么补救 视频白平衡调整用哪些参数 会声会影视频制作教程

没有调不好的白平衡!如果有,那就是你的方法没用对。无论你的视频发黄还是发蓝,只要掌握本文提供的方法,简单几步就能纠正色偏、校准白平衡。操作很简单,几乎所有人都能够轻松掌握。有关视频白平衡没调好怎么补救&#…

Android 布局中@NULL的使用和代码实现方式详解

文章目录 1、使用场景2、示例代码实现2.1、移除背景2.2 、移除文本2.3、移除布局宽度或高度2.4、移除提示文本2.5、移除图像资源 3、综合示例3.1、布局文件 activity_main.xml3.2、主活动文件 MainActivity.java3.4、资源文件3.5、运行结果 4、优点5、缺点6、综合分析6.1、适用…

.net core web项目部署IIS报错:HTTP 错误 413.1 - Request Entity Too Large

HTTP 错误 413.1 - Request Entity Too Large 解决办法 这个报错的原因是因为IIS配置问题,IIS最大默认配置只有30M,超过30M就会报错 解决办法 在程序中配置能接收最大字节大小 //配置请求头中能最大接收多少数据 //builder.WebHost.UseKestrel(option…

VGG论文解析—Very Deep Convolutional Networks for Large-Scale Image Recognition

VGG论文解析—Very Deep Convolutional Networks for Large-Scale Image Recognition -2015 研究背景 大规模图像识别的深度卷积神经网络 VGG(牛津大学视觉几何组) 认识数据集:ImageNet的大规模图像识别挑战赛 LSVRC-2014:Image…

linux系统——nohup后台运行程序

nohup可以将正在执行程序以后台挂起形式执行,也即为执行结果不打印到终端 具体使用可以,nohup待执行的命令,可以将执行命令结果输出到当前目录的nohup.out文件内 nohup也有其他用法

MyCat2之分库分表

原理 一个数据库由很多表的构成,每个表对应的不同的业务,垂直切分是指按照业务将表进行分类,分不到不同的数据库上,这样压力就分担到了不同的库上面。 数据分片 数据分片包括里:垂直分片和水平分片,垂直分…

安装依赖报-gyp: No Xcode or CLT version detected!

错误 > node-gyp rebuild No receipt for com.apple.pkg.CLTools_Executables found at /. No receipt for com.apple.pkg.DeveloperToolsCLILeo found at /. No receipt for com.apple.pkg.DeveloperToolsCLI found at /. gyp: No Xcode or CLT version detected! gyp ERR!…

【wiki知识库】02.wiki知识库SpringBoot后端的准备

📝个人主页:哈__ 期待您的关注 目录 一、🔥今日目标 二、📂打开SpringBoot项目 2.1 导入所需依赖 2.2修改application.yml配置文件 2.3导入MybatisPlus逆向工程工具 2.4创建一个公用的返回值 2.5创建CopyUtil工具类 2.6创建…

科技与心理学的协同舞蹈

在探讨盲人如何利用如“蝙蝠避障”这样的辅助软件融入日常生活的同时,我们不得不深入触及盲人教育心理学的核心,这一领域致力于理解盲人在学习与成长过程中独特的心理需求与挑战,以及如何通过教育策略激发他们的潜能,促进全面发展…

前端Vue自定义顶部搜索框:实现热门搜索与历史搜索功能

前端Vue自定义顶部搜索框:实现热门搜索与历史搜索功能 摘要: 随着前端开发复杂性的增加,组件化开发成为了提高效率和降低维护成本的有效手段。本文介绍了一个基于Vue的前端自定义顶部搜索框组件,该组件不仅具备基本的搜索功能&am…