IOT Basic Tutorial

Last updated: May 05 th, 2017

Geeknesia Microcontroller & IOT Starter Kit

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

Read More or Buy Now !

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 :

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

Gambar 2.3 Kabel data micro USB

Gambar 2.4 Kabel jumper

Gambar 2.5 Resistor 220 Ohm

Gambar 2.5 LED


Gambar 2.6 Push Button


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.