Anda di halaman 1dari 13

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.

Berikut adalah video demo hasil akhir dari tutorial ini:

Baiklah! Klik halaman selanjutnya untuk memulai tutorial! :D

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.

Board Wemos D1 Mini

Relay module

Modul ini berfungsi sebagai sakelar digital untuk lampu yang on-offnya akan kita
kendalikan menggunakan ESP8266 board.

Modul relay

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. Rangkaian lampu. Potong salah satu jalur kabelnya untuk nanti
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.json 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:

Hubungkan 5V pada Wemos ke VCC relay, GND ke GND dan pin D1 ke pin input signal pada
relay.

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.

Hubungkan kabel listrik ke port C dan NO. Pastikan serabut kabel masuk dengan rapi agar
aman dan tidak tersentuh.

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'.

Form untuk membuat project baru di AgnosThings

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.

Pada halaman Info, ditampilkan beberapa data project

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.
Contoh pemanggilan API menggunakan aplikasi Postman

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.

Contoh pemanggilan data dari AgnosThings. Data dikembalikan dalam format JSON

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;. Kemudian Upload lagi programmmu. Apakah lampu besarmu
menyala dan mati sesuai harapan?? :D

Kamu dapat bergabung dengan komunitas programmer ESP8266 di websitenya


www.esp8266.com untuk berkomunikasi, berdiskusi dan mencari ide IoT lainnya
menggunakan board ESP8266. ESP8266 hingga detik ini sudah dapat diprogram dengan
menggunakan bahasa pemrograman C, Arduino, Lua dan MicroPython. Kedepannya
kemungkinan besar perangkat ini akan menjadi perangkat yang paling banyak digunakan
karena harganya yang sangat ekonomis dan juga mudah didapatkan.

Anda mungkin juga menyukai