Geeknesia Monitoring dan Controlling Menggunakan ESP 8266 Node MCU 1.0

 

Pada tutorial sebelumnya kita menggunakan ESP WeMos untuk melakukan Controlling dan Monitoring. Sekarang kita akan menggunakan ESP Node MCU 1.0 dimana arsitekturnya mirip dengan WeMos tetapi dengan Pin Input Output yang lebih banyak.


Alat dan bahan

Peralatan dan bahan – bahan yang diperlukan adalah sebagai berikut :


     1. ESP8266 tipe NodeMCU 1.0 (        ESP-12E) 

2. Bread board


 

3. Kabel data micro USB (USB2.0 ke Micro USB)


 

     4. Kabel jumper



 

5. Resistor 220 Ohm

6. Led

7. Push Button


 

 

 

Sedangkan software yang harus dipersiapkan adalah sebagai berikut :

1. Arduino IDE 1.6.5
http://arduino.cc/download_handler.php?f=/arduino-1.6.5-r5-windows.exe

2. USB2.0 to Serial Driver
http://www.arduined.eu/files/CH341SER.zip

3. Pubsubclient library
https://github.com/knolleary/pubsubclient/archive/master.zip

   

 

Part 1 - Registrasi

Hal paling pertama yang kita perlukan adalah registrasi akun di Geeknesia. Tahapannya adalah sebagai berikut :

1. Buka www.geeknesia.com
Klik pada tombol register di ujung kanan atas


Gambar 1.1 Landing Page Geeknesia

2. Isi seluruh form dengan lengkap dan klik register.


Gambar 1.2 Form Registrasi Geeknesia

3. Akun Geeknesia anda siap digunakan.

4. Jika sudah memiliki akun Geeknesia sebelumnya klik tombol login 

Gambar 1.3 Melakukan Login

5. Masukan ID dan password anda.

 

Gambar 1.4 Form Login Geeknesia 

 


Part 2 – Membuat dan Mengatur Project

Untuk menggunakan Device Gateway kita harus terlebih dahulu membuat project. Berikut adalah tahapannya :

1. Klik drop down menu pada ujung atas kanan lalu klik project

Gambar 2.1 Membuka Halaman Project

 

2. Klik Add New Project untuk membuat project baru

Gambar 2.2 Membuat Project Baru

 

3. Isi seluruh form dengan lengkap lalu klik save project

Gambar 2.3 Form Project Baru

 

· Project Name adalah Judul dari Project ini.

· Category adalah jenis project yang anda buat.

· Short Description adalah deskripsi singkat Project ini.

