The LEGO Grand Piano 21323 is a great model, full of clever details and impressive engineering.
Gianni had already done a excellent job before, I just continued to improve and reduce the size of the whole module, with some minor adjustments.
Normally we use the following connections, but the number of ESP’s GPIO is limited, if we have 25 keys need to drive, we need 25 GPIOs to read the analog then.
Gianni used the matrix method to make the number of GPIOs needed lesser, only need 15 GPIOs. And only one sensor is being powered at the same time, which will save more battery power.
- 15 for sensors
- 1 for DAC (Digital To Analog Converter)
- 1 for amplifier enable (because some noise here when we set I2S)
We need at least 17 GPIO, but
ESP8266 only 8 are available. Although we don’t need to use the BLE for now (of course you can also make it as a Bluetooth speaker!).
We could also use the very popular MCU
RP2040 but it has more peripheral than the
ESP32-PICO-D4 and I’m not familiar enough with it.
You can also use sensor (QRE1113) + analogue switch (TS3V330) + matrix scanning IC (SX1509, has a powerful keypad engine and use I2C communication), however, this requires long periods of power supply to all sensors.