Innholdsfortegnelse:

Arduino Nano - HTS221 Relativ fuktighets- og temperatursensoropplæring: 4 trinn
Arduino Nano - HTS221 Relativ fuktighets- og temperatursensoropplæring: 4 trinn

Video: Arduino Nano - HTS221 Relativ fuktighets- og temperatursensoropplæring: 4 trinn

Video: Arduino Nano - HTS221 Relativ fuktighets- og temperatursensoropplæring: 4 trinn
Video: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, November
Anonim
Image
Image

HTS221 er en ultrakompakt kapasitiv digital sensor for relativ fuktighet og temperatur. Den inneholder et følerelement og en spesifikk integrert krets (ASIC) for blandet signal for å gi måleinformasjonen gjennom digitale serielle grensesnitt. Integrert med så mange funksjoner, dette er en av de mest passende sensorene for kritiske fuktighets- og temperaturmålinger. Her er demonstrasjonen med arduino nano.

Trinn 1: Hva du trenger..

Hva trenger du..!!
Hva trenger du..!!

1. Arduino Nano

2. HTS221

3. I²C -kabel

4. I²C -skjold for Arduino Nano

Trinn 2: Tilkoblinger:

Tilkoblinger
Tilkoblinger
Tilkoblinger
Tilkoblinger
Tilkoblinger
Tilkoblinger
Tilkoblinger
Tilkoblinger

Ta et I2C -skjold for Arduino Nano og skyv det forsiktig over pinnene på Nano.

Koble deretter den ene enden av I2C -kabelen til HTS221 -sensoren og den andre enden til I2C -skjoldet.

Tilkoblinger er vist på bildet ovenfor.

Trinn 3: Kode:

Kode
Kode

Arduino-koden for HTS221 kan lastes ned fra vårt github-depot- DCUBE Community.

Her er lenken til det samme:

github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino

Vi inkluderer bibliotek Wire.h for å lette I2c -kommunikasjonen av sensoren med Arduino -kortet.

Du kan også kopiere koden herfra, den er gitt som følger:

// Distribuert med en fri viljelisens.

// Bruk den slik du vil, profitt eller gratis, forutsatt at den passer inn i lisensene til de tilhørende verkene.

// HTS221

// Denne koden er designet for å fungere med HTS221_I2CS I2C Mini Module

#inkludere

// HTS221 I2C -adressen er 0x5F

#define Addr 0x5F

ugyldig oppsett ()

{

// Initialiser I2C -kommunikasjon som MASTER

Wire.begin ();

// Initialiser seriell kommunikasjon, sett overføringshastighet = 9600

Serial.begin (9600);

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg gjennomsnittlig konfigurasjonsregister

Wire.write (0x10);

// Temperatur gjennomsnittlige prøver = 256, Fuktighets gjennomsnittsprøver = 512

Wire.write (0x1B);

// Stopp I2C -overføring

Wire.endTransmission ();

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg kontrollregister1

Wire.write (0x20);

// Strøm PÅ, kontinuerlig oppdatering, datautgangshastighet = 1 Hz

Wire.write (0x85);

// Stopp I2C -overføring

Wire.endTransmission ();

forsinkelse (300);

}

hulrom ()

{

usignerte int -data [2];

usignert int val [4];

usignert int H0, H1, H2, H3, T0, T1, T2, T3, rå;

// Verdier for fuktighetskalliberasjon

for (int i = 0; i <2; i ++)

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((48 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fuktighetsdata

H0 = data [0] / 2;

H1 = data [1] / 2;

for (int i = 0; i <2; i ++)

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((54 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fuktighetsdata

H2 = (data [1] * 256,0) + data [0];

for (int i = 0; i <2; i ++)

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((58 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fuktighetsdata

H3 = (data [1] * 256,0) + data [0];

// Temperaturoppkallingsverdier

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x32);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x33);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x35);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

raw = Wire.read ();

}

rå = rå & 0x0F;

// Konverter temperaturoppkallingsverdiene til 10-bits

T0 = ((rå & 0x03) * 256) + T0;

T1 = ((rå & 0x0C) * 64) + T1;

for (int i = 0; i <2; i ++)

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((60 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter dataene

T2 = (data [1] * 256,0) + data [0];

for (int i = 0; i <2; i ++)

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((62 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter dataene

T3 = (data [1] * 256,0) + data [0];

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x28 | 0x80);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 4 byte med data

Wire.requestFrom (Addr, 4);

// Les 4 byte med data

// fuktighet msb, fuktighet lsb, temp msb, temp lsb

hvis (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Konverter dataene

flytefuktighet = (val [1] * 256,0) + val [0];

fuktighet = ((1,0 * H1) - (1,0 * H0)) * (1,0 * fuktighet - 1,0 * H2) / (1,0 * H3 - 1,0 * H2) + (1,0 * H0);

int temp = (val [3] * 256) + val [2];

flyte cTemp = (((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);

float fTemp = (cTemp * 1.8) + 32;

// Utdata til seriell skjerm

Serial.print ("Relativ fuktighet:");

Serial.print (fuktighet);

Serial.println (" % RH");

Serial.print ("Temperatur i Celsius:");

Serial.print (cTemp); Serial.println ("C");

Serial.print ("Temperatur i Fahrenheit:");

Serial.print (fTemp);

Serial.println ("F");

forsinkelse (500);

}

Trinn 4: Søknader:

HTS221 kan brukes i forskjellige forbrukerprodukter som luftfuktere og kjøleskap etc. Denne sensoren finner også sin anvendelse på en bredere arena, inkludert smart hjemmeautomatisering, industriell automatisering, åndedrettsutstyr, eiendeler og varesporing.

Anbefalt: