STM32外设系列—HC-05(蓝牙)

这篇具有很好参考价值的文章主要介绍了STM32外设系列—HC-05(蓝牙)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


🎀 文章作者:二土电子

🌸 关注文末公众号获取其他资料和工程文件!

🐸 期待大家一起学习交流!


一、蓝牙简介

蓝牙(Bluetooth)是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4~2.485GHz的ISM波段的UHF无线电波)。蓝牙技术最初由电信巨头爱立信公司于1994年创制,当时是作为RS232数据线的替代方案。蓝牙可连接多个设备,克服了数据同步的难题。我们这里介绍的是在嵌入式开发中常用的蓝牙模块——HC-05。

stm32 蓝牙,STM32开发笔记—外设系列,stm32,嵌入式硬件,单片机

二、使用方法

2.1 接线

HC-05供电电压为3.6V~6V。通常使用5V供电。其余的RXD接TXD,TXD接RXD,CND接GND即可。

2.2 AT指令

HC-05也可以使用AT指令进行配置。在配置之前,首先需要让模块进入配置模式。博主买的HC-05有一个小按钮。按住小按钮再给蓝牙模块上电,蓝牙模块进入配置模式,此时模块上自带的LED会慢速闪烁。进入配置模式后,就可以用AT指令来配置我们的HC-05了。配置时,用USB转TTL连接HC-05,用串口调试助手发送AT指令进行配置。需要注意的是,HC-05配置模式的波特率固定为38400,如果你给HC-05发送指令,没有收到回复,记得检查一下串口调试助手的波特率是否正确。下面列举一些配置时常用的AT指令

  • AT
    检查HC-05模块连接是否正常,HC-05收到后会回复“OK”
  • AT+NAME=名字
    配置HC-05的名字,配置成功后会返回“OK”
  • AT+NAME?
    询问HC-05的名字。发送后会收到“+NAME:“名字””,换行加“OK”
  • AT+PSWD=密码
    配置HC-05密码,配对时需要用到。配置成功后,会收到“OK”
  • AT+PSWD?
    询问HC-05配对密码。发送后会收到“+PSWD:991102”,换行加“OK”
  • AT+UART=波特率,停止位,校验
    设置HC-05的波特率,其中停止位0表示一位停止位,为1表示两位停止位。校验位为0表示无校验,为1表示奇校验,为2表示偶校验。比如设置115200的波特率,一位停止位,无校验。发送“AT+UART=115200,0,0”即可。配置成功后会返回“OK”
  • AT+UART?
    询问HC-05波特率。发送后会收到“+UART:波特率,停止位,校验”,换行加“OK”

配置完成功后,断电重新上电,HC-05按照配置好的名字,配对密码和波特率开始工作。此时LED快闪。

三、蓝牙APP

这里介绍一个超级好用的蓝牙APP——蓝牙调试器。大概长这个样子,大家可以在应用商店下载

stm32 蓝牙,STM32开发笔记—外设系列,stm32,嵌入式硬件,单片机

这个蓝牙调试器是一个大佬编写的,我这里只是介绍一下使用方法。其他的详细内容,可以到大佬的原文查看提高开发效率-蓝牙调试器。

为什么推荐这个蓝牙调试器?个人觉得,它能够在众多蓝牙调试器中脱颖而出,是因为它支持用户自己设计GUI,提供了许多控件,比如常见的按钮,文本框,可编辑文本框,以及一些滑动条,遥杆和曲线图等。支持自由设置位置,大小,功能十分强大。更重要的是,大佬提供了程序文件,对于想快速上手蓝牙模块,用手机与蓝牙交互的小伙伴来说,十分友好。

四、实战项目

下面我们以手机控制两个LED亮灭,同时通过BH1750检测周围环境光照强度变化,返回到手机端显示,并且能够显示光强变化曲线。

4.1 添加文件

第一步,先将大佬的文件添加到工程中。大佬的工程中的初始化函数已经包含了串口的初始化,所以我们不需要再包含串口文件。

stm32 蓝牙,STM32开发笔记—外设系列,stm32,嵌入式硬件,单片机

除此之外还要讲BH1750相关文件添加进来,具体可见博主STM32外设系列BH1750篇,这里就不再做介绍。

4.2 配置需要传递的参数

根据项目要求,我们需要配置三个参数,分别用来控制两个LED亮灭,传输周围环境光照强度。首先在程序中定义好这三个变量。

int gLed1Flag = 0;   // LED1亮灭控制标志位
int gLed2Flag = 0;   // LED2亮灭控制标志位
float gLingt = 0;   // 周围环境光照强度

定义好这些变量之后,我们需要配置一下文件中的接收和发送数据。打开大佬的.h文件,可以看到里面定义了许多类型的发送和接收变量。这里的发送接收是针对单片机来说的,而不是手机。

#define TX_BOOL_NUM  0
#define TX_BYTE_NUM  0
#define TX_SHORT_NUM 0
#define TX_INT_NUM   0
#define TX_FLOAT_NUM 0

#define RX_BOOL_NUM  0
#define RX_BYTE_NUM  0
#define RX_SHORT_NUM 0
#define RX_INT_NUM   0
#define RX_FLOAT_NUM 0

我们需要单片机发送一个周围环境的光照强度,数据类型为浮点型。需要接收两个LED亮灭控制变量,数据类型为int型。我们在对应的位置配置好对应的变量数量,如下

#define TX_BOOL_NUM  0
#define TX_BYTE_NUM  0
#define TX_SHORT_NUM 0
#define TX_INT_NUM   0
#define TX_FLOAT_NUM 1

#define RX_BOOL_NUM  0
#define RX_BYTE_NUM  0
#define RX_SHORT_NUM 0
#define RX_INT_NUM   2
#define RX_FLOAT_NUM 0

4.3 获取返回值

在使用手机APP控制LED亮灭时,单片机需要接收到手机发送来的数值。接收程序如下

// 如果接收到APP端数据
		if(readValuePack(&rxpack))
		{
			gLed1Flag = rxpack.integers[0];
			gLed2Flag = rxpack.integers[1];
		}

具体哪个值对应哪个参数,这些需要在手机端配置,放在下面介绍。

4.4 发送光照强度

单片机需要不断地向APP端发送周围环境光照强度数据,程序如下

	// 向APP发送周围环境光照强度
	txpack.floats[0] = gLingt;
	sendValuePack(&txpack);
	delay_ms(10);   // 防止发送过快

需要注意的是,蓝牙发送数据时如果需要一次发送多个数据,一定要在两次发送之间加10ms延时,否则会造成发送失败。

4.5 控制程序

包含两部分内容,一部分是通过BH1750获取周围环境光照强度,另一部分是LED亮灭控制函数。程序如下

// LED亮灭控制
		if (gLed1Flag == 1)
		{
			Med_Led_StateCtrl(LED1,LED_ON);   // 点亮LED1
		}
		if (gLed2Flag == 1)
		{
			Med_Led_StateCtrl(LED2,LED_ON);   // 点亮LED2
		}
		if (gLed1Flag == 0)
		{
			Med_Led_StateCtrl(LED1,LED_OFF);   // 熄灭LED1
		}
		if (gLed2Flag == 0)
		{
			Med_Led_StateCtrl(LED2,LED_OFF);   // 熄灭LED2
		}
		
		gLingt = Med_Bh1750_GetLightIntensity();   // 获取周围环境光照强度

4.6 手机端页面设计

根据项目要求,需要有两个LED开关,一个显示周围环境光照强度的文本框,还有一个波形显示框。

4.6.1 新建调试工程

打开蓝牙调试助手,选择中间的“专业调试”,然后点击加号新建调试工程。

stm32 蓝牙,STM32开发笔记—外设系列,stm32,嵌入式硬件,单片机

4.6.2 设置通信变量

我们新建完调试工程后,需要先进行通信设置。实际就是将我们手机APP与单片机通信时需要的变量配置好。

首先选中新建的调试工程,选择“通信设置”

stm32 蓝牙,STM32开发笔记—外设系列,stm32,嵌入式硬件,单片机

进入之后可以看到如下页面

stm32 蓝牙,STM32开发笔记—外设系列,stm32,嵌入式硬件,单片机

这里的发送接收,只针对手机APPA而言的。

我们需要新建一个接收变量和两个发送变量。接收变量为float型,发送变量为int型。这里的顺序对应我们单片机接收时,变量在接收数组中的位置。

stm32 蓝牙,STM32开发笔记—外设系列,stm32,嵌入式硬件,单片机

stm32 蓝牙,STM32开发笔记—外设系列,stm32,嵌入式硬件,单片机

设置完收发变量后还需要设置一下通信模式。点击最右边的通信模式。选择“仅操作控件时发送”即可。如下图

stm32 蓝牙,STM32开发笔记—外设系列,stm32,嵌入式硬件,单片机

至此,通信设置完成。

4.6.3 编辑控件

选中新建的调试工程,选择“编辑控件”,即可进入编辑页面。

stm32 蓝牙,STM32开发笔记—外设系列,stm32,嵌入式硬件,单片机

4.6.4 添加LED控制开关

进入编辑控件页面后,点击加号,添加一个开关。添加时会弹出页面让我们设置开关的信息

stm32 蓝牙,STM32开发笔记—外设系列,stm32,嵌入式硬件,单片机

第一栏是选择该变量是接收变量还是发送变量,第二栏是选择变量类型。最后一栏是选择关联的变量。关联的变量就是我们在通信设置中添加的变量。

选择完成后需要设置开关参数,设置打开和关闭时对应的值

stm32 蓝牙,STM32开发笔记—外设系列,stm32,嵌入式硬件,单片机

4.6.5 添加光照强度显示控件

光照强度显示控件我们选择文本,操作与添加LED开关类似,注意链接好我们添加的光照强度变量即可,这里就不再做详细介绍了。

项目要求能够显示周围环境光照强度变化曲线。这里我们用Y-T一维曲线图来显示。添加之后链接我们添加的光照强度变量,设置好范围即可,这里不再展示。

五、成果展示

首先用蓝牙调试器搜索我们的HC-05进行配对。配对完成后,在专业调试中找到我们新建的调试工程。点击右侧的开始按钮,选择我们的蓝牙,就可以开始操作啦。

stm32 蓝牙,STM32开发笔记—外设系列,stm32,嵌入式硬件,单片机

点击开关可以控制LED的亮灭。文本框显示当前周围环境光照强度。最下面显示当前周围环境光照强度变化曲线。博主最近手边没有烙铁,买来的BH1750没有焊接排针,所以没有连接。因此,显示的光照强度值为0。文章来源地址https://www.toymoban.com/news/detail-661289.html

