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

Πώς να φτιάξετε ένα Raspberry Pi Temperature Monitor: 9 βήματα
Πώς να φτιάξετε ένα Raspberry Pi Temperature Monitor: 9 βήματα

Βίντεο: Πώς να φτιάξετε ένα Raspberry Pi Temperature Monitor: 9 βήματα

Βίντεο: Πώς να φτιάξετε ένα Raspberry Pi Temperature Monitor: 9 βήματα
Βίντεο: Πώς να φτιάξετε ένα κύκλωμα αισθητήρα θερμοκρασίας χρησιμοποιώντας μια δίοδο 2024, Νοέμβριος
Anonim
Πώς να φτιάξετε ένα Raspberry Pi Temperature Monitor
Πώς να φτιάξετε ένα Raspberry Pi Temperature Monitor

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

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

Προμήθειες

  • Raspberry Pi (3, 4 ή Zero WH)
  • Αισθητήρας θερμοκρασίας (DHT2, DSB18B20, BME280 ή Sense HAT)
  • Καλώδιο επέκτασης 6 "40-pin IDE Male to Female (Sense HAT Solution)
  • 10K Resistor, Breadboard, 40-Pin Breakout Board + Ribbon Cable, Wires (For DSB18B20 Solution)

Βήμα 1: Raspberry Pi

Το Raspberry Pi είναι ένας φθηνός υπολογιστής μονής πλακέτας που θα σας επιτρέψει να συνδεθείτε με έναν αισθητήρα θερμοκρασίας και να μεταφέρετε τα δεδομένα σε ένα λογισμικό απεικόνισης δεδομένων. Το Raspberry Pi ξεκίνησε ως εργαλείο εκμάθησης και εξελίχθηκε σε βιομηχανικό εργαλείο στο χώρο εργασίας. Η ευκολία χρήσης και η ικανότητα κωδικοποίησης με την Python, την ταχύτερα αναπτυσσόμενη γλώσσα προγραμματισμού, τους έχει κάνει μια λύση.

Θα θέλετε ένα Raspberry Pi που έχει ενσωματωμένο WiFi, που είναι οποιοδήποτε μοντέλο 3, 4 και μηδέν W/WH. Μεταξύ αυτών που μπορείτε να επιλέξετε με βάση τις τιμές και τις δυνατότητες. Το Zero W/WH είναι το φθηνότερο, αλλά αν χρειάζεστε περισσότερη λειτουργικότητα μπορείτε να επιλέξετε μεταξύ των 3 και 4. Μπορείτε να αγοράσετε μόνο ένα Zero W/WH κάθε φορά λόγω περιορισμών από το pδρυμα Raspberry Pi. Όποιο Pi και αν επιλέξετε, φροντίστε να αγοράσετε έναν φορτιστή αφού έτσι θα τροφοδοτήσετε το Pi και μια κάρτα SD με το Raspbian για να κάνετε την εγκατάσταση του λειτουργικού συστήματος όσο το δυνατόν πιο εύκολη.

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

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

Υπάρχουν τρεις αισθητήρες που προτείνουμε να χρησιμοποιηθούν επειδή είναι φθηνοί, εύκολο στη σύνδεση και παρέχουν ακριβείς ενδείξεις. DSB18B20, DHT22 και Raspberry Pi Sense HAT.

DHT22 - Αυτός ο αισθητήρας θερμοκρασίας και υγρασίας έχει ακρίβεια θερμοκρασίας +/- 0,5 C και εύρος υγρασίας από 0 έως 100 τοις εκατό. Είναι απλό να συνδεθεί με το Raspberry Pi και δεν απαιτεί αντιστάσεις έλξης.

DSB18B20 - Αυτός ο αισθητήρας θερμοκρασίας διαθέτει ψηφιακή έξοδο, η οποία λειτουργεί καλά με το Raspberry Pi. Έχει τρία καλώδια και απαιτεί ένα breadboard και μια αντίσταση για τη σύνδεση.

BME280 - Αυτός ο αισθητήρας μετρά τη θερμοκρασία, την υγρασία και τη βαρομετρική πίεση. Μπορεί να χρησιμοποιηθεί τόσο σε SPI όσο και σε I2C.

Sense HAT - Αυτό είναι ένα πρόσθετο για το Raspberry Pi που διαθέτει LED, αισθητήρες και ένα μικρό χειριστήριο. Συνδέεται απευθείας με το GPIO στο Raspberry Pi, αλλά η χρήση καλωδίου κορδέλας σας δίνει ακριβέστερες ενδείξεις θερμοκρασίας.

Βήμα 3: Ρύθμιση Raspberry Pi

