ESP32 E-Paper Thermometer With Web Dashboard | DIY Smart Home

by educ8s in Circuits > Arduino

8976 Views, 89 Favorites, 0 Comments

ESP32 E-Paper Thermometer With Web Dashboard | DIY Smart Home

cover.jpg
image (3).jpg
image (7).jpg
image (4).jpg
image (5).jpg
ESP32 Project: E-Paper Thermometer with Web Dashboard | DIY Smart Home

I love blending electronics with design, and this project is one of my favorites. It looks like a classic thermometer but is powered by an ESP32 microcontroller with a tri-color E-paper display. The case is 3D-printed using wood filament, giving it an authentic vintage look. While it has an old-school charm, a real-time dashboard that is hosted in this device allows you to track temperature, humidity, and pressure with a clean, modern interface. Let me show you how I built it!

If you follow my Instructables projects, you know how much I love vintage devices. When I discovered these tri-color E-paper displays, I immediately envisioned recreating the elegant simplicity of classic thermometers. The E-Paper technology was the perfect fit.

E-paper displays provide excellent contrast, making them easy to read, and they consume power only when updating. So, here is the result—an analog-looking thermometer that uses the latest electronic components available to makers. I love simplicity, and as Leonardo da Vinci once said, “Simplicity is the ultimate sophistication.” That’s why I designed this thermometer to display only the current temperature.

I think this simplicity makes it look beautiful. The temperature reading updates every five minutes, but if we need more frequent and detailed information, the web dashboard provides real-time monitoring of temperature, humidity, and barometric pressure.

You can check live readings from your phone or computer, whether you're at your desk or in another room. The data is stored locally, so nothing leaves your network, ensuring full privacy. With 48-hour logging, you can also look back and see how temperature, humidity, and pressure have changed over time, making it easy to spot trends in your environment.

With this, we have the best of both worlds—an elegant gadget with a wealth of information.

Supplies

image (14).jpg

The total component cost is under $40, making this an affordable DIY project. Let's review the parts needed.

We just need three parts.

The Inkplate2 board: https://educ8s.tv/part/Inkplate2

A BME280 sensor: https://educ8s.tv/part/BME280

A MicroUSB breakout board: https://educ8s.tv/part/MiniUSBBreakout

Inkplate2 Tri-Color E-Paper Display

image (8).jpg
Inkplate 2 Review: Easy E-Paper Display Projects with ESP32 | Arduino Tutorial

So, let’s talk about what makes the Inkplate 2 so interesting. It’s built around a 2.13-inch tricolor e-paper display, which I think is perfect for compact projects.

The screen can show three colors: red, black, and white, with a resolution of 212x104 pixels. While it’s definitely low resolution compared to modern high-definition screens, it’s still good for an e-paper display. With 111 dpi, the screen is sharp enough for simple graphics and text.

What’s awesome, though, is that e-paper only uses power when the screen updates. That means once the image is on the display, it stays there without drawing any power, making it perfect for battery-powered projects. The refresh rate is about 15 seconds, which is standard for this type of e-paper technology. This means it’s not suitable for anything that needs quick updates, like animations or real-time displays. However, it works well for static content, such as showing temperature, a to-do list, or other information that doesn’t change often.

The board uses an ESP32 microcontroller, a powerful chip with two 32-bit cores running at 160 MHz. It has 320 KB of RAM, 8MB of PSRAM and 4 MB of Flash memory, giving it enough power to handle advanced tasks. It also comes with built-in Wi-Fi and Bluetooth, making it easy to connect to other devices or the internet. Plus, the board has an external antenna, which improves the signal strength and range for better wireless performance.

This board is also great at saving energy. In low-power mode, it uses only 8 µA, which means it can run for months on a Li-ion battery. It also has a built-in battery charger, so you can connect a battery directly and charge it easily using the USB-C port. With its combination of power, wireless features, and energy efficiency, this board is perfect for portable or long-lasting projects like sensors, clocks, or anything that doesn’t need the display to update often.


BME280 Sensor

Screenshot 2025-02-07 155405.png

The BME280 in a new great sensor from Bosch. So far I was using the BMP180 sensor which can measure temperature and barometric pressure. The BME280 sensor can measure temperature, humidity and barometric pressure! How cool is that! We just need one sensor to build a complete weather station!

In addition to that, the sensor is very small in size and very easy to use. The module we are going to use today, uses the I2C interface so it makes communication with Arduino very easy. We only to connect power and two more wires to make it work.

There are already many libraries developed for this sensor so we can use it in our projects very easily!

The cost of the sensor is about 2$.

You can get it here ▶ http://educ8s.tv/part/BME280

NOTE: We need the BME280 sensor. There is also a BMP280 sensor which does not not offer humidity measurement. Be careful to order to sensor you need.

MicroUSB Breakout Board

Screenshot 2025-02-07 155341.png

A Micro USB breakout board is a small circuit board that provides an easy way to integrate a Micro USB port into DIY electronics projects. It breaks out the power (VCC, GND) and data (D+, D-) pins from a Micro USB connector into accessible solder pads or header pins, making it simple to connect to microcontrollers, sensors, or other components. Some breakout boards also include an IO pin, which can be used for device identification or additional configuration. These boards are commonly used for powering devices, charging batteries, or enabling USB communication with microcontrollers like the ESP32 or Arduino. By eliminating the need for complex soldering of tiny USB connectors, they provide a convenient and reliable interface for power and data connections in embedded systems.

Connecting the Parts

image (15).jpg
image (16).jpg
Screenshot 2025-02-07 145032.png

