ESP32学习笔记-蓝牙测试

写在前面

经典蓝牙我们一般说的是BT,低功耗蓝牙我们一般说成BLE。

ESP32具有蓝牙功能,本例程将示范使用两块FireBeetle 2 ESP32-E进行蓝牙通信,通过其中一块ESP32向另一块ESP32发送数据。

测试代码

主机代码
#include "BluetoothSerial.h"

//创建蓝牙对象
BluetoothSerial SerialBT;

//从机MAC地址
uint8_t address[6]  = {0xB0, 0xB2, 0x1C, 0xAB, 0x19, 0xD2};

//蓝牙状态
bool connected;

void setup()
{

  //启用串口
  Serial.begin(115200);

  //开启蓝牙
  SerialBT.begin("ESP32_master", true);  
  //打印提示 
  Serial.println("The device started in master mode, make sure remote BT device is on!");

  //与从机配对
  connected = SerialBT.connect(address);
  //打印提示
  if(connected)
  {
    //打印成功
    Serial.println("Connected Succesfully!");
  }
  else
  {
    //打印失败
    Serial.println("Failed to connect. Make sure remote device is available and in range, then restart app."); 
  }
  
}

void loop()
{

  //断线自动重连
  if(!SerialBT.hasClient())
  {
    //打印掉线
    Serial.println("The slave is disconnected");
    //延时
    delay(50);
    //与从机配对
    connected = SerialBT.connect(address);
    //打印提示
    if(connected)
    {
    //打印重连成功
    Serial.println("Automatic connection successful!");
    }
    else
    {
    //打印重连失败
    Serial.println("Automatic connection failure!"); 
    }

  }

  //将ESP32串口接收到的信息,通过蓝牙发送
  if (Serial.available())
  {
    SerialBT.write(Serial.read());
  }

  //将蓝牙接收到的信息,通过ESP32串口发送
  if (SerialBT.available())
  {
    Serial.write(SerialBT.read());
  }

  //延时
  delay(20);

}
从机代码
#include "BluetoothSerial.h"
#include "esp_bt_device.h"

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

BluetoothSerial SerialBT;  //创建蓝牙对象

void setup()
{
  
  //启用串口
  Serial.begin(115200);

  //开启蓝牙
  SerialBT.begin("ESP32_slave");  
  //打印提示
  Serial.println("The device started, now you can pair it with bluetooth!");

  //获取蓝牙的mac地址
  const uint8_t *bleAddr = esp_bt_dev_get_address(); 
  //以16进制打印
  printf("蓝牙mac地址: %02x-%02x-%02x-%02x-%02x-%02x\n", bleAddr[0], bleAddr[1], bleAddr[2], bleAddr[3], bleAddr[4], bleAddr[5]);

}

void loop()
{
  
  //将ESP32串口接收到的信息,通过蓝牙发送
  if (Serial.available())
  {
    SerialBT.write(Serial.read());
  }

  //将蓝牙接收到的信息,通过ESP32串口发送
  if (SerialBT.available())
  {
    Serial.write(SerialBT.read());
  }

  //延时
  delay(20);

}

测试结果

主机

从机

注意事项

1、主机配对从机时,使用MAC物理地址,更快。

2、获取蓝牙MAC地址的方法,参见 从机代码

参考

DFR0654_FireBeetle_Board_ESP32_E (dfrobot.com.cn)

ESP32 Arduino学习篇 (三) 蓝牙_esp32 蓝牙-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值