还剩1页未读,继续阅读
文本内容:
实现蓝牙主从机连接蓝牙库ESP32-BluetoothSerial
一、概述因为需要使用的蓝牙功能,就看了下的蓝牙库,例程里是作为从机,使用手机或者其他设备连接ESP32ESP32BluetoothSerial ESP32ESP32进行数据传输但我又需要使用互连,一个作为主机,一个作为从机,就根据库敲了一下做主机主动连接从机的代码,就像ESP32ESP32HC05或蓝牙似的,实现两个蓝牙进行配对,上电自动连接,很方便06使用的是这个蓝牙库,函数少且简单,看相关函数名字也能知道是实现什么功能,而且也不需要进行广播啥的,能实现点BluetoothSerial对点连接就可以,但是库简单的同时功能也少,没有扫描函数,但问题不大为什么写博客呢,因为我看网上没有这个库的相关介绍,弄好了就记录一下,万一以后需要用却找不到了,就不太好,就在这记录分享一下
二、测试代码#include Arduino.h#includeBluetoothSerial SerialBT;#define Master1主从机模式选择1主机0从机void BluetoothEventsesp_spp_cb_event_t eventesp_spp_cb_param_t*param;蓝牙事件回调函数uint8_t address
[6]={0x30,0x83,0x98,0xC
3.0x50,0xDA};从机MAC地址不同的蓝牙地址不同需要自己修改void setup{Serial.begin115200;iff MasterSerialBT.begin true);开启蓝牙名称为主机Serial printf);SerialBT.connectaddress;Serial printf);else);开启蓝牙名称为从机SerialBT.beginSerial printf);SerialBT.register_callback(Bluetooth_Event);设置事件回调函数连接断开发送接收void loopiffMasterSerialBT.writeA;delay300;void Bluetooth_Eventesp_spp_cb_event_t eventesp_spp_cb_param_t param蓝牙事件回调函数ifevent==ESP_SPP_OPEN_EVT||event==ESP_SPP_SRV_OPEN_EVT蓝牙连接划标志蓝牙主机和从机模式对应的标志不同,前面的是主机模式的,后面是从机模式Serial writeelse ifevent==ESP_SPP_CLOSE_EVT蓝牙断开连接标志Serial write;else ifevent==ESP_SPP_DATA_lND_EVT数据接收标志whileSerialBT.availableSerial.writeSerialBT.read;Serial write;elseifevent==ESP_SPP_WRITE_EVT数据发送标志Serial write);上面就是基本的代码了,可以修改宏定义来选择主从机模式,使用函数为蓝牙事件添加了回调函数,当连接成Master register_callback功、断开连接、接收数据和发送数据等事件发生时,会触发自定义的函数,根据事件枚举标志位来判断当前是哪种事件,使Bluetooth_Event用串口打印出相关字符代码里没有写连接失败后重复连接的代码,因为我发现,每次连接时间好像不太固定,差的有点多,后面再改进所以目前这代码最好先给从机通电,再给主机通电,避免连接失败
三、总结连接从机需要从机的MAC地址,这个可以使用手机上的蓝牙串口软件查看。