到了这里,关于STM32外设系列—HC-05(蓝牙)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学习 stm32 无线蓝牙模块HC05配置与应用(手机蓝牙连接发送参数)

    最近学习使用HC05 蓝牙模块进行单片机 连接使用,进行手机端数据通信,用到了,和大家分享一下。 HC05 蓝牙模块介绍 HC05 模块,是 ALIENTEK 生成的一款高性能主从一体蓝牙串口模块,可以同各种带蓝牙功能的电脑、蓝牙主机、手机、PDA、PSP 等智能终端配对,该模块支持非常

    2024年01月16日
    浏览(58)
  • HC-05蓝牙模块与STM32控制led灯亮详解

    HC-05模块是一种基于蓝牙协议的简单无线通信设备,共有6个引脚,其中两个引脚通过stm32的两个含TX和RX的接口与之进行通信,一般用于无线控制,智能家居等。 VCC:用于供电 GND:用于供电 TX(发送):与单片机某一RX口进行通信 RX(接收):与单片机某一TX口进行通信 一句话

    2024年02月08日
    浏览(78)
  • STM32外设系列—HC-SR04(超声波)

    🎀 文章作者:二土电子 🌸 关注文末公众号获取其他资料和工程文件! 🐸 期待大家一起学习交流! 超声波测距的原理非常简单,超声波发生器在某一时刻发出一个超声波信号,当这个超声波信号遇到被测物体后会反射回来,被超声波接收器接收到。这样只要计算出从发出

    2024年02月09日
    浏览(45)
  • HC-05蓝牙模块--------手机与STM32通信(代码编写)(上位机配置)保姆级教程

    ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。 ⏩因为之前无论是电赛还是做项目,都用到了蓝牙模块,如:手机和stm32的通信,电赛中的双车通信,还是遥感小车的stm32与stm32的无线通信等等 ⏩本篇文章对HC-05蓝牙模块与手机的通信做一个详

    2024年02月03日
    浏览(75)
  • 【基于stm32】【附代码】两块蓝牙模块HC-05进行通讯,不占用串口一的代码教程

    目录 前言 一、两块hc-05蓝牙通讯的连接 二、使用步骤 1.hc-05从机,该教程主要是应用于【收数据】 usar.h代码 usart.c代码(只引用stm32的串口2,串口一用于烧程序) main.c 2.hc-05主机,该教程主要是应用于【发数据】 usar.h代码 usart.c代码(只引用stm32的串口2,串口一用于烧程序)

    2024年02月16日
    浏览(55)
  • 手把手教你使用--常用模块--HC05蓝牙模块,无线蓝牙串口透传模块,(实例:手机蓝牙控制STM32单片机点亮LED灯)

    最近在学STM32,基本的学完了,想学几个模块来巩固一下知识,就想到了蓝牙模块。玩啥好难过有很多博客教怎么连的,但自己看起来还是有点糊涂。模块的原理和知识点我就不讲解了,这里我主要 手把手 记录一下我是如何对蓝牙模块进行学习和使用的。 所使用的资料和工

    2024年02月02日
    浏览(86)
  • stm32 之20.HC-06蓝牙模块

    原理图显示使用usart3串口使用的是PB10和PB11引脚  直接配置usart3串口协议 主函数代码

    2024年02月11日
    浏览(52)
  • STM32传感器外设集--超声波模块(HC_SR04)

    目录 1.器件介绍 1.1.参数 1.2.测量范围 1.3.计算公式 1.4.优点 2.1.原理 3.代码编写 3.1.接线图 3.2.代码 3.2.1.HC_SR04.h 3.2.2.HC_SR04.c 3.2.3.timer.h 3.2.4.timer.c  3.2.5.main.c 5根引脚 工作电压5v 工作电流15mA 工作频率40Hz 最近距离 2cm 最远距离 4m 测量角度 15度 测试距离=(高电平时间*声速(340

    2024年02月14日
    浏览(42)
  • STM32--- 蓝牙HC-08 (两模块间主从通信)

    1.1  开发软硬环境 芯片型号:STM32F103RCT6 开发软件:Keil5  (v5.31+AC5,最常用) 代码用库:标准固件库 蓝牙模块:HC-08 (汇承家的;  缺点:小贵 ,优点:pdf+串口助手+APP+小程序,完美) USB转TTL模块: CH9340C  (Type-C接口,win10可免驱动,比CH340和CP2102爽) 1.2  代码下载链接

    2024年02月03日
    浏览(69)
  • STM32F1 + 蓝牙HC08 与 手机APP通信

    1.1  开发软硬环境 芯片型号:STM32F103RCT6 开发软件:Keil5  (v5.31+AC5,最常用) 代码用库:标准固件库 蓝牙模块:HC-08 (HC家的,小贵 ,配套图解、串口助手、APP、小程序,完美) USB转TTL模块: CH9340C  (Type-C接口,win10可免驱动,比CH340和CP2102爽) 1.2  代码下载链接 百度网

    2024年02月04日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包