The latest project I’ve worked on for my sister is the Bowie Box. This is a figure of David Bowie in a British phone box that is inspired by a photo on one of his albums. My job in this was to make the phone box door open and close under remote control. The figure is attached to the door in such a way that this causes him to peer out of the box and look to one side. Also, there is light that comes on when this happens.
In principle, this is very simple and accomplished with a servo, something I’ve done multiple times already. The catch in this case is that because there is a plan to send this up in the air on something like a weather balloon (the details are very sketchy at this point) it needs to be battery operated, which means for the first time I’ve had to worry about power consumption.
After looking at various options for processor and remote control, I settled on using an ESP32 variant for the processor and a simple garage door type RF remote. The ESP32’s are very cheap, quite powerful and widely used for IoT type things. The ESP32 I’ve not really used before and ended up considering because the evaluation controller for the servo I chose used it. One of the neat things was the evaluation board used a web interface, which I realized provided a neat solution to one of the issues I have had with many of these projects: allowing the user to re-calibrate or set up various parameters. For example, in this case, it is desirable to allow my sister to set the speed at which the servo operates and possible reset the open and closed positions. In principle, the ESP32 could be used for remote control as well, but when its radios are on it takes a fair bit of power on the order of 100ma vs 5ma for a garage door type receiver. The remaining challenge was to find a functional ESP32 board that did not have extraneous things on it that consumed power (NeoPixels, serial converters) or have issues with spurious resets.
So the way the thing ended up working is that the ESP32 normally sleeps, a state in which it uses almost no power. The remote control wakes up the ESP32. The ESP32 enables power to the boost converter which powers the servo and enables power to the NeoPixel LEDs for the light. It does its thing, powers off the servo and LEDs and goes back to sleep. Power for the whole thing is supplied by a LiPo battery via a charger/regulator board.
Because of the power consumed when the ESP32’s radios are on, the web interface is normally disabled. It can be enabled by moving a jumper. This also avoids the security issues that would occur if the web interface was always enabled.