惊!STM32 蓝牙串口模块(H21/JDY-31) 竟如此简单!
文章日志
1.写于2022/08/19
文章目录
1.认识蓝牙串口模块
2.困扰我很久的实验竟如此简单
3.一些现象的思考
1.认识蓝牙串口模块
JDY-31 蓝牙基于蓝牙 3.0 SPP 设计,这样可以支持 Windows、 Linux、 android 数据透传,工作频段 2.4GHZ,调制方式 GFSK,最大发射功率 8db,最大发射距离30 米,支持用户通过AT 命令修改设备名、 波特率等指令,方便快捷使用灵活
作为一款从机模块,JDY-31的一大优点是在MCU上进行编程时无需设置AT指令,更简单操作(相比于HC-05),直接串口发送信息即可使用。通常使用时接入串口引脚即可,成功与蓝牙模块建立通信后会发送CONNECTED
知道串口是怎么玩的,蓝牙串口模块就基本上会玩了。说白了,只是个蓝牙转串口的设备。
实物图如下:(这个是4针的)
工作图示如下:
手机蓝牙连接配对后,手机端发送信息,蓝牙串口模块会接收到,然后TXD引脚将信息发送单片机RXD引脚
单片机TXD发送信息到蓝牙串口RXD,蓝牙串口模块收到后,发送给配对的手机端
蓝牙串口模块也就相当于手机端和单片机无线通信的媒介
我购买的这款蓝牙串口模块,可以直接与手机配对连接,那么手机和蓝牙模块的无线通信便建立起来。
蓝牙模块,TXD和RXD引脚,直接接入单片机串口的RXD和TXD。比如接入串口1,那么手机端发送的数据,可以在PC(注意,这里是PC串口调试助手)看到。
2.困扰我很久的实验竟如此简单
我把实验想复杂了,搞半天居然没搞出来。
实际上,程序根本不用写,直接用之前的串口调试实验例程就可以的,改都不用改。
蓝牙模块和单片机连上就行。
手机端下载个蓝牙串口助手(蓝牙调试之类的),连接配对后,发送数据,可以在PC串口助手看到。(当然,如果你连线到其他串口,PC上是看不到的。PC上串口调试助手就是单片机串口1)
实验验证:
我这里用的是普中的串口示例。14. USART串口通信实验.7z
普中pz6806L开发板的串口1发送端引脚是PA9,接收端引脚是PA10(注意蓝牙模块和单片机T要连R,R要连T,我这里连反了)
手机端连接
连接后,手机端显示:
PC端显示:
然后,我们在手机端发送 hello bluetooth
PC端显示:
PC串口调试助手发送信息,手机端也可以收到
加一点其他的东西:
使用AT指令修改蓝牙设置时,需要保证蓝牙没有处于通信状态
3.一些现象的思考
明明这么简单,我实在搞不懂当时为啥我搞了好久…
真奇怪,刚发现一个bug,pc端发送hello phone时,手机端偶现 只接收到 hello phon 少了一个e
确实丢包了
在实际项目使用中,尽量简短命令发送吧。我这里,这个bug可能跟硬件有关,也可能是因为使用串口1,既要和PC通信,又要和蓝牙通信,负载大。
实际项目使用中,估计是发送数据包,像 帧头 + 数据体 + 校验码 之类的,就可以避免在接收到错误数据时的错误执行。