2022.10.23
Completed the program under the RTOS framework (attached RTOS Ver.zip). There are currently two display modes, instant-minute-second and hour-minute (the disadvantage is that the mode switching requires manually changing the flag in the code and compiling the program again). I don’t know why the photos are always too bright... The OLED screen is soldered, although I don’t know what to let it display.

2022.10.8
The basic functions of the program are completed. Power on to connect to WiFi and update the RTC time through NTP, and then display the hour-minute.
2022.10.4
The underlying drivers of various peripherals are basically completed, but due to the slightly longer dynamic refresh cycle of the VFD, the clock display mode brightness is too low. The current program is changed to only display "HELLO" when powered on. See the instructions for details.
0. What is VFD? It is
recommended to browse NIXIE/VFD Technology | Technology – Nixie Clock Home. Teacher Yan Zeyuan is considered a senior in China who has provided a lot of information for Nixie tube/VFD enthusiasts.
IV-18 is an 8-bit digital VFD tube produced in the Soviet Union. It is a relatively common and classic VFD tube.
1. Circuit scheme
Main control: ESP32-WROOM-32UE module (I rarely used ESP32 related modules in DIY design because I didn’t dare to use heating table and hot air gun due to power restriction in dormitory. Until recently, I found in Espressif’s datesheet that the bottom GND pad of these modules does not have to be soldered...)
Onboard CH340C scheme classic automatic download circuit
MICROUSB (power and data), TYPE-C-6P (power only) input, dual-channel AMS1117 provides 3.3V power supply, XL6007E1 Boost provides 50V power supply for VFD anode
HV5812/MAX6921 for VFD driving
Integrated RGB lamp beads, RTC, 0.91-inch OLED, DS18B20 peripherals
2. Description
(2022.10.4) The current program structure is to continuously read the RTC value in an infinite loop and then drive the VFD to display the time, but due to the characteristics of the dynamic scanning drive mode of the VFD itself (see the website above for details), the current program cycle time is too long, resulting in the overall brightness of the VFD being too dark and the display effect is not good. The initial guess is that the waiting time for the i2c ack response is slightly longer when the ARDUINO wire.h library is implemented at the bottom level, resulting in a slow RTC reading time (ARDUINO is rarely used and has not seen the implementation of those libraries, so it is a guess). The solution is to slightly increase the anode supply voltage, and the second is that the clock only displays hours and minutes instead of seconds, and reads the RTC time through the timer or the dual core of ESP32 to shorten the dynamic scanning cycle time.
The VFD drivers MAX6921 and HV5812 are the same except for the name and manufacturer (same package), but there is a chance to buy fake HV5812. Most of the MAX6921 are disassembled but most of them can be used. The driving method of this is written in the schematic diagram as popularly as possible. I think it is a high-voltage latch + shift register. It looks quite confusing at first, but it is easier to understand with a basic knowledge of digital electronics.
Welding guide: C4, R2, and R22 do not need to be welded. R20 is the single-point grounding point of the boost part. A 0Ω resistor or fuse must be used. If there is no fuse, use a lump of tin to connect the two pads. Do not weld with power on when the reverse button battery is installed. It is recommended to weld while testing in the order of MICROUSB and CH340C----BOOST part----ESP32. Also, you have to believe that the probability of a short circuit caused by a cold solder joint is much higher than the probability of a chip being damaged (
Program Description (RTOS Ver.zip)

IV18_Driver.cpp/IV18_Driver.h is the underlying driver of the IV-18 display, RX8025.cpp/RX8025.h is the underlying driver of the RTC chip RX8025T, and Main_Driver.cpp/Main_Driver.h is the re-encapsulation of several underlying drivers and the function implementation of the main functions of the program. If you want to read the code, just focus on the contents of these two files.
3. I haven't thought of what to write yet, so I'll post the pictures.
