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 python 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 python kodini bizning Github omboridan- DCUBE do'konlar hamjamiyatidan yuklab olish mumkin.
Mana havola
Biz python kodi uchun SMBus kutubxonasidan foydalandik, malina pi ga SMBus o'rnatish bosqichlari bu erda tasvirlangan:
pypi.python.org/pypi/smbus-cffi/0.5.1
Siz bu erdan kodni nusxalashingiz mumkin, u quyidagicha berilgan:
# Ixtiyoriy litsenziya bilan tarqatilgan.
# Agar xohlasang, foyda yoki tekin, agar u tegishli ish litsenziyalariga mos keladigan bo'lsa, ishlat.
# MPL3115A2
# Bu kod MPL3115A2_I2CS I2C Mini moduli bilan ishlash uchun mo'ljallangan
smbus import qilish
import vaqti
# I2C avtobusini oling
avtobus = smbus. SMBus (1)
# MPL3115A2 manzili, 0x60 (96)
# Boshqarish registrini tanlang, 0x26 (38)
# 0xB9 (185) Faol rejim, OSR = 128, Altimetr rejimi
bus.write_byte_data (0x60, 0x26, 0xB9)
# MPL3115A2 manzili, 0x60 (96)
# Ma'lumot konfiguratsiyasi registrini tanlang, 0x13 (19)
# 0x07 (07) Ma'lumot tayyorligi hodisasi balandlik, bosim, harorat uchun yoqilgan
bus.write_byte_data (0x60, 0x13, 0x07)
# MPL3115A2 manzili, 0x60 (96)
# Boshqarish registrini tanlang, 0x26 (38)
# 0xB9 (185) Faol rejim, OSR = 128, Altimetr rejimi
bus.write_byte_data (0x60, 0x26, 0xB9)
uyqu (1)
# MPL3115A2 manzili, 0x60 (96)
# 0x00 (00), 6 baytdan ma'lumotlarni o'qing
# status, tHeight MSB1, tHeight MSB, tHeight LSB, temp MSB, temp LSB
ma'lumotlar = bus.read_i2c_block_data (0x60, 0x00, 6)
# Ma'lumotni 20 bitga aylantiring
tHeight = ((ma'lumotlar [1] * 65536) + (ma'lumotlar [2] * 256) + (ma'lumotlar [3] va 0xF0)) / 16
temp = ((ma'lumotlar [4] * 256) + (ma'lumotlar [5] & 0xF0)) / 16
balandlik = balandlik / 16.0
cTemp = temp / 16.0
fTemp = cTemp * 1.8 + 32
# MPL3115A2 manzili, 0x60 (96)
# Boshqarish registrini tanlang, 0x26 (38)
# 0x39 (57) Faol rejim, OSR = 128, Barometr rejimi
bus.write_byte_data (0x60, 0x26, 0x39)
uyqu (1)
# MPL3115A2 manzili, 0x60 (96)
# Ma'lumotni 0x00 (00), 4 baytdan qaytarib o'qing
# status, MSB1, MSB, Pres LSB
ma'lumotlar = bus.read_i2c_block_data (0x60, 0x00, 4)
# Ma'lumotni 20 bitga aylantiring
pres = ((ma'lumotlar [1] * 65536) + (ma'lumotlar [2] * 256) + (ma'lumotlar [3] va 0xF0)) / 16
bosim = (pres / 4.0) / 1000.0
# Ma'lumotlarni ekranga chiqarish
chop etish "Bosim: %.2f kPa" %bosim
"Balandlik: %.2f m" %balandlikni chop eting
chop etish "Tselsiy bo'yicha harorat: %.2f C" %cTemp
chop etish "Farengeytdagi harorat: %.2f F" %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.