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
- NodeMCU Wifi Module ESP-8266 board,
- Relay Modul 8 Chanel,
- DC Motor,
- Terminal Block,
- Papan PCB (Printed Circuit Board),
- PC atau laptop,
- Smarphone,
Software
- App Inventor, MIT
- IDE Arduino
- 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:
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:
- Pastikan Modul ESP8266 sudah aktif,
- Hubungkan perangkat dengan Hotspot yang kamu gunakan. Contoh program diatas menggunakaN Hotspot: DELTA_Connection, Password: 12345678 (password hotspot kamu)
- Buka aplikasi Voice_Control, kemudian tuliskan alamat IP Address 192.168.43.176/ pada bagian Set IP Address. (IP ini didapat dari scan ESP8266.
- 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...!
Menarikk
ReplyDeleteCara ngubah apk nya gimana min, mohon pencerahannya
ReplyDeletePakai App Inventor
ReplyDeleteSmart_Home.aia yang bisa di edit gratis menggunakan web app inventor. login menggunakan account google
ReplyDelete