Πίνακας περιεχομένων:

Διαβάστε μετρητή ηλεκτρικής ενέργειας και αερίου (Βελγικά/Ολλανδικά) και Μεταφόρτωση στο Thingspeak: 5 Βήματα
Διαβάστε μετρητή ηλεκτρικής ενέργειας και αερίου (Βελγικά/Ολλανδικά) και Μεταφόρτωση στο Thingspeak: 5 Βήματα

Βίντεο: Διαβάστε μετρητή ηλεκτρικής ενέργειας και αερίου (Βελγικά/Ολλανδικά) και Μεταφόρτωση στο Thingspeak: 5 Βήματα

Βίντεο: Διαβάστε μετρητή ηλεκτρικής ενέργειας και αερίου (Βελγικά/Ολλανδικά) και Μεταφόρτωση στο Thingspeak: 5 Βήματα
Βίντεο: 28 Σεπτεμβρίου 2022 2024, Ιούλιος
Anonim
Διαβάστε μετρητή ηλεκτρικής ενέργειας και αερίου (βελγικά/ολλανδικά) και μεταφόρτωση στο Thingspeak
Διαβάστε μετρητή ηλεκτρικής ενέργειας και αερίου (βελγικά/ολλανδικά) και μεταφόρτωση στο Thingspeak
Διαβάστε μετρητή ηλεκτρικής ενέργειας και αερίου (βελγικά/ολλανδικά) και μεταφόρτωση στο Thingspeak
Διαβάστε μετρητή ηλεκτρικής ενέργειας και αερίου (βελγικά/ολλανδικά) και μεταφόρτωση στο Thingspeak

Εάν ανησυχείτε για την κατανάλωση ενέργειας ή για λίγο σπασίκλα, πιθανότατα θέλετε να δείτε τα δεδομένα από τον φανταστικό νέο ψηφιακό σας μετρητή στο smartphone σας.

Σε αυτό το έργο θα λάβουμε τα τρέχοντα δεδομένα από έναν βελγικό ή ολλανδικό ψηφιακό μετρητή ηλεκτρικής ενέργειας και αερίου και θα τα ανεβάσουμε στο Thingspeak. Αυτά τα δεδομένα περιλαμβάνουν την τρέχουσα και ημερήσια κατανάλωση ενέργειας και ψεκασμό (εάν έχετε ηλιακούς συλλέκτες), τάσεις και ρεύματα και την κατανάλωση αερίου (εάν ένας ψηφιακός μετρητής αερίου είναι συνδεδεμένος στον μετρητή ηλεκτρικής ενέργειας). Μέσω μιας εφαρμογής, αυτές οι τιμές μπορούν στη συνέχεια να διαβαστούν σε πραγματικό χρόνο στο smartphone σας.

Λειτουργεί για έναν βελγικό ή ολλανδικό ψηφιακό μετρητή που ακολουθεί το πρωτόκολλο DSMR (Dutch Smart Meter Requirements), το οποίο θα πρέπει να είναι όλα τα πρόσφατα μέτρα. Εάν ζείτε κάπου αλλού, δυστυχώς, ο μετρητής σας πιθανότατα θα χρησιμοποιήσει άλλο πρωτόκολλο. Φοβάμαι λοιπόν ότι αυτό το Instructable είναι λίγο περιφερειακά περιορισμένο.

Θα χρησιμοποιήσουμε τη θύρα P1 του μετρητή, η οποία δέχεται καλώδιο RJ11/RJ12, γνωστή ως καλώδιο τηλεφώνου. Βεβαιωθείτε ότι ο εγκαταστάτης του μετρητή ενεργοποίησε τη θύρα P1. Για παράδειγμα, για το Fluvius στο Βέλγιο ακολουθήστε αυτές τις οδηγίες.

Για την επεξεργασία των δεδομένων και τη μεταφόρτωση στο διαδίκτυο, χρησιμοποιούμε ένα ESP8266, το οποίο είναι ένα φθηνό μικροτσίπ με ενσωματωμένο wifi. Κοστίζει μόνο περίπου 2 δολάρια. Επιπλέον, μπορεί να προγραμματιστεί χρησιμοποιώντας το Arduino IDE. Αποθηκεύουμε τα δεδομένα στο cloud στο Thingspeak, το οποίο είναι δωρεάν για έως και τέσσερα κανάλια. Για αυτό το έργο χρησιμοποιούμε μόνο ένα κανάλι. Στη συνέχεια, τα δεδομένα μπορούν να εμφανιστούν στο smartphone σας χρησιμοποιώντας μια εφαρμογή όπως το IoT ThingSpeak.

