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.
Via Git
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.
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.
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
ESP8266WiFiMulti WiFiMulti;
void setup()
{
Serial.begin(115200);
void loop()
{
// tunggu koneksi Wifi
if((WiFiMulti.run() == WL_CONNECTED))
{
HTTPClient http;
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n",
http.errorToString(httpCode).c_str());
}
// tutup koneksi HTTP
http.end();
}
delay(5000);
}
Penjelasan program:
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.
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
ESP8266WiFiMulti WiFiMulti;
void setup()
{
Serial.begin(115200);
void loop()
{
// tunggu koneksi Wifi
if((WiFiMulti.run() == WL_CONNECTED))
{
HTTPClient http;
} 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;.