Sommario:

Arduino Nano - Tutorial del sensore di umidità relativa e temperatura HTS221: 4 passaggi
Arduino Nano - Tutorial del sensore di umidità relativa e temperatura HTS221: 4 passaggi

Video: Arduino Nano - Tutorial del sensore di umidità relativa e temperatura HTS221: 4 passaggi

Video: Arduino Nano - Tutorial del sensore di umidità relativa e temperatura HTS221: 4 passaggi
Video: Arduino Nano - HTS221 Relative Humidity and Temperature Sensor Tutorial 2024, Luglio
Anonim
Image
Image

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.

Quello di cui hai bisogno..!!
Quello di cui hai bisogno..!!

1. Arduino Nano

2. HTS221

3. Cavo I²C

4. Scudo I²C per Arduino Nano

Passaggio 2: connessioni:

Connessioni
Connessioni
Connessioni
Connessioni
Connessioni
Connessioni
Connessioni
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:

Codice
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: