ESPHome固件连接传感器并实时显示状态


硬件和软件准备

开发板OLED 屏红外感应传感器超声波距离传感器固件
NodeMCU ESP82660.96 寸 I2C IIC 通信 128*64 OLED 显示屏HC-SR501 红外感应传感器HC-SR04 超声波距离传感器ESPHome

连接传感器和 OLED 屏

HC-SR501 红外感应传感器

引脚说明
VCC5V 电源,实际测试,也可以接 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 超声波距离传感器

引脚说明
VCC5V 电源,实际测试,也可以接 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 屏幕

引脚说明
VCC3.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

应用场景

检测人与电脑屏幕的距离


发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注