Anda di halaman 1dari 11

Belajar IoT - Menyalakan dan

Mematikan Lampu Via Internet


Menggunakan AgnosThings dan
ESP8266

Internet of Things kian marak. Perangkat IoT yang murah meriah dan canggih sudah
banyak dan akan terus bermunculan. Berbagai layanan platform IoT pun semakin
berkembang dan saling berkompetisi. Ekosistem yang semakin meluas ini berdampak
pada membludaknya jumlah penggiat IoT untuk membuat berbagai kreasi. Vision
Mobile dalam salah satu reportnya menyebutkan bahwa pada hingga penghujung
tahun 2015 ada sekitar 4,5 juta individu developer aktif di seluruh dunia yang
mengembangkan perangkat IoT.

Pada tutorial ini, Saya akan menunjukkan satu kasus implementasi IoT yang dapat
Kamu coba dengan tingkat kesulitan yang rendah dan budget yang ekonomis.
Skenarionya adalah membuat perangkat yang dapat menyalakan dan mematikan
lampu melalui komputer atau handphone yang terhubung ke internet. Kalo Kamu
belum punya gambaran tentang IoT atau Internet of Things, Kamu bisa baca ulasan
tentang gambaran umum IoT pada artikel Penjelasan Sederhana mengenai Internet of
Things atau CodePolitan Magazine edisi Internet of Things.
Persiapan Perangkat dan Alat
Untuk dapat mengikuti tutorial ini, Kamu harus mempersiapkan beberapa
perangkat berikut:

 Wemos D1 Mini Board ini adalah board wifi kecil berbasis ESP8266.
ESP8266 dikenal sebagai modul WiFi yang handal, ekonomis dan komunitas
yang besar. ESP8266 inilah yang akan menghubungkan perangkat kita dengan
internet via WiFi. Ada banyak varian prototype board berbasis ESP8266,
seperti NodeMCU, Adafruit HUZZAH ESP8266, ESPDuino, SparkFun
ESP8266 Thing, dan Wemos. Kita sebenarnya bisa langsung memprogram
ESP8266 langsung tanpa menggunakan yang breakout board. Tapi kali ini
saya menggunakan Wemos D1 Mini karena board ini adalah yang paling
murah dan mudah didapatkan dibanding board sejenisnya. Selain itu board
ini sudah dilengkapi dengan onboard microUSB dan Serial driver sehingga
tidak perlu lagi USB to TTL atau FTDI adapter. Cocok untuk belajar.
 Relay module Modul ini berfungsi sebagai sakelar digital untuk lampu yang
on-offnya akan kita kendalikan menggunakan ESP8266 board.
 Breadboard
 Kabel jumper
 Set lampu Rangkaian lampu lengkap dengan dudukan lampu, kabel
dan stekernya. Perhatikan bahwa bagian tengah dari salah satu line kabelnya
kita putus untuk nantinya dihubungkan ke relay.Selain perangkat-perangkat di
atas, Kamu akan memerlukan Wifi Access Point yang terhubung ke internet.
Access Point ini yang nantinya akan digunakan oleh ESP8266 untuk
terkoneksi ke internet. Kamu bisa menggunakan jaringan Wifi rumah kalo
punya, sekolah, kantor atau melalui tethering hotspot dari smartphone atau
wireless router. Selain itu, Kamu juga bakal memerlukan beberapa alat seperti
obeng dan gunting.

Install Hardware Package ESP8266


ESP8266 dapat diprogram dengan Arduino IDE. Untuk itu kita akan menginstal
terlebih dahulu hardware package untuk ESP8266 pada Arduino IDE. Ada dua jalan
untuk itu, yakni melalui board manager pada Arduino IDE, atau mengunduh source
code atau git clone dari repo Github. Saya asumsikan Kamu sudah menginstal
Arduino IDE di komputermu. Dan untuk menggunakan ESP8266 disarankan untuk
menggunakan Arduino IDE v1.6.7 ke atas. Kalo Kamu belum menginstal Arduino
IDE, unduh terlebih dahulu installernya di sini lalu jalankan untuk menginstal di
komputermu. Setelah itu ikuti salah satu langkah di bawah ini untuk menginstal
hardware package untuk ESP8266.

