IOT Project 1: Koneksi Board NodeMCU-ESP8266 ke Server Firebase


Perangkat IOT (internet of things) saat ini sudah banyak merambah ke berbagai perangkat sehari-hari baik perangkat rumahan maupun industri. Kini, untuk belajar membuat perangkat IOT pun juga sudah cukup mudah dan terjangkau. Salahsatu board yang cukup mudah dioprek dan harganya terjangkau adalah board NODEMCU yang berbasis chip ESP8266. Board ini juga cukup menarik untuk digunakan dalam penerapan pembelajaran STEM yang belakangan menjadi tren.

Dalam pemrogramannya, board ini dapat diprogram seperti Arduino, dengan bahasa dan IDE yang sama. Kali ini kita bahas salahsatu pemanfaatan NodeMCU sebagai perangkat yang mampu berinteraksi dengan server secara online.

Tujuan

Tulisan ini akan mencoba membahas cara mengoneksikan board NODEMCU ke database Firebase, termasuk cara mengupdate, mengakses dll. Pada contoh ini kita akan membuat dan mengelola data di Firebase yang akan kita namai suhu dan saklar. Setiap kali kita menekan tombol (momentary switch) maka data akan berubah (ON/OFF), baik di lokal maupun di server. Data akan diakses melalui NODEMCU, artinya data yang ada di server Firebase akan diupdate langsung oleh NODEMCU.

Hardware

Beberapa alat yang dibutuhkan untuk membuat proyek ini antara lain:

  • 1 Board NodeMCU
  • 1 momentary switch button
  • Kabel jumper secukupnya
  • Breadboard (jika diperlukan)
  • Koneksi internet melalui wifi (bisa menggunakan tethering ponsel ).

Software

  • Arduino IDE software yang telah dilengkapi library ESP8266
  • Library Firebase untuk Arduino.

Prosedur

Sebelum memulai proyek ini kita harus memiliki Aduino IDE (dapat diunduh di arduino.cc). Secara default, software ini belum mendukung ESP8266 sehingga kita harus mengupdate dengan menambahkan software yang dibutuhkan agar dapat mendukung board ESP8266, khususnya untuk board NodeMCU. Update ini cukup memakan waktu karena file-file yang diunduh cukup besar. Langkah menginstal ESP8266 di IDE Arduino dapat dibaca disini.

Langkah berikutnya adalah menambahkan library untuk dapat mengakses Firebase. Cara menambahan library ke Arduino IDE dapat dibaca disini.

Untuk database, kita perlu membuatnya terlebih dahulu di situs Firebase. Buat akun di Firebase jika belum punya, kemudian buat database baru bertipe Realtime Database. Kita membutuhkan dua informasi dari database ini untuk nanti dapat digunakan dalam pemrograman board, yaitu URL database host dan kunci autentikasi keamanan (cara mendapatkannya dapat dibaca disini).

Setelah perangkat sudah siap, langkah berikutnya adalah merangkai hardware, membuat program/sketch-nya lalu meng-upload ke board. Pastikan juga untuk melakukan pengujian dengan memantau serial monitor dan data di Firebase.

Rangkaian Hardware

Rangkaian hardware ini cukup sederhana, yaitu kita hubungkan salahsatu kaki dari tombol momentary ke Ground NodeMCU dan kaki lainnya dihubungkan ke salahsatu PIN, dalam contoh ini menggunakan PIN D1. Untuk melihat hasil dari proyek ini akan kita gunakan indikator lampu LED pada board internal NodeMCU. Pada NodeMCU, pin untuk lampu internal mungkin akan berbeda pada setiap versi board. Untuk NodeMCU versi 1 menggunakan pin D0, sedangkan untuk versi 3 menggunakan pin nomor 2.

Sketch

Sketch atau kode program yang digunakan untuk memerintahkan board melakukan langkah yang diinginkan. Misalnya membaca data pin, mengolah data, memberikan keluaran ke pin, meng-upload data ke server, dll.

Pada program ini akan menggunakan pin nomor 2 untuk lampu LED (NodeMCU v3, secara default menggunakan oin ini). Pin untuk tombol memakai pin D1 (dapat diubah) dan pin keluaran menggunakan D5. Untuk penggunaan pin yang berbeda silahkan untuk mengedit kode ini. Selain itu beberapa data yang harus dimasukkan adalah nama hotspot wifi dan passwordnya serta URL/host database Firebase dan AUTH key-nya. Baca langkahnya disini.

#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>

#define FIREBASE_HOST “iot-project-5d159.firebaseio.com”
#define FIREBASE_AUTH “gG3GEOWDPk40WWN7QdWGsB6B2nYmvNRzmr05hA90”
#define WIFI_SSID “wifihotspot”
#define WIFI_PASSWORD “xxxxxx”

int ledState=0;
int LED_PIN =2; //LED internal
int BUTTON_PIN = D1;
int OUT_PIN = D5;

void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN,INPUT_PULLUP);// tombol
pinMode(LED_PIN,OUTPUT); // LED
pinMode(OUT_PIN,OUTPUT); // output PIN

