Μετεωρολογικός σταθμός ESP-Now Home: 9 βήματα (με εικόνες)
Μετεωρολογικός σταθμός ESP-Now Home: 9 βήματα (με εικόνες)
Anonim
Μετεωρολογικός σταθμός ESP-Now Home
Μετεωρολογικός σταθμός ESP-Now Home

Wantedθελα να έχω έναν μετεωρολογικό σταθμό στο σπίτι για αρκετό καιρό και έναν που όλοι στην οικογένεια θα μπορούσαν εύκολα να ελέγξουν για θερμοκρασία και υγρασία. Εκτός από την παρακολούθηση των εξωτερικών συνθηκών, ήθελα να παρακολουθώ συγκεκριμένα δωμάτια στο σπίτι, καθώς και το συνεργείο γκαράζ μου. Αυτό θα μας ενημερώσει πότε είναι μια καλή στιγμή για να βγάλουμε αέρα έξω από το σπίτι ή να τρέξουμε τον αφυγραντήρα (βρέχει πολύ εδώ το χειμώνα). Αυτό που δημιούργησα είναι ένα σύστημα αισθητήρων βασισμένο στο ESP-Now που αναφέρει σε έναν τοπικό διακομιστή ιστού τον οποίο ο καθένας μπορεί να ελέγξει από τον υπολογιστή ή το τηλέφωνό του. Για το τηλέφωνο έγραψα ως απλή εφαρμογή Android για να το κάνω ακόμα πιο εύκολο.

Βήμα 1: Λεπτομέρειες σχεδίασης

Λεπτομέρειες σχεδιασμού
Λεπτομέρειες σχεδιασμού

Wantedθελα να έχω διάφορους σταθμούς αισθητήρων που θα μπορούσα να τοποθετήσω σε διαφορετικές τοποθεσίες και να τους αναφέρω πίσω σε έναν κύριο σταθμό (ή κόμβο) που θα εξοικονομούσε τις πληροφορίες. Αφού δοκίμασα διάφορες ιδέες, αποφάσισα να χρησιμοποιήσω το πρωτόκολλο ESP-Now του Espressif, αφού επέτρεπε την ταχεία επικοινωνία απευθείας μεταξύ συσκευών. Μπορείτε να διαβάσετε λίγο για το ESP-Τώρα εδώ και αυτό το repo του GitHub ήταν ένα μεγάλο μέρος της έμπνευσής μου.

Η πρώτη εικόνα δείχνει τη διάταξη του συστήματος. Κάθε αισθητήρας αναφέρει τις μετρήσεις του σε μια συσκευή πύλης η οποία προωθεί τα δεδομένα στον κύριο διακομιστή μέσω ενσύρματης σειριακής σύνδεσης. Ο λόγος για αυτό είναι ότι το πρωτόκολλο ESP-Now δεν μπορεί να είναι ενεργό ταυτόχρονα με τη σύνδεση WIFI. Για να έχει πρόσβαση ένας χρήστης στην ιστοσελίδα, το WIFI θα πρέπει να είναι ενεργοποιημένο ανά πάσα στιγμή και αυτό καθιστά αδύνατη τη χρήση των επικοινωνιών ESP-Now στην ίδια συσκευή. Ενώ η συσκευή πύλης πρέπει να είναι μια συσκευή που βασίζεται σε Espressif (ικανή για ESP-Now), ο κύριος διακομιστής θα μπορούσε να είναι οποιαδήποτε συσκευή ικανή να εκτελέσει μια ιστοσελίδα.

Μερικοί σταθμοί αισθητήρων θα εξαντλήσουν τις μπαταρίες (ή μπαταρίες ηλιακής φόρτισης) και άλλοι θα έχουν απλώς τροφοδοσία ρεύματος. Ωστόσο, ήθελα όλοι να χρησιμοποιούν όσο το δυνατόν λιγότερη ενέργεια και εκεί είναι που η δυνατότητα "deepsleep" που διατίθεται στις συσκευές ESP8266 και ESP32 είναι εξαιρετικά χρήσιμη. Οι σταθμοί αισθητήρων ξυπνούσαν περιοδικά, έπαιρναν μετρήσεις και τους έστελναν στη συσκευή πύλης και ξανακοιμόντουσαν για κάποιο προκαθορισμένο χρονικό διάστημα. Η περίοδος αφύπνισής τους μόνο περίπου 300ms κάθε 5 λεπτά (στην περίπτωσή μου) μειώνει σημαντικά την κατανάλωση ενέργειας.

