Arduino 连接JDY-08蓝牙模块

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协议。
Arduino 连接JDY-08蓝牙模块
文章图片
JDY-08由于采用蓝牙4.0,所以在手机蓝牙搜索那里无法进行配对。需要通过相应的应用程序来连接,这样的话就无法像HC-05那样使用手机端的蓝牙串口APP来进行连接它。
Arduino 连接JDY-08蓝牙模块
文章图片
不过可以通过Serial Bluetooth Terminal这样一款App进行连接。下载链接。具体操作后面会讲到。
关于该模块的文档可以参考。
一、基本连接 使用模块首先就需要进行简单基本的配置,比如改名字,配置连接的密码;基本的配置就是AT指令,这个就跟HC-05模块类似了。
常用的AT指令文档里有,摘出部分如下:
Arduino 连接JDY-08蓝牙模块
文章图片
在硬件的连接上可以使用USB转TTL工具进行连接:
Arduino 连接JDY-08蓝牙模块
文章图片
一般单片机开发板也自带该模块,比如我用的是普中51-单核-A2开发板。
如图所示连线后:
Arduino 连接JDY-08蓝牙模块
文章图片
在电脑上打开串口调试工具,找到串口号,设置好波特率,就可以进行指令设置了:
Arduino 连接JDY-08蓝牙模块
文章图片
特别注意:
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 无返回内容:")); } } }

实验结果:
Arduino 连接JDY-08蓝牙模块
文章图片
三、手机连接 先用USB转TTL试一下蓝牙通信:
Arduino 连接JDY-08蓝牙模块
文章图片
硬件连接好之后,打开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 连接JDY-08蓝牙模块
文章图片
Arduino 连接JDY-08蓝牙模块
文章图片
之后编写Arduino程序做一个通过手机蓝牙控制小灯亮灭的小工具。
按如图所示接线:
Arduino 连接JDY-08蓝牙模块
文章图片
黄色的那根线连接蓝牙的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灯。

    推荐阅读