homeassistant接入光线传感器和二氧化碳传感器
本文用两个模块来演示HA通过ESPHOME接入I2C,UART设备
本文还是以WROOM为例,针脚定义如图
知识基础
本部分看下就行,不理解也不影响使用
I2C、SPI、UART都是常见的低速板级通信协议,目前主流的SoC都内置了这些通讯协议的控制器,同样,各种传感器、Touch控制器、指纹模块、蓝牙模块、WIFI模块也都兼容这三种通信方式的一种或几种。
分别说下:
1. I2C是两根线,SDA(数据)和SCL(时钟),也是一种同步传输协议。主机在发送开始信号之后,先发送7个比特的地址位和1个比特的读写位,每个从机有自己的I2C地址,当发现该条指令是发给自己的时候,拉低SDA线(即回复ACK信号),然后主机发送或接收数据,完成传输。传输完成之后,主机发送停止位,完成该次传输。
2. UART一般由TXD、RXD、GND三根线组成,是一种异步传输协议。无论是主机还是从机,均可以自由发送数据,但是由于UART总线并没有时钟线,所以需要提前约定对应的波特率,这是一种很简单的传输协议。
3. SPI是四根线,分别是CS(片选)、MOSI(主发从收)、MISO(从发主收)、CLK(时钟),是一种同步传输协议。主机送出CLK信号,主机到从机的数据在MOSI线上传输,从机到主机的数据在MISO线上传输。在启动传输之前,需要先拉低(一般是这样,也有各别芯片是CS高有效)对应从机的CS管脚,在传输完成之后,再拉高CS管脚,从机的SPI Slave模块进入休眠。
I2C传感器接
I2C用BH1750环境光传感器做示例
接线
接线示意图
实际接线图
之前接好的温湿度就不撤下来了
可以看到SCL是绿线接在33 ,SDA是白线接在25
代码
i2c首先设置总线
传感器SCL——主板SCL
传感器SDA——主板SDA
i2c:
#指定scl引脚
scl: 33
#指定sda引脚
sda: 25
#id。如果有多条i2c会用到
id: bus_a
之后在sensor:分支添加传感器即可
之前已经有一个温湿度传感器了
添加之后代码是这样的
#型号 bh1750
- platform: bh1750
#提交给HA的名称
name: "BH1750 Illuminance"
#id,设备联动会用到
id: illuminance
#地址,厂商设定好的
address: 0x23
#每60秒采集上报一次数据
update_interval: 60s
之后参考篇3,保存安装即可
uart传感器
uart用SenseAir S8 二氧化碳传感器做示例
接线
由于模块是反向排针
就只能用杜邦线连接
官方文档介绍说要用4-5v供电
这里就要从5v针脚另取电了
针脚定义和接线示意图如下
RX绿色接在GPIO27
TX橙色接在GPIO26
代码
uart和i2c类似也要先设置总线
不过这里要注意收发关系对应
传感器RX(接收)——主板TX(发送)
传感器TX(接收)——主板RX(发送)
波特率官方文档介绍SenseAir S8只支持9600
整体代码如下
#添加uart总线
uart:
#主板接收针脚
rx_pin: 26
#主板发送针脚
tx_pin: 27
#波特率官方文档介绍SenseAir S8只支持9600 .
baud_rate: 9600
# #id。如果有多条uart会用到
id: uart_a
然后在sensor下面继续添加代码即可
现在已经有3个传感器了
对应代码很简单,就不注释了
- platform: senseair
co2:
name: "SenseAir CO2 Value"
update_interval: 60s
OTA更新固件后就可以正常采集数据了
最后附上配套视频
值友7077440294
校验提示文案
胡萝卜斯基
校验提示文案
_TOXIC_
校验提示文案
sonatasss
传感器TX(发送)——主板RX(接收)
校验提示文案
值友3889229955
校验提示文案
收藏
校验提示文案
_TOXIC_
校验提示文案
胡萝卜斯基
校验提示文案
值友7077440294
校验提示文案
收藏
校验提示文案
值友3889229955
校验提示文案
sonatasss
传感器TX(发送)——主板RX(接收)
校验提示文案