WIFI Enabled LED Matrix




Introduction: WIFI Enabled LED Matrix

About: Just a guy that likes to program and connect wires to things.

This projects has an Arduino UNO connected to a 7219 LED Matrix with 4- 8x8 blocks. The Arduino is also connected to a ESP8266-12 Development board.

The ESP8266-12 (NodeMCU)

  • Connects to your Wifi (you supply SSID and password)
  • Starts a web server on port 80
  • Sends the Arduino its IP address (which scrolls on the LED Matrix) so you know how to go to the web server.
  • Any data enter in the form on the webpage is sent to the Arduino which scrolls it on the LED Matrix.
  • You can also port forward from your wifi router to have an internet enabled device.

Step 1: Parts Needed

You will need...

Step 2: Programming the ESP8266 Board

  1. Connect ESP8266-12 to the USB to serial programmer. Be sure to only use one with 3.3v
  2. Load the ESP8266 NodeMcu boards into the Arduino editor.
    • In File menu, under preferences
    • Put the following in the "Additional Board Managers URLs" 'http://arduino.esp8266.com/stable/package_esp8266com_index.json'
    • The in the Tools menu, click on Board and then "boards Manager"
    • Install the ESP8266 by the ESP8266 Community
  3. Load https://github.com/aapicella/WiFi-enables-LED-Mat...
  4. Set the Board to NodeMCU 0.9 (ESP-12 Module)
  5. Check jumper for programming or GPI0 to ground is connected to program

  6. Update and install program.

  7. Remove jumper and test by using serial monitor

  8. Program should print Connected follow by IP address. It will resend IP until you access the IP with web browser and enter text into the form.

Step 3: Attach 7219 LED Matrix to Arduino

  1. Connect LED power to 5V on Arduino
  2. Connect Ground to Ground
  3. Connect Clock to Arduino pin 13
  4. Connect Data or DIN to pin 11
  5. Connect CS to pin 10
  6. Install the Library
    1. Go to Sketch Menu, Include library then Manage Libraries.
    2. Install MD_MAX72XX library.
    3. Some LED Matrix require changing the MD_MAX72xx.h header file
      1. The file is located in your arduino directory under library/MD_MAX72xx/src
      2. edit it and change
      3. #define USE_FC16_HW 1
  7. Download this sketch: https://github.com/aapicella/WiFi-enables-LED-Mat...
  8. Compile and install on Arduino
  9. To test use serial monitor (set to 115200) and type in something to display on LED.

Step 4: Bring It Together

Next attach the ESP8266 to the Arduino

  1. Connect the 3.3v from Arduino to the ESP8266 module
  2. Connect Ground to Ground
  3. Connect RX to TX (note the board has a typo and TX/RX as switched)
  4. Connect TX toRX

Power on system by plugging in the Arduino.

The LED should Scroll "Hello!!" and soon be followed by the IP it gets from your wifi.

From your Phone, tablet or PC open a brower and put in the IP. You may need to put http:// infront of the ip.

On my home network its:

This was my first Instructable. I hope you enjoyed it.



    • Creative Misuse Contest

      Creative Misuse Contest
    • Tiny Home Contest

      Tiny Home Contest
    • Metalworking Contest

      Metalworking Contest

    35 Discussions

    Currently I set it to 52 characters. Can modify the HTML in the arduino script.

    if you search for maxlenght='52' you may change that.

    I hope that answers your question.

    There is an obvious mistake on connecting ESP8266 to the Arduino. It says connect RX to RX, TX to TX. It should be RX to TX and TX to RX.

    4 replies

    I updated the doc, but this board has RX/TX mislabeled so it looks like rx/rx when its really rx/tx

    I should explain that. The development board has them reversed. Apparently they were mislabeled. I didn't find that out until I read an article after this post. You are absolutely correct that is should be Rx-> Tx and Tx-> Rx.

    Could you please specify where have you found about this mislabeling? Because in other places, like this from official arduino website, i find projects telling to connect Rx-Tx, Tx-Rx:


    I am trying this build this but I get this error

    Arduino: 1.8.2 (Mac OS X), Board: "NodeMCU 0.9 (ESP-12 Module), 80 MHz, 115200, 4M (3M SPIFFS)"

    Archiving built core (caching) in: /var/folders/rc/pbz6jhyd73d_v4qvqdqq4qqw0000gp/T/arduino_cache_598623/core/core_esp8266_esp8266_nodemcu_CpuFrequency_80,UploadSpeed_115200,FlashSize_4M3M_fa9f64009382dc5d389fb3de0b203fc6.a

    Sketch uses 233609 bytes (22%) of program storage space. Maximum is 1044464 bytes.

    Global variables use 33536 bytes (40%) of dynamic memory, leaving 48384 bytes for local variables. Maximum is 81920 bytes.

    warning: espcomm_sync failed error: espcomm_open failed error:espcomm_upload_mem failed error: espcomm_upload_mem failed

    The other thing is you mention

    1 reply

    The error seems to be communications with your ESP. In the past if I received this error I would swap rx and tx. I found that the development module had these mislabeled. I hope that works for you.

    It's great that it will work on my "wife" router but will it work on mine! ?

    1 reply

    Quick, easy and cool! You don't need the Arduino Uno for this though - it can all be done with the ESP8266. Get a WeMos D1 Mini or one of the ESP8266 dev boards like the LUA boards and program/connect it all to the ESP8266.

    6 replies

    The MAX7219 LED matrices do tend to be labeled for 5V and the ESP8266 is at 3.3V (though its inputs are 5V tolerant). I did find one source that said that if you power the MAX7219 with 5V (and there is a 5V pin on the NodeMCU), it will understand 3.3V logic control. I haven't tried it. Have you tried it?

    5V from the board works fine. I think It even works on 3.3V if II recall... I connect it to 5V and never had issues speaking with it from the ESP8266. Same with Neopixels too...

    Actually, just checked my NodeMCU board and both the Maxtrix display and a Neopixel strip are running off the 3.3V lines. No issues on either though! :)

    The LED matrix I have runs on 5v. When given 3.3v it stops working properly. The letters scroll through the first part then the display starts flickering. There are 256 leds so maybe once a certain number are lit it stops working properly. In any case the MAX7219 is rated for 5v and there is a different low voltage chip available called MAX6951 which sparkfun recommends for low voltage projects. I will rebuild this project without the arduino to verify.

    Have you tried powering with 5v, but using 3.3v logic?

    Just tested my LED matrix and works fine on the NodeMCU board when power is connected to Vin (5v USB) pin and the data pins are all coming from the ESP8266. No issues, works fine.