Anda di halaman 1dari 16

Membuat Prototype SmartHome dengan

Internet of Things (IoT)


25 Desember 2018 hendril satrian purnama android, App Inventor, InternetOfThings, IoT,
learning, technologyappinvetor, InternetOfThings, IoT, SmartHome

SmartHome Concept

belakangan ini konsep Internet of Things (IoT) semakin marak dibicarakan oleh para penggiat
teknologi maupun enterpreneur, nah pertanyaanya, kenapa bisa begitu…..? yak jawabannya,
karena dengan pemanfaatan teknologi IoT ini segala kegiatan manusia dapat dipantau dan
diakses melalui internet, oleh karena itu, ini adalah kesempatan yang sangat besar bagi para
pengusaha untuk mengembangkan bisnisnya, karena pemetaan data pelanggan akan didapatkan
dengan lebih mudah dengan konsep IoT.

SmartHome sendiri adalah satu konsep yang paling banyak dikembangkan dan digemari
menggunakan system IoT ini.

pada postingan kali ini, kita akan membahas tentang bagaimana step-step membuat project
smarthome dengan menggunakan teknologi IoT atau Internet of Things, pada tutorial ini yang
akan kita Bahas adalah bagaimana menghidupkan dan mematikan lampu menggunakan
android, kenapa hanya menghidup dan matikan lampu saja? karena ini adalah konsep
yang paling dasar pada system smartHome, pasti udah pada penasaran kan, langsung aja kita
bahas ya, hehehe

Perisapan Alat dan Bahan

Iklan

langkah pertama yang harus kita lakukan tentu saja persiapan alat dan bahan-bahan yang
dibutuhkan, berikut adalah list alat dan bahan yang diperlukan dalam pembuatan project ini :

Perangkat Keras/Hardware yang dibutuhkan

 Smarthphone (sebagai perangkat untuk mengakses aplikasi)


 Arduino MEGA 2560 (sebagai otak/controller utama)
 Wiznet W5001 Ethernet Shield (modul WiFi/ethernet shield)
 Alcatel lucent i-240w-a (sebagai perangkat penyedia layanan internet/LAN)
 Module Relay 5V (perangkat saklar elektrik)
 Power Supply/Catu Daya (berupa adaptor 12V)
 Lampu Pijar (output)

Perangkat Lunak/Software yang dibutuhkan

 Mit App Inventor (online)


 Arduino IDE

Perancangan Sistem Perangkat Keras

setelah menyiapkan semua kebutuhan alat dan bahan, maka step selanjutnya adalah, kita akan
merancang system perangkat keras dari projek ini

pertama-tama adalah kita perlu merancang blok diagram dari sistemnya


dari rancangan blok diagram di atas tentunya dapat kita susun rangkaian perangkat keras yang
nantinya disesuaikan lagi dengan listing program Arduino yang ada

berikut adalah gambaran sederhana perancangan real dari perangkat keras yang kita gunakan
Implementasi real hardware

konfigurasi real untuk hardware kurang lebih seperti gambar di atas, untuk data trigger, port yang
dipilih menyesuaikan dengan program pada Arduino IDE
Implementasi real hardware

Perancangan Perangkat Lunak/Software


setelah menyelesaikan tahap perancangan hardware maka selanjutnnya kita akan membuat
rancangan software/perangkat lunaknya

pada system yang dibangun menggunakan IoT pada umumnya terdiri dari 2 sisi yaitu pada sisi
client dan server, pada project ini sisi client berada pada system di android, dan server berada
pada system Arduino.

Server

pertama-tama kita akan bahas pada sisi servernya dulu nih, untuk server sendiri pada project ini
kita menggunakan platform Arduino IDE, tentunya karena perangkat keras Utama yang kita
gunakan adalah Arduino �

langsung aja ya kita bahas bagaiamana flowchart dan skrip programnya


Flowchart Server

penjelasan flowchart di atas :

1. Start, Ketika menghidupkan perangkat Android pilih inilisialisasi PIN/Port arduino untuk
lampu kemudian terhubung ke inisialisasi ethernet,lalu baca input analog 8.
2. Setelah membaca input analog masuk ke proses komunikasi hasil pembacaan sensor dan
hasil output kirim ke web.
3. Ketika sudah membaca string dari web, untuk menghidupkan lampu jika string terbaca
(YA) maka digitalwhite akan terhubung kemudian lampu 1 atau lampu yang akan dipilih
akan hidup.
4. Untuk mematikan lampu yang sudah dihidupkan terhubung ke digitalwrite maka pilih
lampu 1 atau lampu lainnya yang ingin dimatikan dan jika semua lampu sudah dimatikan
maka selesai.
5. Tetapi jika string dari web tidak terbaca maka diulangi kembali sampai bisa terhubung
untuk menyalakan atau mematikan lampu yang akan dipilih dan akan berulang kembali
seterusnya dan kemudian selesai.

