注:以下某些资料来自于该模块淘宝店里有介绍,规格书没找到啊。

  • 模块介绍
  • PC端配置模块,手机端连接模块
  • STM32串口配置模块
  • 串口通信
  • 小结

一、模块介绍

1、供电电压3.3V~3.6V;
2、支持AT指令集配置模块;
3、采用CSR主流蓝牙芯片,蓝牙V2.0协议标准;
4、波特率最高为1382400bps;
5、配对以后当全双工串口使用,无需了解任何蓝牙协议,但仅支持8位数据位、1位停止位、无奇偶校验的通信格式,这也是最常用的通信格式,不支持其他格式。
6、接口电平3.3V,可以直接连接各种单片机(51,AVR,PIC,ARM,MSP430等),5V单片机最好串联一个1K电阻再与模块直接连接,无需MAX232也不能经过MAX232!

二、PC端配置模块,手机端连接模块

如果要配置模块的参数,那么就必须要进入AT命令模式,我们首先通过PC机来配置一个模块。

1、进入AT模式设置

1.1、通过一条USB转串口线与模块相连,注意是要交叉连接。
1.2、在PC端上使用串口调试助手设置正确的波特率、校验位、停止位。AT模式下波特率固定为38400bps。这个波特率是不能更改的。
1.3、进入AT模式有如下两种方法:

1:在模块上电之前(也可以同时),把KEY脚设置为高电平(或接VCC),然后再对模块上电。此时LED慢闪(2S一次),模块进入AT状态,波特率固定为38400.
2:在模块上电的时候,把KEY脚设置为低电平(或接GND),此时LED快闪(1S两次),然后再把KEY脚设置为高电平(或接VCC),模块也会进入AT指令,但是LED依旧快闪,此时波特率为默认波特率9600.

按照上述的方法,进入AT模式后,此时led由原先的快闪变成2s闪一次,在串口调试助手中输入”AT”,如果响应”OK”,说明进入AT命令模式成功,此后就可以测试其他的命令了。注意,AT指令集最后面都要跟着发送 \r\n也就是回车换行符,这样模块才认这个指令

2、模块的配置为从机

从机只能用来被搜索,不能主动搜索其他设备。
因为前期是要熟悉模块的配置以及使用,所以先配置为从机供其他设备(PC机、手机)搜索连接。在PC机上的串口调试助手中依次输入如下AT指令进行配置。
-> 首先回复初始化设置 AT+ORGL

-> 设置从机名字 AT+NAME=SLAVE

-> 设置波特率 AT+UART=115200,1,2

-> 设置为从机角色 AT+ROLE=0

-> 重启设备 AT+RESET

当重启设备成功后,此时模块会自动进入正常工作模式(还未被连接或连接上)led快闪

3、通过手机蓝牙连接模块

按照上面的步骤配置完成后,无论是通过手机或者是PC机都可以进行配对连接。手机的话可以安装”蓝牙串口助手”与模块进行配对连接,这样两者之间就可以与模块进行通信了。当两者连接成功后,模块进入透传模式,此时led等2闪1停。

三、STM32串口配置模块

若未进行初始化操作,该模块只需配置一次即可使用。在使用的时候,我们可以通过PC来配置模块,当然也可以通过软件来配置模块。两者实际上是一样的,都是通过串口往模块写入AT指令。在PC端我们通过串口调试助手写入一个AT指令,模块就会响应相应的内容显示在串口调试助手上,我们也就能判断刚刚写入的指令是否OK。但是,通过stm32的串口配置模块有一点需要注意的,那就是要准确的识别模块的响应操作的内容。

1、写入指令

// 往串口中写入指定大小的数据
int16_t WriteATCmd(USART_TypeDef* USARTx, char *cmd, uint16_t size)
{uint16_t i = 0;if(cmd != NULL){for(i=0; i<size; i++){USART_TrasmitData(USARTx, cmd[i]);}// 注意最后要写入 \r\nUSART_TrasmitData(USARTx, 0x0d);USART_TrasmitData(USARTx, 0x0a);return 0;}else{printf("cmd is NULL\n");return -1;}
}
// 设置模块名称
int16_t HC_05_ATName(char *name)
{uint16_t cmd_size = 0;uint16_t name_size = 0;int16_t ret = 0;int16_t res_size = 0;// 存放模块响应字符串的数组,这个数 组的长度可以根据AT指令集文档中响应的字符串长度做调整char respon[10] = {0};        char AT_NAME_CMD[20] = "AT+NAME=";name_size = strlen(name);cmd_size = strlen(AT_NAME_CMD);// 当name的长度过大,只取20-cmd_size个字符if((name_size+cmd_size) > 20)strncat(AT_NAME_CMD, name, 20-cmd_size);elsestrcat(AT_NAME_CMD, name);cmd_size = strlen(AT_NAME_CMD);// 通过STM32的USART1往串口写入数据AT_NAME_CMD,共写入cmd_size大小ret = WriteATCmd(USART1, AT_NAME_CMD, cmd_size);if(ret == 0){printf("Write AT_NAME_CMD OK\n");}else{printf("Write AT_NAME_CMD ERROR\n");}res_size = ReadResponse(USART2, respon);ret = isResponseOK(res_size, respon);return ret;
}

2、读取模块的响应数据

当写入AT指令正确后,模块就会响应一个相应的字符串给我们,从HC-05 AT指令集的文档中我们看到,无论写入哪种AT指令,如果正确,最终都会反馈一个”OK”的字符串,我们可以通过这个字符串来判断写入的指令是否响应正确。

int16_t ReadResponse(USART_TypeDef* USARTx, char *Str)
{uint16_t data = 0;uint16_t Status = 0;    uint16_t pos = 0;int16_t size = 0;while(1){// 每次从串口读取一个字符前都要启动定时器TIM2_Config_Init(1000);TIM_Cmd(TIM2, ENABLE);while(USART_GetFlagStatus(USARTx, USART_FLAG_RXNE) == RESET){// 表示已读取到末尾if(Status == 1){size = strlen(Str);TIM_Cmd(TIM2, DISABLE);break;}// 表示已经超时,此时不再等待从串口中读取数据if(TimeoutFlag == 1){break;}}if(TimeoutFlag != 1)   // 未超时{if(Status != 1)           // 读取未结束{data = USART_ReceiveData(USARTx);  // 从串口中读取数据// 只有存放非 \r和 \n的字符if((data != '\r') && (data != '\n'))    {Str[pos++] = data;if(pos > 1){// 判断倒数第四和第三个字符是否是"OK",若是则表明已读取到末尾(注:倒数第一和第二个字符是\r\n,已被过滤掉)if((Str[pos-2] == 'O') && (Str[pos-1] == 'K'))      {Str[pos] = '\0';                // 为了便于计算,在获取的字符串中加入字符结束标志Status = 1;}}}}else{break;}}else{TimeoutFlag = 0;size = -1;printf("Read AT_Cmd response timeout\n");break;}       }return size;
}

在读取模块的响应数据中加入了超时机制,当一定的时间到达后如果没有接收到串口的数据,我们就认为AT模块不响应我们的操作,此时认为写AT指令错误。若响应数据中包含”OK”字符串,我们就认为AT指令成功。

四、串口通信

当主从模块都配置成功后,接下来的事情就简单了。你就把操作模块之间的数据发送接收当做串口直接的读写数据。

五、小结

HC-05这个模块用起来非常的便捷,不要求熟悉蓝牙协议什么的。只要你懂得用串口就知道这个模块怎么用。

基于STM32的无线通信模块使用——HC_05蓝牙串口相关推荐

  1. 基于STM32的无线通信模块使用——A7130

    基于STM32的无线通信模块使用-A7130 2.4G Hz的无线通信芯片A7130.本文简单介绍A7130的使用. 注:相关资源在这里 A7130简介 A7130 SPI接口 A7130寄存器配置及 ...

  2. 基于数字电路交通灯信号灯控制系统设计-基于单片机病房温度监测与呼叫系统设计-基于STM32的无线蓝牙心电监护仪系统设计-基于STM32的智能蓝牙温控风扇控制设计-基于STM32的智能温室控制系统设计

    1617基于数字电路交通灯信号灯控制系统设计(仿真电路,论文报告)  摘  要:交通灯控制系统在城市交通控制中发挥着重要的作用,本次课程设计就是以城市交通灯控制系统为背景的,主要通过运用学过的数字电路 ...

  3. 基于STM32的智能温室控制系统仿真电路设计(温控补光)-基于STM32的智能蓝牙温控风扇控制系统设计-基于STM32的无线蓝牙心电监护仪系统设计【毕设课设分享】

    1609 基于STM32的智能蓝牙温控风扇控制系统设计-毕设课设 1.LCD1602液晶显示当前温度,温度上下限值,风扇等级,自动手动模式: 2.设置有4个按键,按键1可以设置自动和手动2种模式切换: ...

  4. 基于STM32的无线飞鼠(二)

    基于STM32的无线飞鼠(二) 在前一篇博客中讲了下一些题外话,从本篇开始讲讲重点的知识,说说无线飞鼠过程用到的模块 细说MPU6050 一. MPU6050简介 二. 细节问题 三. 相关技术 四. ...

  5. K_A11_008 基于STM32等单片机驱动SHT30和SHT31 串口与OLED0.96双显示

    K_A11_008 基于STM32等单片机驱动SHT30和SHT31 串口与OLED0.96双显示 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 时序 对应程序: 四.部分代码说明 1.接 ...

  6. K_A18_001 基于STM32等单片机采集MQ2传感参数串口与OLED0.96双显示

    K_A18_001 基于STM32等单片机采集MQ2传感参数串口与OLED0.96双显示 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 IIC地址/采集通道选择/时序 对应程序: 四.部分 ...

  7. K_A12_002 基于STM32等单片机采集光敏电阻传感器参数串口与OLED0.96双显示

    K_A12_002 基于STM32等单片机采集光敏电阻传感器参数串口与OLED0.96双显示 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 IIC地址/采集通道选择/时序 对应程序: 四. ...

  8. K_A16_003 基于STM32等单片机采集薄膜压力传感器参数串口与OLED0.96双显示

    K_A16_003 基于STM32等单片机采集薄膜压力传感器参数串口与OLED0.96双显示 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 对应程序: 四.部分代码说明 1.接线引脚定义 ...

  9. 无线通信模块——WiFi,蓝牙,2.4G

    一.无线通信模块 1: ESP8266 介绍:ESP8266无线模块拥有TTL通信接口,用一个USB转TTL模块连接无线模块即可通信.关于ESP8266的手册都很好搞,安信可官网就有,没有的可以留言我 ...

最新文章

  1. relink 11gR2 数据库
  2. 设置NotePad++设置不打开上次关闭的文件
  3. ROS学习之roslaunch的node标签
  4. python six库_six库 解决python2的项目如何能够完全迁移到python3
  5. “【第二届】Erlang Fans交流会”议程
  6. Java 8 新特性之Stream API
  7. 进程间通信-Queue(python版)
  8. .net实现调用本地exe等应用程序的办法总结
  9. python django项目管理系统_python3+django2开发一个简单的人员管理系统
  10. LINUX用终端命令调用打印机属性
  11. 电子电器外贸行业管理解决方案丨汇信
  12. Nim理论初探——编程之美1.12
  13. 子网掩码计算题与解析
  14. PS制作马赛克效果、炫酷光线
  15. MySQL自学笔记(二)
  16. centos 安装Htseq_APPNode管理面板安装使用教材
  17. Hadoop工程师面试题解析
  18. 【大数据面试题】(八)Spark 相关面试题
  19. C++(面试题):给40亿个不重复的无符号整数,没排过序,如何快速判断一个数是否在这40亿个数中
  20. 精选100个Python实战项目案例,送给缺乏实战经验的你

热门文章

  1. 输入一个字符串,将字符串中的大写字母改成小写字母,小写字母不变,其他字符忽略,然后输出转换之后的结果。
  2. Cannot open precompiled header file: 'Debug/****.pch': No such file or directory
  3. 基于双TMS320C6678 DSP的3U VPX的信号处理平台18 3U VPX信号处理 C6678板卡 C6678开发板 C6678处理板 C6678信号处理板
  4. Spring Cloud 2022.0.0正式发布:OpenFeign稳得很全面迈向GraalVM
  5. linux下opencv4查看版本
  6. 想要远程办公,这些一定要知道
  7. 二、Java框架之Spring注解开发
  8. Android Studio如何建立VR视频
  9. 带你了解大数据时代的基本特征
  10. Windows 下令 OpenCV 支持 h.264 视频编码的方法