Μέρη:

  • Ένα ESP8266, σαν nodemcu v2. Σημειώστε ότι το nodemcu v3 είναι πολύ μεγάλο για ένα τυπικό breadboard, οπότε προτιμώ το v2.
  • Καλώδιο micro USB σε USB.
  • Φορτιστής USB.
  • Ένα τρανζίστορ BC547b NPN.
  • Δύο αντιστάσεις 10k και μία αντίσταση 1k.
  • Ένας βιδωτός ακροδέκτης βίδας RJ12.
  • Μια σανίδα ψωμιού.
  • Καλώδια βραχυκυκλωτήρων.
  • Προαιρετικά: ένας πυκνωτής 1nF.

Συνολικά, αυτό κοστίζει περίπου 15 ευρώ στο AliExpress ή παρόμοιο. Η εκτίμηση λαμβάνει υπόψη ότι ορισμένα εξαρτήματα όπως οι αντιστάσεις, τα τρανζίστορ και τα καλώδια, έρχονται σε πολύ μεγαλύτερες ποσότητες από ό, τι χρειάζεστε για αυτό το έργο. Έτσι, εάν έχετε ήδη ένα κιτ εξαρτημάτων, θα είναι φθηνότερο.

Βήμα 1: Γνωριμία με το ESP8266

Επέλεξα το NodeMCU v2, αφού δεν απαιτείται συγκόλληση και έχει σύνδεση micro USB που επιτρέπει εύκολο προγραμματισμό. Το πλεονέκτημα του NodeMCU v2 έναντι του NodeMCU v3 είναι ότι είναι αρκετά μικρό για να χωρέσει σε μια σανίδα ψωμιού και να αφήνει ελεύθερες τρύπες στο πλάι για να κάνει συνδέσεις. Είναι καλύτερα λοιπόν να αποφύγετε το NodeMCU v3. Ωστόσο, εάν προτιμάτε μια άλλη πλακέτα ESP8266 που είναι επίσης μια χαρά.

Το ESP8266 μπορεί να προγραμματιστεί εύκολα χρησιμοποιώντας το Arduino IDE. Υπάρχουν και άλλες οδηγίες που το εξηγούν λεπτομερώς, οπότε θα είμαι πολύ σύντομος εδώ.

  • Πρώτα κατεβάστε το Arduino IDE.
  • Δεύτερη εγκατάσταση υποστήριξης για την πλακέτα ESP8266. Στο μενού Αρχείο - Προτιμήσεις - Ρυθμίσεις προσθέστε τη διεύθυνση URL https://arduino.esp8266.com/stable/package_esp8266com_index.json σε πρόσθετες διευθύνσεις URL διαχειριστή πίνακα. Στη συνέχεια, στο μενού Εργαλεία - Πίνακας - Διαχειριστής πινάκων εγκαταστήστε την κοινότητα esp8266 by esp8266.
  • Τρίτον, επιλέξτε την κοντινότερη πλακέτα στο ESP8266. Στην περίπτωσή μου επέλεξα το NodeMCU v1.0 (ESP 12-E Module).
  • Τέλος, επιλέξτε στην περιοχή Εργαλεία - Μέγεθος φλας, μέγεθος που περιλαμβάνει SPIFFS, όπως 4Μ (1Μ SPIFFS). Σε αυτό το έργο χρησιμοποιούμε το SPIFFS (SPI Flash File System) για την αποθήκευση ημερήσιων ενεργειακών τιμών, έτσι ώστε να μην χαθούν εάν ο ESP8266 χάσει την ισχύ του και ακόμη και όταν επαναπρογραμματιστεί.

Τώρα έχουμε τα πάντα για να προγραμματίσουμε το ESP8266! Θα συζητήσουμε τον πραγματικό κώδικα σε μεταγενέστερο βήμα. Πρώτα θα δημιουργήσουμε έναν λογαριασμό Thingspeak.

Βήμα 2: Δημιουργήστε λογαριασμό και κανάλι Thingspeak

Μεταβείτε στη διεύθυνση https://thingspeak.com/ και δημιουργήστε έναν λογαριασμό. Μόλις συνδεθείτε, κάντε κλικ στο κουμπί Νέο κανάλι για να δημιουργήσετε ένα κανάλι. Στις Ρυθμίσεις καναλιού συμπληρώστε το όνομα και την περιγραφή όπως θέλετε. Στη συνέχεια, ονομάζουμε τα πεδία καναλιού και τα ενεργοποιούμε κάνοντας κλικ στα πλαίσια ελέγχου στα δεξιά. Εάν χρησιμοποιείτε αμετάβλητο τον κωδικό μου, τα πεδία είναι τα εξής:

  • Πεδίο 1: μέγιστη κατανάλωση σήμερα (kWh)
  • Πεδίο 2: Κατανάλωση εκτός αιχμής σήμερα (kWh)
  • Πεδίο 3: αιχμή ένεσης σήμερα (kWh)
  • Πεδίο 4: Έγχυση εκτός αιχμής σήμερα (kWh)
  • Πεδίο 5: τρέχουσα κατανάλωση (W)
  • Πεδίο 6: τρέχουσα έγχυση (W)
  • Πεδίο 7: Κατανάλωση φυσικού αερίου σήμερα (m3)

Εδώ, η αιχμή και η μη αιχμή αναφέρονται στο τιμολόγιο ηλεκτρικής ενέργειας. Στα πεδία 1 και 2 η κατανάλωση αναφέρεται στην καθαρή κατανάλωση ηλεκτρικής ενέργειας σήμερα: κατανάλωση ηλεκτρικής ενέργειας σήμερα στη δασμολογική περίοδο από τα μεσάνυχτα μείον την έγχυση ηλεκτρικής ενέργειας (που παράγεται από ηλιακούς συλλέκτες) σήμερα στη δασμολογική περίοδο από τα μεσάνυχτα με ελάχιστο μηδέν. Το τελευταίο σημαίνει ότι αν υπήρχε περισσότερη έγχυση από κατανάλωση σήμερα η τιμή είναι μηδενική. Ομοίως, η έγχυση στα πεδία 3 και 4 αναφέρεται σε καθαρή έγχυση ηλεκτρικής ενέργειας. Τα πεδία 5 και 6 υποδεικνύουν την καθαρή κατανάλωση και έγχυση την τρέχουσα στιγμή. Τέλος, το πεδίο 7 είναι η κατανάλωση αερίου από τα μεσάνυχτα.

Για μελλοντική αναφορά, σημειώστε το αναγνωριστικό καναλιού, το κλειδί API ανάγνωσης και το κλειδί εγγραφής API, το οποίο μπορείτε να βρείτε στα πλήκτρα API του μενού.

Βήμα 3: Δημιουργία ηλεκτρονικού κυκλώματος

Δημιουργία ηλεκτρονικού κυκλώματος
Δημιουργία ηλεκτρονικού κυκλώματος
Δημιουργία ηλεκτρονικού κυκλώματος
Δημιουργία ηλεκτρονικού κυκλώματος

Διαβάζουμε τον μετρητή ηλεκτρικής ενέργειας χρησιμοποιώντας τη θύρα P1, η οποία παίρνει καλώδιο RJ11 ή RJ12. Η διαφορά είναι ότι το καλώδιο RJ12 έχει 6 καλώδια ενώ το RJ11 έχει μόνο 4. Σε αυτό το έργο δεν τροφοδοτούμε το ESP8266 από τη θύρα P1, οπότε χρειαζόμαστε μόνο 4 καλώδια, οπότε θα έκανε ένα RJ11.

Χρησιμοποίησα το RJ12 breakout που φαίνεται στην εικόνα. Είναι λίγο ευρύ και δεν υπάρχει πολύς χώρος γύρω από τη θύρα P1 στον μετρητή μου. Ταιριάζει, αλλά είναι σφιχτό. Εναλλακτικά, μπορείτε απλά να χρησιμοποιήσετε ένα καλώδιο RJ11 ή RJ12 και να αφαιρέσετε την κεφαλίδα στο ένα άκρο.

