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

Μετεωρολογικός Σταθμός Inky_pHAT: 5 Βήματα
Μετεωρολογικός Σταθμός Inky_pHAT: 5 Βήματα

Βίντεο: Μετεωρολογικός Σταθμός Inky_pHAT: 5 Βήματα

Βίντεο: Μετεωρολογικός Σταθμός Inky_pHAT: 5 Βήματα
Βίντεο: Παρουσίαση μετεωρολογικού σταθμού Bresser 7-in-1 Solar WLAN 4CAST - Mέρος 2 2024, Ιούλιος
Anonim
Μετεωρολογικός Σταθμός Inky_pHAT
Μετεωρολογικός Σταθμός Inky_pHAT
Μετεωρολογικός Σταθμός Inky_pHAT
Μετεωρολογικός Σταθμός Inky_pHAT
Μετεωρολογικός Σταθμός Inky_pHAT
Μετεωρολογικός Σταθμός Inky_pHAT
Μετεωρολογικός Σταθμός Inky_pHAT
Μετεωρολογικός Σταθμός Inky_pHAT

Εδώ θα ήθελα να περιγράψω έναν πολύ απλό και συμπαγή, μετεωρολογικό σταθμό Raspberry Pi Zero, ο οποίος εμφανίζει τις τιμές που μετρώνται από έναν αισθητήρα θερμοκρασίας/πίεσης/υγρασίας BME280 σε οθόνη Pimoroni Inky pHAT e-paper/e-ink. Για να επιτραπεί η σύνδεση των αισθητήρων και του pHAT στο GPIO του Pi I τοποθέτησα ένα χάκερ Pimorini Pico HAT με δύο γυναικείες κεφαλίδες προσαρτημένες μεταξύ του GPIO και της οθόνης. Η συσκευή έχει χρησιμοποιηθεί για τη σύνδεση πολλών αισθητήρων, οπότε η έκδοση BME280 που περιγράφεται εδώ είναι μόνο ένα παράδειγμα.

Σε αντίθεση με τις οθόνες LCD, οι οθόνες e-ink διατηρούν την εικόνα ακόμη και αν η τροφοδοσία είναι απενεργοποιημένη. Επομένως, είναι μια πολύ καλή λύση εάν θέλετε να εμφανίζετε πληροφορίες που ενημερώνονται κατά καιρούς, ειδικά για την κατασκευή συσκευών χαμηλής κατανάλωσης ενέργειας. Το κύριο πλεονέκτημα της μονόχρωμης/μαύρης έκδοσης του Inky pHAT είναι ότι η ενημέρωση της οθόνης διαρκεί μόλις ένα δευτερόλεπτο, αντί για δέκα έως δεκαπέντε δευτερόλεπτα που απαιτούνται από τις τρεις έγχρωμες εκδόσεις. Δείτε ταινία.

Η βιβλιοθήκη Blinka του Adafruit επιτρέπει την εκτέλεση κώδικα Circuit Python στο Raspberry Pi, και δείγματα Circuit Python για μεγάλη ποικιλία αισθητήρων είναι διαθέσιμα από το Adafruit. Μια λεπτομερής περιγραφή του τρόπου εγκατάστασης του Blinka και των κωδικών Circuit Python μπορείτε να βρείτε στον ιστότοπο του Adafruit. Οι βιβλιοθήκες που έχω δοκιμάσει μέχρι τώρα (BMP280, BME280, TSL2591, TCS34785, VEML7065,…) δούλευαν πολύ καλά, ενώ υπήρχαν μικρά προβλήματα σε μερικούς από τους κωδικούς παραδείγματος.

Το BME280 είναι ένας αισθητήρας για τη μέτρηση της θερμοκρασίας, της υγρασίας και της ατμοσφαιρικής πίεσης. Το BMP280 breakouts είναι διαθέσιμο από πολλούς προμηθευτές, συμπεριλαμβανομένου του Adafruit, αλλά εγώ εδώ χρησιμοποιούσα μια φθηνή κινεζική έκδοση. Λάβετε υπόψη ότι αυτές χρησιμοποιούν διαφορετικές διευθύνσεις i2c (Adafruit: 0x77, άλλες: 0x76).

