2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
MPL3115A2 aniq bosim/balandlik va harorat ma'lumotlarini taqdim etish uchun I2C interfeysli MEMS bosim sensori bilan ishlaydi. Sensor chiqishlari yuqori aniqlikdagi 24 bitli ADC yordamida raqamlashtirilgan. Ichki ishlov berish MCU tizimidagi kompensatsiya vazifalarini olib tashlaydi. U 0,05 kPa o'zgarishini aniqlay oladi, bu balandlikning 0,3 m o'zgarishiga teng. Bu erda java kodi yordamida malina pi bilan namoyish.
1 -qadam: Sizga nima kerak.. !
1. Raspberry Pi
2. MPL3115A2
3. I²C kabeli
4. Raspberry Pi uchun I²C qalqoni
5. Ethernet kabeli
2 -qadam: Ulanishlar:
Malinali pi uchun I2C qalqonini oling va uni malina pi gpio pimlariga sekin suring.
Keyin I2C kabelining bir uchini MPL3115A2 sensoriga, ikkinchi uchini esa I2C ekraniga ulang.
Ethernet kabelini pi -ga ulang yoki WiFi modulidan foydalanishingiz mumkin.
Ulanishlar yuqoridagi rasmda ko'rsatilgan.
3 -qadam: Kod:
MPL3115A2 uchun java kodini bizning github omboridan- DCUBE do'konidan yuklab olish mumkin.
Mana shu havola:
github.com/DcubeTechVentures/MPL3115A2/tree/master/Java
Biz Java kodi uchun pi4j kutubxonasidan foydalandik, malina pi ga pi4j o'rnatish bosqichlari bu erda tasvirlangan:
pi4j.com/install.html
Siz bu erdan kodni nusxalashingiz mumkin, u quyidagicha berilgan:
// Ixtiyoriy litsenziya bilan tarqatilgan.
// Agar xohlasangiz, foyda yoki tekin ishlating, agar u tegishli asarlar litsenziyalariga mos kelsa.
// MPL3115A2
// Bu kod MPL3115A2_I2CS I2C Mini moduli bilan ishlash uchun mo'ljallangan.
com.pi4j.io.i2c. I2CBus -ni import qilish;
com.pi4j.io.i2c. I2CDevice -ni import qilish;
com.pi4j.io.i2c. I2CFactory -ni import qilish;
java.io. IOException ni import qilish;
umumiy sinf MPL3115A2
{
public static void main (String args ) istisno qiladi
{
// I2C avtobusini yarating
I2CBus avtobus = I2CFactory.getInstance (I2CBus. BUS_1);
// I2C qurilmasini oling, MPL3115A2 I2C manzili 0x60 (96)
I2CDevice qurilmasi = Bus.getDevice (0x60);
// Boshqarish registrini tanlang
// Faol rejim, OSR = 128, altimetr rejimi
device.write (0x26, (bayt) 0xB9);
// Ma'lumot konfiguratsiyasi registrini tanlang
// Ma'lumot tayyor hodisasi balandlik, bosim, harorat uchun yoqilgan
device.write (0x13, (bayt) 0x07);
// Boshqarish registrini tanlang
// Faol rejim, OSR = 128, altimetr rejimi
device.write (0x26, (bayt) 0xB9);
Thread.sleep (1000);
// 0x00 (00) manzilidan 6 bayt ma'lumotni o'qing
// status, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
bayt ma'lumotlar = yangi bayt [6];
device.read (0x00, ma'lumotlar, 0, 6);
// Ma'lumotni 20 bitga aylantiring
int tHeight = ((((ma'lumotlar [1] & 0xFF) * 65536) + ((ma'lumotlar [2] & 0xFF) * 256) + (ma'lumotlar [3] & 0xF0)) / 16);
int temp = ((ma'lumotlar [4] * 256) + (ma'lumotlar [5] & 0xF0)) / 16;
er -xotin balandlik = tHeight / 16.0;
er -xotin cTemp = (temp / 16.0);
er -xotin fTemp = cTemp * 1.8 + 32;
// Boshqarish registrini tanlang
// Faol rejim, OSR = 128, barometr rejimi
device.write (0x26, (bayt) 0x39);
Thread.sleep (1000);
// 0x00 (00) manzilidan 4 bayt ma'lumotni o'qing
// status, pres msb1, pres msb, pres lsb
device.read (0x00, ma'lumotlar, 0, 4);
// Ma'lumotni 20 bitga aylantiring
int pres = (((ma'lumotlar [1] & 0xFF) * 65536) + ((ma'lumotlar [2] & 0xFF) * 256) + (ma'lumotlar [3] & 0xF0)) / 16;
er -xotin bosim = (pres / 4.0) / 1000.0;
// Ma'lumotni ekranga chiqarish
System.out.printf ("Bosim: %.2f kPa %n", bosim);
System.out.printf ("Balandlik: %.2f m %n", balandlik);
System.out.printf ("Selsiy bo'yicha harorat: %.2f C %n", cTemp);
System.out.printf ("Farengeytdagi harorat: %.2f F %n", fTemp);
}
}
4 -qadam: Ilovalar:
MPL3115A2 -ning turli xil ilovalari yuqori aniqlikdagi altimetriya, smartfonlar/planshetlar, shaxsiy elektron altimetriya va boshqalarni o'z ichiga oladi. Shuningdek, u GPS o'lik hisob -kitobiga, favqulodda xizmatlar uchun GPS -ni takomillashtirishga, xaritaga yordam berishga, navigatsiyaga, shuningdek ob -havo stantsiyasi uskunasiga qo'shilishi mumkin.