本帖最后由 polisher 于 2023-10-28 22:41 编辑
本人纯粹的小白,一贯是在需求的驱动下,边制作边学习。因深知应用案例对咱们小白的重要性,特分享自己的成功制作案例,与君共勉。
最近用ESPHOME做了个臭氧机(无污染的万能杀毒方式),为了探测臭氧浓度以便实现对臭氧发生器的自动化控制,于是斥巨资买了个臭氧模组,单独制作了一个传感器。
可能友友们会问,直接用WIFI不香吗?是的,WIFI虽香,但为了不依赖路由器,所以选择蓝牙方式。
图个方便,没使用PCB板,均为独立原件焊接,并装置在废弃的充电头里,插入插座即可使用。
零件清单:
1. AC转DC5V电源模块。
功能:为臭氧模组供电。
2. DC转DC3.3V电源模块
功能:为蓝牙模块供电。
3. 蓝牙模块。因手里有现成JDY-08模块,用其他的从机透传蓝牙模块也可以。
使用方法:可以用AT指令对service_uuid、characteristic_uuid和广播名等进行自定义。本案例中,因为臭氧模组的串口波特率为9600,所以必须对蓝牙模块的串口波特率进行调整,指令为AT+BOUD4。
操作步骤:通过USB转TTL模块连接蓝牙模块,用串口调试软件发送指令,看到返回ok信息即可。
4.臭氧模组
注意事项:该模组输出方式为UART,默认为主动方式(每秒发送1次数据),如果注重低功耗,可以通过指令改为被动模式。
主要代码如下:
ble_client:
- mac_address: F4:B8:98:19:6C:6E
id: Ozone_Sensor
sensor:
- platform: ble_client
type: characteristic
ble_client_id: Ozone_Sensor
icon: mdi:smoke-detector-variant
name: "Ozone Sensor"
service_uuid: 'fff0'
characteristic_uuid: 'fff1'
notify: true
# 校验和、起始位与气体名称一致则返回测量值
lambda: |-
uint8_t temp = ~(x[0]+x[1]+x[2]+x[3]+x[4]+x[5]+x[6]+x[7]);
if ((temp == x[8]) && (x[0] == 255) && (x[1] == 23)){
return x[4]*256+x[5];
}else{
return -1;
}
unit_of_measurement: 'ppb'
force_update: True
|