IOT Basic Tutorial
Last updated: May 05 th, 2017
Geeknesia Microcontroller & IOT Starter Kit
Sebuah Starter Kit Lengkap dari Geeknesia untuk mempelajari IOT dan Micro Controller dengan mudah melalui praktek secara langsung.
Starter Kit ini menyediakan development board ESP 8266 tipe WeMos D1 yang compatible dengan board arduino sehingga mudah dipahami, muda diperlajari, dan mudah dimengerti. Dalam kit ini tersedia komponen elektronik lengkap untuk berbagai keperluan tutorial dan project real.
Monitoring dan Controlling ESP8266 tipe WeMos Menggunakan Geeknesia
Berikut ini adalah tutorial basic internet of things Monitoring dan Controlling. Setelah menyelesaikan tutorial ini anda akan mengerti bagaimana cara melakukan monitor dan control sebuah device melalui gateway Internet of Things Geeknesia.
1. Registrasi dan menambahkan device :
- Lakukan registrasi untuk device baru berdasarkan petunjuk di link ini Register, Create New Project, Create New Gateway dan"Create New Device"
2. Alat dan Bahan :
Peralatan dan bahan – bahan yang diperlukan adalah sebagai berikut :
- ESP8266 tipe WeMos
- Bread Board
- Kabel data micro USB (USB2.0 to Micro USB)
- Kabel Jumper
- Resistor 220 Ohm
- LED
- Push Button
Gambar 2.1 ESP8266 tipe WeMos
Gambar 2.2 Bread Board
Software
Software yang harus dipersiapkan adalah sebagai berikut :
1. Arduino IDE 1.6.5
Download Link
2. USB2.0 to Serial Driver
Download Link
3. Pubsubclient library
Download Link
3. Setup Software
Pada bagian ini kita akan melakukan setup software agar siap untuk digunakan dalam pemrogaman.
1. Lakukan instalasi Arduino IDE 1.6.5
Gambar 3.1 Icon Arduino IDE
2. Lakukan instalasi USB to Serial Driver
Gambar 3.2 Icon Informasi Device
3. Tambahkan Board Manager untuk ESP8266 dengan cara berikut :
· Buka Program Arduino IDE
· klik File => Preference
· ketikan link berikut pada “Additional Boards Manager URLs” :
http://arduino.esp8266.com/stable/package_esp8266com_index.json
pastikan link diketik tanpa spasi untuk menghindari error.
Gambar 3.3 Arduino Preference Setting
· klik Ok
· Kembali ke halaman utama lalu klik tools => Board => Board Manager
· Tunggu loading selesai lalu scroll down dan klik esp8266 by ESP8266 Community
Gambar 3.4 Arduino Board Manager
· Klik install
proses ini membutuhkan waktu cukup lama tergantung dari koneksi internet.
4. Tambahkan pubsubclient library dengan cara berikut :
· Pada halaman utama klik Sketch => Include Library => add .zip library
· Cari lokasi anda menyimpan pubsubclient-master.zip klik file tersebut lalu klik open
5. Program siap digunakan.
4. Persiapan Project, Gateway, dan Device
Buatlah project yang baru untuk memudahkan pembelajaran dengan nama dan deskripsi yang diinginkan.
Gambar 4.1 Tampilan Project
5. Proses Upload dan Eksekusi Program
Setelah setting selesai dengan baik kita dapat melakukan programing hardware.
#include < ESP8266WiFi.h> // memanggil library ESp8266
#include < PubSubClient.h> //memanggil library pubsubclient protokl untuk client dapat mengirim pesan ke server
const char *ssid = "SSID"; // masukan sesuai SSID yang anda miliki
const char *pass = "password SSID"; // masukan sesui passsword dari SSID anda
int buttonState = 0; // deklarasi kondisi awal status tombol = 0
String flag; // deklarasi variabel flag sebagai wadah kondisi LED
// device details
char *deviceId = "device-id"; // isikan sesuai dengan device ID yang didapatkan dari geeknesia.com
char *deviceUsername = "username"; // isikan sesuai dengan name yang didapatkan dari geeknesia.com
char *devicePassword = "password";// isikan sesuai dengan password yang didapatkan dari geeknesia.com
String deviceCredential = String(deviceUsername) + ":" + String(devicePassword); //deklarasi untuk mempermudah penggunaan username dan penggunaan password
WiFiClient wclient; // deklarasi penamaan ESP8266 WeMoss
PubSubClient client( "geeknesia.com", 1883,wclient); // deklarasi device, server dan port yang digunakan
void senddata(char* topic, String credential, char *var1, String nilai1 ) // fungsi untuk mempermudah pengiriman data
{
String pubString = "{\"code\":\"";
pubString += credential;
pubString += "\",";
pubString += "\"attributes\":{\"";
pubString += String(var1) + "\":\"" + nilai1 + "\"";
pubString += "}}";
char message_buff[pubString.length() + 1];
pubString.toCharArray(message_buff, pubString.length() + 1);
client.publish("iot/data", message_buff);
}
void setup() {
Serial.begin(115200); // deklarasi boutrate yang dipakali untuk komunikasi serial
pinMode(2, OUTPUT); // deklarasi Pin 2 sebagai keluaran (D4)
pinMode(12, INPUT_PULLUP); // deklarasi Pin 12 sebagai masukan (D6)
Serial.println();
Serial.println();
Serial.println("connecting to "); // menampilkan teks pada serial monitor
Serial.print(ssid); // menampilkan nama WiFi pada serial monitor
Serial.println();
}
// fungsi loop yang akan terus berulang
void loop() {
if (WiFi.status() != WL_CONNECTED) // proses penghubungan device ke Access Point ( wifi )
{
WiFi.begin(ssid, pass);
if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
Serial.println("WiFi connected"); // menampilkan pemberitahuan di serial monitor bahwa device sudah terkoneksi
}
if (WiFi.status() == WL_CONNECTED) // proses Penghubungan device ke Server
{
if (!client.connected()) {
if (client.connect(deviceId, "iot/will", 0, 0, deviceId)) {
}
}
if (client.connected())
client.loop();
}
buttonState = digitalRead(12);
if (buttonState == 1) {
digitalWrite(2, LOW);
flag = "OFF";
}
else {
// turn LED off:
digitalWrite(2, HIGH);
flag = "ON";
}
senddata(deviceId, deviceCredential, "attribute", flag);
delay(500);
}
Isi device Id, Username dan password dari informasi Gateway anda di Geeknesia, sedangkan ssid dan pass diisi dengan ID dan password dari WiFi terdekat yang memiliki akses internet.
Gambar 5.1 Gateway Information
Code ini akan kita upload ke device dengan cara berikut :
1. Hubungkan device dengan kabel micro USB ke komputer
2. Buka Arduino IDE lalu copy paste code tersebut yang telah diisi dengan device ID, device Username, dan device Password dengan benar.
3. Klik tools => Board => pilih WeMos D1 R2 & mini.
Gambar 5.2 Memilih Board Manager
4. Klik verify untuk melakukan compile program
5. Setelah program berhasil di-compile tanpa error klik tombol upload maka coding akan di-upload ke device.
Device siap untuk digunakan. Lakukan Wiring sesuai dengan skema berikut :
Gambar 5.3 Device Wiring
Dapat dilihat bahwa pada ESP WeMos tag agak berbeda dengan skema ESP8266 versi Node MCU 0.9 Untuk itu ikuti petunjuk berikut untuk menentukan Pin mana yang harus dihubungkan dengan ESP WeMos.
Gambar 5.4 Skema ESP8266-WeMos
· GND adalah G
· GPIO 12 adalah D6
· GPIO 2 adalah D4
Setelah tersusun dengan benar maka akan menjadi seperti gambar berikut.
Gambar 5.7 Hasil Device Wiring
Konfigurasi dan wiring berhasil dengan baik. Sekarang kita lakukan testing apakah device telah terhubung dengan geeknesia. Buka www.geeknesia.com lakukan login, dan buka gateway project anda. Saat push button anda tekan maka lampu akan menyala. Data inilah yang dikirimkan ke Geeknesia dan ditampilkan pada Gateway. Selamat, anda telah berhasil melakukan monitoring dari Geeknesia.
Gambar 5.10 Monitoring Device Melalui Geeknesia
Untuk tahap selanjutnya kita akan memberi perintah kepada Device (Controlling) melalui Geeknesia. Dengan langkah – langkah yang sama dengan cara di atas lakukan upload code berikut ke device.
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#define ledPin D4 //Pin led yang digunakan pada WeMos
WiFiClient wclient; //Device yang digunakan
PubSubClient client("geeknesia.com", 1883, wclient); //Deklarasi server, port dan device yang digunakan
const char *ssid = "*************"; // Tidak bisa lebih dari 32 karakter!
const char *pass = "********";
//Device detil, informasi dapat diambil dari gateway detail pada akun geeknesia.com
char *deviceId = "device-********************************";
char *deviceTopic = "topic-********************************";
char *deviceUsername = "********************************";
char *devicePassword = "********************************";
char *deviceApiKey = "********************************";
String deviceCredential = String(deviceUsername) + ":" + String(devicePassword);
//Prosedur untuk handle data masuk dari server
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Data Diterima dengan topik [");
Serial.print(topic);
Serial.print("] ");
Serial.println();
Serial.println("Mencoba untuk cetak seluruh isi data");
char *cstring = (char *) payload;
cstring[length] = '\0'; // Tambahkan "terminate" untuk mengakhiri data string dari payload
String data = cstring;
Serial.println(data);
Serial.println();
if(data == "On"){
digitalWrite(ledPin, LOW);
}else if(data == "Off"){
digitalWrite(ledPin, HIGH);
}
}
void setup(){
Serial.begin(9600);
Serial.println();
Serial.println();
Serial.println("Contoh Control LED");
pinMode(ledPin, OUTPUT);
if (WiFi.status() != WL_CONNECTED){
Serial.print("Connecting to ");
Serial.print(ssid);
while(WiFi.status() != WL_CONNECTED){
Serial.print('.');
WiFi.begin(ssid, pass);
delay(500);
}
Serial.println();
Serial.println("WiFi connected");
}
}
void loop(){
if (WiFi.status() != WL_CONNECTED){
Serial.print("Wifi disconnected, reconnecting to ");
Serial.print(ssid);
while(WiFi.status() != WL_CONNECTED){
Serial.print('.');
WiFi.begin(ssid, pass);
delay(100);
}
Serial.println();
Serial.println("WiFi connected");
}
if (WiFi.status() == WL_CONNECTED){
if (!client.connected()){
if (client.connect(deviceId, "iot/will",0,0,deviceId)){
client.setCallback(callback);
client.subscribe(deviceTopic);
}
}
if (client.connected())
client.loop();
}
}
Setelah code baru kita upload wiring akan kita ubah sesuai skema baru berikut :
Gambar 5.9 Device Wiring
· GND adalah G
· GPIO 2 adalah D4
Setelah tersusun dengan benar maka akan terlihat seperti ini
Gambar 5.10 Hasil Device Wiring
Konfigurasi dan wiring berhasil dengan baik. Sekarang kita lakukan testing apakah device telah terhubung dengan geeknesia. Buka www.geeknesia.com lakukan login, dan buka gateway project anda. Saat tombol “on” anda klik maka LED pada board akan menyala, dan jika tombol “off” di klik maka LED akan mati.
Gambar 5.11 Pengujian Controlling
Selamat, anda telah berhasil melakukan Controlling melalui Geeknesia menggunakan ESP8266 tipe WeMos.