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

Μετεωρολογικός σταθμός χρησιμοποιώντας Raspberry Pi με BME280 σε Python: 6 βήματα
Μετεωρολογικός σταθμός χρησιμοποιώντας Raspberry Pi με BME280 σε Python: 6 βήματα

Βίντεο: Μετεωρολογικός σταθμός χρησιμοποιώντας Raspberry Pi με BME280 σε Python: 6 βήματα

Βίντεο: Μετεωρολογικός σταθμός χρησιμοποιώντας Raspberry Pi με BME280 σε Python: 6 βήματα
Βίντεο: Σχολικός Μετεωρολογικός σταθμός με esp32, bme280 2024, Ιούλιος
Anonim
Image
Image
Imperative Equipment Bill
Imperative Equipment Bill

is maith a scéalaí an armancir (Ο καιρός είναι καλός αφηγητής)

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

Βήμα 1: Υποχρεωτικός λογαριασμός εξοπλισμού

Imperative Equipment Bill
Imperative Equipment Bill
Imperative Equipment Bill
Imperative Equipment Bill
Imperative Equipment Bill
Imperative Equipment Bill

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

Προγραμματισμός Raspberry Pi σε Python
Προγραμματισμός 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. Ελέγξτε το επίσης. Καλή διασκέδαση και μάθηση! Ενημερώστε μας τι πιστεύετε για αυτό το διδακτικό. Θα θέλαμε να κάνουμε κάποιες βελτιώσεις αν χρειαστεί.

Συνιστάται: