We've all been there - You walk into a room and want to adjust some of your smart devices? Pull out you phone, turn on Wi-Fi, find the Home Assistant app and wait for it to load. Search for the right tab and finally adjust your devices, one by one.
Waaaaay too much work...
This is where Home Buttons comes in - you can map your favourite presets to six of the buttons, each with its own customizable label on the e-ink display. To adjust your smart devices, you can trigger one of the presets with a simple click of a button.
Home Buttons is designed to work seamlessly with Home Assistant where you define what happens when each of the six buttons is pressed. Labels can also be customized right from the Home Assistant. The device is battery powered and connects directly to WiFi.
There is also an accurate temperature and humidity sensor. This can be accessed on the e-ink by long-pressing any button. The readings are of course also periodically sent to Home Assistant.
The software supports double, tripple and quadruple presses incase six presets just aren't enough.Home Buttons is designed to work with a standard 18650 Li-Ion battery cell. This provides more than a year of battery life and once the battery does run out, it can be recharged via the USB-C port. If desired, Buttons can also work without the battery using the USB-C port or a dedicated 5V input connector. To take advantage of the external power, there is a mode in which the device remains connected to WiFi. This allows for basically instant response instead of about a one-second delay when operating on battery.
An important consideration was ease of use. IoT devices are cool and fun, but the setup procedure is often painfully complicated. To make it easy, Home Buttons first creates a WiFi access point to which a user can connect by a QR code or instructions on the display. After inputing the WiFi credentials, Buttons connects to the WiFi. If any other steps are required, instructions are clearly displayed on the e-ink. To make Home Assistant integration easy, Home Buttons uses MQTT discovery which basically makes Buttons automatically appear on the Devices page in Home assistant - no setup required!
Home Buttons are available for purchase and in stock on Tindie:
https://www.tindie.com/products/plab/home-buttons/
Shipping worldwide from Slovenia.
Under the hoodDisplay and buttons
Displaying a short label for each of the buttons was the goal of Home Buttons. A 2.9" E-paper display was selected due to being a very nice and readable size, consuming zero power while displaying an image. It also looks amazing and unobtrusive, being lit by the environment, not emitting light itself.
Number of buttons was selected to be six, a compromise between providing enough shortcuts and device not being too crowded. ALPS SKRB pushbuttons were a good choice, providing satisfying feedback, but also being very low profile.
Each button has a white LED beside it. It illuminates when a the button is pressed. Reverse-mount LEDs are used, so they can be machine assembled on the side of the PCB where all of the electronics are.
Energy limitations and power supply circuitry
Obviously, Home Buttons should be battery powered and connected to Wi-Fi. But Wi-Fi connectivity comes with relatively large power requirements, which was a major consideration during the design phase.
- A high-capacity battery is needed. 18650 size is an easy choice, providing lots of energy while being common.
- E-paper display draws basically no power when not updating.
- ESP32-S2 SoC is a good choice, being inexpensive and offering excellent sleep capabilities.
- A low power temperature and humidity sensor is used.
- Voltage regulation is carefully designed to maximize battery life, while reducing self-consumption as much as possible.
This way, Home Buttons last more than a year of frequent usage and temperature / humidity reporting on a single charge. Should the user want to extend the battery life, temperature reporting interval can be customized. Charging is of course done through a USB Type-C connector.
Supplying an IoT device with a single lithium cell can be surprisingly complicated. Battery voltage can be anywhere between 4.2 V when fully charged, down to around 2.8 V when fully discharged. But the ESP32-S2 needs a stable 3.3 V. It can also pull bursts of more than 300 mA. This is not trivial to put together, especially while having a very low quiescent current necessary for battery operation. And the chip shortage does not help...
After a few iterations, the final version uses a very good LDO regulator, set at 3.1 V, which is still in spec for the ESP32-S2 but enables a deeper discharge of the battery then setting it at 3.3 V. The battery discharging limit is still set at 3.3 V to account for the regulator dropout voltage, which can get quite high when Wi-Fi communication is active. For most LDOs the drop could easily be more than half a volt, making them unusable. Discharging only to 3.3 V is a compromise which leaves some capacity in the battery. But it makes sense, considering the complexity, cost and quiescent current of other options. Texas Instruments makes some really nice buck-boost converters exactly for this, but of course they are not even close to being available.
Charging and battery protection
For safety, lots of protection battery is needed. An integrated protection IC takes care of the general overcharge, overdischarge, overcurrent, etc. There is also a single-mosfet reverse polarity protection, so the battery can be inserted the wrong way without anything scary happening.
Charging is handled by the cheap and reliable TP4056 linear charging IC powered from the USB Type-C connector. It takes around 4 hours to fully charge, but does it really matter if charging is needed less then once a year?
Case production
An injection molded case would be nice, but getting the tooling made comes at a very high cost. For a small production run it makes much more sense to 3D print the cases. All of the cases and back plates for Home Buttons are printed in PETG on two Ender 3 S1 pro printers. To produce the black markings and the logo, a manual filament swap is done during the first layer: first, the white part of the layer is printed, then the filament is swapped for the balck one and the gaps for the markings are filled in. The fillament is swapped once again to white with which the rest of the case is printed. Lots of fine tuning was needed to get the cases to print perfectly.
Documentation and user guides and source
Documentation, specs, features and user guides are available at https://docs.home-buttons.com/
Home Buttons is open source. Design files are available on GitHub: https://github.com/nplan/HomeButtons
Comments