Εάν αυτή είναι η πρώτη φορά που ρυθμίζετε το Raspberry Pi, θα χρειαστεί να εγκαταστήσετε το λειτουργικό σύστημα Raspbian και να συνδέσετε το Pi σας σε WiFi. Αυτό απαιτεί οθόνη και πληκτρολόγιο για σύνδεση στο Pi. Μόλις το θέσετε σε λειτουργία και συνδεθείτε στο WiFI, το Pi σας είναι έτοιμο.

Βήμα 4: Αρχικός λογαριασμός κατάστασης

Αρχικός λογαριασμός κράτους
Αρχικός λογαριασμός κράτους
Αρχικός λογαριασμός κράτους
Αρχικός λογαριασμός κράτους

Θα χρειαστείτε κάπου για να στείλετε τα δεδομένα σας για να διατηρήσετε ένα ιστορικό αρχείο καταγραφής και να δείτε τη ροή δεδομένων σε πραγματικό χρόνο, ώστε να χρησιμοποιήσουμε την Αρχική κατάσταση. Μεταβείτε στη διεύθυνση https://iot.app.initialstate.com και δημιουργήστε έναν νέο λογαριασμό ή συνδεθείτε στον υπάρχοντα λογαριασμό σας.

Στη συνέχεια, πρέπει να εγκαταστήσουμε τη μονάδα αρχικής κατάστασης Python στο Pi σας. Σε μια γραμμή εντολών (μην ξεχάσετε να κάνετε SSH πρώτα στο Pi σας), εκτελέστε την ακόλουθη εντολή:

$ cd/home/pi/

$ / curl -sSL https://get.initialstate.com/python -o -| sudo bash

Αφού εισαγάγετε την εντολή curl στη γραμμή εντολών, θα δείτε κάτι παρόμοιο με την ακόλουθη έξοδο στην οθόνη:

$ / curl -sSL https://get.initialstate.com/python -o -| sudo bash Κωδικός πρόσβασης: Έναρξη ISStreamer Python Εύκολη εγκατάσταση! Αυτό μπορεί να πάρει μερικά λεπτά για να εγκατασταθεί, πιείτε λίγο καφέ:) Αλλά μην ξεχάσετε να επιστρέψετε, θα έχω ερωτήσεις αργότερα! Βρέθηκε easy_install: setuptools 1.1.6 Βρέθηκε pip: pip 1.5.6 από /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip major version: 1 pip minor version: Βρέθηκε 5 ISStreamer, ενημερώνεται… Η απαίτηση είναι ήδη ενημερωμένη: ISStreamer στο/Librar/Python/2.7/site-packages Καθαρισμός… Θέλετε να λάβετε αυτόματα ένα παράδειγμα δέσμης ενεργειών; [y/N] Πού θέλετε να αποθηκεύσετε το παράδειγμα; [προεπιλογή:./is_example.py] Επιλέξτε ποια εφαρμογή αρχικής κατάστασης χρησιμοποιείτε: 1. app.initialstate.com 2. [ΝΕΟ!] iot.app.initialstate.com Εισαγάγετε την επιλογή 1 ή 2: Πληκτρολογήστε iot.app.initialstate.com όνομα χρήστη: Εισαγάγετε τον κωδικό πρόσβασης iot.app.initialstate.com:

Όταν σας ζητηθεί να λάβετε αυτόματα ένα παράδειγμα δέσμης ενεργειών, πληκτρολογήστε y. Αυτό θα δημιουργήσει ένα δοκιμαστικό σενάριο που μπορούμε να εκτελέσουμε για να διασφαλίσουμε ότι μπορούμε να μεταδώσουμε δεδομένα στην αρχική κατάσταση. Η επόμενη ερώτηση θα σας ρωτήσει πού θέλετε να αποθηκεύσετε το παράδειγμα του αρχείου. Μπορείτε είτε να πληκτρολογήσετε μια προσαρμοσμένη τοπική διαδρομή είτε να πατήσετε enter για να αποδεχτείτε την προεπιλεγμένη τοποθεσία. Τέλος, θα ερωτηθείτε ποια εφαρμογή αρχικής κατάστασης χρησιμοποιείτε. Εάν δημιουργήσατε πρόσφατα έναν λογαριασμό, επιλέξτε την επιλογή 2, εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασής σας. Μετά από αυτό, η εγκατάσταση θα ολοκληρωθεί.

Ας ρίξουμε μια ματιά στο παράδειγμα σεναρίου που δημιουργήθηκε.

$ nano is_example.py

