Visualizzazione della temperatura da un HTU21D su un LCD

Visualizzazione della temperatura da un HTU21D su un LCD

In questo tutorial, impareremo a visualizzare le letture della temperatura dal sensore di temperatura e umidità HTU21D su un LCD. Il risultato sarà un setup funzionante in cui la temperatura può essere visualizzata in gradi Celsius, Fahrenheit e Kelvin, insieme all'umidità relativa mostrata sullo stesso schermo. Questo progetto ti darà esperienza pratica con la comunicazione I2C e la gestione dei dati di base del sensore. Per una guida visiva dettagliata, assicurati di guardare il video (nel video a 00:00).

HTU21D module

Hardware Spiegato

I componenti principali per questo progetto includono il sensore HTU21D e il display LCD. L'HTU21D è un sensore digitale di umidità e temperatura che comunica tramite il protocollo I2C. Fornisce misurazioni precise della temperatura in gradi Celsius o Fahrenheit e dell'umidità relativa in percentuale. Il sensore opera tipicamente a una tensione di 3,3V ma può anche funzionare con sistemi a 5V. Il display LCD che utilizzeremo è un LCD 16x2 con interfaccia I2C. Questo tipo di display richiede solo due fili per la comunicazione dei dati, rendendo più semplice il collegamento con microcontrollori come Arduino. L'interfaccia I2C consente di collegare più dispositivi sullo stesso bus, semplificando il cablaggio e riducendo il numero di pin utilizzati.

Dettagli del datasheet

ProduttoreAdafruit
Numero di parteHTU21D-F
Tensione logica/IO3,3 V (tipico)
Tensione di alimentazione1,5 V a 3,6 V
Corrente di uscita0,5 mA (tip.)
Corrente di picco1,5 mA (massimo)
Intervallo di temperatura-40 a 125 °C
Intervallo di umidità0 a 100 %UR
PacchettoDFN-6
Note / variantiNone

  • Assicurati di avere i livelli di tensione corretti per evitare danni al sensore.
  • Utilizzare resistori di pull-up sulle linee SDA e SCL se necessario.
  • Controlla l'indirizzo I2C con uno scanner per garantire una corretta configurazione.
  • Gestisci l'uscita del sensore con attenzione per evitare errori di lettura.
  • Tenere il sensore lontano da fonti di calore durante le misurazioni.

Istruzioni di cablaggio

Arduino wiring for HTU21DF light intesity sensor with LCD
Arduino wiring for HTU21DF light intesity sensor with LCD

Per collegare il sensore HTU21D all'Arduino, collega il pin VCC del sensore all'uscita 3.3V dell'Arduino. Successivamente, collega il pin GND del sensore a terra dell'Arduino. Il pin SDA, utilizzato per la trasmissione dei dati, deve essere collegato al pin A4 dell'Arduino. Analogamente, collega il pin SCL, utilizzato per il segnale di clock, al pin A5 sull'Arduino. Assicurati che il tuo LCD sia collegato correttamente; l'indirizzo I2C per l'LCD in questa configurazione è tipicamente 0x3F. Se stai utilizzando un tipo diverso di LCD o un indirizzo I2C diverso, assicurati di modificare il codice di conseguenza. Dopo il cablaggio, assicurati di controllare eventuali collegamenti allentati prima di accendere l'Arduino.

Esempi di codice e guida passo passo

Nel codice, iniziamo includendo le librerie necessarie per il sensore HTU21D e l’LCD:

#include 
#include "Adafruit_HTU21DF.h"
#include 

Questo configura l'ambiente per utilizzare sia il sensore che il display. La libreria `Adafruit_HTU21DF` gestisce le funzionalità del sensore, mentre la libreria `LiquidCrystal_I2C` gestisce il display LCD. Successivamente, creiamo un'istanza per sia il sensore che l'LCD:

Adafruit_HTU21DF htu = Adafruit_HTU21DF();
LiquidCrystal_I2C lcd(0x3F, 16, 2);

Qui,htuè l'oggetto per il sensore HTU21D, elcdè l'oggetto per il display LCD. L'indirizzo I2C per il LCD è impostato su 0x3F, che potresti dover verificare in base alla tua configurazione. Nella setup()funzione, inizializziamo l'LCD e verifichiamo se il sensore è operativo:

void setup() {
  lcd.begin();  
  lcd.backlight();
  if (!htu.begin()) {
      lcd.print("Sensor missing"); 
      while (1);
  }
  lcd.print("HTU21D Ready");
}

Questo codice inizializza il LCD e controlla la presenza del sensore. Se il sensore non viene rilevato, verrà visualizzato "Sensore mancante" e il programma si fermerà. Infine, nelloop()funzione, leggiamo continuamente i valori di temperatura e umidità e li visualizziamo:

void loop() {
   lcd.clear();
   lcdDisplay(0, 0, "Celsius: ", 10, 0, getHTU('C'), 'd');  
   lcdDisplay(0, 1, "Humidity: ", 10, 1, getHTU('H'), '%');  
   delay(5000);
}

In questo estratto, cancelliamo l'LCD, poi chiamiamo illcdDisplay()funzione per mostrare la temperatura in Celsius e l'umidità. IlgetHTU()la funzione recupera la temperatura o l'umidità in base al carattere passato.

Dimostrazione / Cosa Aspettarsi

Quando la configurazione è completa e il codice è caricato sull'Arduino, il LCD dovrebbe visualizzare la temperatura attuale in Celsius e l'umidità relativa. Se tutto è collegato correttamente, vedrai i valori aggiornarsi ogni pochi secondi. Fai attenzione ai comuni errori, come collegamenti invertiti o indirizzi I2C errati, che possono portare a fallimenti nella comunicazione con il sensore (nel video alle 05:00).

Timestamp video

  • 00:00- Introduzione
  • 01:30- Istruzioni di cablaggio
  • 03:15- Spiegazione del codice
  • 04:50- Dimostrazione
  • 05:40- Conclusione

Immagini

LCD1602 o LCD2004 con Sensore di Umidità e Temperatura HTU21DF con Arduino
LCD1602 o LCD2004 con Sensore di Umidità e Temperatura HTU21DF con Arduino
Arduino wiring for HTU21DF light intesity sensor with LCD
Arduino wiring for HTU21DF light intesity sensor with LCD
HTU21D module
HTU21D module
HTU21D module-back
HTU21D module-back
213-Display Temperature from HTU21DF on LCD1602-I2C or LCD2004
Lingua: C++
Copia!

Cose di cui potresti avere bisogno

Risorse e riferimenti

File📁

Scheda tecnica (pdf)