Βήμα 2: Αισθητήρες

Αισθητήρες
Αισθητήρες
Αισθητήρες
Αισθητήρες

Υπάρχουν διάφοροι αισθητήρες για να επιλέξετε για τη μέτρηση περιβαλλοντικών παραμέτρων. Αποφάσισα να μείνω μόνο με αισθητήρες ικανούς επικοινωνίας I2C, καθώς επέτρεπε γρήγορες μετρήσεις και θα λειτουργούσε σε οποιαδήποτε από τις συσκευές που είχα. Αντί να δουλεύω απευθείας με IC, έψαξα για έτοιμες για χρήση ενότητες που είχαν τα ίδια pin-out για να απλοποιήσω τα σχέδιά μου. Ξεκίνησα θέλοντας μόνο να μετρήσω τη θερμοκρασία και την υγρασία και ως εκ τούτου επέλεξα μια μονάδα που βασίζεται στο SI7021. Αργότερα ήθελα έναν αισθητήρα που θα μπορούσε επίσης να μετρήσει την πίεση και αποφάσισα να δοκιμάσω τις μονάδες αισθητήρων που βασίζονται σε BME280. Για ορισμένες θέσεις ήθελα ακόμη και να παρακολουθώ τα επίπεδα φωτισμού και η μονάδα BH1750 ήταν ιδανική για αυτό ως ξεχωριστή μονάδα αισθητήρα. Αγόρασα τις μονάδες αισθητήρων μου από το ebay και αυτές είναι οι ενότητες που έλαβα:

  • BME280 (GY-BMP/E280), μετρά τη θερμοκρασία, την υγρασία και την πίεση
  • SI7021 (GY-21), μετρά τη θερμοκρασία και την υγρασία
  • BH1750 (GY-302), μετρά το φως

Υπάρχουν δύο στυλ των μονάδων PCB GY-BMP/E280 που μπορείτε να βρείτε. Και οι δύο μοιράζονται την ίδια καρφίτσα για τις καρφίτσες 1 έως 4. Μια μονάδα διαθέτει δύο επιπλέον ακίδες, CSB και SDO. Αυτοί οι δύο ακροδέκτες είναι προ-συνδεδεμένοι στην έκδοση 4 ακίδων της μονάδας. Το επίπεδο του πείρου SDO καθορίζει τη διεύθυνση I2C (Ground = προεπιλογή 0x76, VCC = 0x77). Ο ακροδέκτης CSB πρέπει να είναι συνδεδεμένος στο VCC για να επιλέξετε τη διεπαφή I2C. Προτιμώ τη μονάδα 4 ακίδων, αφού είναι έτοιμη για χρήση όπως είναι για τον σκοπό μου.

Σε γενικές γραμμές, αυτές οι μονάδες είναι πολύ βολικές για χρήση, καθώς έχουν ήδη εγκαταστήσει αντιστάσεις έλξης για τις γραμμές επικοινωνίας και όλες λειτουργούν σε 3.3V, έτσι είναι συμβατές με πλακέτες που βασίζονται σε ESP8266. Σημειώστε ότι οι ακίδες σε αυτά τα IC αισθητήρων δεν είναι γενικά ανεκτές στα 5V, οπότε η άμεση διασύνδεσή τους με κάτι σαν Arduino Uno μπορεί να τους προκαλέσει μόνιμη ζημιά.

Βήμα 3: Σταθμοί αισθητήρων

Σταθμοί αισθητήρων
Σταθμοί αισθητήρων

