一、蓝牙简介6 |( v' U, e% @1 W4 ~ 蓝牙(Bluetooth)是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4~2.485GHz的ISM波段的UHF无线电波)。蓝牙技术最初由电信巨头爱立信公司于1994年创制,当时是作为RS232数据线的替代方案。蓝牙可连接多个设备,克服了数据同步的难题。我们这里介绍的是在嵌入式开发中常用的蓝牙模块——HC-05。 j5 ?) g' q. [5 O2 n( T" m- [/ e Z$ a' M, \' Q) Y1 u9 O- K HC-05 二、使用方法 2.1 接线 HC-05供电电压为3.6V~6V。通常使用5V供电。其余的RXD接TXD,TXD接RXD,CND接GND即可。 ! M# h7 M, w4 ^7 i 2.2 AT指令 HC-05也可以使用AT指令进行配置。在配置之前,首先需要让模块进入配置模式。博主买的HC-05有一个小按钮。按住小按钮再给蓝牙模块上电,蓝牙模块进入配置模式,此时模块上自带的LED会慢速闪烁。进入配置模式后,就可以用AT指令来配置我们的HC-05了。配置时,用USB转TTL连接HC-05,用串口调试助手发送AT指令进行配置。需要注意的是,HC-05配置模式的波特率固定为38400,如果你给HC-05发送指令,没有收到回复,记得检查一下串口调试助手的波特率是否正确。下面列举一些配置时常用的AT指令4 Y. h @ k8 K' j ( m+ q& ^, R2 |( D8 `5 t. Y • AT 检查HC-05模块连接是否正常,HC-05收到后会回复“OK”+ o, n7 b' q1 d! K • AT+NAME=名字 配置HC-05的名字,配置成功后会返回“OK” • AT+NAME? 询问HC-05的名字。发送后会收到“+NAME:"名字"”,换行加“OK”, {! N; h2 A! q; j( `* y! z E9 q • AT+PSWD=密码 配置HC-05密码,配对时需要用到。配置成功后,会收到“OK”( z0 |- _% C- ~9 U9 H • 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”/ c7 t$ ~# [1 B: K 配置完成功后,断电重新上电,HC-05按照配置好的名字,配对密码和波特率开始工作。此时LED快闪。5 n* ^% _1 P4 g2 d% F) x5 Z9 S ' X$ r3 d6 O Z+ g / i2 `/ y" Q* x( v# n 三、蓝牙APP9 h3 B3 ]. e# ^: } 这里介绍一个超级好用的蓝牙APP——蓝牙调试器。大概长这个样子,大家可以在应用商店下载 蓝牙调试器 3 t; q: `! T4 z; d* {这个蓝牙调试器是一个大佬编写的,我这里只是介绍一下使用方法。其他的详细内容,可以到大佬的原文查看提高开发效率-蓝牙调试器。 ; b2 O! E+ d" m" Z/ ?3 k" y 为什么推荐这个蓝牙调试器?个人觉得,它能够在众多蓝牙调试器中脱颖而出,是因为它支持用户自己设计GUI,提供了许多控件,比如常见的按钮,文本框,可编辑文本框,以及一些滑动条,遥杆和曲线图等。支持自由设置位置,大小,功能十分强大。更重要的是,大佬提供了程序文件,对于想快速上手蓝牙模块,用手机与蓝牙交互的小伙伴来说,十分友好。& j3 W0 ?, o8 F: B6 B0 } 四、实战项目 下面我们以手机控制两个LED亮灭,同时通过BH1750检测周围环境光照强度变化,返回到手机端显示,并且能够显示光强变化曲线。' L4 [5 g% F& n6 u$ Q# @7 b 1 [" r6 {7 k3 f 4.1 添加文件 第一步,先将大佬的文件添加到工程中。大佬的工程中的初始化函数已经包含了串口的初始化,所以我们不需要再包含串口文件。0 ^+ \* s, P+ S0 y, [ ) G1 |" I" i' M! Z 添加蓝牙文件 % S! n5 ~6 Q' ]. T除此之外还要讲BH1750相关文件添加进来,具体可见博主STM32外设系列BH1750篇,这里就不再做介绍。" W! w7 a7 h% B6 v; S 9 h. q' s' @) Y7 s. f- w 4.2 配置需要传递的参数5 m& V: x$ N* x( A/ q) s L 根据项目要求,我们需要配置三个参数,分别用来控制两个LED亮灭,传输周围环境光照强度。首先在程序中定义好这三个变量。
定义好这些变量之后,我们需要配置一下文件中的接收和发送数据。打开大佬的.h文件,可以看到里面定义了许多类型的发送和接收变量。这里的发送接收是针对单片机来说的,而不是手机。8 v( @8 o& p! ^2 }! h4 o
我们需要单片机发送一个周围环境的光照强度,数据类型为浮点型。需要接收两个LED亮灭控制变量,数据类型为int型。我们在对应的位置配置好对应的变量数量,如下5 i. Y% k$ x7 O1 p, B; q
4.3 获取返回值% C' U9 A0 o3 q1 E t; a( b7 H) h8 H& Q) r 在使用手机APP控制LED亮灭时,单片机需要接收到手机发送来的数值。接收程序如下
具体哪个值对应哪个参数,这些需要在手机端配置,放在下面介绍。 4.4 发送光照强度" G W \ d, u% d, o( M: ]9 k 单片机需要不断地向APP端发送周围环境光照强度数据,程序如下8 ]7 r" V- d: r# [% @4 G
需要注意的是,蓝牙发送数据时如果需要一次发送多个数据,一定要在两次发送之间加10ms延时,否则会造成发送失败。) B+ E1 g! O n+ s " G! L' b" g5 k# m6 n , C* ]7 i; ]9 w' [& t* d8 G 4.5 控制程序2 J; J" Y" G# S" C( ^+ J. ~: x 包含两部分内容,一部分是通过BH1750获取周围环境光照强度,另一部分是LED亮灭控制函数。程序如下: ]( U# s& F# ^) n% v
4.6 手机端页面设计 根据项目要求,需要有两个LED开关,一个显示周围环境光照强度的文本框,还有一个波形显示框。6 {0 t$ `3 m" k. q( t# J 4.6.1 新建调试工程$ H4 P$ l4 G* c& G/ K 打开蓝牙调试助手,选择中间的“专业调试”,然后点击加号新建调试工程。 8 b! W ^" b8 H/ {6 } 新建调试工程 , p3 M6 L$ q3 s. z; o+ V5 D$ p 4.6.2 设置通信变量0 T( w; w' w( B T& m) k 我们新建完调试工程后,需要先进行通信设置。实际就是将我们手机APP与单片机通信时需要的变量配置好。 首先选中新建的调试工程,选择“通信设置”" n+ j9 W0 |' h2 M Z; q7 H! {; i, l # Y [% G! ?1 I3 y 通信设置 $ }& c6 p% w, e" S6 m9 N- |/ A H. z5 B0 [: z' [. x 进入之后可以看到如下页面 通信设置页面 F `; m. X( |4 s) |; d+ ~* h" P" Z- J0 |6 e2 [ 这里的发送接收,只针对手机APPA而言的。 o; z3 X$ e) F1 p& z! ]1 B 我们需要新建一个接收变量和两个发送变量。接收变量为float型,发送变量为int型。这里的顺序对应我们单片机接收时,变量在接收数组中的位置。7 E, j( E# F5 S' E8 _4 H2 q$ O3 } / d! w7 H3 P/ J ^ & B F' D4 I2 `2 _9 z; M; _ 发送变量 接收变量 设置完收发变量后还需要设置一下通信模式。点击最右边的通信模式。选择“仅操作控件时发送”即可。如下图. a# M- K# c% B* e2 I / B: h b, y" Z {( a7 O, J, f6 a 通信模式设置 ; g9 ~9 z y p( J$ q) o* }, }, ?* o 至此,通信设置完成。( F9 U) ^7 W7 }7 I1 @/ d: K" @6 o 4.6.3 编辑控件 选中新建的调试工程,选择“编辑控件”,即可进入编辑页面。 编辑控件 # G: E1 A% ~* E- L" y0 h- a. }# t1 r5 [6 J4 `" l3 o 4.6.4 添加LED控制开关 进入编辑控件页面后,点击加号,添加一个开关。添加时会弹出页面让我们设置开关的信息 + @/ d6 {( l9 x! X 添加开关 1 m% _3 p K% l" l, i1 x. j4 X 第一栏是选择该变量是接收变量还是发送变量,第二栏是选择变量类型。最后一栏是选择关联的变量。关联的变量就是我们在通信设置中添加的变量。4 ^# Q: V4 Y6 {# n" h 选择完成后需要设置开关参数,设置打开和关闭时对应的值 . ^& x+ X- m4 @2 e" I( ^ 设置参数 4.6.5 添加光照强度显示控件$ G9 ^( { M9 ?# n* v 光照强度显示控件我们选择文本,操作与添加LED开关类似,注意链接好我们添加的光照强度变量即可,这里就不再做详细介绍了。! e1 _, C" {7 x+ B9 ^0 W3 b $ `5 @8 z; z' n3 @/ o, N2 L9 M 项目要求能够显示周围环境光照强度变化曲线。这里我们用Y-T一维曲线图来显示。添加之后链接我们添加的光照强度变量,设置好范围即可,这里不再展示。 7 y! r6 b) |) @7 T& r$ i) K# l 五、成果展示 首先用蓝牙调试器搜索我们的HC-05进行配对。配对完成后,在专业调试中找到我们新建的调试工程。点击右侧的开始按钮,选择我们的蓝牙,就可以开始操作啦。1 R! q" x' R! C6 s2 C 成果展示 8 t$ @) N. T; `, L- P- \ 点击开关可以控制LED的亮灭。文本框显示当前周围环境光照强度。最下面显示当前周围环境光照强度变化曲线。博主最近手边没有烙铁,买来的BH1750没有焊接排针,所以没有连接。因此,显示的光照强度值为0。 $ T: z3 H1 b E0 R# E 转载自:二土电子7 W0 n* y; T* V' q8 z 如有侵权请联系删除 " J! B# [. s4 o6 i , n0 ?4 f7 T0 m7 p- v) I) `4 y |
【NUCLEO-C0评测】硬件OLED显示
【STM32C0测评】外部中断控制小灯
【STM32C0评测】1、开箱,芯片介绍以及后续的评测计划
基于STM32调试小技巧之不复位调试
基于STM32的不复位调试的经验分享
基于STM32利用TIMER测量信号周期及占空比的精度经验分享
STM32应用笔记分类汇总 v1.2
获取编译时间作为版本号
【12月学习笔记】 STM32H7B3I-DK在STWin中显示汉字
意法半导体发布远距离无线微控制器,提高智能计量、智能建筑和工业监控的连接能效
学习学习
AT-Command 开发HC05确实方便呀