Το ξεμπλοκάρισμα συνδέεται με το Pi μέσω i2c και η ανάγνωση του αισθητήρα είναι πολύ απλή χρησιμοποιώντας τη βιβλιοθήκη και τον κώδικα παραδείγματος.

Βήμα 1: Υλικά που χρησιμοποιούνται

Υλικά που χρησιμοποιούνται
Υλικά που χρησιμοποιούνται
Υλικά που χρησιμοποιούνται
Υλικά που χρησιμοποιούνται
Υλικά που χρησιμοποιούνται
Υλικά που χρησιμοποιούνται
Υλικά που χρησιμοποιούνται
Υλικά που χρησιμοποιούνται

Ένα Raspberry Pi Zero, με μια ανδρική κεφαλίδα προσαρτημένη. Αλλά οποιαδήποτε έκδοση Raspberry Pi θα έκανε.

Ένα Pimoroni Inky pHAT, μαύρη/μονόχρωμη έκδοση, 25 € | 22 £ | 20US $, στο Pimoroni.

Χάκερ Pimoroni Pico HAT, 2,50 € | 2 £, με δύο γυναικείες κεφαλίδες προσαρτημένες, μία από αυτές ενισχυτική κεφαλίδα με μακρύτερες καρφίτσες. Έχω δημιουργήσει δύο διαφορετικές εκδόσεις, δείτε την περιγραφή παρακάτω.

Ένα BME280 ξεμπλοκάρισμα, AZ Delivery μέσω Amazon.de @ 7,50 €, με επισυναπτόμενη κεφαλίδα.

Καλώδια άλματος επιμήκυνσης

Προαιρετικός:

Ένα πακέτο τροφοδοσίας USB, για εφαρμογές για κινητά

Περίβλημα για το Pi ή τη συσκευή (δεν φαίνεται εδώ)

Βήμα 2: Συναρμολόγηση

Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
  • Συγκολλήστε τις γυναίκες κεφαλίδες στον χάκερ Pico HAT. Πριν από τη συγκόλληση, ελέγξτε για σωστό προσανατολισμό. Έχω δημιουργήσει δύο εκδόσεις αυτού, για διαφορετικούς σκοπούς. Μία με την επικεφαλίδα ενίσχυσης προς τα κάτω τοποθετημένη στην πρώτη σειρά και μια κανονική, επάνω/στραμμένη κεφαλίδα στην πίσω σειρά, και μια έκδοση με την επικεφαλίδα ενίσχυσης προς τα κάτω στην πίσω σειρά, και μια γυναικεία κεφαλίδα δεξιάς γωνίας στην πρώτη σειρά Το Δείτε εικόνες. Η πρώτη έκδοση επιτρέπει τη σύνδεση και την ανταλλαγή αισθητήρων και καλωδίων πολύ εύκολα, ενώ η έκδοση με την κεφαλίδα προς τα μέσα επιτρέπει την ενσωμάτωση Pi, αισθητήρα και Inky pHAT σε ένα περίβλημα. Εναλλακτικά, μπορείτε να κολλήσετε τα καλώδια που συνδέουν το GPIO και τον αισθητήρα απευθείας στο χάκερ Pico HAT και/ή να κολλήσετε το χάκερ Pico HAT απευθείας στις ακίδες GPIO. Σε κάθε περίπτωση χρησιμοποιήστε την ελάχιστη ποσότητα συγκόλλησης που απαιτείται.
  • Συγκολλήστε την κεφαλίδα στον αισθητήρα, εάν απαιτείται.
  • Στοιβάξτε την τροποποιημένη μονάδα χάκερ Pico HAT στο Pi και, στη συνέχεια, προσθέστε το μελάνι pHAT. Εάν απαιτείται, εισαγάγετε κάποια υποστήριξη, π.χ. Ένα μπλοκ αφρού ή stand-off, για το μελάνι pHAT.
  • Συνδέστε τα καλώδια και τον αισθητήρα, χρησιμοποιώντας τις θύρες 3V, GND, SDA και SCL. Δεν θα επιβιώσουν όλοι οι αισθητήρες 5V, οπότε ελέγξτε πριν τους συνδέσετε σε θύρες 5V.
  • Εγκαταστήστε τη βιβλιοθήκη Blinka και, στη συνέχεια, εγκαταστήστε τη βιβλιοθήκη Circuit Python BME280 από το Adafruit.
  • Εγκαταστήστε τη βιβλιοθήκη Inky pHAT από το Pimoroni.
  • Εγκαταστήστε το παράδειγμα κώδικα Python που περιγράφεται σε μεταγενέστερο βήμα και επισυνάπτεται σε αυτό το οδηγό.
  • Εκτελέστε τον κώδικα.

