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 dell'umidità e della temperatura utilizzando HTS221 e Particle Photon: 4 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
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 è stata illustrata l'interfaccia del modulo sensore HTS221 con il fotone particellare. Per leggere i valori di umidità e temperatura, abbiamo utilizzato la particella con un adattatore I2c. Questo adattatore I2C rende la connessione al modulo sensore facile e più affidabile.
Passaggio 1: hardware richiesto:
I materiali di cui abbiamo bisogno per raggiungere il nostro obiettivo includono i seguenti componenti hardware:
1. HTS221
2. Fotone particellare
3. Cavo I2C
4. Scudo I2C per fotoni di particelle
Passaggio 2: collegamento hardware:
La sezione sui collegamenti hardware spiega fondamentalmente le connessioni di cablaggio richieste tra il sensore e il fotone della particella. 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 particellare.
Durante l'utilizzo del modulo sensore con la particella, includiamo application.h e la libreria spark_wiring_i2c.h. La libreria "application.h" e spark_wiring_i2c.h contiene le funzioni che facilitano la comunicazione i2c tra il sensore e la particella.
L'intero codice particella è riportato di seguito per comodità dell'utente:
#includere
#includere
// L'indirizzo I2C dell'HTS221 è 0x5F
#define Addr 0x5F
doppia umidità = 0.0;
doppia cTemp = 0.0;
doppia fTemp = 0.0;
int temperatura = 0;
configurazione nulla()
{
// Imposta variabile
Particle.variable("i2cdevice", "HTS221");
Particle.variable("Umidità", umidità);
Particle.variable("cTemp", cTemp);
// 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à = (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);
temp = (val[3] * 256) + val[2]; cTemp = (((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);
fTemp = (cTemp * 1.8) + 32;
// Invia i dati alla dashboard
Particle.publish("Umidità relativa: ", String(humidity));
ritardo(1000);
Particle.publish("Temperatura in gradi Celsius: ", String(cTemp));
ritardo(1000);
Particle.publish("Temperature in Fahrenheit: ", String(fTemp));
ritardo(1000);
}
La funzione Particle.variable() crea le variabili per memorizzare l'output del sensore e la funzione Particle.publish() visualizza l'output sulla dashboard del sito.
L'uscita del sensore è mostrata nell'immagine sopra come riferimento.
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 della temperatura utilizzando STS21 e Particle Photon: 4 passaggi
Misurazione della temperatura utilizzando STS21 e Particle Photon: il sensore di temperatura digitale STS21 offre prestazioni superiori e un ingombro ridotto. Fornisce segnali calibrati e linearizzati in formato digitale I2C. La fabbricazione di questo sensore si basa sulla tecnologia CMOSens, che attribuisce al superiore
Monitoraggio della temperatura e dell'umidità utilizzando SHT25 e Particle Photon: 5 passaggi
Monitoraggio della temperatura e dell'umidità mediante SHT25 e Particle Photon: abbiamo recentemente lavorato su vari progetti che richiedevano il monitoraggio della temperatura e dell'umidità e poi ci siamo resi conto che questi due parametri svolgono effettivamente un ruolo fondamentale nella stima dell'efficienza di funzionamento di un sistema. Entrambi all'indu
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 dell'umidità e della temperatura utilizzando HIH6130 e il fotone di particelle: 4 passaggi
Misurazione di umidità e temperatura utilizzando HIH6130 e Particle Photon: 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