An ESP32 and 4.2" ePaper Display reads Dark Sky weather API and displays the weather using the Espressif IoT Development Framework
For this project an ESP32 development module and a Waveshare 4.2inch e-Paper module are used. Documentation about this e-Paper module can be found here. As ESP32 development board the DOIT ESP32 DEVKIT V1 can be used used.
To save battery power, the SILABS CP210x USB to UART Bridge and the AMS1117 voltage regulator can be removed from the development board. An external USB to UART converter can be used for programming.
Waveshare e-Paper | DOIT ESP32 DEVKIT V1 |
---|---|
MOSI_PIN | GPIO_NUM_27 |
CLK_PIN | GPIO_NUM_26 |
CS_PIN | GPIO_NUM_25 |
DC_PIN | GPIO_NUM_33 |
RST_PIN | GPIO_NUM_32 |
BUSY_PIN | GPIO_NUM_35 |
VCC | 3V3 |
GND | GND |
Update Button | DOIT ESP32 DEVKIT V1 |
---|---|
Pin A | GPIO_NUM_4 PIN |
Pin B | GND |
Reset Button | DOIT ESP32 DEVKIT V1 |
---|---|
Pin A | RESET PIN |
Pin B | GND |
Connect a LiPo battery to the VCC of the Waveshare e-Paper module.
Please check ESP-IDF docs for getting started instructions.
git clone https://github.com/henri98/esp32-e-paper-weatherdisplay.git
Navigate to the project folder:
cd esp32-e-paper-weatherdisplay
Configure the project:
make menuconfig
The configuration menu will be displayed. Navigate to WiFi Configuration and enter credentials to connect to the WiFi. Navigate to Dark Sky configuration and configure the Latitude, Longitude and the Dark Sky API key. You can get an API key here. With an API key you can make up to 1000 free requests, so enough to keep the weather display up to date.
Build and flash the firmware on the ESP32:
make flash
To monitor the programm use:
make monitor
You can also choose to update the firmware over the air. This requires that a previous version of the firmware has already flashed. The update will be downloaded over HTTP. The update URL can be configured:
make menuconfig
The configuration menu will be displayed. Navigate to WiFi Configuration and enter the URL where the firmware can be found. After compiling the binary file can be found in the build directory: e-paper-weatherdisplay.bin
A simple HTTP server can be created using python:
python3 -m http.server 8080
If you start the HTTP server in the root of the project, the firmware can be retrieved using:
http://ip:8080/build/e-paper-weatherdisplay.bin
By pressing the update button (connect pin 4 to GND) after a reset the update will be started.
A case has been made for the hardware. This can be found on Thingiverse: https://www.thingiverse.com/thing:3357579
This source of this project is licensed under the MIT License - see the LICENSE file for details
The weather icon images used are from https://github.com/erikflowers/weather-icons. The images are licensed under SIL OFL 1.1. The font used is the Ubuntu font, the license can be found here.
The images and font are converted to "C" source format using LCD Image Converter.