A weather station based on a Firebeetle ESP32 and a 7.5in Waveshare E-paper display. The data is fetched from Open-Meteo.
A KiCad schematic and Fusion 360 design for it's case for this project can be found here.
- Have PlatformIO installed.
- Clone the repository.
- Open in a PlatformIO-compatible IDE because I'm too lazy to remember the commands.
- Create a Blynk template with a battery percentage (integer from 0 to 100) data stream and widget on virtual pin V0
and a success/fail rate (string) data stream and widget on virtual pin V1 and a
failed_refresh
event. - In
include
, renameconfig.sample.h
toconfig.h
and fill in values. - Build filesystem image.
- Upload filesystem image.
- Go to
.platformio\packages\framework-arduinoespressif32\libraries\Update\src\Updater.cpp
and edit the definition forbool UpdateClass::setMD5(const char* expected_md5)
:Although this issue is fixed in the latest version of the ESP32 Arduino core, PlatformIO is stuck with ESP32 Arduino core v2.bool UpdateClass::setMD5(const char *expected_md5) { if (strlen(expected_md5) != 32) { return false; } _target_md5 = expected_md5; _target_md5.toLowerCase(); // <-- ADD THIS LINE return true; }
- Upload.
Notes:
- The custom font is a slimmed down version of the GNU Unifont and
converted into the
u8g2
font with this tool. - Icons are from QWeather and Bootstrap, converted with ImageMagick to 100x100 bitmaps.
- I modified the GxEPD2 library to support reading B/W pixels from it's framebuffer. This is to upscale the 16x16 fonts into a (blocky) 32x32 font on the fly.