An E-Ink Status Display - First Steps
I’ve been looking at the excellent TRMNL TRMNL device and have been very impressed by the simple ecosystem they have created and the openness of the software. My particular itch was to create a display showing information about elements of our home. Things like energy usage/generation, car charge levels, weather forecasts etc. It looks like this would all be possible with TRMNL and I might need to write a simple plugin for the homeassistant data I wanted to consume. However, the waiting list for a device had grown significantly so I had to look at alternates.
TRMNL do allow you to use the software stack and servers they run for a small one-time fee, but I decided to roll my own. BTW - TRMNL are almost certainly right that buying hardware from them will be cheaper than rolling your own.
I ordered a Waveshare 7.5” e-ink display and found a firebeetle2 in my box of bits previously used for hydroponic monitoring.
Getting the waveshare display working with the firebeetle 2 has been a challenge.
The core issues I’ve had were actually in the GPIO pin mapping to the firebeetle itself.
The waveshare display comes with a HAT that makes it possible to wire up to an ESP32 style device (like the firebeetle) and a Raspberry PI block that you can push onto the pins of a PI directly. After several hours of messing with the firebeetle I’d become convinced that I had a bad display as I couldn’t get anything out of it. In desperation, I plugged it into an old PI W and installed a python test bench and found the display was fine.
After digging, I found the following page from the firebeetle manufacturer https://wiki.dfrobot.com/FireBeetle_Board_ESP32_E_SKU_DFR0654 and this shows that the pin->GPIO mappings had previously been using are plain wrong. For me, the following config is working for my V2 waveshare display
font:
- file: "fonts/Acumin-Pro-Medium.ttf"
id: tm20
size: 20
spi:
id: spiBus0
clk_pin: GPIO13
mosi_pin: GPIO14 # DIN
display:
- platform: waveshare_epaper
id: displayComponent
model: 7.50inv2
#pins
busy_pin:
number: GPIO25
inverted: true
reset_pin: GPIO26
cs_pin: GPIO15
dc_pin: GPIO4
spi_id: spiBus0
update_interval: 60s
reset_duration: 2ms
# rotation: 270
lambda: |-
it.print(100, 100, id(tm20),"Hello World");
Make sure you install a font in the esphome directory in your homeassistant server.