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
Description
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.
Features
- 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 List
Here are the parts I used
| Name | Links | |
| Wemos Mini | ||
| LPS22HB | ||
| Connecting cables | 
Schematic/Connection

Code Example
This uses the library from https://github.com/adrien3d/IO_LPS22HB
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.begin(9600);
	Serial.println("IoThings LPS22HB Arduino Test");
	
	lps22hb.begin(0x5D);
	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("P=");
	Serial.print(lps22hb.readPressure());
	Serial.print(" mbar, T=");
	Serial.print(lps22hb.readTemperature());
	Serial.println("C");
	delay(300);
}
Output
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 – https://www.worldweatheronline.com . There are several others.
They stated that the pressure was – Pressure: 992 mb
So not to bad
Links
https://www.st.com/resource/en/datasheet/lps22hb.pdf