STM32CubeIDE(CUBE-MX hal库)----蓝牙模块HC-05(详细配置)

news2024/11/19 2:40:01

系列文章目录

STM32CubeIDE(CUBE-MX hal库)----初尝点亮小灯
STM32CubeIDE(CUBE-MX hal库)----按键控制
STM32CubeIDE(CUBE-MX hal库)----串口通信
STM32CubeIDE(CUBE-MX hal库)----定时器

文章目录

  • 系列文章目录
  • 前言
  • 一、蓝牙配置
  • 二、CUBE-MX可视化配置
  • 三、蓝牙APP调试助手
  • 四、实验
  • 总结


前言

HC-05是一种常用于无线通信的蓝牙模块,它提供了便捷的蓝牙连接和数据传输解决方案,只需要串口就可以进行数据的发送与接收。该模块具有简单易用的特性,适用于各种电子设备和嵌入式系统。


一、蓝牙配置

HC-05蓝牙模块有两个模式一个是AT模式,一个是透传模式。

  • AT模式是配置模式,允许用户通过串口发送AT指令与模块进行交互,配置蓝牙模块的参数,例如蓝牙名称、波特率、PIN码等。使用场景: 在AT模式下,用户可以通过串口终端或者其他设备向蓝牙模块发送AT指令,进行初始化配置。这种模式通常用于设备的初始化阶段,用于设置蓝牙模块的各种参数。
  • 透传模式是用于实现数据透明传输的模式,蓝牙模块在此模式下将串口接收到的数据通过蓝牙无线传输至远端设备,并将蓝牙接收到的数据透明传递给串口输出。使用场景: 在透传模式下,蓝牙模块充当了蓝牙串口透明传输的角色,将串口数据通过蓝牙传输到其他蓝牙设备。这种模式通常用于实现蓝牙串口通信,使得两个设备之间可以通过蓝牙进行无线串口通信。

配置步骤:
如何进入AT模式:(1)按住蓝牙模块上的按键通过USB转TTL模块接入电脑,:若模块以两秒的间隔闪烁,表示连接成功,进入AT命令模式(2)若无按键,则将en引脚接高,如图二所示,用一根杜邦线接到3.3v,就可以进入AT模式。再通过USB转TTL接入电脑.(3)如果没有USB转TTL可以使用开发板上面的USB-TTL如图三所示。
在这里插入图片描述在这里插入图片描述

打开SSCOM(串口调试助手),选择连接的串口,配置波特率38400,打开串口:

如果没有USB转TTL模块的小伙伴,如果你的开发板上有USB-TTL模块也可以进行使用,把开发板的跳线帽拿开。将蓝牙模块的TX–RXD,RX–TXD。同时按住蓝牙模块上的按键或者将en引脚接高,再给单片机供电。也可以进入AT模式进行调试。
在这里插入图片描述

在这里插入图片描述
常用的AT指令

指令名响应含义
ATOK测试指令
AT+RESETOK模块复位
AT+ORGLOK恢复默认状态
AT+ADDR?+ADDR:<地址> OK获得蓝牙模块地址
AT+NAME=<名称>OK设置设备名称
AT+PSWD=<密码>+PSWD:<密码> OK获得模块密码
AT+UART=<波特率>OK设置串口参数
AT+UART?+UART:<参数>OK获得串口参数
AT+ROLE=<0 从,1主,2回环角色>+ ROLE:<参数>OK查询蓝牙模块角色

注意:

  • AT+ORGL设置为默认状态,模块的默认状态是:①.设备类:0 ②.查询码:0x009e8b33 ③.模块工作角
    色:SlaveMode ④.连接模式:指定专用蓝牙设备连接模式⑤.串口参数:波特率—38400bits/s;停止位:1位;校验位:无
    ⑥.配对码:“1234” ⑦.设备名称:“H-C-2010-06-01”。每款产品的状态可能不同。
  • AT+ROLE=<参数>,0:Slave(从角色)——被动连接;1:Master(主角色)——查询周围 SPP 蓝牙从设备,并主动发起连接,从而建立主、从蓝牙设 备间的透明数据传输通道。2:Slave-Loop(回环角色)——被动连接,接收远程蓝牙主设备数据并将数据原样返回给远程蓝牙主设备;根据自己的需求选择合适的方式,如果想要例如手机主动连接蓝牙模块,那么就设为Slave(从角色)

二、CUBE-MX可视化配置

usart 端口配置
在这里插入图片描述
开启中断
在这里插入图片描述
DMA设置
在这里插入图片描述
保存生成代码

三、蓝牙APP调试助手

下载地址 http://www.2265.com/soft/268047.html,好多蓝牙APP搜不到蓝牙模块的信号,亲测这款APP比较好用。支持自定义控件,这里是以文本的方式发送数据。详细介绍可以参考这篇文章,https://www.jianshu.com/p/1a8262492619。
在这里插入图片描述

四、实验

实验一:实现通过手机蓝牙APP发送数据控制单片机小灯亮灭。这款APP有自带的数据发送协议,在单片机接收过程中我们只需要按照规定的进行解析就可以了。如下图所示。例如,我们想要根据发送一字节的数据0x01控制小灯的暗灭,则我们从APP发送的数据为 A5 01 01 5A 校验和是01.
在这里插入图片描述

函数解析

以下是stm32端接收数据的代码,对接收数据进行解析。如果首字节和尾字节分别是0xA5和0x5A,可以判断是我们要接收的数据包,再进一步计算校验和,对比数据是否发生错误。如果数据没有发生错误则判断数据如果是0x01则对小灯的电平进行反转。

void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
	if(huart==&huart3)
	{
		// 将接收到的数据通过串口三发送出去
		HAL_UART_Transmit_DMA(&huart3, receiveData, Size);
		printf("Size=%d\n",Size);
		printf("receiveData=%s\n",receiveData);

//		uint8_t i=0;
		//利用接收到的数据进行�?单的命令,判断校验和和数据是否是原数据�?有字节之和的�?8�?
		if(receiveData[0]==0xA5 && receiveData[Size-1]==0x5A ){
			uint8_t sum=0;
			for(uint8_t i=1;i<Size-2;i++)
			{
				sum+=receiveData[i];
			}
			if(sum==receiveData[Size-2])
			{
				if(receiveData[1]==0x01)
				{
					HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin);
				}
			}
		}
		memset(receiveData,0,sizeof(receiveData));

		// 再次�?启数据的接收
		HAL_UARTEx_ReceiveToIdle_DMA(&huart3, receiveData, sizeof(receiveData));
		 //关闭DMA接收过半中断
		__HAL_DMA_DISABLE_IT(&hdma_usart3_rx,DMA_IT_HT);
	}
}

实验现象
在这里插入图片描述


总结

如果连接不到蓝牙,可能是蓝牙当前角色是主机模式,无法被搜索到和配对,解决办法:

方法1. 先将蓝牙设置为从机模式(AT+ROLE=0\r\n),再进行配对。(推荐)
方法2. 通过AT指令与手机配对,具体操作参见HC05-AT指令集手册。

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

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

相关文章

mysql在linux环境下安装(rpm)以及初始化后的登录配置

注&#xff1a;该安装步骤转载于CSDN,下方配置为原创 按照图片安装并初始化完成MySQL等操作后进行&#xff1b; 安装对于rpm包集合 1-查看安装情况&#xff08;有4个路径&#xff09; whereis mysql 2-查看服务状态 systemctl status mysql 3-初始化数据库 mysqld --initial…

6.5 Windows驱动开发:内核枚举PspCidTable句柄表

在 Windows 操作系统内核中&#xff0c;PspCidTable 通常是与进程&#xff08;Process&#xff09;管理相关的数据结构之一。它与进程的标识和管理有关&#xff0c;每个进程都有一个唯一的标识符&#xff0c;称为进程 ID&#xff08;PID&#xff09;。与之相关的是客户端 ID&am…

【蓝桥杯选拔赛真题71】Scratch绘制彩虹 少儿编程scratch图形化编程 蓝桥杯创意编程选拔赛真题解析

目录 scratch绘制彩虹 一、题目要求 编程实现 二、案例分析 1、角色分析

Python+Requests对图片验证码的处理

Requests对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入&#xff0c;而且每次登录时图片验证码都是随机的&#xff1b;当通过request做接口登录的时候要对图片验证码进行识别出图片中的字段&#xff0c;然后再登录接口中使用&#xff1b; 通过request对图片验…

ChatGPT成为“帮凶”:生成虚假数据集支持未知科学假设

ChatGPT 自发布以来&#xff0c;就成为了大家的好帮手&#xff0c;学生党和打工人更是每天都离不开。 然而这次好帮手 ChatGPT 却帮过头了&#xff0c;莫名奇妙的成为了“帮凶”&#xff0c;一位研究人员利用 ChatGPT 创建了虚假的数据集&#xff0c;用来支持未知的科学假设。…

Windows环境 dockertopdesk 部署gitlab

1.在dockertopdesk里搜索 gitlab镜像 (pull)拉取镜像 2.运行镜像到容器 mkdir gitlab gitlab/etc gitlab/log gitlab/opt docker run -id -p 3000:80 -p 9922:22 -v /root/gitlab/etc:/etc/gitlab -v /root/gitlab/log:/var/log/gitlab -v /root/gitlab/opt:/var/opt/gitla…

Linux系统之centos7编译安装Python 3.8

前言 CentOS (Community Enterprise Operating System) 是一种基于 Red Hat Enterprise Linux (RHEL) 进行源代码再编译并免费提供给用户的 Linux 操作系统。 CentOS 7 采用了最新的技术和软件包&#xff0c;并提供了强大的功能和稳定性。它适用于各种服务器和工作站应用场景&a…

