'm working on an indoor air quality (IAQ) sensor and want to add a waveshare 2.13" e-ink display (product page shows Snoopy as an example), but I can’t get anything to display.
Display buy page
Drive/ board buy page
This is my current config. Display code is at the bottom. Currently I am using model
2.13in-ttgo-dke in the code as anything else results in;
[E][waveshare_epaper:119]: Timeout while displaying image!
in the logs
I did look up the display data sheet and check continuity against all the pins on the driver board. The only pin I couldn’t get continuity for was the 3.3V pin which I suspect is my problem?
esphome:
name: iaq-lounge
friendly_name: IAQ LOUNGE
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
baud_rate: 0
# Enable Home Assistant API
api:
encryption:
key: "xxx"
ota:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "IAQ LOUNGE"
password: "xxx"
captive_portal:
i2c:
sda: 21
scl: 22
scan: True
id: bus_a
uart:
#- id: uart_1
#tx_pin: 15
#rx_pin: 13
#baud_rate: 9600
- id: uart_2
tx_pin: 17
rx_pin: 16
baud_rate: 256000
parity: NONE
stop_bits: 1
# Pins for Waveshare ePaper ESP Board
spi:
clk_pin: GPIO13
mosi_pin: GPIO14
ld2410:
uart_id: uart_2
timeout: 150s
max_move_distance : 6m
max_still_distance: 0.75m
g0_move_threshold: 10
g0_still_threshold: 20
g1_move_threshold: 10
g1_still_threshold: 20
g2_move_threshold: 20
g2_still_threshold: 21
g3_move_threshold: 30
g3_still_threshold: 31
g4_move_threshold: 40
g4_still_threshold: 41
g5_move_threshold: 50
g5_still_threshold: 51
g6_move_threshold: 60
g6_still_threshold: 61
g7_move_threshold: 70
g7_still_threshold: 71
g8_move_threshold: 80
g8_still_threshold: 81
sensor:
- platform: scd30
co2:
name: "SCD30 CO2"
id: scd30_co2
accuracy_decimals: 1
temperature:
name: "SCD30 Temperature"
id: scd30_temperature
accuracy_decimals: 1
humidity:
name: "SCD30 Humidity"
id: scd30_humidity
accuracy_decimals: 1
address: 0x61
i2c_id: bus_a
update_interval: 120s
- platform: bme280
temperature:
name: "BME280 Temperature"
oversampling: 16x
pressure:
name: "BME280 Pressure"
humidity:
name: "BME280 Humidity"
address: 0x76
update_interval: 120s
- platform: tsl2561
name: "TSL2561 Ambient Light"
address: 0x39
update_interval: 30s
- platform: ld2410
moving_distance:
name : Moving Distance
still_distance:
name: Still Distance
moving_energy:
name: Move Energy
still_energy:
name: Still Energy
detection_distance:
name: Detection Distance
#- platform: pmsx003
# type: PMSX003
# uart_id: uart_1
# pm_1_0:
# name: "Particulate Matter <1.0µm Concentration"
# pm_2_5:
# name: "Particulate Matter <2.5µm Concentration"
# pm_10_0:
# name: "Particulate Matter <10.0µm Concentration"
# update_interval: 120s
display:
- platform: waveshare_epaper
cs_pin: GPIO15
dc_pin: GPIO27
busy_pin: GPIO25
reset_pin: GPIO26
model: 2.13in-ttgo-dke
update_interval: 30s
full_update_every: 2
lambda: |-
it.print(0, 0, id(roboto), "E-Paper is awesome!");
it.printf(10, 20, id(roboto), "CO2: %.2f ppm", id(scd30_co2).state);
it.printf(10, 40, id(roboto), "Temp: %.2f °C", id(scd30_temperature).state);
it.printf(10, 60, id(roboto), "Humidity: %.2f %%", id(scd30_humidity).state);
font:
- file: "gfonts://Roboto"
id: roboto
size: 12
Logs;
INFO Successfully compiled program.
INFO Resolving IP address of iaq-lounge.local
INFO -> 192.168.x.x
INFO Uploading /data/iaq-lounge/.pioenvs/iaq-lounge/firmware.bin (969376 bytes)
Uploading: [============================================================] 100% Done...
INFO Waiting for result...
INFO OTA successful
INFO Successfully uploaded program.
INFO Starting log output from iaq-lounge.local using esphome API
INFO Successfully connected to iaq-lounge.local
[18:13:01][I][app:102]: ESPHome version 2023.4.4 compiled on May 18 2023, 18:12:22
[18:13:01][C][wifi:505]: WiFi:
[18:13:01][C][wifi:363]: Local MAC: x
[18:13:01][C][wifi:364]: SSID: [redacted]
[18:13:01][C][wifi:365]: IP Address: x
[18:13:01][C][wifi:367]: BSSID: [redacted]
[18:13:01][C][wifi:368]: Hostname: 'iaq-lounge'
[18:13:01][C][wifi:370]: Signal strength: -62 dB ▂▄▆█
[18:13:01][C][wifi:374]: Channel: 1
[18:13:01][C][wifi:375]: Subnet: 255.255.255.0
[18:13:01][C][wifi:376]: Gateway: 192.168.0.1
[18:13:01][C][wifi:377]: DNS1: 192.168.0.6
[18:13:01][C][wifi:378]: DNS2: 0.0.0.0
[18:13:01][C][logger:294]: Logger:
[18:13:01][C][logger:295]: Level: DEBUG
[18:13:01][C][logger:296]: Log Baud Rate: 0
[18:13:01][C][logger:297]: Hardware UART: UART0
[18:13:01][C][i2c.arduino:053]: I2C Bus:
[18:13:01][C][i2c.arduino:054]: SDA Pin: GPIO21
[18:13:01][C][i2c.arduino:055]: SCL Pin: GPIO22
[18:13:01][C][i2c.arduino:056]: Frequency: 50000 Hz
[18:13:01][C][i2c.arduino:059]: Recovery: bus successfully recovered
[18:13:01][I][i2c.arduino:069]: Results from i2c bus scan:
[18:13:01][I][i2c.arduino:075]: Found i2c device at address 0x39
[18:13:01][I][i2c.arduino:075]: Found i2c device at address 0x61
[18:13:01][I][i2c.arduino:075]: Found i2c device at address 0x76
[18:13:01][C][spi:101]: SPI bus:
[18:13:01][C][spi:102]: CLK Pin: GPIO13
[18:13:01][C][spi:104]: MOSI Pin: GPIO14
[18:13:01][C][spi:106]: Using HW SPI: YES
[18:13:01][C][uart.arduino_esp32:108]: UART Bus 1:
[18:13:01][C][uart.arduino_esp32:109]: TX Pin: GPIO17
[18:13:01][C][uart.arduino_esp32:110]: RX Pin: GPIO16
[18:13:01][C][uart.arduino_esp32:112]: RX Buffer Size: 256
[18:13:01][C][uart.arduino_esp32:114]: Baud Rate: 256000 baud
[18:13:01][C][uart.arduino_esp32:115]: Data Bits: 8
[18:13:01][C][uart.arduino_esp32:116]: Parity: NONE
[18:13:01][C][uart.arduino_esp32:117]: Stop bits: 1
[18:13:01][C][ld2410:012]: LD2410:
[18:13:01][C][ld2410:019]: Moving Distance 'Moving Distance'
[18:13:01][C][ld2410:019]: Device Class: 'distance'
[18:13:01][C][ld2410:019]: State Class: ''
[18:13:01][C][ld2410:019]: Unit of Measurement: 'cm'
[18:13:01][C][ld2410:019]: Accuracy Decimals: 0
[18:13:01][C][ld2410:020]: Still Distance 'Still Distance'
[18:13:01][C][ld2410:020]: Device Class: 'distance'
[18:13:01][C][ld2410:020]: State Class: ''
[18:13:01][C][ld2410:020]: Unit of Measurement: 'cm'
[18:13:01][C][ld2410:020]: Accuracy Decimals: 0
[18:13:01][C][ld2410:021]: Moving Energy 'Move Energy'
[18:13:01][C][ld2410:021]: Device Class: 'energy'
[18:13:01][C][ld2410:021]: State Class: ''
[18:13:01][C][ld2410:021]: Unit of Measurement: '%'
[18:13:01][C][ld2410:021]: Accuracy Decimals: 0
[18:13:01][C][ld2410:022]: Still Energy 'Still Energy'
[18:13:01][C][ld2410:022]: Device Class: 'energy'
[18:13:01][C][ld2410:022]: State Class: ''
[18:13:01][C][ld2410:022]: Unit of Measurement: '%'
[18:13:01][C][ld2410:022]: Accuracy Decimals: 0
[18:13:01][C][ld2410:023]: Detection Distance 'Detection Distance'
[18:13:01][C][ld2410:023]: Device Class: 'distance'
[18:13:01][C][ld2410:023]: State Class: ''
[18:13:01][C][ld2410:023]: Unit of Measurement: 'cm'
[18:13:01][C][ld2410:023]: Accuracy Decimals: 0
[18:13:02][C][ld2410:029]: Firmware Version : 0.0.0000
[18:13:02][C][scd30:115]: scd30:
[18:13:02][C][scd30:116]: Address: 0x61
[18:13:02][C][scd30:134]: Altitude compensation: OFF
[18:13:02][C][scd30:138]: Automatic self calibration: ON
[18:13:02][C][scd30:139]: Ambient pressure compensation: 0mBar
[18:13:02][C][scd30:140]: Temperature offset: 0.00 °C
[18:13:02][C][scd30:141]: Update interval: 120s
[18:13:02][C][scd30:142]: CO2 'SCD30 CO2'
[18:13:02][C][scd30:142]: Device Class: 'carbon_dioxide'
[18:13:02][C][scd30:142]: State Class: 'measurement'
[18:13:02][C][scd30:142]: Unit of Measurement: 'ppm'
[18:13:02][C][scd30:142]: Accuracy Decimals: 1
[18:13:02][C][scd30:142]: Icon: 'mdi:molecule-co2'
[18:13:02][C][scd30:143]: Temperature 'SCD30 Temperature'
[18:13:02][C][scd30:143]: Device Class: 'temperature'
[18:13:02][C][scd30:143]: State Class: 'measurement'
[18:13:02][C][scd30:143]: Unit of Measurement: '°C'
[18:13:02][C][scd30:143]: Accuracy Decimals: 1
[18:13:02][C][scd30:144]: Humidity 'SCD30 Humidity'
[18:13:02][C][scd30:144]: Device Class: 'humidity'
[18:13:02][C][scd30:144]: State Class: 'measurement'
[18:13:02][C][scd30:144]: Unit of Measurement: '%'
[18:13:02][C][scd30:144]: Accuracy Decimals: 1
[18:13:02][C][bme280.sensor:177]: BME280:
[18:13:02][C][bme280.sensor:178]: Address: 0x76
[18:13:02][C][bme280.sensor:190]: IIR Filter: OFF
[18:13:02][C][bme280.sensor:191]: Update Interval: 120.0s
[18:13:02][C][bme280.sensor:193]: Temperature 'BME280 Temperature'
[18:13:02][C][bme280.sensor:193]: Device Class: 'temperature'
[18:13:02][C][bme280.sensor:193]: State Class: 'measurement'
[18:13:02][C][bme280.sensor:193]: Unit of Measurement: '°C'
[18:13:02][C][bme280.sensor:193]: Accuracy Decimals: 1
[18:13:02][C][bme280.sensor:194]: Oversampling: 16x
[18:13:02][C][bme280.sensor:195]: Pressure 'BME280 Pressure'
[18:13:02][C][bme280.sensor:195]: Device Class: 'pressure'
[18:13:02][C][bme280.sensor:195]: State Class: 'measurement'
[18:13:02][C][bme280.sensor:195]: Unit of Measurement: 'hPa'
[18:13:02][C][bme280.sensor:195]: Accuracy Decimals: 1
[18:13:02][C][bme280.sensor:196]: Oversampling: 16x
[18:13:02][C][bme280.sensor:197]: Humidity 'BME280 Humidity'
[18:13:02][C][bme280.sensor:197]: Device Class: 'humidity'
[18:13:02][C][bme280.sensor:197]: State Class: 'measurement'
[18:13:02][C][bme280.sensor:197]: Unit of Measurement: '%'
[18:13:02][C][bme280.sensor:197]: Accuracy Decimals: 1
[18:13:02][C][bme280.sensor:198]: Oversampling: 16x
[18:13:02][C][tsl2561:040]: TSL2561 'TSL2561 Ambient Light'
[18:13:02][C][tsl2561:040]: Device Class: 'illuminance'
[18:13:02][C][tsl2561:040]: State Class: 'measurement'
[18:13:02][C][tsl2561:040]: Unit of Measurement: 'lx'
[18:13:02][C][tsl2561:040]: Accuracy Decimals: 1
[18:13:02][C][tsl2561:041]: Address: 0x39
[18:13:02][C][tsl2561:048]: Gain: 1x
[18:13:02][C][tsl2561:049]: Integration Time: 402.0 ms
[18:13:02][C][tsl2561:051]: Update Interval: 30.0s
[18:13:02][C][waveshare_epaper:1701]: Waveshare E-Paper
[18:13:02][C][waveshare_epaper:1701]: Rotations: 0 °
[18:13:02][C][waveshare_epaper:1701]: Dimensions: 128px x 250px
[18:13:02][C][waveshare_epaper:1702]: Model: 2.13inDKE
[18:13:02][C][waveshare_epaper:1703]: Reset Pin: GPIO26
[18:13:02][C][waveshare_epaper:1704]: DC Pin: GPIO27
[18:13:02][C][waveshare_epaper:1705]: Busy Pin: GPIO25
[18:13:02][C][waveshare_epaper:1706]: Update Interval: 30.0s
[18:13:02][C][captive_portal:088]: Captive Portal:
[18:13:02][C][mdns:108]: mDNS:
[18:13:02][C][mdns:109]: Hostname: iaq-lounge
[18:13:02][C][ota:093]: Over-The-Air Updates:
[18:13:02][C][ota:094]: Address: iaq-lounge.local:3232
[18:13:02][C][api:138]: API Server:
[18:13:02][C][api:139]: Address: iaq-lounge.local:6053
[18:13:02][C][api:141]: Using noise encryption: YES
[18:13:02][I][waveshare_epaper:1602]: Performing partial e-paper update.
[18:13:03][I][waveshare_epaper:1694]: Completed e-paper update.
[18:13:08][D][tsl2561:126]: Got illuminance=91.9lx
[18:13:08][D][sensor:110]: 'TSL2561 Ambient Light': Sending state 91.91389 lx with 1 decimals of accuracy
Any help is hugely appreciated. This is also my first Esphome project so if you see anything else that could be done better, please let me know