This project runs on an ESP32 and shows:
- a month view with highlighted calendar days that contain events
- the next 24 hours of Google Calendar events
- a short Open-Meteo forecast
- battery voltage and firmware version
- Deploy the Apps Script from
google_script_read_cal.txtto your Google account. - Build and flash
ESP32_ePaper_GoogleCalendar.inoto the board. - On first boot, connect to the Wi-Fi network
myCal-Setup. - Open
http://192.168.4.1. - Choose a hardware profile, then review or edit the pins if needed.
- Choose the refresh interval for deep sleep wake-up.
- Enter your Wi-Fi, Open-Meteo location, timezone, and Google Script ID.
- Save the form and let the device reboot.
Google Apps Script: https://script.google.com/home/
Settings are now stored on the ESP32 using Preferences.
Required fields in the setup page:
- Wi-Fi SSID and password
- refresh interval:
6,12,18, or24hours - hardware profile and display pins
- city
- country code
- timezone as a POSIX TZ string, for example
EST5EDT,M3.2.0/2,M11.1.0/2 - Google Apps Script ID
Optional fields:
- enable GitHub Releases update checks every 12 hours
Built-in hardware profiles:
esp32-waveshareesp32esp32c6custom
The profile fills the default pins, and you can still override them in the form before saving.
Current preset pins:
esp32-waveshare:CS=15,DC=27,RST=26,BUSY=25,SCK=13,MOSI=14,DisplayPower=4,Battery=35esp32:CS=15,DC=27,RST=26,BUSY=25,SCK=13,MOSI=14,DisplayPower=4,Battery=35esp32c6:CS=1,DC=8,RST=14,BUSY=7,SCK=23,MOSI=22,DisplayPower=4,Battery=0
The selected refresh interval controls the deep sleep timer between dashboard updates.
The GitHub workflow builds esp32 and esp32c6 firmware and publishes stable release asset names suitable for OTA.
Built-in OTA URLs:
https://github.com/VoIPshare/ESP32_ePaper_GoogleCalendar/releases/latest/download/version-esp32.txthttps://github.com/VoIPshare/ESP32_ePaper_GoogleCalendar/releases/latest/download/ESP32_ePaper_GoogleCalendar-esp32.binhttps://github.com/VoIPshare/ESP32_ePaper_GoogleCalendar/releases/latest/download/version-esp32c6.txthttps://github.com/VoIPshare/ESP32_ePaper_GoogleCalendar/releases/latest/download/ESP32_ePaper_GoogleCalendar-esp32c6.bin
If the GitHub update checkbox is enabled, the device will check those release assets at most once every 12 hours after the previous successful version check.
The project now uses Open-Meteo.
Why this is a better fit here:
- no API key required
- simpler setup page
- easier sharing and flashing for other people
- daily forecast data matches an e-paper dashboard well
The device geocodes the configured city and country code through Open-Meteo, then loads a 3-day daily forecast for min temperature, max temperature, and weather code.
The font headers are not guaranteed to be redistributable, so you may want to generate your own.
Example:
fontconvert Geologica-Bold.ttf 14 32 255 > Geologica_Bold14pt8b.hThe character range was adjusted to include accented characters.
- Only one battery holder is needed in the 3D model.
- The ESP32 slot is designed for the Lolin D32.
- Deep sleep current is about 80 uA on the Lolin D32.
- With the original Waveshare ESP32 board, deep sleep was closer to 0.5 mA even after removing the power LED.