· Tags boleh anda isi dengan tag yang relevan, dimulai dengan tanda (#) dan dipisahkan dengan tanda koma (,)

· Kita dapat mengisi Group dengan Group yang sudah kita ikuti.

· Jika memiliki video kita bisa menampilkannya dengan mengisi kolom video URL.

· Pada kolom editor kita bisa menuliskan content project secara lengkap, jelas, dan menarik.

 

4. Setelah selesai maka project dapat diakses dari halaman project anda.

Gambar 2.4 Project Siap Digunakan



Part 3 – Membuat Gateway

Jika sudah membuat project, kita dapat membuat device gateway untuk project tersebut.

1. Klik IoT Management pada halaman project

Gambar 3.1 IoT Device Management

 

2. Klik add more gateway

Gambar 3.2 Add More Gateway

 

3. Isi seluruh form dengan lengkap

Gambar 3.3 Form Gateway

· Gateway Name adalah nama dari Gateway ini.

· Link dapat diisi dengan link website kita jika ada.

· Control adalah perintah yang dapat kita berikan kepada device melalui gateway ini.
Control hanya boleh diisi dengan huruf dan angka dan dipisahkan dengan koma (,)
Untuk tutorial ini kita akan mengisi Control dengan on,off

· Description dapat diisi dengan deksripsi singkat Gateway ini.

· Pada halaman ini terdapat segmen Map dan Additional Attribute.


Gambar 3.4 Location & Additional Attribute

· pada bagian ini kita bisa menentukan lokasi device dengan cara melakukan klik pada Map maka koordinat device akan terisi secara otomatis.

· Additional Attribute dapat kita isi dengan identifier tambahan untuk memperjelas deksripsi atau lokasi device

· contoh di sini adalah Attribute Kota memiliki Value Bandung.
kita dapat menambahkan identifier lain misalnya Attribute Lantai Value Lantai 3

4. Klik add Gateway untuk membuat gateway



Part 4 – Menambahkan Device Pada Gateway

Setelah gateway selesai dibuat kita dapat menambahkan device pada gateway tersebut dengan cara sebagai berikut.

 

1. Klik add more device

Gambar 4.1 Add More Device

 

2. Isi field yang ada dengan lengkap sesuai kebutuhan

Gambar 4.2 Form Add More Device

 

· Display name adalah nama yang akan ditampilkan pada Geeknesia

· Attribute Value adalah nilai yang akan diambil dari Device oleh Geeknesia

3. Klik Add Device untuk menyelesaikan Proses ini.

4. Pada tahap ini setting Device Gateway selesai dan siap digunakan.

5. Klik tombol ini untuk mendapatkan informasi device

Gambar 4.3 Icon Informasi Device

 

6. Copy dan save informasi berikut ini di notepad untuk tahap selanjutnya

Gambar 4.4 Informasi Device

 

 

Part 5 – 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 5.1 Icon Arduino IDE

 

2. Lakukan instalasi USB to Serial Driver


Gambar 5.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 5.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 5.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.



Part 6 – Programming dan Ekesekusi

Setelah setting selesai dengan baik kita dapat melakukan programing hardware. Dengan code berikut pada saat tombol push button pada prototyping board ditekan maka LED akan menyala. Status led menyala atau tidak akan dibaca oleh Device dan data dikirimkan ke Geeknesia untuk dapat kita baca.

 

#include <ESP8266WiFi.h>

#include <PubSubClient.h>

 

const char *ssid =  "********";   // cannot be longer than 32 characters!

const char *pass =  "********";   //

int buttonState = 0;

String flag;

 

// device details

char *deviceId = "device-*******************************";

char *deviceUsername = "*******************************";

char *devicePassword = "*******************************";

String deviceCredential = String(deviceUsername) + ":" + String(devicePassword);

 

WiFiClient wclient;

PubSubClient client(wclient, (String) "geeknesia.com", 1883);

 

void senddata(char* topic, String credential, char *var1, String nilai1 ) {

  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", pubString);

}

 

void setup() {

 Serial.begin(115200);

  pinMode(2, OUTPUT);     // Initialize the BUILTIN_LED pin as an output

 pinMode(12, INPUT_PULLUP);

}

 

// the loop function runs over and over again forever

void loop() {

 if (WiFi.status() != WL_CONNECTED) {

 WiFi.begin(ssid, pass);

 

 if (WiFi.waitForConnectResult() != WL_CONNECTED)

 return;

 Serial.println("WiFi connected");

 }

 

 if (WiFi.status() == WL_CONNECTED) {

 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, "Lamp", flag);

 delay(5000);

}



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.5 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 NodeMCU 1.0 (ESP-12E Module).

Gambar 5.6 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.7 Device Wiring

 

Dapat dilihat bahwa pada ESP Node MCU 1.0 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 Node MCU 1.0.

 

Gambar 5.8 Skema ESP8266-NodeMcu 1.0 (ESP12E)

· GND adalah GND

· GPIO 12 adalah D6

· GPIO 2 adalah D4

Setelah tersusun dengan benar maka akan menjadi seperti gambar berikut.

Gambar 5.9 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>

 

const char *ssid =  "********";   // cannot be longer than 32 characters!

const char *pass =  "********";   //

const int ledPin = 2;

 

// device details

char *deviceId = "device-*******************************";

char *deviceTopic = "topic-*******************************";

char *deviceUsername = "*******************************";

char *devicePassword = "*******************************";

char *deviceApiKey = "*******************************";

String deviceCredential = String(deviceUsername) + ":" + String(devicePassword);

 

 

#define BUFFER_SIZE 100

 

void callback(const MQTT::Publish& pub) {

 Serial.print(pub.topic());

 Serial.print(" => ");

 Serial.println(pub.payload_string());

 String command = pub.payload_string();

 

 if(command.equals("on")){

 digitalWrite(ledPin, HIGH);

 Serial.println("ON");

 }

 if(command.equals("off")){

 digitalWrite(ledPin, LOW);

 Serial.println("OFF");

 }

 Serial.println("End of callback");

}

 

WiFiClient wclient;

PubSubClient client(wclient, (String) "geeknesia.com", 1883);

 

void setup() {

 Serial.begin(115200);

 delay(10);

 Serial.println();

 Serial.println();

 pinMode(ledPin, OUTPUT);

}

void loop() {

 if (WiFi.status() != WL_CONNECTED) {

 Serial.print("Connecting to ");

 Serial.print(ssid);

 Serial.println("...");

 WiFi.begin(ssid, pass);

 

 if (WiFi.waitForConnectResult() != WL_CONNECTED)

 return;

 Serial.println("WiFi connected");

 }

 

 if (WiFi.status() == WL_CONNECTED) {

 if (!client.connected()) {

 if (client.connect(deviceId, "iot/will",0,0,deviceId)) {

 client.set_callback(callback);

 client.subscribe(deviceTopic);

 }

 }

 

 if (client.connected())

 client.loop();

 }

}

 

Setelah code baru kita upload, wiring akan kita ubah sesuai skema baru berikut :

 

Gambar 5.11 Device Wiring

· GND adalah GND

· GPIO 2 adalah D4

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.

 

Setelah tersusun dengan benar maka akan menjadi seperti gambar berikut.

Gambar 5.12 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.13 Pengujian Controlling

 

Selamat, anda telah berhasil melakukan Controlling melalui Geeknesia.