Membuat Sistem Monitoring Sensor dengan ESP8266 dan Google Sheets secara Real-time

Kemampuan untuk memantau data sensor secara real-time menjadi semakin penting di era Internet of Things (IoT) saat ini. Sistem monitoring sensor dengan ESP8266 yang efektif dapat memberikan wawasan berharga dan membantu dalam pengambilan keputusan, baik untuk keperluan industri, pertanian atau pun rumah tangga. Salah satu cara untuk mencapai ini adalah menggunakan mikrokontroler seperti ESP8266 yang terhubung ke internet dan mengirim data ke Google Sheets guna penyimpanan serta analisis lebih lanjut.

 

Alat dan Bahan yang Dibutuhkan

 

ESP8266 (NodeMCU atau Wemos D1 Mini) 

• Sensor DHT22 (atau sensor lainnya sesuai kebutuhan)

• Kabel jumper

• Breadboard

• Koneksi internet (Wi-Fi)

• Akun Google (untuk mengakses Google Sheets)

• Software Arduino IDE

• Library ESP8266 dan DHT (diinstal melalui Arduino IDE)

• Google Apps Script (untuk mengirim data ke Google Sheets)

 

Langkah-langkah Pembuatan Sistem Monitoring Sensor dengan ESP8266 dan Google Sheets secara Real-time

 

Langkah 1: Siapkan Lingkungan Pengembangan

a. Instal Arduino IDE

Jika Anda belum memiliki Arduino IDE, Anda dapat mengunduhnya dari situs resmi Arduino (https://www.arduino.cc/en/software). Setelah mengunduh, ikuti petunjuk instalasi untuk sistem operasi Anda.

 


b. Tambahkan Board ESP8266 ke Arduino IDE

• Buka Arduino IDE.

• Cari menu `File` > `Preferences`.

 

• Di kolom "Additional Boards Manager URLs", tambahkan URL berikut ini:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

 


• Klik `OK`.

• Cari menu `Tools` > `Board` > `Boards Manager`.

 


• Cari "esp8266" dan klik `Install`.

 


 


c. Instal Library yang Diperlukan

• Cari menu `Sketch` > `Include Library` > `Manage Libraries`.

 


• Cari dan instal library berikut ini:

 - DHT sensor library oleh Adafruit

 


 - ESP8266WiFi (sudah termasuk dalam paket ESP8266)

 - ESP8266HTTPClient (sudah termasuk dalam paket ESP8266)

Langkah 2: Siapkan Google Sheets

a. Buat Google Sheet Baru

• Buka Google Sheets di https://sheets.google.com.

• Buat spreadsheet baru dan beri nama sesuai keinginan Anda, misalnya "Sensor Data".

• Buat kolom untuk data yang akan dikirim, misalnya:

 - Timestamp

 - Suhu (°C)

 - Kelembaban (%)

b. Buat Google Apps Script

• Di Google Sheets, klik `Extensions` > `Apps Script`.

• Hapus kode yang ada dan ganti dengan kode berikut ini:

 

function doPost(e) {

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  var data = JSON.parse(e.postData.contents);

  sheet.appendRow([new Date(), data.temperature, data.humidity]);

  return ContentService.createTextOutput("Data received");

}

 

• Simpan proyek dengan nama "SensorDataLogger".

• Klik `Deploy` > `New deployment`.

• Pilih `Web app`.

• Setel "Execute as" ke `Me` dan "Who has access" ke `Anyone`.

• Klik `Deploy`.

Salin URL yang diberikan untuk mengirim data dari ESP8266. 

Langkah 3: Menghubungkan Sensor DHT11 ke ESP8266

a. Rangkaian Elektronik

• Hubungkan pin VCC sensor DHT22 ke pin 3V3 pada ESP8266.

• Hubungkan pin GND sensor DHT22 ke pin GND pada ESP8266.

• Hubungkan pin DATA sensor DHT22 ke pin D4 pada ESP8266 (atau pin GPIO2).


b. Kode Program

• Buka Arduino IDE.

• Buat sketch baru dan tempelkan kode berikut ini:

 

#include <ESP8266WiFi.h>

#include <ESP8266HTTPClient.h>

#include <DHT.h>

#define DHTPIN D4     // Pin dimana DHT11 terhubung

#define DHTTYPE DHT11 // Tipe sensor DHT

const char* ssid = "NAMA_WIFI_ANDA";

const char* password = "PASSWORD_WIFI_ANDA";

const char* googleScriptURL = "URL_GOOGLE_APPS_SCRIPT_ANDA";

DHT dht(DHTPIN, DHTTYPE);

void setup() {

  Serial.begin(115200);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(1000);

    Serial.println("Connecting to WiFi...");

  }

  Serial.println("Connected to WiFi");

  dht.begin();

}

