Are you tired of your partner asking you what the weather is going to be today so she knows what to wear?
This ESP32-powered project fixes that for you! By fetching weather forecast data from OpenWeatherMap and displaying the maximum temperature and conditions using a fun cat vibe illustration on a Crowpanel 4.2-inch E-Ink screen, all your partner has to do is look at the funny little cat box!
What's special? The device determines whether it's sunny, cold, rainy, or hot, and shows a matching kitty to reflect the clothes you should wear today!
Features:
🐱 Cat visual changes based on weather
📡 Uses OpenWeatherMap forecast API
🔋 Battery-friendly with deep sleep
🧠 Works fully offline once weather is fetched
🖼️ Uses GxEPD2 and custom fonts for high-quality rendering
How It Works:
Connects to Wi-Fi using stored credentials
Fetches 3-hourly forecast data for the configured city
Calculates:
Max temperature
Most frequent condition
Local time of city from weather timestamp
Classifies weather into one of 5 moods:
hot / warm / cold / freezing / raining
Renders:
Mood-based cat image
Temperature + weather icon
Update time based on city's local time
Goes to deep sleep until next scheduled refresh (e.g., 5AM, 12PM, 5PM)
Bill of Materials (BOM):
Qty
Item
Notes
1
Crowpanel 4.2" E-Ink Display
Pretty accessible, I just ordered mine from Aliexpress.
1
LiPo Battery (3.7V, 1000–2000mAh)
SH 1.0, check + and - connection before buying, I soldered my own.
1
USB-C cable
For programming & power
Libraries Required (Install in Arduino IDE):
GxEPD2 (for E-Ink)
ArduinoJson (v6+)
WiFi (default for ESP32)
HTTPClient (default)
Adafruit GFX (installed with GxEPD2)
Setup Instructions:
✅ Step 1: Download the Zip and Prepare the Code
In the setup, replace your Wi-Fi SSID and password
Replace the city name and OpenWeatherMap API key
Potentially change the time zone information, I haven't tested the code that chooses its last updated time thoroughly enough to know if it works 100% of the time.
In tools set PSRAM → OPI PSRAM and Partition Scheme → Huge App (I don't know why, I got this from a tutorial for the crowpanel and if I don't do it then it doesn't work.)
Upload via USB-C using Arduino IDE (if you get an upload error at the last second lower the upload speed in tools until it works, even if it's agonizingly slow)
✅ Step 3: Power & Run
On boot, the device will:
Connect to Wi-Fi
Fetch forecast
Display cat + weather
Sleep until the next refresh window
🧷 Assembly Details – No Extra Screws Needed! 🔩
The custom back panel is designed to attach directly to the CrowPanel using the existing screws on the device — no need to source extra hardware!
Once the back is mounted, the front and back snap together with a satisfying, secure click, holding everything neatly in place without wobbles or adhesives.
🛠️ Customization Ideas I haven't gotten around to:
Feel free to modify the code or the model based on your own needs. Make your own fun little weather station! Have fun with it! Here are some ideas I had but didn't get around to.
Add WiFiManager to allow Wi-Fi + city config via browser
Show multiple-day forecast using different pages or rotation (I can't test this, I broke the buttons on my crowpanel…)
Replace cat images with other designs or weather-specific memes