前期准备:
-
编译 ESP-AT ,在 menuconfig 配置选项中开启 BT SPP 命令的支持,如下:
menuconfig -> Component config -> AT
1. 使用两个 ESP32 设备,分别作为 BT Master 和 BT Slave 。Master 端主动发起连接,Master 端产生配对码;Slave 端输配对码的指令如下:
-
Master 端:
AT+RESTORE //恢复出厂设置 AT+BTINIT=1 //初始化 BT AT+BTNAME="Master" //设置 BT 设备名称为 Master AT+BTSPPINIT=1 //初始化为 BT Master 设备 AT+BTSECPARAM=0,0,"4321"
-
Slave 端:
AT+RESTORE //恢复出厂设置 AT+BTINIT=1 //初始化 BT AT+BTNAME="Slave" //设置 BT 设备名称为 Slave AT+BTSPPINIT=2 //初始化为 BT Slave 设备 AT+BTSCANMODE=2 //设置可被连接、可被扫描模式 AT+BTSECPARAM=2,0,"1234" AT+BLEADDR? //查询设备地址 AT+BTSPPSTART //开启 BT 服务 AT+BTKEYREPLY=0,228541 //设置 BT 配对码,有时间限制
2. 使用两个 ESP32 设备,分别作为 BT Master 和 BT Slave 。Master 端主动发起连接,Slave 端产生配对码;Master 端输配对码的指令如下:
-
Master 端:
AT+RESTORE //恢复出厂设置 AT+BTINIT=1 //初始化 BT AT+BTNAME="Master" //设置 BT 设备名称为 Master AT+BTSPPINIT=1 //初始化为 BT Master 设备 AT+BTSECPARAM=2,0,"4321"
-
Slave 端:
AT+RESTORE //恢复出厂设置 AT+BTINIT=1 //初始化 BT AT+BTNAME="Slave" //设置 BT 设备名称为 Slave AT+BTSPPINIT=2 //初始化为 BT Slave 设备 AT+BTSCANMODE=2 //设置可被连接、可被扫描模式 AT+BTSECPARAM=0,0,"1234" AT+BLEADDR? //查询设备地址 AT+BTSPPSTART //开启 BT 服务 AT+BTKEYREPLY=0,228541 //设置 BT 配对码,有时间限制
【说明】
-
ESP32 默认是支持 6 位的 PIN 和 4 位的 PIN,但是因为 4 位的 PIN 优先级比较低,如果双方都支持 6 位 PIN 的话就直接会产生 6 位 PIN 码。如果双方中有一方不支持 6 位 PIN 的话就会产生 4 位的 PIN 的 。
-
原则就是 Slave 的 IO 能力是 keyboard only,那在 Slave 端就只能输入 PIN 码
-
在 Master 端可以设置 IO 能力是 displayonly,这样就可以产生 PIN 码。
-
经典蓝牙里谁发起连接,谁就是 Master 设备。Slave 设备只能等待被连接,不能主动发起连接请求。