Sommario:
- Passaggio 1: hardware richiesto:
- Passaggio 2: collegamento hardware:
- Passaggio 3: codice per la misurazione dell'umidità e della temperatura:
- Passaggio 4: applicazioni:
Video: Misurazione di umidità e temperatura utilizzando HTS221 e Arduino Nano: 4 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
HTS221 è un sensore digitale capacitivo ultra compatto per umidità relativa e temperatura. Include un elemento di rilevamento e un circuito integrato specifico per applicazioni a segnale misto (ASIC) per fornire le informazioni di misurazione tramite interfacce seriali digitali. Integrato con così tante funzioni, questo è uno dei sensori più appropriati per misurazioni critiche di umidità e temperatura.
In questo tutorial è stato illustrato l'interfacciamento del modulo sensore HTS221 con arduino nano. Per leggere i valori di umidità e temperatura, abbiamo utilizzato arduino con un adattatore I2c. Questo adattatore I2C rende la connessione al modulo sensore facile e affidabile.
Passaggio 1: hardware richiesto:
I materiali di cui abbiamo bisogno per raggiungere il nostro obiettivo includono i seguenti componenti hardware:
1. HTS221
2. Arduino Nano
3. Cavo I2C
4. Scudo I2C per Arduino Nano
Passaggio 2: collegamento hardware:
La sezione di collegamento hardware spiega fondamentalmente le connessioni di cablaggio richieste tra il sensore e l'arduino nano. Garantire connessioni corrette è la necessità di base mentre si lavora su qualsiasi sistema per l'output desiderato. Quindi, i collegamenti necessari sono i seguenti:
L'HTS221 funzionerà su I2C. Ecco lo schema elettrico di esempio, che mostra come cablare ciascuna interfaccia del sensore.
Di default, la scheda è configurata per un'interfaccia I2C, quindi consigliamo di utilizzare questo collegamento se sei altrimenti agnostico.
Tutto ciò di cui hai bisogno sono quattro fili! Sono necessarie solo quattro connessioni pin Vcc, Gnd, SCL e SDA e questi sono collegati con l'aiuto del cavo I2C.
Queste connessioni sono mostrate nelle immagini sopra.
Passaggio 3: codice per la misurazione dell'umidità e della temperatura:
Iniziamo ora con il codice Arduino.
Durante l'utilizzo del modulo sensore con Arduino, includiamo la libreria Wire.h. La libreria "Wire" contiene le funzioni che facilitano la comunicazione i2c tra il sensore e la scheda Arduino.
L'intero codice Arduino è riportato di seguito per comodità dell'utente:
#includere
// L'indirizzo I2C dell'HTS221 è 0x5F
#define Addr 0x5F
configurazione nulla()
{
// Inizializza la comunicazione I2C come MASTER
Wire.begin();
// Inizializza la comunicazione seriale, imposta baud rate = 9600
Serial.begin(9600);
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Seleziona il registro di configurazione medio
Wire.write(0x10);
// Campioni medi di temperatura = 256, Campioni medi di umidità = 512
Wire.write(0x1B);
// Interrompi trasmissione I2C
Wire.endTransmission();
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Seleziona il registro di controllo1
Wire.write(0x20);
// Accensione, aggiornamento continuo, velocità di uscita dati = 1 Hz
Wire.write(0x85);
// Interrompi trasmissione I2C
Wire.endTransmission();
ritardo(300);
}
ciclo vuoto()
{
dati int senza segno[2];
unsigned int val[4];
unsigned int H0, H1, H2, H3, T0, T1, T2, T3, raw;
// Valori di calibrazione dell'umidità
for(int i = 0; i < 2; i++)
{
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Invia registro dati
Wire.write((48 + i));
// Interrompi trasmissione I2C
Wire.endTransmission();
// Richiedi 1 byte di dati
Wire.requestFrom(Addr, 1);
// Legge 1 byte di dati
if(Filo.disponibile() == 1)
{
data = Wire.read();
}
}
// Converti i dati di umidità
H0 = dati[0] / 2;
H1 = dati[1] / 2;
for(int i = 0; i < 2; i++)
{
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Invia registro dati
Wire.write((54 + i));
// Interrompi trasmissione I2C
Wire.endTransmission();
// Richiedi 1 byte di dati
Wire.requestFrom(Addr, 1);
// Legge 1 byte di dati
if(Filo.disponibile() == 1)
{
data = Wire.read();
}
}
// Converti i dati di umidità
H2 = (dati[1] * 256,0) + dati[0];
for(int i = 0; i < 2; i++)
{
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Invia registro dati
Wire.write((58 + i));
// Interrompi trasmissione I2C
Wire.endTransmission();
// Richiedi 1 byte di dati
Wire.requestFrom(Addr, 1);
// Legge 1 byte di dati
if(Filo.disponibile() == 1)
{
data = Wire.read();
}
}
// Converti i dati di umidità
H3 = (dati[1] * 256,0) + dati[0];
// Valori di calibrazione della temperatura
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Invia registro dati
Wire.write(0x32);
// Interrompi trasmissione I2C
Wire.endTransmission();
// Richiedi 1 byte di dati
Wire.requestFrom(Addr, 1);
// Legge 1 byte di dati
if(Filo.disponibile() == 1)
{
T0 = Filo.leggi();
}
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Invia registro dati
Wire.write(0x33);
// Interrompi trasmissione I2C
Wire.endTransmission();
// Richiedi 1 byte di dati
Wire.requestFrom(Addr, 1);
// Legge 1 byte di dati
if(Filo.disponibile() == 1)
{
T1 = Filo.leggi();
}
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Invia registro dati
Wire.write(0x35);
// Interrompi trasmissione I2C
Wire.endTransmission();
// Richiedi 1 byte di dati
Wire.requestFrom(Addr, 1);
// Legge 1 byte di dati
if(Filo.disponibile() == 1)
{
raw = Wire.read();
}
grezzo = grezzo & 0x0F;
// Converti i valori di calibrazione della temperatura a 10 bit
T0 = ((grezzo & 0x03) * 256) + T0;
T1 = ((grezzo & 0x0C) * 64) + T1;
for(int i = 0; i < 2; i++)
{
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Invia registro dati
Wire.write((60 + i));
// Interrompi trasmissione I2C
Wire.endTransmission();
// Richiedi 1 byte di dati
Wire.requestFrom(Addr, 1);
// Legge 1 byte di dati
if(Filo.disponibile() == 1)
{
data = Wire.read();
}
}
// Converti i dati
T2 = (dati[1] * 256,0) + dati[0];
for(int i = 0; i < 2; i++)
{
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Invia registro dati
Wire.write((62 + i));
// Interrompi trasmissione I2C
Wire.endTransmission();
// Richiedi 1 byte di dati
Wire.requestFrom(Addr, 1);
// Legge 1 byte di dati
if(Filo.disponibile() == 1)
{
data = Wire.read();
}
}
// Converti i dati
T3 = (dati[1] * 256,0) + dati[0];
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Invia registro dati
Wire.write(0x28 | 0x80);
// Interrompi trasmissione I2C
Wire.endTransmission();
// Richiedi 4 byte di dati
Wire.requestFrom(Addr, 4);
// Legge 4 byte di dati
// umidità msb, umidità lsb, temp msb, temp lsb
if(Filo.disponibile() == 4)
{
val[0] = Wire.read();
val[1] = Wire.read();
val[2] = Wire.read();
val[3] = Wire.read();
}
// Converti i dati
umidità galleggiante = (val[1] * 256,0) + val[0];
umidità = ((1.0 * H1) - (1.0 * H0)) * (1.0 * umidità - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0);
int temp = (val[3] * 256) + val[2];
float cTemp = (((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);
float fTemp = (cTemp * 1.8) + 32;
// Invia i dati al monitor seriale
Serial.print("Umidità relativa: ");
Serial.print(umidità);
Serial.println("% UR");
Serial.print("Temperatura in gradi Celsius: ");
Serial.print(cTemp); Serial.println("C");
Serial.print("Temperatura in Fahrenheit: ");
Serial.print(fTemp);
Serial.println("F");
ritardo (500);
}
Nella libreria wire Wire.write() e Wire.read() viene utilizzato per scrivere i comandi e leggere l'output del sensore.
Serial.print() e Serial.println() vengono utilizzati per visualizzare l'output del sensore sul monitor seriale dell'IDE Arduino.
L'uscita del sensore è mostrata nell'immagine sopra.
Passaggio 4: applicazioni:
HTS221 può essere impiegato in vari prodotti di consumo come umidificatori d'aria e frigoriferi, ecc. Questo sensore trova anche la sua applicazione in un'arena più ampia tra cui l'automazione domestica intelligente, l'automazione industriale, le apparecchiature respiratorie, il monitoraggio di beni e beni.
Consigliato:
Misurazione dell'umidità e della temperatura utilizzando HIH6130 e Arduino Nano: 4 passaggi
Misurazione di umidità e temperatura utilizzando HIH6130 e Arduino Nano: HIH6130 è un sensore di umidità e temperatura con uscita digitale. Questi sensori forniscono un livello di precisione di ±4% UR. Con stabilità a lungo termine leader del settore, I2C digitale con compensazione della temperatura reale, affidabilità leader del settore, efficienza energetica
Misurazione di temperatura e umidità utilizzando HDC1000 e Arduino Nano: 4 passaggi
Misurazione di temperatura e umidità utilizzando HDC1000 e Arduino Nano: l'HDC1000 è un sensore di umidità digitale con sensore di temperatura integrato che fornisce un'eccellente precisione di misurazione a bassissima potenza. Il dispositivo misura l'umidità in base a un nuovo sensore capacitivo. I sensori di umidità e temperatura sono fac
Misurazione dell'umidità e della temperatura utilizzando HTS221 e Raspberry Pi: 4 passaggi
Misurazione di umidità e temperatura utilizzando HTS221 e Raspberry Pi: HTS221 è un sensore digitale capacitivo ultra compatto per umidità relativa e temperatura. Include un elemento di rilevamento e un circuito integrato specifico per l'applicazione del segnale misto (ASIC) per fornire le informazioni di misurazione tramite seriale digitale
Misurazione di umidità e temperatura utilizzando HIH6130 e Raspberry Pi: 4 passaggi
Misurazione di umidità e temperatura utilizzando HIH6130 e Raspberry Pi: HIH6130 è un sensore di umidità e temperatura con uscita digitale. Questi sensori forniscono un livello di precisione di ±4% UR. Con stabilità a lungo termine leader del settore, I2C digitale con compensazione della temperatura reale, affidabilità leader del settore, efficienza energetica
Misurazione dell'umidità e della temperatura utilizzando HTS221 e Particle Photon: 4 passaggi
Misurazione di umidità e temperatura mediante HTS221 e Particle Photon: HTS221 è un sensore digitale capacitivo ultra compatto per umidità relativa e temperatura. Include un elemento di rilevamento e un circuito integrato specifico per l'applicazione del segnale misto (ASIC) per fornire le informazioni di misurazione tramite seriale digitale