Codingnya adalah sebagai berikut (pastikan text editor menggunakan Arduino IDE):

#include <SPI.h> //deklarasi liblary SPI untuk komunikasi antara arduino dan
ethernet shield
#include <Ethernet.h> //deklarasi liblary modul ethernet shield

// inisialisasi PIN/PORT yg digunakan untuk keluaran relay (lampu 1-6)


#define relay6 16
#define relay5 17
#define relay4 18
#define relay3 19
#define relay2 20
#define relay1 21

#define sensors A0 //deklarasi PIN sensor arus

int arus; //deklarasi variabel sensor arus

//settingan LAN/Ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac
address
byte ip[] = { 192, 168, 0, 114 }; //ip in lan
byte gateway[] = { 192, 168, 0, 114 }; //internet access
via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask

EthernetServer server(80); //server port yang digunakan

String readString; //deklarasi string

void setup() {
Serial.begin(9600); //deklarasi serial baud rate
while (!Serial) {}

//inisialisasi PORT relay pada ARDUINO


digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
digitalWrite(relay4, LOW);
digitalWrite(relay5, LOW);
digitalWrite(relay6, LOW);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
pinMode(relay5, OUTPUT);
pinMode(relay6, OUTPUT);

Ethernet.begin(mac, ip, gateway, subnet); //memulai Ethernet koneksi

server.begin(); //memulai aktivasi server


Serial.print("server koneksi ");
Serial.println(Ethernet.localIP()); //menampilkan lokal IP pada serial
monitor
}

//bagian program utama yang dijalankan


void loop() {
arus = analogRead(sensors); //membaca sensor arus
EthernetClient client = server.available(); //memulai internett client server
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//menbaca tipe data char pada HTTP request
if(readString.length() < 100) {
//menyimpan karakter ke dalam string
readString += c;
}

//ketika HTTP request selesai

if (c == '\n') {
Serial.println(readString);
Serial.print(arus);
Serial.println("Ampere");

//menulis dan mengirimkan kode HTML ke server sehingga server akan


ada tampilan sesuai dengan kode HTML yang dikirim
client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
client.println("<meta name='viewport' content='width=480, initial-
scale=1'> ");
client.println("<style>");
client.println("body{");
client.println("margin:2px; padding:1px; widht: 10%;");
client.println("text-align:center;");
client.println("}");
client.println("h1");
client.println("{");
client.println("text-align: center;");
client.println("font-family:Arial;");
client.println("}");
client.println("a");
client.println("{");
client.println("text-decoration:none;");
client.println("width:59px;");
client.println("height:50px;");
client.println("border-color:black;");
client.println("border-radius:10px 10px 10px;");
client.println("font-family:Arial;");
client.println("background-color:#293F5E;");
client.println("padding:8px;");
client.println("text-align:center;");
client.println("}");
client.println("p1");
client.println("{");
client.println("text-decoration:none;");
client.println("width:75px;");
client.println("height:50px;");
client.println("border-radius:10px 10px 10px;");
client.println("font-family:Arial;");
client.println("color:white;");
client.println("background-color:red;");
client.println("padding:8px;");
client.println("text-align:center;");
client.println("}");
client.println("p2");
client.println("{");
client.println("text-decoration:none;");
client.println("width:75px;");
client.println("height:50px;");
client.println("border-radius:10px 10px 10px;");
client.println("font-family:Arial;");
client.println("color:white;");
client.println("background-color:black;");
client.println("padding:8px;");
client.println("text-align:center;");
client.println("}");
client.println("a:link {color:white;}");
client.println("a:visited {color:white;}");
client.println("a:hover {color:black;}");
client.println("a:active {color:white;}");
client.println("</style>");
client.println("<TITLE>Relif Line Project</TITLE>");
client.println("<meta http-equiv=\"refresh\" content=\"10\">");
client.println("</HEAD>");
client.println("<BODY width=480px >");
client.println("<H1>SMART LAMP CONTROL</H1>");
client.println("<a href=\"/\"\">Refresh</a>");
client.println("<br />");
client.println("<br />");
client.println("<hr />");
client.println("<br />");
client.println("<br />");
client.println("<hr />");
client.println("<br />");
client.println("<a href=\"/?Relay1on\"\">Lampu 1 ON</a>");
client.println("<a href=\"/?Relay1off\"\">Lampu 1 OFF</a>");

if(digitalRead(21)==0)
{
client.println("<p1>ON</p1><br />");
}
else
{
client.println("<p2>OFF</p2><br />");
}

client.println("<br />");
client.println("<br />");
client.println("<a href=\"/?Relay2on\"\">Lampu 2 ON</a>");
client.println("<a href=\"/?Relay2off\"\">Lampu 2 OFF</a>");

if(digitalRead(20)==0)
{
client.println("<p1>ON</p1><br />");
}
else
{
client.println("<p2>OFF</p2><br />");
}

client.println("<br />");
client.println("<br />");
client.println("<a href=\"/?Relay3on\"\">Lampu 3 ON</a>");
client.println("<a href=\"/?Relay3off\"\">Lampu 3 OFF</a>");

if(digitalRead(19)==0)
{
client.println("<p1>ON</p1><br />");
}
else
{
client.println("<p2>OFF</p2><br />");
}
delay(1);

//stopping client
client.stop();

//===========================================================================
===================================//
//mengontrol arduino dari web/aplikasi smartphone yang telah dibangun, sesuai
dengan karakter pada string yang telah dikirimkan

if (readString.indexOf("?Relay1on") >0)
{
digitalWrite(relay1, 1);
}

if (readString.indexOf("?Relay1off") >0){
digitalWrite(relay1, 0);
}

if (readString.indexOf("?Relay2on") >0){
digitalWrite(relay2, 1);
}

if (readString.indexOf("?Relay2off") >0){
digitalWrite(relay2, 0);
}

if (readString.indexOf("?Relay3on") >0){
digitalWrite(relay3, 1);
}

if (readString.indexOf("?Relay3off") >0){
digitalWrite(relay3, 0);
}

if (readString.indexOf("?Relay4on") >0){
digitalWrite(relay4, 1);
}

if (readString.indexOf("?Relay4off") >0){
digitalWrite(relay4, 0);
}

if (readString.indexOf("?Relay5on") >0){
digitalWrite(relay5, 1);
}

if (readString.indexOf("?Relay5off") >0){
digitalWrite(relay5, 0);
}

if (readString.indexOf("?Relay6on") >0){
digitalWrite(relay6, 1);
}

if (readString.indexOf("?Relay6off") >0){
digitalWrite(relay6, 0);
}

//membersihkan string untuk membaca string selanjutnya


readString="";

}
}
}
}
}
setelah menuliskan semua kode program di atas pada text editor Arduino IDE, coba compile
programnya dan pastikan tidak ada error, jika masih terjadi error maka kemungkinan liblarynya
belum tersedia di computer anda, sehingga anda harus mendownload terlebih dahulu liblary yang
dibutuhkan.

Client

ini adalah tahap terakhir dari pembuatan project ini yaitu tahap pembuatan perangkat lunak
client, dimana pada bagian client ini kita menggunakan android sebagai devicenya sehingga
mobilitas menjadi tinggi

untuk pembuatan app sendiri disini kita menggunakan MIT app inventor 2, karena sangat mudah
untuk dipahami bahkan untuk kalian yang tidak bisa ngoding sekalipun :p untuk mulai membuat
applikasinya kita tinggal membuka link : ai2.appinventor.mit.edu kemudian kita create account
dan kita bisa langsung membuat aplikasi android yang kita inginkan, sangat mudah bukan? �

oke kita mulai pembuatan aplikasi dengan melakukan perancangan desain terlebih dahulu

Desain Screen 1
Desain Screen 2

screen di atas tentunya hanya contoh ya, kalian bisa mengkreasikan sendiri desain tampilan
applikasi kalian semaunya �

nah ini adalah tahap terakhir, fiuh akhirnya….

pada tahap terakhir ini tentunya kita butuh membuat yang namanya program ya supaya aplikasi
yang kita buat bisa dijalankan, yak begitulah, tapi dengan menggunakan MIT App inventor ini
kalian tidak perlu ribet-ribet belajar coding android, karena koding-nya cuma pake blok aja,
lohh… ya tapi itu kenyataan, penasaran? berikut adalah blok koding yang saya gunakan pada
project ini
Contoh blok coding

Anda mungkin juga menyukai