Having a device in your living room that shows weather information is convenient, and building one of those is a great project if you enjoy tinkering with microcontrollers and environmental sensors. It’s also a great way to learn about low-power design, as [x-labz] demonstrated with their e-ink weather station which works for no less than 60 days on a single battery charge. It has a clear display that shows the local temperature and humidity, as well as the weather forecast for the day.
The display is a 4.2″ e-paper module with a resolution of 400 x 300 pixels. It uses just 26 mW of power for a few seconds while it updates its image, and basically zero watts when showing a static picture. It’s driven by a tiny ESP32C3 processor board, which downloads the weather forecast from weatherapi.com every two hours. The indoor climate is measured by an SHT-21 temperature and humidity sensor mounted behind the display, while the outdoor data is gathered by a WiFi-connected sensor installed on [x-labz]’s balcony.
The key to achieving low power usage here is to keep the ESP32 in sleep mode as much as possible. The CPU briefly wakes up once every five minutes to read out the indoor sensor and once every fifteen minutes to gather data from outside, using the relatively power-hungry WiFi module.
To further reduce power consumption, the CPU core is driven at the lowest possible clock speed at all times: 10 MHz when reading the indoor sensor, and 80 MHz when using the WiFi connection. All of this helps ensure that just one 600 mAh lithium battery can keep everything running for those 60 days.
E-ink displays are perfect for text and simple graphics that don’t change too often, which is why they’re very popular in weather stations. With a bit of tweaking though, LCDs can also be optimized for low power.
I need other challenge. Linux, minix or fuzix month terminal with cc and bash, ssh
screen, no sound, keyboard. It is possible. Unix can run on machine with 10Mhz
Power is a key
Some people think that using maximum CPU power is better when your project is going into deep-sleep, since it can execute its code while awake faster. You only want to minimize CPU clock speed when your device is staying awake for the entire battery life.