Sudah lama gak nulis, jadi kepengen nulis dan bagi-bagi pengetahuan kepada semua, kali ini mengenai smart home, ya projek tugas besar sistem embedded semester 7 dengan sks yang gede 4sks, jadi ngeri kalo gak jadi hhe. Oh ia, gak lupa kasih tau kalo penulis jurusan "sistem komputer" jadi ya tugasnya pasti ada alat, ada ngoding. Oke baca lanjutannya ya ....
Smart home, secara sepintas mungkin sistem yang dibangun terlihat sangat kompleks, padahal sebenarnya bisa dibilang sistem yang dibuat ini cukup sederhana dengan memanfaatkan beberapa komponen seperti board controller, laptop dan juga Access point kita sudah dapat membangun rumah pintar sederhana, ditambah dengan pengetahuan web programming, karena sistem yang dibuat berbasis web setidaknya memiliki pengethuan mengenai HTML, CSS, JS, PHP dan Jquery. Oke, jadi yang jadi pertanyaan adalah perangkat-perangkat apa saja yang digunakan untuk membuat sistem seperti ini ? Berikut adalah jawabannya . .
- Maket rumah (dapat dibuat dengan akrilik/triplek)
- 3 buah LED yang telah disolder dalam PCB bolong dan dibuat kabel jumpernya
- Laptop ( Disarankan menggunakan linux)
- Mobile Phone ( Android, iOS, WindowsPhone)
Berikut merupakan skematik perancangan smart home - kontrol lampu berbasis web
Gambar(1) skematik perancangan
Maket
Maket dibuat dengan menggunakan kayu, triplek dan juga akrilik, dapat dilihat seperti gambar berikut, LED diletakkan pada bagian atas agar menyerupai bola lampu
Gambar(2) hasil jadi sistem
Langkah kerja
1. Langkah pertama kita akan "coding" board controller (arduino) terlebih dahulu
karena kita tahu terdapat 3 buah LED yang digunakan maka otomatis kita juga akan menggunakan 3 buah pin, antara lain pin 8, 12, 13 dimana ketiga pin ini merupakan pin digital. Dapat anda lihat sendiri pada datasheet ATMEGA 328.
Dan jangan lupa untuk melakukan grounding untuk setiap led.
2. Kemudian program board tersebut setidaknya dapat dijalankan menggunakan input berupa huruf atau angka. Pada contoh dibawah kita menggunakan input user berupa angka yang dapat dibaca melalui serial monitor nantinya Contoh seperti berikut :
int ledPin13 = 13;
int ledPin12 = 12;
int ledPin8 = 8;
int incomingByte;
void setup() {
Serial.begin(9600); // initialize serial communication
pinMode(ledPin13, OUTPUT);
pinMode(ledPin12, OUTPUT);
pinMode(ledPin8, OUTPUT);
}
void loop()
{
// see if there's incoming serial data:
if (Serial.available() > 0)
{
incomingByte = Serial.read(); // read the oldest byte in the serial buffer
//Preform the code to switch on or off the leds
if (incomingByte == '0') {
digitalWrite(ledPin13, HIGH); //If the serial data is 0 turn red LED on
}
if (incomingByte == '1') {
digitalWrite(ledPin13, LOW); //If the serial data is 1 turn red LED off
}
if (incomingByte == '2') {
digitalWrite(ledPin12, HIGH); //If the serial data is 2 turn green LED on
}
if (incomingByte == '3') {
digitalWrite(ledPin12, LOW); //If the serial data is 3 turn green LED off
}
if (incomingByte== '4') //If the serial data is 3 turn green LED on
{
digitalWrite(ledPin8, HIGH);
}
if(incomingByte=='5') //If the serial data is 3 turn green LED off
{
digitalWrite(ledPin8, LOW);
}
}
}
<!-end of code block ============================================-->
3. Lanjut, untuk web server kita dapat menggunakan bundling ataupun dapat di instal secara stand-alone install apache2 dan php5, karena kita tidak membutuhkan database maka tidak perlu memasang mysql. Jika telah terpasang buatlah folder/direktori yang akan diakses nantinya
Smart home, secara sepintas mungkin sistem yang dibangun terlihat sangat kompleks, padahal sebenarnya bisa dibilang sistem yang dibuat ini cukup sederhana dengan memanfaatkan beberapa komponen seperti board controller, laptop dan juga Access point kita sudah dapat membangun rumah pintar sederhana, ditambah dengan pengetahuan web programming, karena sistem yang dibuat berbasis web setidaknya memiliki pengethuan mengenai HTML, CSS, JS, PHP dan Jquery. Oke, jadi yang jadi pertanyaan adalah perangkat-perangkat apa saja yang digunakan untuk membuat sistem seperti ini ? Berikut adalah jawabannya . .
- Maket rumah (dapat dibuat dengan akrilik/triplek)
- 3 buah LED yang telah disolder dalam PCB bolong dan dibuat kabel jumpernya
- Laptop ( Disarankan menggunakan linux)
- Debian distros
- Web Server Installed (Apache2)
- PHP 5 Installed
- Full package Board + USB-Serial cable
- Arduino IDE (IDE Compiler nya arduino jg harus terinstal)
- Merk apapun bisa digunakan, dalam percobaan menggunakan LINKSYS WRTG54G
- Atau bisa juga menggunakan hostapd (ap-hotspot) di linux yang bisa jalandi distro berbasis debian seperti ubuntu, mint dan varian lain.
- Mobile Phone ( Android, iOS, WindowsPhone)
Berikut merupakan skematik perancangan smart home - kontrol lampu berbasis web
Gambar(1) skematik perancangan
Maket
Maket dibuat dengan menggunakan kayu, triplek dan juga akrilik, dapat dilihat seperti gambar berikut, LED diletakkan pada bagian atas agar menyerupai bola lampu
Gambar(2) hasil jadi sistem
Langkah kerja
1. Langkah pertama kita akan "coding" board controller (arduino) terlebih dahulu
karena kita tahu terdapat 3 buah LED yang digunakan maka otomatis kita juga akan menggunakan 3 buah pin, antara lain pin 8, 12, 13 dimana ketiga pin ini merupakan pin digital. Dapat anda lihat sendiri pada datasheet ATMEGA 328.
Dan jangan lupa untuk melakukan grounding untuk setiap led.
2. Kemudian program board tersebut setidaknya dapat dijalankan menggunakan input berupa huruf atau angka. Pada contoh dibawah kita menggunakan input user berupa angka yang dapat dibaca melalui serial monitor nantinya Contoh seperti berikut :
int ledPin13 = 13;
int ledPin12 = 12;
int ledPin8 = 8;
int incomingByte;
void setup() {
Serial.begin(9600); // initialize serial communication
pinMode(ledPin13, OUTPUT);
pinMode(ledPin12, OUTPUT);
pinMode(ledPin8, OUTPUT);
}
void loop()
{
// see if there's incoming serial data:
if (Serial.available() > 0)
{
incomingByte = Serial.read(); // read the oldest byte in the serial buffer
//Preform the code to switch on or off the leds
if (incomingByte == '0') {
digitalWrite(ledPin13, HIGH); //If the serial data is 0 turn red LED on
}
if (incomingByte == '1') {
digitalWrite(ledPin13, LOW); //If the serial data is 1 turn red LED off
}
if (incomingByte == '2') {
digitalWrite(ledPin12, HIGH); //If the serial data is 2 turn green LED on
}
if (incomingByte == '3') {
digitalWrite(ledPin12, LOW); //If the serial data is 3 turn green LED off
}
if (incomingByte== '4') //If the serial data is 3 turn green LED on
{
digitalWrite(ledPin8, HIGH);
}
if(incomingByte=='5') //If the serial data is 3 turn green LED off
{
digitalWrite(ledPin8, LOW);
}
}
}
seperti direktori 'smart' atau dapat disesuaikan dengan selera kalian, selanjutnya kita buat file index.php dan style.css karena kedua file ini saling terkait satu sama lain.
4. Jika telah selesai kita akan masuk ke poin utama bagaimana pemrosesan arduino dapat diakses melalui web server. Bagian inilah yang menjadi bagian penting agar sistem tersebut dapat diakses secara mobile melalui web. Sebelumnya penulis akan menjelaskan bahwa secara hardware Arduino UNO untuk dapat digunakan menjadi web server harus menggunakan suatu extension atau kita bisa sebut sebagai shield tambahan yg harus diembedd pada board UNO sehingga dapat dijadikan web server, Shield ini dikenal dengan nama ethernet shield, mungkin karena keterbatasan rupiah yg ada pada penulis maka penulis mencari cara bagaimana agar arduino terlebih komunikasi serial nya dapat langsung dihubungkan tanpa adanya perangkat tambahan dan hal tersebut ternyata dimudahkan karena terdapat pengembang yang membuat suatu class (kelas) dalam pemrograman berorientasi objek dalam php yang artinya dapat kita gunakan dan akses dari kelas tersebut, seperti koneksi serial, untuk buka dan tutup komunikasi. Dari itu penulis juga hanya melakukan akses dari kelas tersebut dengan membuat objek baru pada file index sehingga dapat berjalan.
5. Portal web dapat dibuat sesuka hati dan sebagus mungkin, dan dibuat sefisien mungkin, kalo jago css nya pasti 'insha Allah' bisa bagus. Untuk contoh ini yang penulis buat karena dibuat terpisah antara akses melalui 'desktop/laptop' sama akese lewat 'Mobile Phone' seperti ini tampilannya, sederhana hanya ada header, ACTIVE/INACTIVE button, status lampu. Yang pasti dibuat sesederhana mungkin, terlihat akses terdapat pada direktori php, dan untuk mobilenya nanti adalah php2. Untuk kegunaan yang pasti sama, dan pada mobile yang pasti dibuat dengan ukuran mobile.
Gambar(3) Web based interface