Στη γραμμή 15, θα δείτε μια γραμμή που ξεκινά με streamer = Streamer (bucket_…. Αυτές οι γραμμές δημιουργούν έναν νέο κάδο δεδομένων με την ονομασία "Python Stream Παράδειγμα" και σχετίζεται με τον λογαριασμό σας. Αυτή η συσχέτιση συμβαίνει λόγω του κλειδιού πρόσβασης = "…" παράμετρος στην ίδια γραμμή. Αυτή η μεγάλη σειρά γραμμάτων και αριθμών είναι το κλειδί πρόσβασης στο λογαριασμό αρχικής κατάστασης. Εάν μεταβείτε στον λογαριασμό αρχικής κατάστασης στο πρόγραμμα περιήγησής σας, κάντε κλικ στο όνομα χρήστη σας επάνω δεξιά και, στη συνέχεια, μεταβείτε στις "ρυθμίσεις μου", θα βρείτε το ίδιο κλειδί πρόσβασης εδώ στην ενότητα "Κλειδιά πρόσβασης ροής".

Κάθε φορά που δημιουργείτε μια ροή δεδομένων, αυτό το κλειδί πρόσβασης θα κατευθύνει αυτήν τη ροή δεδομένων στο λογαριασμό σας (οπότε μην μοιράζεστε το κλειδί σας με κανέναν).

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

$ python is_example.py

Επιστρέψτε στον αρχικό σας λογαριασμό στο πρόγραμμα περιήγησής σας. Ένας νέος κάδος δεδομένων που ονομάζεται "Παράδειγμα ροής Python" θα έπρεπε να έχει εμφανιστεί στα αριστερά στο ράφι καταγραφής (ίσως χρειαστεί να ανανεώσετε τη σελίδα). Κάντε κλικ σε αυτόν τον κάδο και, στη συνέχεια, κάντε κλικ στο εικονίδιο Waves για να δείτε τα δεδομένα δοκιμής

Εάν χρησιμοποιείτε Python 3, μπορείτε να εγκαταστήσετε την Ενότητα αρχικής κατάστασης ροής που μπορείτε να εγκαταστήσετε χρησιμοποιώντας την ακόλουθη εντολή:

pip3 εγκαταστήστε το ISStreamer

Τώρα είμαστε έτοιμοι να ρυθμίσουμε τον αισθητήρα θερμοκρασίας με το Pi για ροή θερμοκρασίας σε έναν πίνακα ελέγχου.

Βήμα 5: Λύση DHT22

Λύση DHT22
Λύση DHT22

Το DHT22 θα έχει τρεις ακίδες - 5V, Gnd και δεδομένα. Θα πρέπει να υπάρχει μια ετικέτα καρφιτσών για τροφοδοσία στο DHT22 (π.χ. «+» ή «5V»). Συνδέστε το με τον ακροδέκτη 2 (επάνω δεξιά καρφίτσα, 5V) του Pi. Η καρφίτσα Gnd θα φέρει την ετικέτα «-» ή «Gnd» ή κάτι αντίστοιχο. Συνδέστε το με τον πείρο 6 Gnd (δύο ακίδες κάτω από τον πείρο 5V) στο Pi. Το υπόλοιπο pin στο DHT22 είναι το pin δεδομένων και θα φέρει την ένδειξη "out" ή "s" ή "data". Συνδέστε το σε έναν από τους ακροδέκτες GPIO στο Pi όπως το GPIO4 (pin 7). Μόλις συνδεθεί αυτό, ενεργοποιήστε το Pi σας.

Εγκαταστήστε τη μονάδα Adafruit DHT Python σε μια γραμμή εντολών για να κάνετε την ανάγνωση δεδομένων αισθητήρα DHT22 εξαιρετικά εύκολη:

$ sudo pip εγκαταστήστε το Adafruit_DHT

Με το λειτουργικό μας σύστημα εγκατεστημένο μαζί με τις δύο μονάδες Python για την ανάγνωση δεδομένων αισθητήρα και την αποστολή δεδομένων στην αρχική κατάσταση, είμαστε έτοιμοι να γράψουμε το σενάριό μας Python. Το παρακάτω σενάριο θα δημιουργήσει/προσαρτήσει σε έναν κάδο δεδομένων αρχικής κατάστασης, θα διαβάσει τα δεδομένα του αισθητήρα DHT22 και θα τα στείλει σε έναν πίνακα ελέγχου σε πραγματικό χρόνο. Το μόνο που χρειάζεται να κάνετε είναι να τροποποιήσετε τις γραμμές 6-11.

εισαγωγή Adafruit_DHT

από ISStreamer. Streamer import Streamer time import# --------- Ρυθμίσεις χρήστη --------- SENSOR_LOCATION_NAME = "Office" BUCKET_NAME = ": partly_sunny: Temperatures Room" BUCKET_KEY = "rt0129" ACCESS_KEY = "ΤΟΠΟΘΕΤΗΣΤΕ ΤΟ ΚΛΕΙΔΙ ΤΗΣ ΑΡΧΙΚΗΣ ΚΡΑΤΙΚΗΣ ΠΡΟΣΒΑΣΗΣ ΣΑΣ ΕΔΩ" MINUTES_BETWEEN_READS = 10METRIC_UNITS = Λάθος # --------------------------------- streamer = Streamer (bucket_name = BUCKET_NAME, bucket_key = BUCKET_KEY, access_key = ACCESS_KEY) ενώ True: υγρασία, temp_c = Adafruit_DHT.read_retry (Adafruit_DHT. DHT22, 4) εάν METRIC_UNITS: streamer.log (SENSOR_ Temperature): temp_f = format (temp_c * 9.0 / 5.0 + 32.0, ".2f") streamer.log (SENSOR_LOCATION_NAME + "Θερμοκρασία (F)", temp_f) υγρασία = μορφή (υγρασία, ".2f") streamer.log (SENSOR_LOCATION_NAME + "Υγρασία (%)", υγρασία) streamer.flush () time.sleep (60*MINUTES_BETWEEN_READS)

  • Γραμμή 6 - Αυτή η τιμή θα πρέπει να είναι μοναδική για κάθε κόμβο/αισθητήρα θερμοκρασίας. Αυτό μπορεί να είναι το όνομα του δωματίου του κόμβου αισθητήρα, η φυσική τοποθεσία, το μοναδικό αναγνωριστικό ή οτιδήποτε άλλο. Απλώς βεβαιωθείτε ότι είναι μοναδικό για κάθε κόμβο για να διασφαλίσετε ότι τα δεδομένα από αυτόν τον κόμβο πηγαίνουν στη δική του ροή δεδομένων στον πίνακα ελέγχου σας.
  • Γραμμή 7 - Αυτό είναι το όνομα του κάδου δεδομένων. Αυτό μπορεί να αλλάξει ανά πάσα στιγμή στη διεπαφή χρήστη αρχικής κατάστασης.
  • Γραμμή 8 - Αυτό είναι το κλειδί κάδου σας. Πρέπει να είναι το ίδιο κλειδί κάδου για κάθε κόμβο που θέλετε να εμφανίζεται στον ίδιο πίνακα ελέγχου.
  • Γραμμή 9 - Αυτό είναι το κλειδί πρόσβασης στο λογαριασμό αρχικής κατάστασης. Αντιγράψτε και επικολλήστε αυτό το κλειδί από τον λογαριασμό αρχικής κατάστασης.
  • Γραμμή 10 - Αυτός είναι ο χρόνος μεταξύ της ανάγνωσης του αισθητήρα. Αλλάξτε ανάλογα.
  • Γραμμή 11 - Μπορείτε να καθορίσετε μετρικές ή αυτοκρατορικές μονάδες στη γραμμή 11.

Αφού ορίσετε τις γραμμές 6–11 στο σενάριο Python στο Pi σας, αποθηκεύστε και εξέλθετε από τον επεξεργαστή κειμένου. Εκτελέστε το σενάριο με την ακόλουθη εντολή:

$ python tempsensor.py

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

Βήμα 6: Λύση DSB18B20

Λύση DSB18B20
Λύση DSB18B20
Λύση DSB18B20
Λύση DSB18B20

Το καλώδιο κορδέλας συνδέεται με τις ακίδες GPIO στο Pi. Το DS18B20 έχει τρία καλώδια. Το κόκκινο καλώδιο συνδέεται στα 3.3V. Το μπλε/μαύρο καλώδιο συνδέεται με τη γείωση. Το κίτρινο καλώδιο συνδέεται με μια αντίσταση έλξης/καρφίτσα 4. Μόλις συνδεθεί, ενεργοποιήστε το Pi σας.

Η τελευταία έκδοση του Raspbian (πυρήνας 3.18) απαιτεί μια προσθήκη στο αρχείο /boot/config.txt για να επικοινωνήσει το Pi με το DS18B20. Εκτελέστε τα ακόλουθα για να επεξεργαστείτε αυτό το αρχείο:

$ sudo nano /boot/config.txt

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

dtoverlay = w1-gpio, gpiopin = 4

Επανεκκινήστε το Pi σας για να ισχύσουν οι αλλαγές.

$ sudo επανεκκίνηση

Για να ξεκινήσει η διεπαφή ανάγνωσης του αισθητήρα θερμοκρασίας πρέπει να εκτελέσουμε δύο εντολές. Μεταβείτε σε μια γραμμή εντολών στο Pi ή SSH στο Pi σας. Πληκτρολογήστε τις ακόλουθες εντολές:

$ sudo modprobe w1-gpio $ sudo modprobe w1-θερμ

Η έξοδος του αισθητήρα θερμοκρασίας γράφεται τώρα σε ένα αρχείο στο Pi σας. Για να βρείτε αυτό το αρχείο:

$ cd/sys/bus/w1/συσκευές

Σε αυτόν τον κατάλογο, θα υπάρχει ένας υπο-κατάλογος που ξεκινά με "28-". Αυτό που έρχεται μετά το "28-" είναι ο σειριακός αριθμός του αισθητήρα σας. cd σε αυτόν τον κατάλογο. Μέσα σε αυτόν τον κατάλογο, ένα αρχείο με το όνομα w1_slave περιέχει την έξοδο του αισθητήρα σας. Χρησιμοποιήστε το nano για να δείτε τα περιεχόμενα του αρχείου. Μόλις εισαγάγετε το αρχείο, θα φαίνεται κάπως έτσι:

a2 01 4b 46 7f ff 0e 10 d8: crc = d8 YESa2 01 4b 46 7f ff 0e 10 d8 t = 26125

Ο αριθμός μετά το "t =" είναι ο αριθμός που θέλουμε. Αυτή είναι η θερμοκρασία σε 1/1000 βαθμούς Κελσίου (στο παραπάνω παράδειγμα, η θερμοκρασία είναι 26,125 C). Χρειαζόμαστε απλώς ένα απλό πρόγραμμα που διαβάζει αυτό το αρχείο και αναλύει αυτόν τον αριθμό. Σε αυτό θα φτάσουμε σε ένα δευτερόλεπτο.

Όλα είναι πλέον έτοιμα για να ξεκινήσουμε τη ροή δεδομένων. Για να ανοίξετε τον επεξεργαστή κειμένου, πληκτρολογήστε τα ακόλουθα στη γραμμή εντολών:

$ nano temperature.py

Αντιγράψτε και επικολλήστε τον παρακάτω κώδικα στο πρόγραμμα επεξεργασίας κειμένου.

εισαγωγή os

import glob time import from ISStreamer. Streamer import Streamerstreamer = Streamer (bucket_name = "Temperature Stream", bucket_key = "piot_temp_stream031815", access_key = "PUT_YOUR_ACCESS_KEY_HERE") os.system ('modprobe w1-gp -θερμία ') base_dir ='/sys/bus/w1/devices/'device_folder = glob.glob (base_dir + '28*') [0] device_file = device_folder + '/w1_slave' def read_temp_raw (): f = open (αρχείο_αρχείου, 'r') γραμμές = f.readlines () f.close () γραμμές επιστροφής def read_temp (): lines = read_temp_raw () ενώ γραμμές [0].strip () [-3:]! = 'YES': time.sleep (0,2) lines = read_temp_raw () equals_pos = lines [1].find ('t =') if equals_pos! = -1: temp_string = lines [1] [equals_pos+2:] temp_c = float (temp_string) / 1000.0 επιστροφή temp_c ενώ True: temp_c = read_temp () temp_f = temp_c * 9.0 / 5.0 + 32.0 streamer.log ("temperature (C)", temp_c) streamer.log ("temperature (F)", temp_f) time.sleep (.5)

Πρέπει να βάλετε το κλειδί πρόσβασης αρχικής κατάστασης στη γραμμή 6 στη θέση του PUT_YOUR_ACCESS_KEY_HERE (αντιγράψτε το κλειδί ροής στο πρόχειρο από το "Ο λογαριασμός μου" και επικολλήστε το στον κωδικό σε nano στο τερματικό σας).

Η γραμμή 6 θα δημιουργήσει έναν κάδο με το όνομα "Ροή θερμοκρασίας" στον λογαριασμό αρχικής κατάστασης (υποθέτοντας ότι έχετε καθορίσει σωστά το κλειδί πρόσβασης στην ίδια γραμμή). Οι γραμμές 8 έως 30 αυτού του σεναρίου απλώς διασυνδέονται με τον αισθητήρα DS18B20 για να διαβάσουν τη θερμοκρασία του από το αρχείο w1_slave που συζητήσαμε νωρίτερα. Η συνάρτηση read_temp_raw () στη γραμμή 15 διαβάζει το ακατέργαστο αρχείο w1_slave. Η λειτουργία read_temp () στη γραμμή 21 αναλύει τη θερμοκρασία από αυτό το αρχείο. Η γραμμή 34 καλεί αυτές τις λειτουργίες για να πάρει την τρέχουσα θερμοκρασία. Η γραμμή 35 μετατρέπει τη θερμοκρασία από Κελσίου σε Φαρενάιτ. Οι γραμμές 35 και 36 μεταφέρουν τη θερμοκρασία στον λογαριασμό αρχικής κατάστασης. Η γραμμή 37 θέτει σε παύση το σενάριο για 0,5 δευτερόλεπτα, ρυθμίζοντας τη συχνότητα ανάγνωσης και ροής του αισθητήρα θερμοκρασίας.

Είμαστε έτοιμοι να ξεκινήσουμε τη ροή. Εκτελέστε την ακόλουθη εντολή:

$ sudo python temperature.py

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

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

Βήμα 7: Λύση BME280

Θα χρειαστείτε τα ακόλουθα για να δημιουργήσετε αυτήν τη λύση:

-BME280 Αισθητήρας πίεσης, θερμοκρασίας και υγρασίας

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

Συνδέστε τον πείρο VIN στον αισθητήρα με τον ακροδέκτη 3.3V 1 στο Pi. Συνδέστε τον πείρο GND στον αισθητήρα με τον πείρο γείωσης 6 στο Pi. Συνδέστε τον πείρο SCK στον αισθητήρα με τον πείρο SCL 5 στο Pi. Συνδέστε την καρφίτσα SDI στον αισθητήρα με την καρφίτσα SDA 3 στο Pi. Θα χρειαστεί να χρησιμοποιείτε Python 3 για αυτήν τη λύση και να εγκαταστήσετε τη μονάδα Initial State Streamer χρησιμοποιώντας τη μέθοδο εγκατάστασης pip3.

Θα χρειαστεί επίσης να εγκαταστήσετε μερικές βιβλιοθήκες Adafruit Python.

pip3 install adafruit-blinkapip3 install pureio pip3 install spidev pip3 install adafruit-GPIO pip3 install adafruit-circuitpython-bme280

Για να χρησιμοποιήσουμε τον αισθητήρα πρέπει να ενεργοποιήσουμε το I2C στο Pi.

sudo raspi-config

Αυτό θα ανοίξει το Εργαλείο διαμόρφωσης λογισμικού Raspberry Pi. Μεταβείτε στην Επιλογή 5 Επιλογές διασύνδεσης. Από εδώ πηγαίνετε στο I2C. Θα σας ζητήσει αν θέλετε να ενεργοποιήσετε το I2C, επιλέξτε Ναι και Τέλος. Τώρα έχετε ενεργοποιημένο το I2C για επικοινωνία με τον αισθητήρα.

Μπορούμε να το δοκιμάσουμε εκτελώντας τα ακόλουθα:

sudo i2cdetect -y 1

Αυτό θα επαληθεύσει ότι το Pi σας βλέπει τον αισθητήρα. Με τον τρόπο που συνδέεται, θα πρέπει να εμφανίζει τον αισθητήρα στη διεύθυνση 77. Εάν δεν εντοπίσετε τον αισθητήρα, επανεκκινήστε το Pi σας, ενεργοποιήστε ξανά την επιλογή διεπαφής I2C στο Pi σας και δοκιμάστε ξανά. Μόλις εντοπιστεί ο αισθητήρας σας, ήρθε η ώρα για να τρέξουμε τον κύριο κωδικό μας που θα στείλει δεδομένα στην αρχική κατάσταση. Δημιουργήθηκε ένα αρχείο που ονομάζεται bme280sensor.py με την εντολή nano. Αντιγράψτε και επικολλήστε τον κώδικα από την ουσία στον επεξεργαστή κειμένου. Θα πρέπει να κάνετε αλλαγές στις γραμμές 12-19.

χρόνο εισαγωγής

πίνακας εισαγωγής import busio εισαγωγή adafruit_bme280 από ISStreamer. Streamer import Streamer # Δημιουργήστε αντικείμενο βιβλιοθήκης χρησιμοποιώντας το Bus I2C porti2c = busio. I2C (board. SCL, board. SDA) bme280 = adafruit_bme280. Adafruit_BME280_I2C (i2c) # ------- -Ρυθμίσεις χρήστη --------- SENSOR_LOCATION_NAME = "Γραφείο" BUCKET_NAME = ": μερικώς_ηλιακό: Θερμοκρασία δωματίου" BUCKET_KEY = "temp1" ACCESS_KEY = "ΤΟ ΚΛΕΙΔΙ ΠΡΟΣΒΑΣΗΣ ΣΑΣ ΕΔΩ" # αλλάξτε αυτό για να ταιριάζει με την πίεση της τοποθεσίας (hPa) σε επίπεδο θάλασσας bme280.sea_level_pressure = 1013.25 MINUTES_BETWEEN_READS = 10 METRIC_UNITS = Λάθος # --------------------------------- # OR δημιουργήστε αντικείμενο βιβλιοθήκης χρησιμοποιώντας τη θύρα Bus SPI #spi = busio. SPI (board. SCK, board. MOSI, board. MISO) #bme_cs = digitalio. DigitalInOut (board. D10) #bme280 = adafruit_bme280. Adafruit_BME280_SPI (spi, bme_cs) streaming re αν METRIC_UNITS: streamer.log (SENSOR_LOCATION_NAME + "Temperature (C)", temp_c) else: temp_f = format (temp_c * 9.0 / 5.0 + 32.0, ".1f") streamer.log (SENSOR_LOCATION_NAME + "Temperature (F)", temp_f) streamer.log (SENSOR_LOCATION_NAME + "Υγρασία (%)", υγρασία) streamer.log (SENSOR_LOCATION_NAME + "Πίεση (hPA)", πίεση) streamer.flush () time.sleep (60*MINUTES_BETWEEN_READS)

  • Γραμμή 12- Αυτή η τιμή θα πρέπει να είναι μοναδική για κάθε κόμβο/αισθητήρα θερμοκρασίας. Αυτό μπορεί να είναι το όνομα του δωματίου του κόμβου αισθητήρα, η φυσική τοποθεσία, το μοναδικό αναγνωριστικό ή οτιδήποτε άλλο. Απλώς βεβαιωθείτε ότι είναι μοναδικό για κάθε κόμβο για να διασφαλίσετε ότι τα δεδομένα από αυτόν τον κόμβο πηγαίνουν στη δική του ροή δεδομένων στον πίνακα ελέγχου σας.
  • Γραμμή 13- Αυτό είναι το όνομα του κάδου δεδομένων. Αυτό μπορεί να αλλάξει ανά πάσα στιγμή στη διεπαφή χρήστη αρχικής κατάστασης.
  • Γραμμή 14- Αυτό είναι το κλειδί του κάδου σας. Πρέπει να είναι το ίδιο κλειδί κάδου για κάθε κόμβο που θέλετε να εμφανίζεται στον ίδιο πίνακα ελέγχου.
  • Γραμμή 15- Αυτό είναι το κλειδί πρόσβασης στο λογαριασμό αρχικής κατάστασης. Αντιγράψτε και επικολλήστε αυτό το κλειδί από τον λογαριασμό αρχικής κατάστασης.
  • Γραμμή 17- Αυτή είναι η πίεση της θέσης σας (hPa) στο επίπεδο της θάλασσας. Μπορείτε να βρείτε αυτές τις πληροφορίες στις περισσότερες ιστοσελίδες καιρού.
  • Γραμμή 18 - Αυτός είναι ο χρόνος μεταξύ της ανάγνωσης του αισθητήρα. Αλλάξτε ανάλογα. Γραμμή 19- Εδώ μπορείτε να καθορίσετε μετρικές ή αυτοκρατορικές μονάδες.

Αφού ορίσετε τις γραμμές 12–19 στο σενάριο Python στο Pi Zero WH, αποθηκεύστε και εξέλθετε από τον επεξεργαστή κειμένου. Εκτελέστε το σενάριο με την ακόλουθη εντολή:

$ python3 bme280sensor.py

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

Βήμα 8: Αίσθηση καπέλου

Sense HAT
Sense HAT
Sense HAT
Sense HAT

Το πρώτο βήμα στη χρήση του Sense HAT είναι να το εγκαταστήσετε φυσικά στο Pi σας. Με το Pi απενεργοποιημένο, επισυνάψτε το ΚΑΠ όπως φαίνεται στην εικόνα.

Εάν αποφασίσετε να χρησιμοποιήσετε τη λύση όπως φαίνεται παραπάνω, μπορεί να παρατηρήσετε ότι οι ενδείξεις θερμοκρασίας του Sense HAT θα είναι λίγο υψηλές - αυτό συμβαίνει επειδή είναι. Ο ένοχος είναι η θερμότητα που παράγεται από τη CPU του Pi που θερμαίνει τον αέρα γύρω από το Sense HAT όταν κάθεται πάνω από το Pi. Για να κάνουμε τον αισθητήρα θερμοκρασίας χρήσιμο, πρέπει είτε να απομακρύνουμε το HAT από το Pi είτε να προσπαθήσουμε να βαθμονομήσουμε την ένδειξη του αισθητήρα θερμοκρασίας. Μια καλή λύση για να απομακρύνετε τον αισθητήρα από το Pi είναι ένα καλώδιο που αφήνει το Sense HAT να κρέμεται μακριά από το Pi. Ένα καλώδιο επέκτασης καλωδίου επέκτασης 6 , 40 ακίδων IDE αρσενικό προς θηλυκό θα κάνει το κόλπο.

Μόλις αποφασίσετε για τις δύο επιλογές, ενεργοποιήστε το Pi σας. Πρέπει να εγκαταστήσουμε τη βιβλιοθήκη Python για να είναι εύκολη η ανάγνωση των τιμών των αισθητήρων από το Sense HAT. Πρώτον, θα πρέπει να διασφαλίσετε ότι όλα είναι ενημερωμένα στην έκδοση του Raspbian:

$ sudo apt-get ενημέρωση

Στη συνέχεια, εγκαταστήστε τη βιβλιοθήκη Sense HAT Python:

$ sudo apt-get install sense-hat

Επανεκκινήστε το Pi σας. Είμαστε έτοιμοι να δοκιμάσουμε το Sense HAT διαβάζοντας δεδομένα αισθητήρων από αυτό και στέλνοντας αυτά τα δεδομένα στην αρχική κατάσταση.

Δημιουργήστε ένα αρχείο που ονομάζεται sensehat και ανοίξτε το στον επεξεργαστή κειμένου εισάγοντας το ακόλουθο στη γραμμή εντολών:

$ nano sensehat.py

Αντιγράψτε και επικολλήστε τον παρακάτω κώδικα στο πρόγραμμα επεξεργασίας κειμένου.

από το sense_hat εισαγωγή SenseHat

εισαγωγή χρόνου εισαγωγής sys από ISStreamer. Streamer import Streamer # --------- Ρυθμίσεις χρήστη --------- BUCKET_NAME = "Καιρός γραφείου" BUCKET_KEY = "sensehat" ACCESS_KEY = "Your_Access_Key" SENSOR_LOCATION_NAME = " Γραφείο "MINUTES_BETWEEN_SENSEHAT_READS = 0.1 # --------------------------------- streamer = Streamer (bucket_name = BUCKET_NAME, bucket_key = BUCKET_KEY, access_key = ACCESS_KEY) sense = SenseHat () while True: # Διαβάστε τους αισθητήρες temp_c = sense.get_temperature () υγρασία = sense.get_humidity () press_mb = sense.get_pressure () # Μορφοποιήστε τα δεδομένα temp_f = temp_c * 9.0 / 5.0 + 32.0 temp_f = float ("{0:.2f}". Format (temp_f)) υγρασία = float ("{0:.2f}". Format (υγρασία)) press_in = 0.03937008*(pressure_mb) πίεση_in = float ("{ 0:.2f} ". Format (pressure_in)) # Εκτύπωση και εκτύπωση ροής SENSOR_LOCATION_NAME +" Θερμοκρασία (F): " + str (temp_f) print SENSOR_LOCATION_NAME +" Υγρασία (%): " + str (υγρασία) εκτύπωση SENSOR_LOCATION_NAME +" Πίεση (IN): " + str (πίεση_σε) streamer.log (": sunny: " + SEN SOR_LOCATION_NAME + "Θερμοκρασία (F)", temp_f) streamer.log (": sweat_drops:" + SENSOR_LOCATION_NAME + "Υγρασία (%)", υγρασία) streamer.log (": cloud:" + SENSOR_LOCATION_NAME + "Πίεση (IN)", pressure_in) streamer.flush () time.sleep (60*MINUTES_BETWEEN_SENSEHAT_READS)

Παρατηρήστε στην πρώτη γραμμή ότι εισάγουμε τη βιβλιοθήκη SenseHat στο σενάριο. Πριν να εκτελέσετε αυτό το σενάριο, πρέπει να ρυθμίσουμε τις παραμέτρους του χρήστη.

# --------- Ρυθμίσεις χρήστη ---------

BUCKET_NAME = "Καιρός γραφείου" BUCKET_KEY = "sensehat" ACCESS_KEY = "Your_Access_Key" SENSOR_LOCATION_NAME = "Office" MINUTES_BETWEEN_SENSEHAT_READS = 0.1# ------------------------- --------

Συγκεκριμένα, πρέπει να ορίσετε το ACCESS_KEY στο κλειδί πρόσβασης στο λογαριασμό αρχικής κατάστασης. Μπορείτε να αλλάξετε το BUCKET_NAME και το SENSOR_LOCATION_NAME στην πραγματική τοποθεσία του αισθητήρα. Αποθηκεύστε και εξέλθετε από τον επεξεργαστή κειμένου.

Σε μια γραμμή εντολών στο Pi σας, εκτελέστε το σενάριο:

$ sudo python sensehat.py

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

Βήμα 9: Προσαρμόστε τον Πίνακα ελέγχου αρχικής κατάστασης

Προσαρμόστε τον Πίνακα ελέγχου αρχικής κατάστασης
Προσαρμόστε τον Πίνακα ελέγχου αρχικής κατάστασης

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

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

Τώρα που δημιουργήσατε μια οθόνη θερμοκρασίας χρησιμοποιώντας έναν αισθητήρα θερμοκρασίας και ένα Raspberry Pi, μπορείτε να αρχίσετε να σκέφτεστε ποια άλλα περιβαλλοντικά δεδομένα μπορείτε να παρακολουθείτε στη συνέχεια.

Συνιστάται: