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 java.
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 Java dla MPL3115A2 można pobrać z naszego repozytorium github-DCUBE Store.
Oto link do tego samego:
github.com/DcubeTechVentures/MPL3115A2/tree/master/Java
Użyliśmy biblioteki pi4j do kodu java, kroki instalacji pi4j na raspberry pi są opisane tutaj:
pi4j.com/install.html
Możesz również skopiować kod stąd, jest on podany w następujący sposób:
// Rozprowadzane 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 dzieł.
// MPL3115A2
// Ten kod jest przeznaczony do pracy z modułem Mini MPL3115A2_I2CS I2C dostępnym od
importuj com.pi4j.io.i2c. I2CBus;
importuj com.pi4j.io.i2c. I2CDurządzenie;
importuj com.pi4j.io.i2c. I2CFabryka;
import java.io. IOException;
klasa publiczna MPL3115A2
{
public static void main(String args) wyrzuca Wyjątek
{
// Utwórz magistralę I2C
Magistrala I2CBus = I2CFactory.getInstance(I2CBus. BUS_1);
// Pobierz urządzenie I2C, adres MPL3115A2 I2C to 0x60(96)
Urządzenie I2CDevice = Bus.getDevice(0x60);
// Wybierz rejestr kontrolny
// Tryb aktywny, OSR = 128, tryb wysokościomierza
urządzenie.write(0x26, (bajt)0xB9);
// Wybierz rejestr konfiguracji danych
// Zdarzenie gotowości danych włączone dla wysokości, ciśnienia, temperatury
urządzenie.write(0x13, (bajt)0x07);
// Wybierz rejestr kontrolny
// Tryb aktywny, OSR = 128, tryb wysokościomierza
urządzenie.write(0x26, (bajt)0xB9);
Wątek.sen(1000);
// Odczytaj 6 bajtów danych z adresu 0x00(00)
// stan, wysokość msb1, wysokość msb, wysokość msb, temp msb, temp lsb
bajt dane = nowy bajt[6];
urządzenie.odczyt(0x00, dane, 0, 6);
// Konwertuj dane na 20-bitowe
int tHeight = ((((dane[1] & 0xFF) * 65536) + ((dane[2] & 0xFF) * 256) + (dane[3] & 0xF0)) / 16);
int temp = ((dane[4] * 256) + (dane[5] i 0xF0)) / 16;
podwójna wysokość = wysokość / 16,0;
podwójne cTemp = (temp / 16,0);
podwójne fTemp = cTemp * 1,8 + 32;
// Wybierz rejestr kontrolny
// Tryb aktywny, OSR = 128, tryb barometru
urządzenie.write(0x26, (bajt)0x39);
Wątek.sen(1000);
// Odczytaj 4 bajty danych z adresu 0x00(00)
// status, naciśnij msb1, naciśnij msb, naciśnij lsb
urządzenie.odczyt(0x00, dane, 0, 4);
// Konwertuj dane na 20-bitowe
int pres = (((dane[1] i 0xFF) * 65536) + ((dane[2] i 0xFF) * 256) + (dane[3] i 0xF0)) / 16;
podwójne ciśnienie = (pres / 4.0) / 1000,0;
// Prześlij dane na ekran
System.out.printf("Ciśnienie: %.2f kPa %n", ciśnienie);
System.out.printf("Wysokość: %.2f m %n", wysokość);
System.out.printf("Temperatura w stopniach Celsjusza: %.2f C %n", cTemp);
System.out.printf("Temperatura w stopniach Fahrenheita: %.2f F %n", 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.