本帖最后由 syhzjnbxs 于 2024-2-22 09:05 编辑
今天用苹果手机测试了一下,发现苹果手机先验证,再连接,和安卓手机不一样,代码已经优化(压缩包已经更新),苹果手机也能正常连接使用了。
用esp32开发板来实现蓝牙接近开关功能,手机蓝牙定位等,可同时连接3台手机,蓝牙配对手机绑定,理论上支持15台不同的手机
这是homeassistant中mqtt自动发现的实体
这是手机和esp32蓝牙配对后的连接
esp32-cs.rar
(944.46 KB, 下载次数: 58)
压缩包里有三个文件,固件esp32-cs.ino.bin,引导文件esp32-cs.ino.bootloader.bin,分区表文件esp32-cs.ino.partitions.bin
用esptool将三个文件分别刷入esp32开发板,已实现的esp32开发板型号是DOIT ESP32 DEKIT,理论上esp32芯片的设备都可以刷入,esp32 s3、c3等支持ble5的芯片可能不兼容,手头没有这样的板子,没办法确认
esptool输入三个文件的命令如下:
刷分区表
esptool.py --chip esp32 --port COM3 --baud 921600 write_flash 0x8000 esp32-cs.ino.partitions.bin
刷bootloader
esptool.py --chip esp32 --port COM3 --baud 921600 write_flash 0x1000 esp32-cs.ino.bootloader.bin
刷固件
esptool.py --chip esp32 --port COM3 --baud 921600 write_flash 0x10000 esp32-cs.ino.bin
这里把COM3换成自己对应的串口,新开发板或者串口不能刷入的,esp32开发板上按下boot键(这个应该都会吧)
刷完后,最好拔掉电源重新上电,前10秒左右会读取EEPROM中保存的信息用来连接wifi,10秒钟过了以后,没有连上wifi,自动创建名称是esp32-cs的热点,这里设置了20秒的连接时间,务必在这20秒钟里面用手机或者电脑连接这个wifi热点,否则20秒钟过后,将取消这个wifi热点,接下来会一直重试连接EEPROM中保存的wifi。如果超时或者没有连上,可以反复插拔电源重试
连上esp32-cs的热点后,网页打开192.168.1.1
这是配置信息的登录界面,用户名和密码都是admin
用户名和密码都是admin
登录后的配置页面如下
这里填写配置信息,保存后重启
这里填写你实际的wifi信息,homeassistant中的mqtt信息,BLE Pin中填写的是手机和esp32蓝牙初次配对时要用的配对码,6位数字,自己随意设定,比如123456。确认无误后,点save保存并确认,点击restart后确认,esp32开发板会重启。
如果配置信息都正确的话,homeassistant中的mqtt设备应该会出现名称是esp32-cs的设备,设备里的实体和上面的图片一样(这里已经接入了dht11在针脚13上,开关信号的光感元件在针脚19上,开关信号的红外传感器在针脚18上,如有需要可以接上对应针脚,能直接使用)
这时,手机蓝牙应该能搜索到名称是esp32-cs的蓝牙设备,点击连接,用上面设置的6位数字配对码就能连接上,比如123456,手机连接后homeassistant中的rssi_value0实体就会每秒更新手机蓝牙的信号强度,接下来要怎么利用这个就看你们自己的了,比如信号值达到要求,自动开门,开灯,或者根据信号值,判断人体位置等
这里说明一下,之前想买网上那种蓝牙模块,有蓝牙接近开关功能的那种,所以才有了用esp32来直接实现这个功能的想法,目前这个固件可以同时连接3台手机,判断3台手机的信号强度,那种蓝牙模块我看到过的只支持一台手机连接,
而且我测试过一台手机连接两个esp32开发板,这样就可以实现室内蓝牙定位了,后续有什么新的功能或者想法,也会继续更新这个固件,固件可以OTA升级,配置信息页面的选择文件和update就是用来OTA升级的,可以直接选择esp32-cs.ino.bin文件,点击update更新固件
|