WeatherPaper - Minimalist E-Paper Weather Display That Lasts Months

by Jeremy Ngai in Circuits > Electronics

6711 Views, 94 Favorites, 0 Comments

WeatherPaper - Minimalist E-Paper Weather Display That Lasts Months

photo_2025-07-26_12-57-51.jpg
photo_2025-07-26_13-02-03.jpg
photo_2025-07-26_14-49-07.jpg
photo_2025-07-26_14-49-09.jpg
No buttons. No backlights. No noise. Just the weather—sleek and quietly placed on your desk.

I live in Malaysia, where the weather can flip from blinding sun to torrential rain in five minutes. I’ve been soaked, stressed, and late way too many times—just because I didn’t check the weather app.

But even when I tried, it felt like a hassle. Unlocking my phone, digging through apps, and getting hit with distractions—just to find out it’s raining?

So I built something better.

WeatherPaper is a minimalist, always-on e-paper display that shows real-time weather in a calm, battery-efficient way. No glowing screen. No notifications. Just a little glanceable window that quietly says, “Hey, bring an umbrella.”

If you like clean setups, quiet tech, and gadgets that fit into your life instead of interrupting it—this one's for you.

Supplies

photo_2025-08-05_19-24-27.jpg

Components

ESP32-C3 Supermini Development Board

WeAct 2.9" Black-White E-Paper Display Module

TP4056 Charging Module with booster

102025 3.7v Li-Po Battery

40x60mm Perfboard

8 Pin JST 1.25mm Connector (included with WeAct E-Paper Display Module)

Single core wire

Tools

Soldering iron

Design and 3D Printing

photo_2025-07-25_19-26-22.jpg
photo_2025-07-25_19-26-26.jpg
photo_2025-07-25_19-26-25.jpg

The enclosure for WeatherPaper is very simple. It consists of two parts: a main case and a snap-on lid.

Both parts were designed in TinkerCAD and were inspired by @jbergler. Big thanks to @jbergler for making this project possible.

I had the models printed via JLC3DP using 8001 SLA Resin, which gives it that sleek frosted look straight out of sci-fi. For an even smoother finish, you can lightly sand the surfaces to remove any remaining supports. Just go easy to avoid clouding the surface.

There's also a small square cutout on the back of the case, and that's for wall mounting. You can easily hang it with a screw, nail, or a wall hook. It makes WeatherPaper feel like a functional piece of ambient decor.

As for the weather icons, they were sourced from Flaticon, who seriously levelled up the look and clarity of the display. Big shoutouts to these talented designers for making WeatherPaper look extra sleek and readable.

Adjusting the Potentiometer! (IMPORTANT)

photo_2025-08-02_10-05-43.jpg

This step is super important; skip it and you end up with a toasted ESP32 and gliched-out e-paper display. Do not skip this!

First things first, grab your 3.7V battery and your TP4056 Charging Module with Booster. We are going to temporarily connect the battery to the input of the charging module. No soldering yet! You can use alligator clips, or anything else that gets the job done safely. This is just for tuning.

Now take a small Philips screwdriver and slowly adjust the onboard potentiometer.

  1. Clockwise = more voltage
  2. Counter-clockwise = less voltage
  3. Target range = exactly 5V (acceptable range: 4.75V to 5.25V)

Use a multimeter to measure the output while you adjust. Be slow and patient!

Once you have dialled it in and confirmed the voltage is within 4.75V to 5.25V, you are good to go!

Clean power = happy ESP.

Circuits and Soldering

photo_2025-08-06_19-02-07.jpg
photo_2025-08-06_19-02-09.jpg

Wiring this project is surprisingly straightforward. Your main goal? Connect the ESP32 to the e-paper display using SPI, and make sure everything gets what it needs. That's it.

I started off on a breadboard to make sure everything was working well before soldering. Once things worked, I moved to a 40x60mm perfboard to make it permanent!

Here's the connection setup I used:

  1. VCC to 3.3V/5V (either works, the e-paper itself had an onboard regulator)
  2. GND to GND
  3. SDA to GPIO6
  4. SCL to GPIO4
  5. CS to GPIO7
  6. D/C to GPIO1
  7. RES to GPIO2
  8. BUSY to GPIO3

Some e-paper displays use a slightly different name for the pins, like DIN/CLK instead of SDA/SCL, but it's usually easy to figure out, so make sure you wire things up in SPI mode (not I2C!).

When it comes to soldering, I placed the ESP32 and TP4056 on a 40x60mm perfboard.

To keep connections strong and tidy:

  1. Tin both the wire and the perfboard pads before soldering.
  2. Use flux if you've got it.
  3. Double-check before committing (speaking from... experiences!).

To make the project toggleable, I soldered 2 male header pins in series with the battery's positive wire and used a jumper cap to toggle it (this acts like a switch and is super helpful for testing).

WeatherPaper wakes up every 30 minutes to update the display, spending rest of the time in deep sleep. Since the booster module draws no power on idle, a 500mAh battery can keep WeatherPaper running for up to 2 months.

Testing and Uploading Firmware

video_2025-08-05_18-31-04-ezgif.com-video-to-gif-converter.gif
photo_2025-07-26_10-36-03.jpg

Before sealing everything inside the case, it's time to bring WeatherPaper to life by uploading the code to your ESP32. Make sure everything is wired up correctly and that your e-paper display is connected securely. This step will confirm that your hardware is working.

I used Arduino IDE for this project, along with a few libraries like GxEPD for the e-paper display, WiFi.h, and HTTPClient to fetch weather data. Don't forget to install these from the Library Manager if you haven't. Moving on to the API key for weather, I used OpenWeatherMap because it's easy to use and accurate. For fetching the current weather, you don't need a subscription; just make a free account and generate an API key.

