Microbit and LPS22HB absolute pressure sensor example

In this article we look at another pressure sensor – this time its the LPS22HB piezoresistive absolute pressure sensor and we will connect it to our Microbit

This is the sensor I used

Here is some technical information about this sensor

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

I used an expansion board connected to the Micro:bit, this makes it easier to connect sensors using connecting wire

Name Link
Microbit BBC Micro:bit Micro-Controller with Motion Detection, Compass, LED Display and Bluetooth
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
expansion board Microbit expansion board


I used the I2C connection for the sensor

Microbit Sensor
3v3 3v3
Gnd Gnd
SDA – 20 SDA
SCL – 19 SCL

Code Example

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

[codesyntax lang=”cpp”]

#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

P=1014.41 mbar, T=23.33C
P=1014.42 mbar, T=23.41C
P=1014.41 mbar, T=23.45C
P=1014.41 mbar, T=23.47C
P=1014.40 mbar, T=23.45C
P=1014.39 mbar, T=23.40C






Leave a Comment

This div height required for enabling the sticky sidebar
Ad Clicks : Ad Views : Ad Clicks : Ad Views :