找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16081|回复: 1
打印 上一主题 下一主题
收起左侧

STM32 模块篇-蓝牙串口模块(HC-05)实验

[复制链接]
跳转到指定楼层
楼主
ID:105323 发表于 2016-3-4 13:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目     录
5.10.1概述3
5.10.1.1产品特点:4
5.10.1.3应用领域:7
5.10.2 实验目的8
5.10.3 硬件设计8
5.10.4 软件设计9
5.10.4.1 软件设计说明9
5.10.4.2 STM32库函数文件9
5.10.4.3 自定义头文件10
5.10.4.4 pbdata.h文件内容10
5.10.4.5 pbdata.c文件内容11
5.10.5  GPIO引脚时钟使能13
5.10.6  stm32f10x_it.c文件内容13
5.10.7  main.c文件里内容14
5.10.8 程序下载16
5.10.9 实验效果图17
5.10.10小常识(非常重要)17
5.10  HC-05蓝牙串口模块
实验及程序设计
5.10.1概述嵌入式蓝牙串口模块具备两种工作模式:命令响应工作模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master)、从(Slave)、和回环(Loopback)三种工作角色。当模式处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;当模块处于命令响应工作模式时能执行所有的AT命令。上电之前按住模块的微动开关后再送电,这是模块回进入命令响应工作模式,LED灯是慢速闪动状态,亮灭的时间间隔约2秒。
我们销售的模块都是从机,出厂默认值是:波特率:9600,N,8,1。配对密码:1234。
我们不建议用在超过115200的波特率,信号的干扰会使系统工作不稳定。设置超过115200后用电脑无法正常访问蓝牙模块,要用单片机编程于高于115200才能使用此波特率和重新发AT命令设低波特率,因此要谨慎设置过高的频率。用AT命令设好波特率后,下次上电使用不需重新设置,HC-06-D蓝牙串口模块可以掉电保存波特率。

5.10.1.1产品特点:
l 采用CSR主流蓝牙芯片,蓝牙V2.0协议标准

l 核心串口模块工作电压3.3V。带底板的可以为3.1-6.5V之间

l 波特率为1200,2400,4800,9600,19200,38400,57600,11520
0用户可设置;
l 核心模块尺寸大小为:28mm x 15 mm x 2.35mm。底板尺寸27mm*47mm

l 工作电流:配对中为50MA,配对完毕通信中为28MA

l 空旷地带有效传输距离10米,超过10米也是可能的,但是不对连接质量做保证;
l 配对成功以后,可以作为全双工串口使用。无需了解任何蓝牙协议,但只支持8位数据位、1位停止位、无奇偶校验的通信格式。这也是最常用的通信格式,不支持其它格式!
5.10.1.2 AT命令集如下:


举例说明:
At+version?\r\n
+VERSION:2.0-20100601
OK



出厂默认值:
a) 设备类:0
b) 查询码:0x009e8b33
c) 模块工作角色:Slave Mode
d) 连续模式:指定专用蓝牙连接模式
e) 串口参数:波特率:38400bits/s;停止位:1位;校验位:无
f) 配对码:“1234”
g) 设备名称:“H-C-2010-06-01”


蓝牙地址的表示方法:NAP:UAP:LAP(十六进制)举例说明:
模块蓝牙设备地址为:12:34:56:ab:cd:ef
At+addr?\r\n
+ADDR:1234,56,ABCDEF
OK


举例:
AT+IAC=9e8b3f\r\n  OK
AT+IAC=?\r\n
+IAC: 9e8b3fOK


举例:
AT+IAQM=1,9,48\r\n  --查询模式设置:带RSSI信号强度指示,超过9个蓝牙设备响应则终止查询,设定超时为48x1.28=61.44秒。
OK
AT+INQM\r\n
+INQM:1,9,48
OK


举例:
AT+IAQM=1,9,48\r\n  --查询模式设置:带RSSI信号强度指示,超过9个蓝牙设备响应则终止查询,设定超时为48x1.28=61.44秒。
OK
AT+INQM\r\n
+INQM:1,9,48





举例:设置串口波特率:115200,2位停止位,Even校验
AT+UART=115200,1,2\r\n
OK
AT+UART ?\r\n
++UART:115200,1,2
OK


举例:
AT+NAME=HC-05\r\n  —设置模块设备名称为“HC-05”
OK
at+name=Beijing\r\n  —设置模块设备名称为“Beijing”
OK
at+name=“Beijing”\r\n  —设置模块设备名称为“Beijing”
OK
at+name?\r\n  
+NAME=Beijing
OK
以上参数设置可以掉电保存,只需修改一次。详细参考《蓝牙串口模块使用说明》。
5.10.1.3应用领域: l 用于GPS导航系统,水电煤气抄表系统,工业现场采控系统

l 可以与蓝牙笔记本电脑、电脑加蓝牙适配器、PDA等设备进行无缝连接

