15 menit bisa buat kontrol alat dan monitor suhu via internet (IOT)

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
Relay 6 Channel 5V
DHT11
Adaptor 12V 2A
Kabel data mikro usb (untuk memasukkan program)

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

  1. Wemos D1 R1
  2. Modul relay 6 channel
  3. Modul suhu dan kelembaban = DHT11
  4. Kabel jumber
  5. Kabel data microusb
  6. 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) :

  1. Download dan install software IDE Arduino bisa didownload di https://www.arduino.cc/en/software
  2. lalu klik buka software tersebut
  3. Pilih dan buka menu file -> preferences
  4. Pada bagian “Additional Boards Manager URL’s” masukan link dibawah berikut ini http://arduino.esp8266.com/stable/package_esp8266com_index.json
  5. Dan klik “OK”
  6. Lalu setelah itu, klik menu tools -> “Boards Manager”
    pada “filter your search” -> esp8266 by ESP8266 community
    Kemudian klik install, dan tunggu sampai proses selesai
  7. Kemudian install juga library untuk firebase, disini kita menggunakan
    https://github.com/mobizt/Firebase-ESP8266
  8. atau bisa dicari di klik menu tools–> “Manage Library”
  9. 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\libraries

kemudian 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

Sedangkan untuk membuat tampilan aplikasi android dan fitur profesional lainnya bisa cek disini

https://www.musbikhin.com/product/paket-buat-alat-kontrol-dan-monitor-peralatan-listrik-serta-monitoring-suhu-kelembaban-melalui-aplikasi-android-wifi/

Makasih

Author: Musbikhin

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.