This project is a weather forecast display system that uses Elecrow's CrowPanel ESP32 E-Paper HMI 5.79-inch Display. It displays forecast at 3-hour intervals for the next 12 hours. The forecast data is retrieved via OpenWeatherMap API.
Why I Made ThisI developed this weather forecast display system for my young children. While adults can easily check the weather on their smartphones each morning and prepare accordingly, young children typically do not have access to such tools. To address this, I created a weather display system that children can check on their own. By using an E-Paper display, the system becomes not only easy to read but also energy efficient.
How the System WorksThe system operates as follows:
- Connects to a 2.4 GHz WiFi network on startup.
- Retrieves the current weather and forecast (3, 6, 9, and 12 hours ahead) via OpenWeatherMap API.
- Displays weather information (time, weather condition, temperature, and probability of precipitation) on the E-Paper display.
- Enters Deep-sleep mode to save power.
- Restarts after the configured interval (default: 1 hour).
- Elecrow's CrowPanel ESP32 5.79-inch E-paper HMI Display: A display module equipped with a 5.79-inch E-Paper display. The display has a resolution of 272(H) × 792(L) pixels. Its main controller is ESP32-S3-WROOM-1-N8R8. It is certified under FCC ID 2AC7Z-ESPS3WROOM1, CE compliant under the RED directive, and is certified in Japan under TELEC No. R 201-220052. It is housed in an acrylic enclosure.
To get weather forecast data, you need an API key from OpenWeatherMap. This system uses One Call API 3.0, which requires you to register a credit card along with your address and phone number. This API is free for up to 1,000 calls per day; beyond that, a charge of £0.12 is incurred for each additional 100 calls.
IMPORTANT: To avoid unexpected charges, be sure to follow step 16 below to set your daily request limit to 900. This should allow you to use the service free of charge. If you exceed the daily limit, you'll get an HTTP 429 response status code (see the FAQ I'm worried that I might accidentally make too many calls and be charged for them. How can I limit API calls?
).
- Open the official OpenWeatherMap website.
- Click "Sign in" at the top right corner.
- Click "Create an Account".
- Enter your username, email address, and password. Then, check the following boxes: "I am 16 years old and over", "I agree with Privacy Policy, Terms and conditions of sale and Websites terms and conditions of use", and "I am not a robot." Finally, click the "Create Account" button.
- A dialog titled "How and where will you use our API?" will appear.
- If you are registering as an individual, leave the "Company" field blank. Select the appropriate purpose in the "Purpose" field and click the "Save" button.
- You will receive an email from "Open Weather Team" with the subject "OpenWeatherMap Account confirmation."
- Click the "Verify your email" button in the email.
- Sign in using your registered email address and password.
- Click the "API keys" tab.
- Note down your API key.
- Click the "Billing plans" tab.
- Under the "One Call API 3.0" section, click the "Subscribe" button next to the "Base plan."
- Enter your billing information (First name, Last name, Country, Address Line 1, Address Line 2, City, Postal code, and Phone) and click the "Continue to payment" button.
- Enter your credit card information (through Stripe).
- To avoid unexpected charges, click the pencil icon beside the "Calls per day (no more than)" field and set the value to less than 1000 (I set it to 900).
- Clone the repository:
git clone https://github.com/cubic9com/crowpanel-5.79_weather-display.git
cd crowpanel-5.79_weather-display
- Install Visual Studio Code if you haven't already.
- Open the project using Visual Studio Code:
code .
- Install the
PlatformIO IDE
extension: Go to the Extensions view (Ctrl+Shift+X
). Search forPlatformIO IDE
and install it. - Open PlatformIO Home: In the left Activity Bar, click the PlatformIO icon. In the left Primary Sidebar, go to
QUICK ACCESS > PIO Home > Open
. - Open the project: In the right Editor Group, click
Open Project
in thePIO HOME
tab. Select the clonedcrowpanel-5.79_weather-display
project folder. - Find the
config.template.h
file. Make a copy of it and rename the copy toconfig.h
. - Open this new
config.h
file and modify the following lines with your own details. Note: You can get the latitude and longitude from the URL after searching for your desired location in Google Maps.
// 2.4 GHz WiFi Configurations
#define WIFI_SSID "your WiFi SSID"
#define WIFI_PASSWORD "your WiFi password"
// OpenWeatherMap API Configurations
#define OPENWEATHERMAP_API_KEY "your OpenWeatherMap API key"
#define LATITUDE 35.68130 // Latitude (e.g., Tokyo)
#define LONGITUDE 139.76707 // Longitude (e.g., Tokyo)
#define TIMEZONE_OFFSET 9 // Offset from UTC (in hours)
// Interval Configurations (minutes)
#define INTERVAL_IN_MINUTES 60 // 1 hour
- Build and upload the project: In the PlatformIO sidebar, go to
PROJECT TASKS > esp32-s3-devkit-1 > General > Upload
.
- This program was developed based on the Arduino demo for Elecrow's CrowPanel ESP32 E-Paper HMI 5.79-inch Display.
- Weather provided by OpenWeather.
- The weather icons are from Easy Weather Icons Font set by boxbot6, licensed under the MIT License.
- The font is Chivo Mono by Omnibus-Type, licensed under the SIL Open Font License, Version 1.1.
This project is provided for educational and personal use only. The author makes no guarantees regarding the accuracy, reliability, or continued availability of the system or any third-party services it depends on.
Use this project at your own risk. The author shall not be held liable for any damage, data loss, costs, or consequences arising from the use of this software, including but not limited to:
- Misuse or misconfiguration of the system
- API limitations or changes (e.g., from OpenWeatherMap)
- Hardware malfunctions
- Network failures
By using this project, you agree to assume full responsibility for any and all outcomes.
Comments