Πίνακας περιεχομένων:
- Βήμα 1: Υποχρεωτικός λογαριασμός εξοπλισμού
- Βήμα 2: Συνδέσεις υλικού για κύκλωμα
- Βήμα 3: Προγραμματισμός Raspberry Pi σε Python
- Βήμα 4: Ο κώδικας εκτέλεσης
- Βήμα 5: Χρήση στον πρακτικό κόσμο
- Βήμα 6: Συμπέρασμα
Βίντεο: Μετεωρολογικός σταθμός χρησιμοποιώντας Raspberry Pi με BME280 σε Python: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
is maith a scéalaí an armancir (Ο καιρός είναι καλός αφηγητής)
Με τα προβλήματα της υπερθέρμανσης του πλανήτη και της κλιματικής αλλαγής, το παγκόσμιο πρότυπο καιρού γίνεται ασταθές σε όλο τον κόσμο, οδηγώντας σε μια σειρά φυσικών καταστροφών που σχετίζονται με τον καιρό (ξηρασίες, ακραίες θερμοκρασίες, πλημμύρες, καταιγίδες και πυρκαγιές), ένας μετεωρολογικός σταθμός φαίνεται απαραίτητος κακό στο σπίτι. Μαθαίνετε πολλά για τα βασικά ηλεκτρονικά από ένα έργο μετεωρολογικού σταθμού χρησιμοποιώντας ένα σωρό φθηνά ανταλλακτικά και αισθητήρες. Είναι πολύ εύκολο να το ρυθμίσετε και δεν μπορείτε να το έχετε σε λίγο χρόνο.
Βήμα 1: Υποχρεωτικός λογαριασμός εξοπλισμού
1. Ένα Raspberry Pi
Πάρτε τα χέρια σας σε έναν πίνακα Raspberry Pi. Το Raspberry Pi είναι ένας υπολογιστής με μονά κάρτα που λειτουργεί με Linux. Το Raspberry Pi είναι πραγματικά φθηνό, μικροσκοπικό και ευέλικτο, κατασκευασμένο από έναν προσιτό και λειτουργικό υπολογιστή για τους μαθητές να ασκούν τα βασικά του προγραμματισμού και της ανάπτυξης λογισμικού.
2. I2C Shield για το Raspberry Pi
Ο INPI2 (προσαρμογέας I2C) παρέχει στο Raspberry Pi 2/3 μια θύρα I²C για χρήση με πολλές συσκευές I2C. Είναι διαθέσιμο στο κατάστημα DCUBE.
3. Digitalηφιακός αισθητήρας υγρασίας, πίεσης και θερμοκρασίας, BME280
Το BME280 είναι αισθητήρας υγρασίας, πίεσης και θερμοκρασίας που έχει γρήγορο χρόνο απόκρισης και υψηλή συνολική ακρίβεια. Αγοράσαμε αυτόν τον αισθητήρα από το κατάστημα DCUBE.
4. Καλώδιο σύνδεσης I2C
Χρησιμοποιήσαμε το καλώδιο I²C που διατίθεται εδώ στο κατάστημα DCUBE.
5. Καλώδιο Micro USB
Το καλώδιο micro USB Το τροφοδοτικό είναι μια ιδανική επιλογή για την τροφοδοσία του Raspberry Pi.
6 Interpret Access Internet μέσω EthernetCable/WiFi Adapter
Η πρόσβαση στο Internet μπορεί να ενεργοποιηθεί μέσω καλωδίου Ethernet συνδεδεμένου σε τοπικό δίκτυο και στο διαδίκτυο. Εναλλακτικά, μπορείτε να συνδεθείτε σε ασύρματο δίκτυο χρησιμοποιώντας ασύρματο dongle USB, το οποίο θα απαιτήσει διαμόρφωση.
7. Καλώδιο HDMI (Καλώδιο οθόνης & συνδεσιμότητας)
Οποιαδήποτε οθόνη HDMI/DVI και οποιαδήποτε τηλεόραση πρέπει να λειτουργούν ως οθόνη για το Pi. Εναλλακτικά, μπορείτε να αποκτήσετε απομακρυσμένη πρόσβαση στο Pi μέσω SSH αναιρώντας την ανάγκη για οθόνη (μόνο για προχωρημένους χρήστες).
Βήμα 2: Συνδέσεις υλικού για κύκλωμα
Κάντε το κύκλωμα σύμφωνα με το σχηματικό σχήμα. Γενικά, οι συνδέσεις είναι πολύ απλές. Διατηρήστε την ψυχραιμία σας και ακολουθήστε τις παραπάνω οδηγίες και εικόνες και δεν θα έχετε κανένα πρόβλημα. Κατά τη διάρκεια της μάθησης, μάθαμε καλά τα βασικά των ηλεκτρονικών σχετικά με τις γνώσεις υλικού και λογισμικού. Θέλαμε να σχεδιάσουμε ένα απλό ηλεκτρονικό σχήμα για αυτό το έργο. Τα ηλεκτρονικά σχήματα είναι σαν τα σχέδια. Σχεδιάστε ένα σχέδιο και ακολουθήστε προσεκτικά το σχέδιο. Μερικές βασικές έννοιες των ηλεκτρονικών μπορεί να είναι χρήσιμες εδώ!
Σύνδεση Raspberry Pi και I2C Shield
Πρώτα, πάρτε το Raspberry Pi και τοποθετήστε το I²C Shield σε αυτό. Πιέστε απαλά την Ασπίδα και τελειώσαμε με αυτό το βήμα τόσο εύκολα όσο η πίτα (δείτε την εικόνα).
Σύνδεση αισθητήρα και Raspberry Pi
Πάρτε τον αισθητήρα και συνδέστε το καλώδιο I²C με αυτόν. Βεβαιωθείτε ότι η έξοδος I²C συνδέεται ΠΑΝΤΑ με την είσοδο I²C. Το ίδιο πρέπει να ακολουθηθεί και για το Raspberry Pi με την ασπίδα I²C τοποθετημένη επάνω της με τις καρφίτσες GPIO. Συνιστούμε τη χρήση των καλωδίων I²C καθώς αναιρεί την ανάγκη για ανάγνωση pinouts, συγκόλληση και αδιαθεσία που προκαλείται ακόμη και από την παραμικρή ολίσθηση Το Με αυτό το απλό καλώδιο plug and play, μπορείτε να εγκαταστήσετε, να αλλάξετε πίνακες ή να προσθέσετε περισσότερους πίνακες σε μια εφαρμογή με ευκολία.
Σημείωση: Το καφέ σύρμα πρέπει πάντα να ακολουθεί τη σύνδεση Ground (GND) μεταξύ της εξόδου μιας συσκευής και της εισόδου μιας άλλης συσκευής
Η συνδεσιμότητα στο Διαδίκτυο είναι το κλειδί
Έχετε δύο επιλογές εδώ. Είτε μπορείτε να συνδέσετε το Raspberry Pi στο δίκτυο χρησιμοποιώντας καλώδιο ethernet είτε να χρησιμοποιήσετε προσαρμογέα USB σε WiFi για συνδεσιμότητα WIFI. Είτε έτσι είτε αλλιώς, εφόσον είναι συνδεδεμένο στο διαδίκτυο καλύπτεστε.
Ενεργοποίηση του κυκλώματος
Συνδέστε το καλώδιο Micro USB στην υποδοχή τροφοδοσίας του Raspberry Pi. Τρυπήστε και voila! Η ομάδα μας είναι πληροφορίες.
Σύνδεση στην οθόνη
Μπορούμε είτε να έχουμε το καλώδιο HDMI συνδεδεμένο με οθόνη είτε με τηλεόραση. Επιπλέον, μπορούμε να έχουμε πρόσβαση σε ένα Raspberry Pi χωρίς να το συνδέσουμε σε οθόνη χρησιμοποιώντας απομακρυσμένη πρόσβαση. Το SSH είναι ένα εύχρηστο εργαλείο για ασφαλή απομακρυσμένη πρόσβαση. Μπορείτε επίσης να χρησιμοποιήσετε το λογισμικό PUTTY για αυτό. Αυτή η επιλογή είναι για προχωρημένους χρήστες, οπότε δεν θα την καλύψουμε λεπτομερώς εδώ.
Είναι μια οικονομική μέθοδος αν δεν θέλετε να ξοδέψετε πολλά
Βήμα 3: Προγραμματισμός Raspberry Pi σε Python
Ο κώδικας Python για τον αισθητήρα Raspberry Pi και BME280. Είναι διαθέσιμο στο αποθετήριο Github.
Πριν προχωρήσετε στον κώδικα, βεβαιωθείτε ότι έχετε διαβάσει τις οδηγίες που δίνονται στο αρχείο Readme και ρυθμίστε το Raspberry Pi σύμφωνα με αυτό. Λίγη ώρα θα σας προετοιμάσει για εγκατάσταση. Ένας μετεωρολογικός σταθμός είναι μια εγκατάσταση, είτε στη στεριά είτε στη θάλασσα, με όργανα και εξοπλισμό για τη μέτρηση των ατμοσφαιρικών συνθηκών για την παροχή πληροφοριών για τις καιρικές προβλέψεις και τη μελέτη του καιρού και του κλίματος.
Ο κώδικας είναι σαφώς μπροστά σας και είναι στην πιο απλή μορφή που μπορείτε να φανταστείτε και δεν πρέπει να έχετε κανένα πρόβλημα. Ακόμα ρωτήστε εάν υπάρχουν (Ακόμα κι αν γνωρίζετε χίλια πράγματα, ρωτήστε ακόμα κάποιον που γνωρίζει).
Μπορείτε να αντιγράψετε τον κωδικό Python που λειτουργεί για αυτόν τον αισθητήρα και από εδώ.
# Διανέμεται με άδεια ελεύθερης βούλησης.# Χρησιμοποιήστε το με όποιον τρόπο θέλετε, κερδοσκοπικό ή δωρεάν, υπό την προϋπόθεση ότι ταιριάζει στις άδειες των σχετικών έργων του. # BME280 # Αυτός ο κωδικός έχει σχεδιαστεί για να λειτουργεί με το Mini Module BME280_I2CS I2C που διατίθεται από το ControlEverything.com. #
εισαγωγή smbus
χρόνο εισαγωγής
# Πάρτε το λεωφορείο I2C
bus = smbus. SMBus (1)
# Διεύθυνση BME280, 0x76 (118)
# Ανάγνωση δεδομένων από 0x88 (136), 24 bytes b1 = bus.read_i2c_block_data (0x76, 0x88, 24)
# Μετατρέψτε τα δεδομένα
# Συντελεστές θερμοκρασίας dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] αν dig_T2> 32767: dig_T2 -= 65536 dig_T3 = b1 [5] * 256 + b1 [4] αν dig_T3> 32767: dig_T3 -= 65536
# Συντελεστές πίεσης
dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] αν dig_P2> 32767: dig_P2 -= 65536 dig_P3 = b1 [11] * 256 + b1 [10] αν dig_P3 > 32767: dig_P3 -= 65536 dig_P4 = b1 [13] * 256 + b1 [12] αν dig_P4> 32767: dig_P4 -= 65536 dig_P5 = b1 [15] * 256 + b1 [14] αν dig_P5> 32767: dig_P5 -= 65536 dig_P6 = b1 [17] * 256 + b1 [16] αν dig_P6> 32767: dig_P6 -= 65536 dig_P7 = b1 [19] * 256 + b1 [18] αν dig_P7> 32767: dig_P7 -= 65536 dig_P8 = b1 [21] * 256 + b1 [20] αν dig_P8> 32767: dig_P8 -= 65536 dig_P9 = b1 [23] * 256 + b1 [22] αν dig_P9> 32767: dig_P9 -= 65536
# Διεύθυνση BME280, 0x76 (118)
# Ανάγνωση δεδομένων από 0xA1 (161), 1 byte dig_H1 = bus.read_byte_data (0x76, 0xA1)
# Διεύθυνση BME280, 0x76 (118)
# Ανάγνωση δεδομένων από 0xE1 (225), 7 bytes b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)
# Μετατρέψτε τα δεδομένα
# Συντελεστές υγρασίας dig_H2 = b1 [1] * 256 + b1 [0] αν dig_H2> 32767: dig_H2 -= 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) αν dig_H4> 32767: dig_H4 -= 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) εάν dig_H5> 32767: dig_H5 -= 65536 dig_H6 = b1 [6] αν dig_H6> 127: dig_H6 -= 256
# Διεύθυνση BME280, 0x76 (118)
# Επιλογή καταχωρητή υγρασίας ελέγχου, 0xF2 (242) # 0x01 (01) Υπερεμπάνιση υγρασίας = 1 bus.write_byte_data (0x76, 0xF2, 0x01) # διεύθυνση BME280, 0x76 (118) # Επιλέξτε μητρώο μέτρησης ελέγχου, 0xF4 (244) # 0x27 (39) Ρυθμός υπερπίεσης πίεσης και θερμοκρασίας = 1 # Λεωφορείο κανονικής λειτουργίας. Εγγραφή_byte_data (0x76, 0xF4, 0x27) # Διεύθυνση BME280, 0x76 (118) # Επιλογή καταχωρητή διαμόρφωσης, 0xF5 (245) # 0xA0 (00) Χρόνος αναμονής = 1000 ms bus.write_byte_data (0x76, 0xF5, 0xA0)
ώρα. ύπνος (0,5)
# Διεύθυνση BME280, 0x76 (118)
# Ανάγνωση δεδομένων από 0xF7 (247), 8 byte # Πίεση MSB, Πίεση LSB, Πίεση xLSB, Θερμοκρασία MSB, Θερμοκρασία LSB # Θερμοκρασία xLSB, Υγρασία MSB, Υγρασία LSB δεδομένα = bus.read_i2c_block_data (0x76, 0xF7, 8)
# Μετατρέψτε τα δεδομένα πίεσης και θερμοκρασίας σε 19-bit
adc_p = ((δεδομένα [0] * 65536) + (δεδομένα [1] * 256) + (δεδομένα [2] & 0xF0)) / 16 adc_t = ((δεδομένα [3] * 65536) + (δεδομένα [4] * 256) + (δεδομένα [5] & 0xF0)) / 16
# Μετατρέψτε τα δεδομένα υγρασίας
adc_h = δεδομένα [6] * 256 + δεδομένα [7]
# Υπολογισμοί αντιστάθμισης θερμοκρασίας
var1 = ((adc_t) / 16384.0 - (dig_T1) / 1024.0) * (dig_T2) var2 = (((adc_t) / 131072.0 - (dig_T1) / 8192.0) * ((adc_t) /131072.0 - (dig_T1) /8192.0)) * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120.0 fTemp = cTemp * 1.8 + 32
# Υπολογισμοί αντιστάθμισης πίεσης
var1 = (t_fine / 2.0) - 64000.0 var2 = var1 * var1 * (dig_P6) / 32768.0 var2 = var2 + var1 * (dig_P5) * 2.0 var2 = (var2 / 4.0) + ((dig_P4) * 65536.0) var1 = ((dig_P3) * var1 * var1 / 524288.0 + (dig_P2) * var1) / 524288.0 var1 = (1.0 + var1 / 32768.0) * (dig_P1) p = 1048576.0 - adc_p p = (p - (var2 / 4096.0)) * 6250.0 / var1 var1 = (dig_P9) * p * p / 2147483648.0 var2 = p * (dig_P8) / 32768.0 πίεση = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100
# Υπολογισμοί αντιστάθμισης υγρασίας
var_H = ((t_fine) - 76800.0) var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 67108864.0 *)) υγρασία = var_H * (1.0 - dig_H1 * var_H / 524288.0) εάν υγρασία> 100.0: υγρασία = 100.0 elif υγρασία <0.0: υγρασία = 0.0
# Έξοδος δεδομένων στην οθόνη
εκτύπωση "Θερμοκρασία σε Κελσίου: %.2f C" %cTemp print "Θερμοκρασία σε Φαρενάιτ: %.2f F" %fTemp print "Πίεση: %.2f hPa" %εκτύπωση υπό πίεση "Σχετική υγρασία: %.2f %%" %υγρασία
Βήμα 4: Ο κώδικας εκτέλεσης
Τώρα, κάντε λήψη (ή git pull) τον κώδικα και ανοίξτε τον στο Raspberry Pi.
Εκτελέστε τις εντολές για να μεταγλωττίσετε και να ανεβάσετε τον κώδικα στο τερματικό και να δείτε την έξοδο στην οθόνη. Μετά από λίγα δευτερόλεπτα, θα εμφανίσει όλες τις παραμέτρους. Αφού βεβαιωθείτε ότι όλα λειτουργούν τέλεια, μπορείτε να αναπτύξετε μερικά πιο ενδιαφέροντα.
Βήμα 5: Χρήση στον πρακτικό κόσμο
Το BME280 επιτυγχάνει υψηλές επιδόσεις σε όλες τις εφαρμογές που απαιτούν μέτρηση υγρασίας και πίεσης. Αυτές οι αναδυόμενες εφαρμογές είναι η συνειδητοποίηση περιβάλλοντος, π.χ. Ανίχνευση δέρματος, Ανίχνευση αλλαγής δωματίου, Παρακολούθηση / ευεξία φυσικής κατάστασης, Προειδοποίηση για ξηρότητα ή υψηλές θερμοκρασίες, μέτρηση όγκου και ροής αέρα, έλεγχος αυτοματισμού σπιτιού, έλεγχος θέρμανσης, εξαερισμός, κλιματισμός (HVAC), Internet of Things (IoT), Ενίσχυση GPS (π.χ. Βελτίωση χρονικής αρχικής διόρθωσης, Νεκρός απολογισμός, Ανίχνευση κλίσης), Εσωτερική πλοήγηση (Αλλαγή ανίχνευσης δαπέδου, Ανίχνευση ανελκυστήρων), Εξωτερική πλοήγηση, Εφαρμογές αναψυχής και αθλητισμού, Πρόβλεψη καιρού και Ένδειξη κατακόρυφης ταχύτητας (Άνοδος/Βύθιση Ταχύτητα).
Βήμα 6: Συμπέρασμα
Ελπίζω αυτό το έργο να εμπνεύσει περαιτέρω πειραματισμούς. Η δημιουργία ενός πιο εξελιγμένου μετεωρολογικού σταθμού μπορεί να περιλαμβάνει περισσότερους αισθητήρες όπως μετρητή βροχής, αισθητήρα φωτός, ανεμόμετρο (ταχύτητα ανέμου) κ.λπ. Μπορείτε να τους προσθέσετε και να τροποποιήσετε τον κώδικα. Έχουμε ένα σεμινάριο βίντεο στο YouTube που έχει τη βασική λειτουργία του αισθητήρα I²C με το Rasp Pi. Είναι πραγματικά εκπληκτικό να βλέπεις τα αποτελέσματα και τη λειτουργία των επικοινωνιών I²C. Ελέγξτε το επίσης. Καλή διασκέδαση και μάθηση! Ενημερώστε μας τι πιστεύετε για αυτό το διδακτικό. Θα θέλαμε να κάνουμε κάποιες βελτιώσεις αν χρειαστεί.
Συνιστάται:
Προσωπικός μετεωρολογικός σταθμός χρησιμοποιώντας Raspberry Pi με BME280 σε Java: 6 βήματα
Προσωπικός μετεωρολογικός σταθμός με χρήση Raspberry Pi με BME280 σε Java: Ο κακός καιρός φαίνεται πάντα χειρότερος από ένα παράθυρο. Πάντα μας ενδιέφερε να παρακολουθούμε τον τοπικό καιρό μας και τι βλέπουμε από το παράθυρο. Θέλαμε επίσης καλύτερο έλεγχο του συστήματος θέρμανσης και κλιματισμού. Η κατασκευή προσωπικού μετεωρολογικού σταθμού είναι μια
Μετεωρολογικός σταθμός NaTaLia: Μετεωρολογικός σταθμός Arduino Solar Powered Done the Right Way: 8 βήματα (με εικόνες)
Μετεωρολογικός Σταθμός NaTaLia: Ο Μετεωρολογικός Σταθμός Arduino έγινε με τον σωστό τρόπο: Μετά από 1 χρόνο επιτυχούς λειτουργίας σε 2 διαφορετικές τοποθεσίες, μοιράζομαι τα σχέδια έργων μου με ηλιακή ενέργεια και εξηγώ πώς εξελίχθηκε σε ένα σύστημα που μπορεί πραγματικά να επιβιώσει για μεγάλο χρονικό διάστημα περιόδους από την ηλιακή ενέργεια. Αν ακολουθείτε
Μετεωρολογικός σταθμός DIY & Σταθμός αισθητήρα WiFi: 7 βήματα (με εικόνες)
Μετεωρολογικός Σταθμός DIY & WiFi Sensor Station: Σε αυτό το έργο θα σας δείξω πώς να δημιουργήσετε έναν μετεωρολογικό σταθμό μαζί με έναν σταθμό αισθητήρα WiFi. Ο σταθμός αισθητήρων μετρά τα τοπικά δεδομένα θερμοκρασίας και υγρασίας και τα στέλνει, μέσω WiFi, στον μετεωρολογικό σταθμό. Ο μετεωρολογικός σταθμός εμφανίζει τότε
Μετεωρολογικός σταθμός δωματίου χρησιμοποιώντας Arduino & BME280: 4 βήματα
Μετεωρολογικός Σταθμός δωματίου χρησιμοποιώντας Arduino & BME280: Προηγουμένως μοιράστηκα έναν απλό μετεωρολογικό σταθμό ο οποίος εμφάνιζε τη θερμοκρασία και την υγρασία της περιοχής. Το πρόβλημα ήταν ότι θα χρειαζόταν χρόνος για την ενημέρωση και τα δεδομένα δεν ήταν ακριβή. Σε αυτό το σεμινάριο θα φτιάξουμε μια εσωτερική οθόνη καιρού
Μετεωρολογικός σταθμός WiFi μετεωρολογικός σταθμός V1.0: 19 βήματα (με εικόνες)
Solar Powered WiFi Weather Station V1.0: Σε αυτό το Εκπαιδευτικό, θα σας δείξω πώς να φτιάξετε έναν Μετεωρολογικό σταθμό με ηλιακή ενέργεια με έναν πίνακα Wemos. Το Wemos D1 Mini Pro διαθέτει έναν μικρό παράγοντα μορφής και μια μεγάλη γκάμα ασπίδων plug-and-play το καθιστούν ιδανική λύση για γρήγορη απόκτηση