2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
MPL3115A2 folosește un senzor de presiune MEMS cu o interfață I2C pentru a furniza date precise de presiune / altitudine și temperatură. Ieșirile senzorului sunt digitalizate printr-un ADC de 24 biți de înaltă rezoluție. Procesarea internă elimină sarcinile de compensare din sistemul MCU gazdă. Este capabil să detecteze o schimbare de numai 0,05 kPa care echivalează cu o schimbare de altitudine de 0,3 m. Iată demonstrația sa cu raspberry pi folosind codul python.
Pasul 1: De ce ai nevoie..
1. Raspberry Pi
2. MPL3115A2
3. Cablu I²C
4. Scut I²C pentru Raspberry Pi
5. Cablu Ethernet
Pasul 2: Conexiuni:
Luați un scut I2C pentru raspberry pi și împingeți-l ușor peste pinii gpio ai raspberry pi.
Apoi conectați capătul cablului I2C la senzorul MPL3115A2 și celălalt capăt la ecranul I2C.
De asemenea, conectați cablul Ethernet la pi sau puteți utiliza un modul WiFi.
Conexiunile sunt afișate în imaginea de mai sus.
Pasul 3: Cod:
Codul python pentru MPL3115A2 poate fi descărcat din depozitul nostru Github- Comunitatea magazinului DCUBE.
Iată linkul
Am folosit biblioteca SMBus pentru codul Python, pașii pentru instalarea SMBus pe raspberry pi sunt descriși aici:
pypi.python.org/pypi/smbus-cffi/0.5.1
De asemenea, puteți copia codul de aici, acesta este dat după cum urmează:
# Distribuit cu o licență de voință liberă.
# Folosiți-l în orice mod doriți, profit sau gratuit, cu condiția să se încadreze în licențele lucrărilor sale asociate.
# MPL3115A2
# Acest cod este conceput pentru a funcționa cu Mini-modulul MPL3115A2_I2CS I2C
import smbus
timpul de import
# Ia autobuzul I2C
autobuz = smbus. SMBus (1)
# Adresă MPL3115A2, 0x60 (96)
# Selectați registrul de control, 0x26 (38)
# 0xB9 (185) Mod activ, OSR = 128, Mod altimetru
bus.write_byte_data (0x60, 0x26, 0xB9)
# Adresă MPL3115A2, 0x60 (96)
# Selectați registrul de configurare a datelor, 0x13 (19)
# 0x07 (07) Eveniment pregătit pentru date activat pentru altitudine, presiune, temperatură
bus.write_byte_data (0x60, 0x13, 0x07)
# Adresă MPL3115A2, 0x60 (96)
# Selectați registrul de control, 0x26 (38)
# 0xB9 (185) Mod activ, OSR = 128, Mod altimetru
bus.write_byte_data (0x60, 0x26, 0xB9)
time.sleep (1)
# Adresă MPL3115A2, 0x60 (96)
# Citiți datele înapoi de la 0x00 (00), 6 octeți
# status, tHight MSB1, tHight MSB, tHight LSB, temp MSB, temp LSB
data = bus.read_i2c_block_data (0x60, 0x00, 6)
# Convertiți datele în 20 de biți
tHeight = ((date [1] * 65536) + (date [2] * 256) + (date [3] & 0xF0)) / 16
temp = ((date [4] * 256) + (date [5] & 0xF0)) / 16
altitudine = tAltime / 16,0
cTemp = temp / 16.0
fTemp = cTemp * 1,8 + 32
# Adresă MPL3115A2, 0x60 (96)
# Selectați registrul de control, 0x26 (38)
# 0x39 (57) Mod activ, OSR = 128, Mod barometru
bus.write_byte_data (0x60, 0x26, 0x39)
time.sleep (1)
# Adresă MPL3115A2, 0x60 (96)
# Citiți datele înapoi de la 0x00 (00), 4 octeți
# status, pres MSB1, pres MSB, pres LSB
data = bus.read_i2c_block_data (0x60, 0x00, 4)
# Convertiți datele în 20 de biți
pres = ((date [1] * 65536) + (date [2] * 256) + (date [3] & 0xF0)) / 16
presiune = (pres / 4.0) / 1000.0
# Ieșire date pe ecran
tipăriți "Presiune:%.2f kPa"% presiune
tipăriți "Altitudine:%.2f m"% altitudine
tipăriți "Temperatura în grade Celsius:%.2f C"% cTemp
print "Temperatura în Fahrenheit:%.2f F"% fTemp
Pasul 4: Aplicații:
Diverse aplicații ale MPL3115A2 includ altimetrie de înaltă precizie, telefoane inteligente / tablete, altimetrie electronică personală etc. Poate fi, de asemenea, încorporată în GPS Dead Reckoning, GPS Enhancement for Emergency Services, Map Assist, Navigation, precum și echipamente pentru stațiile meteorologice.