Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Το MPL3115A2 χρησιμοποιεί έναν αισθητήρα πίεσης MEMS με διεπαφή I2C για να παρέχει ακριβή δεδομένα πίεσης/υψομέτρου και θερμοκρασίας. Οι έξοδοι του αισθητήρα ψηφιοποιούνται με ADC υψηλής ανάλυσης 24-bit. Η εσωτερική επεξεργασία αφαιρεί εργασίες αντιστάθμισης από το κεντρικό σύστημα MCU. Είναι ικανό να ανιχνεύσει μια μεταβολή μόνο σε 0,05 kPa που ισοδυναμεί με μια αλλαγή ύψους 0,3 m. Εδώ είναι η επίδειξή του με raspberry pi χρησιμοποιώντας κώδικα python.
Βήμα 1: Αυτό που χρειάζεστε..
1. Raspberry Pi
2. MPL3115A2
3. Καλώδιο I²C
4. I²C Shield για το Raspberry Pi
5. Καλώδιο Ethernet
Βήμα 2: Συνδέσεις:
Πάρτε μια ασπίδα I2C για raspberry pi και σπρώξτε την απαλά πάνω από τις καρφίτσες gpio του raspberry pi.
Στη συνέχεια, συνδέστε το ένα άκρο του καλωδίου I2C στον αισθητήρα MPL3115A2 και το άλλο άκρο στην ασπίδα I2C.
Συνδέστε επίσης το καλώδιο Ethernet στο pi ή μπορείτε να χρησιμοποιήσετε μια μονάδα WiFi.
Οι συνδέσεις φαίνονται στην παραπάνω εικόνα.
Βήμα 3: Κωδικός:
Ο κωδικός python για MPL3115A2 μπορεί να μεταφορτωθεί από το αποθετήριο Github μας- DCUBE Store Community.
Ορίστε ο σύνδεσμος
Έχουμε χρησιμοποιήσει τη βιβλιοθήκη SMBus για κώδικα python, τα βήματα για την εγκατάσταση του SMBus στο raspberry pi περιγράφονται εδώ:
pypi.python.org/pypi/smbus-cffi/0.5.1
Μπορείτε επίσης να αντιγράψετε τον κώδικα από εδώ, δίνεται ως εξής:
# Διανέμεται με άδεια ελεύθερης βούλησης.
# Χρησιμοποιήστε το με όποιον τρόπο θέλετε, κερδοφόρα ή δωρεάν, υπό την προϋπόθεση ότι ταιριάζει στις άδειες των σχετικών έργων του.
# MPL3115A2
# Αυτός ο κώδικας έχει σχεδιαστεί για να λειτουργεί με το Mini Module MPL3115A2_I2CS I2C
εισαγωγή smbus
χρόνο εισαγωγής
# Πάρτε το λεωφορείο I2C
bus = smbus. SMBus (1)
# Διεύθυνση MPL3115A2, 0x60 (96)
# Επιλογή καταχωρητή ελέγχου, 0x26 (38)
# 0xB9 (185) Ενεργή λειτουργία, OSR = 128, Λειτουργία υψομέτρου
bus.write_byte_data (0x60, 0x26, 0xB9)
# Διεύθυνση MPL3115A2, 0x60 (96)
# Επιλογή καταχωρητή διαμόρφωσης δεδομένων, 0x13 (19)
# 0x07 (07) Ενεργοποιήθηκε η δυνατότητα προετοιμασίας δεδομένων για υψόμετρο, πίεση, θερμοκρασία
bus.write_byte_data (0x60, 0x13, 0x07)
# Διεύθυνση MPL3115A2, 0x60 (96)
# Επιλογή καταχωρητή ελέγχου, 0x26 (38)
# 0xB9 (185) Ενεργή λειτουργία, OSR = 128, Λειτουργία υψομέτρου
bus.write_byte_data (0x60, 0x26, 0xB9)
ώρα. ύπνος (1)
# Διεύθυνση MPL3115A2, 0x60 (96)
# Ανάγνωση δεδομένων από 0x00 (00), 6 byte
# κατάσταση, tHeight MSB1, tHeight MSB, tHeight LSB, temp MSB, temp LSB
δεδομένα = bus.read_i2c_block_data (0x60, 0x00, 6)
# Μετατρέψτε τα δεδομένα σε 20-bit
tHeight = ((δεδομένα [1] * 65536) + (δεδομένα [2] * 256) + (δεδομένα [3] & 0xF0)) / 16
temp = ((δεδομένα [4] * 256) + (δεδομένα [5] & 0xF0)) / 16
υψόμετρο = tHightight / 16.0
cTemp = temp / 16.0
fTemp = cTemp * 1,8 + 32
# Διεύθυνση MPL3115A2, 0x60 (96)
# Επιλογή καταχωρητή ελέγχου, 0x26 (38)
# 0x39 (57) Ενεργή λειτουργία, OSR = 128, Λειτουργία βαρόμετρου
bus.write_byte_data (0x60, 0x26, 0x39)
ώρα. ύπνος (1)
# Διεύθυνση MPL3115A2, 0x60 (96)
# Ανάγνωση δεδομένων από 0x00 (00), 4 byte
# κατάσταση, pres MSB1, pres MSB, pres LSB
δεδομένα = bus.read_i2c_block_data (0x60, 0x00, 4)
# Μετατρέψτε τα δεδομένα σε 20-bit
pres = ((δεδομένα [1] * 65536) + (δεδομένα [2] * 256) + (δεδομένα [3] & 0xF0)) / 16
πίεση = (pres / 4.0) / 1000.0
# Έξοδος δεδομένων στην οθόνη
εκτύπωση "Πίεση: %.2f kPa" %πίεση
εκτύπωση "Υψόμετρο: %.2f m" %υψόμετρο
εκτύπωση "Θερμοκρασία σε Κελσίου: %.2f C" %cTemp
εκτύπωση "Θερμοκρασία σε Φαρενάιτ: %.2f F" %fTemp
Βήμα 4: Εφαρμογές:
Διάφορες εφαρμογές του MPL3115A2 περιλαμβάνουν υψομετρία υψηλής ακρίβειας, Smartphones/Tablets, Personal Electronics Altimetry κ.λπ. Μπορεί επίσης να ενσωματωθεί σε GPS Dead Reckoning, GPS Enhancement for Emergency Services, Map Assist, Navigation καθώς και Εξοπλισμός Μετεωρολογικού Σταθμού.