Sadržaj:

Raspberry Pi - MPL3115A2 Precizni senzor visinomjera Senzor za Python: 4 koraka
Raspberry Pi - MPL3115A2 Precizni senzor visinomjera Senzor za Python: 4 koraka

Video: Raspberry Pi - MPL3115A2 Precizni senzor visinomjera Senzor za Python: 4 koraka

Video: Raspberry Pi - MPL3115A2 Precizni senzor visinomjera Senzor za Python: 4 koraka
Video: Raspberry Pi MPL3115A2 Precision Altimeter Sensor Java Tutorial 2024, Novembar
Anonim
Image
Image

MPL3115A2 koristi MEMS senzor pritiska sa I2C interfejsom za pružanje tačnih podataka o pritisku/nadmorskoj visini i temperaturi. Izlazi senzora digitalizirani su 24-bitnim ADC-om visoke rezolucije. Interna obrada uklanja zadatke kompenzacije iz host MCU sistema. Sposoban je otkriti promjenu od samo 0,05 kPa, što je jednako promjeni visine 0,3 m. Evo njegove demonstracije s malinom pi pomoću python koda.

Korak 1: Šta vam treba..

Sta ti treba..!!
Sta ti treba..!!

1. Malina Pi

2. MPL3115A2

3. I²C kabel

4. I²C štit za Raspberry Pi

5. Ethernet kabel

Korak 2: Veze:

Veze
Veze
Veze
Veze
Veze
Veze
Veze
Veze

Uzmite I2C štit za malinu pi i nježno je gurnite preko gpio igle maline pi.

Zatim spojite jedan kraj I2C kabela na senzor MPL3115A2, a drugi kraj na I2C štit.

Također priključite Ethernet kabel na pi ili možete koristiti WiFi modul.

Veze su prikazane na gornjoj slici.

Korak 3: Kod:

Šifra
Šifra

Python kod za MPL3115A2 može se preuzeti sa našeg Github spremišta- DCUBE Store Community.

Evo linka

Koristili smo SMBus biblioteku za python kod, koraci za instaliranje SMBus -a na malinu pi opisani su ovdje:

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

Kôd možete i kopirati odavde, dat je na sljedeći način:

# Distribuirano s licencom za slobodnu volju.

# Koristite ga kako god želite, profitno ili besplatno, pod uvjetom da se uklapa u licence povezanih djela.

# MPL3115A2

# Ovaj kôd je dizajniran za rad s MPL3115A2_I2CS I2C mini modulom

import smbus

vreme uvoza

# Nabavite I2C autobus

sabirnica = smbus. SMBus (1)

# MPL3115A2 adresa, 0x60 (96)

# Odaberite kontrolni registar, 0x26 (38)

# 0xB9 (185) Aktivni način rada, OSR = 128, način rada visinomjera

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

# MPL3115A2 adresa, 0x60 (96)

# Odaberite registar konfiguracije podataka, 0x13 (19)

# 0x07 (07) Dozvoljen događaj spremnosti podataka za nadmorsku visinu, pritisak, temperaturu

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

# MPL3115A2 adresa, 0x60 (96)

# Odaberite kontrolni registar, 0x26 (38)

# 0xB9 (185) Aktivni način rada, OSR = 128, način rada visinomjera

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

time.sleep (1)

# MPL3115A2 adresa, 0x60 (96)

# Pročitajte podatke nazad od 0x00 (00), 6 bajtova

# status, tHeight MSB1, tHeight MSB, tHeight LSB, temp MSB, temp LSB

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

# Pretvorite podatke u 20-bitne

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

temp = ((podaci [4] * 256) + (podaci [5] & 0xF0)) / 16

nadmorska visina = tVisina / 16,0

cTemp = temp / 16.0

fTemp = cTemp * 1,8 + 32

# MPL3115A2 adresa, 0x60 (96)

# Odaberite kontrolni registar, 0x26 (38)

# 0x39 (57) Aktivni način rada, OSR = 128, način rada barometra

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

time.sleep (1)

# MPL3115A2 adresa, 0x60 (96)

# Očitavanje podataka unazad od 0x00 (00), 4 bajta

# status, pres MSB1, pres MSB, pres LSB

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

# Pretvorite podatke u 20-bitne

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

pritisak = (pres / 4,0) / 1000,0

# Izlažite podatke na ekran

ispis "Pritisak: %.2f kPa" %pritisak

ispis "Nadmorska visina: %.2f m" %nadmorske visine

ispis "Temperatura u Celzijusima: %.2f C" %cTemp

ispis "Temperatura u Farenhajtu: %.2f F" %fTemp

Korak 4: Aplikacije:

Različite primjene MPL3115A2 uključuju altimetriju visoke preciznosti, pametne telefone/tablete, altimetriju lične elektronike itd. Također se može uključiti u GPS mrtvo računanje, GPS poboljšanje za hitne službe, pomoć pri mapiranju, navigaciju kao i opremu meteorološke stanice.

Preporučuje se: