esp32-weather-epd: a low-power E-Paper weather display powered by an ESP32 microcontroller

This is a weather display powered by a wifi-enabled ESP32 microcontroller and a 7.5in E-Paper (aka E-ink) display. Current and forecasted weather data is obtained from the OpenWeatherMap API. A sensor provides the display with accurate indoor temperature and humidity.

The project draws ~14μA when sleeping and an estimated average of ~83mA during its ~15s wake period. The display can be configured to update as frequently as desired. When the refresh interval is set to 30 minutes, the device will run for >6 months on a single 5000mAh battery. The project displays accurate battery life percentage and can be recharged via a USB-C cable connected to a wall adapter or computer.

There are configuration options for everything from location, time/date formats, units, and language to air quality index scale and hourly outlook graph bounds.

The hourly outlook graph (bottom right) shows a line indicating temperature and shaded bars indicating probability of precipitation (or optionally volume of precipitation).

Here are two examples utilizing various configuration options:

Setup Guide

Hardware

7.5inch (800×480) E-Paper Display

Advantages of E-Paper:

  • Ultra Low Power Consumption - E-Paper (aka E-Ink) displays are ideal for low-power applications that do not require frequent display refreshes. E-Paper displays only draw power when refreshing the display and do not have a backlight. Images will remain on the screen even when power is removed.

Limitations of E-Paper:

  • Colors - E-Paper has traditionally been limited to just black and white, but in recent years 3-color E-Paper screens have started showing up.
  • Refresh Times and Ghosting - E-Paper displays are highly susceptible to ghosting effects if refreshed too quickly. To avoid this, E-Paper displays often take a few seconds to refresh(4s for the unit used in this project) and will alternate between black and white a few times, which can be distracting.

Panel support:

Waveshare and Good Display make equivalent panels. Either variant will work.

This software has limited support for accent colors. E-paper panels with additional colors tend to have longer refresh times, which will reduce battery life.

DESPI-C02 Adapter Board

No level converters, which makes it better for low-power use with 3.3V processors compared to the Waveshare HAT.

Waveshare started shipping revision 2.3 of their e-paper HAT. Some users have reported issues with this HAT (#62).

https://www.e-paper-display.com/products_detail/productId=403.html

https://www.aliexpress.us/item/3256804446769469.html

FireBeetle 2 ESP32-E Microcontroller

Why the ESP32?

  • Onboard WiFi.
  • 520kB of RAM and 4MB of FLASH, enough to store lots of icons and fonts.
  • Low power consumption.
  • Small size, many small development boards available.

Why the FireBeetle 2 ESP32-E

  • Drobot's FireBeetle ESP32 models are optimized for low-power consumption (https://diyi0t.com/reduce-the-esp32-power-consumption/). The Drobot's FireBeetle 2 ESP32-E variant offers USB-C, but older versions of the board with Micro-USB would work fine too.
  • Firebeetle ESP32 models include onboard charging circuitry for a 3.7v lithium-ion(LiPo) battery.
  • FireBeetle ESP32 models include onboard circuitry to monitor battery voltage of a battery connected to its JST-PH2.0 connector.

https://www.dfrobot.com/product-2195.html

BME280 - Pressure, Temperature, and Humidity Sensor

Provides accurate indoor temperature and humidity.

Much faster than the DHT22, which requires a 2-second wait before reading temperature and humidity samples.

3.7V Lipo Battery w/ 2 Pin JST Connector

Size is up to you. I used a 5000mah battery so that the device can operate on a single charge for >6 months.

The battery can be charged by plugging the FireBeetle ESP32 into the wall via the USB-C connector while the battery is plugged into the ESP32's JST connector.

Stand/Frame

You'll want a nice way to show off your project. Here are a few popular choices.

  • DIY Wooden
  • 3D Printable
  • Picture Frame

Wiring

Pin connections are defined in config.cpp.

If you are using the FireBeetle 2 ESP32-E, you can use the connections I used or change them how you would like.

The Waveshare E-Paper Driver HAT has two physical switches that MUST be set correctly for the display to work.

  • Display Config: Set switch to position B.
  • Interface Config: Set switch to position 0.

Cut the low power pad for even longer battery life.

 

Configuration, Compilation, and Upload

PlatformIO for VSCode is used for managing dependencies, code compilation, and uploading to ESP32.

  1. Clone this repository or download and extract the .zip.
  2. Install VSCode.
  3. Follow these instructions to install the PlatformIO extension for VSCode: https://platformio.org/install/ide?install=vscode
  4. Open the project in VSCode.
  5. Configure Options.
  6. Build and Upload Code.

OpenWeatherMap API Key

Sign up here to get an API key; it's free. https://openweathermap.org/api

This project will make calls to 2 different APIs ("One Call" and "Air Pollution").

  • The One Call API 3.0 is only included in the "One Call by Call" subscription. This separate subscription includes 1,000 calls/day for free and allows you to pay only for the number of API calls made to this product.

Here's how to subscribe and avoid any credit card changes: