Home        Kenley Weather     Guestbook

Section   Top  Credits    Components     Setup      Using the Ticker Board      Display Examples     Display    Display Modifications     Case Construction    Controls    Schematic     Vero Board     Code




ESP32 powered LED matrix displaying real-time news, weather, stock, date, time, barometer data, menu and web interface with notification.



There are 2 parts to the display. The top row shows date & time form an internet time server, indoor temperature, humidity and air pressure from the built in BMP280 module.

The customizable lower display ticker shows the following

todays date and time

local sunset for today and yesterday

local sunrise for today and yesterday

local day length and daily increase

 weather for customized locations

 weather forecast for customized locations

your YouTube stats

new headlines from location of your choice

share price information

message notifications



The display is housed in a timber/MDF box made from wood off cuts, a Neutral Density Perspex cover provides contrast for the display.



This project is a modification of the original by ericBcreator and full details of his project can be found here.

below the original clock design by ericBcreator


I have made the following changes to the original project to suit my needs and have marked them //Brett in the code where possible.

  • added sea level correction for air pressure - this keeps my barometric readings standard across the world

  • added version number to the web interface

  • changed light sensor pin to 34 to keep the wiring/code standard across 30 and 38 pin ESP32s

  • added choices for diff MAX7219 hardware settings - there seems to be 4 different wiring layouts for the display modules depending on manufacturer

  • change rotary encoder pins just for ease of my layout

  • removed WIKI  display as it was not reliable or useful to me

  • You Tube daily stats added along with average views per hour that day

  • sunrise sunset times added for the previous day

  • day length added including increase in day length in minutes

  • added PIR/Microwave motion sense display blanking - most power is consumed by the displays so they now shutdown when no one is in the room






The microprocessor is an ESP30 module either 32 or 38 pin.



4 in 1 MAX2719 LED Dot Matrix Display

The display uses 4 off MAX7219 4 in 1 LED Matrix modules. Each of the 4 modules contain 4 x 8x8 LED matrixes that's 1024 LEDs in total.


Alternative version with no socket for the Dot Matrix display saving space.





Air Pressure Temperature and Humidity Sensor

BMP/BME280 module

Bosch BME280 Humidity and Pressure Sensor is an integrated environmental sensor developed specifically for mobile applications where size and low power consumption are key design constraints.

The unit combines individual high linearity, high accuracy sensors for pressure, humidity and temperature in an 8-pin metal-lid LGA package, designed for low current consumption (3.6μA @1Hz), long term stability and high EMC robustness.

The humidity sensor features an extremely fast response time which supports performance requirements for emerging applications such as context awareness, and high accuracy over a wide temperature range.

The pressure sensor is an absolute barometric pressure sensor which features exceptionally high accuracy and resolution at very low noise.

The integrated temperature sensor has been optimized for very low noise and high resolution. It is primarily used for temperature compensation of the pressure and humidity sensors, and can also be used for estimating ambient temperature.

The Bosch BME280 supports a full suite of operating modes which provides the flexibility to optimize the device for power consumption, resolution, and filter performance.


BME280 sensor close-up

Interface: I2C & SPI
Supply Voltage: 1.71V to 3.6V
Temperature Range: -40 to +85C
Humidity Range: 0% to 100% rel. humidity
Pressure Range: 300hPa to 1100hPa





Power Supply Module


This DC to DC Step-Down Adjustable Power Supply Module is based on the LM2596 switching regulator.

This module converts the 12v input to 5 volts for the displays and RESP32.

The ESP32's built in regulator supplies the 3.3v supply for the BMP/BME280 sensor.

Input voltage: 4-35V
Output Voltage: 1.5-35V (adjustable)
Output current: rated current 2A, maximum 3A (heat sink required)
Conversion efficiency: Up to 92% (the higher the voltage, the higher the efficiency)
Switching Frequency: 150KHz
Rectifier: Non-Synchronous Rectification
Module Properties: Non-isolated step-down module (buck)
Short circuit protection: current limiting




Rotary Encoder

The schematic for this project uses a standard rotary encoder with push switch



The switch is connected to the 2 pins on the left and the 3 pins on the right are ground in the middle and the other 2 outer pins are DT and Clk   




You can get a rotary encoder in module form, in this case leave out R3 and R4 on the schematic


Movement Detectors

These sensors will turn on the display only if movement is detected

There are a couple of types of movement detectors and both have about the same range


The advantage of these modules is they come with a built in timer and sensitivity adjustment my code is written for these detectors.

The disadvantage is they can't be fitted in the case of the project unless a hole is cut for the sensor window.

In my setup the detector is in the ceiling and controls all my clocks in my study.



RCWL-0516 Microwave Radar Motion Detector

These modules use microwave radiation to detect movement and can be fitted behind the Perspex cover.

The disadvantage is that the don't have a built in timer so will need a bit of code to add the timing.






Setting Up

To see debug messages on the serial port go to line 76 and remove the "//" from #define DEBUG


You will need to enter your router SSID and pass key into the code

Once working the IP address will be shown. I then go to my router and make this a static address.

This will always be the address for your ticker board so you can setup a bookmark or shortcut key on your mobile.


Sea Level adjustment

Your pressure sensor will show your Air pressure reading at your location (height).

To show a corrected air pressure as shown in forecasts enter a sea level correction value for "sea_level" on line 137

To get the sea_level value get your current air pressure from the internet and take it off the reading from the serial terminal (Pressure not sea level). My value is 16.68



The code requires API setup for YouTube, the Weather, Stock info and News feeds.

Enter your API key into the code



You will need to create a YouTube API Key


Getting a Google Apps API key

Create an application here

On the API Manager section, go to "Credentials" and create a new API key

Enable your application to communicate the YouTube Api here


Use this link to check your YouTube API key works




Goto OpenWeather sign up and get an API key

get your location ID at https://openweathermap.org/ type the city, click search and click on the town

then check the link, like this: https://openweathermap.org/city/5128581 5128581 is the ID for New York


Stock Info


Get your API Key


News Feeds

Go to NewsAPI and get your API Key












Usage Instructions

How to use the WIFI Message Board.

Power up the massage board by pressing the power button on the right side of the case.

The message "connecting to wifi" will be displayed. Once connected the IP address of the connection will be displayed.

The message board will then attempt to connect to the time server and display "connecting to time server"

Once connected the display will show if DST is active.

After a short delay the time and date will be shown followed by the programmed menu items in order






The menus are selected by turning the control knob on the left of the case.






Pressing the control button during normal display will jump to the next item in the programmed list and display it.






Display examples







Sunrise Yesterday & Today for your location





Sunset Yesterday & Today for your location




Day Length & Increase/Decrease for your location




Local Weather






News Headlines (UK)






Share/Stock Price




Web Interface

The web interface is accessed  from a web browser using the IP address shown at startup or by selecting  "IP Address" from the menu.

There are buttons to control the device as well as an option to send a message to the display.

To send a message type in the IP address into a browser, type the message and hit send.

The message board will bleep to alert you of a new message.

If you set the ESP32 Mac address as static in your browser you can always use the same address and create a shortcut on your phone.







YouTube Stats



You will need to create a YouTube API Key


Getting a Google Apps API key

Create an application here

On the API Manager section, go to "Credentials" and create a new API key

Enable your application to communicate the YouTube Api here


Use this link to check your YouTube API key works








The displays are made up of 4 off 4 in 1 matrix modules.

The modules are linked together as 2 pairs comprising  4 x 4 in 1 modules.





Each module contains a Max2719 IC display driver chip

Two sets of 4 in 1 module are joined via their in and out pins using a row of 5 DuPont plugs bent over and soldered in place.


The Matrix displays are 1088AS Red LED displays.


Emitted Colour: Red

Face Color: Black

Type: Row Cathode Column Anode

Wavelength : 625 ~ 630nm

Forward Voltage : 2.1V ~ 2.5V

Forward Current: 20mA

Dimesions: 32mm x 32mm x 8.0mm

Close-up section shown LED connections





Matrix Display Modifications

Each of the 16 MAX2719 modules will need to be modified.

The data sheet calls for Supply Bypassing  to minimize power-supply ripple due to the peak digit driver currents,

connect a 10F electrolytic and a 0.1F ceramic capacitor between V+ and GND as close to the device as possible.

The MAX7219/MAX7221 should be placed in close proximity to the LED display, and connections should be kept as short as possible to minimize the effects of wiring inductance and electromagnetic interference.

Also, both GND pins must be connected to ground.

My modules had a 0.1F ceramic capacitor between V+ and GND but the 10F electrolytic capacitor was not fitted.

I fitted these 10F electrolytic capacitors to the back of every module as per thr pic below.




Selecting the RSET Resistor

The current per segment is approximately 100 times the current in ISET. To select RSET, see Table 11. The MAX7219/MAX7221s maximum recommended segment current is 40mA.

My modules were fitted with a 10K resistor see R1 below.

Using the table below shows the ISET resistor R1 mounted on the PCB and is set to 10K

This would allow a current of 40mA to flow through the Matrix LEDs.

You can either replace the surface mount LEDs with a 25K to 28K resistor or limit the brightness setting in the code to a max of 7.


table 11






































RSET resistor R1 can be replaced by a 25K to 28K

Wiring 5v to the displays.

To help prevent display errors it's worth wiring several separate feeds to the LED Matrixes.



Case Construction

The case is constructed from 18mm MDF Sheet and offcuts of wood.




To make the top of the case first cut out the outside edge of the sheet from MDF.

Then cut out the inside edge of the sheet.





The sides of the case are made from 8mm chipboard (2x ends) and 12mm x 32mm timber battens make up the top and bottom of the box.

These parts are glued and screwed together.









The parts go together as shown.



The base/wall mounting bracket is made from 8m chipboard with timber off cuts for fixing to the case sides with fixing pins.




The case is painted black and the edge of the top of the case covered in white melamine iron on edging.


Completed case with all boards and modules in place.



The case is finished of with a sheet of neutral density or dark grey tinted Perspex sheet.

This sheet massively increases the contrast to give a jet black background and bright red lettering even in the brightest room.



Perspex can be cut with a fine blade on a jigsaw/band saw or using a Stanley knife.

Finish off sanded edges with the flame of a plumbers torch.



The sheet is held in place by four Chicago Fasteners.




Case Dimensions


















I have drawn schematics for both 30 and 38 pin ESP32s



Schematic 1 30pin ESP32

Note see details on 4in1 display mod.

Use level shifted inputs for 5v motion sensor outputs or non level shifted for 3.3v motion sensor outputs.








Schematic 2 ECP32 38 Pin

Note see details on 4in1 display mod.

Use level shifted inputs for 5v motion sensor outputs or non level shifted for 3.3v motion sensor outputs.






Vero Board Layouts

I have included layouts for 30 pin and 38 pin ESP32s but have not built the 30pin version on Vero Board so make sure you check for error before building


ESP32 30 Pin



Rear flipped down




ESP32 38 Pin


Rear flipped down






V21 code see setup