DIY Smart Room – Bluetooth + IR Remote + Keypad with Arduino with Code and Diagram

smart room smart home diy

Your search for a smart room project ends here. We presents you the complete DIY smart room solution, which have bluetooth, IR Remote and Keypad on switchboard to control everything around you. For convenience, we have attached a 128×64 Graphic LCD and also DHT11 Temperature Sensor to sense room temperature. Let’s get started.

Index

  • Capabilities [jump]
  • Arduino Mega as a Controller [jump]
  • Parts and Tools Used [jump]
  • Connections and Parts Description [jump]
  • Configuring your Own IR Remote [jump]
  • Heavy Appliances like Air Conditioner [jump]
  • Circuit Diagram or Schematic [jump]
  • Code Description [jump]
  • Complete Arduino Code [jump]
  • Further Capabilities [jump]
  • Android App Configuration and Controls [jump]
  • Hardware Design [jump]

.

Capabilities of Project

  • Control Room Lights, Fan, AC Power, Socket – everything from your mobile phone via Bluetooth, IR Remote or Keypad on the switchboard itself.
  • Sensing the Room Temperature and showing it on LCD screen and mobile phone via Serial Bluetooth Connection, on request.

.

Controller of the Project – Arduino Mega

It became very important for us to use Arduino Mega as Arduino Uno was having only 13 Digital and 6 Analog I/O Pins, which were not enough for us. Also the code was very heavy and ATmega168 was not able to run the program.

Parts Used in the Project

  1. Arduino Mega
  2. 5V Relay Board (4 Channel or 8 Channel according to number of appliances)
  3. AC Fan Dimmer (Recommended DIY)
  4. A good 5v power supply source (Recommended – 10W Branded Mobile Charger)
  5. DHT11 or DHT22 Temperature Sensor
  6. 128×64 LCD Display
  7. 4×4 Matrix Keypad
  8. TSOP1738 IR Receiver
  9. HC-05 or HC-06 Bluetooth Module
  10. Non Locking Push Button, Buzzer and Some LEDs
  11. Custom Cuttings switchboard or a box to fit the components in

Tools Required: Soldering Iron, PC for Uploading Code to arduino, Arduino IDE or Web Editor, Multimeter, Glue Gun, Screwdriver, Pilers, Wire strippers etc

Connections and Parts Description

128×64 LCD

lcd 128x64 for smart room

LCD will be used to deliver common information. By default, it will display Room Temperature and Humidity. Please note that this specific LCD Display works on i2c interface and needs two data pins connected to specified pins only. You cannot change SCL and SDA pins.

VCC – +5V Power

GND – GND Power

SCL – Arduino Mega (SCL) (Pin 21)

SDA – Arduino Mega (SDA) (Pin 20)

DHT11/DHT22 Temp.& Humidity Sensor

dht sensor for smart room smart home diy

DHT11 and DHT22 are temperature and humidity sensors which helps you sense the room temperature. You have to place the front side of sensor outside the board. Connections are as follows:

VCC – +5V Power

GND – GND Power

DATA – Arduino Mega (Pin 4), or change this in code

TSOP1738 IR Sensor

This sensor is responsible for sensing the received IR code transmitted from remote. Try to place it outwards for better reception of IR light signals. It can be configured with arduino mega as follows:

VCC – +5V Power

GND – GND Power

DATA – Arduino Mega (Pin 5) or change it in code

HC-05 or HC-06 Bluetooth Module

hc 05 bluetooth for smart home

This is used to establish bluetooth connection between arduino mega and user’s mobile phone device and is responsible for sending and receiving Serial Data between both. There is an LED on this module which tells the connection state. Blinking Fast indicates the Pairing Mode is on and blinking slow indicates the connection is established. Try to make this LED visible from user’s view and also to hide the module inside the board.

VCC – +5V Power

GND – GND Power

RX – Arduino Mega TX Pin (Pin 1)

TX – Arduino Mega RX Pin (Pin 0)

Please note that the TX and RX connections will be inverted as data output from bluetooth module will be input for arduino mega and data output from arduino mega will be input for bluetooth module. You cannot change the RX and TX pins as Pin 0 and Pin 1 are responsible for serial data exchange. You can change the pins only when you use a software serial library in arduino mega and declare new pins.

Relay Module(s)

relay modules for smart room

