STM32F1 + 蓝牙HC08 与 手机APP通信

这篇具有很好参考价值的文章主要介绍了STM32F1 + 蓝牙HC08 与 手机APP通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么芯片可以与蓝牙通讯,stm32,物联网


一、本篇所有所用环境、程序

1.1  开发软硬环境

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

1.2  代码下载链接

百度网盘:

https://pan.baidu.com/s/1UtYGUbFfMemFUGhN_LsNBg?pwd=6543

csdn资源:

https://download.csdn.net/download/qq_49053936/88515423


二、HC-08 重要参数

  • 启动时间:上电、重启后,需200ms启动时间;
  • 蓝牙协议: V4.0  BLE
  • 主从模式:主从一体;  可设置主、从;连接成功后不分主从;
  • 串口通信:默认9600-None,可设置1200~115200bps;
  • 空中速率:1Mbps
  • 最远距离:80米(空旷、极限);
  • 工作电流:9mA
  • 连接数量:只支持一对一 (两模块通信为一主一从、与手机通信时手机是主机模块是从机)
  • 手机通信:支持Android 4.3及以上,支持Iphone 4S及以上
  • 每帧间隔:最少间隔20ms, 详见下方章节4.4.6表格。
  • 每帧最大:未查到

三、模块引脚说明

什么芯片可以与蓝牙通讯,stm32,物联网

  • STA:状态输出引脚。未连接-低电平、连接成功-高电平,程序中可用作指示引脚。
  • RXD:串口接收引脚。接单片机的TX引脚(如果是5V MCU, 需串联一个220R电阻)
  • TXD:串口发送引脚。接单片机的RX引脚
  • GND:电源地。
  • VCC:电源输入3.3V (注意,原模块,不能直接接5V电源)
  • KEY:主机用于清除配对的从机地址记忆 (置高电平 200mS 以上)

正常通讯时,一般只接四线:VCC、GND、TXD、RXD。建议增加STA连接以判断状态。

什么芯片可以与蓝牙通讯,stm32,物联网


四、LED指示灯状态

模块上,集成了一颗蓝色LED,用于显示当前连接状态。

  • 慢闪:未连接
  • 长亮:已连接

五、AT指令

5.1 AT指令重点

  • 未连接时,是AT指令模式;连接后是串口透传模式,AT指令不起效,被当成普通数据。
  • AT指令,必须大写
  • AT指令,无需回车换行
  • AT指令对参数进行修改,会自动保存,掉电不丢失。上电后自动使用最后保存的参数。
  • AT指令,成功时返回 "OK"、指定查询信息, 不成功不返回任何作息。

5.2  AT指令注意点

  • 进入连接状态后,无论发送什么指令,都不再是指令 ,当普通数据发送给对方。
  • 没有退出连接指令。连接后,需要其中一方断电,才能断开连接。

5.3  AT指令集

什么芯片可以与蓝牙通讯,stm32,物联网

5.4  常用AT命令解释

  5.4.1    测试指令    AT    

  •    发送:AT      作用:测试连接         返回:OK

什么芯片可以与蓝牙通讯,stm32,物联网

  

  5.4.2    查询当前参数    AT+RX    

  • 发送:AT+RX     作用:查询模块当前参数         返回:当前参数
  • 什么芯片可以与蓝牙通讯,stm32,物联网

   

  5.4.3    恢复出石设置    AT+DEFAULT    

  • 发送:AT+DEFAULT      作用:恢复出厂设置        返回:OK
  • 什么芯片可以与蓝牙通讯,stm32,物联网

 

   5.4.4  设置主、从模式    AT+ROLE    

  • 发送:AT+ROLE=?      作用:查询当前模式        返回:Master 或 Slave (不会重启)
  • 发送:AT+ROLE=M     作用:设置为主模式        返回:Master(并重启)
  • 发送:AT+ROLE=S      作用:设置为从模式        返回:Slave(并重启)

什么芯片可以与蓝牙通讯,stm32,物联网

  

  5.4.5   设置蓝牙名称    AT+NAME    

  • 发送:AT+NAME=?           作用:查询当前名称            返回:OK+NAME=HC-08
  • 发送:AT+NAME=Hello     作用:设置自定义名称        返回:OKsetNAME:Hello

什么芯片可以与蓝牙通讯,stm32,物联网

  5.4.6   设置波特率    AT+BAUD    

  • 发送:AT+BAUD=?               作用:查询当前波特率         返回:OK9600
  • 发送:AT+BAUD=115200     作用:设置波特率                返回:OK115200,NONE

什么芯片可以与蓝牙通讯,stm32,物联网

什么芯片可以与蓝牙通讯,stm32,物联网

