top of page
Writer's pictureRamesh G

IoT Controlled Wireless Notice Board

Updated: Jul 2, 2021



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.


1,520 views0 comments

Comments


bottom of page