Βήμα 3: Χρήση της συσκευής

Χρήση της Συσκευής
Χρήση της Συσκευής

Υπάρχουν δύο επιλογές για τη χρήση της συσκευής.

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

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

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

Χρησιμοποιώντας μηδενικό W, μπορείτε όχι μόνο να εμφανίσετε τις τιμές στην οθόνη, αλλά και να τις στείλετε σε διακομιστή ή στον ιστότοπό σας μέσω WLAN, όπως περιγράφεται αλλού.

Βήμα 4: Το σενάριο BME280

Το σενάριο BME280
Το σενάριο BME280

Όπως αναφέρθηκε προηγουμένως, πρέπει να εγκαταστήσετε τις βιβλιοθήκες Adafruit Blinka και Circuit Python BME280 καθώς και τη βιβλιοθήκη Pimoroni Inky pHAT.

Ο κώδικας αρχικοποιεί αρχικά τον αισθητήρα και το μελάνι pHAT, στη συνέχεια διαβάζει τις τιμές θερμοκρασίας, πίεσης και υγρασίας από τον αισθητήρα και τις εμφανίζει στην οθόνη και στην οθόνη e-ink. Χρησιμοποιώντας την εντολή time.sleep (), γίνονται μετρήσεις κάθε λεπτό. Ρυθμίστε όπως απαιτείται. Ορίζοντας μια παράμετρο γλώσσας, μπορείτε να αλλάξετε τη γλώσσα που χρησιμοποιείται για την εμφάνιση των αποτελεσμάτων.

Χρησιμοποιώντας την οθόνη Inky pHAT e-ink, δημιουργείτε πρώτα την εικόνα που θα εμφανίζεται στη μνήμη πριν τελικά μεταφερθεί στην οθόνη χρησιμοποιώντας την εντολή inkyphat.show (). Η βιβλιοθήκη Inky pHAT απλοποιεί τη διαδικασία, προσφέροντας εντολές για σχεδίαση και μορφοποίηση κειμένου, γραμμών, ορθογωνίων, κύκλων ή χρήσης εικόνων φόντου.

Εκτός από τις μετρημένες τιμές, εμφανίζεται και ο χρόνος μέτρησης.

Λάβετε υπόψη ότι το σενάριο καθώς και οι βιβλιοθήκες είναι γραμμένες σε Python 3, οπότε ανοίξτε και εκτελέστε χρησιμοποιώντας Py3 IDLE ή ισοδύναμο.

