IOT Basic Tutorial

Last updated: February 07 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 !

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.


1. Registrasi dan menambahkan device :

 

2. Persiapkan Hardware dan Software yang akan digunakan

    Kelengkapan :

    Hardware :

  • ESP8266 tipe NodeMCU 1.0 (ESP-12E)
  • Bread Board
  • Kabel Data micro USB (USB2.0 ke Micro.USB)
  • Resistor 220 Ohm
  • LED
  • Kabel Jumper
  • Push Button

 

Gambar 2.1 ESP8266 tipe NodeMCU 1.0


Gambar 2.2 Bread Board



 Gambar 2.3 Kabel Data micro USB (USB2.0 ke Micro.USB)


 Gambar 2.4 Kabel Jumper

 

     Software 

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

   

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. Siapkan Project, Gateway dan Device

 Buatlah Project yang baru untuk memudahkan pembelajaran dengan nama dan deskripsi yang diinginkan. Lalu buatlah Gateway dan Device dengan jenis Monitoring dan Controling seperti contoh dibawah ini

Monitoring


Kontroling


 

5. Siapkan Program Arduino IDE & Eksekusi 

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> //memanggil library ESP8266
#include <PubSubClient.h> //memanggil library pubsubclient
const char *ssid = "abcde"; // ssid wifi 
const char *pass = "12345"; //  password wifi
int buttonState = 0;
String flag;




// device details
char *deviceId = "device-xxxxxxxxxxxxxxxxxx";
char *deviceUsername = "xxxxxxxxxxxxxxxxxxxxxx";
char *devicePassword = "xxxxxxxxxxxxxxxxxxxxxxxxx";
String deviceCredential = String(deviceUsername) + ":" + String(devicePassword);

WiFiClient wclient;
PubSubClient client(  "geeknesia.com", 1883,wclient);
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",message_buff);
 Serial.println(message_buff);
 //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);
 Serial.println("connecting Wifi");
 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(100);
}

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> //memanggil library ESP8266
#include <PubSubClient.h> //memanggil library pubsubclient
const char *ssid = "abcde"; // ssid wifi const char *pass = "12345"; // password wifi int buttonState = 0; String flag; // device details char *deviceId = "device-f6f24d84e94436cadf6f6233baxxxxxx"; char *deviceUsername = "14937c8bff3e5174f776acb0c8xxxxxx"; char *devicePassword = "b6cc0b44737dd4304e196f31b4xxxxxx"; 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); }

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