Convertible IOT Led Matrix Clock

2019-09-15

A LED matrix design concept that allows data to be displayed in two different formats

Technologies used:

  • Arduino
  • ESP32
  • 3D Printing
An LED matrix that can convert between two display modes

Introduction

The starting idea for the project was to design a LED Matrix Alarm Clock that is made from off the shelf parts such as the MAX7219 - 4 in 1 LED Matrix, together with 3D Printed parts.

This clock would use a Wi-Fi capable chip such as an ESP32 in order to drive the LED Matrix as well as allowing the implementation of a variety of IOT related functions in the future.

Some concept functions are:

  • Time tracking using NTP server from the internet.
  • MQTT Integration
  • Alarm clock.
  • Node-RED Integration.

Convertible Concept

Initially I was going to design a clock that would have used a single 8 × 32 Matrix module, but as a way of innovating on existing designs, I decided to use two 8 × 32 modules and design the case so that it would have a convertible aspect.

My initial concept of how I want the matrix to convert can be seen in the next picture. The Matrix should be able to convert its LED resolution from an 8 × 64 single height format to a 16 × 32 double height format and vice versa.

A sketch of how the IOT Led Matrix would work

Prototype V1

For the first prototype of the convertible concept, I used Fusion 360 to design a case with a hinge in the middle that allows the two 8 × 32 matrix to convert and does change resolution.

CAD for the IOT Led Matrix

As mentioned in the concept, the prototype has two modes, pictured below:

  • Double Height Mode 16 × 32 (first picture below): This mode allows for the display of bigger numbers or letters.

A sketch of how the IOT Led Matrix would work

  • Single Height Mode 8 × 64 (second picture below): In this mode the letters are smaller, but you have additional space to display other things.

A sketch of how the IOT Led Matrix would work

Hardware V1

The hardware used for this project is listed below and can be easily sourced from aliexpress or any other electronic component store.

In order for the microcontroller to tell in which mode the clock is being used a reed switch was located on one matrix and a magnet on the other matrix. When the switch and the magnet come together they trigger a signal that tells the clock to be in double height mode, on the other instance, if they're apart from each other no signal is sent and the clock knows to be in single height mode.

On the back you can find the cable that goes between the two displays, a 5V DC jack and a debug port where a USB cable can pass through.

Software V1

The software was developed using Arduino on an ESP32 together with Magic Designs MD_PAROLA library which makes it easy to develop the convertible concept, since by default it allows for the creation of display zones that can be controlled independently.

In order to keep this post as clean and short as possible, I won't be writing the whole code in this post, instead the code can be found in this repo. A lot of the code that I used for this project comes from the examples given by the MD_PAROLA folks, so huge shout out to them.

Working prototype V1

Below is a GIF, where you can see the functioning of the V1 prototype. Current features are:

  • Convertible from 8 × 64 (single height) to 16 × 32 (double height) resolution.
  • Big Clock on double height mode.
  • Small Clock and text display available on single height mode.
  • Brightness Up/Down control trough buttons.

A gif showing how the convertible LED matrix works

The features implemented work great but still in the future I'm planning to implement a lot of things such as an IOT message dashboard so that it can show a variety of messages in the place of where it currently shows the static message "Alwurts".

IOT implementation will be done using MQTT protocol, which can be used with a variety of platforms such as adafruit.io or Node-RED. Once a connection to a server is established, a number of features such as notifications can be implemented with ease using something like IFTTT.