İçindekiler:

Raspberry Pi - MPL3115A2 Hassas Altimetre Sensörü Python Eğitimi: 4 Adım
Raspberry Pi - MPL3115A2 Hassas Altimetre Sensörü Python Eğitimi: 4 Adım

Video: Raspberry Pi - MPL3115A2 Hassas Altimetre Sensörü Python Eğitimi: 4 Adım

Video: Raspberry Pi - MPL3115A2 Hassas Altimetre Sensörü Python Eğitimi: 4 Adım
Video: DEF CON 25 - See no evil and hear no evil - Hacking invisibly and silently with light and sound 2024, Kasım
Anonim
Image
Image

MPL3115A2, doğru Basınç/İrtifa ve Sıcaklık verileri sağlamak için I2C arayüzüne sahip bir MEMS basınç sensörü kullanır. Sensör çıkışları, yüksek çözünürlüklü 24 bit ADC ile sayısallaştırılır. Dahili işleme, ana bilgisayar MCU sisteminden tazminat görevlerini kaldırır. Sadece 0,05 kPa'da, yani 0,3 m'lik bir irtifa değişikliğine denk gelen bir değişikliği tespit etme yeteneğine sahiptir. İşte python kodunu kullanarak ahududu pi ile gösterimi.

Adım 1: İhtiyacınız Olan Şey..!

Neye ihtiyacın var..!!
Neye ihtiyacın var..!!

1. Ahududu Pi

2. MPL3115A2

3. I²C Kablosu

4. Raspberry Pi için I²C Kalkanı

5. Ethernet Kablosu

Adım 2: Bağlantılar:

Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar

Ahududu pi için bir I2C kalkanı alın ve ahududu pi'nin gpio pimlerinin üzerine hafifçe itin.

Ardından I2C kablosunun bir ucunu MPL3115A2 sensörüne ve diğer ucunu I2C blendajına bağlayın.

Ayrıca Ethernet kablosunu pi'ye bağlayın veya bir WiFi modülü kullanabilirsiniz.

Bağlantılar yukarıdaki resimde gösterilmiştir.

Adım 3: Kod:

Kod
Kod

MPL3115A2 için python kodu Github depomuzdan - DCUBE Mağaza Topluluğundan indirilebilir.

Bağlantı burada

Python kodu için SMBus kütüphanesini kullandık, raspberry pi'ye SMBus kurma adımları burada açıklanmıştır:

pypi.python.org/pypi/smbus-cffi/0.5.1

Kodu buradan da kopyalayabilirsiniz, aşağıdaki şekilde verilmiştir:

# Özgür irade lisansıyla dağıtılır.

# İlgili eserlerinin lisanslarına uyması koşuluyla, istediğiniz şekilde, kârlı veya ücretsiz olarak kullanın.

# MPL3115A2

# Bu kod MPL3115A2_I2CS I2C Mini Modülü ile çalışmak üzere tasarlanmıştır

smbus'u içe aktar

ithalat zamanı

# I2C veri yolunu alın

veri yolu = smbus. SMBus(1)

# MPL3115A2 adresi, 0x60(96)

# Kontrol kaydı seç, 0x26(38)

# 0xB9(185) Aktif mod, OSR = 128, Altimetre modu

bus.write_byte_data(0x60, 0x26, 0xB9)

# MPL3115A2 adresi, 0x60(96)

# Veri yapılandırma kaydını seçin, 0x13(19)

# 0x07(07) Rakım, basınç, sıcaklık için veri hazır olayı etkinleştirildi

bus.write_byte_data(0x60, 0x13, 0x07)

# MPL3115A2 adresi, 0x60(96)

# Kontrol kaydı seç, 0x26(38)

# 0xB9(185) Aktif mod, OSR = 128, Altimetre modu

bus.write_byte_data(0x60, 0x26, 0xB9)

zaman.uyku(1)

# MPL3115A2 adresi, 0x60(96)

# 0x00(00), 6 bayttan veriyi geri oku

# durum, Yükseklik MSB1, Yükseklik MSB, Yükseklik LSB, temp MSB, temp LSB

veri = bus.read_i2c_block_data(0x60, 0x00, 6)

# Veriyi 20 bit'e dönüştürün

Yükseklik = ((veri[1] * 65536) + (veri[2] * 256) + (veri[3] & 0xF0)) / 16

sıcaklık = ((veri[4] * 256) + (veri[5] & 0xF0)) / 16

yükseklik = tYükseklik / 16.0

cTemp = sıcaklık / 16.0

fTemp = cTemp * 1.8 + 32

# MPL3115A2 adresi, 0x60(96)

# Kontrol kaydı seç, 0x26(38)

# 0x39(57) Aktif mod, OSR = 128, Barometre modu

bus.write_byte_data(0x60, 0x26, 0x39)

zaman.uyku(1)

# MPL3115A2 adresi, 0x60(96)

# 0x00(00), 4 bayttan veriyi geri oku

# durum, MSB1'e basın, MSB'ye basın, LSB'ye basın

veri = bus.read_i2c_block_data(0x60, 0x00, 4)

# Veriyi 20 bit'e dönüştürün

pres = ((veri[1] * 65536) + (veri[2] * 256) + (veri[3] & 0xF0)) / 16

basınç = (basınç / 4.0) / 1000.0

# Ekrana veri çıkışı

"Basınç: %.2f kPa" yazdırın %basınç

"Rakım: %.2f m" yazdır %rakım

print "Sıcaklık Santigrat cinsinden: %.2f C" %cTemp

print "Sıcaklık Fahrenheit cinsinden: %.2f F" %fTemp

Adım 4: Uygulamalar:

MPL3115A2'nin çeşitli uygulamaları arasında Yüksek Doğruluk Altimetri, Akıllı Telefonlar/Tabletler, Kişisel Elektronik Altimetri vb. bulunur. Ayrıca GPS Ölü Hesaplama, Acil Servisler için GPS Geliştirme, Harita Yardımı, Navigasyon ve Hava İstasyonu Ekipmanlarına da dahil edilebilir.

Önerilen: