MASIGNALPHAS2101
6680671983845063762

Cara Membuat Smart Home Berbasis Voice Control

Cara Membuat Smart Home Berbasis Voice Control
Add Comments
12/06/2018

Perancangan Smart Home (Rumah Pintar) dengan sistem Internet Of Thing (IoT) ini memanfaatan Android App yang berguna untuk mengendalikan suatu perangkat atau peralatan rumah hanya dengan teknologi Voice Control atau Speech Recognition (pengenalan kalimat atau kata).
Alat yang dirancang di buat sebuah server dengan menggunakan metode CGI (Control Gateway Interface) sehingga memungkinkan sistem dapat di akses oleh banyak pengguna. Disisi pengguna, di buat sebuah media tatap muka menggunakan mobile application dengan sebuah platform berbasis android App atau Internet of Thing (IOT). Kemudian sistem yang dirancang untuk kendali smart home berupa gabungan antara perangkat elektronika dengan sistem pada program. Pada perangkat elektronika menggunakan modul ESP8266 yang terintegrasi dengan peralatan rumah tangga. Bahasa pemrograman yang digunakan adalah bahasa C++, sedangkan komunikasi data serial menggunakan komunikasi wireless (Hotspot).

Diagram Blok

Diagram Blok
Diagram diatas membahas tentang sistem yang dibutuhkan untuk membuat Smart Home berbasis Voice Control, Kendali Suara (Voice Recognition) dan aplikasi voice command berbasis android menggunakan library App Inventor untuk mengontrol peralatan elektronika.

Hardware

  1. NodeMCU Wifi Module ESP-8266 board,
  2. Relay Modul 8 Chanel,
  3. DC Motor,
  4. Terminal Block,
  5. Papan PCB (Printed Circuit Board),
  6. PC atau laptop,
  7. Smarphone,

Software

  1. App Inventor, MIT
  2. IDE Arduino
  3. EAGLE

Schematic

Berikut ini adalah schematic Smart Home:
Pin yang digunakan didalam program adalah sebagai berikut:
int relay1 = 5;  //D1 on ESP Board ==> Lamp 1
int relay2 = 4;  //D2 on ESP Board ==> Lamp 2
int relay3 = 0;  //D3 on ESP Board ==> Gate Cw
int relay4 = 2;  //D4 on ESP Board ==> Gate Ccw
int relay5 = 14; //D5 on ESP Board ==> Curtain Cw
int relay6 = 12; //D6 on ESP Board ==> Curtain Ccw
int relay7 = 13; //D7 on ESP Board ==> fan
int relay8 = 15; //D8 on ESP Board ==> TV
Untuk memahami pin diatas, perhatikan gambar berikut ini:
NodeMCU ESP-8266 Pin Out by www.components101.com

OPTIONAL

Agar rangkain lebih rapi, kamu bisa membuat PCB dengan menggunakan Software Eagle seperti berikut:

Schematic
Layout Tata Letak Komponen Bawah
Tata letak komponen sistem minimum dirancang di PCB agar komponen dapat dipasang secara teratur dan benar. Pengaturan tata letak komponen disesuaiakn dengan komponen yang berhubungan dengan rangkaiaan. layout dicetak dengan transfer paper/ glossy menggunakan printer tonner kemudian memasang komponen dibawah ini pada board yang sudah di beri lobang:
Layout Tata Letak Komponen Atas
NOTE: Grounding supply untuk Relay harus menyatu dengan ESP8266 NodeMCU. Jika tidak, Relay tidak bisa berfungsi (Karena catu daya terpisah). Jika relay yang digunakan type 5 vdc, bisa langsung menyatukan power supply nya dengan ESP.
Dibawah ini adalah file eagle yang dapat kalian download dan edit sesuai kebutuhan.
EAGLE:
minsis_nodemcu_ESP8266.brd (Download)
minsis_nodemcu_ESP8266.sch (Download)
Print_minsis_nodemcu_ESP8266.pdf (Download)

TABEL KOMPONEN

No Nama Komponen Tipe/Nilai Jumlah/Buah
1 Board Wifi Module ESP8266 1 Buah
2 Dioda 4001 4 Buah
3 Capacitor 457μf 4 Buah
4 Capacitor 100nf 4 Buah
5 IC 7805 & 7812 2 Buah
6 Resistor 220 Ω 10 Buah
7 LED 5mm 8 Buah
8 Konektor 10 1 Buah
9 Konektor 4 1 Buah
10 Konektor 2 1 Buah
11 Modul Relay 8 ch 1 Buah
12 Holder Fuse 5A 1 Buah