220V AC Components needs to be switched on and off electrically, with 5v arduino signal. Relay boards are perfect solution for these. Just give them power supply in VCC and GND pins and connect other pins to arduino itself as declared in the code. Remember or mark on relay, for which component it is used for, as in the code.

Please note that 220VAC power can be very dangerous and can even kill you. Make sure you take help from a professional while working with 220VAC.

AC Fan Dimmer

This helps you to dim a 220VAC fan with the help of data received from arduino mega. It is a simple circuit based on BT136 Triac. You can make it yourself if you are familiar with electronics or you can simply buy it for around 600 INR. DIY Tutorial here. It is connected as follows:

VCC – +5V Power

GND – GND Power

Interrupt Pin – Arduino Mega (Pin 2) cannot be changed

AC Pin – Arduino Mega (Pin 3) can be declared in code

4×4 Matrix Keypad

4x4 Matrix keypad for smart room

Keypad will stick on outer surface on board which will be handy to operate devices directly from the switchboard. Not everytime mobile phone and IR Remote is convenient.

A 4×4 Matrix Keypad have 8 pins which can be connected on Analog and Digital pins both. We have chosen A0-A7 Pins for connecting keypad which can also be modified in the code.

Buzzer and LEDs

Negative of buzzers and LEDs will be connected to GND power. Positive terminals of these will be connected to appropriate pins of Arduino Mega. These LEDs makes it easy to understand from where the command is coming and also helps in troubleshooting if any problem occurs.

Smart Lock Mechanism

I’ve also embedded some lines in the code in the function bt_process( ) – switch case ‘Z’ – Change the state of existing r7 state and turn the relay on for 2 seconds. I’ve attached a solenoid lock in my almirah using this relay. Thus, on sending Z as serial data to bluetooth client, arduino will make lock relay to supply 220VAC in the connected wire. On the solenoid side, i converted 220VAC to 12VDC to turn the solenoid lock on and off.

You can simply skip this step in case of confusion.

Configuring your own IR Remote

In the function, ir_process(); we have different IR Codes processed using switch case. Your remote can send different codes on different buttons. Check your remote IR codes for different buttons and use them in the code. Tutorial here. How IR Remotes work[?].

Heavy Appliances like Air Conditioner

You cannot directly connect these appliances to relay. You have to use Solid State Relays for specified current. After 220VAC from relay board or module, use 220VAC to 5VDC-12VDC converter and supply it to Solid State Relay.

Schematic for Smart Room Project

Schematic for smart home smat room

Code – The Most Awaited Part

The program is very easy to understand. However, you can customize the code according to you, very easily. The motive to use many functions is to reduce the complexity of code.

  • Functions on the name of components i.e. light1( ), fan( ) etc. To give a shortbeep by calling the shortbeep( ) fuction and read whether the relevant component is off and on. Further, If component is on, turn it off and if the component is off, turn it on – when the function is called.
  • Functions bt_process( ), key_process( ), and ir_process( ). Used to take actions when the input received from a specified source. In loop, we keeps reading whether any data is received either from keypad, IR receiver and bluetooth, if received, the specified function is called. Based on the data received, we calls the function for related component like light1, or fan, or ac etc.
  • Functions zero_cross_detect and dim_check – Used to send interrupt signals to 220V AC Fan dimmer circuit. Above all, there is no need to make any kind of change in these functions in any case.
  • firstline( ) function is used to display the upper line of the display. By default, you’ll see PRATEEK’s SMART ROOM. Meanwhile, if you change it with your name, your name will appear everytime on the upper line of LCD Display.

SMART ROOM SMART HOME

  • Function initialdisp( ) is used to display common information on LCD screen after you’ve displayed anything else like Light 1 ON, OFF or fan speed.
  • void cond( ) function is used to set the dimming level of AC fan dimmer, Dim level of max 140 states the fan speed is 0% and min dim level of 0 states 100% speed of the fan. It sets the dimming lavel based on variable e, using the switch case. Value of variable e is set from inc() and dec() functions.
  • setforcomp( ) function is used to set the cursor in LCD display at appropriate place where the name of component should be displayed. It helps reducing the length and complexity of code by writing only 1 line to call the setforcomp( ) function instead for 3-4 boring lines of code. Similarly, dispon( ) and dispoff( ) are used to show text ON and OFF on appropriate place on LCD.
  • void alloff( ) function heps turning everything in the room off, with delay in every component so that it looks beautiful in room when everything turns off automatically one by one. Most importantly, it comes handy when you’re stepping out of the room.

Here’s the Complete Source Code for Smart Room Project

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#include <IRremote.h>
#include <TimerOne.h>
#include <Keypad.h>

volatile int i=0;          
volatile boolean zero_cross=0;  
int AC_pin = 3;
int sign;
int dim2 = 0;                  
int dim = 140;                                    
int freqStep = 75;  
int e;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

char btinput;
float t,h;
char key_pressed;

const byte rows = 4; 
const byte columns = 4; 
char hexaKeys[rows][columns] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

byte row_pins[rows] = {A7,A6,A5,A4};
byte column_pins[columns] = {A3,A2,A1,A0};   

const int RECV_PIN=5;
int DHTPIN = 4;
int r1 = 23;
int r2 = 25;
int r3 = 27;
int r4 = 29;
int r5 = 31;
int r6 = 33;
int r7 = 35;
int r8 = 37;
int buzzer = 7;
int bt_led = 8;
int ir_led = 9;
int key_led = 10;

DHT dht(DHTPIN, DHT11);

IRrecv irrecv(RECV_PIN);
IRsend irsend;
decode_results results;
Keypad keypad_key = Keypad( makeKeymap(hexaKeys), row_pins, column_pins, rows, columns);

void setup()
{
  Serial.begin(9600);
  Serial.println("Setting Up");
  pinMode(r1, OUTPUT);
  pinMode(r2, OUTPUT);
  pinMode(r3, OUTPUT);
  pinMode(r4, OUTPUT);
  pinMode(r5, OUTPUT);
  pinMode(r6, OUTPUT);
  pinMode(r7, OUTPUT);
  pinMode(bt_led, OUTPUT);
  pinMode(key_led, OUTPUT);
  pinMode(ir_led, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(AC_pin, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(2), zero_cross_detect, RISING);    
  Timer1.initialize(freqStep);                   
  Timer1.attachInterrupt(dim_check, freqStep);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) 
  {
    Serial.println(F("SSD1306 allocation failed"));
  }
  dht.begin();
  irrecv.enableIRIn(); 
  digitalWrite(buzzer, HIGH);
  delay(50);
  digitalWrite(buzzer, LOW);
  Serial.println("Setup Complete");
}


void zero_cross_detect() 
{    
  zero_cross = true;     
  i=0;
  digitalWrite(AC_pin, LOW);
}                                 


void dim_check() 
{                   
  if(zero_cross == true) {              
    if(i>=dim) {                     
      digitalWrite(AC_pin, HIGH);        
      i=0;                        
      zero_cross=false;    
    } 
    else {
      i++;                  
}}}   



void shortbeep()
{
  digitalWrite(buzzer, HIGH);
  delay(50);
  digitalWrite(buzzer, LOW);
}

void firstline()
{
  display.clearDisplay();
  display.setCursor(0,0);
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.print("PRATEEK's SMART ROOM");
}


void dispspd(int spd)
{
  firstline();
  display.setCursor(0,16);
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.print("FAN SPEED");
  display.setCursor(10,35);
  display.setTextSize(3);
  display.setTextColor(WHITE);
  display.print(spd);
  display.print(" %");
  Serial.println("FAN SPEED: ");
  Serial.print(spd);
  Serial.print(" %");
  display.display();
  delay(550);
  initialdisp();
}

void cond()
{
  firstline();
  switch(e)
  { 
    case 1:
    shortbeep();
    firstline();
    dim=140;
    dispspd(0);
    break;

    case 2:
    shortbeep();
    firstline();
    dim=126;
    dispspd(10);
    break;

    case 3:
    shortbeep();
    firstline();
    dim=112;
    dispspd(20);
    break;

    case 4:
    shortbeep();
    firstline();
    dim=98;
    dispspd(30);
    break;

    case 5:
    shortbeep();
    firstline();
    dim=84;
    dispspd(40);
    break;

    case 6:
    shortbeep();
    firstline();
    dim=70;
    dispspd(50);
    break;

    case 7:
    shortbeep();
    firstline();
    dim=56;
    dispspd(60);
    break;

    case 8:
    shortbeep();
    firstline();
    dim=42;
    dispspd(70);
    break;

    case 9:
    shortbeep();
    firstline();
    dim=28;
    dispspd(80);
    break;

    case 10:
    shortbeep();
    firstline();
    dim=14;
    dispspd(90);
    break;

    case 11:
    shortbeep();
    firstline();
    dim=0;
    dispspd(100);
    break;
  }
}



void initialdisp()
{
  display.clearDisplay();
  firstline();
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  delay(50);
  display.setCursor(0,16);
  display.setTextSize(1);
  display.print("TEMP:");
  display.setCursor(38,16);
  display.setTextSize(2);
  display.print(t);
  display.print(" C");
  display.setCursor(0,35);
  display.setTextSize(1);
  display.print("HUMID:");
  display.setCursor(38,35);
  display.setTextSize(2);
  display.print(h);
  display.print(" %");
  display.display();
}


void setforcomp()
{
  display.setCursor(0,16);
  display.setTextSize(2);
  display.setTextColor(WHITE);
}

void dispon()
{
  
  display.setCursor(10,35);
  display.setTextSize(3);
  display.setTextColor(WHITE);
  display.print("OFF");
  display.display();
}

void dispoff()
{
  
  display.setCursor(10,35);
  display.setTextSize(3);
  display.setTextColor(WHITE);
  display.print("ON");
  display.display();
}

void baskarbhai()
{
  firstline();
  digitalWrite(buzzer, HIGH);
  display.setCursor(0,16);
  display.print("AUR NAHI HOGA");
  display.display();
  delay(500);
  digitalWrite(buzzer, LOW);
  initialdisp();
}

void inc() {
    e=e+1;
    delay(100);
    if(e<2&&e>0)
    { e=1; cond(); }
    else if(e<3&&e>1)
    { e=2; cond(); }
    else if(e<4&&e>2)
    { e=3; cond(); }
    else if(e<5&&e>3)
    { e=4; cond(); }
    else if(e<6&&e>4)
   { e=5; cond(); }
    else if(e<7&&e>5)
   { e=6; cond(); }
    else if(e<8&&e>6)
   { e=7; cond(); }
    else if(e<9&&e>7)
   { e=8; cond(); }
    else if(e<10&&e>8)
   { e=9; cond(); }
    else if(e<11&&e>9)
   { e=10; cond(); }
    else if(e<12&&e>10)
   { e=11; cond(); }
    else if(e>10)
    { e=11; baskarbhai(); }
}
 
void dec() {
    e=e-1;
    delay(100);
    if(e<1) {e=1; baskarbhai(); }
    else if(e<2&&e>0)
    { e=1; cond(); }
    else if(e<3&&e>1)
    { e=2; cond(); }
    else if(e<4&&e>2)
    { e=3; cond(); }
    else if(e<5&&e>3)
    { e=4; cond(); }
    else if(e<6&&e>4)
   { e=5; cond(); }
    else if(e<7&&e>5)
   { e=6; cond(); }
    else if(e<8&&e>6)
   { e=7; cond(); }
    else if(e<9&&e>7)
   { e=8; cond(); }
    else if(e<10&&e>8)
   { e=9; cond(); }
    else if(e<11&&e>9)
   { e=10; cond(); }
    else if(e<12&&e>10)
   { e=11; cond(); }
    else if(e>10)
    { e=11; cond(); }
}

void light1()
{
  shortbeep();
  firstline();
  setforcomp();
  display.print("LIGHT 1");
  if(digitalRead(r1) == HIGH)
  {
   digitalWrite(r1, LOW);
   Serial.println("Light 1: OFF");
   dispoff();
   delay(550);
   initialdisp();
  }
  else if(digitalRead(r1) == LOW)
  {
   digitalWrite(r1, HIGH);
   Serial.println("Light 1: ON");
   dispon();
   delay(550);
   initialdisp();
  } 
}

void light2()
{
  shortbeep();
  firstline();
  setforcomp();
  display.print("LIGHT 2");
  if(digitalRead(r2) == HIGH)
  {
   digitalWrite(r2, LOW);
   Serial.println("Light 2: OFF");
   dispoff();
   delay(550);
   initialdisp();
  }
  else if(digitalRead(r2) == LOW)
  {
   digitalWrite(r2, HIGH);
   Serial.println("Light 2: ON");
   dispon();
   delay(550);
   initialdisp();
  } 
}

void light3()
{
  shortbeep();
  firstline();
  setforcomp();
  display.print("LIGHT 3");
  if(digitalRead(r3) == HIGH)
  {
   digitalWrite(r3, LOW);
   Serial.println("Light 3: OFF");
   dispoff();
   delay(550);
   initialdisp();
  }
  else if(digitalRead(r3) == LOW)
  {
   digitalWrite(r3, HIGH);
   Serial.println("Light 3: ON");
   dispon();
   delay(550);
   initialdisp();
  } 
}

void fan()
{
  shortbeep();
  firstline();
  setforcomp();
  display.print("FAN");
  if(digitalRead(r4) == HIGH)
  {
   digitalWrite(r4, LOW);
   Serial.println("FAN: OFF");
   dispoff();
   delay(550);
   initialdisp();
  }
  else if(digitalRead(r4) == LOW)
  {
   digitalWrite(r4, HIGH);
   Serial.println("FAN: ON");
   dispon();
   delay(550);
   initialdisp();
  } 
}

void ac()
{
  shortbeep();
  firstline();
  setforcomp();
  display.print("AC POWER");
  if(digitalRead(r5) == HIGH)
  {
   digitalWrite(r5, LOW);
   Serial.println("AC: OFF");
   dispoff();
   delay(550);
   initialdisp();
  }
  else if(digitalRead(r5) == LOW)
  {
   digitalWrite(r5, HIGH);
   Serial.println("AC: ON");
   dispon();
   delay(550);
   initialdisp();
  } 
}

void socket()
{
  shortbeep();
  firstline();
  setforcomp();
  display.print("SOCKET");
  if(digitalRead(r6) == HIGH)
  {
   digitalWrite(r6, LOW);
   Serial.println("SOCKET: OFF");
   dispoff();
   delay(550);
   initialdisp();
  }
  else if(digitalRead(r6) == LOW)
  {
   digitalWrite(r6, HIGH);
   Serial.println("SOCKET: ON");
   dispon();
   delay(550);
   initialdisp();
  } 
}

void bt_process()
{
  digitalWrite(bt_led, HIGH);
  delay(70);
  digitalWrite(bt_led, LOW);
  switch(btinput)
  {
    
    case '0':
      alloff();
      break;
  
    case '1':
      light1();
      break;

    case '2':
     light2();
     break;

    case '3':
     light3();
     break;

    case '4':
      fan();
      break;

    case '5':
      ac();
      break;

    case '6':
      socket();
      break;

    case '7':
      break;

    case '8':
      givetemp();
      break;

    case 'A':
      inc();
      break;

    case 'B':
      dec();
      break;

    case 'C':
        shortbeep();
        dim=140;
        dispspd(0);
        break;


    case 'D':
        shortbeep();
        dim=105;
        dispspd(25);
        break;

    case 'E':
        shortbeep();
        dim=70;
        dispspd(50);
        break;


    case 'F':
        shortbeep();
        dim=0;
        dispspd(100);
        break;
        
        
    case 'Z':
      shortbeep();
      digitalWrite(r7, HIGH);
      firstline();
      Serial.println("LOCK IS OPENED...");
      Serial.println("Closing in 2 Sec...");
      display.setCursor(0,16);
      display.print("LOCK IS OPENED");
      display.setCursor(0,32);
      display.print("CLOSING SOON...");
      display.display();
      delay(2000);
      shortbeep();
      digitalWrite(r7, LOW);
      Serial.println("Lock electrically Closed");
      Serial.println("Make Sure Almirah door is properly closed");
      initialdisp();
      break;
  }
  
}

void givetemp()
{
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  delay(50);
  Serial.println("Temp: ");
  Serial.print(t);
  Serial.print("°C");
  Serial.println("Humidity: ");
  Serial.print(h);
  Serial.print("%");
}

void alloff()
{
  Serial.println("Turning Everything OFF");
  Serial.println("Please Wait....");
  firstline();
  display.setCursor(0,20);
  display.setTextSize(1);
  display.print("TURNING");
  display.setCursor(0,40);
  display.print("EVERYTHING OFF");
  display.setCursor(0,55);
  display.print("PLEASE WAIT......");
  display.display();
  delay(300);
  digitalWrite(buzzer, HIGH);
  delay(90);
  digitalWrite(r1, LOW);
  delay(200);
  digitalWrite(r2, LOW);
  delay(200);
  digitalWrite(r3, LOW);
  delay(200);
  digitalWrite(r4, LOW);
  delay(200);
  digitalWrite(r5, LOW);
  delay(200);
  digitalWrite(r6, LOW);
  digitalWrite(buzzer, LOW);
  initialdisp();
  Serial.println("Successfully Completed");
}


