Questo tutorial è parte di: Sensore digitale di umidità relativa e temperatura HTU21D
Video relativi al sensore digitale di umidità relativa e temperatura HTU21D. I link ad altri video si trovano sotto questo articolo.
Visualizzazione della temperatura da un HTU21D come un grafico a barre su un LCD
In questo tutorial, impareremo come visualizzare le letture di temperatura da un sensore di temperatura e umidità HTU21D su un display LCD sotto forma di grafico a barre. Le letture includeranno valori in Celsius, Fahrenheit, Kelvin e umidità relativa, fornendo una panoramica completa delle condizioni ambientali. Questo progetto ti aiuterà a capire come collegare correttamente i componenti e implementare il codice necessario per far funzionare tutto in modo fluido.

Per coloro che desiderano una guida visiva, assicurati di controllare il video associato a questo tutorial (nel video a :00).
Hardware Spiegato
I principali componenti di questo progetto includono il sensore HTU21D e il display LCD 1602. L'HTU21D è un sensore digitale di umidità e temperatura che comunica tramite I2C. Fornisce letture accurate di temperatura e umidità, che possono essere facilmente accessibili attraverso la sua libreria. Il display LCD 1602, d'altra parte, mostra le letture in un formato leggibile dall'uomo, consentendo valutazioni rapide delle condizioni ambientali.
L'HTU21D utilizza un semplice interfaccio I2C, rendendo facile la connessione e la comunicazione con microcontrollori come l'Arduino. Il display LCD 1602 utilizza anch'esso l'I2C, il che semplifica il cablaggio riducendo il numero di pin necessari per collegarsi all'Arduino. Questo consente una configurazione più pulita fornendo comunque un'uscita visiva chiara.
Dettagli della scheda tecnica
| Produttore | Adafruit |
|---|---|
| Numero di parte | HTU21D |
| Tensione logica/IO | 3,3 V (tip.) |
| Tensione di alimentazione | 1,5 - 3,6 V |
| Intervallo di temperatura | -40 a 125 °C |
| Intervallo di umidità | 0 a 100 %UR |
| Risoluzione | 0,01 °C / 0,04 %UR |
| Comunicazione | I2C |
| Pacchetto | 4-pin LGA |
- Usa 3,3 V per alimentare l'HTU21D; collegarlo a 5 V può danneggiarlo.
- Assicurati che siano utilizzati corretti resistori di pull-up sulle linee I2C (SDA e SCL).
- Tieni il sensore lontano dalle fonti di calore durante i test.
- Controlla l'indirizzo I2C corretto utilizzando uno sketch di scanner I2C.
- Assicurati che il LCD sia correttamente inizializzato con l'indirizzo giusto.
Istruzioni di cablaggio

