Anda di halaman 1dari 15

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:

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


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

Modul relay
3. Breadboard
4. Kabel jumper

5. 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.
1. Via Board Manager

o Jalankan Arduino IDE

o Pilih menu File > Preferences

o 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.
o Pilih menu Tools > Board: > Boards Manager..., akan
muncul jendela Boards Manager. Pilih "esp8266 by ESP8266
Community" lalu klik tombol install di sebelah kanan bawahnya.
2. Via Git

o Masuk ke folder Sketchbook location untuk Arduino


IDE. Lokasi Sketchbook location dapat dilihat pada menu File >
Preferences, pada jendela Preferences bagian atas.
o Buat folder hardware/esp8266com/ lalu masuk ke dalam
folder tersebut.

o Di dalam folder hardware/esp8266com/ clone repository


ESP8266 dengan perintah berikut: git clone
--depth=1 https://github.com/esp8266/Arduino.git esp8266
o 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
o 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

Anda mungkin juga menyukai