Introduction: WIFI Enabled LED Matrix

Picture of WIFI Enabled LED Matrix

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

Picture of Parts Needed

You will need...

Step 2: Programming the ESP8266 Board

Picture of 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" ''
    • The in the Tools menu, click on Board and then "boards Manager"
    • Install the ESP8266 by the ESP8266 Community
  3. Load
  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

Picture of 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:
  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

Picture of 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.


chatainsim (author)2017-11-06

What's the max charactere you can enter ?

aapicella (author)chatainsim2017-11-08

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.

chatainsim (author)aapicella2017-11-08

Yes, it does !

Thank you.

Raigedas (author)2017-10-01

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.

aapicella (author)Raigedas2017-10-09

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

aapicella (author)Raigedas2017-10-02

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.

Raigedas (author)aapicella2017-10-03

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:

aapicella (author)Raigedas2017-10-09

the esp8266 site called out the typos on the dev board labels. That's what caused the confusion.

Andrewf64 (author)2017-09-12

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

aapicella (author)Andrewf642017-09-25

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.

aapicella (author)2017-07-25

I took your advice and built this out without the Arduino. This build does have its advantages in lowering the complexity of the ESP8266 programming. Just Serial print and see the results. I put an Instructable up for the ESP8266 without the Arduino here:

Yornotelppa (author)2017-07-09

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

aapicella (author)Yornotelppa2017-07-23

Fixed the typo thanks.

chunkysteveo (author)2017-07-11

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.

arpruss (author)chunkysteveo2017-07-16

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?

chunkysteveo (author)arpruss2017-07-16

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! :)

aapicella (author)chunkysteveo2017-07-18

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.

arpruss (author)aapicella2017-07-18

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

chunkysteveo (author)arpruss2017-07-20

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.

aapicella (author)arpruss2017-07-18

No but i will. The datasheet said the min was 3.5 so it may work.

Naevus (author)arpruss2017-07-16

I tried. It works fine. I have a small weather station that has been operating 24/7 for more than 18 months.

arpruss (author)Naevus2017-07-16

Excellent! That will all simplify a project I have in mind.

Naevus (author)arpruss2017-07-16

And by the way! Your Arduino also has 5V interface pins. But you connected the ESP to it without any problems.

aapicella (author)chunkysteveo2017-07-11

That sounds like a good idea to me.

chunkysteveo (author)aapicella2017-07-11

I have my YouTube stats running on mine - a NodeMCU (ESP8266) board, the 8x32 matrix screen and a USB cable for power. Lovely stuff!

bamboombaps (author)2017-07-16

can i use this to send messages from work to my kids at home?

theknurd (author)bamboombaps2017-07-18

Yeah. You just have to externalize (serve) the page to the internet.

WannaDuino (author)2017-07-16

why the UNO>> just use a FTDI costs 1USD

Or just program the ESP, so you don`t even have to use the UNO.

I don`t get that.

WannaDuino, ESP junky.

arpruss (author)2017-07-16

By the way, if you search for MAX7219 matrix on aliexpress, you can get the cost of the display down to less than $4.

RobertDan (author)2017-07-16

Very cool! I hope to make one. TY for sharing.

msameer39 (author)2017-07-16

Awesome buddy

econjack (author)2017-07-16

Following chunkysteveo, you could also use an Arduino Nano. It's pretty much exactly the same as the Uno, but much smaller and less expensive (about $3). I would not suggest buying the Nano Pro Mini even though it is cheaper, but it doesn't have the USB connector onboard, which makes it less convenient to program. If you don't know programming, look on Amazon for Beginning C for Arduino. It's written for people who have zero programming experience. Read the reviews, click on the "Look Inside" banner on the cover to view the Table of Contents to see if you think it might work for you. Disclaimer: It's my book.

AraviChow (author)2017-07-09

Cool bro

DIY Hacks and How Tos (author)2017-07-09

Cool. This would make a great display for any Internet of Things project.

About This Instructable




Bio: Just a guy that likes to program and connect wires to things.
More by aapicella:ESP8266-To-LED Matrix (Look Ma No Arduino)WIFI Enabled LED Matrix
Add instructable to: