Ηλεκτρονικός Μετεωρολογικός Σταθμός
Απλός ηλεκτρονικός μετεωρολογικός σταθμός
Ευάγγελος Λαμπρινίδης 2024
Εισαγωγή
Σε αυτήν τη σελίδα περιγράφεται ένας αυτόματος και ασύρματος ηλεκτρονικός μετεωρολογικός σταθμός, σε μια εξαιρετικά απλή μορφή του. Συλλέγει μετρήσεις για τις μετεωρολογικές παραμέτρους: θερμοκρασία, πίεση και σχετική υγρασία του αέρα και ασύρματα τις μεταδίδει στο διαδίκτυο.
Ενώ ένας μετεωρολογικός σταθμός είναι μια σύνθετη εγκατάσταση με πολλά μετεωρολογικά όργανα για ακριβείς μετρήσεις από κατάλληλο επιστημονικό προσωπικό, εδώ θα παρουσιάσουμε μια υποτυπώδη μορφή του που μπορείτε να δημιουργήσετε με δύο διαφορετικούς τρόπους.
Στην πρώτη μορφή του σταθμού μας (Μετεωρολογικός Σταθμός 1) δεν χρειάζεται να ασχοληθούμε με το υλικό (hardware). Δεν χρειάζεται να συνδέσουμε ούτε ένα καλώδιο, πέρα από ένα καλώδιο USB που χρησιμοποιείται για το προγραμματισμό και -το ίδιο- για την τροφοδοσία.
Στην δεύτερη μορφή του σταθμού μας (Μετεωρολογικός Σταθμός 2) δεν χρειάζεται να ασχοληθούμε με το λογισμικό (software). Δεν χρειάζεται να εγκαταστήσουμε εφαρμογές όπως εργαλεία ανάπτυξης, ούτε να φορτώσουμε βιβλιοθήκες, ούτε να δημιουργήσουμε καν λογισμικό για τον προγραμματισμό της πλακέτας. Ο προγραμματισμός της πλακέτας γίνεται μόνο με αρχείο – το firmware – που βρίσκουμε έτοιμο.
Σε κάθε περίπτωση ο σταθμός μπορεί να κατασκευαστεί σε σχολείο στα πλαίσια της εκπαιδευτικής διαδικασίας και να χρησιμοποιηθεί ως εκπαιδευτικό εργαλείο. Γι’ αυτό έχει χαμηλό κόστος κατασκευής και λειτουργεί με απλό τρόπο αλλά ταυτόχρονα να μπορεί να δεχθεί αλλαγές και να αποκτήσει νέες λειτουργίες στο μέλλον.
Τα μέρη του μετεωρολογικού σταθμού
Ένας μετεωρολογικός σταθμός αποτελείται από τρία μέρη:
- Τους αισθητήρες που μετρούν τα φυσικά μεγέθη που ενδιαφέρουν, δηλαδή τις μετεωρολογικές παραμέτρους. Μπορούν να μετρούν μεταξύ άλλων τη θερμοκρασία του αέρα, την πίεσή του, τη ένταση της ηλιακής ακτινοβολίας ή το βροχομετρικό ύψος.
- Τη μονάδα επεξεργασίας που ενώνει τους αισθητήρες με τα συστήματα διαχείρισης και απεικόνισης. Είναι το “μυαλό” του μετεωρολογικού σταθμού που φροντίζει για τη σωστή ροή της πληροφορίας.
- Τα συστήματα διαχείρισης και απεικόνισης που συλλέγουν και παρουσιάζουν τις μετρήσεις των αισθητήρων, από τον πιο απλό τρόπο όπως μια οθόνη, μέχρι πολύπλοκες υπηρεσίες στο διαδίκτυο.
Αισθητήρες
Εύκολα μπορεί να βρει κανείς πλήθος από ηλεκτρονικούς αισθητήρες που μετρούν διάφορες παραμέτρους όπως για παράδειγμα θερμοκρασία αέρα, πίεση, σχετική υγρασία και ταχύτητά του, στάθμη νερού, ένταση φωτός σε διάφορα μήκη κύματος – όπως UV- ή συγκεντρώσεις διαφόρων αερίων.
Οι αισθητήρες δίνουν τις μετρήσεις τους με διάφορους τρόπους:
- Στους αναλογικούς αισθητήρες κάποια ηλεκτρικά χαρακτηριστικά τους, όπως η αντίσταση, εξαρτώνται από το φυσικό μέγεθος το οποίο μετρούν. Έτσι για παράδειγμα τα θερμίστορ αλλάζουν την αντίστασή τους με τη θερμοκρασία. Συνδέοντας τα θερμίστορ με κατάλληλο τρόπο η μεταβολή της αντίστασής τους προκαλεί μεταβολή σε κάποια τάση που μετρά η μονάδα ελέγχου. Από την τάση προκύπτει η αντίσταση και από αυτήν η θερμοκρασία που έχει το θερμίστορ. Αντίστοιχη συμπεριφορά έχει η φωτοαντίσταση που μετρά την ένταση του φωτός.
- Πιο εύκολοι στη χρήση είναι οι ψηφιακοί αισθητήρες. Αυτοί βρίσκονται σε πλακέτες με έτοιμα κυκλώματα και μεταδίδουν τις μετρήσεις τους απευθείας σε ψηφιακή μορφή. Δεν χρειάζονται επιπλέον πολύπλοκα κυκλώματα για να συνδεθούν με τη μονάδα επεξεργασίας αλλά απαιτούν τη σωστή σύνδεσή τους και το σωστό τρόπο επικοινωνίας -πρωτόκολλο- τόσο σε υλικό όσο και σε λογισμικό. Ένα δημοφιλές πρωτόκολλο που χρησιμοποιούν πολλοί αισθητήρες είναι το Inter-integrated circuit (I2C) και το Serial Peripheral Interface (SPI)
Στον μετεωρολογικό μας σταθμό χρησιμοποιείται ένας φθηνός ψηφιακός και αρκετά αξιόπιστος αισθητήρας, ο BME280 της Bosch Sensortec με τον οποίο η επικοινωνία γίνεται μέσω I2C. Μετρά θερμοκρασία, πίεση και σχετική υγρασία του αέρα.
Μονάδα επεξεργασίας
Η μονάδα επεξεργασίας δεδομένων παίζει κεντρικό ρόλο στο μετεωρολογικό σταθμό, συλλέγει τις μετρήσεις των αισθητήρων και φροντίζει να στέλνονται στα συστήματα που θα καταγράψουν και θα παρουσιάσουν αυτές τις τιμές όπως κάποιες οθόνες ή υπηρεσίες στο internet.
Μπορούμε να χρησιμοποιήσουμε:
- Έναν υπολογιστή desktop ή laptop. Πλεονέκτημα αποτελεί ότι μπορούμε να έχουμε αμέσως στην οθόνη του υπολογιστή την απεικόνιση των μετεωρολογικών παραμέτρων. Επιπλέον ένας παλιός και ξεπερασμένος υπολογιστής μπορεί να ανταπεξέλθει εύκολα στις απαιτήσεις αφού δεν χρειαζόμαστε μεγάλη επεξεργαστική ισχύ. Στα μειονεκτήματα περιλαμβάνεται ότι θα ίσως να χρειαστεί ένα πρωτόκολλο επικοινωνίας σχεδιασμένου για μεγάλες αποστάσεις, μιας και ο αισθητήρας θα είναι μακριά από τον υπολογιστή. Επίσης θα καταναλώνει αρκετή ισχύ και θα πρέπει να είναι και συνέχεια ανοικτός.
- Έναν υπολογιστή μονής πλακέτας όπως το Raspberry Pi. Πρόκειται για έναν μικρό σε δυνατότητες και μέγεθος υπολογιστή που είναι οικονομικός τόσο σε κόστος όσο και σε κατανάλωση ενέργειας, συνδέεται εύκολα με διάφορους αισθητήρες -υποστηρίζει πληθώρα πρωτοκόλλων-, με διάφορες οθόνες και με το διαδίκτυο.
- Μια πλακέτα μικροελεγκτή, όπως το Arduino, το Raspberry Pi Pico το micro:bit ή αντίστοιχες. Οι πλακέτες αυτές διαθέτουν μικροελεγκτή, αντί για μικροεπεξεργαστή. Έτσι δεν έχουν όλες τις δυνατότητες ενός υπολογιστή -συνήθως ούτε καν λειτουργικό σύστημα- μπορούμε όμως να βρούμε ταχύτατους μικροελεγκτές που να να καλύπτουν τις ανάγκες του μετεωρολογικού μας σταθμού. Υποστηρίζουν τα πρωτόκολλα επικοινωνίας με τους αισθητήρες, τις τελευταίες εκδόσεις του WiFi, Bluetooth και πολλές άλλες λειτουργίες.
Στον μετεωρολογικό μας σταθμό, χρησιμοποιείται ως μονάδα επεξεργασίας μια πλακέτα μικροελεγκτή που έχει αρκετή επεξεργαστική ισχύ για ότι χρειαζόμαστε.
Συστήματα Διαχείρισης και Απεικόνισης
Για την απεικόνιση των μετρήσεων των μετεωρολογικών παραμέτρων, την αποθήκευσή τους και την περαιτέρω επεξεργασία τους μπορούμε να χρησιμοποιοήσουμε διάφορους τρόπους:
- Διάφορες οθόνες: οθόνες με γραφικά ή οθόνες χαρακτήρων, με τεχνολογίες OLED, ή LCD , έγχρωμες ή μονόχρωμες είναι κάποιες από τις επιλογές. Επειδή είναι δεδομένο ότι μια οθόνη θα έχει ανθρώπους κοντά της, η απόσταση της οθόνης από τους αισθητήρες είναι κάτι που πρέπει να ληφθεί υπόψη στο σχεδιασμό του μετεωρολογικού σταθμού.
- Μέσα μόνιμης αποθήκευσης δεδομένων όπως κάρτες SD , σκληροί δίσκοι ή SSD. Σε αυτά τα μέσα γίνεται η αποθήκευση των δεδομένων για μετέπειτα επεξεργασία, αν κάτι τέτοιο είναι απαραίτητο.
- Τερματικό. Συνηθίζεται οι πλακέτες μικροελεγκτή καθώς και οι κάποιοι υπολογιστές να στέλνουν και να λαμβάνουν κείμενο μέσω ενός σειριακού διαύλου σε ένα τερματικό. Παλαιότερα τα τερματικά ήταν συσκευές με οθόνη και πληκτρολόγιο που θα μπορούσαμε να συνδέσουμε με τον υπολογιστή του μετωρολογικού σταθού. Σήμερα ένα laptop μπορεί να λειτουργήσει ως τερματικό, να συνδεθεί με το μετεωρολογικό μας σταθμό και να πάρει -ή και να στείλει αν είναι απαραίτητο- δεδομένα.
- Υπηρεσίες στο internet. Αν ο μετεωρολογικός σταθμός συνδέεται στο internet μπορεί να μεταδίδει τις μετρήσεις σε κάποια υπηρεσία που θα αναλάβει να αξιοποιήσει τις μετρήσεις. Οι πλατφόρμες Internet of Things (IoT) είναι σήμερα αρκετά δημοφιλείς και επιτρέπουν σε διάφορες συσκευές (things) μέσα από το internet να στέλνουν και να λαμβάνουν δεδομένα για τη λειτουργία τους. Μια τέτοια πλατφόρμα μπορεί να χρησιμοποιηθεί για την καταγραφή των μετρήσεων, την απεικόνισή τους με διάφορους τρόπους όπως διαγράμματα, μετρητές ή δείκτες και μπορεί ακόμη να δεχθεί κανόνες για να στέλνει ειδοποιήσεις (alarm) σε περιπτώσεις που κρίνεται απαραίτητο.
Ο μετεωρολογικός μας σταθμός συνδέεται στο internet μέσω Wifi. Οι μετεωρολογικές παράμετροι καταγράφονται και παρουσιάζονται στην IoT πλατφόρμα Adafruit IO ( με το δωρεάν πρόγραμμα “Adafruit IO Basic”). Σε αυτήν οι μετρήσεις της θερμοκρασίας, πίεσης και υγρασίας του αέρα καταγράφονται ως Feeds. Υποστηρίζει επίσης τη σχεδίαση σελίδων με γραφήματα και δείκτες (Dashboards) για αποτελεσματικότερη απεικόνιση των μετρήσεων του σταθμού μας.
Μετεωρολογικός σταθμός 1 – χωρίς επιπλέον υλικό
Μια καλή επιλογή είναι η πλακέτα Adafruit ESP32-S2 Feather with BME280 Sensor η οποία έχει το σημαντικό πλεονέκτημα ότι στην ίδια πλακέτα βρίσκεται τόσο ο μικροελεγκτής όσο και ο αισθητήρας.
Η σύνδεση μικρολεγκτή και αισθητήρα έχει γίνει ήδη στην πλακέτα, η επικοινωνία γίνεται μέσω I2C και αυτό μας προσφέρει τα παρακάτω πλεονεκτήματα:
- Δεν χρειάζεται καμία κόλληση, σύνδεση με καλώδια, άλλη πλακέτα (shield, breadboard, perfboard) ούτε κάποια υλοποίηση σε υλικό. Έτσι αποφεύγονται λάθη που θα μπορούσαν να συμβούν συνδέοντας μικροελεγκτή με αισθητήρα.
- Επειδή είναι ήδη γνωστά τα χαρακτηριστικά του αισθητήρα του μικροελεγκτή και της σύνδεσής τους (διευθυνσιοδότηση στο I2C, io pins) ο προγραμματισμός της πλακέτας Feather απλοποιείται. Χρησιμοποιούνται βιβλιοθήκες κώδικα και παραδείγματα από την κατασκευάστρια εταιρία Adafruit.
- Ο μετεωρολογικός σταθμός δεν περιορίζεται από τη σχεδίαση που παρουσιάζεται εδώ. Η πλακέτα Feather διαθέτει κατάλληλες υποδοχές για σύνδεση με άλλους επιπλέον αισθητήρες, κύκλωμα φορτιστή για μπαταρία καθώς και υποστηρίζει πλακέτες επέκτασης (FeatherWings).
Ανάγκη για ανάπτυξη λογισμικού – Μετεωρολογικός σταθμός 1
Η πλακέτα Feather του μετεωρολογικού σταθμού μας υποστηρίζεται από την τεχνολογία WipperSnapper της Adafruit. Με αυτήν την τεχνολογία η πλακέτα προγραμματίζεται με έτοιμο firmware, αναγνωρίζεται αυτόματα από το Adafruit IO και κάθε λειτουργία της υποστηρίζεται στο διαδίκτυο χωρίς να απαιτείται να γραφεί ούτε μια γραμμή κώδικα.
Δυστυχώς αυτή η -πολύ ενδιαφέρουσα κατά τα άλλα – τεχνολογία, στην περίπτωσή μας έχει ένα μεγάλο μειονέκτημα και γι’ αυτό θα την χρησιμοποιήσουμε στην υλοποίηση του Μετεωρολογικού Σταθμού 2. Σε αυτήν την υλοποίηση, επειδή ο μικροελεγκτής είναι συνεχώς συνδεδεμένος στο internet – απαίτηση του WipperSnapper – καταναλώνει μεγάλα ποσά ενέργειας. Το ρεύμα από την τροφοδοσία της είναι συνεχώς της τάξης των 100mA περίπου και έτσι η θερμότητα που εκλύεται θερμαίνει τον αισθητήρα BME280. Επειδή οι μετρήσεις του αισθητήρα δεν είναι έτσι αξιόπιστες, δεν χρησιμοποιείται η τεχνολογία WipperSnapper και χρειάζεται να δημιουργηθεί λογισμικό.
Το λογισμικό αναπτύχθηκε με το Arduino IDE που την υποστηρίζει την Feather. Οι βιβλιοθήκες λογισμικού της Adafruit χρειάστηκαν για τη σύνδεση της πλακέτας με την IoT πλατφόρμα, για την επικοινωνία με τον αισθητήρα καθώς και για τον έλεγχο του πολύχρωμου LED της πλακέτας. Ο κώδικας γράφτηκε στη γλώσσα C++ του Arduino IDE, θα μπορούσε όμως να προγραμματιστεί σε διάφορες άλλες γλώσσες προγραμματισμού που υποστηρίζονται όπως η Python (MicroPython ή Circuit Python).
Για την αποφυγή της θέρμανσης της πλακέτας χρησιμοποιήθηκε μια λειτουργία εξοικονόμησης ενέργειας όπου μειώνεται δραστικά η κατανάλωση ενέργειας και συνεπώς η θερμότητα που εκλύεται. Ο μικροελεγκτής ESP32 μπαίνει σε κατάσταση “deep sleep”, η πλακέτα Feather θέτει εκτός λειτουργίας τον αισθητήρα και τις άλλες συσκευές που μπορεί να είναι συνδεδεμένες σε αυτήν όπως τον αισθητήρα και το πολύχρωμο LED. Σε αυτήν την κατάσταση προγραμματίστηκε να μένει για 10 λεπτά. Μετά από αυτόν τον χρόνο, η πλακέτα “ξυπνά” πάλι, τα δεδομένα συλλέγονται, στέλνονται στο internet, η πλακέτα πέφτει πάλι σε κατάσταση εξοικονόμησης ενέργειας και αυτός ο κύκλος επαναλαμβάνεται συνεχώς.
Ενδεικτικά, η κατανάλωση της πλακέτας σε εξοικονόμηση ενέργειας είναι της τάξης των μA, γίνεται περίπου 40mA όταν ο μικροελεγκτής είναι offline (βήματα 1,2,3) και περίπου 100mA όταν είναι online (βήματα 4,5,6)
Επειδή οι μετρήσεις του αισθητήρα λαμβάνονται αμέσως μόλις “ξυπνήσει” ο μικροελεγκτής, η μικρή θερμότητα που εκλύεται κατά την αποστολή των μετρήσεων μέσα από το WiFi δεν αλλοιώνει τις μετρήσεις. Τα μικρά ποσά θερμότητας που εκπέμπονται από τη λειτουργία της πλακέτας δεν επηρεάζουν τις μετρήσεις του αισθητήρα, καθώς για δέκα λεπτά μετά η πλακέτα πρακτικά μένει σβηστή.
Προγραμματισμός της πλακέτας – Μετεωρολογικός σταθμός 1
Η πλακέτα Feather βρίσκεται στη σελίδα: https://www.adafruit.com/product/5303
Οδηγίες γενικά για τη Feather παρέχονται στη σελίδα: https://learn.adafruit.com/adafruit-esp32-s2-feather ενώ συγκεκριμένα για την εγκατάσταση του Arduino IDE στη σελίδα: https://learn.adafruit.com/adafruit-esp32-s2-feather/arduino-ide-setup
Αρχικά προτείνεται η εγκατάσταση της Feather ESP32 στο Arduino IDE και ο προγραμματισμός της αρχικά έστω και με ένα κενό πρόγραμμα για να είμαστε σίγουροι πως η πλακέτα μπορεί να προγραμματιστεί.
Στη συνέχεια, χρειάζεται η εγκατάσταση των παρακάτω βιβλιοθηκών (libraries) από τον Library Manager του Arduino IDE:
Μετά την εγκατάσταση των βιβλιοθηκών και πριν προγραμματίσουμε την πλακέτα, χρειαζόμαστε 4 μεταβλητές που πρέπει να γνωρίζουμε:
- WIFI_SSID – το SSID του WiFi
- WIFI_PASS – το password του WiFi
- IO_USERNAME – το username του Adafruit IO
- IO_KEY – το password του Adafruit IO
Για τα δύο τελευταία θα πρέπει πρώτα να εγγραφούμε στην υπηρεσία Adafruit IO (χρειάζεται ονοματεπώνυμο και email μόνο).
Η εγγραφή στο Adafruit IO περιγράφεται στη σελίδα:
https://learn.adafruit.com/welcome-to-adafruit-io/getting-started-with-adafruit-io
Έχοντας ήδη εγγραφεί μας δίνονται τα IO_USERNAME και IO_KEY. Αυτά πάντοτε μπορούμε να τα βρούμε πηγαίνοντας στο https://io.adafruit.com/ κάνοντας κλικ στο εικονίδιο:
Αποσυμπιέζουμε τον κώδικα (Sketch) Arduino Sketch weatherStation που φτιάχνει μόνο ένα αρχείο “weatherStation.ino” μέσα σε φάκελλο “weatherStation”.
Ανοίγοντας το Sketch, επιλέγουμε την σωστή πλακέτα (Board) “esp32 > Adafruit Feather ESP32-S2”, τη σωστή θύρα (Port) που έχει συνδεθεί και αντικαθιστούμε στις γραμμές 32-35 τα ################# μέσα στα εισαγωγικά με τις τιμές των μεταβλητών που πλέον γνωρίζουμε.
Κάνοντας upload τον κώδικα η πλακέτα είναι έτοιμη για λειτουργία. Συνδέεται στο internet, στέλνει τα δεδομένα στο Adafruit IO, γράφει στο Serial Monitor, ανάβει το πολύχρωμο LED και έπειτα πέφτει σε deep sleep επαναλαμβάνοντας τον κύκλο μετά από 10 λεπτά.
Λειτουργία της πλακέτας
Εφ’όσον η πλακέτα έχει προγραμματιστεί και λειτουργεί κανονικά, στο Adafruit IO δημιουργείται η κατηγορία Feeds “WeatherStation”.
Εκεί μπορούμε να βρούμε τις τιμές που στέλνονται από την πλακέτα Feather:
Πέρα από τη temperature (θερμοκρασία), pressure (πίεση) και humidity (υγρασία), η τιμή failures δείχνει πόσες φορές η πλακέτα απέτυχε να συνδεθεί στο Adafruit IO για να στείλει τιμές. Είναι ένας μετρητής: αυξάνεται +1 κάθε φορά και στέλνει την τιμή του όταν τελικά καταφέρει να συνδεθεί – η οποία παραμένει η ίδια μέχρι να διακοπεί η τροφοδοσία της Feather ή πατηθεί το κουμπί reset.
Στο περιβάλλον του Adafruit IO μπορούμε να δημιουργήσουμε και Dashboards γα για καλύτερη απεικόνιση των μετρήσεων. Αυτό περιγράφεται στο:
https://learn.adafruit.com/adafruit-io-basics-dashboards
Τα LED της Feather δίνουν πληροφορίες για τη λειτουργία της. Το κόκκινο LED μένει αναμμένο για όσο η Feather είναι αναμμένη. Το πολύχρωμο LED (neopixel) γίνεται μπλε πριν συνδεθεί η πλακέτα στο Adafruit IO, μετά γίνεται άσπρο και στέλνονται τα δεδομένα. Αν η αποστολή γίνει με επιτυχία γίνεται πράσινο, αλλιώς γίνεται κόκκινο – και αυξάνεται ο μετρητής failures όπως αναφέρθηκε παραπάνω. Τα LEDs μένουν για λίγο αναμμένα και στη συνέχεια σβήνουν όταν η Feather μπαίνει σε εξοικονόμηση ενέργειας.
Στην παρακάτω εικόνα η πλακέτα μόλις έστειλε τα δεδομένα με επιτυχία.
Η κατάσταση της πλακέτας φαίνεται και στο τερματικό του Arduino IDE, το Serial Monitor.
Μετεωρολογικός σταθμός 2 – χωρίς επιπλέον λογισμικό
Μια καλή επιλογή για να μη χρειαστεί να γράψουμε ούτε μια γραμμή κώδικα αλλά ούτε και να εγκαταστήσουμε εργαλεία ανάπτυξης λογισμικού στον υπολογιστή μας είναι η πλακέτα Raspberry Pi Pico W σε συνδυασμό με την τεχνολογία Adafruit WipperSnapper.
Η πλακέτα Raspberry Pi Pico W διαθέτει τον ισχυρό μικροελεγκτή RP2040 και μπορεί να συνδεθεί μέσω WiFi με την υπηρεσία Adafruit IO που θα λαμβάνει και θα παρουσιάζει τα δεδομένα.
Εικόνα από: https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html
Αυτό που χρειάζεται είναι να δημιουργήσουμε έναν λογαριασμό στο Adafruit IO (όπως και στον Μετεωρολογικό Σταθμό 1) και να προγραμματίσουμε το Raspberry με το έτοιμο firmware WipperSnapper που θα επικοινωνεί με το Adafruit IO.
WipperSnapper και Adafruit IO – Μετεωρολογικός σταθμός 2
Η εγγραφή στο Adafruit IO περιγράφεται στη σελίδα: https://learn.adafruit.com/welcome-to-adafruit-io/getting-started-with-adafruit-io
Έχοντας ήδη εγγραφεί, πηγαίνοντας στο https://io.adafruit.com/ μπορούμε να ξεκινήσουμε την εγκατάσταση του firmware WipperSnapper στο Raspberry Pi Pico W και τη σύνδεση με την υπηρεσία Adafruit IO .
Η διαδικασία περιγράφεται στο: https://learn.adafruit.com/quick-start-the-pico-w-with-wippersnapper/install-wippersnapper
Η εγκατάσταση του WipperSnapper γίνεται στο βήμα 5 συνδέοντας το Raspberry με το USB ενώ ταυτόχρονα πατάμε το κουμπί BOOTSEL και το Raspberry φαίνεται σαν ένα USB Flash Drive όπου αντιγράφουμε απλά το αρχείο του WipperSnapper που κατεβάσαμε.
Στη συνέχεια, στο βήμα 6 δίνουμε το SSID και το password του WiFi και δημιουργείται ένα αρχείο secrets.json το οποίο αντιγράφουμε πάλι στο Raspberry μόνο που τώρα φαίνεται σαν ένα άλλο USB Flash Drive
Μπορούμε να σιγουρευτούμε για τη σωστή επικοινωνία του Raspberry με το Adafruit IO ελέγχοντας το LED που το Raspberry διαθέτει.
Πηγαίνοντας στο Adafruit IO επιλέγουμε το Device “Raspberry Pi Pico W” , εκεί το “Auto-Config” και μετά το “Magic Config”.
Εντοπίζεται το LED, to επιλέγουμε και με “Auto-Configure Device”
Έτσι στη σελίδα του Device φαίνεται ως Component το LED όπου υπάρχει ένας διακόπτης που μπορεί να ανάβει και να σβήνει το LED.
Τώρα η πλακέτα Raspberry Pi Pico W έχει ήδη συνδεθεί με το Adafruit IO οπότε πρέπει να συνδεθεί με τον αισθητήρα BME280 για να μπορεί να παίρνει τα δεδομένα.
Σύνδεση Αισθητήρα BME280 – Μετεωρολογικός σταθμός 2
Επειδή υπάρχουν διάφορες πλακέτες με τον BME280, θα πρέπει να ξεχωρίσουμε τα 4 pins που πρέπει να συνδέσουμε με καλώδια. Αυτά είναι απαραίτητα για τη σύνδεση μέσω I2C και στην πλακέτα του αισθητήρα θα φαίνονται σαν:
- VCC (ή VDD ή Vin) – η τάση 3,3V για την τροφοδοσία του αισθητήρα. Θα χρησιμοποιήσουμε κόκκινο καλώδιο.
- GND – η γείωση τόσο για την τροφοδοσία όσο και για τα σήματα του I2C. Θα χρησιμοποιήσουμε μαύρο καλώδιο.
- SCL (ή SCK ή SCLK )- ή clock pin για το I2C. Θα χρησιμοποιήσουμε μπλέ καλώδιο.
- SDA (ή SDI )- ή data pin για το I2C. Θα χρησιμοποιήσουμε κίτρινο καλώδιο.
Εχοντας βγάλει την τροφοδοσία από το Raspberry, συνδέουμε με προσοχή τα καλώδια στην πλακέτα του αισθητήρα και στην πλακέτα του Raspberry προσέχοντας τα παρακάτω:
- Το κόκκινο καλώδιο VCC ενώνεται στο Pin36 του Raspberry 3V3 (OUT)
- Το μαύρο καλώδιο GND ενώνεται στο Pin38 του Raspberry ή σε οποιοδήποτε άλλο GND
- Το μπλέ καλώδιο SCL συνδέεται στο Pin7 του Raspberry – είναι το SCL του I2C0.
- Το κίτρινο καλώδιο SDA συνδέεται στο Pin6 του Raspberry – είναι το SDA του I2C0.
(Εικόνα από https://wokwi.com/)
Οι συνδέσεις μπορούν να γίνουν με κολλήσεις ή με κατάλληλα jumper wires εφόσον τόσο η πλακέτα Raspbery όσο και η πλακέτα του BME280 έχουν κατάλληλες υποδοχές (headers).
Τα καλώδια πρέπει να μην έχουν μικρό μήκος, ώστε να εξασφαλίσουμε απόσταση μεταξύ των πλακετών για καλύτερες μετρήσεις, αλλά ούτε και μεγάλο από ότι αντέχει το πρωτόκολλο επικοινωνίας.
Μήκος καλωδίων από 20cm μέχρι και 1m στις περισσότερες περιπτώσεις είναι αποδεκτό, αν και αυτό εξαρτάται από πολλούς παράγοντες όπως το είδος των καλωδίων και η όλη κατασκευή του κλωβού του σταθμού .
Εγκατάσταση Αισθητήρα στο Adafruit IO – Μετεωρολογικός σταθμός 2
Έχουμε καταφέρει μέσω του WipperSnapper την επικοινωνία του Raspbery με το Adafruit IO, έχουμε συνδέσει και με καλώδια τον αισθητήρα στο Raspberry, αυτό που μένει μόνο είναι να ειδοποιήσουμε όλα τα παραπάνω για την ύπαρξη του αισθητήρα και να ρυθμίσουμε τον τρόπο που θα μεταδίδονται οι μετρήσεις.
Ουσιαστικά θα κάνουμε ότι κάναμε παραπάνω για το LED, μόνο που εδώ θα χρειαστεί να ρυθμίσουμε το I2C. Στη σελίδα του Device πάλι κάνουμε κλικ στον μπλε κύκλο με τον άσπρο σταυρό …
…και βρίσκουμε στο “New Component” τον BME280
Επιλέγουμε το μοναδικό -αυτή τη στιγμή- I2C Address που είναι συνήθως 0x77 ή 0x76 και τα δεδομένα που θέλουμε να μεταδίδονται όπως θερμοκρασία σε βαθμούς Κελσίου, σχετική υγρασία σε ποσοστό και ατμοσφαιρική πίεση σε hPa.
Στη συνέχεια, αν όλα πάνε καλά, θα φαίνονται οι μετρήσεις στο Adafruit IO ως “Feeds” και όπως και στην προηγούμενη υλοποίηση μπορούμε τα φτιάξουμε Dashboards για καλύτερη απεικόνιση.
Επίλογος
Συνοψίζοντας, παρουσιάστηκαν δύο λύσεις:
Στην πρώτη λύση η πλακέτα Feather της Adafruit – με τον αισθητήρα BME280 συνδεδεμένο- χρειάστηκε να προγραμματιστεί με κατάλληλο λογισμικό που αναπτύχθηκε στο Arduino IDE. Από την άλλη όμως από υλικό δεν χρειάστηκε τίποτε άλλο πέρα από το καλώδιο USB. Μελλοντικά η πλακέτα Feather του σταθμού μας πρόκειται να αποκτήσει μια νεότερη έκδοση του ESP32, την C6 αντί για την S2 με τον ίδιο όμως αισθητήρα BME280 και το πιο πιθανό είναι ότι το λογισμικό δεν θα χρειαστεί αλλαγές και η λύση θα παραμείνει συνολικά η ίδια.
Στην δεύτερη λύση, η πλακέτα Raspberry Pi Pico W χρειάστηκε να συνδεθεί με την ξεχωριστή πλακέτα του αισθητήρα BME280 με καλώδια. Δεν χρειάστηκε όμως να δημιουργηθεί ξεχωριστό λογισμικό παρά μόνο το έτοιμο firmware WipperSnapper.
Σε καθεμία από τις δύο λύσεις, η επεξεργαστική ισχύς του μικροεπεξεργαστή μαζί με τις δυνατότητες συνδεσιμότητας της πλακέτας μπορούν να υποστηρίξουν επιπλέον αρκετές λειτουργίες όταν χρειαστεί. Για παράδειγμα υπάρχει η δυνατότητα να συνδεθούν οθόνες, πληκτρολόγια, διακόπτες και κουμπιά, επιπλέον αισθητήρες και σύνδεση σε άλλες υπηρεσίες στο cloud.
Ένα σημαντικό μέρος της κατασκευής του σταθμού που δεν καλύφθηκε εδώ είναι η κατασκευή του κλωβού, του κουτιού δηλαδή που θα περικλείει την πλακέτα. Συνήθως χρησιμοποιούνται ξύλινα κουτιά τύπου Stevenson screen. Στην πρώτη λύση εκεί θα μπει η μοναδική πλακέτα Feather, ενώ στη δεύτερη λύση μπορεί εκεί να μπει η πλακέτα του αισθητήρα και σε άλλο ερμητικά κλειστό κουτί η πλακέτα του μικροεπεξεργαστή.
Γενικά όμως επειδή ο μετεωρολογικός μας σταθμός σε κάθε περίπτωση έχει πολύ μικρές διαστάσεις, η κατασκευή ή επιλογή ενός έτοιμου κλωβού απλοποιείται αρκετά.
Καλή επιτυχία στη δημιουργία του μετεωρολογικού σταθμού!