Εάν κρατάτε το break-out όπως στην εικόνα, οι ακίδες αριθμούνται από δεξιά προς τα αριστερά και έχουν την ακόλουθη σημασία:

  • Καρφίτσα 1: Τροφοδοσία 5V
  • Καρφίτσα 2: Αίτημα δεδομένων
  • Pin 3: Data Ground
  • Καρφίτσα 4: δεν είναι συνδεδεμένο
  • Καρφίτσα 5: Γραμμή δεδομένων
  • Καρφίτσα 6: Γείωση ισχύος

Οι ακίδες 1 και 6 μπορούν να χρησιμοποιηθούν για την τροφοδοσία του ESP8266, αλλά δεν το έχω δοκιμάσει. Θα πρέπει να συνδέσετε το pin 1 στο Vin του ESP8266, οπότε ο εσωτερικός ρυθμιστής τάσης της πλακέτας χρησιμοποιείται για τη μείωση της τάσης από 5V στα 3.3V που δέχεται το ESP8266. Μην το συνδέσετε λοιπόν με τον ακροδέκτη 3.3V, γιατί αυτό ενδέχεται να προκαλέσει ζημιά στο ESP8266. Επίσης, η τροφοδοσία από τη θύρα P1 θα εξαντλούσε την μπαταρία του ψηφιακού μετρητή με την πάροδο του χρόνου.

Ρυθμίζοντας τον ακροδέκτη 2 ψηλά σηματοδοτεί ο μετρητής για να στέλνει τηλεγραφήματα δεδομένων κάθε δευτερόλεπτο. Τα πραγματικά δεδομένα αποστέλλονται μέσω του pin 5 με ρυθμό baud 115200 για έναν σύγχρονο ψηφιακό μετρητή (DSMR 4 και 5). Το σήμα αντιστρέφεται (χαμηλό είναι 1 και υψηλό 0). Για έναν παλαιότερο τύπο (DSMR 3 και κάτω) η τιμή είναι 9600 baud. Για έναν τέτοιο μετρητή πρέπει να αλλάξετε τον ρυθμό baud στον κωδικό υλικολογισμικού του επόμενου βήματος: αλλάξτε τη γραμμή Serial.begin (115200). στη ρύθμιση ().

Ο ρόλος του τρανζίστορ NPN είναι διπλός:

  • Για να αντιστρέψετε το σήμα έτσι ώστε το ESP8266 να το καταλάβει.
  • Για να αλλάξετε το επίπεδο λογικής από τα 5V της θύρας P1 στο 3,3V που αναμένεται από τη θύρα RX του ESP8266.

Δημιουργήστε λοιπόν το ηλεκτρονικό κύκλωμα στο breadboard όπως στο διάγραμμα. Ο πυκνωτής αυξάνει τη σταθερότητα, αλλά λειτουργεί και χωρίς.

Διακόψτε τη σύνδεση του πείρου RX μέχρι να προγραμματίσετε το ESP8266 στο επόμενο βήμα. Πράγματι, ο ακροδέκτης RX απαιτείται επίσης για επικοινωνία μέσω USB μεταξύ του ESP8266 και του υπολογιστή σας.

Βήμα 4: Ανεβάστε τον κώδικα

Έχω κάνει τον κωδικό διαθέσιμο στο GitHub, είναι μόνο ένα αρχείο: P1-Meter-Reader.ino. Απλώς κατεβάστε το και ανοίξτε το στο Arduino IDE. Or μπορείτε να επιλέξετε Αρχείο - Νέο και απλά αντιγράψτε/επικολλήστε τον κώδικα.

Υπάρχουν κάποιες πληροφορίες που πρέπει να συμπληρώσετε στην αρχή του αρχείου: το όνομα και τον κωδικό πρόσβασης του WLAN για χρήση και το Κανάλι αναγνωριστικού καναλιού και το κλειδί API εγγραφής του καναλιού ThingSpeak.

