Langsung ke isi
Stasiun 4 · Jaringan dan IoTProyek akhir: monitor suhu ruangan di HP

Materi 10 dari 10 · Stasiun 4

Proyek akhir: monitor suhu ruangan di HP

90 menit7 kartuDraf AI · belum direview

Setelah materi ini, kamu bisa:

  • Bisa merakit monitor suhu ruangan dari ESP32 dan termistor yang mengirim data lewat MQTT.
  • Bisa menampilkan suhu terkini dan riwayatnya di HP.
  • Bisa memeriksa proyek dengan daftar cek keamanan dan mencari penyebab kalau ada bagian yang tidak bekerja.

Proyek akhir

Semua yang kamu pelajari bertemu di sini. Hasil akhirnya, kamu membuka HP di mana pun dan melihat suhu kamarmu sekarang beserta grafik 24 jam terakhir.

Proyek ini memakai rantai panjang: Sensor analog: LDR dan termistor dan ADC: membaca sensor analog (sensor), WiFi: menghubungkan ESP32 (WiFi), JSON: format data (JSON), MQTT: protokol khas IoT (MQTT), dan Dashboard dan penyimpanan data (dasbor). Kalau ada langkah yang terasa asing, buka lagi materinya.

Rancangan sistem

Jalankan skenarionya untuk melihat seluruh perjalanan satu data. Kartu terbuka setelah keduanya dijalankan.

Simulasi interaktif tersedia saat JavaScript aktif.

ESP32 hanya tahu broker. Ia tidak tahu ada HP atau pencatat. Karena itu kamu bisa menambah layar kedua atau alarm tanpa mengubah program ESP32.

Bahan dan persiapan

Diagram kabel termistor ke GPIO 34

Ketuk satu per satu.

Perangkat keras
ESP32 DevKit, termistor NTC 10 kΩ, resistor 10 kΩ, breadboard, kabel, adaptor USB 5 V.
Rangkaian
Pembagi tegangan seperti di materi Proyek: pengendali suhu mandiri. 3V3 → resistor 10 kΩ → GPIO 34 → termistor → GND. GPIO 34 adalah pin ADC1, aman bersama WiFi.
Pustaka
PubSubClient (MQTT) dan ArduinoJson, dari Library Manager.
Layanan
Broker MQTT dengan kata sandi dan TLS, plus dasbor. Paling cepat dengan layanan IoT jadi (lihat Dashboard dan penyimpanan data), atau broker dan dasbor milik sendiri.

Program inti

Kerangka yang diringkas. Fungsi bacaSuhu() sama seperti di materi Proyek: pengendali suhu mandiri. Pengaturan TLS (sertifikat) bergantung pada broker yang dipakai.

#include <WiFiClientSecure.h>
#include <PubSubClient.h>
#include "rahasia.h"
WiFiClientSecure net;
PubSubClient mqtt(net);
void setup() {
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  while (WiFi.status() != WL_CONNECTED) delay(500);
  net.setCACert(CA_BROKER);
  mqtt.setServer(BROKER, 8883);
}
void loop() {
  if (!mqtt.connected()) mqtt.connect("kamar-esp32", MQTT_USER, MQTT_PASS);
  mqtt.loop();
  char isi[40];
  snprintf(isi, sizeof isi, "{\"suhu_c\":%.1f}", bacaSuhu());
  mqtt.publish("kamar/suhu", isi);
  delay(60000);
}
  • Baris 3: Semua rahasia di berkas terpisah (lihat [[n4]] dan [[n8]]).
  • Baris 9: Sertifikat broker untuk TLS, supaya koneksi terenkripsi dan ESP32 yakin berbicara dengan broker yang benar.
  • Baris 13: Sambung ulang kalau terputus. Program nyata sebaiknya memberi jeda antarpercobaan.
  • Baris 16: JSON kecil ditulis manual. Untuk data yang lebih banyak, pakai ArduinoJson (lihat [[n5]]).
  • Baris 18: Kirim setiap menit. delay sepanjang ini membuat mqtt.loop jarang dipanggil. Untuk proyek yang juga menerima perintah, pakai millis() sebagai pengganti delay.

Daftar cek sebelum dinyatakan selesai

Ketuk semuanya.

Akurasi
Bandingkan dengan termometer lain selama beberapa jam. Selisih tetap? Koreksi di program (kalibrasi, lihat ADC: membaca sensor analog).
Bertahan
Cabut router 5 menit lalu nyalakan. Apakah ESP32 tersambung lagi sendiri?
Keamanan (lihat [[n8]])
Kata sandi unik, rahasia tidak ikut dibagikan, TLS aktif, tidak ada port router yang dibuka.
Data
Setiap titik punya waktu. Grafik 24 jam terisi. Celah saat WiFi putus terlihat sebagai celah, bukan garis palsu.
Letak sensor
Jauh dari jendela bersinar matahari, AC, dan panas papan ESP32 sendiri, yang bisa menaikkan bacaan beberapa derajat.

Kalau tidak bekerja

  1. Serial menunjukkan WiFi tersambung, tapi mqtt.connect() selalu gagal.
    • Cek alamat broker, port, nama pengguna, kata sandi, dan sertifikat TLS
    • Ganti termistor
    • Turunkan baud rate Serial
    Jawaban

    Cek alamat broker, port, nama pengguna, kata sandi, dan sertifikat TLS. Masalahnya di tahap koneksi MQTT. Cetak mqtt.state() untuk kode alasannya (lihat Serial monitor dan debugging).

  2. Dasbor menampilkan suhu 31 °C, padahal termometer ruangan 28 °C. Selisihnya tetap.
    • Kalibrasi, dan periksa apakah sensor terlalu dekat dengan papan ESP32 yang hangat
    • Servernya rusak
    • JSON-nya salah
    Jawaban

    Kalibrasi, dan periksa apakah sensor terlalu dekat dengan papan ESP32 yang hangat. Selisih tetap biasanya kalibrasi atau letak sensor. Pindahkan termistor dengan kabel agak panjang, lalu koreksi selisih yang tersisa.

  3. HP menampilkan data terkini, tapi grafik riwayatnya kosong.
    • Pencatat tidak berlangganan topik yang benar, atau tidak menyimpan
    • ESP32 tidak mengirim apa pun
    Jawaban

    Pencatat tidak berlangganan topik yang benar, atau tidak menyimpan. Data terkini sampai berarti ESP32 dan broker bekerja. Periksa langganan dan penyimpanan di bagian pencatat (lihat Dashboard dan penyimpanan data).

Proyek akhir selesai

  • Sensor → ESP32 → WiFi → broker MQTT (TLS) → pencatat → dasbor HP.
  • Rahasia terpisah, koneksi terenkripsi, tanpa port terbuka.
  • Uji akurasi, ketahanan, dan keamanan sebelum dianggap selesai.

Pancingan

Sekarang kamu punya aliran data suhu yang terus bertambah. Bisakah perangkatmu sendiri mengenali kalau ada yang janggal, misalnya AC mati atau jendela terbuka? Itu stasiun 5, mulai dari materi Data sensor sebagai dataset.

Berikutnya

Referensi
  • Dokumentasi PubSubClient (Nick O'Leary) dan WiFiClientSecure (Arduino-ESP32).
  • OASIS, MQTT Version 3.1.1 dan 5.0.
  • ETSI EN 303 645 (daftar cek keamanan).

Draf AI. Belum direview manusia. Program belum diuji di perangkat. Format sertifikat dan pengaturan TLS bergantung pada broker yang dipakai.

Kode materi n10 · versi 0.1 · 2026-10-06