ESPHome lets you easily create LCD menus

Disclosure: This post contains affiliate links. If you click through and make a purchase, I’ll earn a commission, at no additional cost to you. Read my full disclosure here.

Opening up the world of DIY electronics to those that have never touched a line of code in their life is arguably one of the best things ESPHome has done. The ability to easily create LCD menus, which ESPHome added in version 2022.11, will add a new dimension to those looking to interact with their nodes visually.

You will know the type of LCD and menu this component uses if you have ever interactive with a Prusa i3, or any other Mendel-style 3D-printer. These character-based LCDs are very basic and offer something in the range of 8×5 pixels per character. To navigate these types of LCD menus, a rotary encoder with a button or a five-button joystick controller is used.

A Prusa i3 3D-printer's menu, which is displayed in white text on a blue background. The display shows the current speed, nozzle, bed, and fan speed settings.
The screen on a Prusa MK3S+ (source: Prusa)

Why ESPHome’s LCD Menu component matters

You could look at this new component as something of a gimmick or niche feature that only a handful of nerds will make use of. In its current state, that might indeed be so. After all, who wants to control their smart home using a character-based display? There definitely are better options available. However, the LCD Menu component is only one part of the Display Menu component.

A character-based LCD with a rotary encoder and speaker.
A character-based LCD with rotary encoder

The Display Menu documentation says that currently the character-based LCDs are supported using the LCD Menu integration. Considering that, it is fair to assume that the component is far from finished. If you, for example, want to create an information screen with one of Waveshare’s E-Paper displays, you are currently forced to use the Display Rendering Engine. If this process could be made easier using the newer component, I’m sure we would be seeing many more projects.

Which character-based LCDs does ESPHome support?

ESPHome allows you to use HD44780-compatible character-based LCDs. These come in various sizes, though most of them will have around twenty columns and four rows, or sixteen columns and two rows. There are multiple versions of the display, and depending on your project, it could be relevant:

  • HD44780UA00: This version supports English-Japanese, which includes katakana characters, some Greek letters, and mathematical symbols.
  • HD44780UA02: This version supports English-European, which includes Greek, Cyrillic, and Western European characters (with some diacritics).

If you are desperate to start a project but can’t find the HD44780-compatible LCD version you need, there is also the possibility of adding custom characters. Eight custom characters, to be precise. You can easily generate these using, for example, lcdchargen’s Custom Character Generater for HD44780 LCD Modules. You can then simply paste the output into your ESPHome YAML.

Liam Alexander Colman, the author and maintainer of Home Assistant Guides.

About Liam Alexander Colman

Liam Alexander Colman has been using Home Assistant for various projects for quite some time. What started off with a Raspberry Pi quickly became three Raspberry Pis and eventually a full-blown server. I now use Unraid as my operating system, and Home Assistant happily runs in a Docker container. My personal setup includes many Zigbee devices as well as integrations with existing products such as my Android TV box. Read on to find out more on how I got started with Home Assistant.

Leave a comment

Share to...