{"id":11718,"date":"2016-09-20T19:35:13","date_gmt":"2016-09-20T23:35:13","guid":{"rendered":"http:\/\/embedded-lab.com\/blog\/?p=11718"},"modified":"2016-10-01T21:52:33","modified_gmt":"2016-10-02T01:52:33","slug":"wifi-enabled-scrolling-led-matrix-display","status":"publish","type":"post","link":"https:\/\/embedded-lab.com\/blog\/wifi-enabled-scrolling-led-matrix-display\/","title":{"rendered":"Wifi enabled 8&#215;64 pixel LED matrix display"},"content":{"rendered":"<p>This project is a modification of my previous <strong><a href=\"http:\/\/embedded-lab.com\/blog\/portable-bluetooth-enabled-scrolling-led-matrix-display-part-1\/\" target=\"_blank\">Bluetooth-enabled LED matrix<\/a><\/strong> display project, which used 8\u00d764 monochromatic LED matrix (total 512 LEDs)\u00a0for displaying scrolling text message. The original project used Bluetooth for display data transfer from a smartphone, but this one now uses Wifi. The display message is sent through web browser to a ESP8266 module\u00a0that\u00a0is configured as a web-server. No Arduino or any other microcontroller is used. ESP8266 alone works as a WiFi server and drives the MAX7219-based LED matrices.<\/p>\n<div id=\"attachment_11724\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180645.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11724\" class=\"wp-image-11724 size-full\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180645.jpg\" alt=\"P_20160823_180645\" width=\"590\" height=\"173\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180645.jpg 590w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180645-580x170.jpg 580w\" sizes=\"auto, (max-width: 590px) 100vw, 590px\" \/><\/a><p id=\"caption-attachment-11724\" class=\"wp-caption-text\">Wifi-enabled scrolling led matrix display<\/p><\/div>\n<p><!--more--><\/p>\n<h5>Hardware Setup<\/h5>\n<p>Things needed (available on my <strong><a href=\"https:\/\/www.tindie.com\/stores\/rajbex\/\">Tindie Store<\/a><\/strong>):<\/p>\n<ul>\n<li><a href=\"https:\/\/www.tindie.com\/products\/rajbex\/easy-matrix-a-cascadable-led-matrix-module-kit\/\" target=\"_blank\"><strong>Easy Matrix modules<\/strong><\/a> (8 pcs)<\/li>\n<li><a href=\"https:\/\/www.tindie.com\/products\/rajbex\/dual-regulated-power-supply-50v33v-board\/\" target=\"_blank\"><strong>Dual power supply module<\/strong><\/a> (1 pc)<\/li>\n<li><strong><a href=\"https:\/\/www.tindie.com\/products\/rajbex\/nodemcu-esp8266-development-board\/\" target=\"_blank\">NodeMCU ESP8266 board<\/a>\u00a0<\/strong>(1 pc)<\/li>\n<li>Wires, enclosures, etc<\/li>\n<\/ul>\n<p>The 8&#215;64 pixel display matrix is constructed using eight <strong><a href=\"http:\/\/embedded-lab.com\/blog\/introducing-easy-matrix-a-cascadable-8x8-led-dot-matrix-display-module\/\" target=\"_blank\">Easy Matrix display<\/a><\/strong> modules in a cascade.<\/p>\n<p><em><strong>What is Easy Matrix?<\/strong><\/em><\/p>\n<blockquote><p><span style=\"color: #333333;\"><strong>Easy Matrix<\/strong> is an easily cascadable 8\u00d78 monochromatic LED dot matrix display module with onboard MAXIM\u2019s MAX7219 LED driver chip. The MAX7219 allows you to drive the LED matrix using only three I\/O pins of Arduino or any other microcontroller. The LED matrix module used in Easy Matrix has a bigger dot size (5mm) and has the overall display dimensions of 60.2mm x 60.2mm (2.4\u2033x2.4\u2033). It is easily cascadable in series with the help of precisely aligned male and female header pairs located on the left and right sides of the display module. With lots of freely available Arduino libraries for MAX7219 chip, this module is easy to use in any Arduino project for displaying basic text and animation.<\/span><\/p><\/blockquote>\n<p>You can buy <strong><a href=\"https:\/\/www.tindie.com\/products\/rajbex\/easy-matrix-a-cascadable-led-matrix-module-kit\/\" target=\"_blank\">Easy Matrix Kit<\/a><\/strong> from our <strong><a href=\"https:\/\/www.tindie.com\/products\/rajbex\/easy-matrix-a-cascadable-led-matrix-module-kit\/\" target=\"_blank\">Tindie Store<\/a>.<\/strong><\/p>\n<div style=\"width: 600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2014\/10\/EasyMatrix1.jpg\" alt=\"\" width=\"590\" height=\"353\" \/><p class=\"wp-caption-text\">Easy Matrix module<\/p><\/div>\n<div style=\"width: 600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2014\/09\/EasyMatrixTitle.jpg\" alt=\"\" width=\"590\" height=\"268\" \/><p class=\"wp-caption-text\">3 Easy Matrix boards cascaded together<\/p><\/div>\n<h5>Wiring<\/h5>\n<p>For this project, I used 8 <strong><a href=\"http:\/\/embedded-lab.com\/blog\/introducing-easy-matrix-a-cascadable-8x8-led-dot-matrix-display-module\/\" target=\"_blank\">Easy Matrix<\/a><\/strong> modules cascaded in series to construct a 8&#215;64 LED matrix display. The input header of Easy Matrix are located on right side and consists of three signal lines (<strong>DIN<\/strong>, <strong>CLK<\/strong> and <strong>LOAD<\/strong>) and two power supply lines. The signal lines are driven using the ESP8266 SPI pins. So, connect <strong>DIN<\/strong>, <strong>CLK<\/strong> and <strong>LOAD<\/strong> pins of the rightmost Easy Matrix input to <strong>D7<\/strong> (GPIO13), <strong>D5<\/strong> (GPIO14), and <strong>D3<\/strong> (GPIO0) pins of <strong><a href=\"https:\/\/www.tindie.com\/products\/rajbex\/nodemcu-esp8266-development-board\/\" target=\"_blank\">NodeMCU<\/a><\/strong>, respectively. The\u00a05V DC\u00a0supply for Easy Matrix and 3.3V for NodeMCU are provided using a <strong><a href=\"https:\/\/www.tindie.com\/products\/rajbex\/dual-regulated-power-supply-50v33v-board\/\" target=\"_blank\">Dual (+5V\/3.3V) regulated power<\/a><\/strong> source. These components are all enclosed into a customized box made out of\u00a0furring strip boards from Home Depot. Note that while programming the NodeMCU board, no external power supply is required as it is supplied\u00a0from the USB port. But when it is placed\u00a0inside the enclosure with other display modules, its 3.3V pin should be connected to the 3.3V pin of the dual power supply board. Following figure shows the connections between the power supply, NodeMCU, and LED matrix panel.<\/p>\n<div id=\"attachment_11796\" style=\"width: 590px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/09\/Wiring.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11796\" class=\"size-medium wp-image-11796\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/09\/Wiring-580x402.png\" alt=\"Wiring between the different modules \" width=\"580\" height=\"402\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/09\/Wiring-580x402.png 580w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/09\/Wiring.png 590w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><p id=\"caption-attachment-11796\" class=\"wp-caption-text\">Wiring between the different modules<\/p><\/div>\n<div id=\"attachment_11722\" style=\"width: 590px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180150.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11722\" class=\"wp-image-11722 size-medium\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180150-580x320.jpg\" alt=\"P_20160823_180150\" width=\"580\" height=\"320\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180150-580x320.jpg 580w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180150.jpg 590w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><p id=\"caption-attachment-11722\" class=\"wp-caption-text\">8 Easy Matrix boards, NodeMCU and power supply board inside the enclosure<\/p><\/div>\n<p>The input to the power supply module can be provided from a 9V\/1A rated DC wall adapter. For portable use of the display, I use a 9.6V Ni-MH battery pack for input power.<\/p>\n<h5><strong>Software<\/strong><\/h5>\n<p>For this project, the NodeMCU is programmed using Arduino IDE. You will need to setup <strong><a href=\"https:\/\/github.com\/esp8266\/Arduino\" target=\"_blank\">ESP8266 Arduino core<\/a><\/strong> for this.\u00a0Other Arduino libraries required are <strong><a href=\"https:\/\/github.com\/markruys\/arduino-Max72xxPanel\" target=\"_blank\">Max72xxpanel<\/a><\/strong>, and <strong><a href=\"https:\/\/github.com\/adafruit\/Adafruit-GFX-Library\" target=\"_blank\">Adafruit_GFX<\/a><\/strong>. The project also requires ESP8266 Wifi support libraries that get preinstalled with the ESP8266 Arduino core setup. The NodeMCU is programmed to act as a webserver in the local Wifi network. The IP address of the webserver is displayed on the LED matrix scrolling from right to left when the project\u00a0is powered on. Then type in the same IP address in the URL field of a web-browser on a computer that is connected to the same network. The ESP8266 webserver returns a data entry field to the browser screen, where you can enter the text message that you would like to be displayed on the LED matrix.<\/p>\n<p>Download code:\u00a0<strong><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/09\/Easy_Matrix_Demo1_Scrolling_Message_Wifi_2.zip\">Easy_Matrix_demo1_scrolling_message_wifi_2<\/a><\/strong><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Note:<\/strong> <\/span>Make sure you change the SSID and password in the code to match with your network.<\/p>\n<h5><strong>Output<\/strong><\/h5>\n<p>After uploading the code to ESP8266, when the display is powered on, you will see the IP address of the ESP8266 Webserver scrolling on the LED matrix panel.<\/p>\n<div id=\"attachment_11723\" style=\"width: 590px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180251.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11723\" class=\"wp-image-11723 size-medium\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180251-580x151.jpg\" alt=\"P_20160823_180251\" width=\"580\" height=\"151\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180251-580x151.jpg 580w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180251.jpg 590w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><p id=\"caption-attachment-11723\" class=\"wp-caption-text\">IP address of the webserver<\/p><\/div>\n<p>Next, type in this IP address on your computer browser, you will see the following page is returned by the ESP8266. The computer must be on the same WiFi network.<\/p>\n<div id=\"attachment_11719\" style=\"width: 590px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/espmatrix1.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11719\" class=\"size-medium wp-image-11719\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/espmatrix1-580x352.jpg\" alt=\"ESP8266 webserver page\" width=\"580\" height=\"352\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/espmatrix1-580x352.jpg 580w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/espmatrix1-1024x622.jpg 1024w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/espmatrix1.jpg 1046w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><p id=\"caption-attachment-11719\" class=\"wp-caption-text\">ESP8266 webserver page<\/p><\/div>\n<p>Type in the message that you would like to send to the display and hit <strong>Submit<\/strong> button. The message is received by the ESP8266 webserver and is displayed on the matrix panel.<\/p>\n<div id=\"attachment_11720\" style=\"width: 590px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/espmatrix2.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11720\" class=\"size-medium wp-image-11720\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/espmatrix2-580x354.jpg\" alt=\"Type in the message in the message field\" width=\"580\" height=\"354\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/espmatrix2-580x354.jpg 580w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/espmatrix2-1024x625.jpg 1024w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/espmatrix2.jpg 1031w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><p id=\"caption-attachment-11720\" class=\"wp-caption-text\">Type in the message in the message field<\/p><\/div>\n<div id=\"attachment_11725\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180605.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11725\" class=\"wp-image-11725 size-full\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180605.jpg\" alt=\"P_20160823_180605\" width=\"590\" height=\"153\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180605.jpg 590w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/08\/P_20160823_180605-580x150.jpg 580w\" sizes=\"auto, (max-width: 590px) 100vw, 590px\" \/><\/a><p id=\"caption-attachment-11725\" class=\"wp-caption-text\">Message sent from the web interface is displayed on the LED matrix scrolling from right to left<\/p><\/div>\n<ul>\n<li><a href=\"https:\/\/www.tindie.com\/products\/rajbex\/easy-matrix-a-cascadable-led-matrix-module-kit\/\" target=\"_blank\"><strong>Buy Easy Matrix modules<\/strong><\/a><\/li>\n<li><a href=\"https:\/\/www.tindie.com\/products\/rajbex\/dual-regulated-power-supply-50v33v-board\/\" target=\"_blank\"><strong>Buy Dual power supply module<\/strong><\/a><\/li>\n<li><strong><a href=\"https:\/\/www.tindie.com\/products\/rajbex\/nodemcu-esp8266-development-board\/\" target=\"_blank\">Buy NodeMCU ESP8266 board<\/a><\/strong><\/li>\n<\/ul>\n<p>I hope you enjoyed reading\u00a0this project. You can use the above\u00a0links if you are interested to buy the major parts required to build\u00a0this project.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This project is a modification of my previous Bluetooth-enabled LED matrix display project, which used 8\u00d764 monochromatic LED matrix (total 512 LEDs)\u00a0for displaying scrolling text message. The original project used Bluetooth for display data transfer from a smartphone, but this one now uses Wifi. The display message is sent through web browser to a ESP8266 module\u00a0that\u00a0is configured as a web-server. No Arduino or any other microcontroller is used. ESP8266 alone works as a WiFi server and drives the MAX7219-based LED matrices.<\/p>\n","protected":false},"author":1,"featured_media":11892,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1044,1464,1467],"tags":[1321,1445],"class_list":["post-11718","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esp8266","category-featured","category-projects","tag-esp8266","tag-wifi-enabled-scrolling-led"],"_links":{"self":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/11718","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/comments?post=11718"}],"version-history":[{"count":16,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/11718\/revisions"}],"predecessor-version":[{"id":11800,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/11718\/revisions\/11800"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/media\/11892"}],"wp:attachment":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/media?parent=11718"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/categories?post=11718"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/tags?post=11718"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}