- Bahan yang Diperlukan:
- Bekerja ACS712 Sensor Semasa:
- Gambarajah litar
- Kod dan Penjelasan:
- Aplikasi Android untuk Memantau Penggunaan Elektrik:
Kita semua tahu mengenai meter tenaga elektrik yang dipasang di rumah atau pejabat setiap orang untuk mengukur penggunaan elektrik. Akhirnya setiap bulan, ramai di antara kita yang bimbang dengan bil elektrik yang tinggi dan kita perlu sekali-sekali melihat meter tenaga. Tetapi bagaimana jika kita dapat memantau penggunaan elektrik kita dari mana saja di dunia dan mendapatkan SMS / E-mel apabila penggunaan tenaga anda mencapai nilai ambang. Di sini kita sedang membina Project of Energy Meter berasaskan IoT.
Sebelum ini kami telah membina rangkaian Energy Meter yang menghantar SMS mengenai bil menggunakan modul GSM kepada anda. Dalam projek ini kami membuat meter Tenaga Elektrik Pintar menggunakan modul Wi-Fi Arduino dan ESP8266 yang bukan sahaja dapat mengirimkan SMS / E-mel kepada bil elektrik anda tetapi juga anda dapat memantau penggunaan tenaga kapan saja dan dari mana saja di dunia. Di sini kita telah menggunakan Sensor Arus ACS712 untuk mengukur penggunaan tenaga, kita akan membincangkannya tidak lama lagi.
Kami akan menggunakan platform IFTTT untuk menghubungkan Wi-Fi kami ke pemberitahuan SMS / E-mel. Kami juga akan menggunakan Aplikasi Android Dashboard MQTT untuk memantau penggunaan Tenaga kami. Jadi Mari Bermula….
Bahan yang Diperlukan:
- Arduino Uno
- ESP12 / NodeMCU
- Sensor semasa ACS712-30Amp
- Sebarang Peralatan AC
- Wayar Lelaki-Perempuan
Bekerja ACS712 Sensor Semasa:
Sebelum kita mula membina projek, sangat penting bagi kita untuk memahami cara kerja ACS712 Sensor semasa kerana ia adalah komponen utama projek. Mengukur arus terutamanya arus AC selalu menjadi tugas yang sukar kerana kebisingan ditambah dengan masalah pengasingan yang tidak betul dan lain-lain. Tetapi, dengan bantuan modul ACS712 ini yang direkayasa oleh Allegro perkara menjadi lebih mudah.
Modul ini berfungsi berdasarkan prinsip Hall-effect, yang ditemui oleh Dr. Edwin Hall. Menurut prinsipnya, apabila konduktor pembawa arus ditempatkan ke medan magnet, voltan dihasilkan melintasi tepinya yang berserenjang dengan arah arus dan medan magnet. Jangan sampai kita terlalu memahami konsep ini, tetapi kita hanya menggunakan sensor dewan untuk mengukur medan magnet di sekitar konduktor pembawa arus. Pengukuran ini adalah dari segi milivolt yang kita sebut sebagai voltan dewan. Voltan dewan yang diukur sebanding dengan arus yang mengalir melalui konduktor.
Kelebihan utama menggunakan ACS712 Current Sensor adalah dapat mengukur arus AC dan DC dan juga memberikan pengasingan antara Beban (beban AC / DC) dan Unit Pengukur (bahagian Mikrokontroler). Seperti yang ditunjukkan dalam gambar, kami mempunyai tiga pin pada modul yang masing-masing adalah Vcc, Vout dan Ground.
Blok terminal 2-pin adalah tempat wayar pembawa arus harus dilalui. Modul berfungsi pada + 5V sehingga Vcc harus dikuasakan oleh 5V dan tanah harus disambungkan ke Ground sistem. Pin Vout mempunyai voltan ofset 2500mV, yang bermaksud apabila tidak ada arus yang mengalir melalui wayar maka voltan keluaran akan menjadi 2500mV dan ketika arus mengalir positif, voltan akan lebih besar dari 2500mV dan ketika arus yang mengalir negatif, voltan akan kurang daripada 2500mV.
Kami akan menggunakan pin Analog Arduino untuk membaca voltan output (Vout) modul, yang akan menjadi 512 (2500mV) apabila tidak ada arus yang mengalir melalui wayar. Nilai ini akan berkurang ketika arus mengalir ke arah negatif dan akan meningkat seiring arus mengalir ke arah positif. Jadual di bawah akan membantu anda memahami bagaimana voltan output dan nilai ADC berbeza berdasarkan arus yang mengalir melalui wayar.
Nilai-nilai ini dihitung berdasarkan maklumat yang diberikan dalam Lembar Data ACS712. Anda juga boleh menghitungnya menggunakan formula di bawah:
Voltan Vout (mV) = (Nilai ADC / 1023) * 5000 Semasa Melalui Kawat (A) = (Vout (mv) -2500) / 185
Sekarang, kita tahu bagaimana Sensor ACS712 berfungsi dan apa yang dapat kita harapkan darinya. Mari kita teruskan ke gambarajah litar.
Kami telah menggunakan sensor ini untuk membuat Litar Ammeter Digital menggunakan PIC Microcontroller dan ACS712.
Gambarajah litar
Langkah 1: Log masuk ke IFTTT dengan bukti kelayakan anda.
Langkah 2: Pada Applet Saya, Klik pada Applet Baru
Langkah 3: Klik + ini
Langkah 4: Cari AdaFruit dan klik padanya.
Langkah 5: Klik pada Monitor suapan di AdaFruit IO.
Langkah 6: Pilih Feed sebagai rang undang-undang, Hubungan sebagai ' sama dengan' dan ambang nilai di mana anda mahu satu E-mel. Klik Buat tindakan . Saya telah menggunakan 4 sebagai nilai pencetus ambang saya.
Langkah 7: Klik + itu . Cari G-mail dan klik di atasnya dan Log masuk dengan bukti kelayakan g-mail anda.
Langkah 8: Klik untuk menghantar e-mel kepada diri sendiri.
Langkah 9: Tulis subjek dan badan anda seperti yang ditunjukkan dan klik untuk membuat.
Langkah 10: ' Resipi ' anda sudah siap. Kaji dan klik selesai.
Sekarang, kita selesai dengan penyatuan web. Mari teruskan bahagian pengekodan..
Kod dan Penjelasan:
Kami menggunakan komunikasi bersiri antara ESP12 dan Arduino. Oleh itu, kita harus menulis kod untuk Arduino dan NodeMCU untuk penghantaran dan penerimaan.
Kod untuk Bahagian Pemancar iaitu untuk Arduino Uno:
Kod Arduino lengkap diberikan pada akhir tutorial ini. Kami akan menggunakan perpustakaan untuk sensor Semasa yang boleh dimuat turun dari Pautan ini.
Perpustakaan ini mempunyai fungsi inbuilt untuk mengira arus. Anda boleh menulis kod anda untuk mengira arus tetapi perpustakaan ini mempunyai algoritma pengukuran semasa yang tepat.
Pertama, sertakan perpustakaan untuk sensor semasa seperti:
#sertakan "ACS712.h"
Buat array untuk menyimpan kuasa untuk menghantarnya ke NodeMCU.
char watt;
Buat contoh 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 persediaan , tentukan kadar baud 115200 untuk berkomunikasi dengan NodeMCU. Panggil sensor.calibrate () berfungsi untuk mengkalibrasi sensor semasa untuk mendapatkan bacaan yang tepat.
persediaan tidak sah () { Serial.begin (115200); sensor.kalibrasi (); }
Dalam fungsi gelung , kita akan memanggil sensor.getCurrentAC (); berfungsi untuk mendapatkan nilai semasa dan simpan dalam pemboleh ubah apungan I. Setelah mendapat arus, hitung kuasa menggunakan formula P = V * I. Kami menggunakan 230V kerana itu adalah standard umum di negara-negara Eropah, Tukar ke tempat anda, jika perlu
gelung kekosongan () { apungan V = 230; terapung I = sensor.getCurrentAC (); terapung P = V * I;
Garis-garis ini menukar kuasa menjadi Wh.
last_time = current_time; current_time = milis (); Wh = Wh + P * ((current_time -last_time) /3600000.0);
Sekarang, kita harus menukar Wh ini menjadi bentuk watak untuk menghantarnya ke NodeMCU, untuk dtostrf ini (); akan menukar float menjadi array char sehingga dapat dicetak dengan mudah:
dtostrf (Wh, 4, 2, watt);
Formatnya adalah:
dtostrf (floatvar, StringLengthIncDecimalPoint, numVarsAfterDecimal, charbuf);
Tuliskan array watak ini ke penyangga bersiri menggunakan Serial.write () ; fungsi. Ini akan menghantar nilai Wh ke NodeMCU.
Serial.write (watt); kelewatan (10000); }
Kod untuk Bahagian Penerima NodeMCU ESP12:
Untuk ini, kami memerlukan perpustakaan AdaFruit MQTT yang boleh dimuat turun dari pautan ini.
Sekarang, buka Arduino IDE. Pergi ke contoh -> Perpustakaan AdaFruit MQTT -> mqtt_esp8266
Kami akan mengedit kod ini mengikut kunci AIO dan bukti kelayakan Wi-Fi dan data bersiri masuk dari Arduino.
Pertama, kami memasukkan semua perpustakaan untuk Modul Wi-Fi ESP12 dan AdaFruit MQTT.
#sertakan
Kami menentukan SSID dan Kata Laluan untuk Wi-Fi anda, dari mana anda ingin menyambungkan ESp-12e anda.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Bahagian ini menentukan pelayan AdaFruit dan port pelayan yang masing-masing ditetapkan sebagai "io.adafruit.com" dan "1883".
#tentukan AIO_SERVER "io.adafruit.com" #tentukan AIO_SERVERPORT 1883
Gantikan medan ini dengan nama pengguna dan kunci AIO yang telah anda salin dari laman AdaFruit semasa membuat Suapan.
#define AIO_USERNAME "********" #define AIO_KEY "******************************"
Kemudian kami telah membuat kelas ESP12 WiFiClient untuk menyambung ke pelayan MQTT.
Pelanggan WiFiClient;
Sediakan kelas klien MQTT dengan memasukkan pelanggan WiFi dan pelayan MQTT dan maklumat log masuk.
Adafruit_MQTT_Mqtt pelanggan (& pelanggan, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Sediakan feed yang disebut 'Power' dan 'bill' untuk menerbitkan perubahan.
Adafruit_MQTT_Publish Power = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feed / Power"); Adafruit_MQTT_Publish bill = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feed / bill");
Dalam fungsi persediaan , kami menghubungkan modul Wi-Fi ke titik akses Wi-Fi.
persediaan tidak sah () { Serial.begin (115200); kelewatan (10); Serial.println (F ("Adafruit MQTT demo")); // Sambungkan ke titik akses WiFi. Bersiri.println (); Bersiri.println (); Serial.print ("Menyambung ke"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); …. …. … }
Dalam fungsi gelung , kami akan memeriksa data masuk dari Arduino dan menerbitkan data ini ke AdaFruit IO.
gelung void () { // Pastikan sambungan ke pelayan MQTT masih hidup (ini akan membuat sambungan // pertama dan menyambung semula secara automatik apabila terputus). Lihat definisi fungsi MQTT_connect // di bawah. MQTT_connect (); int i = 0; apungan watt1;
Fungsi ini memeriksa data masuk dari Arduino dan menyimpan data ini ke dalam array watt menggunakan fungsi serial.read ().
jika (Serial.available ()> 0) { kelewatan (100); // membenarkan semua siri yang dihantar diterima bersama semasa (Serial.available () && i <5) { watt = Serial.read (); } watt = '\ 0'; }
fungsi atof () menukar watak menjadi nilai apungan dan kami akan menyimpan nilai apungan ini dalam pemboleh ubah apungan watt1 yang lain.
watt1 = atof (watt);
Hitung jumlah bil dengan mengalikan kuasa (dalam Wh) dengan tarif tenaga dan bahagikannya dengan 1000 untuk menjadikan kuasa dalam KWh.
bill_amount = watt1 * (energyTariff / 1000); // 1unit = 1kwH
Sekarang kita boleh menerbitkan barang!
Serial.print (F ("\ nMengirim Kuasa val")); Serial.println (watt1); Cetakan bersiri ("…");
Bahagian kod ini menerbitkan nilai daya ke suapan Kuasa
jika (! Power.publish (watt1)) { Serial.println (F ("Gagal")); } lain { Serial.println (F ("OK!")); }
Ini akan menerbitkan bil elektrik ke feed bill .
jika (! bill.publish (bill_amount)) { Serial.println (F ("Gagal")); } lain { Serial.println (F ("OK!")); }
Jumlah bil kami mungkin berubah dengan cepat tetapi IFTTT memerlukan masa untuk mencetuskan applet sehingga garis-garis ini akan memberi masa untuk mencetuskan sehingga kami dapat menerima email ambang.
Tukar nilai bill_amount yang anda mahu dapatkan e-mel. Juga, ubah dalam persediaan IFTTT AdaFruit IO.
if (bill_amount == 4) { untuk (int i = 0; i <= 2; i ++) { bill.publish (bill_amount); kelewatan (5000); } bil_jumlah = 6; }
Kod Lengkap untuk Arduino dan NodeMCU ESP12 diberikan pada akhir tutorial ini.
Sekarang, muat naik kod ke kedua papan. Sambungkan perkakasan anda seperti yang ditunjukkan dalam rajah Litar dan Buka io.adafruit.com. Buka papan pemuka yang baru anda buat. Anda akan melihat Rang Undang-Undang penggunaan dan penggunaan elektrik sedang diperbaharui.
Apabila bil anda mencapai INR 4 maka anda akan mendapat e-mel seperti ini.
Aplikasi Android untuk Memantau Penggunaan Elektrik:
Anda boleh menggunakan Aplikasi Android untuk memantau nilai. Untuk ini muat turun aplikasi android MQTT Dashboard dari gedung Play atau dari Pautan ini.
Untuk mengatur sambungan dengan io.adafruit.com ikuti langkah berikut:
Langkah 1: Buka Aplikasi dan klik pada tanda "+". Isi Id Pelanggan apa sahaja yang anda mahukan. Pelayan dan port tetap sama seperti yang ditunjukkan dalam tangkapan skrin. Anda akan mendapat Nama Pengguna dan kata laluan (Kekunci aktif) dari papan pemuka AdaFruit IO seperti yang ditunjukkan di bawah.
Kunci Aktif adalah kata laluan anda.
Langkah 2: Pilih Meter Elektrik dan pilih Langgan. Dalam langganan, berikan nama dan topik yang mesra. Format topik adalah ' nama pengguna anda' / suapan / 'nama umpan' dan klik buat.
Langkah 3: Dengan cara yang sama, buat langganan untuk makanan bil.
Langkah 4: Oleh kerana peralatan anda menggunakan tenaga, nilai yang dikemas kini akan ditunjukkan di bawah Power and Bill .
Ini adalah bagaimana anda boleh membuat Smart Electricity Energy Meter, yang tidak hanya dapat dipantau dari mana saja di dunia tetapi juga mencetuskan E-mel apabila anda mempunyai penggunaan Elektrik yang tinggi.
Periksa juga semua Projek IoT kami.