Via Board Manager

 Jalankan Arduino IDE


 Pilih menu File > Preferences
 Pada kolom "Additional Boards Manager URLs", isikan tautan berikut:
http://arduino.esp8266.com/stable/package_esp8266com_index.jso
n Kalo kolom Boards Manager sudah ada isinya sebelumnya, pisahkan
dengan koma.
 Pilih menu Tools > Board: > Boards Manager..., akan muncul jendela Boards
Manager. Pilih "esp8266 by ESP8266 Community" lalu klik tombol install
di sebelah kanan bawahnya.

Via Git

 Masuk ke folder Sketchbook location untuk Arduino IDE. Lokasi


Sketchbook location dapat dilihat pada menu File > Preferences, pada jendela
Preferences bagian atas.
 Buat folder hardware/esp8266com/ lalu masuk ke dalam folder tersebut.
 Di dalam folder hardware/esp8266com/ clone repository ESP8266 dengan
perintah berikut: git clone --depth=1
https://github.com/esp8266/Arduino.git esp8266
 Unduh binary tools untuk ESP8266. (Untuk tahap ini kita akan menjalankan
script python, maka komputermu harus terisntall python 2.7 ke atas). Masuk
ke folder esp8266/tools/ lalu jalankan perintah berikut: python get.py
 Restart Arduino IDE

Merangkai Alat
Rangkai semua perangkat menjadi seperti bagan berikut:Perhatian: karena kita
bermain dengan listrik AC bertegangan tinggi, maka pastikan Kamu memasang kabel
ke steker dan dudukan lampu dengan rapi, dan masukkan kedua ujung kabel ke relay
dengan rapi agar tidak tersentuh saat arus tertutup.Pada umumnya ada 3 port pada
relay, yang diberi simbol C, NC dan NO. C singkatan dari Common Connection,
NC singkatan dari Normally Closed dan NO singkatan dari Normally Opened. Jadi
bila kita menghubungkan kedua ujung kabel ke C dan NC, maka rangkaian listrik
akan tertutup pada awalnya, dan bila dihubungkan ke C dan NO, maka rangkaian
listrik akan terbuka. Kita akan gunakan C dan NO agar lampu tidak menyala saat
pertama kali listrik dihubungkan.

Membuat Project di AgnosThings


Sebenarnya ESP8266 dapat berlaku sebagai Access Point, sehingga perangkat lain
seperti komputer dan smartphone dapat terhubung langsung ke ESP8266
dan mengirimkan sinyal perintah tertentu. Namun bila skenarionya demikian, maka
kita hanya bisa mengontrol ESP8266 dalam jarak yang terbatas. Pada tutorial kali ini
kita akan memanfaatkan salahsatu platform IoT yakni AgnosThings yang akan kita
gunakan untuk menyimpan nilai untuk mengindikasikan lampu menyala dan
mati. Nantinya perangkat Wemos kita akan kita hubungkan ke internet dan
mengambil nilai dari server AgnosThings untuk menentukan apakah lampu harus
menyala atau mati.

Pertama-tama mauk terlebih dahulu ke website AgnosThings


di http://agnosthings.com kemudian registrasi. Setelah proses registrasi selesai, login
dengan akun yang sudah Kamu buat melalui halaman login. Kamu akan diarahkan ke
halaman dashboard AgnosThings.

