The ButtonBoard PCB is my attempt to kill several birds with one stone. On the one hand, I’ve always been looking for a universal and easy-to-program remote control for the often very individual control options in my smart home. On the other hand, I wanted to have a simple way of equipping my projects (for example the pxlBlck project) with a physical operating option.
Currently, the various pxlBlck platforms can only be controlled via the serial interface or an existing WiFi connection.
Unfortunately, this means that it is difficult to give away these projects (for example) as present. At least not to people who are not interested in Arduino, electronics and co. Or at least can / want to deal with them when it is needed to adjust the different settings.
I want to solve this disadvantage with the ButtonBoard. 🙂
For this purpose, twelve simple buttons and four side buttons are installed on the larger part of the front of the ButtonBoard. These are read out via a PCF8575 I2C port expander. In order for this to work in this combination, each button is also equipped with an external pull-up resistor.
Here it would of course have been more elegant to use a port expander with an integrated / switchable pull-up or pull-down resistor. Due to the current shortage of chips and because I already had the PCF8575 at home, I didn’t want to start any new experiments here.
In addition to the buttons, two WS2812 2020 LEDs are installed next to each button. Thanks to this the buttons can also be illuminated indirectly or key presses can be visualized.
The other components are on the front of the PCB
On the back of the button board, an ESP32-Wrover-B is installed in the larger part of the PCB.
This can be programmed with the Arduino IDE and offers not only a WiFi interface but also a Bluetooth interface.
For example, you can also install the ESPEasy-framework on the ESP32 and thus have a very powerful “Smart Home” or IOT tool without much programming effort.
In addition to the ESP32, there are also three QWIIC ports that can be used to connect additional QWIIC or I2C compatible sensors / actuators.
In addition, a micro SD card slot can be installed there in order to be able to save larger amounts of data if necessary.
The brown button cell holder is used as a holder for the backup battery of the DS3232M Real Time Clock.
In addition to the use cases mentioned, it could also be used as a (very simple) Bluetooth keyboard or macro pad. For example, you could build a remote camera shutter for your smartphone (or in combination with a suitable app to control other things).
So that the ButtonBoard can also be used on the move – i.e. without power supply via the USB-C connection – I have installed a compact LiPo / LiIon management on the small part of the rear of the PCB. This offers a simple charge controller for the connected LiPo / LiIon battery and also protects it from exceeding or falling below the permitted battery voltage.
This part of the PCB can also be separated from the “main” part of the PCB. In this way, the keypad can also be installed independently of the installation location of the USB-C connection.
Overall, the following components are installed on the ButtonBoard_V1.2:
- ESP32 Wrover-B
- DS3232M RTC
- USB-C connection including programming option for the built-in ESP32
- Micro SD card slot
- Connection option for an LDR for measuring brightness
- Voltage divider for measuring the battery or supply voltage
- ADXL345 accelerometer
- 3x QWIIC-I2C expansion port
- LiPo / LiIon charging circuit based on the MCP73831, FS8205 and DW01-P
- 12x buttons on the top of the PCB connected via a PCF8575
- 4x side buttons also connected via the PCF8575
- 24x WS2812 2x2mm LEDs next to the buttons
- Circuit board parts can be separated and installed separately
I had the circuit board manufactured by the circuit board manufacturer PCBWay.com, who made it available to me free of charge. At this point, thank you again for the great service and cooperation. 🙂
In the following you can see a few pictures of the fully assembled circuit board and (almost) all possible components. Unfortunately, due to the current shortage of chips, some sensors are very expensive or poorly available, which is why I did not install all of them.
I know the following hints are always a bit annoying and seem unnecessary. But unfortunately, many people who knew it "better" from carelessness lost their eyes, fingers or other things or hurt themselves. In comparison, a loss of data is almost not worth mentioning, but even these can be really annoying. Therefore, please take five minutes to read the safety instructions. Even the coolest project is worth no injury or other annoyance. https://www.nerdiy.de/en/sicherheitshinweise/
The links to online shops listed here are so-called affiliate links. If you click on such an affiliate link and shop via this link, Nerdiy.de receives a commission from the online shop or provider concerned. The price doesn't change for you. If you do your purchases via these links, you will support Nerdiy.de in being able to offer further useful projects in the future. 🙂
For the construction you have to master SMD soldering tasks. The following articles provide tips on how to do this.
- Electronics – My friend the soldering iron
- Electronics – Solder THT components by hand
- Electronics – Soldering SMD components by hand
PCB manufacturing: You can find all the information you need to manufacture PCBs here:
The Assembly process
In previous projects I inserted individual pictures at this point that showed which components had to be soldered where on the PCB.
An even better way to get an overview of which components belong where on the PCB can be seen in the following paragraph. Thanks to the work of the Open Scope Project, you can generate very helpful HTML files. With these you can see directly which components have to be installed where on the PCB.
You can get to the overview for the ButtonBoard-PCB here: buttonBoard_v1.2_bom
The current file can also be found in the GIT repository under the following link:
(Please note that you have to download the HTML file in order to display it. This is not possible directly from the GIT repository.)
The first version of the firmware for controlling the sensors and reading out the buttons on the ButtonBoard PCB is still in development. You can download the current status from the GIT repository. You can find the firmware at the following location.
I hope everything worked as described. If not or you have any other questions or suggestions, please let me know in the comments. Also, ideas for new projects are always welcome. 🙂
P.S. Many of these projects - especially the hardware projects - cost a lot of time and money. Of course I do this because I enjoy it, but if you appreciate it that I share these information with you, I would be happy about a small donation to the coffee box. 🙂