APLIKASI ANDROID

Perancangan algoritma pemrograman Android ini tidak perlu berhadapan dengan bahasa pemrograman yang rumit. Dengan memanfaatkan App Inventor, kamu bisa merancang sebuah aplikasi android yang nantinya akan digunakan untuk mengakses sistem dari jarak jauh. App Inventor sebenarnya merupakan aplikasi open source berbasis web yang diciptakan oleh Google. Namun kini, pengelolaan aplikasi ini dialihkan ke MIT (Massachusetts Institute of Technology)
Jendela Components App Inventor
Aplikasi Android:
Smart_Home.apk (Download)
Smart_Home.aia (Download)
Smart_Home.apk aplikasi yang bisa langsung instal di android kamu.Smart_Home.aia aplikasi master yang bisa di edit ulang dengan app inventor jika kamu mau.
SOURCE CODE
smart_home.ino (Download)
/*************************************************************************************
*   Home Automation with Android App and NodeMCU
*   by: Hestech Indonesia
*   WARNING: When uploading a code ==> Power-off Relays
************************************************************************************/
#include 
WiFiClient client;
WiFiServer server(80);
const char* ssid = "DELTA_Connection1";
const char* password = "12345678";
String  command =""; // Command received from Android device

// Set Relay Pins
int relay1 = 5;  //D1 on ESP Board ==> lamp 1
int relay2 = 4;  //D2 on ESP Board ==> lamp 2
int relay3 = 0;  //D3 on ESP Board ==> Gate cw
int relay4 = 2;  //D4 on ESP Board ==> gate ccw
int relay5 = 14; //D5 on ESP Board ==> curtain cw
int relay6 = 12; //D6 on ESP Board ==> curtain ccw
int relay7 = 13; //D7 on ESP Board ==> fan
int relay8 = 15; //D8 on ESP Board ==> TV
void setup()
{
  Serial.begin(115200);

  pinMode(relay1, OUTPUT); 
  pinMode(relay2, OUTPUT);  
  pinMode(relay3, OUTPUT);  
  pinMode(relay4, OUTPUT);
  pinMode(relay5, OUTPUT); 
  pinMode(relay6, OUTPUT);  
  pinMode(relay7, OUTPUT);  
  pinMode(relay8, OUTPUT);  

  digitalWrite(relay1,HIGH);
  digitalWrite(relay2,HIGH);
  digitalWrite(relay3,HIGH);
  digitalWrite(relay4,HIGH);
  digitalWrite(relay5,HIGH);
  digitalWrite(relay6,HIGH);
  digitalWrite(relay7,HIGH);
  digitalWrite(relay8,HIGH);
      
  connectWiFi();
  server.begin();
}

