Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
MPL3115A2 naudojamas MEMS slėgio jutiklis su I2C sąsaja, kad būtų gauti tikslūs slėgio/aukščio ir temperatūros duomenys. Jutiklių išėjimai yra skaitmeninami didelės skiriamosios gebos 24 bitų ADC. Vidinis apdorojimas pašalina kompensavimo užduotis iš pagrindinės MCU sistemos. Jis gali aptikti tik 0,05 kPa pokytį, o tai prilygsta 0,3 m aukščio pokyčiui. Čia yra jo demonstravimas su aviečių pi naudojant „Java“kodą.
1 žingsnis: ko jums reikia..
1. Avietė Pi
2. MPL3115A2
3. I²C kabelis
4. „I²C Shield“, skirtas „Raspberry Pi“
5. Ethernet kabelis
2 žingsnis: jungtys:
Paimkite aviečių pi I2C skydą ir švelniai stumkite jį virš aviečių pi gpio kaiščių.
Tada vieną I2C kabelio galą prijunkite prie MPL3115A2 jutiklio, o kitą - prie I2C skydo.
Taip pat prijunkite Ethernet kabelį prie pi arba galite naudoti „WiFi“modulį.
Sujungimai parodyti aukščiau esančiame paveikslėlyje.
3 žingsnis: kodas:
„MPL3115A2“„Java“kodą galima atsisiųsti iš mūsų „github“saugyklos- „DCUBE Store“.
Čia yra nuoroda į tą patį:
github.com/DcubeTechVentures/MPL3115A2/tree/master/Java
„Java“kodui naudojome „pi4j“biblioteką, čia aprašyti veiksmai, kaip įdiegti „pi4j“į aviečių pi:
pi4j.com/install.html
Taip pat galite nukopijuoti kodą iš čia, jis pateikiamas taip:
// Platinama su laisvos valios licencija.
// Naudokite bet kokiu būdu, pelningai ar nemokamai, jei jis atitinka susijusių darbų licencijas.
// MPL3115A2
// Šis kodas skirtas dirbti su MPL3115A2_I2CS I2C mini moduliu, kurį galima įsigyti iš
importuoti com.pi4j.io.i2c. I2CBus;
importuoti com.pi4j.io.i2c. I2CDevice;
importuoti com.pi4j.io.i2c. I2CFactory;
importuoti java.io. IOException;
viešoji klasė MPL3115A2
{
public static void main (String args ) metimai Išimtis
{
// Sukurti I2C magistralę
I2CBus magistralė = I2CFactory.getInstance (I2CBus. BUS_1);
// Gaukite I2C įrenginį, MPL3115A2 I2C adresas yra 0x60 (96)
I2CDevice device = Bus.getDevice (0x60);
// Pasirinkite valdymo registrą
// Aktyvusis režimas, OSR = 128, altimetro režimas
device.write (0x26, (baitas) 0xB9);
// Pasirinkite duomenų konfigūracijos registrą
// Įgalintas duomenų paruošimo įvykis aukščiui, slėgiui, temperatūrai
device.write (0x13, (baitas) 0x07);
// Pasirinkite valdymo registrą
// Aktyvusis režimas, OSR = 128, altimetro režimas
device.write (0x26, (baitas) 0xB9);
Siūlai. Miegas (1000);
// Perskaitykite 6 baitus duomenų iš adreso 0x00 (00)
// būsena, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
baitas duomenys = naujas baitas [6];
device.read (0x00, duomenys, 0, 6);
// Konvertuokite duomenis į 20 bitų
int tHeight = ((((duomenys [1] ir 0xFF) * 65536) + ((duomenys [2] ir 0xFF) * 256) + (duomenys [3] ir 0xF0)) / 16);
int temp = ((duomenys [4] * 256) + (duomenys [5] ir 0xF0)) / 16;
dvigubas aukštis = tAukštis / 16,0;
dvigubas cTemp = (temp / 16,0);
dvigubas fTemp = cTemp * 1,8 + 32;
// Pasirinkite valdymo registrą
// Aktyvusis režimas, OSR = 128, barometro režimas
device.write (0x26, (baitas) 0x39);
Siūlai. Miegas (1000);
// Perskaitykite 4 baitus duomenų iš adreso 0x00 (00)
// status, pres msb1, pres msb, pres lsb
device.read (0x00, duomenys, 0, 4);
// Konvertuokite duomenis į 20 bitų
int pres = (((duomenys [1] ir 0xFF) * 65536) + ((duomenys [2] ir 0xFF) * 256) + (duomenys [3] ir 0xF0)) / 16;
dvigubas slėgis = (pres / 4,0) / 1000,0;
// Išvesti duomenis į ekraną
System.out.printf ("Slėgis: %.2f kPa %n", slėgis);
System.out.printf ("Aukštis: %.2f m %n", aukštis);
System.out.printf ("Temperatūra Celsijaus: %.2f C %n", cTemp);
System.out.printf ("Temperatūra Farenheitu: %.2f F %n", fTemp);
}
}
4 žingsnis: programos:
Įvairios MPL3115A2 programos apima didelio tikslumo altimetriją, išmaniuosius telefonus/planšetinius kompiuterius, asmeninės elektronikos aukščio matavimus ir tt. Jis taip pat gali būti įtrauktas į GPS mirusiųjų skaičiavimą, GPS gerinimą skubios pagalbos tarnyboms, žemėlapio pagalbinę įrangą, navigaciją ir orų stoties įrangą.