Introduction: 8x32 LED Matrix Display With NODEMCU

About: The Tutorial Education Program is an honors program for Brazilian undergraduates, sponsored by the Ministry of Education. Based on philosophical principles of tutorial education in which small groups of academ…

The project was created with the intention of being used at the door of the PET room of UFES 'computer engineering, being a simple 8x32 LED display that uses a NodeMCU to be controlled remotely, by a cell phone or computer.

Step 1: Components

The following items will be used for the project: With NODEMCU

  • 1 8x32 LED Matrix Display Max7219
  • 1 ESP8266 NodeMcu ESP-12 WiFi Module
  • 1 2-position switch (3-pin)

All of these materials can be easily found on the Internet. If the idea is to make this project as fast as possible it is recommended to buy the items on the website Mercado Livre (only if you live in Brazil) since it has safe and fast shipping (the products will arrive at the destination in about 1 or 2 weeks). However, if the project doesn’t need to be done in a hurry, it’s a lot cheaper to buy the items abroad on websites like eBay, AliExpress, etc. But there is no guarantee as to when and if the product will arrive at the destination.
Total average purchase cost on Mercado Livre: +/- 170 reais (around 31.61 United States Dollar).

Step 2: Hardware - Setting Up the Circuit

The circuit schematic can be found in the displayPET.fzz file below, we used the Fritzing program to create it, and thus understand the connections in the protoboard. Mount it on a protoboard to test and if everything works correctly, make a PCB board for your circuit.

Step 3: Software - Downloading the Code

The code and the libraries that you will use in this project can be downloaded in the file below or in the following link:

Download the Arduino IDE and the libraries on your computer to upload the code to the NodeMCU.

Step 4: Software - Explanation of the Code (Sensors Operation)

First, let's explain the FC16.h library, which was used to control the LED display. We use some basic functions in void setup (), such as display.begin () to start the display, display.setIntensity () to define the brightness intensity of the LEDs and display.setText () to choose the phrase that would be shown on the display. And to finish this library, in the void loop () function, we use the function display.update () that calls the routine to scroll the sentence through the display.

In order to be able to have a remote communication, we use NodeMCU. When starting it, it generates a local IP using the function Serial.println (WiFi.localIP ()), which we can access through any device connected to the same network as the ESP8266-01 present in NodeMCU. As we can access via the web, we can also create an html page for this, which is defined by the const char index_html [] PROGMEM = R "rawliteral (). For security, we decided to put a password lock on the html page. This security was made using the ESPAsyncWebServer.h library.

Finally, the communication between the html page and the display takes place via the buttons on the page that, when clicked, will change the URL of the page. This URL change can be read by ESP8266-01 using the server.on ("url", HTTP_GET, [] (AsyncWebServerRequest * request) {} function. And so we defined that, for each URL changed, the display text would also be changed, referring to the button that was clicked on the page.

Step 5: Printed Circuit Board (PCB)

If everything went well so far, make a PCB board (we usually use the software EAGLE CAD to make it) and then, weld the components. The circuit will look like the one shown on the picture above.

You can download the files from to view the 3D model and make any changes you want.

Step 6: The Project Working

Watch the video of the final demonstration of the project.

Step 7: Project's License

This work is licensed with the License Creative Commons Atribuição 4.0 Internacional.