什么芯片可以与蓝牙通讯,stm32,物联网

  5.4.7  清除记忆地址    AT+CLEAR    

  • 发送:AT+CLEAR               作用:清除记忆地址         返回:OK
  • 本指令只有在主机模式下有效。主机只要连接过从机,就会记住最后一次连接的从机的地址。
  • 如果要连接其它从机,就必须把当前记忆的从机地址清除掉。
  • 有2种方法清除记忆:模块18 脚置高电平 200mS 以上、未连线状态发送 AT+CLEAR 指令

什么芯片可以与蓝牙通讯,stm32,物联网


六、使用USB转TTL模块连接、测试

6.1 连接USB转TTL模块

      使用最常用的串口通信接线方式即可。重点:双方的RX、TX反接。

什么芯片可以与蓝牙通讯,stm32,物联网

蓝牙 HC-08 模块 USB转TTL模块 
RXD TXD
TXD RXD
GND GND
VCC 3.3V 或 5V

6.2  串口软件 参数设置

打开任意一款串口软件,如XCOM, SSCOM等等。本笔记中,使用HC的串口助手。

( HC-T 串口助手,已包含在文末网盘的资料包中 。)

  1. 选择相应的串口号
  2. 选择波特率。出厂默认 9600,如果忘记了上次的设置,可点击右侧的“波特率查询”。
  3. 打开串口

什么芯片可以与蓝牙通讯,stm32,物联网

6.3  AT指令通信测试

6.3.1  在串口助手 下方,输入 AT指令:"AT+RX" ,作用是查询当前通信参数 。

       点击发送按钮,可返回上图中信息。

       如果没有返回信息,逐一检查下面步骤:

  • 查看接线
  • 查看串口号,查看波特率(可点击右方的”波特率查询“)
  • 查看模块的蓝色LED,是否处在闪烁状态(未连接另一蓝牙设备时才是AT模式)
  • 查看AT指令 ,保证大写,保证字符尾部没有空格和换行

6.3.2  分析返回的信息

  • 信息中的 Role:Slave, 表示目前状态是 从机模式
  • 只有从机模式,才能被手机蓝牙发现、连接
  • 如果显示 Role:Master,  需要手工再发送从机设置指令:AT+ROLE=S 

本步骤,先不急于测试其它指令用法,等下一步连接成功了,再综合测试。


七、HC08与手机连接

7.1  下载安卓APP或小程序

什么芯片可以与蓝牙通讯,stm32,物联网

安卓手机:建议使用此APP,经测试可用,功能丰富,且没广告, 

  • 注意,要用手机的网页浏览器扫描,才能下载和安装
  • 不要用微信的扫码打开,扫码结果是无效的
  • APP安装时会有风险警告,自行决定是否安装

苹果手机:建议使用右侧的小程序,用微信扫一扫,即可打开。

7.2  手机APP连接蓝牙模块

7.2.1  先在手机设置中,打开手机的蓝牙功能。

7.2.2  打开APP:HC蓝牙助手

7.2.3  打开APP后,会自动搜索附近可用的蓝牙设备,如果没有弹出搜索,下拉刷新一下。

7.2.4  点击HC-08,将自动连接,并自动跳转到通信收发页面。可以在这里测试收发通信。

7.2.5  编辑功能自定义功能按钮

  • 点击APP上方的“自定义按钮”
  • 按提示,点击“设置方向按钮”,即可编辑各按钮的名称、发送值。 

什么芯片可以与蓝牙通讯,stm32,物联网

至此,可以通过串口软件,与手机APP进行收发通信测试了。

可预先设定好各按钮的通信发送值,以方便下一步与STM32进行通信。


八、HC08与STM32开发板连接

按上面几个方法,先使用USB转TTL模块、串口软件、APP,测试好连接、通信链路。

8.1  STM32开发板所用引脚

HC-08,与STM32开发板的连接,本笔记使用串口3(TX-PB102, RX-PB11)。

当然,没有规定一定要使用串口3, 可自行修改为其它空闲的串口引脚

注意:STM32F103C8,只有串口123, 而RC及以上,才有串口12345.

本篇笔记代码,使用引脚连接,如下表:

蓝牙 HC-08 模块 STM32 开发板
RXD TX-PB10
TXD RX-PB11
GND GND
VCC 3.3V 

什么芯片可以与蓝牙通讯,stm32,物联网


九、STM32通信代码

先上主程序

