Tutorial Belanja komponen

Tutorial › Listrik & Daya

Monitor Tegangan & Arus DC INA219

ESP32-WROOM-32D23D22TX0RX0D21D19D18D5TX2RX2D4D2D15GND3V3ENVPVND34D35D32D33D25D26D27D14D12D13GNDVINR100VCCGNDSCLSDAVIN+VIN−INA219+−Baterai 3×AA (4,5V)+−Kipas blower 5V

Pembuka bab Listrik & Daya: INA219 mengukur tegangan, arus, dan daya yang mengalir dari baterai ke kipas, lalu menampilkannya di Klenik setiap detik. Ini multimeter digital yang bisa dibaca dari HP.

INA219 punya resistor sangat kecil (shunt, 0,1 Ω) yang dipasang di jalur positif beban: arus mengalir masuk lewat VIN+ dan keluar lewat VIN−. Arus yang lewat membuat tegangan kecil di kedua ujung shunt, dan chip INA219 mengukurnya lalu menghitung arus dengan hukum Ohm (I = V / R). Chip itu juga mengukur tegangan di VIN− terhadap GND, lalu mengalikan keduanya menjadi daya.

Supaya pengukuran tegangan benar, − baterai harus tersambung ke GND bersama (GND INA219 dan ESP32). Kabel ini tercantum di tabel. Modul ini sanggup mengukur sampai 26V dan ±3,2A, cukup untuk hampir semua proyek baterai dan panel surya kecil.

Komponen

KomponenQtyHarga
ESP32 DOIT DevKit V1 30 pin1Rp75.000
INA219 I2C Sensor Arus Tegangan DC Power Monitor1Rp20.000
Kipas blower 5V 50151Rp20.000
Holder baterai 3×AA + kabelbaterai AA dibeli terpisah1Rp6.000
Kabel jumper female-female 10 cm (isi 10)isi 10, terpakai 41Rp3.500
Kabel micro USB data 30 cmopsional, kalau belum punya kabel micro USB data1Rp11.700
Total (tanpa opsional)Rp124.500
Daftar komponen proyek ini otomatis masuk ke pesan. Hapus yang sudah kamu punya sebelum dikirim.

Langkah 1: Rangkai komponen

Sambungkan kabel sesuai gambar di atas. Kalau gambar dan tabel terlihat berbeda, ikuti tabel.

DariKeKabel
INA219 VCC→3V3merah
INA219 GND→GNDhitam
INA219 SCL→D22 GPIO22kuning
INA219 SDA→D21 GPIO21biru
Baterai 3×AA (4,5V) +→INA219 VIN+merah
INA219 VIN−→Kipas blower 5V +merah
Kipas blower 5V −→Baterai 3×AA (4,5V) −hitam
Baterai 3×AA (4,5V) −→INA219 GNDhitam

Langkah 2: Siapkan dashboard Klenik

Teganganichibot/budi1234/p121/volt
064.48 V
0 detik lalu
Arusichibot/budi1234/p121/arus
0 – 500182 mA
0 detik lalu
Dayaichibot/budi1234/p121/daya
0 – 30.81 W
0 detik lalu
Grafik Arusichibot/budi1234/p121/arus
0 mA
0.0 mA10 titik500.0 mA
0 detik lalu

Cara cepat: unduh p121.json, ganti budi1234 dengan KODE-mu, lalu import di Klenik (menu titik tiga → Export / Import → Import → Ganti total). Langkah lengkapnya ada di Panduan Klenik.

WidgetTopicSetting
Gauge
Tegangan
ichibot/KODE/p121/volt0–6 V
Gauge
Arus
ichibot/KODE/p121/arus0–500 mA
Gauge
Daya
ichibot/KODE/p121/daya0–3 W
Chart
Grafik Arus
ichibot/KODE/p121/arus0–500 mA

Langkah 3: Upload kode

Library: PubSubClient (Nick O'Leary), Adafruit INA219. Board di Arduino IDE: ESP32 Dev 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).

p121.inoUnduh .ino
// Proyek 121 - Monitor Tegangan & Arus DC INA219
// Board: ESP32 DOIT DevKit V1 | Dashboard: klenik.ichibot.id
#include <WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
#include <Adafruit_INA219.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_VOLT = "ichibot/budi1234/p121/volt";
const char* TOPIK_ARUS = "ichibot/budi1234/p121/arus";
const char* TOPIK_DAYA = "ichibot/budi1234/p121/daya";

const char* BROKER = "mqtt.ichibot.id";
WiFiClient wifi;
PubSubClient mqtt(wifi);
Adafruit_INA219 ina;                  // alamat I2C 0x40
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); if (!ina.begin()) Serial.println("INA219 tidak ditemukan, cek SDA/SCL"); sambungWiFi(); mqtt.setServer(BROKER, 1883); } void loop() { if (!mqtt.connected()) sambungMQTT(); mqtt.loop(); if (millis() - terakhir >= 1000) { terakhir = millis(); float volt = ina.getBusVoltage_V() + ina.getShuntVoltage_mV() / 1000; // tegangan sumber float mA = ina.getCurrent_mA(); float mW = ina.getPower_mW(); Serial.printf("%.2f V %.0f mA %.0f mW\n", volt, mA, mW); mqtt.publish(TOPIK_VOLT, String(volt, 2).c_str()); mqtt.publish(TOPIK_ARUS, String(mA, 0).c_str()); mqtt.publish(TOPIK_DAYA, String(mW / 1000, 2).c_str()); } }

Langkah 4: Pahami kodenya

  1. Tegangan bus diukur di VIN−. Ditambah tegangan shunt (yang hilang di resistor 0,1 Ω), hasilnya tegangan baterai sebenarnya.
  2. Arus dalam miliampere. Angka negatif berarti VIN+ dan VIN− tertukar.
  3. Daya dikirim dalam watt supaya angkanya ringkas di gauge.