《ESP32实现蓝主从机连接-BluetoothSerial蓝库.docx》由会员分享,可在线阅读,更多相关《ESP32实现蓝主从机连接-BluetoothSerial蓝库.docx(3页珍藏版)》请在第一文库网上搜索。
1、ESP32实现蓝牙主从机连接-BIUetoothSeria1蓝牙库一、概述因为需要使用ESP32的蓝牙功能,就看了下ESP32的BIUeSothSeriaI蓝牙库,例程里是ESP32作为从机,使用手机或者其他设备连接ESP32进行翔g传输。但我又需要使用ESP32互连,一个作为主机,一个作为从机,就根据库敲了一下ESP32做主机主动连接从机的代码,就像HCo5或06蓝牙似的,实现两个蓝牙进行配对,上电自动连接,很方便。使用的是B1UetOOthSeria1这个蓝牙库,函数少且简单,看相关函数名字也能知道是实现什么功能,而且也不需要进行广播啥的,能实现点对点连接就可以,但是库简单的同时功能也少,
2、没有扫描函数,但问题不大。为什么写博客呢,因为我看网上没有这个库的相关介绍,弄好了就记录一下,万一以后需要用却找不到了,就不太好,就在这记录分享一下.二、测试代码#inc1ude#inc1udeBIuetoothSeriaISeriaIBT#defineMaster1主从机模式选择1主机O从机voidB1uetooth_Eventiesp_spp_cb_event_teventesp_spp_cb_param_tparam蓝牙事件回调函数int8Jaddress6=0x30.0x83.0x98.0xC3,050.0xDA:从机MAC地址不同的蓝牙地址不同需要自己修改voidsetup()Ser
3、ia1.begin(115200);Seria1BTregister_ca1IbackiB1uetooth_Event);设置事件回调函数连接断开发送接收if:Master:(SeriaIBTbegin(true开启蓝牙名称为主机Seria1.printf(SeriaIBTconnectaddressSeria1.printf(e1se(Seria1BTbegin();开启蓝牙名称为从机Seria1,rintf()void1oop()ifMasteriSeriaIBTwrite,Ad1ay(300);voidB1uetoothEventesp_spp_cb_event_teventesp_sp
4、p_cb_param_tparam蓝牙事件回调函数(ifeventESP_SPP_OPEN_EVTeventESP_SPP_SRV_OPEN_EVT:蓝牙连接成功标志(蓝牙主机和从机模式对应的标志不同,前面的是主机模式的,后面是从机模式Seria1.write:e1seifevent=ESP_SPP_C1OSE_EVT)蓝牙断开蜘磔(Seria1write()e1seif(event=ESP_SPP_DATA_IND_EVT:.让接收标志WhiIetSeriaIBTavai1ab1e()(Seria1.writeSeriaIBTread()Seria1write:)e1seif(event=E
5、SP_SPP_WRITE_EVTi让发送标志(Seria1write:)上面就是基本的代码了,可以修改MaSter宏定义来选择主从机模式,使用registeJCaHbaCk()函数为蓝牙事件添加了回调函数,当连接成功、断开连接、接收数据和发送数据等事件发生时,会触发自定义的BIUetooth_Event()函数,根据事件枚举标志位来判断当前是哪种事件,使用串口打印出相关字符。代码里没有写连接失败后重复连接的代码,因为我发现,每次连接时间好像不太固定,差的有点多,后面再改进。所以目前这代码最好先给从机通电,再给主机通电,避免连接失败。三、总结连接从机需要从机的MAC地址,这个可以使用手机上的蓝牙串口软件查看.