Arduino 连接JDY-08蓝牙模块
文章目录
-
-
- Arduino 连接JDY-08蓝牙模块
-
- 简介
- 一、基本连接
- 二、软件连接
- 三、手机连接
-
简介 从蓝牙4.0开始包含两个蓝牙芯片模块:传统/经典蓝牙模块(Classic Bluetooth,简称BT)和低功耗蓝牙(Bluetooth Low Energy,简称BLE) 。经典蓝牙是在之前的蓝牙1.0,1.2,2.0+EDR,2.1+EDR,3.0+EDR等基础上发展和完善起来的,而低功耗蓝牙是Nokia的Wibree标准上发展起来的,是完全不同两个标准。
经典蓝牙模块(BT)
泛指蓝牙4.0以下的模块,一般用于数据量比较大的传输,如:语音、音乐、较高数据量传输等。
低功耗蓝牙模块(BLE)
【Arduino 连接JDY-08蓝牙模块】泛指蓝牙4.0或更高的模块,蓝牙低功耗技术是低成本、短距离、可互操作的鲁棒性无线技术,工作在免许可的2.4GHz ISM射频频段。
因为BLE技术采用非常快速的连接方式,因此平时可以处于“非连接”状态(节省能源),此时链路两端相互间只是知晓对方,只有在必要时才开启链路,然后在尽可能短的时间内关闭链路(每次最多传输20字节)。
HC-05、HC-06是蓝牙2.0的模块。
而JDY-08的蓝牙模块,支持蓝牙4.0协议。
文章图片
JDY-08由于采用蓝牙4.0,所以在手机蓝牙搜索那里无法进行配对。需要通过相应的应用程序来连接,这样的话就无法像HC-05那样使用手机端的蓝牙串口APP来进行连接它。
文章图片
不过可以通过
Serial Bluetooth Terminal
这样一款App进行连接。下载链接。具体操作后面会讲到。关于该模块的文档可以参考。
一、基本连接 使用模块首先就需要进行简单基本的配置,比如改名字,配置连接的密码;基本的配置就是AT指令,这个就跟HC-05模块类似了。
常用的AT指令文档里有,摘出部分如下:
文章图片
在硬件的连接上可以使用USB转TTL工具进行连接:
文章图片
一般单片机开发板也自带该模块,比如我用的是普中51-单核-A2开发板。
如图所示连线后:
文章图片
在电脑上打开串口调试工具,找到串口号,设置好波特率,就可以进行指令设置了:
文章图片
特别注意:
1.AT指令后不用换行
2.JDY-08的默认波特率是115200
3.AT模式必须是模块未连接状态,即状态灯闪烁
二、软件连接 这里使用的是arduino uno的板子,硬件串口(0,1)用作PC与arduino通讯,使用软串口将(4,5)引脚转化为串口连接蓝牙模块。指令的发送就是通过arduino IDE的串口监视器发送命令到arduino uno,uno接收到命令后再转发到蓝牙模块,蓝牙模块返回值再被uno接收并转发到串口监视器打印。
#include
/*
* 使用arduino uno板做测试
* 串口(0,1)作为PC连接uno通讯串口
* 将串口4,5引脚使用软串口RX、TX处理连接BLE蓝牙模块
*/
SoftwareSerial BT_Serial(4,5);
// 使用软串口设置蓝牙连接串口
String str="";
void setup() {
Serial.begin(115200);
BT_Serial.begin(115200);
}void loop() {
//监控串口,将串口接收到的字符串传送给蓝牙模块
//将蓝牙模块返回的内容串口打印到串口监视器进行显示
str = "";
while(Serial.available()>0)
{
str += char(Serial.read());
delay(10);
}if(str.length()>0)
{
Serial.print(F("命令行发送内容:"));
Serial.println(str);
// 蓝牙串口向蓝牙发送信息
BT_Serial.print(str);
delay(10);
str = "";
while(BT_Serial.available()>0)
{
str += char(BT_Serial.read());
delay(10);
}if(str.length()>0)
{
Serial.print(F("BT 返回内容:"));
Serial.println(str);
}
else
{
Serial.println(F("BT 无返回内容:"));
}
}
}
实验结果:
文章图片
三、手机连接 先用USB转TTL试一下蓝牙通信:
文章图片
硬件连接好之后,打开
Serial Bluetooth Terminal
这款App,在左上角菜单中找到Devices
这个选项,打开之后选择Bluetooth LE
,点击上方的SCAN
,就可以扫描到JDY-08
蓝牙模块。点击即可连接。
之后在电脑上打开串口调试工具,发送一个“form pc”,就会神奇地发现手机端接受到了电脑发的这个字符串。之后手机端发送"from phone",电脑端就可以收到这个字符串。
整个流程可以理解为:电脑发送"from pc"到蓝牙模块的RXD,蓝牙通过串口接收到数据,通过蓝牙广播出去,手机连接蓝牙就能收到广播"from pc"。
而手机发送"from phone" 就是将该字符串通过蓝牙传给蓝牙模块,蓝牙模块接收到之后,就通过TXD串口发送出去,从而计算机能够接受到字符串"from phone"。
文章图片
文章图片
之后编写Arduino程序做一个通过手机蓝牙控制小灯亮灭的小工具。
按如图所示接线:
文章图片
黄色的那根线连接蓝牙的TXD即可。
char serialData;
void setup() {
Serial.begin(115200);
pinMode(11, OUTPUT);
//11引脚连接演示用LED
}void loop() {
if ( Serial.available() > 0 ) {serialData =https://www.it610.com/article/Serial.read();
if (serialData =='1' ) {//接收到点亮LED指令
Serial.print("Got command: ");
Serial.println(serialData);
Serial.println("LED-ON");
digitalWrite(11, HIGH);
//点亮LED指令
}
if (serialData =https://www.it610.com/article/='0' ){//接收到熄灭LED指令
Serial.print("Got command: ");
Serial.println(serialData);
Serial.println("LED-OFF");
digitalWrite(11, LOW);
//熄灭LED指令
}
}
}
实验结果:
手机发送
1
,小灯亮;手机发送0
,小灯灭。实验分析:手机发送
1
是将该字符串通过蓝牙传给蓝牙模块,蓝牙模块接收到之后,就通过TXD串口发送出去,到达Arduino板的RXD,之后Arduino的串口寄存器中就存在1
这个数据了。Arduino就会执行编写的程序,在串口监视器中打印字符,之后点亮LED灯。推荐阅读
- ESP8266模块使用
- Arduino串口通信
- Arduino|第一章 - 新手入门 - 第三课 Arduino 上手实战呼吸灯
- Arduino|Arduino TFT_eSPI库来驱动SPI接口的LCD显示文字详解
- ESP32|基于arduino的ESP32 学习笔记(二) TFT_eSPI和LVGL库使用笔记
- esp32|Arduino应用开发——spi flash(以esp32和w25qxx为例)
- esp32|ESP32-S2应用开发——USB通信(虚拟串口)
- esp32|ESP32烧录Arduino生成的bin文件
- 技术实践类|BMP280使用指南