You’ll need these libraries:

  1. esp32 (from Boards Manager)
  2. GxEPD (for the e-paper)
  3. WiFi.h
  4. HTTPClient.h

In Arduino IDE, you will need to enter your WiFi credentials and your country/city, as well as your weather API key in your code.

// WiFi Credentials
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";

// OpenWeatherMap API Info
const String city = "YOUR_CITY";
const String apiKey = "YOUR_API_KEY";
const String weatherURL = "http://api.openweathermap.org/data/2.5/weather?q=" + city + "&appid=" + apiKey + "&units=metric";

You can also set the refresh interval (fewer refreshes = longer battery life).

#define TIME_TO_SLEEP 1800 // Time ESP32 will sleep (in seconds) (default = 1800 (30 mins))

Once your code is ready, it's time to plug in your ESP32 using a USB cable, hit Upload, and cross your fingers (just kidding, it should work!).

If it all goes well, you will see the e-paper display refresh with actual weather info pulled from your API!

If it doesn't, don't panic! Open up Serial Monitor and set the baud rate to 115200, and see where it breaks. If nothing works, you might not have enabled USB CDC On Boot, Tools > UCB CDC On Boot > Enabled.

At this point, I like to test a few things before moving forward:

  1. Did it connect to WiFi?
  2. Is the display showing proper data?
  3. Does it go into deep sleep correctly and boot up after deep sleep?

If everything checks out, you are good to go for final assembly. If not, this is the perfect time to troubleshoot.

The ESP32 has a 20-second timeout when attempting to connect to WiFi during each refresh cycle. If it fails to connect within that time, the weather data won't be updated on the e-paper display until the next cycle.

Assembling the Body

ezgif.com-optimize(1).gif
photo_2025-07-26_14-49-09.jpg
photo_2025-07-26_14-49-07.jpg

Alright, now that everything is wired and soldered. It's time to give WeatherPaper a proper home. Because no one wants a naked PCB chilling on their desk!

For the enclosure, you can get as creative or as lazy as you want (no judgement!) I hot-glued the perfboard and the battery onto the back of the e-paper display. I went with a 3D printed enclosure with a translucent (or 'frosted') finish, which is manufactured by JLC3DP with 8001 Resin. Shout out to JLC3DP for making my project look fabulous!

The ESP32 has a tiny red LED as a power indicator. To save power and make it more aesthetic, I carefully flicked it off using a craft knife. Be careful not to damage the PCB trace and components!

Once everything was in place, I fitted the lid and powered it on. It honestly looked like a piece of modern tech art. You might even forget it's electronic.

Building WeatherPaper wasn’t as “smooth” as it looks now. The first few versions were a mess. My e-paper display wouldn’t refresh properly, my 3D prints kept failing (like, spaghetti-monster levels of failure), and I even fried a microcontroller while testing the power circuit — RIP. I also spent two whole days trying to decode how to align the graphics pixel-perfectly on the e-paper because it wasn’t centered by default.
I almost gave up halfway. I thought, "Maybe this is too complicated." But I reminded myself that I wanted this to actually help me, and I didn’t want to take the easy way out. I kept pushing, reprinting, rewriting code, and eventually, everything clicked into place. Looking at it now, I still remember the stress... and the satisfaction.

Conclusion and Final Thoughts

photo_2025-07-26_12-57-51.jpg

Boom! You just built WeatherPaper, a quiet little companion that brings real-world weather into your space without the noise of modern tech. No ads, no scrolling, no distractions—just a calm, always-on display that reminds you what the sky's up to.

This project is all about balancing form and function. You learned how to use e-paper displays, deep sleep modes, WiFi, and live weather data integration—and turned it all into a piece of modern art that sips battery and delivers calm.

This is just the beginning. Remix it! Add colours, make it solar-powered, print a fancier case, or even display tomorrow's forecast. I kept mine minimal, but you can absolutely go full weather wizard!

Thanks for reading along. and if you're into quiet tech, low-power gadgets, or just want more projects that vibe, smash that Follow button. You’re awesome.

Oh yeah, before you go outside?

Check your WeatherPaper.

Reflection

I’m still new to electronics and coding. Before this project, I didn’t even fully understand how web APIs worked or how to design proper enclosures in Fusion 360. But this project forced me to level up in so many areas: from hardware wiring, to optimizing battery life, to learning how to work with real-time weather data.

More importantly, it helped me realize I love building things that feel calm, useful, and thoughtful. I’m not just here to make blinking lights — I want to design stuff that blends into life, that helps people without demanding attention. That’s now the kind of maker I want to be.

This project taught me that impactful engineering isn’t about flashy features—it’s about integrating tech into life so seamlessly, it feels like it always belonged there.

What I'd Do Next

WeatherPaper is just the beginning. If I had more time (and budget), I’d love to make a version that uses a solar panel so it could run fully off-grid — maybe something I could hang near the front door or on the wall. I also want to make a version with icons that show whether I need an umbrella or sunscreen without even thinking.

The biggest thing I learned from this project is that simple ideas, when done thoughtfully, can really change how someone lives their day. Even if it’s just me — dashing out the door, glancing at my e-paper display, and knowing exactly what to expect outside. That’s powerful to me.

Author's Note

This project really pushed my limits, especially when it came to the size constraints. Fitting the display, PCB, battery, and all the wiring into such a compact enclosure was a huge challenge. But despite the tight space, it still manages to deliver a decent battery life.

I'm a 14-year-old secondary school student, and this build has been an incredible learning experience for me. Seeing it all come together with that clean, polished look people have praised really means a lot, and I hope it can inspire other young creators to dream big and build boldly!