STM32F1 + 蓝牙HC08 与 手机APP通信_什么芯片可以与蓝牙通讯

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

5.4.2    查询当前参数    AT+RX

  • 发送:AT+RX     作用:查询模块当前参数         返回:当前参数

5.4.3    恢复出石设置    AT+DEFAULT

  • 发送:AT+DEFAULT      作用:恢复出厂设置        返回:OK

5.4.4  设置主、从模式    AT+ROLE

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

5.4.5   设置蓝牙名称    AT+NAME

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

5.4.6   设置波特率    AT+BAUD

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

5.4.7  清除记忆地址    AT+CLEAR

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


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

6.1 连接USB转TTL模块

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

蓝牙 HC-08 模块USB转TTL模块
RXDTXD
TXDRXD
GNDGND
VCC3.3V 或 5V
6.2  串口软件 参数设置

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

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

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

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或小程序

安卓手机:建议使用此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上方的“自定义按钮”
  • 按提示,点击“设置方向按钮”,即可编辑各按钮的名称、发送值。

至此,可以通过串口软件,与手机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 开发板
RXDTX-PB10
TXDRX-PB11
GNDGND
VCC3.3V


九、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  发送

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

SIx1I9TO-1715599509840)]

[外链图片转存中…(img-PPD310pJ-1715599509841)]

[外链图片转存中…(img-HFVLbMtg-1715599509841)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HC-05是一款常用的串口蓝牙模块,可以与STM32微控制器实现无线通信。下面简单介绍一下如何通过HC-05与手机APP进行通信。 首先,我们需要在手机上下载并安装一个支持蓝牙通信APP。常用的APP有Bluetooth Terminal、Serial Bluetooth等。这些APP具有数据接收和发送的功能。 接下来,我们需要在STM32中配置USART串口通信,并将其连接到HC-05模块的TX和RX引脚。为了与手机APP通信,我们需要设置串口的波特率和数据位、停止位、校验位等参数,以确保通信的准确性。 在STM32的程序中,我们可以使用UART库函数来实现与HC-05的通信。通过在主循环中不断地读取和发送数据,可以实现与蓝牙模块的通信。当STM32接收到数据时,可以根据需要进行相应的处理,并通过串口将响应数据发送回蓝牙模块。这样,手机APP就可以接收到STM32发送的数据,并做出相应的操作。 在手机APP中,我们需要先进行蓝牙设备的配对和连接。一旦与HC-05模块连接成功,我们可以通过APP的界面发送数据给STM32,也可以接收STM32发送的数据。这样,就实现了手机APPSTM32之间的无线通信。 综上所述,通过HC-05串口蓝牙模块和手机APP,我们可以实现STM32手机之间的通信。这样的无线通信方案在物联网应用中具有广泛的应用前景,可以实现远程控制、数据采集、传感器监测等功能。同时,这种通信方式也大大简化了设备之间的连接,提高了系统的灵活性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值