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)

泛指蓝牙4.0或更高的模块,蓝牙低功耗技术是低成本、短距离、可互操作的鲁棒性无线技术,工作在免许可的2.4GHz ISM射频频段。

因为BLE技术采用非常快速的连接方式,因此平时可以处于“非连接”状态(节省能源),此时链路两端相互间只是知晓对方,只有在必要时才开启链路,然后在尽可能短的时间内关闭链路(每次最多传输20字节)。

HC-05、HC-06是蓝牙2.0的模块。

而JDY-08的蓝牙模块,支持蓝牙4.0协议。

Arduino 连接JDY-08蓝牙模块_第1张图片

JDY-08由于采用蓝牙4.0,所以在手机蓝牙搜索那里无法进行配对。需要通过相应的应用程序来连接,这样的话就无法像HC-05那样使用手机端的蓝牙串口APP来进行连接它。

Arduino 连接JDY-08蓝牙模块_第2张图片

不过可以通过Serial Bluetooth Terminal这样一款App进行连接。下载链接。具体操作后面会讲到。

关于该模块的文档可以参考。

一、基本连接

使用模块首先就需要进行简单基本的配置,比如改名字,配置连接的密码;基本的配置就是AT指令,这个就跟HC-05模块类似了。

常用的AT指令文档里有,摘出部分如下:

Arduino 连接JDY-08蓝牙模块_第3张图片

在硬件的连接上可以使用USB转TTL工具进行连接:

Arduino 连接JDY-08蓝牙模块_第4张图片

一般单片机开发板也自带该模块,比如我用的是普中51-单核-A2开发板。

如图所示连线后:

Arduino 连接JDY-08蓝牙模块_第5张图片

在电脑上打开串口调试工具,找到串口号,设置好波特率,就可以进行指令设置了:

Arduino 连接JDY-08蓝牙模块_第6张图片

特别注意:
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蓝牙模块_第7张图片

三、手机连接

先用USB转TTL试一下蓝牙通信:

Arduino 连接JDY-08蓝牙模块_第8张图片

硬件连接好之后,打开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蓝牙模块_第9张图片 Arduino 连接JDY-08蓝牙模块_第10张图片

之后编写Arduino程序做一个通过手机蓝牙控制小灯亮灭的小工具。

按如图所示接线:

Arduino 连接JDY-08蓝牙模块_第11张图片

黄色的那根线连接蓝牙的TXD即可。

char serialData;
void setup() {
  Serial.begin(115200);
  pinMode(11, OUTPUT); //11引脚连接演示用LED
}

void loop() {
  if ( Serial.available() > 0 ) {

    serialData =  Serial.read();

    if (serialData == '1' ) {  //接收到点亮LED指令
      Serial.print("Got command: ");
      Serial.println(serialData);
      Serial.println("LED-ON");
      digitalWrite(11, HIGH);  //点亮LED指令
    }
    if (serialData == '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灯。

你可能感兴趣的:(Arduino)