void loop() {

  if (WiFi.status() == WL_CONNECTED) {

    float humidity = dht.readHumidity();

    float temperature = dht.readTemperature();

    if (isnan(humidity) || isnan(temperature)) {

      Serial.println("Failed to read from DHT sensor!");

      return;

    }

    String jsonData = "{\"temperature\":" + String(temperature) + ",\"humidity\":" + String(humidity) + "}";

    HTTPClient http;

    http.begin(googleScriptURL);

    http.addHeader("Content-Type", "application/json");

    int httpResponseCode = http.POST(jsonData);

    if (httpResponseCode > 0) {

      String response = http.getString();

      Serial.println(httpResponseCode);

      Serial.println(response);

    } else {

      Serial.print("Error on sending POST: ");

      Serial.println(httpResponseCode);

    }

    http.end();

  } else {

    Serial.println("WiFi Disconnected");

  }

  delay(60000); // Kirim data setiap 60 detik

}

 

• Ganti `NAMA_WIFI_ANDA`, `PASSWORD_WIFI_ANDA`, dan `URL_GOOGLE_APPS_SCRIPT_ANDA` dengan informasi yang sesuai.

• Upload kode ke ESP8266.

Langkah 4: Menguji Sistem

• Setelah kode diupload, buka Serial Monitor di Arduino IDE.

Pastikan ESP8266 terhubung ke Wi-Fi dan mulai mengirim data ke Google Sheets. 

• Buka Google Sheets Anda dan lihat apakah data suhu dan kelembaban mulai muncul.

Langkah 5: Analisis Data

Anda dapat melakukan analisis lebih lanjut dengan menggunakan data yang terkumpul di Google Sheets,, seperti membuat grafik, menghitung rata-rata, atau bahkan mengirim notifikasi jika nilai tertentu melebihi batas yang ditentukan. 

a. Membuat Grafik

• Di Google Sheets, pilih data yang ingin Anda visualisasikan.

• Klik `Insert` > `Chart`.

• Pilih jenis grafik yang sesuai, seperti line chart untuk melihat tren suhu dan kelembaban dari waktu ke waktu.

b. Mengirim Notifikasi

Anda dapat menggunakan Google Apps Script untuk mengirim email atau notifikasi jika suhu atau kelembaban melebihi batas tertentu. Contoh kode untuk mengirim email:

 

function checkDataAndNotify() {

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  var lastRow = sheet.getLastRow();

  var temperature = sheet.getRange(lastRow, 2).getValue();

  var humidity = sheet.getRange(lastRow, 3).getValue();

  if (temperature > 30) {

    MailApp.sendEmail("email@example.com", "Peringatan Suhu Tinggi", "Suhu melebihi 30°C: " + temperature + "°C");

  }

  if (humidity > 70) {

    MailApp.sendEmail("email@example.com", "Peringatan Kelembaban Tinggi", "Kelembaban melebihi 70%: " + humidity + "%");

  }

}

 

Anda dapat menjalankan fungsi ini secara berkala menggunakan trigger di Google Apps Script.

Langkah 6: Optimasi Sistem

a. Mengurangi Konsumsi Daya

