Home Code Arduino and LPS22HB absolute pressure sensor example

Arduino and LPS22HB absolute pressure sensor example

by shedboy71

In this article we look at another absolute pressure sensor – this time its the LPS22HB

The LPS22HB is an ultra-compact piezoresistive absolute pressure sensor which functions as a digital output barometer. The device comprises a sensing element and an IC interface which communicates through I2C or SPI from the sensing element to the application.

The sensing element, which detects absolute pressure, consists of a suspended membrane manufactured using a dedicated process developed by ST.
The LPS22HB is available in a full-mold, holed LGA package (HLGA). It is guaranteed to operate over a temperature range extending from -40 °C to +85 °C. The package is holed to allow external pressure to reach the sensing element.


  • 260 to 1260 hPa absolute pressure range
  • Current consumption down to 3 μA
  • High overpressure capability: 20x full-scale
  • Embedded temperature compensation
  • 24-bit pressure data output
  • 16-bit temperature data output
  • ODR from 1 Hz to 75 Hz
  • SPI and I²C interfaces
  • Embedded FIFO
  • Interrupt functions: Data Ready, FIFO flags, pressure thresholds
  • Supply voltage: 1.7 to 3.6 V
  • High shock survivability: 22,000 g


Parts Required


Name Link
Arduino Uno UNO R3 CH340G/ATmega328P, compatible for Arduino UNO
LPS22HB Semoic Lps22Hb Pressure Resistance Pressure Sensor Module for High Intensity Industrial Control
Connecting wire Free shipping Dupont line 120pcs 20cm male to male + male to female and female to female jumper wire
sensor shield Expansion IO Board Sensor Shield



arduino and LPS22HB

arduino and LPS22HB


Code Example

This uses the library from hhttps://github.com/adrien3d/IO_LPS22HB

This is a library for the LPS22HB Absolute Digital Barometer
Designed to work with all kinds of LPS22HB Breakout Boards
These sensors use I2C, 2 pins are required to interface, as this :
VDD to 3.3V DC
SCL to A5
SDA to A4
GND to common groud
Written by Adrien Chapelet for IoThings
#include <Wire.h>
#include "IO_LPS22HB.h"
IO_LPS22HB lps22hb;
void setup()
Serial.println("IoThings LPS22HB Arduino Test");
byte who_am_i = lps22hb.whoAmI();
Serial.print("Who Am I? 0x");
Serial.print(who_am_i, HEX);
Serial.println(" (expected: 0xB1)");
if (who_am_i != LPS22HB_WHO_AM_I_VALUE) {
Serial.println("Error while retrieving WHO_AM_I byte...");
while (true) {
// loop forever
void loop()
Serial.print(" mbar, T=");



Open the serial monitor and you should see something like this

IoThings LPS22HB Arduino Test
Who Am I? 0xB1 (expected: 0xB1)
P=982.52 mbar, T=18.21C
P=982.56 mbar, T=18.25C
P=982.51 mbar, T=18.26C
P=982.52 mbar, T=18.27C
P=982.54 mbar, T=18.27C
P=982.55 mbar, T=18.27C
P=982.51 mbar, T=18.26C
P=982.55 mbar, T=18.26C
P=982.55 mbar, T=18.26C



Click to access lps22hb.pdf




You may also like

Leave a Comment

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More