Sommario:
- Passaggio 1: ciò di cui hai bisogno.
- Passaggio 2: connessioni:
- Passaggio 3: codice:
- Passaggio 4: applicazioni:
Video: Arduino Nano - Tutorial del sensore di umidità relativa e temperatura HTS221: 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. Ecco la dimostrazione con arduino nano.
Passaggio 1: ciò di cui hai bisogno.
1. Arduino Nano
2. HTS221
3. Cavo I²C
4. Scudo I²C per Arduino Nano
Passaggio 2: connessioni:
Prendi uno shield I2C per Arduino Nano e spingilo delicatamente sui pin di Nano.
Quindi collegare un'estremità del cavo I2C al sensore HTS221 e l'altra estremità allo schermo I2C.
I collegamenti sono mostrati nell'immagine sopra.
Passaggio 3: codice:
Il codice arduino per HTS221 può essere scaricato dal nostro repository github - DCUBE Community.
Ecco il link per lo stesso:
github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino
Includiamo la libreria Wire.h per facilitare la comunicazione I2c del sensore con la scheda Arduino.
Puoi anche copiare il codice da qui, è fornito come segue:
// Distribuito con una licenza libera.
// Usalo come vuoi, a scopo di lucro o gratuito, a condizione che rientri nelle licenze delle opere associate.
// HTS221
// Questo codice è progettato per funzionare con il Mini Modulo HTS221_I2CS I2C
#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);
}
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:
Automatizzare una serra con LoRa! (Parte 1) -- Sensori (temperatura, umidità, umidità del suolo): 5 passaggi
Automatizzare una serra con LoRa! (Parte 1) || Sensori (temperatura, umidità, umidità del suolo): in questo progetto ti mostrerò come ho automatizzato una serra. Ciò significa che ti mostrerò come ho costruito la serra e come ho collegato l'elettronica di alimentazione e automazione. Inoltre ti mostrerò come programmare una scheda Arduino che utilizza L
Sensore di temperatura e umidità ad energia solare Arduino come sensore Oregon da 433 mhz: 6 passaggi
Sensore di temperatura e umidità ad energia solare Arduino come sensore Oregon da 433 mhz: questa è la costruzione di un sensore di temperatura e umidità ad energia solare. Il sensore emula un sensore Oregon da 433 mhz ed è visibile nel gateway Telldus Net. Cosa ti serve: 1 x "10 LED Sensore di movimento a energia solare" da Ebay. Assicurati che dica batteria a 3,7 V
Misurazione di umidità e temperatura utilizzando HTS221 e Arduino Nano: 4 passaggi
Misurazione di umidità e temperatura utilizzando HTS221 e Arduino Nano: 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
Esercitazione Java sul sensore di umidità relativa e temperatura Raspberry Pi HTS221: 4 passaggi
Raspberry Pi HTS221 sensore di umidità relativa e temperatura Java Tutorial: 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
Registratore di temperatura, umidità relativa, pressione atmosferica utilizzando Raspberry Pi e TE Connectivity MS8607-02BA01: 22 passaggi (con immagini)
Registratore di temperatura, umidità relativa, pressione atmosferica utilizzando Raspberry Pi e TE Connectivity MS8607-02BA01: Introduzione: In questo progetto ti mostrerò come costruire passo dopo passo un sistema di registrazione per l'umidità della temperatura e la pressione atmosferica. Questo progetto si basa sul chip del sensore ambientale Raspberry Pi 3 Modello B e TE Connectivity MS8607-02BA