Esp8266FeaturedStarter Guide

NodeMCU ESP8266 Crash Course

Introduction to NodeMCU ESP8266

It is an ESP based IOT development board and is a combination of microcontroller along with ESP8266. NodeMCU is an Open Source Hardware device that has mainly application in making IOT devices and any projects where one needs to connect his/her project to the world of internet or any local network.

The best part of NodeMCU is that it is simply plug and make device. It can be program using Arduino IDE and the coding structure remains similar to that of Arduino but ArduinoIDE do not come with pre-installed ESP supported boards on it, so one need to add/import the board attachments to the IDE before programming it and is very simple to do.

Since, ESP series boards are not initially developed for Arduino IDE compatibility, therefore in Arduino IDE each pin on NodeMCU corresponds to different GPIO pin for IDE. Here, is the pin mapping of NodeMCU GPIO pins. In Coding you can directly write digital pins of NodeMCu as  D1,D2,D3… or corresponding GPIO pin no.

Steps to Import ESP Board Libraries:

  1. In Arduino IDE, go to File–>Preference
  2. In the preference window under the ‘Additional Boards Manager URLs” field, paste this link : http://arduino.esp8266.com/stable/package_esp8266com_index.json
  3. Click on the Ok button.
  4. Go to ‘Tools and Board’, from dropdown menu select ‘ Board Manager’.
  5. In the ‘Board Manager’ window, navigate to esp8266 by esp8266 community and select it.
  6. When you select the ESP8266 package then a ‘Install button’ will appea, click on it.

Remember that the file is around 160mb in size and will take some time to download.

  1. After Completion, you will be able to find the different boards of ESP series in Arduino IDE and Installation is complete.

LED Blink with NodeMCU :

 1 : Select the Suitable ESP8266 board from the board list. Here,  we have selected ‘NodeMCU 1.0’, but you need to choose the board on which you are working.

 2 : Go to file and from examples- Open the blink sketch and upload. Since the  LED_BUILTIN corresponds to D0 pin of NodeMCU, so connect the positive leg of Led to D0 and ground the other leg. The on-board led is in series with D0 pin and works on logic zero . Upload the code and you  have your first project with NodeMCu.

Controlling Led through Web Browser:

NodeMcu Web Server is a kind of local network from where you can control the GPIO pins of NodeMCU. The working is very simple – NodeMCU is connected to a network i.e. WiFi Router or a mobile’s Hotspot (here, no need to  connect it to internet as because we will control GPIO pins  just through a local network)and any device connected to that particular network (WiFi) can type the local IP of NodeMCU in the browser’s URL section and easily control the pins.
Here as a demonstration, we will just control one LED but you can simply modified it as per the need of your project.
So, Let’s get started!
Components Required:
  • NodeMCU ESP 12E / or Any ESP based dev. board
  • LED
  • 220 ohm resistor
  • Jumper wires

Connection:

Code:

After making the above connection,upload the code and open the serial monitor and press the RESET button and now, you will see that that you board is connecting to the network which you have specified (Here, in code change the SSID and Password fields as per your network’s name and password) and you NodeMCU IP would display, note it down.

Open the browser on any device connected to the same network and use the above noted IP address and enter. You will find the there are two buttons that appears on the page and those are your control button for LED.

You can also follow our Wifi Home Automation project form here.

//Visit www.roboshala.com for more details on NodeMCU and other projects.

#include <ESP8266WiFi.h>
 
const char* ssid = "Alokom"; // SSID i.e. Service Set Identifier is the name of your WIFI
const char* password = "42224222"; // Your Wifi password, in case you have open network comment the whole statement.
 
int ledPin = 13; // GPIO13 or for NodeMCU you can directly write D7 
WiFiServer server(80); // Creates a server that listens for incoming connections on the specified port, here in this case port is 80.
 
void setup() {
  Serial.begin(115200);
  delay(10);
 
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
 
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Start the server
  server.begin();
  Serial.println("Server started");
 
  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP()); //Gets the WiFi shield's IP address and Print the IP address of serial monitor
  Serial.println("/");
 
}
 
void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
 
  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
 
  // Match the request
 
  int value = LOW;
  if (request.indexOf("/LED=ON") != -1)  {
    digitalWrite(ledPin, HIGH);
    value = HIGH;
  }
  if (request.indexOf("/LED=OFF") != -1)  {
    digitalWrite(ledPin, LOW);
    value = LOW;
  }
 
// Set ledPin according to the request
//digitalWrite(ledPin, value);
 
  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
 
  client.print("Led pin is now: ");
 
  if(value == HIGH) {
    client.print("On");
  } else {
    client.print("Off");
  }
  client.println("<br><br>");
  client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");
  client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />");  
  client.println("</html>");
 
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");
 
}

 

 

 

 

Show More

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button
Close