This project blends electronics with design to create a vintage-style thermometer powered by an ESP32 microcontroller and a tri-color E-paper display. While resembling a classic analog thermometer, it also features a modern web-based dashboard for real-time monitoring of temperature, humidity, and pressure.
The case is 3D-printed using wood filament, giving it an authentic vintage look, and the real-time dashboard allows for local data storage and privacy-focused environmental tracking.
- Elegant E-Paper Display: Low power consumption and excellent readability.
- Web-Based Dashboard: Monitor temperature, humidity, and barometric pressure in real time.
- Local Data Storage: No cloud dependence, ensuring full privacy.
- 48-Hour Logging: View historical trends for environmental monitoring.
- Minimal Wiring: Just four simple connections.
- Custom 3D-Printed Case: Vintage-inspired design with a practical USB breakout for easy power access.
🎥 Watch the Full Video Tutorial
Here are the components you need for this build:
| Component | Description | Buy Link |
|---|---|---|
| Inkplate2 | E-Paper display board from Soldered | Buy Here |
| BME280 | Sensor for temperature, humidity, and barometric pressure | Buy Here |
| MicroUSB Breakout | Power | Buy Here |
The wiring for this project is extremely simple:
- BME280 Sensor → Inkplate2 Board
- VCC → 3.3V
- GND → GND
- SCL → SCL
- SDA → SDA
To compile and upload the project, install the following libraries in the Arduino IDE:
- Inkplate Library (for the E-paper display)
- Adafruit BME280 Library (for the sensor)
- ArduinoJson Library (for handling JSON data)
The project follows an object-oriented programming approach for better maintainability:
Sensor.cpp&Sensor.h– Handles sensor readings.SensorData.cpp&SensorData.h– Stores and manages historical data.Display.cpp&Display.h– Manages rendering data on the E-paper display.index_html.h– Hosts the web-based dashboard.ESP32_HomeDashboard.ino– Main program logic, handling updates and communication.
If you're new to Object-Oriented Programming or want to master it, check out my course Object Oriented Progamming Made Easy
The built-in web server displays live and historical data with intuitive graphs. Simply access the device's local IP in a browser to view:
- Current Temperature, Humidity, and Pressure
- Graphs of the last 48 hours' data
- Automatic unit switching between Celsius and Fahrenheit
This project is designed to remain plugged in, but some power-saving measures are included:
- The E-Paper display updates only when necessary.
- Historical data is updated every 5 minutes.
- Running the web server increases power consumption to ~1200mAh/day.
For battery operation, consider disabling the web server and optimizing sleep modes.
The 3D-printed case is designed for aesthetics and functionality. The following modifications improve usability:
- Sensor Exposure: Cutout at the back ensures accurate readings.
- USB Breakout Access: Allows for easier power connection.
- Stable Stand: Adjusted port positioning for an upright display.
You can find the 3D model files here.
- Flash the firmware to the ESP32 board.
- Edit
ESP32_HomeDashboard.inoto enter your WiFi credentials. - Upload the code and reboot the board.
- Find the device's IP address in the serial monitor and access it via a web browser.
- Battery Optimization: Reduce power consumption for months-long operation.
- Mobile App Integration: Use MQTT or Bluetooth for enhanced connectivity.
- More Sensors: Expand the project with additional environmental tracking features.
This project is fully open source, and contributions are welcome! Feel free to expand the functionality and share your modifications.
🛠 Built by Nick Koumaris 📺 Follow me on YouTube for more projects!
