Membangun Sistem Monitoring Suhu Berbasis IoT Menggunakan ESP-01, DHT11, PHP, dan MySQL


Pendahuluan

Membangun Sistem Monitoring Suhu Berbasis IoT Menggunakan ESP-01, DHT11, PHP, dan MySQL

Perkembangan Internet of Things (IoT) telah membawa perubahan besar dalam dunia monitoring dan otomasi. Berbagai perangkat dapat saling terhubung melalui internet sehingga proses pemantauan maupun pengendalian dapat dilakukan secara real-time dari mana saja.

Pada proyek ini saya membangun sebuah sistem monitoring suhu dan kelembapan berbasis IoT menggunakan ESP-01 (ESP8266) sebagai mikrokontroler, sensor DHT11 sebagai pembaca suhu dan kelembapan, serta web hosting berbasis PHP dan MySQL sebagai pusat penyimpanan data. Selain itu, sistem juga dilengkapi dengan kontrol relay yang dapat dioperasikan melalui dashboard website.

Proyek ini dirancang sebagai media pembelajaran sekaligus contoh implementasi IoT sederhana yang mudah dikembangkan untuk berbagai kebutuhan seperti monitoring ruang server, laboratorium, gudang, ruang kelas, greenhouse, maupun smart home.

Tampilan sebenarnya di OLED 

Tujuan

Tujuan pembuatan proyek ini adalah:

Membangun sistem monitoring suhu berbasis internet.
Menampilkan data suhu dan kelembapan secara real-time.
Menyimpan data historis ke database MySQL.
Mengendalikan relay dari website.
Membuat dashboard monitoring yang responsif dan mudah digunakan.
Menjadi media pembelajaran IoT menggunakan ESP8266.

Hardware yang Digunakan


Software yang Digunakan

Arduino IDE
PHP 8
MySQL
Bootstrap 5
Chart.js
Visual Studio Code
XAMPP (untuk pengujian lokal)
Web Hosting (untuk implementasi online)

Arsitektur Sistem

Cara Kerja Sistem

Sistem bekerja dengan alur sebagai berikut:

Sensor DHT11 membaca suhu dan kelembapan lingkungan.
ESP-01 memproses hasil pembacaan sensor.
ESP-01 menghubungkan diri ke jaringan WiFi.
Data dikirim ke server menggunakan protokol HTTPS.
File api.php menerima data dari ESP-01.
Data disimpan ke database MySQL.
Dashboard mengambil data terbaru menggunakan AJAX.
Grafik dan tabel riwayat diperbarui secara otomatis.
Status relay dapat diubah dari dashboard dan dibaca kembali oleh ESP-01.

Wiring Hardware

Struktur Database

Sistem menggunakan dua tabel utama.

Tabel suhu

  • id 
  • suhu 
  • kelembapan 
  • waktu

Tabel relay

  • id 
  • status

Status relay hanya memiliki dua nilai:

  • ON
  • OFF
Dashboard Monitoring

Dashboard dikembangkan menggunakan Bootstrap 5 sehingga dapat diakses melalui komputer maupun smartphone.
Fitur dashboard meliputi:
  • Monitoring suhu secara real-time.
  • Monitoring kelembapan.
  • Grafik suhu.
  • Grafik kelembapan.
  • Riwayat data.
  • Kontrol relay.
  • Auto refresh.
  • Export data.
  • Responsive design

Program ESP-01

Program dikembangkan menggunakan Arduino IDE.

Fungsi utama program meliputi:

  • Menghubungkan ESP-01 ke jaringan WiFi.
  • Membaca data sensor DHT11.
  • Mengirim data ke server menggunakan HTTPS.
  • Membaca status relay dari server.
  • Mengaktifkan atau menonaktifkan relay.
  • Menampilkan informasi melalui Serial Monitor.
Keunggulan Sistem
Beberapa kelebihan sistem ini antara lain:
  • Monitoring dapat dilakukan dari mana saja.
  • Data tersimpan otomatis di database.
  • Dashboard memiliki tampilan modern.
  • Mendukung grafik real-time.
  • Dapat dikembangkan menjadi sistem Smart Home.
  • Menggunakan komponen yang relatif murah.
  • Mudah diprogram menggunakan Arduino IDE.
  • Kendala yang Ditemui
Selama proses pengembangan terdapat beberapa kendala, di antaranya:

  • Konfigurasi HTTPS pada ESP8266.
  • Sinkronisasi kontrol relay dengan dashboard.
  • Pengaturan auto refresh grafik.
  • Penyesuaian skala grafik Chart.js.
  • Pemilihan catu daya 3.3V yang stabil untuk ESP-01.
  • Keterbatasan jumlah pin I/O pada ESP-01.
Seluruh kendala tersebut dapat diatasi melalui pengujian bertahap dan penyesuaian perangkat lunak maupun perangkat keras.

Pengembangan Selanjutnya

Beberapa pengembangan yang dapat dilakukan pada proyek ini antara lain:
  • Mengganti sensor DHT11 dengan DHT22 atau DS18B20 untuk meningkatkan akurasi.
  • Menambahkan notifikasi Telegram atau WhatsApp saat suhu melewati batas tertentu.
  • Mengimplementasikan autentikasi API yang lebih kuat.
  • Menambahkan fitur ekspor data ke Excel dan PDF.
  • Menampilkan grafik harian, mingguan, dan bulanan.
  • Menambahkan dukungan beberapa sensor dalam satu dashboard.
  • Mengintegrasikan sistem dengan platform cloud IoT.
Kesimpulan

Proyek monitoring suhu berbasis IoT menggunakan ESP-01, DHT11, PHP, dan MySQL berhasil menunjukkan bahwa sistem pemantauan lingkungan dapat dibangun dengan biaya yang relatif rendah namun tetap memiliki fungsionalitas yang lengkap. Data suhu dan kelembapan dapat dipantau secara real-time melalui dashboard web, disimpan ke dalam database, serta digunakan untuk mengendalikan perangkat eksternal melalui relay.

Melalui pengembangan lebih lanjut, sistem ini berpotensi diterapkan pada berbagai bidang, seperti otomasi bangunan, laboratorium, pertanian cerdas (smart farming), ruang server, hingga lingkungan pendidikan sebagai media praktikum Internet of Things.

Penutup

Semoga artikel ini dapat menjadi referensi bagi mahasiswa, guru, maupun pengembang yang ingin mempelajari implementasi Internet of Things menggunakan ESP8266. Kritik dan saran sangat diharapkan untuk pengembangan proyek selanjutnya.

Terima kasih telah membaca. Semoga bermanfaat.

Hasil Bisa lihat disini :


Kode Arduino Ide dapat anda lihat disini

/*****************************************************
 * IoT Monitoring Suhu
 * Board  : ESP32 Lolin
 * Sensor : DHT11
 * Relay  : GPIO5
 * Server : HTTPS PHP + MySQL
 *****************************************************/

#include 
#include 
#include 
#include 
#include 
#include 
#include 

//======================
// Konfigurasi Pin
//======================
#define DHTPIN      4      // GPIO4
#define DHTTYPE     DHT11
#define RELAY_PIN   5      // GPIO5

DHT dht(DHTPIN, DHTTYPE);

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
//======================
// WiFi
//======================
const char* ssid     = "SSID";
const char* password = "password";

//======================
// HTTPS API
//======================
const char* server = "https://domain.com/suhu_api.php";

// Interval kirim data
unsigned long lastSend = 0;
const unsigned long interval = 10000;   //10 detik

//====================================================

void connectWiFi()
{
  Serial.print("Menghubungkan WiFi");

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }

  Serial.println();
  Serial.println("========================");
  Serial.println("WiFi Connected");
  Serial.print("IP Address : ");
  Serial.println(WiFi.localIP());
  Serial.println("========================");
}

//====================================================

void setup()
{
  Serial.begin(115200);
Wire.begin(21,22);

if(!display.begin(SSD1306_SWITCHCAPVCC,0x3C))
{
  Serial.println("OLED tidak ditemukan");
  while(true);
}

display.clearDisplay();
display.setTextColor(SSD1306_WHITE);

display.setTextSize(2);
display.setCursor(15,20);
display.println("START");

display.display();

delay(2000);
  pinMode(RELAY_PIN, OUTPUT);

  // Relay OFF
  digitalWrite(RELAY_PIN, LOW);

  dht.begin();

  connectWiFi();
}

//====================================================

void loop()
{
  if (WiFi.status() != WL_CONNECTED)
  {
    connectWiFi();
  }

  if (millis() - lastSend >= interval)
  {
    lastSend = millis();

    kirimData();
  }
}

//====================================================

void kirimData()
{
  float suhu = dht.readTemperature();
  float hum  = dht.readHumidity();

  if (isnan(suhu) || isnan(hum))
  {
    Serial.println("Gagal membaca DHT11");
    return;
  }

  Serial.println("-----------------------------");
  Serial.print("Suhu       : ");
  Serial.print(suhu);
  Serial.println(" °C");

  Serial.print("Kelembapan : ");
  Serial.print(hum);
  Serial.println(" %");

  WiFiClientSecure client;

  // Abaikan sertifikat SSL
  client.setInsecure();

  HTTPClient http;

  http.begin(client, server);

  http.addHeader("Content-Type",
                 "application/x-www-form-urlencoded");

  String postData =
      "suhu=" + String(suhu, 1) +
      "&hum=" + String(hum, 1);

  int httpCode = http.POST(postData);

  Serial.print("HTTP Code : ");
  Serial.println(httpCode);

  if (httpCode > 0)
  {
    String response = http.getString();

    response.trim();
    tampilOLED(suhu, hum, response);

    Serial.print("Relay Server : ");
    Serial.println(response);

    if (response == "ON")
    {
      digitalWrite(RELAY_PIN, LOW);   // Relay Aktif LOW
    }
    else
    {
      digitalWrite(RELAY_PIN, HIGH);
    }
  }
  else
  {
    Serial.println("Gagal mengirim data");
  }

  http.end();

  Serial.println("-----------------------------");
}
void tampilOLED(float suhu,float hum,String relayStatus)
{

display.clearDisplay();

display.setTextSize(1);

display.setCursor(0,0);
display.println("IoT Monitoring");

display.drawLine(0,10,128,10,SSD1306_WHITE);

display.setCursor(0,18);
display.print("WiFi : ");

if(WiFi.status()==WL_CONNECTED)
display.println("Connected");
else
display.println("Disconnected");

display.setCursor(0,30);
display.print("Temp : ");
display.print(suhu,1);
display.println(" C");

display.setCursor(0,42);
display.print("Hum  : ");
display.print(hum,1);
display.println(" %");

display.setCursor(0,54);
display.print("Relay: ");
display.println(relayStatus);

display.display();

}


Subscribe to receive free email updates:

0 Response to "Membangun Sistem Monitoring Suhu Berbasis IoT Menggunakan ESP-01, DHT11, PHP, dan MySQL"

Posting Komentar