Skip to main content

Raspberry Pi Pico Micropyhton library to interact with the ST LPS22HH or LPS27HH Barometric pressure sensor

Project description

LPS22HH Pico Driver

Micropython library for the ST LPS22HH and the LPS27HH pressure sensor over SPI or I2C

Overview

The LPS22HH and LPS27HH sensors are high-resolution digital output pressure sensors manufactured by STMicroelectronics. This driver enables seamless integration of the sensors with the Raspberry Pi Pico.

Features

  • Interface to communicate with the LPS22HH and LPS27HH pressure sensor.
  • Reading of pressure and temperature values
  • Configuration of registers via dedicated functions
  • Communication via SPI or I2C
  • Designed to be compatible with the Raspberry Pi Pico running on Micropython. Other boards not tested

Installation

Use pip (see Python Package Index )

> pip install lps22hh

or

Use mip (see MicroPython Package management):

> mpremote mip install github:cbraissant/lps22hh-pico-driver

Getting Started

As the sensor can be used either with SPI or I2C, the first step is to initialize the interface.

For SPI:

from machine import SPI, Pin
from lps22hh import LPS22HH

# Create a new SPI device, and assign the pins corresponding to your device
cs_pin = Pin(1, Pin.OUT)
spi = SPI(0, baudrate=1000000, firstbit=SPI.MSB, sck=Pin(2), mosi=Pin(3), miso=Pin(0))

# Create a new instance of the LPS22HH sensor
sensor = LPS22HH(spi, cs_pin)

For I2C:

import time
from machine import I2C, Pin
from lps22hh import LPS22HH

# Create a new I2C device, and assign the pins corresponding to your device
i2c = I2C(1, sda=Pin(6), scl=Pin(7))

# Create a new instance of the Lps22hh sensor
sensor = LPS22HH(interface=i2c, address=0x5D)

And then interact with the device

# By default, the device is in power-down mode and the ODR need to be changed
# for the device to take continuous measurements
sensor.data_rate = 200

# The Block Data Update (BDU) is used to inhibit the update of the output
# registers until all output registers parts are read, to avoids reading values
# from different sample times
sensor.block_data_update = 1

while True:
    if sensor.new_pressure_data:
        print(sensor.pressure)

Remarks

Some microcontrollers, like the RP2040 start faster than the pressure sensor. To make sure the sensor has time to boot, a delay must be introduced before the definition of the instance.

...
from lps22hh import LPS22HH

# The RP2040 starts faster than the LPSxxHH pressure sensor and a delay must be introduced
time.sleep_ms(100)

# Create a new I2C device, and assign the pins corresponding to your device
i2c = I2C(1, sda=Pin(6), scl=Pin(7))
...

See the I2C or SPI examples for the full code.

TODO

  • FIFO functionalities
  • Interrupts
  • I3C communications

Contributing

Contributions to this project are welcome. If you find any issues, have suggestions for improvements, or want to add new features, feel free to open an issue or submit a pull request.

License

This project is licensed under the MIT License. Feel free to use, modify, and distribute the code in accordance with the terms of the license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lps22hh-1.0.0.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lps22hh-1.0.0-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file lps22hh-1.0.0.tar.gz.

File metadata

  • Download URL: lps22hh-1.0.0.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for lps22hh-1.0.0.tar.gz
Algorithm Hash digest
SHA256 69ce84420d2c6f2cf340a9302e3983e35472000ff466571b1e66a19ac8455bf4
MD5 182e0be909f25011007206b85a71827d
BLAKE2b-256 bdd0a5eba488c7f7955caaf276df08bffbaf466a14231dd8a6c600fcf9e4182e

See more details on using hashes here.

File details

Details for the file lps22hh-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: lps22hh-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for lps22hh-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9856efe478c6bf86f9573f850cbd2d60972c7eb1f573f5da4408852c4990c306
MD5 821d0a6eaef0ad417b4e7630608d26fe
BLAKE2b-256 8ae941c9d092eed471bdc98cb235d9e54b0a5e9b3f5a5988a837bd9147419acc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page