ESP32-C3 Supermini clock with VFD display


.

I'm always on the look out for interesting displays which can be used for clocks and was happy to find a Futaba 7-bt-317nk on aliexpress recently which appears to come from a surplus lot originally intended for video recorders on similar home entertainment devices.
It is a modified version of the standard 16 segment "starburst" pattern but with an additional 5 segments.
It has the unusual feature of including an indicator to signal that WiFi is available and a clock dial symbol which I have used to indicate that a recent time synchronisation has occurred. The hardware design was partly inspired by https://spritesmods.com/?art=vfdcontroller particularly the creative use of an ancient series CD4094 shift registers which can handle the 15 volts or so required to drive the display. The filament voltage (I'm using 2.7v) is provided from 5v dropped by three silicon diodes in series. The MCU is an ESP32-C3 Supermini which is soldered directly to the PCB (no filled copper zones under the antenna). The 15volts is derived from an SX1308 boost converter module (best set to the correct output voltage before soldering it to the PCB).
The software uses basic ESP32 native SNTP clock code (credits in the program). I plan later to use a better featured clock design where the configuration parameters (WLAN credentials, timezone etc.) can be updated by web browser using the ESP32's AP mode.

Anyway, here is the project including pictures, code and a schematic so anyone interested can duplicate it or use it as the basis of their own design.

Pictures


.
.
Schematic
VFD_Fatuba_ESP32SuperMini_clock.pdf (106.2 KB)

Code (Arduino ESP32 3.x compatible)
futaba_7_B_317NF_esp32c_V1_04p.ino (14.2 KB)

Gerbers/BoM
See post #7

Display supplier:
Try https://www.aliexpress.com/item/1005005876758913.html or search for "Futaba 7-bt-317nk"

5 Likes

Neat project!
Do you use the photo transistor in any way? I only gave the .ino a quick scan, but it seems like it's presently unused, right?

One tiny detail: it's "Futaba", not "Fatuba". May make googling a little easier.

Thanks for that and I've corrected the spelling but will leave the filenames as original.
The phototransistor will be used in a future release of the software which is more or less ready but I'm waiting for the ESP32 Arduino 3.x core to be released (>Beta) before I base any published projects on my enhanced code base (which includes other features like, for example, supplying the configuration parameters via a web browser (AP mode). That core release should handle the NTP and UNIX rollovers in 2036 and 2038 reliably. Actually the code for the Futaba VFD clock is more or less 90% driver for the display and the clock code was intended to be minimal so as not to obscure the display driver logic too much. For using the photo transistor to dim the display I'll have two options. One is to use PWM to control the OE (output enable) pin of the shift registers where the duty cycle will be dependent on the ambient light. The other is to shorten the "ON" period in the multiplexing cycle dependent again on the ambient light. Anyway. I've been quite productive today and have built another one since I had the parts!

Great, thanks for clarifying, and I really like the auto-dimming concept. I never thought about the 2036/38 rollover; I have a few NTP-enabled projects running here at home, but never thought about their lifetime beyond a handful of years. Thanks for the heads up!

Would like to say for the same thing!
This clock is beautiful!

Great project.
Can you please give a link to a shared project or can you provide the gerber files for PCB ?

I'm glad you like it. I was also pleased about how it turned out. The Gerbers are attached. I did these to JLCPCB design rules but there should be nothing special about them so I guess any board house could make them.
gerbers_fatuba.zip (155.4 KB)
Maybe the BoM also helps but in principle I have used mainly 0805 and SOT-23 parts but with a few exceptions exceptions:

"Reference","Value","Datasheet","Footprint","Qty","DNP" "C1,C2,C3,C4","100nF","~","Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder","4","" "D1,D2,D3","1N4007","http://www.vishay.com/docs/88503/1n4001.pdf","Diode_SMD:D_SMA_Handsoldering","3","" "H1,H2,H3,H4,H5,H6","MountingHole","~","-- mixed values --","6","" "J1","power_aux","~","KF2510:KF2510-H-02","1","" "Q1,Q2,Q3,Q4","MMBT3904","https://www.onsemi.com/pub/Collateral/2N3903-D.PDF","Package_TO_SOT_SMD:SOT-23","4","" "Q5","Q_Photo_NPN","~","LED_THT:LED_D5.0mm_FlatTop","1","" "R1,R2,R5,R6","4.7k","~","Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder","4","" "R3,R4,R7,R8","18k","~","Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder","4","" "R9","10k","~","Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder","1","" "R10","0R","~","Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder","1","" "SW1","SW_Push","~","Button_Switch_THT:SW_PUSH_6mm","1","" "U1","Boost_SX1308","","Boost_sx1308:Boost_SX1308","1","" "U2,U3,U4,U5","CD4094","DOCUMENTATION","Package_SO:SO-16_5.3x10.2mm_P1.27mm","4","" "U6","ESP32_supermini_sym","","ESP32_supermini:ESP32_supermini_V0_01","1","" "U7","VFD_7-BT-317NK_sy1","","VFD_7-BT-317NK(1):VFD_7_BT-317NK_V0.01","1","" 
1 Like

Thank you very much for your answer and for the gerber files. Already I ordered PCBs for this project.

That was quick work. As soon as you get hold of an ESP32-C3 supermini you can try configuring the program with your WLAN credentials etc. and see if you get plausible debug output. It should do something even if there is no additional hardware connected. I wrote that code for version 2.x of the ESP32 Arduino core and, in the meantime, the current version is 3.x and I am not sure if everything is upwards compatible but any fix should be relatively easy if you want to use the later core. If you have any problems just say and I'll try to have a look.

I received the PCB, also the ESP32-C3 mini.. I don't know yet if is ok .. the info in serial not want to update.. time remain as in screenshot.. so is not ok.. I'll check how can be solve




That is perfectly OK. It shows the system is capable of getting a time stamp from the network. If, however, you want to see the time updating every second on the serial console you can try copying this line of code:

Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S zone %Z %z "); // special ESP32 print( tm*, const char[] ) 

after the following line in the loop(). It is about the eighth line from the beginning of the loop:

if ( timeinfo.tm_sec != lastSecond ) { 

The circuit board looks fine. Hopefully you have only pressed the display into place. This is the last item to solder once all the other components have been soldered into place. Do one last test before you get to that stage. Put the display in place then prop it upwards with enough pressure so that all the pins make good contact with the respective holes in the PCB and check it works OK without missing digits or segments. This should show any soldering errors, especially on the shift registers, as these would be difficult to fix when covered by the display.

I not soldered anything.. I just try it.. I saw the message from PCB :wink:
I added extra line to see the hours info at every seconds in serial monitor and info looks ok

OK. It looks like you are ready to solder all the components but first set the voltage on the boost converter to 15v to avoid possible damage at the first start. Hopefully, you find a boost converter with a similar footprint to the one the PCB was designed for. I used a no name Aliexpress type I bought years ago.
Which version of the Arduino ESP32 core are you using? If you were forced to use 2.x instead of 3.x then I'll plan to modify the code when I get a chance.

Th step-up module is same as yours. I checked now in Arduino IDE 1.8.19 software and ccre for ESP32 is

Unfortunately, I not have too much free time so he components will be solder in 3-4 weeks.

Your screen shot is for the ESP32 Nano. You see the version for your board here:

sorry, initial test was with version 2.0.5


but I updated to 3.3.0

and I try it to upload the sketch again in board:

so I downgraded to to v.2.0.5 and now results are ok

so until U can test in rel condition remian as it is now, but thanks you for your ideeas

Here it is, updated for Arduino ESP32 version 3.x also with the modification to update the time shown in the serial monitor at one second intervals. It is NOT backwards compatible with the older Arduino ESP32 version 2.x

futaba_7_B_317NF_esp32c_V1_04p.ino (14.2 KB)

1 Like

Did you get any further with this ?

I noticed at the time that your picture in post #10, although not so clear, appears to show an ESP32-C3 with a known defect which could affect its RF performance. I didn't say anything at the time because your results for RSSI in the screen shot in the same post seemed OK.

Anyway, you can identify the bad boards here: Some stores are selling broken ESP32-C3 Super Mini's - RoryHay.es .