ESP8266 based NTP clock with YouTube statistics display

I made some internet connected 8 digit 7 segment LED displays using a NodeMCU and Harris semiconductor ICM7228A LED driver ICs the latter of which were salvaged from old aircraft avionics. As the chips would unlikely sell on eBay I decided to make them into a project and improve upon my earlier YouTube counter project which displayed the subscriber and view counts on a 4 digit and 8 digit LED display.

This version uses a 8 digit 0.56″ LED display and shows the current time by default which is obtained and set automatically by querying the NTP servers available on the internet. A button on the rear selects the mode to display; clock, number of YouTube subscribers to your channel and total number of video views. The button also toggles DST on and off by pressing and holding the button for more than 5 seconds and releasing it.

I fitted the completed PCB into a photo frame to complete the project and able to display it in my home. I have made full instructions available to download if you wanted to make one yourself and I also have a limited number for sale (now sold out!) on eBay which you can purchase by going to the links down below. Please note that you will need to obtain a YouTube API key for the YouTube statistics functions to work. This is free of charge but requires a little work on the Google developers page.

To sum up this unit is an universal 8 digit internet connected display which could be used for a number of things but in this example it is loaded with firmware to display the time from the NTP time service and also provide YouTube statistics of your channel showing subscriber count and total video view count. Due to YouTube’s limitations implemented in 2019 the counter will only show exact numbers of subscribers up to 999. After that it will begin rounding them down on a sliding scale starting with the lowest 10. For example 1234 subscribers will show as 1230 and 12345 subscribers will show as 12300 subscribers. Hence this product is suitable for small channels and producers who want to keep an eye on their subscribers as well as know the time!

The counter works by connecting to the internet through an ESP8266 WiFi module which has a 32 bit RISC-V CPU onboard running at 80Mhz with some spare flash space for user programs which can be programmed in C++ or Python. This is where the firmware for operation is stored. An ICM7228 display driver chip handles the multiplexing and display blanking and drives 8 common anode high efficiency displays directly without the need for current limiting resistors.

Instructions for use including obtaining API key

YouTube video

Source code


PCB design files (KiCad)

Pre-compiled .bin files (upload using the NodeMCU firmware programmer; esp8266flasher.exe) flash size set to 4Mb, DIO mode @ 40Mhz (not to be confused with CPU clock speed) and flash to location 0x00000. Use 115200 baud.

UK and Europe

Please click on continue reading for the photo gallery.

The software “the source code” is being released as open source however the hardware design “end product including PCB” is being released under the Creative Commons non-commercial licence which in a nutshell means the following:-

  1. You may replicate / use this project for your own personal use only.
  2. You may sell any completed units both bought from me and made yourself to friends and family.
  3. You may modify this project to suit your own needs.
  4. You may not replicate this project and sell it as a commercial product.
  5. You may not pass this off as your own work although any modified versions you make you may do so but give any credits due to me for the original design.
  6. Portions of this code are open source and credits are given in the source code.
  7. Project is released under creative commons attribution-non commercial (CC BY-NC)


3 Replies to “ESP8266 based NTP clock with YouTube statistics display”

  1. If anyone ever wants to make this project I used ESP board support files version 2.6.0 – they have been updated since then so any compilation errors may be due to this. It’s easy to roll back the version in Arduino IDE’s boards manager configuration menu.

    The ArduinoJson library version may affect compilation too. I was using version 6.21.2 at the time of developing this project.

Comments are closed.