# Ένα σενάριο για τον αισθητήρα θερμοκρασίας/πίεσης/υγρασίας bme280 (έκδοση εκτός Adafruit) # και το μελάνι pHAT - μαύρη έκδοση # # έκδοση Δεκ 01 2018, Dr H # # Απαιτεί βιβλιοθήκες Adafruit Blinka και Circuit Python BME280 # και το Pimoroni Inky pHAT βιβλιοθήκη εισαγωγή χρόνου εισαγωγής ημερομηνίας εισαγωγής πίνακα εισαγωγής busio από adafruit_bme280 εισαγωγή Adafruit_BME280 από adafruit_bme280 import Adafruit_BME280_I2C εισαγωγή inkyphat sys εισαγωγής από PIL εισαγωγή ImageFont inkyphat.set_colour ('black') # για b/w inky phat inky 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Select standard font font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Select standard font font # lang = "DE" # set parameter language, προεπιλογή ("") -> αγγλικά lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, διεύθυνση = 0x76) # προεπιλεγμένη διεύθυνση i2c (για Adafruit BMP280) 0x77 (προεπιλογή), 0x76 για κινέζικο ξεμπλοκάρισμα) # απαιτείται πίεση αναφοράς # απαιτείται για al υπολογισμός τίτλου, προσαρμόστε. Τυπική τιμή 1013,25 hPa # χειροκίνητη είσοδος: #reference_hPa = είσοδος ("Εισαγάγετε πίεση αναφοράς σε hPa:") # ή # ορίστε την πίεση κατά την έναρξη ως αναφορά, π.χ. για χρόνο μέτρησης σχετικού ύψους. ύπνος (1) # περιμένετε ένα δευτερόλεπτο πριν από την 1η μέτρηση j = 0 pres_norm_sum = 0 ενώ το j στην περιοχή (5): # λάβετε πέντε μετρήσεις για να ορίσετε την τιμή αναφοράς pres_norm_sum = pres_norm_sum + bmp. πίεση j = j + 1 time.sleep (1) reference_hPa = (pres_norm_sum/j) # ορίστε την αρχική μέτρηση ως σημείο αναφοράς για να ενεργοποιήσετε τις μετρήσεις ύψους bmp.sea_level_pressure = float (reference_hPa) print () while True: #rruns forever, τροποποιήστε για crontab-έκδοση # μετρημένη τιμές t = bmp.temperature p = bmp.pressure h = bmp.humidity a = bmp.altitude # υπολογισμένες από τη βιβλιοθήκη adafruit από πίεση #timestamp ts = datetime.datetime.now () # timestamp ts0_EN = '{:%Y-% m-%d} '. format (ts) # timestamp - date, EN format ts0_DE =' {:%d.%m.%Y} '. format (ts) # timestamp - ημερομηνία, γερμανική μορφή ts1 =' {: %H:%M:%S} '. Format (ts) # timestamp - time tmp = "{0: 0.1f}". Format (t) pre = "{0: 0.1f}". Format (p) hyg = "{0: 0.1f}". Format (h) alt="{0: 0.1f}". Format (a) tText = "Temp.:" pText_EN = "Πίεση:" pText_DE = "Luftdruck:" h Text_EN = "Υγρασία:" hText_DE = "rel. LF: "aText_EN =" Υψόμετρο: "aText_DE =" Höhe üNN: " # exakt: ü. NHN, über Normal Höhen Null if (lang ==" DE "): ts0 = ts0_DE aText = aText_DE pText = hText_DE = tText_DE = άλλ: # default αγγλικά ts0 = ts0_EN aText = aText_EL pText = pText_EN hText = hText_EN # τιμές εκτύπωσης για την εμφάνιση εκτύπωσης (ts) εκτύπωσης (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, " %") print (aText, alt, "m") print () # τιμές εκτύπωσης σε Inky pHAT t1 = 5 # tab 1, frist column, απλοποιεί τη βελτιστοποίηση της διάταξης t2 = 110 # tab 2, inkyphat δεύτερης στήλης. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # εγγραφή ημερομηνίας χρονικής σήμανσης inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # εγγραφή χρονικής σήμανσης ώρα inkyphat.line ((t1, 25, 207, 25), 1, 3) # σχεδιάστε μια γραμμή inkyphat.text ((t1, 30), tText, inkyphat. BLACK, font2) inkyphat.text ((t2, 30), (tmp + "° C"), inkyphat. BLACK, font2) inkyphat.text ((t1, 55), pText, inkyphat. BLACK, font2) inkyphat.text ((t2, 55), (pre + "hPa"), inkyphat ΜΑΥΡΟ, γραμματοσειρά 2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + " %"), inkyphat. BLACK, font2) # εναλλακτικά εμφανίζεται το υπολογισμένο ύψος # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # περιμένετε μερικά δευτερόλεπτα πριν από τις επόμενες μετρήσεις, +19 δευτερόλεπτα ανά κύκλο inkyphat.clear () # κενή διαδικασία εμφάνισης μελανιού pHAT, inkyphat.show () # σιωπή για έκδοση crontab

Βήμα 5: Το σενάριο BMP280

Το BMP280 είναι πολύ παρόμοιο με τον αισθητήρα BME280, αλλά μετρά μόνο τη θερμοκρασία και την πίεση. Τα σενάρια είναι πολύ παρόμοια, αλλά χρειάζεστε διαφορετικές βιβλιοθήκες Circuit Python. Εδώ αντί για την υγρασία εμφανίζεται ένα υπολογιζόμενο ύψος, με βάση μια πίεση αναφοράς.

Επισυνάπτεται το σενάριο.

Συνιστάται: