- Bahan yang Dibutuhkan:
- Cara Kerja Sensor Arus ACS712:
- Diagram sirkuit
- Kode dan Penjelasan:
- Aplikasi Android untuk Memantau Konsumsi Listrik:
Kita semua tahu tentang meteran energi listrik yang dipasang di rumah atau kantor setiap orang untuk mengukur konsumsi listrik. Pada akhir setiap bulan, banyak dari kita yang khawatir dengan tagihan listrik yang tinggi dan kita harus sesekali melihat meteran energi. Tetapi bagaimana jika kita dapat memantau penggunaan listrik kita dari mana saja di dunia dan mendapatkan SMS / E-mail ketika konsumsi energi Anda mencapai nilai ambang batas. Di sini kami sedang membangun Proyek Meter Energi berbasis IoT.
Sebelumnya kami telah membangun rangkaian Energy Meter yang mengirimkan SMS tentang tagihan menggunakan modul GSM. Dalam proyek ini kami membuat Pengukur Energi Listrik Cerdas menggunakan modul Wi-Fi Arduino dan ESP8266 yang tidak hanya dapat mengirimi Anda SMS / Email tagihan listrik Anda tetapi juga Anda dapat memantau penggunaan energi kapan saja dan dari mana saja di dunia. Di sini kami telah menggunakan Sensor Arus ACS712 untuk mengukur konsumsi energi, kami akan membahasnya sebentar lagi.
Kami akan mengambil bantuan platform IFTTT untuk menautkan Wi-Fi kami ke notifikasi SMS / Email. Kami juga akan menggunakan Aplikasi Android MQTT Dashboard untuk memantau penggunaan Energi kami. Jadi Ayo Mulai….
Bahan yang Dibutuhkan:
- Arduino Uno
- ESP12 / NodeMCU
- ACS712-30Amp Sensor arus
- Semua Alat AC
- Kabel Pria-Wanita
Cara Kerja Sensor Arus ACS712:
Sebelum kita mulai membangun proyek, sangat penting bagi kita untuk memahami cara kerja sensor Arus ACS712 karena ini adalah komponen kunci dari proyek. Mengukur arus terutama arus AC selalu merupakan tugas yang berat karena kebisingan ditambah dengan masalah isolasi yang tidak tepat dll. Namun, dengan bantuan modul ACS712 yang direkayasa oleh Allegro ini menjadi jauh lebih mudah.
Modul ini bekerja berdasarkan prinsip efek Hall, yang ditemukan oleh Dr. Edwin Hall. Menurut prinsipnya, ketika konduktor pembawa arus ditempatkan ke dalam medan magnet, tegangan dihasilkan melintasi tepinya tegak lurus terhadap arah arus dan medan magnet. Mari kita tidak terlalu jauh ke dalam konsep tetapi, sederhananya kita menggunakan sensor hall untuk mengukur medan magnet di sekitar konduktor pembawa arus. Pengukuran ini akan dalam satuan milivolt yang kami sebut sebagai tegangan hall. Hall-voltage yang diukur ini sebanding dengan arus yang mengalir melalui konduktor.
Keuntungan utama menggunakan Sensor Arus ACS712 adalah dapat mengukur arus AC dan DC dan juga menyediakan isolasi antara Beban (beban AC / DC) dan Satuan Pengukur (bagian Mikrokontroler). Seperti yang ditunjukkan pada gambar, kami memiliki tiga pin pada modul masing-masing yaitu Vcc, Vout dan Ground.
Blok terminal 2-pin adalah tempat kabel pembawa arus harus dilewati. Modul ini bekerja pada + 5V sehingga Vcc harus diberi daya oleh 5V dan ground harus terhubung ke Ground sistem. Pin Vout mempunyai tegangan offset 2500mV, artinya bila tidak ada arus yang mengalir melalui kawat maka tegangan keluaran akan menjadi 2500mV dan bila arus yang mengalir positif maka tegangan akan lebih besar dari 2500mV dan bila arus yang mengalir negatif maka tegangan akan kurang dari 2500mV.
Kami akan menggunakan pin Analog Arduino untuk membaca tegangan output (Vout) dari modul, yang akan menjadi 512 (2500mV) ketika tidak ada arus yang mengalir melalui kabel. Nilai ini akan berkurang seiring arus mengalir ke arah negatif dan akan meningkat seiring arus mengalir ke arah positif. Tabel di bawah ini akan membantu Anda memahami bagaimana tegangan output dan nilai ADC bervariasi berdasarkan arus yang mengalir melalui kabel.
Nilai-nilai ini dihitung berdasarkan informasi yang diberikan dalam Lembar Data ACS712. Anda juga dapat menghitungnya menggunakan rumus di bawah ini:
Tegangan Vout (mV) = (Nilai ADC / 1023) * 5000 Arus Melalui Kawat (A) = (Vout (mv) -2500) / 185
Sekarang, setelah kita mengetahui cara kerja Sensor ACS712 dan apa yang dapat diharapkan darinya. Mari kita lanjutkan ke diagram rangkaian.
Sensor ini telah kami gunakan untuk membuat Rangkaian Ammeter Digital menggunakan Mikrokontroler PIC dan ACS712.
Diagram sirkuit
Langkah 1: Masuk ke IFTTT dengan kredensial Anda.
Langkah 2: Di Applet Saya, Klik Applet Baru
Langkah 3: Klik + ini
Langkah 4: Cari AdaFruit dan klik di atasnya.
Langkah 5: Klik Pantau umpan di AdaFruit IO.
Langkah 6: Pilih Pakan sebagai tagihan, hubungan sebagai ' sama untuk' dan ambang nilai di mana Anda ingin e-mail. Klik Buat tindakan . Saya telah menggunakan 4 sebagai nilai pemicu ambang batas saya.
Langkah 7: Klik + itu . Cari G-mail dan klik di atasnya dan Login dengan kredensial g-mail Anda.
Langkah 8: Klik kirim email ke diri Anda sendiri.
Langkah 9: Tulis subjek dan tubuh Anda seperti yang ditunjukkan dan klik untuk membuat.
Langkah 10: ' Resep ' Anda sudah siap. Tinjau dan klik selesai.
Sekarang, kita selesai dengan integrasi web. Mari kita lanjutkan ke bagian coding..
Kode dan Penjelasan:
Kami menggunakan komunikasi serial antara ESP12 dan Arduino. Jadi, kita harus menulis kode untuk Arduino dan NodeMCU untuk mengirim dan menerima.
Kode untuk Transmitter Part ie untuk Arduino Uno:
Kode Arduino lengkap diberikan di akhir tutorial ini. Kami akan menggunakan perpustakaan untuk Sensor saat ini yang dapat diunduh dari Tautan ini.
Perpustakaan ini memiliki fungsi bawaan untuk menghitung arus. Anda dapat menulis kode Anda untuk menghitung arus tetapi perpustakaan ini memiliki algoritme pengukuran terkini yang akurat.
Pertama, sertakan pustaka untuk sensor arus sebagai:
#include "ACS712.h"
Buat larik untuk menyimpan daya untuk dikirim ke NodeMCU.
char watt;
Buat instance untuk menggunakan ACS712-30Amp di PIN A0. Ubah argumen Pertama jika Anda menggunakan varian 20Amp atau 5 Amp.
Sensor ACS712 (ACS712_30A, A0);
Dalam fungsi setup , tentukan baud rate 115200 untuk berkomunikasi dengan NodeMCU. Panggil fungsi sensor.calibrate () untuk mengkalibrasi sensor arus untuk mendapatkan pembacaan yang akurat.
void setup () { Serial.begin (115200); sensor.calibrate (); }
Dalam fungsi loop , kita akan memanggil sensor.getCurrentAC (); berfungsi untuk mendapatkan nilai arus dan menyimpannya dalam variabel float I. Setelah mendapatkan arus, hitung daya menggunakan rumus P = V * I. Kami menggunakan 230V karena ini adalah standar umum di negara-negara Eropa, Ubah ke lokal Anda, jika perlu
void loop () { float V = 230; float I = sensor.getCurrentAC (); mengapung P = V * I;
Garis-garis ini mengubah daya menjadi Wh.
last_time = current_time; current_time = millis (); Wh = Wh + P * ((waktu_kini -waktu_kini) /3600000.0);
Sekarang, kita harus mengubah Wh ini menjadi bentuk karakter untuk dikirim ke NodeMCU, untuk dtostrf () ini; akan mengubah float menjadi array karakter sehingga dapat dicetak dengan mudah:
dtostrf (Wh, 4, 2, watt);
Formatnya adalah:
dtostrf (floatvar, StringLengthIncDecimalPoint, numVarsAfterDecimal, charbuf);
Tulis larik karakter ini ke buffer serial menggunakan Serial.write () ; fungsi. Ini akan mengirimkan nilai Wh ke NodeMCU.
Serial.write (watt); penundaan (10000); }
Kode untuk Bagian Penerima NodeMCU ESP12:
Untuk ini kita membutuhkan pustaka AdaFruit MQTT yang dapat diunduh dari tautan ini.
Sekarang, buka Arduino IDE. Pergi ke contoh -> Pustaka MQTT AdaFruit -> mqtt_esp8266
Kami akan mengedit kode ini sesuai dengan kunci AIO dan kredensial Wi-Fi kami dan data serial yang masuk dari Arduino.
Pertama, kami menyertakan semua pustaka untuk ESP12 Wi-Fi Module dan AdaFruit MQTT.
#include
Kami menentukan SSID dan Kata Sandi untuk Wi-Fi Anda, dari mana Anda ingin menghubungkan ESp-12e Anda.
# Tentukan WLAN_SSID "xxxxxxxx" # Tentukan WLAN_PASS "xxxxxxxxxxx"
Bagian ini mendefinisikan server AdaFruit dan port server yang ditetapkan masing-masing sebagai "io.adafruit.com" dan "1883".
# Tentukan AIO_SERVER "io.adafruit.com" # Tentukan AIO_SERVERPORT 1883
Ganti bidang ini dengan nama pengguna dan kunci AIO Anda yang telah Anda salin dari situs AdaFruit saat membuat Feed.
#define AIO_USERNAME "********" #define AIO_KEY "******************************"
Kemudian kami telah membuat kelas ESP12 WiFiClient untuk terhubung ke server MQTT.
Klien WiFiClient;
Siapkan kelas klien MQTT dengan meneruskan klien WiFi dan server MQTT dan detail login.
Adafruit_MQTT_Client mqtt (& klien, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Siapkan umpan yang disebut 'Daya' dan 'tagihan' untuk menerbitkan perubahan.
Adafruit_MQTT_Publish Power = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / Power"); Adafruit_MQTT_Publish bill = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / bill");
Dalam fungsi pengaturan , kami menghubungkan modul Wi-Fi ke titik akses Wi-fi.
void setup () { Serial.begin (115200); penundaan (10); Serial.println (F ("Adafruit MQTT demo")); // Hubungkan ke titik akses WiFi. Serial.println (); Serial.println (); Serial.print ("Menghubungkan ke"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); …. …. … }
Dalam fungsi loop , kami akan memeriksa data yang masuk dari Arduino dan mempublikasikan data ini ke AdaFruit IO.
void loop () { // Pastikan koneksi ke server MQTT hidup (ini akan membuat // koneksi pertama dan secara otomatis terhubung kembali ketika terputus). Lihat definisi fungsi MQTT_connect // lebih jauh di bawah. MQTT_connect (); int i = 0; float watt1;
Fungsi ini memeriksa data yang masuk dari Arduino dan menyimpan data tersebut ke dalam array watt menggunakan fungsi serial.read ().
jika (Serial.available ()> 0) { penundaan (100); // memungkinkan semua serial yang dikirim untuk diterima bersamaan sementara (Serial.available () && i <5) { watt = Serial.read (); } watt = '\ 0'; }
atof () berfungsi mengubah karakter menjadi nilai float dan kami akan menyimpan nilai float ini dalam variabel float watt1 lainnya.
watt1 = atof (watt);
Hitung jumlah tagihan dengan mengalikan daya (dalam Wh) dengan tarif energi dan membaginya dengan 1000 untuk menghasilkan daya dalam KWh.
bill_amount = watt1 * (energyTariff / 1000); // 1unit = 1kwH
Sekarang kita bisa mempublikasikan barang!
Serial.print (F ("\ nMengirimkan Daya val")); Serial.println (watt1); Serial.print ("…");
Potongan kode ini menerbitkan nilai daya ke umpan Daya
if (! Power.publish (watt1)) { Serial.println (F ("Failed")); } lain { Serial.println (F ("OK!")); }
Ini akan mempublikasikan tagihan listrik ke feed tagihan .
if (! bill.publish (bill_amount)) { Serial.println (F ("Gagal")); } lain { Serial.println (F ("OK!")); }
Jumlah tagihan kami dapat berubah dengan cepat tetapi IFTTT membutuhkan waktu untuk memicu applet sehingga baris ini akan memberikan waktu untuk memicu sehingga kami dapat menerima email ambang batas.
Ubah nilai bill_amount yang Anda inginkan untuk menerima email. Selain itu, ubah pengaturan IFTTT AdaFruit IO.
if (bill_amount == 4) { for (int i = 0; i <= 2; i ++) { bill.publish (bill_amount); penundaan (5000); } bill_amount = 6; }
Kode Lengkap untuk Arduino dan NodeMCU ESP12 diberikan di akhir tutorial ini.
Sekarang, unggah kode ke kedua papan. Hubungkan perangkat keras Anda seperti yang ditunjukkan pada diagram Sirkuit dan Buka io.adafruit.com. Buka dasbor yang baru saja Anda buat. Anda akan melihat Konsumsi daya dan tagihan listrik sedang diperbarui.
Ketika tagihan Anda mencapai INR 4 maka Anda akan mendapatkan email seperti ini.
Aplikasi Android untuk Memantau Konsumsi Listrik:
Anda dapat menggunakan Aplikasi Android untuk memantau nilai. Untuk ini, unduh aplikasi android MQTT Dashboard dari Play Store atau dari Tautan ini.
Untuk mengatur koneksi dengan io.adafruit.com ikuti langkah-langkah berikut:
Langkah 1: Buka Aplikasi dan klik tanda "+". Isi Id Klien apapun yang Anda inginkan. Server dan port tetap sama seperti yang ditunjukkan pada tangkapan layar. Anda akan mendapatkan Nama pengguna dan kata sandi (kunci Aktif) dari dasbor AdaFruit IO seperti yang ditunjukkan di bawah ini.
Kunci Aktif adalah kata sandi Anda.
Langkah 2: Pilih Meteran Listrik dan pilih Berlangganan. Dalam langganan, berikan nama dan topik yang akrab. Format topiknya adalah ' yourusername' / feeds / 'feedname' dan klik buat.
Langkah 3: Dengan cara yang sama, lakukan langganan feed tagihan.
Langkah 4: Karena peralatan Anda mengonsumsi energi, nilai yang diperbarui akan ditampilkan di bawah Power dan Bill .
Beginilah cara Anda membuat Pengukur Energi Listrik Cerdas, yang tidak hanya dapat dipantau dari mana saja di dunia tetapi juga memicu Email ketika Anda memiliki konsumsi Listrik yang tinggi.
Juga periksa semua Proyek IoT kami.