Arduino使用蓝牙通信模块

在淘宝店中买的HC-05主从机一体蓝牙模块,该模块的正面和反面截图如下:
Arduino使用蓝牙通信模块 - gc_2299 - gc_2299的博客
 
Arduino使用蓝牙通信模块 - gc_2299 - gc_2299的博客
测试的时候只使用了RX、TX、GND、5V这四个引脚,测试的连接示意图如下,需要注意的是蓝牙模块的RX要接Arduino的TX,蓝牙模块的TX要接Arduino的RX:
Arduino使用蓝牙通信模块 - gc_2299 - gc_2299的博客
  测试代码使用的是参考文献1中的代码,代码如下:

char data = 0;
void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop()
{
if(Serial.available() > 0)
{
data = Serial.read();
Serial.print(data);
Serial.print("\n");
if(data == '1')
digitalWrite(13, HIGH);
else if(data == '0')
digitalWrite(13, LOW);
}
}

实物连线图如下:
Arduino使用蓝牙通信模块 - gc_2299 - gc_2299的博客
 
演示视频:

注意:一开始测试的时候使用的是iPhone5,结果在蓝牙界面中死活收不到hc-05的设备(原因可以参考文献2-3),后来换了一个三星的手机,很快就搜索出来了,但是开始的时候下了几个蓝牙串口调试助手,要么检测不到蓝牙连接,要么检测到了连接不上,最后下了一个名称为蓝牙串口的软件,版本为5.4.3,图标为蓝底带大写字母SPP,使用这个软件可以正常地进行蓝牙串口通信。

参考文献:
[1]https://create.arduino.cc/projecthub/user206876468/arduino-bluetooth-basic-tutorial-d8b737
[2]http://www.eevblog.com/forum/beginners/hc05-bluetooth-and-iphone/
[3]http://apple.stackexchange.com/questions/141112/connecting-iphone-to-hc-05-bluetooth-module
 
### Arduino蓝牙模块之间的通信协议 Arduino蓝牙模块之间通过串行通信接口实现数据交换。这种通信方式基于UART(Universal Asynchronous Receiver/Transmitter),即通用异步收发器[^1]。 #### UART通信基础 UART是一种常见的串行通信协议,用于两个设备间的数据传输。它具有以下特点: - 数据帧由起始位、数据位、奇偶校验位和停止位组成。 - 通常使用的波特率为9600 bps,但也支持其他速率如115200 bps等。 - 在Arduino中,硬件串口(`Serial`)或软件串口(`SoftwareSerial`)可以用来配置UART通信。 对于HC-05这样的经典蓝牙模块,其默认波特率为9600 bps,并可以通过AT指令修改波特率和其他参数[^2]。 #### 配置Arduino蓝牙模块的通信 为了使Arduino能够与蓝牙模块正常通信,需完成以下设置: ##### 硬件连接 | 蓝牙模块引脚 | 功能 | 对应Arduino引脚 | |--------------|--------------------------|-----------------------| | VCC | 电源正极 | 5V 或 3.3V | | GND | 接地 | GND | | TX | 发送数据到Arduino | RX (通常是数字引脚) | | RX | 接收来自Arduino的数据 | TX (通常是数字引脚) | 注意:某些蓝牙模块的工作电压可能较低(如3.3V)。在这种情况下,建议使用逻辑电平转换电路以保护模块免受过高电压损坏[^3]。 ##### 软件初始化 下面是一个简单的代码示例,展示如何利用Arduino蓝牙模块建立通信关系: ```cpp #include <SoftwareSerial.h> // 定义软串口号并指定对应的GPIO针脚 SoftwareSerial BT(2, 3); // 数字引脚2作为接收端(RX),数字引脚3作为发送端(TX) void setup() { Serial.begin(9600); // 初始化硬件串口,波特率为9600bps BT.begin(9600); // 初始化软串口,波特率同样设为9600bps Serial.println("Arduino is ready to communicate via Bluetooth!"); } void loop() { if (BT.available()) { // 如果蓝牙模块有可用数据,则读取并打印至串口监视器 char data = BT.read(); Serial.print(data); } if (Serial.available()) { // 如果PC端向串口写入数据,则转发给蓝牙模块 char data = Serial.read(); BT.write(data); } } ``` 此程序实现了双向通信功能——既可以从蓝牙模块接收数据并通过USB转串口输出到计算机终端;也可以从计算机获取输入并将之传递回蓝牙模块[^2]。 #### AT指令集简介 当需要调整蓝牙模块的操作模式或参数时,可通过发送特定格式的AT命令来达成目的。例如切换为主机角色、绑定目标地址以及更改名称等功能均依赖于此机制。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值