ESPHome 连接传感器并实时显示状态
硬件和软件准备
开发板 | OLED 屏 | 红外感应传感器 | 超声波距离传感器 | 固件 |
---|---|---|---|---|
NodeMCU ESP8266 | 0.96 寸 I2C IIC 通信 128*64 OLED 显示屏 | HC-SR501 红外感应传感器 | HC-SR04 超声波距离传感器 | ESPHome |
连接传感器和 OLED 屏
HC-SR501 红外感应传感器
引脚 | 说明 |
---|---|
VCC | 5V 电源,实际测试,也可以接 3.3V |
OUT | 输出高电平信号 |
GND | 地 |
SR501 有两个旋钮,分别是感应距离和感应时间,感应距离是 3-7 米,感应时间是 0.3-300 秒。
拆下 SR501 的透明外壳,可以看到 PCB 板上的元件,PCB 板上预留了光敏电阻的焊位。
背面有跳线帽,H 是连续感应,L 是单次感应。
配置文件:
binary_sensor:
- platform: gpio
pin: D6
name: "SR501 Sensor"
id: sr501_sensor
device_class: motion
OUT 输出信号连接到 NodeMCU ESP8266 的 D6 引脚。
HC-SR04 超声波距离传感器
引脚 | 说明 |
---|---|
VCC | 5V 电源,实际测试,也可以接 3.3V |
TRIG | 触发信号 |
ECHO | 回波信号 |
GND | 地 |
配置文件:
sensor:
- platform: ultrasonic
trigger_pin: D3
echo_pin: D4
name: "Ultrasonic Sensor"
id: ultrasonic_sensor
update_interval: 1s
触发信号和回波信号分别连接到 NodeMCU ESP8266 的 D3 和 D4 引脚。
OLED 屏幕
引脚 | 说明 |
---|---|
VCC | 3.3V 电源 |
GND | 地 |
SCL | 时钟线 |
SDA | 数据线 |
配置文件:
i2c:
sda: D2
scl: D1
scan: True
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
reset_pin: D0
address: 0x3C
id: my_display
lambda: |-
it.print(0, 0, id(my_font), "Hello World!");
font:
- file: "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"
id: my_font
size: 14
使用 I2C 通信,SDA 连接到 D2,SCL 连接到 D1 。
完整配置文件
esphome:
name: nodemcu-sensor-display
esp8266:
board: nodemcuv2
# Enable logging
logger:
# Enable Home Assistant API
api:
password: "otapass"
ota:
password: "otapass"
wifi:
ssid: "ly1_iot"
password: "songwifi"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Nodemcu-Sensor-Display Fallback Hotspot"
password: "bRh4QzLSf6He"
captive_portal:
i2c:
sda: D2
scl: D1
scan: True
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
reset_pin: D0
address: 0x3C
id: my_display
lambda: |-
it.printf(0, 0, id(my_font), "Distance: %.2f m", id(ultrasonic_sensor).state);
it.printf(0, 14, id(my_font), "SR501: %s", id(sr501_sensor).state ? "Motion detected" : "No motion");
font:
- file: "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"
id: my_font
size: 14
binary_sensor:
- platform: gpio
pin: D6
name: "SR501 Sensor"
id: sr501_sensor
device_class: motion
sensor:
- platform: ultrasonic
trigger_pin: D3
echo_pin: D4
name: "Ultrasonic Sensor"
id: ultrasonic_sensor
update_interval: 1s
interval:
- interval: 1s
then:
- component.update: my_display
应用场景
检测人与电脑屏幕的距离