One of the best things about this build is how simple the wiring is—you only need four connections! The BME280 sensor measures temperature, humidity and barometric pressure and it uses the I2C interface so is very easy to work with.

I soldered 4 wires to the board and connected the sensor to them. We have to connect power and two more wires to SCL and SDA pins of the board. Now let’s see the software we need.







The Code of the Project

image (21).jpg
image (22).jpg
image (17).jpg
image (18).jpg
image (19).jpg
image (20).jpg

The software for this project is organized using object-oriented programming. Each functionality has its own class, making the codebase more modular and maintainable. But it makes it harder to share here in Instructables since .zip files are not allowed, so you can get it here: https://github.com/educ8s/ESP32-E-Paper-Thermometer-with-Web-Dashboard

In order for the project to compile we need 3 libraries, the Inkplate library for the display, the Adafruit_BME280 library for the sensor and the ArduinoJson library. You can download all the libraries directly from the Arduino IDE.

So we have the Sensor class, which handles communication with the BME280 sensor, retrieving temperature, humidity, and pressure readings. Then we have the SensorData class, which manages data storage and history, allowing the system to keep track of environmental readings over the last 48 hours. Finally, we have the Display class, which is responsible for rendering information on the E-paper display. This modular approach makes it easy to adapt the project—if you want to use a different display, you only need to create a new Display class. Similarly, if you want to use a different sensor, you only need to modify the Sensor class. The rest of the code remains unchanged, ensuring seamless functionality. You can find a link to the code in the video description. It is completely open source, and you are free to expand it with additional functionality. I would love to see what you create using this code as a starting point!

I didn’t spend a lot of time optimizing the power efficiency of this device since it is designed to remain plugged in. However, I did implement some power-saving measures where possible. For example, the E-Paper display only updates when necessary—if the temperature reading changes but the difference isn’t large enough to visibly affect the display, it won’t refresh. This means that even though the device reads the temperature every five minutes, the display only updates when a noticeable change occurs, reducing unnecessary power consumption.

I won’t go into further details on how this code works or its exact functionality. If you're interested in learning more, I have created a detailed 10 page PDF explaining what each file does. You can find the file attached in this step.

In the main project file, we need to set two values: the SSID and password of our WiFi network. This allows the board to establish a web server for the dashboard. Additionally, if you prefer imperial units instead of metric, set the metric variable to false.

And that's it! The code is now ready to be uploaded to the board.

Testing the Software for 48 Hours

image (23).jpg
image (12).jpg
image (25).jpg
image (26).jpg
image (27).jpg

The device now displays the temperature on the E-Paper screen and has also set up a web server. If we check the console, we can see its IP address. By entering this IP address into a browser, we can access our dashboard.

Cool! We can now see the current temperature, humidity, and barometric pressure readings.

However, the graphs are not yet visible since there is no historical data available. It will take 48 hours for the graphs to fully populate with historical data. So, I left the device running over the weekend, powered by a power bank, and used a power meter to measure its energy consumption.

48 hours later, I’m back at the office. The power bank still has charge, and the dashboard now displays all the data collected over the weekend. The code ran without crashing, proving the system’s reliability. Notice the significant drop in temperature while I was away. Now, let’s check the power consumption—over the past 48 hours, the project consumed 2400mAh of power.

That means the device requires around 1200mAh per day to operate, making it impractical to run on battery power. The high power consumption is due to the web server running continuously and waiting for incoming requests. If we don't need the dashboard, I believe we can modify the project to run on battery power for several months by optimizing power consumption.


3D Printed Enclosure

Screenshot 2025-02-07 160634.png
image (10).jpg
image (2).jpg
image (28).jpg

To improve the aesthetics and functionality of the device, I decided to enclose it in a custom 3D-printed case. I slightly modified the original 3D files provided by the board manufacturer, using Fusion 360. I made two key adjustments. First, I added a small cutout at the back to expose the sensor, ensuring more accurate environmental readings. Second, I created an opening for the USB mini breakout board, allowing for a more convenient power connection. The built-in USB port for programming and power is not positioned in a way that allows the device to stand upright.

Fusion 360 proved to be an invaluable tool for this project. Its intuitive user interface and powerful parametric modeling capabilities made it easy to tweak the existing design files and optimize them for better functionality. The ability to precisely adjust the 3D model and simulate assembly before printing helped minimize errors and ensure a perfect fit for the components. If you're into 3D design, Fusion 360 is an excellent choice for creating custom enclosures for electronics projects.

You can find the stl files here: https://www.printables.com/model/1180113-esp32-project-e-paper-thermometer-with-web-dashboa

Next, I soldered two wires from the USB breakout board to the VIN and GND pins of the board. This modification allows us to power the board conveniently from this connector. After assembling all the components, the project is complete. I really like how it turned out. The finished project looks fantastic on my desk. The e-paper display provides great contrast, giving the thermometer a classic, analog appearance.

Final Thoughts

image (6).jpg
image (13).jpg

I hope you enjoyed this project; it’s one of my all-time favorites. I’ve always wanted an E-Paper weather station with this design. Since no commercial product like this exists, I decided to build my own. We are fortunate to live in an era where we can create anything we envision in just a few days. Thanks to the internet, we have access to endless knowledge and the ability to connect with like-minded individuals. If you enjoy my work and want to follow my journey, subscribe to my channel to stay updated on future projects.

Now, if you liked this project, I have another one you might enjoy—a larger, full-color E-Paper weather station. Click here to check it out: https://www.instructables.com/Arduino-ESP32-Color-E-Paper-Weather-Station/