// connect to wifi.
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print(“connecting”);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(“.”);
delay(500);
}
Serial.println();
Serial.print(“connected: “);
Serial.println(WiFi.localIP());

Firebase.begin(FIREBASE_HOST,FIREBASE_AUTH);
}

void loop() {

// get value
Serial.print(“Nilai Saklar: “);
Serial.println(Firebase.getInt(“saklar”));
ledState=Firebase.getInt(“saklar”);

btnState=digitalRead(BUTTON_PIN);
if (btnState==LOW)
{
ledState = !ledState;
digitalWrite(LED_PIN,ledState);
Serial.print(“Data berubah…”);
}

if (ledState==0)
{digitalWrite(LED_PIN,HIGH);
digitalWrite(OUT_PIN,HIGH);
}
else
{digitalWrite(LED_PIN,LOW);
digitalWrite(OUT_PIN,LOW);
}
// mengirim nilai
Firebase.setInt(“saklar”, ledState);
if (Firebase.failed()) {
Serial.print(“setting /truth failed:”);
Serial.println(Firebase.error());
return;
}
}

Penjelasan program ini adalah sebagai berikut:
Langkah setup awal program ini pada bagian setup (yang dieksekusi sekali pada tahap inisisasi) adalah
Mengatur serial monitor, agar data dapat dipantau melalui koneksi serial. Angkah selanjutnya adalah megoneksikan board ke hotspot agar dapat mengakses Internet. Setelah berhasil maka program akan berusaha mengubungkan dengan server Firebase.

Pada bagian loop, yang akan dieksekusi terus menerus adalah

  • Membaca data dari Firebase. Data akan dimasukkan ke variabel ledstate. Nilainya antara 0 dan 1.
  • Membaca data dari pin tombol, jika tombol ditekan maka nilai dari ledstate akan diubah. Jika nilai sebelumna 0 maka akan diubah ke 1 dan sebaliknya. Jika tombol tidak ditekan maka tidak ada perubahan nilai. Perlu diperhatikan, tombol harus ditekan dan ditahan beberapa saat (1-2 detik) baru dlepaskan. Pada setting mode juga pastikan menggunakan PullUp mode agar pembacaan sinyal lebih akurat.
  • Data ledstate dikirimkan ke pin output. Data ini akan menentukan apakah LED akan menyala atau mati.Jika ledstate=0 maka LED mati, jika ledstate=1, maka LED menyala, jika nilainya 0 aka akan mati. Ada dua pin yang digunakan pada contoh ini yaitu internal LED pin, yaitu lampu LED pada board, dan satu lagi adalah PIN D5. Jika ingin menggunakan LED tambahan maka kaki LED positif diubungkan ke PIN ini (tentu diperlukan tambahan resistor yang sesuai).
  • Yang perlu diperhatikan adalah, pada NodeMCU ini untuk mengaktifkan pin menggunakan kebalikan dari Arduino. Jika pada Arduino untuk menghidupkan pin mengunakan HIGH, pada NodeMCU justru menggunakan LOW.
  • Data ledstate dikirim dan disimpan ke server.
  • Proses ini diulang terus menerus.

Pengujian

Untuk menguji apakah alat sudah sesuai dengan apa yang kita inginkan, pertama kali cek pada serial monitor. Di tampilan serial akan muncul indikator apakah koneksi ke wifi/Internet apakah berhasil atau tidak. Jika berhasil maka akan muncul nomor IP. Tekan tombol beberapa saat (1-2 detik) dan perhatikan serial monitoe apakah ada efeknya. Jika berhasil akan mengubah nilai ON-OFF pada status dari variabel yang kita program.
Berikutnya perhatikan Led indikator pada board, jika status ON (bernilai 1) maka lampu akan menyala dan sebaliknya.
Langkah ketiga adalah mengecek data di server Firebase, jika pada perangkat bernilai 1, maka seharusnya nilai field saklar di server juga bernilai 1. Jika tombol dipencet dan status di lokal berhasil diubah, maka lampu akan berubah (ON/OFF), begitu juga data di server akan berubah secara realtime.

Pengembangan

Alat ini dapat digunakan untuk dipakai sebagai pengendali relay atau saklar listrik yang dapat dikendalikan dari internet. Caranya hubungkan pin output (dalam hal ini D1) ke relay. Nilai dari pin ini akan dapat digunakan untuk mengendalikan relay, jika nilai 1 maka saklar ON, jika 0 saklar OFF. Selain itu, pin yang masih tersedia dapat diprogram untuk fungsi lain. Misalnya untuk menambahkan saklar dan keluaran yang lebih banyak.

Demikian tutorial dasar NodeMCU yang terhubung ke Firebase. Jika belum jelas, silahkan ditanyakan di komentar atau di FB fb.com/teknobelajar.

Selamat mengoprek

Klik SUKA di FB Page Teknologi Pembelajaran

Add a Comment

Your email address will not be published. Required fields are marked *