HTU21D Sensore di temperatura e umidità

L’HTU21D è un sensore digitale di  temperatura e umidità relativa. Un componente molto diffuso nei progetti di elettronica e IoT grazie alla sua precisione, alle dimensioni compatte e alla semplicità di integrazione tramite interfaccia I²C. In questo post vedremo nel dettaglio cos’è, come funziona e come utilizzarlo tramite una scheda breakout.

HTU21D Sensore temperatura umidità

Descrizione del sensore HTU21D

L’HTU21D  (datasheet) è un sensore digitale di  temperatura e umidità relativa, prodotto originariamente da Measurement Specialties (ora parte di TE Connectivity).
È progettato per applicazioni che richiedono misure affidabili e a basso consumo, come stazioni meteo, sistemi domotici, dispositivi IoT e data logger ambientali.
Il sensore integra al suo interno sia l’elemento sensibile sia l’elettronica di conversione analogico-digitale, fornendo i dati direttamente in formato digitale tramite bus I²C

HTU21D Sensore temperatura umidità

HTU21D VS Si7021 

Oltre al sensore HTU21D è possibile trovare il sensore Si7021, entrambi sono sensori di temperatura e umidità I2C quasi identici, con spesso compatibilità di footprint (impronta sulla scheda).
Entrambi offrono alta precisione (0-80% RH, da -10 a 85°C) e comunicazione digitale.
HTU21D risponde più velocemente (~3s), ideale per misurazioni rapide, mentre Si7021 potrebbe mostrare una isteresi maggiore ma è considerato affidabile.

Funzionamento interno del sensore HTU21D

Il sensore integra due sistemi distinti in un unico chip:

  • Sensore di umidità capacitivo
  • Sensore di temperatura band-gap

Il tutto gestito da un microcontrollore interno con ADC.

HTU21D Sensore temperatura umidità - Schema a blocchi

Misura dell’umidità (principio capacitivo)

Il cuore della misura dell’umidità è un condensatore microscopico (MEMS).
Questo è composto da:

  • due elettrodi
  • un materiale polimerico igroscopico (assorbe acqua)

 Come funziona ?

  1. L’umidità dell’aria cambia
  2. Il polimero assorbe o rilascia molecole d’acqua
  3. Cambia la costante dielettrica del materiale
  4. Cambia la capacità elettrica

In pratica:  Più umidità → più acqua nel materiale → capacità maggiore

Conversione del segnale
La capacità non viene letta direttamente: il sensore usa un circuito interno che:

  1. converte la capacità in una frequenza o tensione
  2. la invia a un ADC (convertitore analogico-digitale)
  3. produce un valore digitale

Misura della temperatura

La temperatura viene misurata con un sensore band-gap, che è un circuito elettronico che sfrutta la variazione della tensione nei semiconduttori in funzione della temperatura.
Il vantaggi sono che è molto stabile, è già calibrato in fabbrica e ed a basso consumo

Elaborazione interna

Il sensore non restituisce valori “grezzi”, ma si occupa internamente dei eseguire la conversione.
Tra le altre cose effettua una compensazione termica dell’umidità, effettua la linearizzazione del segnale
utilizzando la calibrazione di fabbrica (memorizzata in ROM).

Comunicazione I²C

Quando il tuo microcontrollore (es. ESP32-C3 SuperMini) richiede una misura sono eseguiti questi passi:

  • Invii comando I²C (misura temperatura o umidità)
  • Il sensore esegue la conversione (~50 ms)
  • Restituisce: 2 byte di dati + CRC (controllo errore)

 Conversione nei valori reali

Il valore restituito NON è direttamente in °C o %, serve una formula (già applicata dalle librerie):

Fattori che influenzano la misura

Per un uso corretto, occorre considerare che :

🌬️ Condizioni ambientali: aria ferma → risposta lenta, condensa → errore elevato

🔥 Temperatura: influisce direttamente sull’umidità relativa

🧪 Contaminazione: polvere o sostanze chimiche → degrado del polimero

Precisione di misura

Il sensore HTU21D è in grado di misurare l’umidità relativa su un intervallo completo da 0 a 100% con una precisione tipica di ±2% nell’intervallo dal 5% al ​​95% di umidità relativa.
Il termometro ha un intervallo di temperatura massimo compreso tra -40 e 125 °C. La sua precisione tipica è di ±0,3 °C nell’intervallo da 0 a 70 °C.
Nella sua modalità normale per la misurazione di umidità e temperatura, il sensore ha una risoluzione di 0,7% UR e 0,040 °C con tempi di conversione rispettivamente di 2 ms e 11 ms.
Per esigenze più stringenti, il sensore consente di aumentare la risoluzione a scapito di un maggiore tempo di conversione.
In modalità di massima risoluzione, l’HTU21D può fornire una risoluzione di 0,04% UR con un tempo di conversione di 14 ms e di 0,01 °C con un tempo di conversione di 44 ms

Schema elettrico del modulo HTU21D

Lo schema del modulo breakout è stato realizzato in origine dalla ADAFRUIT azienda leader nel settore dell’elettronica open source e del movimento “maker”.
Come  visibile mostra il design di una breakout board (un modulo pronto all’uso) per il sensore HTU21D. Il circuito è progettato per rendere il sensore “tollerante” a diverse tensioni, permettendogli di funzionare sia con microcontrollori a 3.3V che a 5V.

HTU21D Sensore temperatura umidità - circuito del modulo

HTU21D Sensore temperatura umidità - PCB HTU21D Sensore temperatura umidità - PCB

Ecco l’analisi dei blocchi principali:

Regolatore di Tensione (U2)
Il sensore HTU21D lavora nativamente tra 1.5V e 3.6V. Per alimentarlo anche a 5V è presente un MIC5225-3.3 (Regolatore LDO), in ingresso possiamo fornire i +5V (dal pin VIN) che saranno stabilizzati a +3.3V per alimentare il sensore e il resto del circuito. C2 e C3 (10μF) sono condensatori di filtro per stabilizzare la tensione in entrata e in uscita, riducendo i disturbi elettrici.

Il Sensore (U1)
Il sensore HTU21D, è il cuore del modulo, un sensore digitale che misura umidità relativa e temperatura. Comunica tramite protocollo I2C (SDA e SCL).
C1 (0.1μF) è un piccolo condensatore di bypass posto vicino ai pin di alimentazione del sensore per filtrare i rumori ad alta frequenza.

Convertitore di Livelli Logici (Q1, Q2)
Questa è la parte più interessante: permette al sensore (che parla a 3.3V) di dialogare con una scheda a 5V (come un Arduino Uno) senza bruciarsi. Il convertitore è formato da due MOSFET BSS138 (Q1 e Q2) e quattro resistenze da 10kΩ (R1, R2, R3, R4).
Si tratta di un traslatore di livello bidirezionale. Le resistenze di “pull-up” tengono le linee alte, mentre i MOSFET permettono ai segnali SDA e SCL di passare da 3.3V a 5.0V (e viceversa) in modo sicuro.

Connettore di Interfaccia (JP1)
È la morsettiera fisica dove si collegano i cavi:

  • +5V / +3V3: Pin di alimentazione.
  • GND: Massa comune.
  • SDA / SCL: Linee dati e clock per la comunicazione I2C.

Comparazione con vari tipi di moduli

Il sensore HTU21D si può trovare su varie tipologie di moduli breakout, sotto alcuni esempi

HTU21D Sensore temperatura umidità HTU21D Sensore temperatura umidità HTU21D Sensore temperatura umidità

NOTA: su alcuni moduli, sulla scheda breakout sono presenti due resistori da 4,7 kΩ che portano a livello alto le linee SDA e SCL. Se sono presenti altri dispositivi sul bus I²C, potrebbe essere necessario disabilitare i resistori integrati. Per fare ciò, è necessario scollegare il ponticello di saldatura sulla scheda.
In questo modo i resistori verranno scollegati da VCC e dal bus I2C.

Dove trovare il modulo HTU21D

Il sensore HTU21DF potrà essere acquistato online presso:

HTU21D Sensore temperatura umidità

Test base per la lettura del sensore HTU21D

Vediamo ora come leggere il sensore HTU21D con l’utilizzo di un ESP32-C3 Super Mini.

Materiale occorrente

HTU21D Sensore temperatura umidità
Scheda ESP32-C3 Super Mini Sensore HTU21DF
Bread board Cavi colorati M/M

Schema dei collegamenti

HTU21D Sensore temperatura umidità - schema di utilizzo

Nota: in alternativa alla scheda ESP32-C3 Super Mini si può utilizzare alche una scheda Arduino UNO, in questo caso i collegamenti sono quelli riportati sotto

HTU21D Sensore temperatura umidità - schema di utilizzo

Libreria di gestione per sensore HTU21D

L’utilizzo del sensore HTU21D con un ESP32-C3 Super Mini è molto semplice grazie alla specifica libreria.
Questa è valida anche se lo collegherete ad una scheda Arduino UNO.

HTU21D Sensore temperatura umidità - libreria

HTU21D Sensore temperatura umidità - libreria

Codice di base per lettura dati del sensore

Sotto è riportato il codice base per la lettura dei dati tramite il monitor seriale. L’output dovrebbe essere simile a quello visibile in figura

HTU21D Sensore temperatura umidità - lettura valori

Lettura dei dati su display OLED

Vediamo ora un’esempio più completo,  i dati saranno mostrati su un display OLED, connesso anche questo tramite il bus I2C.
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.

Materiale occorrente

HTU21D Sensore temperatura umidità
Scheda ESP32-C3 Super Mini Sensore HTU21DF
OLED da  0.96 ”  128×64 pixel Bread board
   
Cavi colorati M/M  

Schema dei collegamenti

HTU21D Sensore temperatura umidità - schema di utilizzo

HTU21D Sensore temperatura umidità - foto applicazione

Libreria di gestione per il display OLED

Per utilizzare il display OLED è necessario installare l’apposita libreria. Può essere cercata tra le librerie installabili nell’IDE, basterà inserire nel campo di ricerca “Adafruit_SSD1306“.
Sarà anche mostrata una finestra che segnala che la libreria ha una dipendenza con la libreria grafica “Adafruit GFX Library“.  Procedete premendo su “Install all”.
Per altre informazioni su come installare le librerie vedete l’articolo Arduino – Tutorial, come installare una libreria

HTU21D Sensore temperatura umidità - libreria

Codice di base per lettura dati del sensore su display OLED

Lettura dei dati su smartphone o PC desktop

Un altro esempio: oltre alla visualizzazione su display, i dati potranno essere consultati tramite un’interfaccia web moderna e professionale, dotata di:

  • Layout responsive (ottimizzato per smartphone e PC).
  • Design  “card” in stile dashboard.
  • Aggiornamento automatico ogni 10 secondi, senza ricaricare la pagina (tecnica AJAX/Fetch).
  • Architettura disaccoppiata: separazione tra backend (API JSON) e frontend, per un approccio più pulito e scalabile.

Per implementare queste funzionalità, è necessario includere due librerie standard già integrate nell’ambiente di sviluppo:

Come visualizzare i dati sullo smartphone

  1. Dopo aver effettuato il download del codice, dovrete aprire il monitor seriale, in questo modi vi verrà  mostrato  l’indirizzo IP a cui collegarvi.

HTU21D Sensore temperatura umidità - Lettura IP

  1. Collegare lo smartphone alla stessa rete Wi-Fi dell’ESP32-C3 Super Mini
  2. Aprite il browser
  3. Digitate l’indirizzo IP mostrato nel terminale (es. 192.168.1.190)
  4. Vedrete la temperatura e umidità in tempo reale

HTU21D Sensore temperatura umidità - lettura su Smartphone

Codice per lettura dati del sensore su Smartphone

Raccolta di sensori di temperatura e umidità

Oltre al sensore HTU21D Sensore temperatura umidità, potete trovare altri modelli di sensore potete visitare la Raccolta di sensori di temperatura e umidità. Sono presenti sensori: misuratori di sola temperatura di tipo analogico o con uscita digitale, misuratori di temperatura IR, sensori di sola umidità, dispositivi che possono misurare sia la temperatura che l’umidità, altri ancora misurano anche altri parametri.

sensori umidità temperatura