IOT Basic Tutorial
Last updated: February 07 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.
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 :
- Lakukan
registrasi untuk device baru berdasarkan petunjuk di link ini Register, Create New Project, Create New Gateway dan"Create New 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