void loop()
{
    client = server.available();
    if (!client) return; 
    command = checkClient ();

    //Lampu teras
         if (command == "r1on"  || command == "Lampu teras dihidupkan"    || command == "Hidupkan lampu teras")        digitalWrite(relay1,LOW);
    else if (command == "r1off" || command == "Lampu teras dimatikan" || command == "Matikan lampu teras")     digitalWrite(relay1,HIGH);
    //Lampu ruangan
    else if (command == "r2on"  || command == "Lampu ruangan dihidupkan"    || command == "Hidupkan lampu ruangan")      digitalWrite(relay2,LOW);     
    else if (command == "r2off" || command == "Lampu ruangan dimatikan" || command == "matikan lampu ruangan")   digitalWrite(relay2,HIGH);
    //Pintu gerbang
    else if (command == "r3on"  || command == "Pintu gerbang dibuka"    || command == "Buka pintu gerbang")      digitalWrite(relay3,LOW);
    else if (command == "r3off" || command == "**" || command == "**")   digitalWrite(relay3,HIGH);
    else if (command == "r4on"  || command == "Pintu gerbang ditutup"    || command == "Tutup pintu gerbang")    digitalWrite(relay4,LOW);
    else if (command == "r4off" || command == "**" || command == "**")   digitalWrite(relay4,HIGH);
    //tirai
    else if (command == "r5on"  || command == "Tirai dibuka"    || command == "Buka tirai")    digitalWrite(relay5,LOW);
    else if (command == "r5off" || command == "**" || command == "**")   digitalWrite(relay5,HIGH);
    else if (command == "r6on"  || command == "Tirai ditutup"    || command == "Tutup tirai")    digitalWrite(relay6,LOW);
    else if (command == "r6off" || command == "**" || command == "**")   digitalWrite(relay6,HIGH);
    //kipas
    else if (command == "r7on"  || command == "Kipas dihidupkan"    || command == "Hidupkan kipas")    digitalWrite(relay7,LOW);
    else if (command == "r7off" || command == "Kipas dimatikan" || command == "Matikan kipas")   digitalWrite(relay7,HIGH);
    //TV
    else if (command == "r8on"  || command == "TV dimatikan"    || command == "Hidupkan TV")    digitalWrite(relay8,LOW);
    else if (command == "r8off" || command == "TV dihidupkan" || command == "Matikan TV") digitalWrite(relay8,HIGH);
    //Semua perangkat
    else if (command == "allon" || command == "Semua perangkat dihidupkan" || command == "Hidupkan semua perangkat") 
    {
      digitalWrite(relay1,LOW);
      digitalWrite(relay2,LOW);
      digitalWrite(relay3,LOW);
      digitalWrite(relay4,HIGH);
      digitalWrite(relay5,LOW);
      digitalWrite(relay6,HIGH);
      digitalWrite(relay7,LOW);
      digitalWrite(relay8,LOW);
    }
    else if (command == "alloff" || command == "Semua perangkat dimatikan" || command == "Matikan semua perangkat") 
    {
      digitalWrite(relay1,HIGH);
      digitalWrite(relay2,HIGH);
      digitalWrite(relay3,HIGH);
      digitalWrite(relay4,LOW);
      digitalWrite(relay5,HIGH);
      digitalWrite(relay6,LOW);
      digitalWrite(relay7,HIGH);
      digitalWrite(relay8,HIGH);
    }
    sendBackEcho(command); // send command echo back to android device
    command = "";
}

/* connecting WiFi */
void connectWiFi()
{
  Serial.println("Connecting to WIFI");
  WiFi.begin(ssid, password);
  while ((!(WiFi.status() == WL_CONNECTED)))
  {
    delay(300);
    Serial.print("..");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("NodeMCU Local IP is : ");
  Serial.print((WiFi.localIP()));
}

/* check command received from Android Device */
String checkClient (void)
{
  while(!client.available()) delay(1); 
  String request = client.readStringUntil('\r');
  request.remove(0, 5);
  request.remove(request.length()-9,9);
  return request;
}

/* send command echo back to android device */
void sendBackEcho(String echo)
{
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println("");
  client.println("");
  client.println("");
  client.stop();
  delay(1);
}
PENGGUNAAN APLIKASI
Untuk melakukan pengoperasian perangkat, yang harus dilakukan adalah sebagai berikut:
  1. Pastikan Modul ESP8266 sudah aktif,
  2. Hubungkan perangkat dengan Hotspot yang kamu gunakan. Contoh program diatas menggunakaN Hotspot: DELTA_Connection, Password: 12345678 (password hotspot kamu)
  3. Buka aplikasi Voice_Control, kemudian tuliskan alamat IP Address 192.168.43.176/ pada bagian Set IP Address.  (IP ini didapat dari scan ESP8266.
  4. Kemudian akan menampilkan tampilan seperti pada gambar berikut:
Tampilan Aplikasi di Android
5. Kemudian mulai melakukan pengujian dengan voice control dengan megklik button voice, maka akan tampil gambar seperti berikut:
Voice Command pada Aplikasi Android
6. Setelah berhasil terhubung dengan alat, sebagai contoh cobalah hidupkan lampu dengan perintah suara “Hidupkan lampu teras” maka lampu teras akan hidup seperti pada gambar berikut:
Kondisi Lampu Hidup
Project diatas merupakan salah satu proyek Tugas Akhir deploma III Teknik Komputer yang telah lulus uji dan sidang akhir.
SELAMAT BERKARYA...!
Hestech Indonesia

Innovasi di bidang Teknologi, Listrik, Teknik Komputer dan gaya Hidup. Info lainnya tentang praktik konservasi berbasis Sains, inovasi, dan kearifan lokal