Όπως αναφέρθηκε, οι σταθμοί αισθητήρων θα ήταν όλοι συσκευές Espressif που θα χρησιμοποιούσαν το πρωτόκολλο επικοινωνίας ESP-Now. Από προηγούμενα έργα και πειραματισμούς, είχα αρκετές διαφορετικές συσκευές στη διάθεσή μου για να πραγματοποιήσω τις αρχικές μου δοκιμές και να τις ενσωματώσω στον τελικό σχεδιασμό. Είχα τις ακόλουθες συσκευές στο χέρι:

  • δύο μονάδες ESP-01
  • δύο μίνι πίνακες ανάπτυξης Wemos D1
  • ένας πίνακας ανάπτυξης Lolin ESP8266
  • μία πλακέτα σειριακού κιτ WIFI ESP12E
  • ένας πίνακας GOOUUU ESP32 (ένας πίνακας ανάπτυξης 38 ακίδων)

Είχα επίσης έναν πίνακα ανάπτυξης Wemos D1 R2, αλλά υπήρχαν προβλήματα με αυτό που δεν του επέτρεπαν να ξυπνήσει από τον βαθύ ύπνο και ως συσκευή πύλης θα χτυπήσει και δεν θα επανεκκινήσει σωστά. Το επισκεύασα αργότερα και έγινε μέρος του προγράμματος ανοίγματος της πόρτας του γκαράζ. Για να λειτουργήσει ο "βαθύς ύπνος", ο πείρος RST του ESP8266 πρέπει να συνδεθεί με τον ακροδέκτη GPIO16, έτσι ώστε ο χρονοδιακόπτης ύπνου να μπορεί να αφυπνίσει τη συσκευή. Ιδανικά, αυτή η σύνδεση θα πρέπει να γίνεται με μια δίοδο Schottky (κάθοδος GPIO16), έτσι ώστε η μη αυτόματη επαναφορά μέσω της σύνδεσης USB-TLL κατά τη διάρκεια του προγραμματισμού να εξακολουθεί να λειτουργεί. Ωστόσο, μια αντίσταση χαμηλής τιμής (300 Ohm) ή ακόμα και άμεση σύνδεση καλωδίου μπορεί να εξακολουθήσει να είναι επιτυχής.

Οι μονάδες ESP-01 δεν επιτρέπουν εύκολη πρόσβαση στον ακροδέκτη GPIO16 και πρέπει να κολλήσετε απευθείας στο IC. Αυτό δεν είναι μια απλή εργασία και δεν θα το συνιστούσα σε όλους. Ο σειριακός πίνακας κιτ ESP12E WIFI ήταν ένα κομμάτι καινοτομίας και απαιτούσε αρκετές αλλαγές για να είναι χρήσιμος για τον σκοπό μου. Οι ευκολότεροι πίνακες για χρήση ήταν οι μίνι πίνακες Wemos D1 και ο πίνακας Lolin. Οι συσκευές ESP32 δεν απαιτούν τροποποιήσεις για να λειτουργήσει ο βαθύς ύπνος. Ο Andreas Spiess έχει μια καλή οδηγία για αυτό.

Βήμα 4: Σταθμός αισθητήρων ESP-01

Σταθμός αισθητήρων ESP-01
Σταθμός αισθητήρων ESP-01
Σταθμός αισθητήρων ESP-01
Σταθμός αισθητήρων ESP-01
Σταθμός αισθητήρων ESP-01
Σταθμός αισθητήρων ESP-01

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

Οι πλακέτες ESP-01 είναι πολύ συμπαγείς και έχουν λίγες ψηφιακές ακίδες IO για να λειτουργήσουν, αλλά είναι αρκετές για τη διεπαφή I2C. Ωστόσο, οι πίνακες απαιτούν μια δύσκολη τροποποίηση για να λειτουργήσει ο "βαθύς ύπνος". Στη φωτογραφία που εμφανίζεται, ένα σύρμα συγκολλήθηκε από τον γωνιακό πείρο (GPIO16) στον πείρο RST στην κεφαλίδα. Το σύρμα που χρησιμοποίησα είναι μονωμένο σύρμα "επισκευής" διαμέτρου 0,1 mm. Η επίστρωση μόνωσης λιώνει κατά τη θέρμανση, επομένως μπορεί να συγκολληθεί για να επισκευάσει ίχνη κλπ σε PCB και να μην ανησυχείτε για τη δημιουργία σορτς όπου το καλώδιο έρχεται σε επαφή με άλλα εξαρτήματα. Το μέγεθός του καθιστά δύσκολη την εργασία και κόλλησα αυτό το σύρμα στη θέση του κάτω από ένα μικροσκόπιο (στυλ συλλεκτών χόμπι/σφραγίδων). Λάβετε υπόψη ότι η κεφαλίδα στη δεξιά πλευρά έχει απόσταση ακίδων 0,1 "(2,54 mm). Η εγκατάσταση μιας δίοδος Schottky εδώ δεν θα ήταν καθόλου εύκολη, οπότε αποφάσισα να δοκιμάσω μόνο το καλώδιο και οι δύο μονάδες λειτουργούν για πάνω ένα μήνα χωρίς προβλήματα.

