jjzjj

惊!STM32 蓝牙串口模块(H21/JDY-31) 竟如此简单!

千水鸽鸽 2023-07-25 原文

惊!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通信,又要和蓝牙通信,负载大。

实际项目使用中,估计是发送数据包,像 帧头 + 数据体 + 校验码 之类的,就可以避免在接收到错误数据时的错误执行。

有关惊!STM32 蓝牙串口模块(H21/JDY-31) 竟如此简单!的更多相关文章

  1. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  2. Python 刷Leetcode题库,顺带学英语单词(31) - 2

    ValidPalindromeGivenastring,determineifitisapalindrome,consideringonlyalphanumericcharactersandignoringcases. [#125]Example:"Aman,aplan,acanal:Panama"isapalindrome."raceacar"isnotapalindrome.Haveyouconsiderthatthestringmightbeempty?Thisisagoodquestiontoaskduringaninterview.Forthepurposeofthisproblem

  3. ruby - 如何更快地解决 project euler #21? - 2

    原始问题Letd(n)bedefinedasthesumofproperdivisorsofn(numberslessthannwhichdivideevenlyinton).Ifd(a)=bandd(b)=a,whereab,thenaandbareanamicablepairandeachofaandbarecalledamicablenumbers.Forexample,theproperdivisorsof220are1,2,4,5,10,11,20,22,44,55and110;therefored(220)=284.Theproperdivisorsof284are1,2,

  4. STM32的HAL和LL库区别和性能对比 - 2

    LL库和HAL库简介LL:Low-Layer,底层库HAL:HardwareAbstractionLayer,硬件抽象层库LL库和hal库对比,很精简,这实际上是一个精简的库。LL库的配置选择如下:在STM32CUBEMX中,点击菜单的“ProjectManager”–>“AdvancedSettings”,在下面的界面中选择“AdvancedSettings”,然后在每个模块后面选择使用的库总结:1、如果使用的MCU是小容量的,那么STM32CubeLL将是最佳选择;2、如果结合可移植性和优化,使用STM32CubeHAL并使用特定的优化实现替换一些调用,可保持最大的可移植性。另外HAL和L

  5. 酷早报:10月21日全球Web3加密行业重大资讯大汇总 - 2

    2022年10月21日星期五【数据指标】加密货币总市值:$0.95万亿BTC市值占比:38.51%恐慌贪婪指数:23极度恐慌 【今日快讯】1、【政讯】1.1.1、美联储布拉德:市场预期美联储11月会加息75个基点1.1.2、美联储哈克:将维持加息一段时间1.2、美国10年期国债收益率触及4.197%,为2008年6月以来最高1.3、法国数字转型部长:政府将专注于DeFi和Web31.4、巴西ATM机将于11月3日起支持USDT1.5、美众议院副议长将于11月初加入a16zCrypto担任政府事务主管1.6、香港数字资产托管机构FirstDigitalTrust首席执行官:香港仍是安全

  6. 1个串口用1根线实现多机半双工通信+开机控制电路 - 2

    功能需求:主机使用一个串口,与两个从机进行双向通信,主机向从机发送数据,从机能够返回数据,由于结构限制,主机与从机之间只有3根线(电源、地、数据线),并且从机上没有设物理的电源开关,需要通过与主机连接的数据线来控制开机,总结如下:1、数据线只有1根2、能够双向通信3、主机能够控制从机开机4、主机可以单独向1个从机发数据,也可以同时向两个从机发送数据根据需求,设计出如下电路:工作原理分析:VCC_24V_IN、GND、LINE_L(LINE_R)三根线接线连接到从机,电源开启电路是从机内部的电源控制。开机的逻辑:*主机先上电,LINE_L因为主机的R1上拉而有高电平,使Q6导通,Q5的G极电压被

  7. ESP32学习入门:WiFi连接网络 - 2

    目录一、ESP32简单介绍二、ESP32Wi-Fi模块介绍三、ESP32Wi-Fi编程模型四、ESP32Wi-Fi事件处理流程 五、ESP32Wi-Fi开发环境六、ESP32Wi-Fi具体代码七、ESP32Wi-Fi代码解读6.1主程序app_main7.2自定义代码wifi_init_sta()八、ESP32Wi-Fi连接验证8.1测试方法8.2服务器模拟工具sscom58.3测试代码8.4测试结果前言为了开发一款亚马逊物联网产品,开始入手ESP32模块。为了能够记录自己的学习过程,特记录如下操作过程。一、ESP32简单介绍ESP32是一套Wi-Fi(2.4GHz)和蓝牙(4.2)双模解决方

  8. Spring Security 6.0系列【32】授权服务器篇之默认过滤器 - 2

    有道无术,术尚可求,有术无道,止于术。本系列SpringBoot版本3.0.4本系列SpringSecurity版本6.0.2本系列SpringAuthorizationServer版本1.0.2源码地址:https://gitee.com/pearl-organization/study-spring-security-demo文章目录前言1.OAuth2AuthorizationServerMetadataEndpointFilter2.OAuth2AuthorizationEndpointFilter3.OidcProviderConfigurationEndpointFilter4.N

  9. ruby - 摘要::CRC32 与 Zlib - 2

    在我的代码中,我需要使用各种算法(包括CRC32)对文件进行哈希处理。因为我还在Digest系列中使用其他加密哈希函数,所以我认为为它们维护一个一致的接口(interface)会很好。为了记录,我确实找到了digest-crc,一颗完全符合我要求的gem。问题是,Zlib是标准库的一部分,并且有一个我想重用的CRC32工作实现。此外,它是用C编写的,因此它应该提供与digest-crc相关的卓越性能,后者是纯ruby​​实现。实现Digest::CRC32一开始看起来非常简单:%w(digestzlib).each{|f|requiref}classDigest::CRC32一切正常:

  10. ruby - 安装gem : Couldn't reserve space for cygwin's heap, Win32错误487错误 - 2

    我正在尝试在我的机器上安装win32-apigem,但在构建native扩展时我遇到了一些问题:$geminstallwin32-api--no-ri--rdocTemporarilyenhancingPATHtoincludeDevKit...Buildingnativeextensions.Thiscouldtakeawhile...C:\Programs\dev_kit\bin\make.exe:***Couldn'treservespaceforcygwin'sheap,Win32error0ERROR:Errorinstallingwin32-api:ERROR:Failed

随机推荐