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.