Per collegare il sensore HTU21D e il display LCD 1602, segui attentamente questi passaggi:
Innanzitutto, collega il sensore HTU21D. Collega il primo pin (VCC) al pin da 3,3 V sull'Arduino. Il secondo pin (GND) dovrebbe essere collegato a terra (GND) dell'Arduino. Il terzo pin (SDA) è collegato al pin A4 sull'Arduino, e il quarto pin (SCL) si collega al pin A5. Assicurati di utilizzare i colori dei fili corretti per chiarezza, usando il rosso per VCC, il nero per GND, l'arancione per SDA e il giallo per SCL.
Successivamente, per il display LCD 1602, collegare il pin VCC al pin da 5 V sull'Arduino e il pin GND a terra. Il pin SDA dell'LCDC dovrebbe essere collegato allo stesso pin A4 utilizzato per l'HTU21D, e il pin SCL dovrebbe collegarsi al pin A5. Questa configurazione consente sia al sensore che al display di comunicare tramite il protocollo I2C.
Esempi di codice e guida passo passo
Nel codice, il primo passo è includere le librerie necessarie per il sensore e l'LCD. La riga#include è essenziale per la comunicazione I2C, mentre#include "Adafruit_HTU21DF.h"inizializza il sensore HTU21D. La riga successiva crea un'istanza della classe HTU21D:
Adafruit_HTU21DF htu = Adafruit_HTU21DF();Questa riga configura il sensore per l'uso nel programma, permettendoci di chiamare i suoi metodi in seguito per leggere i valori di temperatura e umidità.
Dentro ilsetup()Funzione, iniziamo il monitor seriale e il display LCD. Le seguenti righe controllano se il sensore funziona correttamente:
if (htu.begin()) {
lcd.print("HTU21DF Bargraph");
} else {
lcd.print("missing HTU21DF");
while(1); // Pause forever.
}Se il sensore non riesce a inizializzarsi, il programma visualizzerà un messaggio di errore e interromperà l'esecuzione. Questo è fondamentale per il debug e garantisce che il sensore sia collegato correttamente.
Nellaloop()funzione, le letture della temperatura vengono rilevate e visualizzate. La lineafloat T = getHTU('H');recupera la temperatura o l'umidità in base al parametro passato. Il valore recuperato viene quindi visualizzato sul display LCD:
lcd.setCursor (0,1);
lcd.print(T); // print
lcd.print((char)223); // prints degree symbol
lcd.print("C"); //Questo codice posiziona il cursore sulla seconda riga del LCD e stampa il valore della temperatura insieme al simbolo del grado. L'uso di(char)223è un trucco utile per visualizzare il simbolo del grado sul LCD.
Dimostrazione / Cosa Aspettarsi
Una volta che tutto è impostato e il codice è caricato, dovresti vedere le letture della temperatura visualizzate sul display LCD come un grafico a barre. Le letture si aggiorneranno continuamente, riflettendo la temperatura e l'umidità attuali. Se soffii aria calda sul sensore, vedrai la temperatura salire rapidamente, confermando che il sistema funziona come previsto. Fai attenzione alla polarità inversa o ai cablaggi errati, poiché possono portare a malfunzionamenti o danni (nel video al :30).
Timestamp video
- 00:00- Introduzione
- 01:30- Spiegazione del cablaggio
- 02:30- Analisi del Codice
- 04:00- Dimostrazione
- 05:30- Conclusione
Questo tutorial è parte di: Sensore digitale di umidità relativa e temperatura HTU21D
- Lezione 35-1: Utilizzo del sensore di temperatura HTU21D
- Lezione 35-2: Utilizzo del sensore di temperatura HTU21D - Codice personalizzato
- Lezione 35: Utilizzo del sensore di temperatura HTU21D con Arduino
- Lezione 36: Utilizzare il sensore di temperatura HTU21D con un LCD Corso Arduino passo dopo passo
- Utilizzare due ulteriori sensori di umidità e temperatura HTU21DF con Arduino
- Visualizzazione della temperatura da un HTU21D su un LCD
- Come utilizzare il sensore di umidità e temperatura HTU21DF con Arduino (Codice di base)
- Come utilizzare il sensore di umidità e temperatura HTU21DF con Arduino (Codice personalizzato)
/*
* Display Temperature from HTU21D(F) on LCD as bargraph
* Written and Updated by Ahmad Shamshiri on July 18, 2019
* for Robojax in Ajax, Ontario, Canada
Watch Video tutorial for this code: https://youtu.be/kpGvzNWLHuk
Must watch:
1- Introduction to HTU21DF
https://youtu.be/Q5y18rgTAhA
2- LCD1602-I2C video: https://youtu.be/q9YC_GVHy5A
* Original Sources:
* LCD library: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
* Bargraph library from https://playground.arduino.cc/Code/LcdBarGraph/
*
*
- (GND) to GND
+ (VDD) to 3.3V
(WARNING: Do not connect + to 5V or the sensor will be damaged!)
*/
#include <Wire.h>
#include "Adafruit_HTU21DF.h"
Adafruit_HTU21DF htu = Adafruit_HTU21DF();
#define maxValue 160 // is the value in celsius or fahrenheit set in line above
// LCD settings
#include <LiquidCrystal_I2C.h>
byte lcdNumCols = 16; // -- number of columns in the LCD
byte lcdLine = 2; // -- number of lines in the LCD
LiquidCrystal_I2C lcd(0x3f,lcdNumCols,lcdLine); //0x3f is address for I2C
// to get I2C address, run I2C Scanner.
//Link is provided (in same page as this code) at http://robojax.com/learn/arduino
// bargraph settings
#include <LcdBarGraphRobojax.h>
LcdBarGraphRobojax robojax(&lcd, 16, 0, 0); // -- creating 16 character long bargraph starting at char 0 of line 0 (see video)
void setup()
{
Serial.begin(9600);//initialize serial monitor
// -- initializing the LCD
lcd.begin();
lcd.clear();
lcd.print("Robojax");
// Initialize the sensor (it is important to get calibration values stored on the device).
if (htu.begin())
{
lcd.setCursor (0,1); //
lcd.print("HTU21DF Bargraph");
}else {
lcd.setCursor (0,1); //
lcd.print("missing HTU21DF");
while(1); // Pause forever.
}
// -- give user some time to read the text above
delay(2000);
lcd.clear();
}// setup
void loop()
{
// Robojax HTU21DF Bargraph main loop
robojax.clearLine(1);// clear line 1 to display fresh temperature
float T = getHTU('H');// get the temperature
float Tgraph=T;
if( Tgraph > maxValue){
Tgraph =0;
}
robojax.drawValue( Tgraph, maxValue);// draw the bargraph
// Print out the measurement:
Serial.print("temperature: ");
Serial.print(T,2);
lcd.setCursor (0,1); //
if(T< maxValue){
lcd.print("Temp.:");
//lcd.print("Humi.:");
}else{
lcd.print("Max.:");
}
lcd.setCursor (7,1); //
lcd.print(T); // print
lcd.print((char)223);// prints degree symbol
//lcd.print("%");// prints degree symbol
lcd.print("C");//
delay(500);
}
/*
* @brief returns temperature or relative humidity
* @param "type" is a character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* H = Humidity
* @return returns one of the values above
* Usage: to get Fahrenheit, type: getHTU('F')
* to print it on the serial monitor: Serial.println(getHTU('F'));
* Written by Ahmad Shamshiri on July 13, 2019
* in Ajax, Ontario, Canada
* www.Robojax.com
*/
float getHTU(char type)
{
float value;
float temp = htu.readTemperature();
float rel_hum = htu.readHumidity();
if(type =='F')
{
value = temp *9/5 + 32;//convert to Fahrenheit
}else if(type =='K')
{
value = temp + 273.15;//convert to Kelvin
}else if(type =='H')
{
if(rel_hum<0){rel_hum =0;}//prevents it from negative value
value = rel_hum;//return relative humidity
}else{
value = temp;// return Celsius
}
return value;
}//
Risorse e riferimenti
-
EsternoAdafruit HTU21D Libreria (GitHub)github.com
-
EsternoScheda tecnica HTU21D (PDF)cdn-shop.adafruit.com
File📁
Scheda tecnica (pdf)
-
HTU21D_foglio_dati_temperatura_umidità
HTU21D_temerature_humidity_datasheet.pdf0.96 MB