IoT Notice Board using MAX7219 Dot Matrix Display & ESP8266

Learn & DIY IoT Based Notice Board Project using ESP8266 NodeMCU, MAX7219 8x8 LED Dot Matrix Display Module Arduino Code. Internet of Things Projects. Control Display Remotely using Website (Can be Accessed Through Laptop/Phone) without LAN/Localhost. This Project requires Internet Connection through WiFi (Mobile Hotspot or Phone). Due to IoT there is not any range restrictions. Control display from anywhere in the World.



Step 1: Hardware Requirements (with Amazon link):

  1. Breadboard Small Amazon
  2. Breadboard Big Amazon
  3. NodeMCU - ESP8266 (CP2102) Amazon
  4. Max 7219 8x8 LED Display Amazon
  5. Jumper Cables (Male to Female) Amazon

Step 2: Software Requirements (with download link):

  1. Arduino IDE Download
  2. ESP8266 Boards Integration Video View on YouTube
  3. Adafruit-GFX Library Download
  4. Max 72XX Panel Library Download
  5. Arduino Code/Program for IoT Notice Board Download
  6. Circuit Diagram Download


Step 3: Do the breadboard connection as per the following circuit diagram:

Step 5: Generate API Key

Generate API Key

Step 6: Arduino Code

#include <ESP8266HTTPClient.h>
#include<ESP8266WiFi.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
int CSP = D4;
int horizontaDisplays = 4;
int verticalDisplays   = 1;
int wifi = D0; // WiFi Onboard LED
const char* ssid = "WiFi Name";
const char* password = "WiFi Password";
String api = "paste_api_here";
String value;
Max72xxPanel disp = Max72xxPanel(CSP, horizontaDisplays, verticalDisplays);
int duration = 70;
int spacer = 1;
int width  = 5 + spacer;
void setup() {
  Serial.begin(9600);
  pinMode(wifi, OUTPUT);
  digitalWrite(wifi, HIGH); // OFF
  disp.setIntensity(0);
  disp.setRotation(0, 1);
  disp.setRotation(1, 1);
  disp.setRotation(2, 1);
  disp.setRotation(3, 1);
  disp.fillScreen(LOW);
  disp.write();
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.println("Connecting to WiFi");
    digitalWrite(wifi, LOW); // ON
    delay(500);
    digitalWrite(wifi, HIGH); // OFF
    delay(500);
  }
  digitalWrite(wifi, LOW); // Permanent WiFi LED ON
  delay(1000);
}
void loop() {
  disp.setIntensity(10);
  disp.fillScreen(LOW);
  HTTPClient http;
  http.begin("http://iot.webumblebees.com/script.php?api="+api); // Read Status from Cloud
  int httpCode = http.GET();
  if (httpCode > 0)
  {
    value = http.getString();
    Serial.println(value);
    scroll(value);
    delay(1000);
  }
  else
  {
    scroll("SORRY! NO INTERNET");
    delay(1000);
  }
}
void scroll(String message) {
  for ( int i = 0 ; i < width * message.length() + disp.width() - spacer; i++ ) {
    int charac = i / width;
    int x = (disp.width() - 1) - i % width;
    int y = (disp.height() - 8) / 2;
    while ( x + width - spacer >= 0 & & charac >= 0 ) {
      if ( charac < message.length() ) {
        disp.drawChar(x, y, message[charac], HIGH, LOW, 1);
      }
      charac--;
      x -= width;
    }
    disp.write();
    delay(duration / 2);
  }
}