Part 1. Alat dan Bahan yang diperlukan.
ESP8266-12 |
FTDI |
Kabel |
Perlengkapan Solder |
Resistor 220Ω |
LED |
Push Button |
Bread Board |
Part 2. Registrasi Device di Geeknesia
Daftarkan device anda mengikuti cara pada tutorial berikut :
Part 3. Persiapan Hardware Programming
-
Lakukan download software di link di bawah ini (ada 5 file)
https://www.dropbox.com/sh/58sfaxxpbhnnt5m/AACeO0HKRGLuYmMZG7Y3z_eda?dl=0
- Arduino-1.6.5-r2-windows.exe
- pubsubclient-master.zip
- ESP8266 Menggunakan Arduino IDE.pdf
- BUTTON_PUBLISH.ino
- Wiring.jpg
Letakkan kelima files ini di folder C:/GE, jika folder belum ada, lakukanlah create folder GE terlebih dahulu.
-
Lakukan Instalasi Software Arduino IDE Versi 1.6.5
Bukalah file Arduino-1.6.5-r2-windows.exe
Jika sudah terinstall buka program Arduino IDE
Lalu klik => File => Preference
Gambar 1 Klik Preference
- Kemudian tambahkan link dibawah ini pada kolom Additional Board Manager URLs:
http://arduino.esp8266.com/staging/package_esp8266com_index.json
Gambar 2 Input Package ESP8266
- Lalu buka Tools => Board => Board Manager
Kemudian pilihlah ESP8266 by ESP8266 Community, lalu klik install.
Gambar 3 Install ESP tool
- Setelah selesai melakukan proses Install ESP tool dan sebelum meneruskan ke tahap programming, kita membutuhkan library pendukung, yakni pubsubclient-master.zip yang sudah kita download terlebih dahulu.
Buka Sketch => Include Library => Add ZIP Library
Kemudian pilih library berbentuk format Zip yang sudah anda download di C:/GE
Gambar 5 Select File MQTT Library format Zip.
- Wiring Hardware (ESP8266 to FTDI)
Buatlah rangkaian seperti gambar dibawah ini untuk melakukan upload program. Settingan jumper di FTDI harus di 5V.
Gambar 6 Wiring ESP8266 ke FTDI Mode Upload
Part 4. Hardware Programming
- Source code di bawah adalah code yang dibuat untuk mematikan dan menyalakan lampu (LED) yang terhubung dengan Digital Output 02 menggunakan sebuah press button yang juga terhubung dengan Digital Input 12. Status lampu tersebut akan dikirimkan ke Cloud Platform Geeknesia : Geeknesia.com
- Untuk melakukan upload Jangan lupa!! Lakukan Tools -> Board, lalu pilihlah NodeMCU 0.9(ESP-12 Module) untuk jenis modul ESP yang dipakai pada percobaan kali ini.
- Upload source code di bawah ini ke ESP8266 yang telah di wiring. Atau bukalah file Button_Publish.ino yang telah didownload sebelumnya terletak di folde C:GE
// Inisialisasi dan Deklarasi #include <ESP8266WiFi.h> #include <PubSubClient.h> const char *ssid = "SSID"; //SSID Wifi const char *pass = "KEY"; //Pass Wifi int buttonState = 0; String flag; // Device details (Ganti detail device di bawah dengan detail device yang anda punya) char *deviceId = "device-8d7dc14bf6cf010d1d06a98f6712xxxx"; char *deviceUsername = "cc9b84861eff1bed4a599a4e94a7xxxx"; char *devicePassword = "e72dc6860e6a6de16ceaac0fbc92xxxx"; String deviceCredential = String(deviceUsername) + ":" + String(devicePassword); // IP address Geeknesia PubSubClient client(wclient, (String) "geeknesia.com", 1883); WiFiClient wclient; // Pada code bagian ini adalah untuk men-setup code yang akan dieksekusi adapun set // baud rate dan menetukan pin untuk dijadikan input ataupun output void setup () { Serial.begin(115200); pinMode(2, OUTPUT); pinMode(12, INPUT_PULLUP); } // Fungsi mengirim data terdapat pada bagian ini (Publish) 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); } // Pada bagian ini dibuat agar code terus berjalan(running/looping) void loop() { // Jika Wifi disconnect maka akan ter-print (….) pada serial print Arduino IDE if (WiFi.status() != WL_CONNECTED) { Serial.print("Connecting to "); Serial.print(ssid); Serial.println("..."); WiFi.begin(ssid, pass); // Dan jika wifi disconnect maka code akan looping di bagian cek wifi ini, // dan sebaliknya jika connect maka code akan melanjutkan 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(); } // Program Button 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); }
-
Isilah SSID dan Key sesuai dengan Wifi Network anda :
const char *ssid = "SSID"; //SSID Wifi const char *pass = "KEY"; //Pass Wifi
Lalu isilah deviceId, deviceUsername, devicePassword sesuai dengan kredential device yang anda dapatkan ketika melakukan Add Device di Geeknesia :char *deviceId = "device-8d7dc14bf6cf010d1d06a98f6712xxxx"; char *deviceUsername = "cc9b84861eff1bed4a599a4e94a7xxxx"; char *devicePassword = "e72dc6860e6a6de16ceaac0fbc92xxxx";
Setelah itu, lakukan UPLOAD Program ke module ESP ini. Apabila sukses, maka akan Done Upload.
-
Setelah prose Upload tersebut berhasil, cabutlah module FTDI dari module ESP. lalu rangkaikanlah sesuai diagram di bawah ini. Catatan Penting !! Setelah Upload program berhasil, lepaslah jumper hitam yang terletak di samping (di PCB tertulis PROG, yakni GPIO 0 ke Ground).
Gambar 8 Wiring ESP8266 ke Led dan Button
Tips : Jika pada saat pengetesan ESP-12 tidak menyala dengan normal (not connected) wiring power terlebih dahulu tanpa beban (led & button), jika ESP sudah ON sambungkan ke beban (led & button).
Part 5. Function Test
Setelah step di atas sudah dilakukan coba buka www.geeknesia.com kemudian Login dan buka project yang telah dibuat.
Gambar 8 Device Posisi "OFF".
Gambar 9 Device Posisi "ON"
Terlihat di gambar indikator "TUTORIAL" berwarna hijau menyatakan bahwa device telah connect ke Geeknesia dan status "Lamp : ON" dan "Lamp: OFF" menandakan bahwa status device di hardware ON atau OFF, untuk lebih meyakinkan cobalah klik button yang tersambung dengan ESP-12 jika status hardware dan geeknesia sama maka percobaan berhasil.