LPS331AP na Raspberry pi w Python'ie, czyli temperatura i ciśnienie na malinie
Pomiar temperatury i ciśnienia z zastosowaniem Raspberry Pi? Można to wykonać wykorzystując czujnik LPS331AP.
Na powyższym zdjęciu można zobaczyć jak wygląda i jak mały jest LPS331AP. Jego dokumentację można pobrać tutaj.
Podłączenie do pinów VDD, GND, SDA i SCL, oraz odpowiadającym im pinom w malinie.
W poniższej tabeli zamieszczony jest mapa rejestrów czujnika, która dostępna jest w dokumentacji.
Można zauważyć że ciśnienie jest zawarte w trzech rejestrach o adresach 0x28, 0x29, 0x2A. Temperatura jest zawarta w dwóch bajtach 0x2B i 0x2C.
Dodatkowo ważnym jest CTRL_REG1 i CTRL_REG2, które odpowidają za włączenie czujnika do pracy i odświeżanie zawartości rejestrów.
Bardziej szczegółowy opis zawiera dokumentacja udostępniona powyżej.
Poniżej kod programu w Pythonie do odczytu wartości zarejestrowanych czujnikiem.
import smbus # importujemy biblioteki
import time
bus = smbus.SMBus(1) # odpalamy smbus
i=0
for i in range(30): # pętla 30 powtórzeń
bus.write_byte_data(0x5d, 0x20, 0b10000000) # odpalamy czujnik
bus.write_byte_data(0x5d, 0x21, 0b1) # aktualizujemy zawartość rejestrów
print'who am I ',bus.read_byte_data(0x5d,0x0F) # wydruk zawartości rejestru "who I am"
Temp_LSB = bus.read_byte_data(0x5d, 0x2b) # odczyt temperatury w dwóch kolejnych rejestrach
Temp_MSB = bus.read_byte_data(0x5d, 0x2c)
count = (Temp_MSB << 8) + Temp_LSB # zapisanie 16 bitowej wartości do jednej zmiennej
if (count >= 0x8000): # najstarszy bit oznacza czy wartość jest + czy -
count1 = -((65535-count) + 1)
else:
count1 = count
Temp = 42.5 + (count1/480.0) # przeliczenie wartości zgodnie z dokumentacją
#print"Temperatura = ",Temp
ph=bus.read_byte_data(0x5d, 0x2a) # odczyt ciśnienia w trzech kolejnych rejestrach
pl = bus.read_byte_data(0x5d, 0x29)
pxl=bus.read_byte_data(0x5d, 0x28)
print'PressOut_XL = ',pxl
cis=float((((ph<<8)+pl)<<8)+pxl)/4096 # przeliczenie wartości ciśnienia zgodnie z dokumentacją
print "cisnienie = ",cis
time.sleep(0.5)
Mam nadzieję, że powyższe się przyda. :)
Pozdrawiam. :)