void ir_process()
{
  digitalWrite(ir_led, HIGH);
  delay(70);
  digitalWrite(ir_led, LOW);
  switch(results.value)
  {
    case 1:
      light1();
      break;

    case 2049:
      light1();
      break;
    
    case 2:
      light2();
      break;

    case 2050:
      light2();
      break;

    case 3:
      light3();
      break;

    case 2051:
      light3();
      break;

    case 4:
      fan();
      break;

    case 2052:
      fan();
      break;

    case 5:
      ac();
      break;

    case 2053:
      ac();
      break;

    case 8:
      socket();
      break;

    case 2056:
      socket();
      break;

    case 12:
      alloff();
      break;

    case 2060:
      alloff();
      break;

    case 16:
      inc();
      break;

    case 2064:
      inc();
      break;

    case 17:
      dec();
      break;

    case 2065:
      dec();
      break;

    case 43:
        shortbeep();
        dim=0;
        dispspd(100);
        break;
        
    case 2091:
        shortbeep();
        dim=0;
        dispspd(100);
        break;
     
  }

}

void key_process()
{
  digitalWrite(key_led, HIGH);
  delay(70);
  digitalWrite(key_led, LOW);
  switch(key_pressed)
  {
    case 'B':
      light1();
      break;

    case 'C':
      light2();
      break;

    case 'D':
      light3();
      break;

    case 'A':
      alloff();
      break;

    case '1':
      light1();
      break;

    case '2':
      light2();
      break;

    case '3':
      light3();
      break;

    case '#':
      inc();
      break;

    case '*':
      dec();
      break;

    case '0':
      fan();
      break;

    case '8':
      ac();
      break;

    case '5':
      socket();
      break;

    case '4':
        shortbeep();
        dim=140;
        dispspd(0);
        break;


    case '7':
        shortbeep();
        dim=105;
        dispspd(25);
        break;

    case '6':
        shortbeep();
        dim=70;
        dispspd(50);
        break;


    case '9':
        shortbeep();
        dim=0;
        dispspd(100);
        break;
       
  }
}

void loop()
{ 
  key_pressed = keypad_key.getKey();
  if(key_pressed)
  {
    key_process();
  }
  
  else if(Serial.available())
  {
    btinput=Serial.read();
    bt_process();
  }
  
  else if (irrecv.decode(&results)) 
  {
    Serial.println(results.value);
    ir_process();
    delay(50);
    irrecv.resume(); 
    delay(50);
    Serial.println(dim);
  }
}

.

This Smart Home Project Can have

  • Voice Commands via Google Assistant in your Mobile or Smart Speaker, using nodemcu connected to arduino mega for sending data. Nodemcu + IFTTT + Blynk can make it possible and you’ll see this project in future.
  • Better Design using a full page print on paper for outermost layer of switchboard.
  • Illuminated keypad, so that there is no problem to operate in night, or attach a PIR sensor to illuminate the keypad only when there is a movement in room.

.

How to control Smart Home \ Smart Room via Mobile Phone using Bluetooth Connection

You can make your own app very easily using MIT App Inventor and can also set everything up using existing apps on Google Play Store and Apple App Store.

Pre-built apps are very smooth and provides better User Interface and User Experience. One of my favorite app is Serial Bluetooth Terminal by Kai Morich.

Here is how you can set it up:

Meanwhile. During. Subsequently. After that. Likewise. Similarly. In the same vein. Similarly. Likewise. During. Subsequently. During. Meanwhile. Similarly. and. Moreover. In Addition.

Link


.

Hardware Design Gallery


Thank you for reading. Hope i was able to make you understand how you can make your own smart home using this smart room project. Do make sure to subscribe the techshala newsletters to get such amazing posts right in your inbox.

In case of any doubts and problem, feel yourself free to contact me on website and mail, or comment in the comments section below. Looking forward for your visit on blog again.

Author: Prateek

Technology Enthusiast, Computer Science Student

Leave a Reply

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