Saat ini ramai dengan cara kontrol/mengendalikan dan memonitor perangkat/alat listrik dirumah dari manapun yang terhubung dengan internet. Gimana caranya, apakah bisa buat sendiri?. Jawabnya bisa, dengan menggunakan teknologi IoT (Internet of Thinngs). Dengan memanfaatkan teknologi tersebut dikombinasikan dengan platform cloud yang sudah banyak bahkan gratis kita dapat mengendalikan perangkat listrik dan memonitor sensor2.
Di artikel ini kita akan bahas cara kontrol alat listrik dan memonitor sensor suhu menggunakan perangkat Wemos D1 R1 yang didalamnya terdapat ESP8266 dengan platform Firebase.
Gambaran besarnya adalah sebagai berikut:
kontroler menggunakan jaringan wifi untuk terhubung dengan internet. kontroler membaca suhu dan menyimpannya difirebase serta membaca data kondisi relay, jika firebase kondisi relay 1, maka kontroler akan meng-on kan relay, jika relay on maka alat listrik yang terhubung dengan relay tersebut akan on/nyala, jika firebase kondisis relay 0, maka kontroler akan meng-offkan relay, jika relay off maka alat listrik yang terhubung dengan relay tersebut akan off/mati.
Detail perbagiannya
Wemos D1 R1 ini salah satu macam mikrokontroler yang didalamnya terdapat perangkat mendukung komunikasi wifi yaitu esp8266. Wemos ini tidak bisa dihubungkan dengan alat2 listrik rumah tangga langsung karena mempunyai tegangan pln 220 VAC jadi kita membutuhkan perangkat tambahan yaitu modul relay 6 channel 5VDC, dan modul dht11 untuk membaca suhu dan kelembaban.
firebase adalah salah satu produk dari google dalam bidang platform cloud, bisa digunakan dalam hal ini yaitu membuat, membaca, memodifikasi, dan menyimpan data diantranya merubah kondisi relay dan sensor suhu.
Sebenarnya selain firebase banyak platform sejenis misal Blynk dan thingspeak.
Agar wemos sebagai kontroler ini dapat bekerja sesuai yang kita inginkan maka perlu untuk dimasukkan program didalamnya, disini kita menggunakan software untuk memprogram di pc/komputer/laptop yaitu Arduino IDE dan memasukkan ke wemos menggunakan kabel data micro usb dengan kabel data micro usb ini juga kita bisa memonitor via data serial.
Yang perlu dipersiapkan lagi adalah jaringan internet bisa pake hotspot hp yang terhubung internet atau bisa juga penyedia jasa Internet seperti speedy, mnc play, biznet, dll.
Kontroler-> baca suhu/kontrol relay -> internet -> akses firebase
Kontroler wemos harus diset didalamnya nama wifi yang terhubung dengan internet beserta passwordnya, serta set url khusus untuk akses firebase dan tokennya.
Berikut gambar wiringnya
dan langsung aja berikut video tutorialnya.
Yang harus disiapkan
- Wemos D1 R1
- Modul relay 6 channel
- Modul suhu dan kelembaban = DHT11
- Kabel jumber
- Kabel data microusb
- Akun gmail
Langkah2
buka browser,buka google, ketik firebase sign in, bisa pake email google/gmail
Misal kita kasih nama relaydhtiot (terserah y )
kemudian klik realtime database klik create database, pilih server databasenya (terserah misal us )
next
klik enable
klik rules, ganti false dengan true klik publis
kemudian pada project overview klik userd and permission, klik tab service account-> database secret, pada secret klik show, u copy token
copy:
l2jEDfTcZPKju2S5yANS8eiv7eJ228u**********
copy juga urlnya:
https://relaydhtiot-default-rtdb.firebaseio.com/
ikuti langkah berikut:
Copy firebase url ini
dan token
pada software Arduino IDE bawaan tidak ada fitur untuk modul wemos, maka kita perlu install libarary tambahan, berikut caranya
Langkah – langkah yang perlu dilakukan untuk installing library ESP8266(didalamnya ada modul u wemos dll) :
- Download dan install software IDE Arduino bisa didownload di https://www.arduino.cc/en/software
- lalu klik buka software tersebut
- Pilih dan buka menu file -> preferences
- Pada bagian “Additional Boards Manager URL’s” masukan link dibawah berikut ini http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Dan klik “OK”
- Lalu setelah itu, klik menu tools -> “Boards Manager”
pada “filter your search” -> esp8266 by ESP8266 community
Kemudian klik install, dan tunggu sampai proses selesai - Kemudian install juga library untuk firebase, disini kita menggunakan
https://github.com/mobizt/Firebase-ESP8266 - atau bisa dicari di klik menu tools–> “Manage Library”
- pada “filter your search” -> Firebase ESP8266 Client (by mobizt)
Kemudian klik install, dan tunggu sampai proses selesai
Kemudian pada board pilih Wemos D1 R1
masukkan ke program arduino ini:
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include "FirebaseESP8266.h"
#include <EEPROM.h>
#include <string.h>
#include "DHT.h"
//dht dihubngan dengan pin 3
#define DHTPIN 3 //D0
#define WIFI_NAME "nama_wifi_internet"
#define WIFI_PASSWORD "password"
#define FIREBASE_URL "https://relaydhtiot-default-rtdb.firebaseio.com/"
#define FIREBASE_TOKEN "l2jEDfTcZPKju2S5yANS8eiv7eJ228uj7*******"
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
#define AUTO 2
#define OFF HIGH
#define ON LOW
unsigned long hitungan_milis;
float t;
float h;
int i;
byte ket_sensor=0;
byte nilai_relay[6];
byte awalku=0;
static const uint8_t R1 = 13;//D7 Relay 1
static const uint8_t R2 = 12;//D6 Relay 2
static const uint8_t R3 = 14;//D5 Relay 3
static const uint8_t R4 = 4;//D4 Relay 4
static const uint8_t R5 = 5;//D3 Relay 5
static const uint8_t R6 = 16;//D2 Relay 6
bool updateData = false;
FirebaseData firebaseData;
void setup()
{
int timeout=0;
delay(1000);
Serial.begin(9600);//inisialisasi serial baudrate 9600
//init pin output relay
pinMode(R1, OUTPUT); digitalWrite(R1, HIGH);
pinMode(R2, OUTPUT); digitalWrite(R2, HIGH);
pinMode(R3, OUTPUT); digitalWrite(R3, HIGH);
pinMode(R4, OUTPUT); digitalWrite(R4, HIGH);
pinMode(R5, OUTPUT); digitalWrite(R5, HIGH);
pinMode(R6, OUTPUT); digitalWrite(R6, HIGH);
//init dht
dht.begin();
//nama wifi yang terhubung dengan internet
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED && timeout<100)
{
timeout=timeout+1;
delay(500);
Serial.print(".");
}
if(timeout>=100)
{
Serial.println("");
Serial.println("WiFi Disconnected");
}
else
{
Serial.println("");
Serial.println("WiFi connected");
}
// Print the IP address ---------------------------------------------------
Serial.println(WiFi.localIP());
Firebase.begin(FIREBASE_URL, FIREBASE_TOKEN);
}
void loop() {
//5 detik kirim ke serial
if (millis() - hitungan_milis >= 5000)
{
hitungan_milis = millis();
for(i=0;i<6;i++)
{
Serial.print("Relay ");Serial.print(i+1); Serial.print("= "); Serial.println(nilai_relay[i]);
}
if(ket_sensor==1)
{
Serial.println("Failed to read from DHT sensor!");
}
else
{
Serial.print("Suhu = ");
Serial.print(t);
Serial.println(" C");
Serial.print("Hum = ");
Serial.print(h);
Serial.println(" %");
}
Serial.println("=============");
}
if(nilai_relay[0]==1)
{
digitalWrite(R1, ON);//on relay
}
else
{
digitalWrite(R1, OFF);//off relay
}
if(nilai_relay[1]==1)
{
digitalWrite(R2, ON);//on relay
}
else
{
digitalWrite(R2, OFF);//off relay
}
if(nilai_relay[2]==1)
{
digitalWrite(R3, ON);//on relay
}
else
{
digitalWrite(R3, OFF);//off relay
}
if(nilai_relay[3]==1)
{
digitalWrite(R4, ON);//on relay
}
else
{
digitalWrite(R4, OFF);//off relay
}
if(nilai_relay[4]==1)
{
digitalWrite(R5, ON);//on relay
}
else
{
digitalWrite(R5, OFF);//off relay
}
if(nilai_relay[5]==1)
{
digitalWrite(R6, ON);//on relay
}
else
{
digitalWrite(R6, OFF);//off relay
}
h = dht.readHumidity();
t = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t)) //|| isnan(f))
{
ket_sensor=1;
return;
}
else
{
ket_sensor=0;
}
//baca suhu dan kelembaban dht dan kirim datanya ke firebase
Firebase.setString(firebaseData, "/iot/suhu", String(t));
Firebase.setString(firebaseData, "/iot/kelembaban", String(h));
if (Firebase.getString(firebaseData, "/iot/relay1")){
// if(update_relay[0] != nilai_relay[0])
// {
// Serial.print("R_ONLN 1= ");
// Serial.println(firebaseData.stringData());
// update_relay[0]=nilai_relay[0];
// }
//membaca data relay, jika nilanya 1 maka menyalakan relay jika 0 mematikan relay
if (firebaseData.stringData() == "1") {
nilai_relay[0]=1;
}
else if (firebaseData.stringData() == "0"){
nilai_relay[0]=0;
}
}
if (Firebase.getString(firebaseData, "/iot/relay2")){
// Serial.print("R_ONLN 2= ");
// Serial.println(firebaseData.stringData());
if (firebaseData.stringData() == "1") {
nilai_relay[1]=1;
}
else if (firebaseData.stringData() == "0"){
nilai_relay[1]=0;
}
}
if (Firebase.getString(firebaseData, "/iot/relay3")){
// Serial.print("R_ONLN 3= ");
// Serial.println(firebaseData.stringData());
if (firebaseData.stringData() == "1") {
nilai_relay[2]=1;
}
else if (firebaseData.stringData() == "0"){
nilai_relay[2]=0;
}
}
if (Firebase.getString(firebaseData, "/iot/relay4")){
// Serial.print("R_ONLN 4= ");
// Serial.println(firebaseData.stringData());
if (firebaseData.stringData() == "1") {
nilai_relay[3]=1;
}
else if (firebaseData.stringData() == "0"){
nilai_relay[3]=0;
}
}
if (Firebase.getString(firebaseData, "/iot/relay5")){
// Serial.print("R_ONLN 5= ");
// Serial.println(firebaseData.stringData());
if (firebaseData.stringData() == "1") {
nilai_relay[4]=1;
}
else if (firebaseData.stringData() == "0"){
nilai_relay[4]=0;
}
}
if (Firebase.getString(firebaseData, "/iot/relay6")){
// Serial.print("R_ONLN 6= ");
// Serial.println(firebaseData.stringData());
if (firebaseData.stringData() == "1") {
nilai_relay[5]=1;
}
else if (firebaseData.stringData() == "0"){
nilai_relay[5]=0;
}
}
}
masukkan nama wifi yang terhubung dengan internet dan passwordny
Masukkn url firebase dan token
sebelumnya install library firebase (kalau belum)
https://github.com/mobizt/Firebase-ESP8266
untuk libary bisa ditempatkan manual disini
\Documents\Arduino\librarieskemudian upload
selesai
kalo dikontrol via hp
bisa juga copy alamat ini
https://console.firebase.google.com/project/relaydhtiot/database/relaydhtiot-default-rtdb/data
buka dibrowser hp
selesai
Untuk program dan library bisa didownload disini tanpa ribet
https://drive.google.com/file/d/1pJxwtmGyC6w6xB3cByrB3JFqVggfyfWk/view?usp=sharing
Makasih