In this Tutorial to Lean how to control a IoT Based Web Controlled Wireless Notice Board using NodeMCU ESP8266 & 16×2 LCD Display. Here We have created a local web server for demonstration, and for displaying the notice we have used 16×2 LCD. The LCD display is connected to a server system should continuously listen for the incoming notices from the user, process it and display it on the LCD screen. The message displayed should be updated each time the user sends new information.
Generally, In shops, hotels, offices, railway stations, notice/ display boards are used. They are frequently used to display messages, notices, or for advertisement purposes. However, it is a tedious task to change it every day. So, here is the Smart Display Board. This project aims to develop a wireless display board that displays messages sent via Local Webpage through WIFI network. The main objective of the project is to develop a wireless notice board which displays messages sent from the webserver. Whenever a user sends a message, it is received by a wifi Module through Local Web Server.
Components Required
NodeMCU ESP8266 12E Board
16X2 LCD with I2c Module
Jumper Wires
Circuit Diagram
Node MCU
NodeMCU ESP8266-12E MCU is a development board with one analogue and many general-purpose input output (GPIO) pins. It has 4MB flash memory, and can operate at a default clock frequency of 80MHz. In this project, digital pin D1 & D2 of NodeMCU is Connected to SCL & SDA Pin of LCD.
LCD
LCD modules are very commonly used in most embedded projects, the reason being its cheap price, availability and programmer friendly. Most of us would have come across these displays in our day to day life, either at PCO’s or calculators. The appearance and the pinouts have already been visualized above now let us get a bit technical.
16×2 LCD is named so because; it has 16 Columns and 2 Rows. There are a lot of combinations available like, 8×1, 8×2, 10×2, 16×1, etc. but the most used one is the 16×2 LCD. So, it will have (16×2=32) 32 characters in total and each character will be made of 5×8 Pixel Dots.
I2C Module
I2C Module has a inbuilt PCF8574 I2C chip that converts I2C serial data to parallel data for the LCD display.
These modules are currently supplied with a default I2C address of either 0x27 or 0x3F. To determine which version you have check the black I2C adaptor board on the underside of the module. If there a 3 sets of pads labelled A0, A1, & A2 then the default address will be 0x3F. If there are no pads the default address will be 0x27.
The module has a contrast adjustment pot on the underside of the display. This may require adjusting for the screen to display text correctly.
Features:-
Operating Voltage: 5V
Backlight and Contrast is adjusted by potentiometer
Serial I2C control of LCD display using PCF8574
Come with 2 IIC interface, which can be connected by Dupont Line or IIC dedicated cable
Compatible for 16x2 LCD
This is another great IIC/I2C/TWI/SPI Serial Interface
With this I2C interface module, you will be able to realize data display via only 2 wires.
Installing Library
We need two libraries to make the local web server. Download these libraries from the given links
ESPAsyncTCP Download
ESPAsycnWebServer Download
After downloading the .zip files, add the libraries in Arduino IDE by clicking on
To install the library navigate to the Sketch > Include Library > Manage Libraries… Wait for Library Manager to download libraries index and update list of installed libraries.
Subscribe and Download code.
Arduino Code
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
AsyncWebServer server(80);
//replace ssid and password with your wifi network credentials
const char* ssid = "TP-Link_3200"; // your SSID
const char* password = "9500112137"; //your WIFI Password
const char* PARAM_INPUT_1 = "input1";
const char index_html[] PROGMEM = R"=====(
<!DOCTYPE HTML><html><head>
<title>Smart Notice Board</title>
<meta name="viewport" content="width=device-width, initial-scale=5">
<p> <font size="9" face="sans-serif"> <marquee> IoT Wireless Smart Notice Board </marquee> </font> </p>
</head><body><center>
<form action="/get">
Enter Text to Display: <input type="text" name="input1">
<input type="submit" value="Send">
</form><br>
</center></body></html>
)=====";
void notFound(AsyncWebServerRequest *request) {
request->send(404, "text/plain", "Not found");
}
void setup() {
Serial.begin(115200);
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Wireless Notice board");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("WiFi Failed!");
return;
}
Serial.println();
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/html", index_html);
});
server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
String message;
String inputParam;
if (request->hasParam(PARAM_INPUT_1)) {
message = request->getParam(PARAM_INPUT_1)->value();
inputParam = PARAM_INPUT_1;
// lcd.clear();
lcd.setCursor(0,1);
lcd.print(message);
}
else {
message = "No message sent";
inputParam = "none";
}
Serial.println(message);
request->send(200, "text/html", index_html);
});
server.onNotFound(notFound);
server.begin();
}
void loop() {
for (int positionCounter = 0; positionCounter < 29; positionCounter++) {
lcd.scrollDisplayLeft();
delay(500);
}
}
Then, upload the code to your NodeMCU board. Make sure you have selected the right board and COM port. Also, make sure you’ve inserted your WiFi Credentials in the code.
After a successful upload, open the Serial Monitor at a baud rate of 9600. Press the “EN/RST” button on the ESP8266 board.
Open IP address, enter the message and hit Send button. You will see the message in serial monitor as well as on the LCD. So this is how this IOT based Digital Notice Board works, and now you can change the message on notice board from Local webpage.
Comments