Ο κώδικας κάνει τα εξής:

  • Διαβάζει ένα τηλεγράφημα δεδομένων από τον μετρητή κάθε UPDATE_INTERVAL (σε χιλιοστά του δευτερολέπτου). Η προεπιλεγμένη τιμή είναι κάθε 10 δευτερόλεπτα. Κανονικά, υπάρχει ένα τηλεγράφημα δεδομένων από τον μετρητή κάθε δευτερόλεπτο, αλλά η ρύθμιση της συχνότητας σε υψηλό θα υπερφορτώσει το ESP8266, ώστε να μην μπορεί να τρέξει πια τον διακομιστή ιστού.
  • Ανεβάζει τα δεδομένα ηλεκτρικής ενέργειας στο κανάλι Thingspeak κάθε SEND_INTERVAL (σε χιλιοστά του δευτερολέπτου). Η προεπιλεγμένη τιμή είναι κάθε λεπτό. Για να αποφασίσετε σχετικά με αυτήν τη συχνότητα, λάβετε υπόψη ότι η αποστολή των δεδομένων απαιτεί λίγο χρόνο (συνήθως μερικά δευτερόλεπτα) και ότι υπάρχει ένα όριο στη συχνότητα ενημέρωσης στο Thingspeak για έναν δωρεάν λογαριασμό. Είναι περίπου 8200 μηνύματα την ημέρα, οπότε η μέγιστη συχνότητα θα είναι περίπου μία φορά κάθε 10 δευτερόλεπτα εάν δεν χρησιμοποιείτε το Thingspeak για οτιδήποτε άλλο.
  • Ανεβάζει τα δεδομένα αερίου όταν αλλάζουν. Συνήθως, ο μετρητής ενημερώνει τα δεδομένα κατανάλωσης αερίου μόνο κάθε 4 λεπτά περίπου.
  • Ο μετρητής παρακολουθεί τις συνολικές τιμές κατανάλωσης και ψεκασμού από την αρχή. Έτσι, για να αποκτήσετε την ημερήσια κατανάλωση και ένεση, ο κωδικός αποθηκεύει τις συνολικές τιμές τα μεσάνυχτα κάθε μέρα. Στη συνέχεια, αυτές οι τιμές αφαιρούνται από τις τρέχουσες συνολικές τιμές. Οι τιμές τα μεσάνυχτα αποθηκεύονται στο SPIFFS (SPI Flash File System), το οποίο επιμένει εάν ο ESP8266 χάσει την ισχύ του ή ακόμα και όταν επαναπρογραμματιστεί.
  • Το ESP8266 τρέχει έναν μίνι διακομιστή ιστού. Εάν ανοίξετε τη διεύθυνση IP του στο πρόγραμμα περιήγησής σας, θα λάβετε μια επισκόπηση όλων των τρεχουσών τιμών ηλεκτρικής ενέργειας και φυσικού αερίου. Αυτά προέρχονται από το πιο πρόσφατο τηλεγράφημα και περιλαμβάνουν πληροφορίες που δεν μεταφορτώνονται στο Thingspeak, όπως τάσεις και ρεύματα ανά φάση. Η προεπιλεγμένη ρύθμιση είναι ότι η διεύθυνση IP καθορίζεται δυναμικά από το δρομολογητή σας. Αλλά είναι πιο βολικό να χρησιμοποιήσετε μια στατική διεύθυνση IP, η οποία είναι πάντα η ίδια. Σε αυτήν την περίπτωση πρέπει να συμπληρώσετε staticIP, gateway, dns και subnet στον κώδικα και να κάνετε αποσύνδεση της γραμμής WiFi.config (staticIP, dns, gateway, subnet). στη συνάρτηση connectWifi ().

Αφού πραγματοποιήσετε αυτές τις αλλαγές, είστε έτοιμοι να ανεβάσετε το υλικολογισμικό στο ESP8266. Συνδέστε το ESP8266 μέσω του καλωδίου USB στον υπολογιστή σας και πατήστε το εικονίδιο με το βέλος στο Arduino IDE. Εάν δεν καταφέρετε να συνδεθείτε στο ESP8266 δοκιμάστε να αλλάξετε τη θύρα COM στο μενού Εργαλεία - Θύρα. Εάν εξακολουθεί να μην λειτουργεί, είναι πιθανό να εγκαταστήσετε μη αυτόματα το πρόγραμμα οδήγησης για την εικονική θύρα COM USB.

Βήμα 5: Δοκιμή

Αφού ανεβάσετε το υλικολογισμικό, αποσυνδέστε το USB και συνδέστε το καλώδιο RX του ESP8266. Θυμηθείτε, χρειαζόμασταν το κανάλι RX του ESP8266 για τη μεταφόρτωση του υλικολογισμικού, οπότε δεν το συνδέσαμε πριν. Τώρα συνδέστε την έξοδο RJ12 στον ψηφιακό μετρητή και επανασυνδέστε το ESP8266 στον υπολογιστή σας.

Στο Arduino IDE, ανοίξτε τη Σειριακή οθόνη μέσω του μενού Εργαλεία και βεβαιωθείτε ότι έχει οριστεί σε 115200 baud. Εάν πρέπει να αλλάξετε το ρυθμό baud, ίσως πρέπει να κλείσετε και να ανοίξετε ξανά το Serial Monitor πριν λειτουργήσει.

Τώρα θα πρέπει να δείτε την έξοδο του κώδικα στη Σειριακή οθόνη. Θα πρέπει να ελέγξετε εάν υπάρχουν μηνύματα σφάλματος. Επίσης, θα πρέπει να μπορείτε να δείτε τα τηλεγραφήματα. Για μένα μοιάζουν με αυτό:

/FLU5 / xxxxxxxx_x

0-0: 96.1.4 (50213) 0-0: 96.1.1 (3153414733313030313434363235) // Σειριακός αριθμός μετρητής δεκαεξαδικός 0-0: 1.0.0 (200831181442S) // Χρονική σήμανση S: θερινή ώρα (καλοκαίρι), W: όχι θερινή ώρα (χειμώνας) 1-0: 1.8.1 (000016.308*kWh) // Συνολική καθαρή κατανάλωση αιχμής 1-0: 1.8.2 (000029.666*kWh) // Συνολική καθαρή κατανάλωση εκτός αιχμής 1-0: 2.8.1 (000138.634*kWh) // Συνολική καθαρή έγχυση αιχμής 1-0: 2.8.2 (000042.415*kWh) // Ολική καθαρή έγχυση εκτός αιχμής 0-0: 96.14.0 (0001) // Τιμολόγιο 1: κορυφή, 2: εκτός αιχμής 1-0: 1.7.0 (00.000*kW) // Τρέχουσα κατανάλωση 1-0: 2.7.0 (00.553*kW) // Ρεύμα έγχυσης 1-0: 32.7.0 (235.8*V) // Φάση 1 τάση 1-0: 52.7.0 (237.0*V) // Φάση 2 τάση 1-0: 72.7.0 (237.8*V) // Φάση 3 τάση 1-0: 31.7.0 (001*A) // Ρεύμα φάσης 1 1-0: 51.7.0 (000*A) // ρεύμα φάσης 2 1-0: 71.7.0 (004*A) // ρεύμα φάσης 3 0-0: 96.3.10 (1) 0-0: 17.0.0 (999.9*kW) // Μέγιστη ισχύς 1-0: 31.4.0 (999*A) // Μέγιστο ρεύμα 0-0: 96.13.0 () // Μήνυμα 0-1: 24.1.0 (003) // άλλες συσκευές στο M-bus 0-1: 96.1.1 (37464C4F32313230313037393338) // Σειριακός αριθμός αερίου mete r δεκαεξαδικό 0-1: 24.4.0 (1) 0-1: 24.2.3 (200831181002S) (00005.615*m3) // Χρονική σήμανση αερίου συνολική κατανάλωση! E461 // CRC16 άθροισμα ελέγχου

Εάν κάτι δεν πάει καλά, μπορείτε να ελέγξετε αν έχετε τις ίδιες ετικέτες και πιθανόν να πρέπει να αλλάξετε τον κώδικα που αναλύει τα τηλεγραφήματα στη λειτουργία readTelegram.

Εάν όλα λειτουργούν, μπορείτε τώρα να τροφοδοτήσετε το esp8266 από το φορτιστή USB.

Εγκαταστήστε την εφαρμογή IoT ThingSpeak Monitor στο smartphone σας, συμπληρώστε το αναγνωριστικό καναλιού και διαβάστε το κλειδί API και τελειώσατε!

Συνιστάται: