book collections email follower instructable user

This project came about when I created this instructional: https://www.instructables.com/id/WIFI-Enabled-LED-...

I received comments from people that it could be accomplished without the Arduino. I took that as a challenge.

The purpose of this project is to program an ESP8266-12 to service up a web page with a form, then take the text loaded into the form and display it on a LED Matrix.

The ESP8266-12 (NodeMCU)

  • Connects to your Wifi (you supply SSID and password)
  • Starts a web server on port 80
  • Display IP Address on the LED Matrix until Text is entered.
  • Remove URL tags from text enter on webpage and send to LED Matrix
  • On your home internet router you may forward port 80 on that IP to enable it on the internet.

Step 1: Parts Needed

Picture of Parts Needed
hello.png

You will need....

  1. Wifi Development board (esp8266-12 NodeMCU) for about $5 on Amazon here.
  2. 7219 LED Matrix 4 - 8x8 modules for about $8 on Amazon here
  3. Programmer for WIFI module, I used this one from Tayda Electronics for about $2 (make sure it has 3.3v option.
  4. Enclosure. I use a cigar box
  5. Power supply. I cut the end off an old 5v phone charger.
  6. Wires. Female to Female
jaatbuddhi11 months ago

Somehow, the sketch doesn't compile, I keep getting the following error message

Arduino: 1.8.5 (Windows 7), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

In file included from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFi.h:40:0,

from C:\Users\USER\Desktop\SP8266_LED_MATRIX\SP8266_LED_MATRIX.ino:5:

C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiServer.h:52:14: error: invalid abstract return type for member function 'WiFiClient WiFiServer::available(uint8_t*)'

WiFiClient available(uint8_t* status = NULL);

^

In file included from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFi.h:39:0,

from C:\Users\USER\Desktop\SP8266_LED_MATRIX\SP8266_LED_MATRIX.ino:5:

C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiClient.h:45:7: note: because the following virtual functions are pure within 'WiFiClient':

class WiFiClient : public Client, public SList<WiFiClient> {

^

In file included from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiClient.h:27:0,

from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFi.h:39,

from C:\Users\USER\Desktop\SP8266_LED_MATRIX\SP8266_LED_MATRIX.ino:5:

C:\Users\USER\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/Client.h:37:22: note: virtual void Client::flush()

virtual void flush() = 0;

^

C:\Users\USER\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/Client.h:38:22: note: virtual void Client::stop()

virtual void stop() = 0;

^

In file included from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiServerSecure.h:21:0,

from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFi.h:41,

from C:\Users\USER\Desktop\SP8266_LED_MATRIX\SP8266_LED_MATRIX.ino:5:

C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiServerSecureBearSSL.h:58:22: error: invalid abstract return type for member function 'BearSSL::WiFiClientSecure BearSSL::WiFiServerSecure::available(uint8_t*)'

WiFiClientSecure available(uint8_t* status = NULL);

^

In file included from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiServerSecureBearSSL.h:24:0,

from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiServerSecure.h:21,

from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFi.h:41,

from C:\Users\USER\Desktop\SP8266_LED_MATRIX\SP8266_LED_MATRIX.ino:5:

C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiClientSecureBearSSL.h:34:7: note: because the following virtual functions are pure within 'BearSSL::WiFiClientSecure':

class WiFiClientSecure : public WiFiClient {

^

In file included from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiClient.h:27:0,

from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFi.h:39,

from C:\Users\USER\Desktop\SP8266_LED_MATRIX\SP8266_LED_MATRIX.ino:5:

C:\Users\USER\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/Client.h:37:22: note: virtual void Client::flush()

virtual void flush() = 0;

^

C:\Users\USER\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/Client.h:38:22: note: virtual void Client::stop()

virtual void stop() = 0;

^

In file included from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiServerSecure.h:20:0,

from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFi.h:41,

from C:\Users\USER\Desktop\SP8266_LED_MATRIX\SP8266_LED_MATRIX.ino:5:

C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiServerSecureAxTLS.h:36:20: error: invalid abstract return type for member function 'axTLS::WiFiClientSecure axTLS::WiFiServerSecure::available(uint8_t*)'

WiFiClientSecure available(uint8_t* status = NULL);

^

In file included from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiClientSecure.h:23:0,

from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFi.h:42,

from C:\Users\USER\Desktop\SP8266_LED_MATRIX\SP8266_LED_MATRIX.ino:5:

C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiClientSecureAxTLS.h:33:7: note: because the following virtual functions are pure within 'axTLS::WiFiClientSecure':

class WiFiClientSecure : public WiFiClient {

^

In file included from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiClient.h:27:0,

from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFi.h:39,

from C:\Users\USER\Desktop\SP8266_LED_MATRIX\SP8266_LED_MATRIX.ino:5:

C:\Users\USER\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/Client.h:37:22: note: virtual void Client::flush()

virtual void flush() = 0;

^

C:\Users\USER\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/Client.h:38:22: note: virtual void Client::stop()

virtual void stop() = 0;

^

C:\Users\USER\Desktop\SP8266_LED_MATRIX\SP8266_LED_MATRIX.ino: In function 'void loop()':

SP8266_LED_MATRIX:169: error: cannot allocate an object of abstract type 'WiFiClient'

WiFiClient client = server.available();

^

In file included from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFi.h:39:0,

from C:\Users\USER\Desktop\SP8266_LED_MATRIX\SP8266_LED_MATRIX.ino:5:

C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiClient.h:45:7: note: since type 'WiFiClient' has pure virtual functions

class WiFiClient : public Client, public SList<WiFiClient> {

^

SP8266_LED_MATRIX:169: error: cannot declare variable 'client' to be of abstract type 'WiFiClient'

WiFiClient client = server.available();

^

In file included from C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFi.h:39:0,

from C:\Users\USER\Desktop\SP8266_LED_MATRIX\SP8266_LED_MATRIX.ino:5:

C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi\src/WiFiClient.h:45:7: note: since type 'WiFiClient' has pure virtual functions

class WiFiClient : public Client, public SList<WiFiClient> {

^

Multiple libraries were found for "ESP8266WiFi.h"

Used: C:\Users\USER\Documents\Arduino\libraries\ESP8266WiFi

Not used: C:\Users\USER\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\ESP8266WiFi

Multiple libraries were found for "SPI.h"

Used: C:\Users\USER\Documents\Arduino\libraries\SPI

Not used: C:\Users\USER\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\SPI

exit status 1

cannot allocate an object of abstract type 'WiFiClient'

This report would have more information with

"Show verbose output during compilation"

option enabled in File -> Preferences.

Kindly help !!

slester31 year ago

Nice work.

My matrices are orientated the other way - is there any way to scroll the text the other way (rotate the direction of scrolling by 90 degrees)?

Thanks

Shane

aapicella (author)  slester31 year ago

basically you want to rotate the font bits so instead of taking colums you take rows.

I would think you could accomplish that in drawSprite function by swapping x and y. If I get some time this week I will test it.

Chrome981 year ago
drove me crazy today trying to get this to work. Went over the code so many times I could retype it from memory. Finally I got it going only after reflashing my NodeMCU. Worked first time after that.
Thanks for a fun learning experience.
Bizgec651 year ago

Hello, very interesting project. I am interested in connecting several of these 7219 LED Matrix 8x8 modules, in beginning 8 pieces. What do i need to change in the conecction and in code. If you can help me.

Thanks a lot.

aapicella (author)  Bizgec651 year ago

In the code you would change the lines

const int LEDMATRIX_WIDTH = 31;
const int LEDMATRIX_HEIGHT = 7;
const int LEDMATRIX_SEGMENTS = 4;

to (assuming straight line)

const int LEDMATRIX_WIDTH = 63;
const int LEDMATRIX_HEIGHT = 7;
const int LEDMATRIX_SEGMENTS = 8;

I hope that helps, Good luck.