// 主函数
int main(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                                // 中断分组,组2:抢占级0~3,子优先级0~3 ; 全局只设置一次,尽量放在显眼的地方
    USART1_Init(115200);                                                           // 串口1初始化; 用于与串口软件通信,方便代码调试; USART1(115200-N-8-1), 且工程已把printf重定向至USART1输出
    Led_Init();                                                                    // LED 初始化
    LED_BLUE_ON ;                                                                  // 点亮蓝灯
    Key_Init();                                                                    // 按键 初始化
    USART3_Init(9600);                                                             // 串口3初始化; 用于与HC08通信;
    USART3_SendString("AT");                                                       // 发送AT指令, 用于测试收发是否正常
    
    while (1)                                                                      // while函数死循环,不能让main函数运行结束,否则会产生硬件错误
    {                                                                             
        delay_ms(100);                                                             // 间隔延时
        
        // 监察串口1:电脑串口软件所发过来的数据,判断处理
        if (xUSART1.ReceivedNum)
        {
            USART3_SendString((char *)xUSART1.ReceivedData);                       // 把上位机发过来的数据,发送给HC08
            printf("\r\n发送数据>>>:%s\r", (char *)xUSART1.ReceivedData);           // 把所发送的数据,输出到串口上位机,方便观察
            xUSART1.ReceivedNum = 0;                                               // 清空串口1的接收标志
        }

        // 监察串口3:HC08接收到的数据,判断处理
        if (xUSART3.ReceivedNum)                                                   // 检查HC08所用的串口是否收到数据
        {
            printf("\r\nHC08收到%d字节<<<:\r", xUSART3.ReceivedNum);               // 把接收收到的数据,输出到串口上位机,方便观察
            printf("%s\r", xUSART3.ReceivedData);                                  // 把接收收到的数据,输出到串口上位机,方便观察
            // 判断数据以执行动作
            if (strstr((char *)xUSART3.ReceivedData, "LED_ON"))     LED_RED_ON;    // 判断APP发过来的数据包,是否包含字符串:LED_RED_ON
            if (strstr((char *)xUSART3.ReceivedData, "LED_OFF"))    LED_RED_OFF;   // 判断APP发过来的数据包,是否包含字符串:LED_RED_OFF
            if (strstr((char *)xUSART3.ReceivedData, "RELAY_ON"))   LED_BLUE_ON;   // 判断APP发过来的数据包,是否包含字符串:LED_BLUE_ON
            if (strstr((char *)xUSART3.ReceivedData, "RELAY_OFF"))  LED_BLUE_OFF;  // 判断APP发过来的数据包,是否包含字符串:LED_BLUE_OFF

            xUSART3.ReceivedNum = 0;                                               // 清空串口1的接收标志
        }
    }
}

9.1  初始化代码

上面代码中,初始化了两个串口:

USART1_Init(115200);    // 与串口助手通信
USART3_Init(9600);     // 串口3初始化; 用于与HC08通信;

具体的初始化代码、收发机制代码,使用了魔女开发板家的串口代码,通用所有STM32F103芯片.

已附网盘中。

9.2  发送

直接发送字符串指令即可,大写,无需像8266那样加换行。

USART3_SendString("AT");  

9.3  接收、处理数据

  • bsp_USART.c中,已封装好接收中断,外部只管判断接收字节数量>0, 即为接收到新数据
  • 处理完一帧数据后,只要把接收字节数量,赋0,即可
        if (xUSART3.ReceivedNum)                                                   // 检查HC08所用的串口是否收到数据
        {
            printf("\r\nHC08收到%d字节<<<:\r", xUSART3.ReceivedNum);               // 把接收收到的数据,输出到串口上位机,方便观察
            printf("%s\r", xUSART3.ReceivedData);                                  // 把接收收到的数据,输出到串口上位机,方便观察
            // 判断数据以执行动作
            if (strstr((char *)xUSART3.ReceivedData, "LED_ON"))     LED_RED_ON;    // 判断APP发过来的数据包,是否包含字符串:LED_RED_ON
            if (strstr((char *)xUSART3.ReceivedData, "LED_OFF"))    LED_RED_OFF;   // 判断APP发过来的数据包,是否包含字符串:LED_RED_OFF
            if (strstr((char *)xUSART3.ReceivedData, "RELAY_ON"))   LED_BLUE_ON;   // 判断APP发过来的数据包,是否包含字符串:LED_BLUE_ON
            if (strstr((char *)xUSART3.ReceivedData, "RELAY_OFF"))  LED_BLUE_OFF;  // 判断APP发过来的数据包,是否包含字符串:LED_BLUE_OFF

            xUSART3.ReceivedNum = 0;                                               // 清空串口1的接收标志
        }

至此,点击APP上设置好的按钮,即可自动发送数据,开发板收到数据后,判断进行处理。文章来源地址https://www.toymoban.com/news/detail-763084.html

到了这里,关于STM32F1 + 蓝牙HC08 与 手机APP通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • HC08蓝牙模块实现手机通信以及互相通信(附源码及解析)

    前言 本篇博客详细的介绍如何实现HC08主从机设置,命名,以及如何实现两个STM32通过HC08互相通信,并附带完整的操作步骤,以及源代码。 目录 一、HC08主从配置 1.1VOFA+的下载及基本用法 1.1.1VOFA+的下载         1.1.2VOFA+的基本用法    1.2配置HC08主从机及其他 二、两个STM32通

    2024年03月10日
    浏览(37)
  • 基于stm32F1的蓝牙控制小车 全硬件代码开源

       “基于stm32F1的蓝牙控制小车”由L898N电机驱动模块、电源管理模块、stm32f1主控模块、蓝牙串口通信模块。电机驱动模块使用了两个L298N芯片来驱动4路电机,使能端连接4路来自主控板的电平信号;电源管理模块使用了LM2940-5.0芯片进行12V到5V的转换,12V用于电机模块的供电,

    2023年04月20日
    浏览(22)
  • Qt实现安卓手机蓝牙通信并控制stm32f103c8t6驱动VFD屏

    Qt具有跨平台的特性所以非常适合写通信的demo,但是在这个例程中Qt蓝牙部分不支持Windows平台,安卓平台使用没问题。 Qt蓝牙主要涉及到三个类的使用: QBluetoothDeviceDiscoveryAgent //扫描周围蓝牙设备 QBluetoothLocalDevice //扫描本地蓝牙 QBluetoothSocket //建立蓝牙的socket读写 安卓不支

    2024年02月08日
    浏览(24)
  • STM32F407+蓝牙HC-05+手机蓝牙助手

    突然想试试怎么玩蓝牙模块,本文演示工程较为简单,最后结果为通过手机蓝牙助手控制单片机上小灯的亮灭。 用到的软件:STM32CubeMX、Keil、串口调试助手XCOM 、蓝牙调试宝(手机蓝牙调试助手) 用到的硬件:32单片机、HC-05蓝牙模块、USB转TTL模块 本文在了解如何使用STM32C

    2024年02月02日
    浏览(17)
  • HC-08蓝牙模块与电脑进行蓝牙远程通信! 支持HC-02、HC-08、HC-42蓝牙

    1、PC需自带蓝牙,或使用外设的蓝牙适配器,且PC为WIN10系统。 2、适用于HC-02蓝牙20+4.0BLE模块、HC-08蓝牙4.0BLE模块、HC-42蓝牙5.0BLE模块 3、模块必须为从机,支持模块自身的波特率。 1、利用USB转TTL将HC-08蓝牙模块连接电脑,并打开串口助手。 2、在Microsoft Store(windows商店)搜索

    2024年02月09日
    浏览(18)
  • 学习 stm32 无线蓝牙模块HC05配置与应用(手机蓝牙连接发送参数)

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

    2024年01月16日
    浏览(19)
  • HC05蓝牙模块AT指令与手机蓝牙控制STM32板载LED

    本文讲述了HC-05蓝牙模块的配置和其与STM32F103单片机的连接。 代码使用 HAL库函数 编写。 常见的HC-05模块: 通过使用AT指令,我们对蓝牙模块可以进行查看版本号、波特率、配对密码、设置/查询设备名称等多达30多种配置方式。 硬件连接:使用USB转TTL模块连接电脑和蓝牙模块

    2024年02月11日
    浏览(24)
  • 【STM32F1】以太网通信之UDP/TCP实验

    在本实验中,开发板主控芯片通过 SPI 接口与 CH395Q 以太网芯片进行通讯,从而完成对 CH395Q 以太网芯片的功能配置、数据接收等功能,同时将 CH395Q 以太网芯片的 Socket0 配 置为 UDP 模式,并可通过按键发送 UDP 广播数据至其他的 UDP 客户端,也能够接收其他 UDP 客户端广播的数

    2024年02月07日
    浏览(29)
  • HC-05(ZS-040)蓝牙模块使用详情(蓝牙模块配置、手机蓝牙控制单片机、蓝牙与蓝牙之间的通信)含51、32程序

    HC-05是一款主从一体化的蓝牙模块,因此其使用起来比较方便,只需要进行简单的配置即可。 本文就 手把手的介绍小白入手模块后如何使用 。 对于模块使用:1、蓝牙配置→2、手机与蓝牙的传输→3、手机通过蓝牙模块控制单片机→4、一对蓝牙之间主—从传输数据,这是一个

    2023年04月09日
    浏览(35)
  • 串口通信——蓝牙模块使用(HC-08为例)

    (7条消息) 51单片机——串口通信详解(STC89C51为例)_佛科院深夜学习的博客-CSDN博客 https://blog.csdn.net/weixin_63568691/article/details/128274778 AT指令指在不连接蓝牙的条件下,通过串口发送,使蓝牙模块功能发生改变的指令 跟开发板与电脑进行串口通信相同的,需要一个USB转TTL模块,

    2024年02月02日
    浏览(20)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包