- Απαιτούμενα υλικά:
- Λειτουργία αισθητήρα ρεύματος ACS712:
- Διάγραμμα κυκλώματος
- Κωδικός και εξήγηση:
- Εφαρμογή Android για παρακολούθηση της κατανάλωσης ηλεκτρικής ενέργειας:
Όλοι γνωρίζουμε για τους μετρητές ενέργειας ηλεκτρικής ενέργειας που είναι εγκατεστημένοι στο σπίτι ή στα γραφεία του καθενός για τη μέτρηση της κατανάλωσης ηλεκτρικής ενέργειας. Τέλος κάθε μήνα, πολλοί από εμάς ανησυχούμε για τον υψηλό λογαριασμό ηλεκτρικής ενέργειας και πρέπει να κοιτάμε τον μετρητή ενέργειας κάποτε. Τι γίνεται όμως αν μπορούμε να παρακολουθούμε τις χρήσεις ηλεκτρικής ενέργειας από οπουδήποτε στον κόσμο και να λάβουμε SMS / E-mail όταν η κατανάλωση ενέργειας φτάσει σε μια τιμή κατωφλίου. Εδώ χτίζουμε ένα Έργο Energy Meter με βάση το IoT
Προηγουμένως είχαμε κατασκευάσει ένα κύκλωμα μετρητή ενέργειας που σας στέλνει SMS σχετικά με το λογαριασμό χρησιμοποιώντας τη μονάδα GSM. Σε αυτό το έργο φτιάχνουμε έναν μετρητή Smart Electricity Energy χρησιμοποιώντας τη μονάδα Arduino και ESP8266 Wi-Fi, η οποία όχι μόνο σας στέλνει SMS / Email του λογαριασμού σας ηλεκτρικής ενέργειας, αλλά και μπορείτε να παρακολουθείτε τις ενεργειακές χρήσεις ανά πάσα στιγμή και από οπουδήποτε στον κόσμο. Εδώ χρησιμοποιήσαμε έναν τρέχοντα αισθητήρα ACS712 για να μετρήσουμε την κατανάλωση ενέργειας, θα το συζητήσουμε σύντομα.
Θα λάβουμε τη βοήθεια της πλατφόρμας IFTTT για να συνδέσουμε το Wi-Fi με ειδοποιήσεις SMS / E-mail. Θα χρησιμοποιήσουμε επίσης την εφαρμογή Android Dashboard MQTT για να παρακολουθούμε τις ενεργειακές μας χρήσεις. Ας ξεκινήσουμε λοιπόν….
Απαιτούμενα υλικά:
- Arduino Uno
- ESP12 / NodeMCU
- Αισθητήρας ρεύματος ACS712-30Amp
- Οποιαδήποτε συσκευή AC
- Καλώδια αρσενικού-θηλυκού
Λειτουργία αισθητήρα ρεύματος ACS712:
Πριν ξεκινήσουμε την κατασκευή του έργου, είναι πολύ σημαντικό για εμάς να κατανοήσουμε τη λειτουργία του αισθητήρα ρεύματος ACS712, καθώς είναι το βασικό στοιχείο του έργου. Η μέτρηση του ρεύματος ειδικά του ρεύματος AC είναι πάντα μια δύσκολη εργασία λόγω του θορύβου σε συνδυασμό με το ακατάλληλο πρόβλημα απομόνωσης κ.λπ.
Αυτή η ενότητα λειτουργεί βάσει της αρχής του Hall-effect, η οποία ανακαλύφθηκε από τον Δρ Edwin Hall. Σύμφωνα με την αρχή του, όταν ένας αγωγός μεταφοράς ρεύματος τοποθετείται σε μαγνητικό πεδίο, δημιουργείται τάση στα άκρα του κάθετα προς τις κατευθύνσεις τόσο του ρεύματος όσο και του μαγνητικού πεδίου. Ας μην μπαίνουμε πολύ βαθιά στην ιδέα αλλά, απλά, χρησιμοποιούμε έναν αισθητήρα αίθουσας για να μετρήσουμε το μαγνητικό πεδίο γύρω από έναν τρέχοντα αγωγό μεταφοράς. Αυτή η μέτρηση θα είναι σε όρους χιλιοστών βολτ που ονομάσαμε τάση τάσης. Αυτή η μετρούμενη τάση αίθουσας είναι ανάλογη με το ρεύμα που ρέει μέσω του αγωγού.
Το κύριο πλεονέκτημα της χρήσης του αισθητήρα ρεύματος ACS712 είναι ότι μπορεί να μετρήσει τόσο το ρεύμα AC όσο και το DC και παρέχει επίσης απομόνωση μεταξύ του φορτίου (φορτίο AC / DC) και της μονάδας μέτρησης (μέρος μικροελεγκτή). Όπως φαίνεται στην εικόνα έχουμε τρεις καρφίτσες στη μονάδα που είναι Vcc, Vout και Ground αντίστοιχα.
Το μπλοκ ακροδεκτών 2 ακίδων είναι εκεί όπου πρέπει να περάσει το τρέχον καλώδιο μεταφοράς. Η μονάδα λειτουργεί σε + 5V, οπότε το Vcc πρέπει να τροφοδοτείται από 5V και η γείωση πρέπει να συνδέεται με τη Γείωση του συστήματος. Ο πείρος Vout έχει τάση μετατόπισης 2500mV, που σημαίνει ότι όταν δεν υπάρχει ρεύμα που ρέει μέσω του καλωδίου τότε η τάση εξόδου θα είναι 2500mV και όταν το ρεύμα που ρέει είναι θετικό, η τάση θα είναι μεγαλύτερη από 2500mV και όταν το ρεύμα που ρέει είναι αρνητικό, το η τάση θα είναι μικρότερη από 2500mV.
Θα χρησιμοποιήσουμε τον αναλογικό πείρο του Arduino για να διαβάσουμε την τάση εξόδου (Vout) της μονάδας, η οποία θα είναι 512 (2500mV) όταν δεν ρέει ρεύμα μέσω του καλωδίου. Αυτή η τιμή θα μειωθεί καθώς το ρεύμα ρέει σε αρνητική κατεύθυνση και θα αυξάνεται καθώς το ρεύμα ρέει σε θετική κατεύθυνση. Ο παρακάτω πίνακας θα σας βοηθήσει να καταλάβετε πώς διαφέρει η τάση εξόδου και η τιμή ADC με βάση το ρεύμα που ρέει μέσω του καλωδίου.
Αυτές οι τιμές υπολογίστηκαν με βάση τις πληροφορίες που δίνονται στο φύλλο δεδομένων του ACS712. Μπορείτε επίσης να τους υπολογίσετε χρησιμοποιώντας τους παρακάτω τύπους:
Τάση Vout (mV) = (Τιμή ADC / 1023) * 5000 ρεύμα μέσω του καλωδίου (A) = (Vout (mv) -2500) / 185
Τώρα, γνωρίζουμε πώς λειτουργεί ο αισθητήρας ACS712 και τι μπορούμε να περιμένουμε από αυτόν. Ας προχωρήσουμε στο διάγραμμα κυκλώματος.
Χρησιμοποιήσαμε αυτόν τον αισθητήρα για να κάνουμε το ψηφιακό κύκλωμα αμπερόμετρου χρησιμοποιώντας PIC Microcontroller και ACS712.
Διάγραμμα κυκλώματος
Βήμα 1: Συνδεθείτε στο IFTTT με τα διαπιστευτήριά σας.
Βήμα 2: Στο My Applets, κάντε κλικ στο Νέο Applet
Βήμα 3: Κάντε κλικ στο + αυτό
Βήμα 4: Αναζήτηση στο AdaFruit και κάντε κλικ σε αυτό.
Βήμα 5: Κάντε κλικ στην Παρακολούθηση μιας ροής στο AdaFruit IO.
Βήμα 6: Επιλέξτε Feed ως νομοσχέδιο, σχέσεις ως « ισούται με» και το όριο τιμής στο οποίο θέλετε ένα e-mail. Κάντε κλικ στο Δημιουργία ενέργειας . Έχω χρησιμοποιήσει το 4 ως τιμή ενεργοποίησης κατωφλίου.
Βήμα 7: Κάντε κλικ στο + αυτό . Αναζητήστε το G-mail και κάντε κλικ σε αυτό και συνδεθείτε με τα διαπιστευτήριά σας στο g-mail.
Βήμα 8: Κάντε κλικ για να στείλετε στον εαυτό σας ένα email.
Βήμα 9: Γράψτε το θέμα και το σώμα σας όπως φαίνεται και κάντε κλικ για δημιουργία.
Βήμα 10: Η « συνταγή » σας είναι έτοιμη. Ελέγξτε το και κάντε κλικ στο φινίρισμα.
Τώρα, τελειώσαμε με την ενσωμάτωση στο Διαδίκτυο. Ας προχωρήσουμε στο τμήμα κωδικοποίησης..
Κωδικός και εξήγηση:
Χρησιμοποιούμε σειριακή επικοινωνία μεταξύ ESP12 και Arduino. Έτσι, πρέπει να γράψουμε κώδικα τόσο για το Arduino όσο και για το NodeMCU για μετάδοση και λήψη.
Κωδικός για Μέρος Πομπού, δηλαδή για το Arduino Uno:
Ο πλήρης κωδικός Arduino δίνεται στο τέλος αυτού του σεμιναρίου. Θα χρησιμοποιήσουμε βιβλιοθήκη για τον τρέχοντα αισθητήρα, τον οποίο μπορείτε να κατεβάσετε από αυτόν τον σύνδεσμο.
Αυτή η βιβλιοθήκη έχει ενσωματωμένη λειτουργία για τον υπολογισμό του ρεύματος. Μπορείτε να γράψετε τον κωδικό σας για να υπολογίσετε το τρέχον, αλλά αυτή η βιβλιοθήκη έχει ακριβείς τρέχοντες αλγόριθμους μέτρησης.
Αρχικά, συμπεριλάβετε βιβλιοθήκη για τρέχοντα αισθητήρα όπως:
# συμπερίληψη "ACS712.h"
Δημιουργήστε έναν πίνακα για να αποθηκεύσετε ισχύ για την αποστολή του στο NodeMCU.
char watt;
Δημιουργήστε μια παρουσία για να χρησιμοποιήσετε το ACS712-30Amp στο PIN A0. Αλλάξτε το πρώτο όρισμα εάν χρησιμοποιείτε παραλλαγή 20Amp ή 5 Amp.
Αισθητήρας ACS712 (ACS712_30A, A0);
Στη λειτουργία εγκατάστασης , ορίστε ρυθμό baud 115200 για επικοινωνία με το NodeMCU. Καλέστε τη λειτουργία sensor.calibrate () για βαθμονόμηση του τρέχοντος αισθητήρα για ακριβείς μετρήσεις.
άκυρη ρύθμιση () { Serial.begin (115200); sensor.calibrate (); }
Στη λειτουργία βρόχου , θα καλέσουμε το sensor.getCurrentAC (); Λειτουργία για να λάβετε την τρέχουσα τιμή και να αποθηκεύσετε στη μεταβλητή float I. Αφού λάβετε ρεύμα, υπολογίστε την ισχύ χρησιμοποιώντας τον τύπο P = V * I. Χρησιμοποιούμε 230V επειδή είναι το κοινό πρότυπο στις ευρωπαϊκές χώρες, αλλάξτε στο τοπικό σας, εάν είναι απαραίτητο
κενός βρόχος () { float V = 230; float I = sensor.getCurrentAC (); float P = V * I;
Αυτές οι γραμμές μετατρέπουν την ισχύ σε Wh.
last_time = current_time; current_time = millis (); Wh = Wh + P * ((current_time -last_time) / 3600000.0);
Τώρα, πρέπει να μετατρέψουμε αυτό το Wh σε μορφή χαρακτήρα για να το στείλουμε στο NodeMCU, για αυτό το dtostrf (); θα μετατρέψει ένα float σε πίνακα char, ώστε να μπορεί να εκτυπωθεί εύκολα:
dtostrf (Wh, 4, 2, watt);
Η μορφή είναι:
dtostrf (floatvar, StringLengthIncDecimalPoint, numVarsAfterDecimal, charbuf);
Γράψτε αυτόν τον πίνακα χαρακτήρων σε σειριακό buffer χρησιμοποιώντας το Serial.write () ; λειτουργία. Αυτό θα στείλει τιμή Wh στο NodeMCU.
Serial.write (watt); καθυστέρηση (10000) }
Κωδικός για δέκτη Μέρος ΚόμβοςMCU ESP12:
Για αυτό χρειαζόμαστε βιβλιοθήκη AdaFruit MQTT που μπορείτε να κατεβάσετε από αυτόν τον σύνδεσμο.
Τώρα, ανοίξτε το Arduino IDE. Μεταβείτε στα παραδείγματα -> βιβλιοθήκη AdaFruit MQTT -> mqtt_esp8266
Θα επεξεργαστούμε αυτόν τον κωδικό σύμφωνα με τα κλειδιά AIO και τα διαπιστευτήρια Wi-Fi και τα εισερχόμενα σειριακά δεδομένα από το Arduino.
Αρχικά, συμπεριλάβαμε όλες τις βιβλιοθήκες για το ESP12 Wi-Fi Module και το AdaFruit MQTT.
#περιλαμβάνω
Ορίζουμε το SSID και τον κωδικό πρόσβασης για το Wi-Fi σας, από τα οποία θέλετε να συνδέσετε το ESp-12e σας.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Αυτή η ενότητα ορίζει το διακομιστή AdaFruit και τη θύρα διακομιστή που καθορίζεται ως "io.adafruit.com" και "1883" αντίστοιχα.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Αντικαταστήστε αυτά τα πεδία με το όνομα χρήστη και τα κλειδιά AIO που έχετε αντιγράψει από τον ιστότοπο AdaFruit κατά τη δημιουργία της ροής.
#define AIO_USERNAME "********" #define AIO_KEY "******************************"
Στη συνέχεια, δημιουργήσαμε μια κλάση ESP12 WiFiClient για σύνδεση με τον διακομιστή MQTT.
Πελάτης WiFiClient;
Ρυθμίστε την κλάση πελάτη MQTT περνώντας στον πελάτη WiFi και στο διακομιστή MQTT και τα στοιχεία σύνδεσης.
Adafruit_MQTT_Client mqtt (& client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Ρυθμίστε μια ροή που ονομάζεται "Power" και "bill" για δημοσίευση σε αλλαγές.
Adafruit_MQTT_Publish Power = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / Power"); Adafruit_MQTT_Publish bill = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ τροφοδοσίες / λογαριασμός");
Στη λειτουργία εγκατάστασης , συνδέουμε τη μονάδα Wi-Fi στο σημείο πρόσβασης Wi-Fi.
άκυρη ρύθμιση () { Serial.begin (115200); καθυστέρηση (10) Serial.println (F ("Adafruit MQTT demo")); // Συνδεθείτε στο σημείο πρόσβασης WiFi. Serial.println (); Serial.println (); Serial.print ("Σύνδεση σε"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); …. …. … }
Στη λειτουργία βρόχου , θα ελέγξουμε τα εισερχόμενα δεδομένα από το Arduino και θα δημοσιεύσουμε αυτά τα δεδομένα στο AdaFruit IO.
void loop () { // Βεβαιωθείτε ότι η σύνδεση με τον διακομιστή MQTT είναι ζωντανή (αυτό θα κάνει την πρώτη // σύνδεση και θα επανασυνδεθεί αυτόματα όταν αποσυνδεθεί). Δείτε τον ορισμό συνάρτησης MQTT_connect // παρακάτω. MQTT_connect (); int i = 0; float watt1;
Αυτή η λειτουργία ελέγχει για τα εισερχόμενα δεδομένα από το Arduino και αποθηκεύει αυτά τα δεδομένα σε πίνακα watt χρησιμοποιώντας τη λειτουργία serial.read ().
εάν (Serial.available ()> 0) { καθυστέρηση (100); // επιτρέπει τη λήψη όλων των σειριακών αποστολών μαζί ενώ (Serial.available () && i <5) { watt = Serial.read (); } watt = '\ 0'; }
Η συνάρτηση atof () μετατρέπει τους χαρακτήρες σε τιμές float και θα αποθηκεύσουμε αυτήν την τιμή float σε μια άλλη μεταβλητή float watt1.
watt1 = atof (watt);
Υπολογίστε το ποσό του λογαριασμού πολλαπλασιάζοντας την ισχύ (σε Wh) με το ενεργειακό τιμολόγιο και διαιρέστε το με 1000 για να κάνετε ισχύ σε KWh.
bill_amount = watt1 * (energyTariff / 1000); // 1unit = 1kwH
Τώρα μπορούμε να δημοσιεύσουμε πράγματα!
Serial.print (F ("\ nΑποστολή ισχύος val")); Serial.println (watt1); Serial.print ("…");
Αυτό το κομμάτι κώδικα δημοσιεύει τιμές ισχύος στο Power feed
εάν (! Power.publish (watt1)) { Serial.println (F ("Failed")); } αλλιώς { Serial.println (F ("OK!")); }
Αυτό θα δημοσιεύσει λογαριασμό ηλεκτρικής ενέργειας στη ροή λογαριασμών .
if (! bill.publish (bill_amount)) { Serial.println (F ("Αποτυχία")); } αλλιώς { Serial.println (F ("OK!")); }
Το ποσό του λογαριασμού μας μπορεί να αλλάξει γρήγορα, αλλά το IFTTT χρειάζεται χρόνο για την ενεργοποίηση της μικροεφαρμογής, οπότε αυτές οι γραμμές θα δώσουν χρόνο για ενεργοποίηση, ώστε να μπορούμε να λαμβάνουμε email κατωφλίου.
Αλλάξτε την τιμή bill_amount στην οποία θέλετε να λαμβάνετε email. Επίσης, αλλάξτε τη ρύθμιση IFTTT AdaFruit IO.
if (bill_amount == 4) { για (int i = 0; i <= 2; i ++) { bill.publish (bill_amount); καθυστέρηση (5000) } bill_amount = 6; }
Πλήρης κωδικός για το Arduino και το NodeMCU ESP12 δίνονται στο τέλος αυτού του σεμιναρίου.
Τώρα, ανεβάστε τους κωδικούς και στους δύο πίνακες. Συνδέστε το υλικό σας όπως φαίνεται στο διάγραμμα κυκλώματος και ανοίξτε το io.adafruit.com. Ανοίξτε τον πίνακα ελέγχου που μόλις δημιουργήσατε. Θα δείτε ότι ο λογαριασμός κατανάλωσης και ηλεκτρικής ενέργειας ενημερώνεται.
Όταν ο λογαριασμός σας φτάσει τα 4 INR τότε θα λάβετε ένα τέτοιο email.
Εφαρμογή Android για παρακολούθηση της κατανάλωσης ηλεκτρικής ενέργειας:
Μπορείτε να χρησιμοποιήσετε την εφαρμογή Android για παρακολούθηση των τιμών. Για αυτό κατεβάστε την εφαρμογή Android MQTT Dashboard από το Play store ή από αυτόν τον σύνδεσμο.
Για να ρυθμίσετε τη σύνδεση με το io.adafruit.com ακολουθήστε τα εξής βήματα:
Βήμα 1: Ανοίξτε την εφαρμογή και κάντε κλικ στο σύμβολο "+". Συμπληρώστε το αναγνωριστικό πελάτη ό, τι θέλετε. Ο διακομιστής και η θύρα παραμένουν ίδια όπως φαίνεται στο στιγμιότυπο οθόνης. Θα λάβετε το Όνομα χρήστη και τον κωδικό πρόσβασης (Ενεργό κλειδί) από τον πίνακα ελέγχου AdaFruit IO όπως φαίνεται παρακάτω.
Το ενεργό κλειδί είναι ο κωδικός πρόσβασής σας.
Βήμα 2: Επιλέξτε Μετρητής ηλεκτρικής ενέργειας και επιλέξτε Εγγραφή. Στη συνδρομή, δώστε φιλικό όνομα και θέμα. Η μορφή θέματος είναι « όνομα χρήστη» / feeds / «feedname» και κάντε κλικ στο create.
Βήμα 3: Με τον ίδιο τρόπο, κάντε συνδρομή για τη ροή λογαριασμών.
Βήμα 4: Καθώς οι συσκευές σας καταναλώνουν ενέργεια, οι ενημερωμένες τιμές θα εμφανίζονται στο Power and Bill .
Με αυτόν τον τρόπο μπορείτε να δημιουργήσετε έναν έξυπνο μετρητή ενέργειας ηλεκτρικής ενέργειας, ο οποίος μπορεί να παρακολουθείται όχι μόνο από οπουδήποτε στον κόσμο, αλλά και να ενεργοποιεί το ηλεκτρονικό ταχυδρομείο όταν έχετε υψηλή κατανάλωση ηλεκτρικής ενέργειας.
Ελέγξτε επίσης όλα τα έργα IoT.