5.10.2 实验目的1. 掌握HC-05蓝牙串口模块的工作原理;
2. 掌握单片机实现HC-05蓝牙串口模块通讯的基本方法;
3. 熟悉单片机数据采集系统中,HC-05蓝牙串口模块作为传感器对象的系统设计方法,更多的了解电子传感器及控制器的飞速发展。
5.10.3 硬件设计    把HC-05蓝牙串口模块通过杜邦线与大黄蜂开发板连接。接线方法简单,采用4根杜邦线,按照“附表1接线方法”连接好即可。
实验器材:
一块大黄蜂开发板;一个HC-05蓝牙串口模块;四根杜邦线;一条USB下载线等。





5.10.4 软件设计
5.10.4.1 软件设计说明打开手机蓝牙功能搜索蓝牙设备HC-05,输入密码(1234)。安装Android 版串口调试软件(HC-PDA-ANDROID)。安装完成后打开软件(BTClient)选择连接并在查找设备中选择HC-05,等待几秒钟与蓝牙模块连接,当连接成功后手机下方会有提示连接成功。然后发送数据(1234),这时屏幕上会返回(2345)说明蓝牙模块连接成功。



5.10.4.2 STM32库函数文件



本节实验及以后的实验我们都是用到库文件,其中 stm32f10x_gpio.h头文件包含了GPIO端口的定义。stm32f10x_rcc.h 头文件包含了系统时钟配置函数以及相关的外设时钟使能函数,所以我们要把这两个头文件对应的stm32f10x_gpio.c和stm32f10x_rcc.c加到工程中;Misc.c库函数主要包含了中断优先级的设置,stm32f10x_exti.c 库函数主要包含了外部中断设置参数,tm32f10x_tim.c库函数主要包含定时器设置,tm32f10x_usart.c库函数主要包含串行通讯设置;以上库文件包含了本次实验所有要用到的函数使用功能。

5.10.4.3 自定义头文件



我们已经创建了两个公共的文件,这两个文件主要存放我们自定义的公共函数和全局变量,以方便以后每个功能模块之间传递参数。
5.10.4.4 pbdata.h文件内容


5.10.4.5 pbdata.c文件内容
下面是pbdata.c文件详细内容,在文件开始还是引用“pbdata.h”文件。


5.10.5  GPIO引脚时钟使能
我们总在强调,每个工程都必须在开始时配置并启动STM32系统时钟,这次也不例外。



本节实验用到了PA\PE端口,所以要把PA\PE端口的时钟打开;串口1时钟源是通过APB2预分频器得到的,串口1时钟初始化;因为要与外部芯片通讯,所以要打开功能复用时钟。
5.10.6  stm32f10x_it.c文件内容在中断处理stm32f10x_it.c文件里中仅串口1子函数非空,进入中断处理函数后,只有串口1有参数输出。


5.10.7  main.c文件里内容
  在主程序中采用while(1)语句,采用中断方式。


5.10.8 程序下载
在这一章节中我采用串口通讯方式读取蓝牙模块数据,数据读入后通过程序转换直接串口打印输出至屏幕显示。
请根据下图所指向的7个重点区域配置。其中(1)号区域根据自己机器的实际情况选择,我的机器虚拟出来的串口号是COM3。(2)号区域请自己选择程序代码所在的文件夹。(7)号区域当程序下载完后,进度条会到达最右边,并且提示一切正常。(4、5、6)号区域一定要按照上图显示的设置。当都设置好以后就可以直接点击(3)号区域的开始编程按钮下传程序了。


本节实验的源代码在光盘中:(LY-STM32 光盘资料\1.课程\5, 模块篇\模块篇-10.蓝牙串口模块(HC-05)实验\程序)
5.10.9 实验效果图把HC-05蓝牙串口模块和大黄蜂开发板连接好,送电后下载程序,如“图5.10.9 蓝牙串口模块实验效果图”程序下载完成后,通过众想科技多功能监控软件可以监听到蓝牙模块发送出来的数据。
5.10.10小常识(非常重要)
TXD:发送端,一般表示为自己的发送端,正常通信必须接另一个设备的RXD。
RXD:接收端,一般表示为自己的接收端,正常通信必须接另一个设备的TXD。
VCC:接电源正极GND:接电源负极RXD:接收端,蓝牙模块接收从其它设备发来的数据;正常情况接其它设备的发送端TXD;TXD:发送端,蓝牙模块发送数据给其它设备;正常情况接其它设备的接收端RXD;EN:使能端,需要进入AT模式时接3.3V;
自收自发:正常通信时RXD接其他设备的TXD,因此如果要接收自己发送的数据顾名思义,也就是自己接收自己发送的数据,即自身的TXD直接连接到RXD,用来测试本身的发送和接收是否正常,是最快最简单的测试方法,当出现问题时首先做该测试确定是否产品故障。也称回环测试。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩1
回复

使用道具 举报

沙发
ID:95059 发表于 2022-5-30 19:28 | 只看该作者
为什么屏弊掉了?版主大人
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表