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):
Step 2: Software Requirements (with download link):
Step 3: Do the breadboard connection as per the following circuit diagram:
Step 5: Generate API Key
Generate API KeyStep 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);
}
}