In this example we take a look at the DPS310 barometric pressure sensor from Infineon to a Raspberry Pi 4
Description
The pressure sensor element is based on a capacitive sensing principle which guarantees high precision during temperature changes.
The small package makes the DPS310 ideal for mobile applications and wearable devices.The internal signal processor converts the output from the pressure and temperature sensor elements to 24 bit results.
Each unit is individually calibrated, the calibration coefficients calculated during this process are stored in the calibration registers.
The coefficients are used in the application to convert the measurement results to high accuracy pressure and temperature values.
The result FIFO can store up to 32 measurement results, allowing for a reduced host processor polling rate. Sensor measurements and calibration coefficients are available through the serial I2C or SPI interface.
The measurement status is indicated by status bits or interrupts on the SDO pin.
Features
- Supply voltage range 1.7V to 3.6V
- Operation range 300hPa – 1200hPa
- Sensor’s precision 0.002hPa
- Relative accuracy ±0.06hPa
- Pressure temperature sensitivity of 0.5Pa/K
- Temperature accuracy ±0.5C°
This is the sensor that I bought
Parts Required
Various parts used in this example
Schematic/Connection
I connected the DPS310 to the Raspberry Pi 4 like this
Steps for installation
This is the library from https://github.com/Infineon/RaspberryPi_DPS
Supported hardware –> Raspberry pi Zero/3/3B+/4B
- Update apt
sudo apt update
- Enable i2c (Interfacing options menu and then I2C enable). For detailed steps see this article.
sudo raspi-config
- Install pip3
sudo apt install python3-pip
- Install smbus
pip3 install smbus
sudo apt-get install -y python-smbus i2c-tools
Installing from PyPI
On supported GNU/Linux systems like the Raspberry Pi, you can install the driver from PyPI
For current user:
pip3 install DigitalPressureSensor
To install system-wide (this may be required in some cases):
sudo pip3 install DigitalPressureSensor
Code Example
I used Thonny for development and the library above, I copied one of the examples from the github repo
[codesyntax lang=”python”]
import DPS from time import sleep dps310 = DPS.DPS() try: while True: scaled_p = dps310.calcScaledPressure() scaled_t = dps310.calcScaledTemperature() p = dps310.calcCompPressure(scaled_p, scaled_t) t = dps310.calcCompTemperature(scaled_t) print(f'{p:8.1f} Pa {t:4.1f} C') sleep(0.1) except KeyboardInterrupt: pass
[/codesyntax]
Output
Run this example in Thonny and you will see something like this in the Shell window
%Run dps.py
81254.0 Pa 111.5 C
99858.5 Pa 111.5 C
98622.3 Pa 17.3 C
98622.3 Pa 17.3 C
98621.5 Pa 17.3 C
98622.1 Pa 17.3 C
Links