Οι μονάδες εγκαταστάθηκαν σε δύο πίνακες πρωτοτύπων που δημιούργησα. Το ένα (#1) είναι μια πλακέτα προγραμματιστή που επιτρέπει επίσης την εγκατάσταση και δοκιμή μονάδων I2C, ενώ η άλλη (#2) είναι μια πλακέτα ανάπτυξης/δοκιμής για συσκευές I2C. Για τον πρώτο πίνακα κόλλησα μαζί μια παλιά αρσενική υποδοχή USB και ένα μικρό PCB για να τροφοδοτήσω τη μονάδα απευθείας από έναν προσαρμογέα τοίχου USB. Η άλλη μονάδα διαθέτει κανονική υποδοχή DC τροποποιημένη ώστε να ταιριάζει στην κεφαλίδα του βιδωτού ακροδέκτη και τροφοδοτείται επίσης μέσω προσαρμογέα τοίχου.

Το σχηματικό δείχνει πώς συνδέονται και πώς λειτουργεί ο προγραμματιστής. Δεν έχω άλλες μονάδες ESP-01, οπότε δεν είχα άμεση ανάγκη για προγραμματιστή. Στο μέλλον πιθανότατα θα φτιάξω PCB για αυτούς. Και οι δύο αυτοί πίνακες έχουν εγκατεστημένη τη μονάδα αισθητήρα SI7021 καθώς δεν με ενδιέφεραν τόσο οι μετρήσεις πίεσης σε αυτές τις θέσεις.

Βήμα 5: Σειριακός σταθμός αισθητήρα ESP 12E Serial WIFI

ESP 12E Serial WIFI Kit Sensor Station
ESP 12E Serial WIFI Kit Sensor Station
ESP 12E Serial WIFI Kit Sensor Station
ESP 12E Serial WIFI Kit Sensor Station

Ο πίνακας ESP12E Serial WIFI Kit δεν προοριζόταν τόσο για ανάπτυξη όσο για την προβολή του τι θα μπορούσε να γίνει με αυτήν τη συσκευή. Το αγόρασα πολύ καιρό πριν για να μάθω λίγα λόγια για τον προγραμματισμό ESP8266 και τελικά αποφάσισα να του δώσω κάποια νέα χρήση. Αφαίρεσα όλα τα LED που ήταν εγκατεστημένα για επιδείξεις και πρόσθεσα μια κεφαλίδα προγραμματισμού USB καθώς και μια κεφαλίδα I2C κατάλληλη για τις μονάδες που χρησιμοποιώ. Είχε μια αντίσταση φωτογραφίας CdS συνδεδεμένη με την αναλογική καρφίτσα εισόδου και αποφάσισα να την αφήσω εκεί. Αυτή η συγκεκριμένη μονάδα επρόκειτο να παρακολουθήσει το συνεργείο μου στο γκαράζ και ο αισθητήρας φωτογραφιών που είχε ήταν αρκετός για να με ενημερώσει εάν τα φώτα είχαν αναφλεγεί κατά λάθος. Για τη μέτρηση του φωτός κανονικοποίησα τις ενδείξεις για να μου δώσει ένα ποσοστό επίδοσης και οτιδήποτε πάνω από το "5" τη νύχτα σήμαινε ότι τα φώτα είχαν μείνει αναμμένα ή μια πόρτα στο σπίτι δεν ήταν σωστά κλειστή. Οι ακίδες RST και GPIO16 επισημαίνονται με σαφήνεια στο PCB και η δίοδος Schottky που τις συνδέει εγκαταστάθηκε στην κάτω πλευρά του PCB. Τροφοδοτείται μέσω σειριακής πλακέτας USB που συνδέεται απευθείας σε φορτιστή τοίχου USB. Έχω επιπλέον αυτές τις σειριακές πλακέτες USB και δεν τις χρειάζομαι αυτήν τη στιγμή.

Δεν έκανα ένα σχηματικό σχέδιο για αυτόν τον πίνακα και γενικά δεν συνιστώ να αγοράσετε ένα για χρήση για αυτόν τον σκοπό. Οι πλακέτες Wemos D1 Mini είναι πολύ πιο κατάλληλες και θα συζητηθούν στη συνέχεια. Αν και, αν έχετε ένα από αυτά και χρειάζεστε συμβουλές, θα χαρώ να βοηθήσω.

Βήμα 6: Μίνι σταθμοί αισθητήρων D1

Μίνι σταθμοί αισθητήρων D1
Μίνι σταθμοί αισθητήρων D1
Μίνι σταθμοί αισθητήρων D1
Μίνι σταθμοί αισθητήρων D1
Μίνι σταθμοί αισθητήρων D1
Μίνι σταθμοί αισθητήρων D1

Ο τύπος Wemos D1 Mini των πλακετών ανάπτυξης ESP8266 είναι οι προτιμώμενοι για χρήση και αν έπρεπε να το κάνω ξανά, θα τα χρησιμοποιούσα. Έχουν μεγάλο αριθμό προσβάσιμων ακίδων IO, μπορούν να προγραμματιστούν απευθείας μέσω του Arduino IDE και εξακολουθούν να είναι αρκετά συμπαγείς. Ο πείρος D0 είναι GPIO16 σε αυτούς τους πίνακες και η σύνδεση μιας διόδου Schottky είναι αρκετά εύκολη. Το σχηματικό δείχνει πώς έχω συνδέσει αυτές τις σανίδες και οι δύο χρησιμοποιούν τη μονάδα αισθητήρα BME2808.

Ο ένας από τους δύο πίνακες χρησιμοποιείται για την παρακολούθηση του εξωτερικού καιρού και λειτουργεί από μπαταρία ηλιακής ενέργειας. Ένας ηλιακός πίνακας 165mm x 135mm (6V, 3.5W) συνδέεται με μια μονάδα φόρτισης μπαταριών ιόντων λιθίου TP4056 (ανατρέξτε στο διάγραμμα ρύθμισης σταθμού αισθητήρα μπαταρίας με ηλιακή ενέργεια). Αυτή η συγκεκριμένη μονάδα φόρτισης (03962A) διαθέτει ένα κύκλωμα προστασίας μπαταρίας το οποίο είναι απαραίτητο εάν η μπαταρία (πακέτο) δεν περιέχει ένα. Η μπαταρία ιόντων λιθίου ανακυκλώθηκε από μια παλιά μπαταρία φορητού υπολογιστή και μπορεί ακόμα να κρατήσει αρκετή φόρτιση για να λειτουργήσει ο πίνακας D1 Mini, ειδικά με ενεργοποιημένο το βαθύ ύπνο. Ο πίνακας τοποθετήθηκε σε ένα πλαστικό περίβλημα για να διατηρείται κάπως ασφαλής από τα στοιχεία. Ωστόσο, για να εκτεθεί το εσωτερικό στην εξωτερική θερμοκρασία και υγρασία, ανοίχτηκαν δύο οπές διαμέτρου 25mm σε αντίθετες πλευρές και καλύφθηκαν (από μέσα) με μαύρο πανί τοπίου. Το ύφασμα έχει σχεδιαστεί για να επιτρέπει τη διείσδυση της υγρασίας και έτσι μπορεί να μετρηθεί η υγρασία. Στο ένα άκρο του περιβλήματος έγινε μια μικρή τρύπα και τοποθετήθηκε ένα διάφανο πλαστικό παράθυρο. Εδώ τοποθετήθηκε η μονάδα αισθητήρα φωτός BH1750. Ολόκληρη η μονάδα τοποθετείται σε εξωτερικούς χώρους υπό σκιά (όχι απευθείας στον ήλιο) με τον αισθητήρα φωτός να δείχνει προς τα έξω. Λειτουργεί από την ηλιακή μπαταρία για σχεδόν 4 εβδομάδες στον βροχερό/θολό χειμωνιάτικο καιρό εδώ.

Βήμα 7: Gateway και Webserver

Gateway και Webserver
Gateway και Webserver
Gateway και Webserver
Gateway και Webserver
Gateway και Webserver
Gateway και Webserver

Χρησιμοποιήθηκε ένας πίνακας Lolin NodeMCU V3 (ESP8266) για τη συσκευή ESP-Now Gateway και ένας ESP32 (πίνακας GOOUUU) για τον διακομιστή ιστοσελίδων. Σχεδόν κάθε πίνακας ESP8266 ή ακόμα και ESP32 θα μπορούσε να χρησιμεύσει ως συσκευή πύλης, αυτός ήταν απλώς ο πίνακας που μου είχε «μείνει» αφού χρησιμοποίησα όλους τους άλλους πίνακες που είχα.

Χρησιμοποίησα τον πίνακα ESP32 αφού χρειάζομαι έναν πίνακα με λίγο περισσότερη υπολογιστική ισχύ για να συλλέξω τα δεδομένα, να τα ταξινομήσω, να τα αποθηκεύσω στην αποθήκευση και να τρέξω τον διακομιστή ιστού. Στο μέλλον μπορεί επίσης να έχει τον δικό του αισθητήρα και μια τοπική (OLED) οθόνη. Για αποθήκευση χρησιμοποιήθηκε κάρτα SD με προσαρμοσμένο προσαρμογέα. Χρησιμοποίησα έναν κοινό προσαρμογέα κάρτας microSD σε SD και κόλλησα μια επικεφαλίδα 7 ακίδων (0,1 pitch) στις επιμεταλλωμένες επαφές. Ακολούθησα τις συμβουλές αυτού του GitHub για να πραγματοποιήσω τις συνδέσεις.

Η ρύθμιση πρωτοτύπων (με καλώδια Dupont) δεν περιλαμβάνει μονάδα αισθητήρα, αλλά το τελικό PCB που σχεδίασα επιτρέπει μια, καθώς και μια μικρή οθόνη OLED. Λεπτομέρειες για το πώς σχεδίασα αυτό το PCB αποτελούν μέρος ενός διαφορετικού Instructable.

Βήμα 8: Λογισμικό

Λογισμικό
Λογισμικό

ESP8266 (ESP-NOW) Συσκευές

Το λογισμικό για όλες τις συσκευές γράφτηκε χρησιμοποιώντας το Arduino IDE (v1.87). Κάθε σταθμός αισθητήρων εκτελεί ουσιαστικά τον ίδιο κωδικό. Διαφέρουν μόνο σε ποιες ακίδες χρησιμοποιούνται για τις επικοινωνίες I2C και σε ποια μονάδα αισθητήρα είναι συνδεδεμένες. Το πιο σημαντικό είναι ότι στέλνουν το ίδιο πακέτο δεδομένων μέτρησης στον σταθμό ESP-Now Gateway, ανεξάρτητα από το αν έχουν τον ίδιο αισθητήρα. Αυτό σημαίνει ότι ορισμένοι σταθμοί αισθητήρων θα συμπληρώνουν εικονικές τιμές για τις μετρήσεις της πίεσης και του επιπέδου φωτός, εάν δεν διαθέτουν αισθητήρες για την παροχή πραγματικών τιμών. Ο κωδικός για κάθε σταθμό και την πύλη προσαρμόστηκε από τα παραδείγματα του Anthony Elder σε αυτό το GitHub.

Ο κωδικός συσκευής πύλης χρησιμοποίησε το SoftwareSerial για να επικοινωνήσει με τον διακομιστή ιστού, καθώς το ESP8266 διαθέτει μόνο ένα πλήρως λειτουργικό υλικό UART. Λειτουργώντας με μέγιστο ρυθμό baud 9600 φαίνεται αρκετά αξιόπιστο και είναι υπεραρκετό για την αποστολή αυτών των σχετικά μικρών πακέτων δεδομένων. Η συσκευή πύλης είναι επίσης προγραμματισμένη με ιδιωτική διεύθυνση MAC. Ο λόγος για αυτό είναι εάν χρειάζεται αντικατάσταση, τότε οι σταθμοί αισθητήρων δεν χρειάζεται όλοι να επαναπρογραμματιστούν με τη νέα διεύθυνση MAC παραλήπτη.

ESP32 (Διακομιστής Ιστού)

Κάθε σταθμός αισθητήρων στέλνει το πακέτο δεδομένων του στη συσκευή πύλης που το προωθεί στον διακομιστή ιστού. Μαζί με το πακέτο δεδομένων, η διεύθυνση MAC του σταθμού αισθητήρων αποστέλλεται επίσης για την αναγνώριση κάθε σταθμού. Ο διακομιστής ιστού διαθέτει έναν πίνακα "αναζήτησης" για τον προσδιορισμό της θέσης του κάθε αισθητήρα και ταξινομεί ανάλογα τα δεδομένα. Το χρονικό διάστημα μεταξύ των μετρήσεων ορίστηκε στα 5 λεπτά συν έναν τυχαίο συντελεστή για να αποφευχθεί η σύγκρουση αισθητήρων μεταξύ τους κατά την αποστολή στη συσκευή της πύλης.

Ο δρομολογητής WIFI του σπιτιού ορίστηκε για να εκχωρήσει μια σταθερή διεύθυνση IP στον διακομιστή ιστού όταν συνδέεται στο WIFI. Για το δικό μου ήταν 192.168.1.111. Η πληκτρολόγηση αυτής της διεύθυνσης σε οποιοδήποτε πρόγραμμα περιήγησης θα συνδεθεί με τον διακομιστή ιστού του μετεωρολογικού σταθμού, εφόσον ο χρήστης βρίσκεται εντός της εμβέλειας WIFI (και συνδέεται) με το οικιακό δίκτυο. Όταν ο χρήστης συνδέεται με την ιστοσελίδα, ο διακομιστής ιστού απαντά με έναν πίνακα των μετρήσεων και περιλαμβάνει το χρόνο της τελευταίας μέτρησης κάθε αισθητήρα. Με αυτόν τον τρόπο, εάν ένας σταθμός αισθητήρων δεν ανταποκρίνεται, μπορεί να το δει από τον πίνακα εάν η ανάγνωση είναι μεγαλύτερη από 5-6 λεπτά.

Τα δεδομένα αποθηκεύονται σε μεμονωμένα αρχεία κειμένου σε κάρτα SD και μπορούν επίσης να ληφθούν από την ιστοσελίδα. Μπορεί να εισαχθεί στο Excel ή σε οποιαδήποτε άλλη εφαρμογή για τη σχεδίαση δεδομένων

Εφαρμογή Android

Για να είναι πιο εύκολη η προβολή των τοπικών πληροφοριών για τον καιρό σε ένα smartphone, δημιούργησα μια σχετικά Android εφαρμογή χρησιμοποιώντας το Android Studio. Είναι διαθέσιμο στη σελίδα μου στο GitHub εδώ. Χρησιμοποιεί την κλάση προβολής ιστοσελίδων για τη φόρτωση της ιστοσελίδας από τον διακομιστή και ως περιορισμένη λειτουργικότητα. Δεν είναι σε θέση να κατεβάσει τα αρχεία δεδομένων και δεν είχα καμία ανάγκη για αυτά στο τηλέφωνό μου ούτως ή άλλως.

Βήμα 9: Αποτελέσματα

Αποτελέσματα
Αποτελέσματα

Τέλος, εδώ είναι μερικά αποτελέσματα για τον μετεωρολογικό σταθμό στο σπίτι μου. Τα δεδομένα μεταφορτώθηκαν σε φορητό υπολογιστή και σχεδιάστηκαν στο Matlab. Επισυνάπτω τα σενάρια μου Matlab και μπορείτε επίσης να τα εκτελέσετε σε GNU Octave. Ο εξωτερικός αισθητήρας λειτουργεί με μπαταρία ηλιακής φόρτισης για σχεδόν 4 εβδομάδες και σπάνια έχουμε ήλιο αυτή την εποχή του χρόνου. Μέχρι στιγμής όλα λειτουργούν καλά και όλοι στην οικογένεια μπορούν να αναζητήσουν τον καιρό μόνοι τους αντί να με ρωτήσουν τώρα!

Συνιστάται: