Not a step-by-step start to finish guide to recreate an exact replica. Just a bunch of interesting chunks. Re-usable as 'inspiration' for other projects that contain similar parts.
LCD display is a generic 4 line 20 character module. It exposes a set
of ~16 digital connections. Because the controller has a limited
I/O count, the LCD module is connected through the I2C bus. The I2C bus
to LCD2004 combination is quite common, and matching controllers can be
In order to correctly drive the LCD display this module is powered by
5V. The I2C bus signals are correctly interpreted as the 3.3V level is
seen as logic high.
the controller has a limited I/O count, the push buttons are connected
through the I2C bus. The PCF8574 digital I/O expander has built-in
pull-up resistors and because only 8 buttons are required these are
connected one-on-one on each of the available input pins. In order to be consistent, and allow common I2C bus wiring, the I/O extender is powered by 5V.
Skimping on a de-bouncing filter is possible, the controller can do this in software.