Sekarang kita akan membuat project di AgnosThings. Project yang kita buat akan
menyimpan data yang kita simpan untuk kebutuhan proyek IoT kita. Pilih menu
untuk membuat Project/Channel baru. Kamu akan diarahkan ke halaman form untuk
membuat project. Isi setiap field form seperti pada gambar di bawah ini. Bagian
paling penting adalah kolom Field(s). Kolom ini berisi field apa saja yang akan
disimpan datanya. Karena tutorial kita hanya memerlukan pengecekan satu nilai saja -
-lampu menyala atau mati, maka kita hanya akan mengisi kolom ini dengan satu field
bernama 'switch'.Daftar project/channel dapat diakses melalui menu Channel
List. Setiap project/channel akan memiliki setidaknya tiga halaman fitur yang bisa
diamati: Info, Raw Data dan Chart. Halaman Info berisi informasi seputar project
kita beserta daftar API yang dapat kita gunakan untuk menyimpan dan mengambil
data dari server. Halaman Raw Data menampilkan tabel berisi data yang sudah
tersimpan di server. Halaman Chart menampilkan grafik data yang sudah tersimpan
di server dari mulai data pertama hingga data terakhir yang masuk.
Setiap project memiliki ID dan GUID yang akan digunakan pada API.Coba masuk ke
halaman Info dan perhatikan bagian Channel API. Salin URL API yang berlabel
'Sending data to channel' dan panggil pada browser lain. Atau Kamu dapat
menggunakan aplikasi seperti Postman untuk memanggil API tersebut. Kamu dapat
mengganti tag {value} pada URL API dengan nilai yang ingin disimpan. Karena kita
hanya akan menyalakan dan mematikan lampu, maka kita hanya perlu
menyimpan nilai 0 dan 1.Kamu dapat mengecek data yang sudah masuk pada
halaman Raw Data dan Chart.
Kamu juga dapat memanggil data yang sudah tersimpan dengan menggunakan URL
API yang ada di bawah label 'Getting data back from channel' pada halaman
Info. Kamu dapat mencoba berbagai API yang tersedia dan melihat hasilnya.

Menuliskan Kode
Kita sudah mendapatkan API untuk mengambil data dari server AgnosThings.
Sekarang kita akan gunakan pada program ESP8266.

Buka Arduino IDE dan hubungkan board Wemos D1 Mini ke komputer


menggunakan kabel MicroUSB.
Pada menu Tools > Board:, pilih WeMos D1 R2 & mini. Set CPU Frequency ke
80MHz. Pilih Flash Size ke 4M (1M SPIFFS). Pilih Upload Speed ke 115200.
Terakhir set Port ke port USB dimana WeMos terhubung.

Setelah itu tuliskan kode program berikut:

#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>

ESP8266WiFiMulti WiFiMulti;
void setup()
{
Serial.begin(115200);

// set Wifi SSID dan passwordnya


WiFiMulti.addAP("SSID", "Password");
}

void loop()
{
// tunggu koneksi Wifi
if((WiFiMulti.run() == WL_CONNECTED))
{
HTTPClient http;

// ganti dengan URL API Last Feed punyamu sendiri


http.begin("http://agnosthings.com/xxxxxxxx-xxxx-xxxx-xxxx-
xxxxxxxxxxxx/field/last/feed/xx/switch");

// mulai koneksi dan ambil HTTP Header


int httpCode = http.GET();

// httpCode akan bernilai negatif bila error


if(httpCode > 0)
{
// cetak httpCode ke Serial
Serial.printf("[HTTP] GET... code: %d\n", httpCode);

// bila nilai dari server diterima


if(httpCode == HTTP_CODE_OK)
{
// cetak string json dari server
String json = http.getString();
Serial.println(json);
}

} else {
Serial.printf("[HTTP] GET... failed, error: %s\n",
http.errorToString(httpCode).c_str());
}
// tutup koneksi HTTP
http.end();
}

delay(5000);
}

Penjelasan program:

Kita menggunakan dua library milik ESP8266, yakni ESP8266WiFiMulti untuk


terkoneksi dengan jaringan WiFi, dan ESP8266HTTPClient untuk mengakses
halaman HTTP. Pada fungi setup(), set parameter addApp() dengan SSID dan
password jaringan WiFi yang ingin digunakan untuk terhubung ke Internet. Pada
fungsi loop(), set parameter fungsi http.begin() dengan URL API project
AgnosThings Kamu. API yang digunakan adalah API untuk mengambil data terakhir
(last feed). Apabila koneksi berhasil dan server mengirimkan respon, respon server
akan kita ambil dengan fungsi http.getString(). Value dari respon ini adalah string
json dari value terakhir. Di akhir program, kita memanggil fungsi delay(5000) agar
program mengulang memanggil API setelah jeda 5 detik. Kamu dapat mengeset
waktu tunggu ini lebih cepat atau lebih lambat tergantung kebutuhan nantinya.

Upload kode program Kamu kemudian setelah proses upload selesai, buka jendela
Serial Monitor melalui menu Tools > Serial Monitor. Bila programmu benar,
mestinya WeMos akan mencetak data seperti pada gambar berikut:
Sembari program jalan dan terus mengecek API setiap 5 detik, coba Kamu
perbaharui valuenya menggunakan API untuk mengirim data. Ubah value switch dari
1 menjadi 0, kemudian update lagi menjadi 1, dan mestinya data terakhir yang
diterima oleh program kita pun berubah sesuai dengan data terakhir yang sudah kita
update ke server.

Menyalakan dan Mematikan Lampu


Kita sudah bisa memanggil data switch kita dari server AgnosThings. Sampai sini
kita masih belum bisa menyalakan dan mematikan lampu. Kita hanya perlu
menambahkan pengecekan value jsonnya. Bila valuenya
{"value":"1","code":200} maka kita nyalakan lampu dan bila valuenya
{"value":"0","code":200} kita matikan lampu.

#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>

ESP8266WiFiMulti WiFiMulti;

// set variabel pin untuk lampu


int lamp = LED_BUILTIN;

void setup()
{
Serial.begin(115200);

// set Wifi SSID dan passwordnya


WiFiMulti.addAP("SSID", "Password");

// set pin mode ke output


pinMode(lamp, OUTPUT);
}

void loop()
{
// tunggu koneksi Wifi
if((WiFiMulti.run() == WL_CONNECTED))
{
HTTPClient http;

// ganti dengan URL API Last Feed punyamu sendiri


http.begin("http://agnosthings.com/xxxxxxxx-xxxx-xxxx-xxxx-
xxxxxxxxxxxx/field/last/feed/xx/switch");

// mulai koneksi dan ambil HTTP Header


int httpCode = http.GET();

// httpCode akan bernilai negatif bila error


if(httpCode > 0)
{
// cetak httpCode ke Serial
Serial.printf("[HTTP] GET... code: %d\n", httpCode);

// bila nilai dari server diterima


if(httpCode == HTTP_CODE_OK)
{
// cetak string json dari server
String json = http.getString();
Serial.println(json);

// cek value json


if(json == "{\"value\":\"1\",\"code\":200}"){
// set ke LOW untuk menyalakan
digitalWrite(lamp, LOW);
} else {
// set ke HIGH untuk mematikan
digitalWrite(lamp, HIGH);
}
}

} else {
Serial.printf("[HTTP] GET... failed, error: %s\n",
http.errorToString(httpCode).c_str());
}
// tutup koneksi HTTP
http.end();
}

delay(5000);
}

Penjelasan program:

Sebelum fungsi setup(), kita deklarasikan variable ingeger lamp untuk menyimpan
nomor pin yang akan kita gunakan untuk menyalakan dan mematikan lampu. Saya set
variabel ini dengan LED_BUILTIN yakni nomor pin LED yang ada pada onboard
ESP8266 agar kita mudah dalam proses pengecekan. Bila program sudah berfungsi
dengan baik, maka kita bisa kemudian mengubah nilai variabel ini menjadi D1 seperti
pada bagan rangkaian pada step 4. Pada fungsi setup() kita set pin mode untuk
variabel lamp ke mode OUTPUT. dan pada fungsi loop(), setelah kode
Serial.println(json);, kita menambahkan kode untuk mengecek nilai json yang
nantinya digunakan untuk mengeset nilai digital pin lamp.

Upload program dan tes dengan mengupdate nilai switch menggunakan API update
value. Bila Kamu set value ke 1 dan LED menyala, begitu juga bila value diset ke 0
dan LED mati, berarti program Kamu selesaaaai! :D
Langkah Terakhir
Pastikan rangkaian lampu sudah terhubung dengan relay dan pin D1 pada WeMos
terhubung ke pin input signal relay. Kemudian update baris kode int lamp =
LED_BUILTIN; menjadi int lamp = D1;.

Anda mungkin juga menyukai