Sensor suhu paling sederhana: tiga kaki, keluarannya tegangan 10 mV per derajat. Proyek ini mengajarkan cara mengubah tegangan analog menjadi besaran fisik.
LM35 mengeluarkan tegangan sebanding suhu: 0,30 V berarti 30 °C. LM35 butuh minimal 4 V, jadi kaki +VS diberi 5V dari pin VU. Keluarannya tetap kecil (di bawah 1,5 V) sehingga aman untuk A0. Angka analog 0-1023 dikalikan tegangan penuh A0 (±3,2 V di NodeMCU V3) lalu dibagi 1023 untuk mendapat volt. Hasilnya dikali 100 untuk mendapat °C. Bacaan dirata-rata 20 kali supaya tidak loncat-loncat.
Komponen
| Komponen | Qty | Harga |
|---|---|---|
| NodeMCU ESP8266 V3 (Lolin) | 1 | Rp42.000 |
| Sensor suhu LM35DZ | 1 | Rp12.610 |
| Breadboard mini 170 titik | 1 | Rp4.875 |
| Kabel jumper male-female 10 cm (isi 10)isi 10, terpakai 3 | 1 | Rp3.500 |
| Kabel micro USB data 30 cmopsional, kalau belum punya kabel micro USB data | 1 | Rp11.700 |
| Total (tanpa opsional) | Rp62.985 |
Langkah 1: Rangkai komponen
Sambungkan kabel sesuai gambar di atas. Kalau gambar dan tabel terlihat berbeda, ikuti tabel.
| Dari | Ke | Kabel | |
|---|---|---|---|
| LM35 (sisi rata menghadap kamu) +VS | → | VU | merah |
| LM35 (sisi rata menghadap kamu) VOUT | → | A0 | kuning |
| LM35 (sisi rata menghadap kamu) GND | → | G | hitam |
Langkah 2: Siapkan dashboard Klenik
Cara cepat: unduh p024.json, ganti budi1234 dengan KODE-mu, lalu import di Klenik (menu titik tiga → Export / Import → Import → Ganti total). Langkah lengkapnya ada di Panduan Klenik.
| Widget | Topic | Setting |
|---|---|---|
| Gauge Suhu LM35 | ichibot/KODE/p024/suhu | 0–50 °C |
Langkah 3: Upload kode
Library: PubSubClient (Nick O'Leary). Board di Arduino IDE: NodeMCU 1.0 (ESP-12E Module).
Isi dulu nama WiFi dan password di bagian ISI DULU, lalu ganti budi1234 di baris topic dengan KODE-mu, lalu upload dan buka Serial Monitor (115200).
// Proyek 024 - Sensor Suhu Analog LM35
// Board: NodeMCU ESP8266 V3 | Dashboard: klenik.ichibot.id
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
// ===== ISI DULU =====
const char* WIFI_NAMA = "nama-wifi-kamu";
const char* WIFI_PASS = "password-wifi-kamu";
// topic MQTT: ganti budi1234 dengan KODE-mu (sama dengan di dashboard Klenik)
const char* TOPIK_SUHU = "ichibot/budi1234/p024/suhu";
const char* BROKER = "mqtt.ichibot.id";
WiFiClient wifi;
PubSubClient mqtt(wifi);
const int PIN_LM35 = A0;
const float VOLT_PENUH = 3.2; // tegangan saat A0 membaca 1023 (NodeMCU V3: ±3,2-3,3 V)
unsigned long terakhir = 0;
void langganan() {}
sambungWiFi() dan sambungMQTT(): sama di semua proyek (klik untuk lihat)
void sambungWiFi() {
WiFi.begin(WIFI_NAMA, WIFI_PASS);
Serial.print("WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(" OK, IP " + WiFi.localIP().toString());
}
void sambungMQTT() {
while (!mqtt.connected()) {
if (mqtt.connect(WiFi.macAddress().c_str())) {
Serial.println("Terhubung ke Klenik");
langganan();
} else {
Serial.println("Broker gagal, coba lagi 3 detik");
delay(3000);
}
}
}
void setup() {
Serial.begin(115200);
sambungWiFi();
mqtt.setServer(BROKER, 1883);
}
void loop() {
if (!mqtt.connected()) sambungMQTT();
mqtt.loop();
if (millis() - terakhir < 3000) return;
terakhir = millis();
long total = 0;
for (int i = 0; i < 20; i++) total += analogRead(PIN_LM35); // rata-rata 20 bacaan
float volt = total / 20.0 * VOLT_PENUH / 1023.0;
float suhu = volt * 100.0; // LM35: 10 mV per derajat
mqtt.publish(TOPIK_SUHU, String(suhu, 1).c_str());
Serial.printf("%.3f V -> %.1f C\n", volt, suhu);
}Langkah 4: Pahami kodenya
- Kalibrasi utama. Ukur tegangan pin 3V dengan multimeter dan bandingkan dengan termometer lain. Kalau hasil selalu kelebihan, turunkan angka ini sedikit.
- ADC ESP8266 cukup berisik. Rata-rata 20 bacaan membuat hasil stabil di ±0,3 °C.
- 10 mV per °C sama dengan 100 °C per volt.