A 10-digit VFD (Vacuum Fluorescent Display) clock based on the ESP32. It features automatic NTP time synchronization, weather display from OpenWeatherMap, and a web-based configuration portal. This project is built using the ESP32NTPClock library framework.
- 10-Digit VFD Display: Driven by a MAX6921 chip over SPI.
- Automatic Time Sync: Connects to your WiFi and synchronizes its time from an NTP server.
- Weather Display: Fetches and displays the current temperature and humidity for a configured location from OpenWeatherMap.
- Animated Scenes: Cycles through displaying the time, date, and weather using a playlist of customizable animations (Slot Machine, Scrolling, Matrix).
- Web Configuration: On first boot or when WiFi fails, the clock enters an Access Point (AP) mode. You can connect to its WiFi network to configure all settings through a web page on your phone or computer.
- Note: the clock does not have RTC (Real Time Clock) hardware
- ESP32 Module: An ESP32-WROOM-DA was used in development.
- VFD Display: A 12-digit Vacuum Fluorescent Display.
- VFD Driver: A MAX6921 driver chip.
- Power Supply: A stable 5V power supply capable of powering the ESP32 and the VFD.
This project relies on the ESP32NTPClock framework and several other Arduino libraries.
-
Core Libraries (created for this project):
ESP32NTPClock(The core application engine)ESP32NTPClock_MAX6921(The VFD display driver)
-
Third-Party Libraries:
- ESP Async WebServer (and its dependency, AsyncTCP)
- RTClib by Adafruit
- SimpleFSM
-
Built-in ESP32 Libraries:
WiFi,SPI,Wire,Preferences,HTTPClient(included with the ESP32 board package).
Async TCP v.3.4.7 DNSServer v.3.3.0 ESP Async WebServer v.3.8.0 ESP32 Async UDP v.3.3.0 FS v.3.3.0 HTTPClient v.3.3.0 NetworkClientSecure v.3.3.0 Networking v.3.3.0 Preferences v.3.3.0 SPI v.3.3.0 WiFi v.3.3.0 Wire v.3.3.0 RTClib v.2.1.4 SimpleFSM v.1.3.1 ESP32NTPClock v.1.0.0 ESP32NTPClock Display Drivers v.1.0.0 Adafruit BusIO v.1.17.2
- First Boot: On the very first boot, the clock will not have WiFi credentials. It will automatically start in Access Point (AP) mode. The display will show a message like "SETUP MODE...".
- Connect to the AP: Using your phone or computer, connect to the WiFi network named
gustav-clock. - Captive Portal: Once connected, a captive portal should automatically open. If it doesn't, navigate to
192.168.4.1in your web browser. - Enter Settings: Fill in your WiFi SSID and password, your POSIX timezone string, and your OpenWeatherMap API key and location.
- Save: Click "Save and Restart." The clock will reboot and connect to your WiFi.
To re-enter configuration mode at any time, simply press the reset button twice in quick succession (about 1-2 seconds apart).
- Install the Arduino IDE or PlatformIO.
- Install the ESP32 board support package.
- Install all the libraries listed in the Libraries & Dependencies section above.
- Place all the
gustav_clockproject files into a sketch folder of the same name. - Open
gustav_clock.ino, select your ESP32 board and port, and click Upload.
This project is licensed under the MIT License - see the LICENSE file for details.
