2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
MPL3115A2 wykorzystuje czujnik ciśnienia MEMS z interfejsem I2C w celu zapewnienia dokładnych danych dotyczących ciśnienia/wysokości i temperatury. Wyjścia czujnika są digitalizowane przez 24-bitowy przetwornik ADC o wysokiej rozdzielczości. Przetwarzanie wewnętrzne usuwa zadania dotyczące wynagrodzeń z systemu hosta MCU. Jest w stanie wykryć zmianę tylko o 0,05 kPa, co odpowiada zmianie wysokości o 0,3 m. Oto jego demonstracja z raspberry pi przy użyciu kodu Pythona.
Krok 1: Czego potrzebujesz.
1. Raspberry Pi
2. MPL3115A2
3. Kabel I²C
4. Osłona I²C dla Raspberry Pi
5. Kabel Ethernet
Krok 2: Połączenia:
Weź nakładkę I2C dla raspberry pi i delikatnie nałóż ją na piny gpio raspberry pi.
Następnie podłącz jeden koniec kabla I2C do czujnika MPL3115A2, a drugi koniec do ekranu I2C.
Podłącz również kabel Ethernet do pi lub możesz użyć modułu WiFi.
Połączenia prezentuje powyższy obrazek.
Krok 3: Kod:
Kod Pythona dla MPL3115A2 można pobrać z naszego repozytorium Github-DCUBE Store Community.
Tutaj jest link
Użyliśmy biblioteki SMBus do kodu Pythona, kroki instalacji SMBus na raspberry pi są opisane tutaj:
pypi.python.org/pypi/smbus-cffi/0.5.1
Możesz również skopiować kod stąd, jest on podany w następujący sposób:
# Rozprowadzany z wolną licencją.
# Używaj go w dowolny sposób, z zyskiem lub za darmo, pod warunkiem, że pasuje do licencji powiązanych z nim utworów.
# MPL3115A2
# Ten kod jest przeznaczony do pracy z minimodułem MPL3115A2_I2CS I2C
importuj smbus
czas importu
# Uzyskaj magistralę I2C
autobus = smbus. SMBus(1)
# Adres MPL3115A2, 0x60(96)
# Wybierz rejestr kontrolny, 0x26(38)
# 0xB9(185) Tryb aktywny, OSR = 128, Tryb wysokościomierza
bus.write_byte_data (0x60, 0x26, 0xB9)
# Adres MPL3115A2, 0x60(96)
# Wybierz rejestr konfiguracji danych, 0x13(19)
# 0x07(07) Zdarzenie gotowości danych włączone dla wysokości, ciśnienia, temperatury
bus.write_byte_data (0x60, 0x13, 0x07)
# Adres MPL3115A2, 0x60(96)
# Wybierz rejestr kontrolny, 0x26(38)
# 0xB9(185) Tryb aktywny, OSR = 128, Tryb wysokościomierza
bus.write_byte_data (0x60, 0x26, 0xB9)
czas.sen(1)
# Adres MPL3115A2, 0x60(96)
# Odczytaj dane z powrotem z 0x00(00), 6 bajtów
# status, wZROST MSB1, wZROST MSB, WZROST MSB, temp MSB, temp MSB
dane = bus.read_i2c_block_data(0x60, 0x00, 6)
# Konwertuj dane na 20-bitów
wysokość = ((dane[1] * 65536) + (dane[2] * 256) + (dane[3] & 0xF0)) / 16
temp = ((dane[4] * 256) + (dane[5] i 0xF0)) / 16
wysokość = wysokość / 16,0
cTemp = temperatura / 16,0
fTemp = cTemp * 1,8 + 32
# Adres MPL3115A2, 0x60(96)
# Wybierz rejestr kontrolny, 0x26(38)
# 0x39(57) Tryb aktywny, OSR = 128, Tryb barometru
bus.write_byte_data (0x60, 0x26, 0x39)
czas.sen(1)
# Adres MPL3115A2, 0x60(96)
# Odczytaj dane z powrotem z 0x00(00), 4 bajty
# status, wciśnij MSB1, wciśnij MSB, wciśnij LSB
dane = bus.read_i2c_block_data(0x60, 0x00, 4)
# Konwertuj dane na 20-bitów
pres = ((dane[1] * 65536) + (dane[2] * 256) + (dane[3] & 0xF0)) / 16
ciśnienie = (pres / 4.0) / 1000,0
# Dane wyjściowe na ekran
print "Ciśnienie: %.2f kPa" %ciśnienie
print "Wysokość: %.2f m" %altitude
print "Temperatura w stopniach Celsjusza: %.2f C" %cTemp
print "Temperatura w stopniach Fahrenheita: %.2f F" %fTemp
Krok 4: Aplikacje:
Różne zastosowania MPL3115A2 obejmują wysokościomierze o wysokiej dokładności, smartfony/tablety, wysokościomierze elektroniki osobistej itp. Można go również włączyć do systemu GPS Dead Reckoning, ulepszeń GPS dla służb ratunkowych, asystenta mapy, nawigacji, a także wyposażenia stacji pogodowej.