ESPHome-TRMNL 7.5"
Files
Creality Cloud GitHub ☕︎ Buy the author a cup of tea 🡥
Description
This is an e-ink screen running esphome firmware to display information from your inker server, and controlled by Home Assistant.
.png)
- INKER - create screens without a single line of code
-
Home Assistant Integration
- MQTT Connection: Instant data exchange with your server.
- Energy efficiency and logic: The screen "understands" when you are not at home or in the room and pauses updates to save battery life.
- The Power of ESPHome: Thanks to the (ESPHome) firmware, the device supports connecting a huge number of additional sensors.
-
Case:
- Compact and stylish: Minimalist case (175.6 x 116.6 x 11.25 mm) with narrow bezels, where all attention is focused on the screen.
- Ergonomics: Convenient buttons are located in plain sight — you no longer have to grope for them on the back panel.
- Three placement options: stand (desktop), hanger (wall-mounted), magnets (wall-mounted).
- Easy assembly: The case is assembled with reliable latches — no unnecessary screws and complex mounting.
Components
| Component | Link | Pcs | Note |
|---|---|---|---|
ePaper display 7.5" ![]() |
Aliexpress | 1 | This is a 3-color B/W/R display, but you can only use B/W due to lack of RAM. supported displays Maximum screen dimensions 171.20 x 112.20 x 1.50 mm |
USB C plug (male) ![]() |
Aliexpress | 1 | |
USB C socket (female) ![]() |
Aliexpress | 1 | |
Slide switch TLZWLA SS12F15VG4 ![]() |
Aliexpress | 1 | |
Tactile button 6X6X10 ![]() |
Aliexpress | 1 | |
Waveshare E-Paper ESP32 Driver Board (V3) ![]() |
Aliexpress | 1 | |
| Li-ion battery | — | 1 | Maximum thickness 7.4 mm. Updating once an hour, a 1400 mAh (5.18 Wh) battery lasts for about a month of operation |
TP4056 charging module ![]() |
Aliexpress | 1 | |
| 100 kOhm resistor | 2 | ||
Neodymium magnet 8x3mm ![]() |
— | 5 | 5 magnets securely hold the 150g display on a metal door |
| T-7000/B-7000 glue | — | 1 |
Circuit Diagram
Assembly
- Set switch #1 on the ESP32 to position A.
-
Set switch #2 on the ESP32 to the "ON" position. This switch controls the power to the UART module via USB. When the module is not in use, you can manually turn it off to save power (if switch 2 is in the "OFF" position, downloading the program is impossible).
-
Remove the red PWR LED from the Waveshare E-Paper ESP32 Driver Board to save energy.
-
To make the ESP32 driver board thinner, desolder the header pins on its bottom side. (Tip: first pry up and remove the plastic between the pins using a screwdriver).
-
Apply T-7000/B-7000 glue around the magnets so that the case does not slip on smooth metal surfaces.
Firmware Installation
-
Download the configuration file esphome-trmnl.yaml and change the values to your own.
| Variable | Value | Description |
|---|---|---|
fw_version |
1.0.1 esphome-trmnl |
Firmware version |
server_url |
http://192.168.1.123:80 |
Inker server URL |
mqtt_broker_ip |
192.168.1.100 |
Mosquitto broker IP address |
manual_ip_static_ip |
192.168.1.222 |
Display static IP address |
manual_ip_gateway |
192.168.1.1 |
Local network gateway |
manual_ip_subnet |
255.255.255.0 |
Local network subnet |
name |
trmnl |
System name of the device (lowercase letters, numbers, hyphens, up to 24 chars) |
friendly_name |
TRMNL |
Name in the Home Assistant UI |
model |
7.50in-bV3 |
E-ink display model |
wifi_output_power |
8.5dB |
Wi-Fi transmit power (from 8.5 to 20.5 dB) |
img_type |
BINARY |
Internal image encoding method |
img_format |
PNG |
Format in which the image is encoded. |
img_url_setup_logo |
http://raw.github.../setup-logo.bmp |
Placeholder image |
deep_sleep_delay |
1000ms |
Delay before going to sleep |
sleep_time |
3600 |
Default sleep time (sec.) |
error_sleep_duration |
1200 |
Sleep time on error (sec.) |
reset_duration |
200 ms |
Display reset operation duration |
wifi_connect_delay |
15s |
Wi-Fi connection timeout |
mqtt_connect_delay |
500ms |
Delay after successful MQTT connection |
status_led |
GPIO2 |
Status LED pin (commented out) |
button |
GPIO32 |
Control button pin |
adc_pin |
GPIO34 |
ADC pin (for battery monitoring) |
deep_sleep_pin |
GPIO32 |
Deep sleep wake-up pin |
clk_pin |
GPIO13 |
SPI Clock pin |
mosi_pin |
GPIO14 |
SPI MOSI pin |
cs_pin |
GPIO15 |
SPI Chip Select pin |
dc_pin |
GPIO27 |
Data/Command pin |
busy_pin |
GPIO25 |
Busy pin (To prevent irreversible damage to the display, you must invert the BUSY pin on gdew0154m09, Waveshare 7.30in-f, and Waveshare 7.50in V2 models (and probably V3 and other new models). Set the busy pin to inverted: true in the settings) |
reset_pin |
GPIO26 |
Display hardware reset pin |
- Add to ESPHome's secrets.yaml
mqtt_password: #пароль для подключения к MQTT
wifi_ssid: #имя вашей wifi сети
wifi_password #пароль вашей wifi сети
- Upload the edited yaml to ESPHome and flash the firmware to the ESP32
Home Assistant Configuration
-
Install Inker
-
In the "Configuration" tab of the Mosquitto broker, enter the "name" and "mqtt_password" that you used in the firmware.
-
Turn on the screen, and it should appear in the MQTT integration.
Battery Voltage Sensor Calibration (ADC Calibration)
-
Record the readings at battery voltages of 4.20, 4.19, 3.75, 3.50, and 3.00 V.
-
Enter the data into the filter. To the left of (->) is the battery voltage, to the right is the voltage measured by the multimeter.
sensor:
- platform: adc
...
id: battery_voltage
...
- calibrate_linear:
- 3.00 -> 3.12
- 3.50 -> 3.51
- 3.75 -> 3.79
- 4.19 -> 4.19
- 4.20 -> 4.21
on_value:
- text_sensor.template.publish:
id: battery_voltage_text
state: !lambda 'return str_sprintf("%.2f", x).c_str();'
Help! Something isn't working.
-
Incorrect display: if the image quality is low or the device does not work, try toggling switch #1 on the ESP32.
-
Nothing works -> open web.esphome.io and connect the panel via USB to check the logs.
-
Esphome hasn't updated but stopped compiling working firmware: delete the folders C:\Users\name_user.platformio and .esphome\build


















