基于STM32的HC-05蓝牙模块使用及常见问题(STM32-手机-Arduino使用HC-05进行蓝牙通讯)

本文详细介绍了如何使用STM32和Arduino与HC-05蓝牙模块建立连接,实现与手机的蓝牙通讯。首先,讲述了Arduino与HC-05的配置步骤,包括进入AT模式、设置蓝牙参数和与手机的通信实验。接着,重点讲解了STM32的双串口驱动编写,以及如何调试配置HC-05。最后,进行了STM32与Arduino之间的蓝牙通讯测试。文章还提供了可能出现的问题及解决方案。
摘要由CSDN通过智能技术生成

最近在学习STM32开发板,在使用HC-05蓝牙模块时遇到了很多问题,没有驱动,串口通讯异常等等,在此期间借鉴了大量CSDN博主的文章,作为回报,我将最终可以正常运行的程序,配置方法以及可能出现的问题分享给大家。大家有问题也可以留言,尽量回复!


本文分为三个模块:

  1. Arduino与HC-05连接(与手机进行蓝牙通讯)
  2. STM32与HC-05连接(与手机进行蓝牙通讯)
  3. STM32与Arduino透过HC-05通讯

已更新

目录

1.Arduino与HC-05连接(与手机进行蓝牙通讯)

2.STM32与HC-05连接(与手机进行蓝牙通讯)

3.STM32与Arduino透过HC-05通讯



*为了能够阅读之后的模块,需要你先阅读下面文字:

研究HC-05可以不用太在意HC-05具体硬件体系和软件构成,但需要至少知道以下几点:

  • HC-05有两个工作模式,正常模式(用于蓝牙通讯)和AT模式(用于配置蓝牙模块参数),二者之间不能通过软件方法切换(不是不能实现而是实现需要通过断电上电实现),正常上电会进入正常模式,但若在上电前保持PIO11为高则会进入AT模式(一般HC-05上会有一个按钮,按住按钮上电相当于上电前保持PIO11为高,能进入AT模式);
  • AT模式相当于HC-05模块成为一个终端,可以与开发板进行串口通信,所有AT指令从开发板发向HC-05,HC-05反馈操作结果给开发板,AT指令可以设置蓝牙模块名称,配对密码,通讯频率等;
  • 正常模式HC-05相当于一根串口通信线缆,将与之配对的设备和开发板的通信串口相连接。

1.Arduino与HC-05连接(与手机进行蓝牙通讯)

此模块目的是将Arduino作为一个收发中继,将HC-05发来的信息原封不动的发给电脑,并将电脑发来的信息原封不动的发给Arduino,主要有两个步骤:

第一步:配置Arduino模块

将以下程序烧录进Arduino,解释可以先不看;

#include <SoftwareSerial.h>  
// 设置Arduino软件串口,10-RX,11-TX     
// Pin10为RX,接HC05的TXD 
// Pin11为TX,接HC05的RXD 
SoftwareSerial BT(10, 11);  
char val;  
void setup() {   
   Serial.begin(38400); 
   //初始化Arduino串口,波特率自定,这里选38400   
   Serial.println("BT is ready!");   
   //测试与PC之间串口是否正常,正常则显示上述文字,异常则显示乱码  
   BT.begin(38400);
   // HC-05的AT模式默认通信波特率为38400    
   pinMode(13,OUTPUT);   
   pinMode(8,INPUT);
   //用来使能HC-05并读取HC-05状态,这里没用到
}  
void loop() {   
   if (Serial.available()) {     
     val = Serial.read();     
     BT.print(val);
     //将PC发来的数据存在val内,并发送给HC-05模块   
   }   
  if (BT.available()) {     
     val = BT.read();     
     Serial.print(val); 
     //将HC-05模块发来的数据存在val内,并发送给PC   
   }   
}

连接HC-05和Arduino开发板:

接线表
HC-05 Arduino
TXD Pin10
RXD Pin11
VCC VCC
GND GND
可选(这里没有用到)
STATE Pin8
EN-M Pin13

接完线,烧好程序,将Arduino断电,按住HC-05模块上的按钮或者将PIO11接在VCC上,将Arduino与PC连接,发现HC-05模块指示灯2秒周期慢闪,即进入AT模式。

打开PC机上的串口助手,设置波特率为38400,结束符选择Both NL & CR,若显示“BT is ready”则证明串口通信可用,若无显示则按下Arduino上的Reset键,否则请检查线路和程序。

串口通信成功后,通过串口助手发送“AT”,如果一切正常将收到“OK”。若无反馈,请检查HC-05指示灯情况,并重新连接,若仍然无反馈,则可能因为串口助手不支持自动结束符,需要输入“AT\r\n”或在结尾按下回车,并在接下来所有AT指令后都加上“\r\n”或按下回车。若反馈为“ERROR:(0)”,那就再发一次,并检查输入的是否是"AT",其前后是否有包括回车符在内的其他符号。

常用的AT指令有

  • AT+NAME(咨询修改蓝牙名称),若发送“AT+NAME”,则会反馈蓝牙名称(部分品牌不会反馈
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值