Smart Home - Control Home Devices using Mobile | iNNovationMerge

Smart Home - Control Home Devices using Mobile


  • This Article on iNNovationMerge blog is for demonstration purpose.
  • Each demonstration presents risk and hazards that must be fully understood before attempting
  • It should be performed only by trained professionals
  • iNNovationMerge is not responsible for any loss or damage whatsoever caused
  • Before attempting understand the Experiment completely or Contact iNNovationMerge for any clarification to get started.

For Feedbacks | Enquiries | Questions | Comments - Contact us @


  • Home Automation are buzzing words happening in the field of Internet of Things(IoT) from past years.
  • IoT based Home automation is controlling Home appliances(Fan, LED Light, Fridge etc.,) from following ways:
    • IR Remote
    • RF based
    • Bluetooth
    • Mobile Wifi through android apps
    • Voice assistants
  • There are different ways for the implementation of IoT based Home automation.
  • This article explains how can we make use of NodeMcu for controlling a Home Lamp using Mobile Browser over Wifi.


  • Save electricity and in turn save money
  • Better level of comfort
  • Peace of mind
  • Manage all home devices at one place
  • Remote control of Home functions
  • Increased energy efficiency by automation


Hardware’s Required:

  • ESP8266 CP2102 NodeMCU
  • Micro USB cable
  • 5V 1A DC Power Supply
  • Bread Board
  • BC547 NPN Transitor
  • 220 ohm Resistor
  • Jumper wires

Software’s Required:

  • Arduino IDE
  • Add ESP8266 in Boards>boards manager in Arduino IDE from Tools menu

Network Requirements

  • Internet to download packages


Block Diagram

  • Block Diagram (Source: iNNovationMerge)

Test NodeMCU with Arduino IDE - Blinking LED

  • Connect NodeMCU to Laptop using Micro usb cable

    • Connect Nodemcu (Source: iNNovationMerge)
  • Open Arduino IDE, File -> New -> save as NNM_smartHome and configure like below

    • Arduino IDE Settings (Source: iNNovationMerge)
  • Upload below code to Blink the on board LED of NodeMCU

Author : iNNovationMerge

void setup()
  pinMode(D0, OUTPUT);      //Built IN LED

void loop()
  digitalWrite(D0, HIGH);   // Turn on the LED
  delay(1000);              // Wait for one second
  digitalWrite(D0, LOW);    // Turn off the LED  
  delay(1000);              // Wait for one second
  • Below Image shows the expected output. Make sure you test this before going to next step.
    • Nodemcu blink example (Source: iNNovationMerge)

Lets do the same LED ON and OFF trough mobile over wifi

  • Since NodeMCU has Builtin ESP8266 Module , we can configure it as a Wifi Hotspot hence mobiles can connect and control NodeMCU GPIO pins through Browser
  • Below code enables NodeMCU as WIFI Hotspot with SSID “iNNovationMerge”, password “123456789” and generates a URL for Browser.
Author : iNNovationMerge

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

// Replace with your network credentials
const char* ssid = "iNNovationMerge";
const char* password = "123456789";

ESP8266WebServer server(8082);   //instantiate server at port 8082 (http port)

String page = "";
int FANPin = D0;

void setup(void){
//the HTML of the web page
page = "<h1>iNNovationMerge <br> Home Automation using IoT</h1><p>FAN:<a href=\"FANOn\"><button>ON</button></a><a href=\"FANOff\"><button>OFF</button></a></p>";
//make the LED pin output and initially turned off
pinMode(FANPin, OUTPUT);
digitalWrite(FANPin, LOW);

WiFi.softAP(ssid, password); //begin WiFi access point
Serial.print("Connected to ");
Serial.print("IP address: ");

//Render Page with buttons once the URL is given 
server.on("/", [](){
  server.send(200, "text/html", page);

//Url to turn ON LED - Given as href to ON button
server.on("/FANOn", [](){
server.send(200, "text/html", page);
digitalWrite(FANPin, LOW);

//Url to turn OFF LED - Given as href to OFF button
server.on("/FANOff", [](){
  server.send(200, "text/html", page);
  digitalWrite(FANPin, HIGH);

//Start the server 
Serial.println("Web server started!");

void loop(void){
  • Upload the above code from Arduino IDE to NodeMCU.

  • Open serial monitor and get the IP

  • Search for wifi “iNNovationMerge” in Mobile

  • Provide password as “123456789”

  • once it is connected, Open any Browser(Google Chrome)

  • Provide the IP generated in Serial Monitor (

  • The Expected output should be as below

    • blinknodeMCU (Source: iNNovationMerge)
  • Now we can take advantage of GPIO D0 of NodeMCU to control Home appliances similar to LED.

  • Since all home appliances run from 230V AC, NodeMCU can’t drive it from its DC output, hence we will need two intermediary components to make this happen

  • The two components are

    • BC547 NPN Transitor - To drive Relay from GPIO
    • 5V 10A 1 CHANNEL RELAY - To connect AC Devices from DC input
  • Connect the circuit as below

    • Circuit Diagram (Source: iNNovationMerge)
  • The Fritzing circuit shows a LAMP connected via Relay

  • Instead of LED now the GPIO Pin D0 sends the signal to base of Transistor BC547

  • On signal, Transistor acts as closed switch between emitter and collector hence the current flows to Relay signal pin

  • On signal on Relay pin, Relay connects Pin Common(C) to Normally open(NO) from Normally closed(NC) and Lamps turn ON

  • Now in the place of LAMP you can have any 230V AC Home appliances and control over mobile phone

  • Great, iNNovationMerge hope that you have understood how to make Home Devices smart, which makes Home as Smart Home

Clone and Run the project

Download code and circuit from this link