Tra le tante schede Arduino pensate per il mondo IoT e l’elaborazione dei dati ambientali, la Arduino Nano 33 BLE Sense Rev2 si distingue per la sua compattezza e la ricca dotazione di sensori integrati.
Tra questi, troviamo il sensore LPS22HB dedicato alla misura della Pressione Barometrica.

Indice
Descrizione Arduino Nano 33 BLE Sense
La Arduino Nano 33 BLE Sense Rev2 è l’evoluzione di una scheda già di successo, progettata per portare le capacità dell’intelligenza artificiale e del machine learning (TinyML) direttamente nei vostri progetti IoT e wearable.
Il suo cuore pulsante è il microcontrollore Nordic nRF52840, un SoC (System-on-Chip) a 32-bit basato su ARM Cortex-M4F, che offre prestazioni elevate e un basso consumo energetico.
Questo è inserito all’interno del modulo NINA-B306 (datasheet) prodotto dalla u-blox.

Foto del Modulo NINA-B306
Caratteristiche del modulo NINA-B306
| Produttore | u-blox |
| Modello | NINA-B306 |
| Tipo di modulo di comunicazione | Bluetooth Low Energy 5.0 |
| Potenza del trasmettitore | 10dBm |
| Portata | 1,4km |
| Sensibilita del ricevitore | -100dBm |
| Velocita di trasmissione dei dati | 14Mbps |
| Banda | 2,4GHz |
| Genere di architettura | Cortex M4 (Nordic Nrf52840) |
| Memoria | 256kB RAM 1MB FLASH |
| Numero ingressi/uscite | 38 |
| Temperatura di lavoro | -40...85°C |
| Tensione di alimentazione | 1,7...3,6V DC |
| Interfaccia | ADC, GPIO, I2C, I2S, SPI, UART, USB |
| Montaggio | SMD |
| Dimensioni | 10x15x3,8mm |

Schema a blocchi del modulo NINA-B306
Caratteristiche della Nano 33 BLE Sense
| Microcontrollore | Nordic Semiconductors nRF52840 |
|---|---|
| Tensione operativa | 3.3 V |
| Tensione di ingresso (massima) | 21 V |
| Corrente sui pin di I/O (massima) | 15 mA |
| Frequenza di clock | 64 MHz |
| Dimensione memoria flash | 1 MB |
| Dimensione memoria SRAM | 256 kB |
| Memoria Eeprom | Non presente |
| Pin di I/O digitali | 14 |
| Pin PWM | Tutti i pin digitali |
| UART | 1 |
| SPI | 1 |
| I2C | 1 |
| Pin di ingresso analogici | 8 |
| Pin di uscita analogici | Gli stessi utilizzabili per il PWM |
| Interrupt esterni | Associabili a tutti i pin digitali |
| Pin led utente | 13 |
| Led RGB | Red LED pin P22, Green LED pin P23, LED pin P34 |
| USB | Integrata nel processore nRF52840 |
| IMU | BMI270 (6-Assi, Accel/Giro) + BMM150 (3-Assi, Magnetometro) |
| Microfono | MP34DT06JTR |
| Sensore riconoscimento gestuale, luce e prossimità | APDS9960 |
| Sensore barometrico | LPS22HB |
| Sensore di temperatura e umidità | HS3003 |
| Lunghezza | 45 mm |
| Larghezza | 18 mm |
| Peso | 5 grammi, inclusi i pin header |
Foto della scheda

Sensori presenti sulla scheda
Ciò che rende davvero speciale questa scheda è la sua incredibile dotazione di sensori integrati, che la trasformano in un vero e proprio laboratorio portatile per la raccolta dati:
- Sensore di Movimento a 9 Assi (IMU). Rispetto a quello presente nella prima versione, è ora diviso in due chip per garantire una migliore reperibilità: il BMI270 (Accelerometro e Giroscopio a 6 assi – Bosch Sensortec) e il BMM150 (Magnetometro a 3 assi – Bosch Sensortec) . Questo potente IMU è ideale per il rilevamento del movimento, l’orientamento, la navigazione e il TinyML.
- Sensore di Pressione Barometrica. Il LPS22HB (STMicroelectronics) permette di misurare la pressione atmosferica e, di conseguenza, l’altitudine. È utile per stazioni meteo, droni o sistemi di navigazione.
- Sensore di Umidità e Temperatura. L’HS3003 (Renesas) sostituisce il precedente HTS221, consentendo di monitorare le condizioni ambientali, fondamentale per progetti di domotica o monitoraggio climatico.
- Microfono Digitale (PDM). Il MP34DT06JTR (STMicroelectronics) è un piccolo ma potente microfono per acquisire segnali audio, aprendo le porte a progetti di riconoscimento vocale e sound sensing.
- Sensore di Prossimità, colore e Luce Ambientale (con riconoscimento dei gesti), Il APDS-9960 (Broadcom), oltre a rilevare l’intensità della luce ambientale, ha capacità avanzate di rilevamento del colore, consentendo di identificare tonalità e interpretare gesti specifici, ampliando le possibilità di interazione utente.

Inoltre, la connettività Bluetooth Low Energy (BLE) la rende perfetta per comunicare in modalità wireless con smartphone, tablet o altri dispositivi BLE, consentendo di creare applicazioni IoT a basso consumo e facilmente interfacciabili.
Cos’è il sensore LPS22HB
Uno dei sensori disponibili sulla Nano 33 BLE Sense è il sensore LPS22HB (datasheet), per la misura della temperatura e umidità digitale di alta precisione, prodotto da TE Connectivity, progettato per fornire letture affidabili e stabili anche in condizioni ambientali variabili.

Fonte https://docs. arduino.cc/
Sulla Nano 33 BLE Sense il sensore LPS22HB è già integrato a bordo, il che significa che non serve alcun cablaggio esterno o modulo aggiuntivo: basta utilizzare le librerie giuste per iniziare subito a leggere i dati.
Schema a blocchi del sensore LPS22HB

Caratteristiche del sensore LPS22HB
| Parametro | Valore |
|---|---|
| Pressione max | 290,08psi (2000kPa) |
| Precisione | ±0,015psi (±0,1kPa) |
| Tipo di uscita | I2C, SPI |
| Uscita | 24 b |
| Tensione - Alimentazione | 1,7 ~ 3,6V |
| Caratteristiche | Compensato in temperatura |
| Temperatura di funzionamento | -40°C ~ 85°C |
Pin del sensore LPS22HB

| Numero Pin | Nome | Funzione |
|---|---|---|
| 1 | Vdd_IO | Alimentazione per i pin di I/O |
| 2 | SCL / SPC | Clock seriale I²C (SCL) / Clock porta seriale SPI (SPC) |
| 3 | Reserved | Riservato (collegare a GND) |
| 4 | SDA / SDI / SDI/SDO | Dati seriali I²C (SDA) / Ingresso dati SPI a 4 fili (SDI) / Ingresso/Uscita dati SPI a 3 fili (SDI/SDO) |
| 5 | SDO / SA0 | Uscita dati SPI a 4 fili (SDO) / Bit meno significativo dell’indirizzo dispositivo I²C (SA0) |
| 6 | CS | Abilitazione SPI / Selezione modalità I²C/SPI (1: SPI inattivo / I²C abilitato; 0: SPI attivo / I²C disabilitato) |
| 7 | INT_DRDY | Interrupt o segnale Data Ready |
| 8 | GND | Alimentazione 0 V (massa) |
| 9 | GND | Alimentazione 0 V (massa) |
| 10 | VDD | Alimentazione principale |
Come funziona il sensore LPS22HB
Internamente, il LPS22HB utilizza una membrana piezoresistiva MEMS che si deforma in funzione della pressione atmosferica.

Fonte https://docs. arduino.cc/
La variazione meccanica viene convertita in un segnale elettrico, digitalizzato da un ADC ad alta risoluzione e compensato tramite:
- calibrazione di fabbrica
- compensazione termica
- filtri digitali
Il risultato finale è un valore di pressione stabile e preciso, accessibile tramite registri interni.
Come funzionano la pressione atmosferica e l’altitudine
La pressione atmosferica viene rilevata in base alla deformazione del diaframma, dovuta alla pressione risultante. Maggiore è la pressione, maggiore è il movimento del diaframma, con conseguente aumento della lettura del barometro.
Una volta recuperati i valori del sensore della pressione atmosferica in kPa (unità di misura), possiamo utilizzare la seguente formula matematica per calcolare l’altitudine approssimativa dell’ambiente in metri:
H = 44330 * [1 – (P/p0)^(1/5.255) ]
Dove ” H ” sta per altitudine, ” P ” è la pressione misurata (kPa) dal sensore e “ p0 ” è la pressione di riferimento al livello del mare (101,325 kPa).
Questo grafico mostra la relazione matematica tra la pressione atmosferica e l’altitudine sul livello del mare.

Fonte https://docs. arduino.cc/
Il sensore misura anche la temperatura?
Ebbene si, il sensore LPS22HB è un sensore di pressione barometrica, ma include anche una funzione di misura della temperatura. La ragione per cui fornisce anche il valore di temperatura è dovuta al fatto che la temperatura influisce sulla pressione atmosferica e viceversa. Misurare entrambi i parametri consente di ottenere letture più accurate e di compensare eventuali variazioni.
In molti casi, il valore di temperatura fornito dal sensore è considerato accettabile per applicazioni di base, poiché è generalmente utilizzato per la compensazione della pressione. Tuttavia, se è necessaria una misurazione della temperatura di alta precisione per applicazioni critiche, potrebbe essere più appropriato utilizzare un sensore di temperatura dedicato, poiché il LPS22HB è principalmente progettato per misurare la pressione.
Collegamento della scheda Arduino Nano 33 BLE Sense
Prima di tutto connettiamo la scheda Arduino Nano 33 BLE Sense al computer tramite un cavo USB.
Andiamo poi su Strumenti > Scheda e seleziona “Arduino Nano 33 BLE ” nella sezione “Arduino Mbed OS Nano Boards”.

Vai su Strumenti > Porta e seleziona la porta seriale corrispondente alla tua scheda (di solito appare come “COMx” su Windows o “/dev/cu.usbmodemxxxx” su macOS/Linux).

Potremo ora caricare i nostri programma.
Utilizzo del sensore LPS22HB su Arduino Nano 33 BLE Sense
Nano 33 BLE Sense ha semplificato enormemente l’uso del sensore LPS22HB grazie alla libreria Arduino_ LPS22HB, che permette di accedere facilmente ai dati di pressione con poche righe di codice.
Come installare la libreria tramite Library Manager
- Apri l’Arduino IDE.
- Vai su Sketch → Include Library → Manage Libraries…
- Nel campo di ricerca scrivi Arduino_LPS22HB.

- Trovata la libreria Arduino_LPS22HB (sviluppata da Arduino), clicca su Install.
💡 Suggerimento: Assicurati di avere l’IDE aggiornato alla versione 2.x o successiva per il pieno supporto della Nano 33 BLE Sense Rev2.
Codice di base per lettura dati del sensore
Ecco un semplice esempio:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <Arduino_LPS22HB.h> void setup() { Serial.begin(9600); while (!Serial) ; if (!BARO.begin()) { Serial.println("Errore: sensore LPS22HB non trovato!"); while (1) ; } Serial.println("Sensore LPS22HB inizializzato correttamente"); } void loop() { float pressione = BARO.readPressure(); // da kPa a hPa float temperatura = BARO.readTemperature(); // °C Serial.print("Pressione: "); Serial.print(pressione, 1); Serial.print(" hPa\t"); Serial.print("Temperatura: "); Serial.print(temperatura, 1); Serial.println(" °C"); delay(1000); } |
Cosa fa questo codice:
- inizializza la connessione I²C con l’LPS22HB;
- verifica che sia connesso;
- legge i valori di pressione e temperatura ogni secondo;
- li visualizza sulla seriale (9600 baud).
Verifica del funzionamento
Per testare che tutto funzioni:
- Collega la Arduino Nano 33 BLE Sense al PC.
- Seleziona la scheda corretta in Strumenti → Scheda → Arduino Nano 33 BLE.

- Seleziona la porta COM corretta.

- Carica lo sketch e apri il Monitor Seriale, verifica che la velocità sia impostata a 9600
- Dovresti vedere in tempo reale i valori di Pressione barometrica e temperatura ambiente

Lettura dei dati su display OLED
Vediamo ora un’esempio più completo, ora i dati saranno mostrati su un display OLED, connesso anche questo tramite I2cC.
Per maggiori informazioni sul display OLED 0.96″ 128×64 – SSD1306 utilizzato e come fare per utilizzarlo leggete il post Display OLED 0.96″ 128×64 – SSD1306.
Schema dei collegamenti

Codice per lettura dati su display OLED
Sotto il codice utilizzato per la lettura dati del sensore LPS22HB sul display OLED
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #include <Arduino_LPS22HB.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <math.h> #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define SEA_LEVEL_PRESSURE 1013.25 // hPa - modificare con pressione locale Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); void setup() { Serial.begin(9600); if (!BARO.begin()) { Serial.println("Errore inizializzazione LPS22HB"); while (1) ; } if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println("Errore inizializzazione OLED"); while (1) ; } display.clearDisplay(); display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.println("Avvio..."); display.display(); delay(1000); } void loop() { float pressure = BARO.readPressure() * 10.0; // da kPa a hPa float temperature = BARO.readTemperature(); // °C // Calcolo altitudine float altitude = 44330.0 * (1.0 - pow(pressure / SEA_LEVEL_PRESSURE, 0.1903)); display.clearDisplay(); display.setTextSize(1.5); display.setCursor(0, 0); display.println("WWW.ADRIROBOT.IT"); display.println("Lettura sens. LPS22HB"); display.println("---------------------"); display.print("Press: "); display.print(pressure, 1); display.println(" hPa"); display.print("Temp: "); display.print(temperature, 1); display.println(" C"); display.print("Alt: "); display.print(altitude, 1); display.println(" m"); display.display(); delay(1000); } |
Cosa fa questo codice:
- Include le librerie necessarie;
- Imposta le caratteristiche del display;
- inizializza la connessione I²C con l’LPS22HB;
- verifica che sia connesso;
- inizializza la connessione I²C con il display;
- verifica che sia connesso;
- legge i valori di pressione barometrica e temperatura ogni secondo;
- li visualizza sul display
Verifica del funzionamento
Per testare che tutto funzioni:
- Effettua i collegamenti, illustrati precedentemente;
- Collega la Arduino Nano 33 BLE Sense Rev2 al PC;
- Seleziona la scheda corretta in Strumenti → Scheda → Arduino Nano 33 BLE Sense;
- Seleziona la porta COM corretta;
- Carica lo sketch;
- Dovresti vedere in tempo reale i valori di Pressione barometrica espressi il hPa, il valore di temperatura i °C e valore di altitudine in metri riferiti al livello del mare.
Nota per migliorare la precisione
Per ottenere un’altitudine più accurata puoi, leggere la pressione reale della tua città, sostituire nel programma il valore in:
| 1 | #define SEA_LEVEL_PRESSURE 1013.25 |
ad esempio con
| 1 | #define SEA_LEVEL_PRESSURE 1009.80 |

Dove trovare la scheda
La scheda Nano 33 BLE Sense, può essere acquistata su molti siti online, come:
- Arduino Store
- Amazon tramite lo Store di Arduino link https://amzn.to/3VEM8gY
- Presso il sito TechMaker codice SKU: AR438621.
Inserire nel carrello il codice sconto “ADRIROBOT” per ottenere uno sconto del 3%.

Prossimamente
In questo post come utilizzare il sensore di Pressione Barometrica LPS22HB.
Precedentemente avevamo visto come utilizzare il sensore HS3003, dedicato alla misura della temperatura e dell’umidità relativa.
Nel prossimo post vedremo come utilizzare il Sensore di Prossimità, colore e Luce Ambientale APDS-9960
Altre schede Arduino
In questa pagina sono riportate alcune schede del mondo Arduino e suoi cloni e fanno parte della mia personale raccolta. Le schede in realtà sono molte di più!
Vedere anche gli articoli:







