Raspberry Pi - MPL3115A2 Precision höjdmätare Sensor Python Tutorial (3 / 4 steg)
Steg 3: kod:
Python koden för MPL3115A2 kan hämtas från vår github repository-ControlEverythingCommunity
Här är länken för samma:
https://github.com/ControlEverythingCommunity/MPL3...
Databladet för MPL3115A2 kan hittas här:
https://s3.amazonaws.com/controleverything.Media/c...
Vi har använt SMBus bibliotek för python kod, stegen för att installera SMBus på raspberry pi beskrivs här:
https://pypi.python.org/pypi/SMBus-cffi/0.5.1
Du kan också kopiera koden från här, det ges enligt följande:
# Distribueras med en fri vilja licens.
# Använd det något sätt du vill, vinst eller gratis, förutsatt att den passar i licenser av dess tillhörande arbeten.
# MPL3115A2
# Den här koden är avsedd att arbeta med MPL3115A2_I2CS I2C Mini modulen tillgänglig från ControlEverything.com.
# https://www.controleverything.com/products
importera smbus
Importera tid
# Få I2C bussen
Bus = smbus. SMBus(1)
# MPL3115A2 adress, 0x60(96)
# Select-kontrollen registrerar, 0x26(38)
# 0xB9(185) aktivt läge, OSR = 128, höjdmätarläget
Bus.write_byte_data (0x60, 0x26, 0xB9)
# MPL3115A2 adress, 0x60(96)
# Välj data konfiguration registrera, 0x13(19)
# 0x07(07) Data redo händelse aktiverat för höjd, tryck, temperatur
Bus.write_byte_data (0x60, 0x13, 0x07)
# MPL3115A2 adress, 0x60(96)
# Select-kontrollen registrerar, 0x26(38)
# 0xB9(185) aktivt läge, OSR = 128, höjdmätarläget
Bus.write_byte_data (0x60, 0x26, 0xB9)
Time.Sleep(1)
# MPL3115A2 adress, 0x60(96)
# Läs data tillbaka från 0x00(00), 6 byte
# status, tHeight MSB1, tHeight MSB, tHeight LSB, temp MSB, temp-LSB
data = bus.read_i2c_block_data (0x60, 0x00, 6)
# Konvertera data till 20-bitar
tHeight = ((data [1] * 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16
Temp = ((data [4] * 256) + (data [5] & 0xF0)) / 16
höjd = tHeight / 16,0
cTemp = temp / 16,0
fTemp = cTemp * 1,8 + 32
# MPL3115A2 adress, 0x60(96)
# Select-kontrollen registrerar, 0x26(38)
# 0x39(57) aktivt läge, OSR = 128, barometerläget
Bus.write_byte_data (0x60, 0x26, 0x39)
Time.Sleep(1)
# MPL3115A2 adress, 0x60(96)
# Läs data tillbaka från 0x00(00), 4 byte
# status, pres MSB1, pres MSB, pres LSB
data = bus.read_i2c_block_data (0x60, 0x00, 4)
# Konvertera data till 20-bitar
Pres = ((data [1] * 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16
Tryck = (pres / 4.0) / 1000.0
# Utdata till skärm
skriva ut "tryck: %.2f kPa" % Tryck
skriva ut "höjd: %.2f m" % höjd
skriva ut "temperaturen i Celsius: %.2f C" % cTemp
skriva ut "temperaturen i Fahrenheit: %.2f F" % fTemp