stm32之蓝牙模块HC-05使用

2023-05-16

参考资料:
【常用模块】HC-05蓝牙串口通信模块使用详解(实例:手机蓝牙控制STM32单片机)
HC-05蓝牙模块使用教程
HC-05蓝牙模块使用记录
补充与理解:
套餐有两个板子
一个是参数架HC—USB—T,其含有一款芯片stm32f103c8t6,官方利用其内存把它设置成一个u盘,用数据线连接后可进入u盘获取软件
另一个是HC-05蓝牙串口模块。
在这里插入图片描述
杜邦线连接方式如图
在这里插入图片描述
有插座,直接插入即可,注意蓝牙模块是靠外的那排,WiFi模块是插靠里那排
在这里插入图片描述

这个HID转串口小助手是专门为这个参数架配套使用的,感觉不太好用,有时发生AT指令没反应
在这里插入图片描述

所以我直接用XCOM V2.0这款串口软件
1,USB转TTL模块与蓝牙模块连接
在这里插入图片描述
只需要4根杜邦线就行。
其中
USB_TTL 蓝牙模块
tx——————RX,
rx——————TX,
vcc——————3.3V
gnd——————GND
那么模块的EN(key)和STATE(led)是做啥的?
我猜EN(key)引脚就功能相当于模块上的实体小按键,实体小按键按一下就拉高,松开就拉低,如果是软件控制,就控制这个EN(key)引脚,来达到按键按下和松开的效果。
STATE是led显示状态,配对状态输出; 配对成功(已连接)输出高电平,未配对则输出低电平。
在这里插入图片描述
正点原子的接线:
在这里插入图片描述
汇承官方手册接线:
在这里插入图片描述

在这里插入图片描述
看上面的资料可知:
PIO11应该就是这个EN(key)引脚,通过电阻接地,网络标号key拉高相当于按键按下(实质也是拉高电平)
PIO9应该就是这个STATE(led)引脚,通过一个电阻连接led
那么按键起什么作用呢?
模块有两种模式:
1,AT指令模式(命令响应工作状态),就是可以通过串口,发生AT指令,
设置蓝牙模块在连接通信模式时的一些参数:比如设置工作时的波特率(AT+UART=115200,0,0)切记,是要输入三个参数,设置蓝牙配对码(AT+PSWD=1234(默认)),设置蓝牙名称(AT+NAME =Beijing)等。
查询蓝牙模块的一些信息:比如查询版本号(AT+VERSION?),查询地址(AT+ADDR?),查询波特率(AT+ UART?),查询蓝牙名称(AT+NAME?)有点奇怪,查询不出名字,但是能设置成功,查询模块工作状态(AT+STATE ?)等。

蓝牙模块的配置(HC05):修改密码、修改模块名字、修改波特率。
2,连接通信模式(蓝牙常规工作状态),也就是蓝牙配对后,正常工作模式。
怎样进入AT指令模式?
进入AT指令模式有两种方法:
在这里插入图片描述
什么叫做置高一次PIO11?

在蓝牙模块中有一个小按键,按一下就置高一次PIO11。
所以我采用第2种方法,在连接好USB转TTL模块与蓝牙模块后,按住按键,插入USB,然后再松开按键,这样就进入了AT指令模式,可以直接通过电脑的串口软件设置和查询模块信息了

怎么样进入连接通信模式?
设置好后,最后发送复位指令AT+RESET指令,模块进入连接通信模式,然后就可以用手机搜索蓝牙了。
不用按按键,连接好USB转TTL模块与蓝牙模块后直接插入电脑或者单片机使用。
在这里插入图片描述
在这里插入图片描述
依次设置蓝牙模块参数,最后查询一下
在这里插入图片描述
依次有:
版本
地址
配对码
波特率,停止位,寄偶校验
Param1:波特率(bits/s)
取值如下(十进制):
2400、4800、9600、19200、38400、
5760、115200、230400、460800、
921600、1382400.
Param2:停止位
0——1 位
1——2 位
Param3:校验位
0——None
1——Odd
2——Even
默认设置:9600,0,0
连接模式:
0——指定蓝牙地址连接模式
1——任意蓝牙地址连接模式
(不受绑定指令设置地址的约束)
模块角色
0——从角色(Slave)默认,被动连接;
1——主角色(Master),查询周围 SPP 蓝牙从设备,并主动发起连接,从而建立主、从蓝牙设备间的透明数
据传输通道。
2——回环角色(Slave-Loop),被动连接,接收远程蓝牙主设备数据并将数据原样返回给远程蓝牙主设备;
最后复位,进入连接通信模式(蓝牙常规工作状态),红色LED由慢闪变成快闪。

此时蓝牙模块的串口以115200的波特率进入蓝牙常规工作状态,此时电脑串口发生的”AT+xxx“不再是AT指令,而是数据。也就是无法再修改蓝牙参数了,如果需要修改模块配对码,波特率,则需要拔出USB转TTL,按住模块按键的同时插入USB转TTL,最后松开按键,才切换进入AT指令模式,此时的波特率是38400,这个是无法修改的,两种进入命令响应工作模式的方式使用的波特率是不一样的,第二种方法进入的AT指令模式就是通过38400的波特率工作的。115200比特率是蓝牙常规工作时的波特率,可以在AT指令模式下修改。
在这里插入图片描述
连接好USB转TTL模块与蓝牙模块后直接插入电脑,是进入蓝牙常规工作还是按第一种方式进入了AT指令模式?
答:插入后,蓝牙进入蓝牙常规工作模式,此时模块会与手机配对,配对成功就可以双向通信,如果未配对成功(蓝牙未连接),再按一下模块上的按键,就进入了AT指令模式,可以连续发指令,不需要发一次再按一下。
实验测试1:
1,插入电脑
2,打开串口软件,
刚刚把模块蓝牙常规工作时的波特率设置为115200,0,0,因此把串口软件设置为115200,1停止位,无寄偶校验。
在这里插入图片描述
发送AT指令 at+version? 测试一下,发现窗口没有反应,无任何信息,此时打开手机,发现手机已经连接了模块,收到消息如下:
在这里插入图片描述
可以猜测,此时是蓝牙常规工作模式,电脑发给模块的是数据,不是AT指令,为了再验证一下,发些其他数据
在这里插入图片描述
手机端收到
在这里插入图片描述

3,此时我再按下模块小按键(注意,我手机还没有和模块断开连接)
继续发送数据,还是窗口还是没反应,手机却收到了信息,说明啥?说明还是蓝牙常规工作模式,为什么会这样?因为没有仔细品中句话
在这里插入图片描述
未配对情况下就是 AT 模式,刚刚我手机没有与模块断开连接,所以不是 AT 模式,按下按键也是无效的,所以,应该断开蓝牙!
实验测试2:
1,关闭手机蓝牙,拔下USB转TTL,确保USB转TTL插入电脑后,不与手机连接,这样才是未配对的情况下
2,插入USB转TTL
3,打开软件,波特设置为蓝牙常规工作时的波特率设置为115200,0,0,因此把串口软件设置为115200,1停止位,无寄偶校验。
1)直接发送AT指令
在这里插入图片描述
窗口无反应,因为模块还未与蓝牙连接,所以手机端就不用看了。

2)按下模块小按键,松开,然后再次发送AT指令
在这里插入图片描述
窗口有反应了,返回了我要的蓝牙地址,那么继续发送其他指令再测试几下
3)连续发送AT指令
在这里插入图片描述
成功反馈信息,上面的回答正确!
注意到:在未配对状态下,进入AT模式后,就是第一次按下了小按键,后面不需要按,直接发送指令,操作起来就像第二种方式进入AT指令模式一样,区别在于此时的波特率是115200,不是38400。
参考文章里,这句话有误!
【常用模块】HC-05蓝牙串口通信模块使用详解(实例:手机蓝牙控制STM32单片机)
在这里插入图片描述
我自己也说的比较重复啰嗦,,,有时重复啰嗦是希望能表达清楚,,,

AT+reset和AT+ORGL区别:

AT+reset,配置好参数后,发送该指令,可将AT模式切换为蓝牙常规工作模式,后面发送的就是数据,不再是指令了。

AT+ORGL,是参数配置恢复成出厂模式,就像手机恢复出厂设置一样。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stm32之蓝牙模块HC-05使用 的相关文章

  • 如何更改闪存的起始地址?

    我正在使用 STM32F746ZG 和 FreeRTOS Flash的起始地址是0x08000000 但我想把它改成0x08040000 我通过谷歌搜索了这个问题 但没有找到解决方案 我更改了链接器脚本 如下所示 MEMORY RAM xr
  • 在没有 IDE 的情况下如何使用 CMSIS?

    我正在使用 STM32F103C8T6 并想使用 CMSIS 这本质上只是寄存器定义 没有代码 让我的生活更轻松 同时仍保持在较低水平 问题是我不知道如何安装该库以便在命令行上使用 Makefile 使用 所有文档似乎都与特定于供应商的 I
  • GCC - 如何停止链接 malloc?

    我正在努力将我的代码缩减到最小的骨架大小 我使用的是只有 32k 闪存的 STM32F0 需要很大一部分闪存用于数据存储 我的代码已经有大约 20k 闪存大小 其中一些是由于使用了 STM32 HAL 函数 我可以在以后需要时对其进行解释和
  • 当数据大小较小时,内存到内存 DMA 传输是否需要权衡?

    我正在学习 STM32 F4 微控制器 我正在尝试找出使用 DMA 的限制 根据我的理解和研究 我知道如果数据量较小 即设备使用DMA生成或消耗少量数据 则开销会增加 因为DMA传输需要DMA控制器执行操作 从而不必要地增加系统成本 我做了
  • 140-基于stm32单片机智能晾衣杆控制系统Proteus仿真+源程序

    资料编号 140 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 ds1302时钟 光敏传感器 蜂鸣器 LED灯 制作一个基于stm32单片机智能晾衣杆控制系统Proteus仿真 2 通过光敏传感器
  • 138-基于stm32单片机汽车多功能仪表盘显示系统Proteus仿真+源程序

    资料编号 138 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 ds1302时钟 LED灯 蜂鸣器 电位器 制作一个基于stm32单片机汽车多功能仪表盘显示系统Proteus仿真 2 通过DHT1
  • 跟着野火学FreeRTOS:第一段(任务定义,切换以及临界段)

    在裸机系统中 系统的主体就是 C P U CPU CP U 按照预先设定的程序逻辑在 m a i n
  • 擦除后无法写入闪存

    所以我不能在擦除后直接写入内部闪存 如果写操作之前没有擦除操作 那么我可以 有什么想法吗 编程函数返回 成功写入 值 但查看内存时 没有写入任何数据 这是代码 uint32 t pageAddress 0x08008000 uint16 t
  • 串口通讯第一次发送数据多了一字节

    先初始化IO再初始化串口 导致第一次发送时 多出一个字节数据 优化方案 先初始化串口再初始化IO 即可正常通讯
  • STM32F4XX的12位ADC采集数值超过4096&右对齐模式设置失败

    文章目录 一 前言 二 问题1 数值超过4096 三 问题1的排错过程 四 问题2 右对齐模式设置失败 五 问题2的解决方法 5 1 将ADC ExternalTrigConv设置为0 5 2 使用ADC StructInit 函数 一 前
  • Arm:objcopy 如何知道 elf 中的哪些部分要包含在二进制或 ihex 中?

    我正在开发一个项目 其中涉及解析arm elf 文件并从中提取部分 显然 elf 文件中有很多部分没有加载到闪存中 但我想知道 objcopy 到底如何知道要在二进制文件中包含哪些部分以直接闪存到闪存中 以arm elf文件的以下reade
  • for循环延时时间计算

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 之前做led点亮的实验 好像是被delay函数影响了 因为delay参数设置的不对
  • 库函数点亮Led

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • STM32H5 Nucleo-144 board开箱

    文章目录 开发板资料下载 目标 点亮LD1 绿 LD2 黄 和LD3 红 三个LED灯 开箱过程 博主使用的是STM32CubeMX配置生成代码 具体操作如下 打开STM32CubeMX File gt New project 选择开发板型
  • systick定时器

    systick定时器 文章目录 前言 一 前期疑惑 二 解答 1 关于systick是阻塞的吗 2 非阻塞 三 软件编写 总结 前言 这边记录systick相关知识点 一 前期疑惑 在学习systick志气啊 其实对于systick还是一脸
  • STM32 上的位置无关代码 - 指针

    我已成功在 STM32 上构建并运行位置无关的代码 向量表和 GOT 已修补 一切正常 但我对这样的代码有问题 double myAdd double x return x 0 1 double ptrmyAdd double myAdd
  • 使用 STM32 USB 设备库将闪存作为大容量存储设备

    我的板上有这个闪存IC 它连接到我的STM32F04 ARM处理器 处理器的USB端口可供用户使用 我希望我的闪存在通过 USB 连接到 PC 时被检测为存储设备 作为第一步 我在程序中将 USB 类定义为 MSC 效果很好 因为当我将主板
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能
  • 读取STM32 MCU SPI数据寄存器的值

    有很多类似的问题 但似乎没有一个问题完全相同 我正在将 STML4 MCU 连接到 6 轴传感器 LSM6DS3 我已经成功地在 I2C 中实现了所有内容 但想要 SPI 的额外速度 和 DMA 如果我能让这些第一步工作起来的话 因此 第一
  • STM32F4 定时器 - 计算周期和预分频,以生成 1 ms 延迟

    我在用STM32F407VGT6 with CubeMX 因此 我从通用定时器开始 但我被预分频值和周期值所困扰 基本上我想每隔一段时间生成一个定时器中断n 其中 n 1 2 3 ms 并执行一些任务 计算周期和预分频值的公式有很多变化 公

随机推荐