8.整数转换为浮点数【2023.11.30】

1.问题描述 整数转换为浮点数。 2.解决思路 使用input函数读取输入的整数 input_int int(input()) #将整数转换为浮点数类型 output_float float(input_int) 3.代码实现 numint(input("请输入一个整数")) num1float(num) print(num1)4.运行结果

掌握HarmonyOS框架的ArkTs如何管理和共享状态数据

ARKTS&#xff08;Ark TypeScript&#xff09;是HarmonyOS应用框架的一部分&#xff0c;提供了一种灵活而强大的状态管理机制。在ARKTS中&#xff0c;AppStorage和LocalStorage是两个关键的概念&#xff0c;它们分别用于应用级和页面级的状态共享。通过深入了解这两个特性&…

【Python】OpenCV库中常用函数详解和示例

在Python中&#xff0c;OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个广泛使用的图像和视频处理库。它包含许多用于图像处理和计算机视觉任务的函数。本文对一些常用的OpenCV函数及其详细解释和示例&#xff0c;以帮助大家理解和使用。 目录 cv2.…

跨模态图像翻译:使用具有感知监督的多生成网络合成MR脑图像的CT图像

Cross-modality image translation: CT image synthesis of MR brain images using multi generative network with perceptual supervision 跨模态图像翻译&#xff1a;使用具有感知监督的多生成网络合成MR脑图像的CT图像背景贡献实验方法损失函数Thinking 跨模态图像翻译&…

使用 NRF24L01 无线收发模块进行远程控制

NRF24L01 是一款基于 2.4GHz 射频通信的低功耗无线收发模块&#xff0c;具有高性能和稳定性&#xff0c;适用于远程控制和数据传输应用。本文将介绍如何使用 NRF24L01 模块进行远程控制&#xff0c;包括硬件的连接和配置&#xff0c;以及相应的代码示例。 一、引言 NRF24L01 是…

es6之class类(未完成)

es6之class类 一、什么是类二、类的基本用法1.定义类2.constructor() 方法3.静态方法&#xff08;属性)4.私有方法&#xff08;属性&#xff09; 三、继承 一、什么是类 类是用于创建对象的模板&#xff0c;类只是让对象原型的写法更加清晰、更像面向对象编程的语法。 class Pe…

matlab 多目标粒子群优化算法MOPSO

1、内容简介 略 21-可以交流、咨询、答疑 多目标、粒子群 2、内容说明 多目标粒子群优化算法MOPSO 3、仿真分析 略 %% Problem Definition TestProblem3; % Set to 1, 2, or 3 switch TestProblem case 1 CostFunction(x) MyCost1(x); nVar5; …

REST-Assured--JAVA REST服务自动化测试的Swiss Army Knife

什么是REST-Assured REST Assured是一套基于 Java 语言实现的开源 REST API 测试框架 Testing and validation of REST services in Java is harder than in dynamic languages such as Ruby and Groovy. REST Assured brings the simplicity of using these languages into t…

TCP简介及特性

1. TCP协议简介 TCP是Transmission Control Protocol的简称&#xff0c;中文名是传输控制协议。它是一种面向连接的、可靠的、基于IP的传输层协议。两个TCP应用之间在传输数据的之前必须建立一个TCP连接&#xff0c;TCP采用数据流的形式在网络中传输数据。TCP为了保证报文传输的…

网站更换IP的四大注意事项

1.对网站当中的数据进行备份 网站更换IP时可以将页面的数据库文件和站点文件通过下载工具在本地完成备份。 2.更换解析域名 从站点域名管理后台当中更换域名地址&#xff0c;改为新的IP地址。 3.确保IP安全 在用户更换IP前一定要确定IP是否安全&#xff0c;一旦IP存在不良…

如何选择适合长期投资的股票板块?

大家在学习炒股的过程中肯定没少听“板块”这个词&#xff0c;新手可能一脸懵逼&#xff0c;板块到底是啥意思&#xff1f;为什么会有这么多板块&#xff1f; 一、什么是股票板块&#xff1f;常见的板块分类有哪些&#xff1f; 板块理解起来其实很简单&#xff0c;它就是一种分…

java开发实战 基于Resuful风格开发接口, IocDi和nginx,以及三层架构思想,分层解耦,并使用Apifox对接口数据进行测试。

开发规范&#xff1a; 前后端分离&#xff1a; 根据需求文档开发 Resultful风格&#xff1a; REST&#xff08;REpresentational State Transfer&#xff09;&#xff0c;表述性状态转换&#xff0c;它是一种软件架构风格。 POST(insert) 负责新增的操作 http://localhost:8080…

TZOJ 1386 十转换转R进制

答案&#xff1a; #include<stdio.h> char fun(int n) {if (n > 0 && n < 10) //如果是小于10进制的return n 48; //ASCII值48else if (n > 10 && n < 16) //如果是大于10进制小于16进制的return n 55; //ASCII值55elseretur…