Jika Anda menggunakan sistem ini dalam aplikasi yang membutuhkan konsumsi daya rendah, seperti pemantauan lingkungan di daerah terpencil, Anda dapat mengoptimalkan penggunaan daya ESP8266. Beberapa cara untuk melakukannya:

• Deep Sleep Mode

ESP8266 memiliki fitur deep sleep yang dapat mengurangi konsumsi daya secara signifikan. Anda dapat mengaktifkan mode ini setelah mengirim data ke Google Sheets. Contoh kode untuk mengaktifkan deep sleep:

  

 void setup() {

     // Kode setup sebelumnya

     ESP.deepSleep(60e6); // Tidur selama 60 detik

   }

   void loop() {

     // Kode loop tidak diperlukan karena ESP akan restart setelah deep sleep

   }

 

• Mengurangi Frekuensi Pengiriman Data

Jika data tidak perlu dikirim setiap menit, Anda dapat menyesuaikan interval pengiriman data menjadi lebih lama, seperti setiap 5 atau 10 menit.

b. Meningkatkan Keandalan Koneksi

Koneksi Wi-Fi yang tidak stabil dapat menyebabkan data tidak terkirim. Berikut ini beberapa tips untuk meningkatkan keandalan koneksi:

• Menggunakan WiFi Reconnect

Tambahkan fungsi untuk mencoba menghubungkan ulang ke Wi-Fi jika koneksi terputus. Contoh:

 

   

void reconnectWiFi() {

     if (WiFi.status() != WL_CONNECTED) {

       WiFi.begin(ssid, password);

       while (WiFi.status() != WL_CONNECTED) {

         delay(1000);

         Serial.println("Reconnecting to WiFi...");

       }

       Serial.println("Reconnected to WiFi");

     }

   }

 

• Menggunakan Access Point Cadangan

Jika memungkinkan, siapkan access point cadangan yang dapat digunakan jika jaringan utama tidak tersedia.

Langkah 7: Keamanan Sistem

a. Melindungi Data yang Dikirim

Mengirim data melalui internet memerlukan perhatian khusus terhadap keamanan. Berikut ini beberapa langkah yang dapat Anda lakukan:

• Menggunakan HTTPS

Pastikan URL Google Apps Script menggunakan HTTPS (bukan HTTP) untuk mengenkripsi data yang dikirim. Google Apps Script secara default sudah menggunakan HTTPS. 

• Membatasi Akses ke Google Sheets

Pastikan hanya Anda atau orang terpercaya yang memiliki akses ke Google Sheets dan Google Apps Script. Anda dapat membatasi akses dengan mengatur izin di Google Drive.

• Menggunakan Token Autentikasi

Anda dapat menambahkan token autentikasi di Google Apps Script untuk memastikan hanya permintaan yang sah yang diterima. Contoh:

     

function doPost(e) {

     var token = e.parameter.token;

     if (token !== "TOKEN_RAHASIA_ANDA") {

       return ContentService.createTextOutput("Unauthorized");

     }

     var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

     var data = JSON.parse(e.postData.contents);

     sheet.appendRow([new Date(), data.temperature, data.humidity]);

     return ContentService.createTextOutput("Data received");

   }

   Kemudian, tambahkan token di kode ESP8266:

String jsonData = "{\"temperature\":" + String(temperature) + ",\"humidity\":" + String(humidity) + ",

\"token\":\"TOKEN_RAHASIA_ANDA\"}";


b. Melindungi Kredensial Wi-Fi

Jangan menyimpan kredensial Wi-Fi (SSID dan password) secara langsung di kode. Sebagai alternatif, Anda dapat menggunakan fitur seperti WiFiManager yang memungkinkan pengguna untuk mengonfigurasi koneksi Wi-Fi melalui antarmuka web.

 

 

 

 

 

 

Siap Untuk Membuat Proyek Impianmu Menjadi Kenyataan?

Klik di sini untuk chat langsung via WhatsApp dan dapatkan dukungan langsung dari tim ahli kami!

  

Posting Komentar

0 Komentar