ESP8266 and LPS22HB absolute pressure sensor example

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

Once again lets look at this sensor from the manufacturers perspective


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

Around $5 for the module

Name Link
Wemos Mini D1 mini – ESP8266 by WeMos
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



esp8266 and LPS22HB
esp8266 and LPS22HB


Code Example

This uses the library from

This is the default example which works fine

  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 – I put my finger on the sensor, hence the value is rising

P=983.26 mbar, T=27.88C
P=983.22 mbar, T=28.27C
P=983.24 mbar, T=28.60C
P=983.24 mbar, T=28.93C
P=983.27 mbar, T=29.23C
P=983.24 mbar, T=29.50C
P=983.24 mbar, T=29.71C
P=983.25 mbar, T=29.89C
P=983.26 mbar, T=30.05C
P=983.25 mbar, T=30.21C
P=983.23 mbar, T=30.34C

I wanted to check the pressure out so I visited the following website – . There are several others.

They stated that the pressure was – Pressure: 992 mb

So not to bad


Click to access lps22hb.pdf




Please enter your comment!
Please enter your name here