Inhoudsopgave:

Arduino Nano - HTS221 relatieve vochtigheid en temperatuursensor tutorial - Ajarnpa
Arduino Nano - HTS221 relatieve vochtigheid en temperatuursensor tutorial - Ajarnpa

Video: Arduino Nano - HTS221 relatieve vochtigheid en temperatuursensor tutorial - Ajarnpa

Video: Arduino Nano - HTS221 relatieve vochtigheid en temperatuursensor tutorial - Ajarnpa
Video: BME280 Sensor Test with Arduino: pressure, humidity and temperature for the New Chronograph Project 2024, Juli-
Anonim
Image
Image

HTS221 is een ultracompacte capacitieve digitale sensor voor relatieve vochtigheid en temperatuur. Het bevat een detectie-element en een mixed signal application specific integrated circuit (ASIC) om de meetinformatie te leveren via digitale seriële interfaces. Geïntegreerd met zoveel functies is dit een van de meest geschikte sensoren voor kritische vochtigheids- en temperatuurmetingen. Hier is de demonstratie met arduino nano.

Stap 1: Wat je nodig hebt.

Wat je nodig hebt..!!
Wat je nodig hebt..!!

1. Arduino Nano

2. HTS221

3. I²C-kabel

4. I²C-schild voor Arduino Nano

Stap 2: Aansluitingen:

Aansluitingen
Aansluitingen
Aansluitingen
Aansluitingen
Aansluitingen
Aansluitingen
Aansluitingen
Aansluitingen

Neem een I2C-schild voor Arduino Nano en duw het voorzichtig over de pinnen van Nano.

Sluit vervolgens het ene uiteinde van de I2C-kabel aan op de HTS221-sensor en het andere uiteinde op de I2C-afscherming.

De aansluitingen zijn weergegeven in de afbeelding hierboven.

Stap 3: Coderen:

Code
Code

De arduino-code voor HTS221 kan worden gedownload van onze github-repository - DCUBE Community.

Hier is de link voor hetzelfde:

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

We nemen bibliotheek Wire.h op om de I2c-communicatie van de sensor met het Arduino-bord te vergemakkelijken.

U kunt de code ook hier kopiëren, deze wordt als volgt gegeven:

// Gedistribueerd met een vrije wilslicentie.

// Gebruik het zoals je wilt, winst of gratis, op voorwaarde dat het past in de licenties van de bijbehorende werken.

// HTS221

// Deze code is ontworpen om te werken met de HTS221_I2CS I2C Mini Module

#erbij betrekken

// HTS221 I2C-adres is 0x5F

#define Addr 0x5F

ongeldige setup()

{

// Initialiseer I2C-communicatie als MASTER

Draad.begin();

// Initialiseer seriële communicatie, stel baudrate in = 9600

Serieel.begin(9600);

// Start I2C-verzending

Wire.beginTransmission (Addr);

// Selecteer gemiddeld configuratieregister

Draad.schrijven (0x10);

// Gemiddelde temperatuurmonsters = 256, gemiddelde vochtigheidsmonsters = 512

Draad.schrijven (0x1B);

// Stop I2C-verzending

Wire.endTransmission();

// Start I2C-verzending

Wire.beginTransmission (Addr);

// Selecteer controleregister1

Draad.schrijven (0x20);

// Stroom AAN, continue update, gegevensuitvoersnelheid = 1 Hz

Draad.schrijven (0x85);

// Stop I2C-verzending

Wire.endTransmission();

vertraging (300);

}

lege lus()

{

niet-ondertekende int-gegevens[2];

niet-ondertekende int val[4];

niet ondertekend int H0, H1, H2, H3, T0, T1, T2, T3, onbewerkt;

// Vochtigheidskalibratiewaarden

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

{

// Start I2C-verzending

Wire.beginTransmission (Addr);

// Gegevensregister verzenden

Wire.write((48 + i));

// Stop I2C-verzending

Wire.endTransmission();

// Vraag 1 byte aan gegevens aan

Wire.requestFrom(Addr, 1);

// Lees 1 byte aan gegevens

if(Draad.beschikbaar() == 1)

{

data = Wire.read();

}

}

// Vochtigheidsgegevens converteren

H0 = gegevens[0] / 2;

H1 = gegevens[1] / 2;

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

{

// Start I2C-verzending

Wire.beginTransmission (Addr);

// Gegevensregister verzenden

Wire.write((54 + i));

// Stop I2C-verzending

Wire.endTransmission();

// Vraag 1 byte aan gegevens aan

Wire.requestFrom(Addr, 1);

// Lees 1 byte aan gegevens

if(Draad.beschikbaar() == 1)

{

data = Wire.read();

}

}

// Vochtigheidsgegevens converteren

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

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

{

// Start I2C-verzending

Wire.beginTransmission (Addr);

// Gegevensregister verzenden

Wire.write((58 + i));

// Stop I2C-verzending

Wire.endTransmission();

// Vraag 1 byte aan gegevens aan

Wire.requestFrom(Addr, 1);

// Lees 1 byte aan gegevens

if(Draad.beschikbaar() == 1)

{

data = Wire.read();

}

}

// Vochtigheidsgegevens converteren

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

// Temperatuur kalibratie waarden

// Start I2C-verzending

Wire.beginTransmission (Addr);

// Gegevensregister verzenden

Draad.schrijven (0x32);

// Stop I2C-verzending

Wire.endTransmission();

// Vraag 1 byte aan gegevens aan

Wire.requestFrom(Addr, 1);

// Lees 1 byte aan gegevens

if(Draad.beschikbaar() == 1)

{

T0 = Draad.lezen();

}

// Start I2C-verzending

Wire.beginTransmission (Addr);

// Gegevensregister verzenden

Draad.schrijven (0x33);

// Stop I2C-verzending

Wire.endTransmission();

// Vraag 1 byte aan gegevens aan

Wire.requestFrom(Addr, 1);

// Lees 1 byte aan gegevens

if(Draad.beschikbaar() == 1)

{

T1 = Draad.lezen();

}

// Start I2C-verzending

Wire.beginTransmission (Addr);

// Gegevensregister verzenden

Draad.schrijven (0x35);

// Stop I2C-verzending

Wire.endTransmission();

// Vraag 1 byte aan gegevens aan

Wire.requestFrom(Addr, 1);

// Lees 1 byte aan gegevens

if(Draad.beschikbaar() == 1)

{

onbewerkt = Draad.lezen();

}

onbewerkt = onbewerkt & 0x0F;

// Converteer de temperatuurkalibratiewaarden naar 10-bits

T0 = ((ruwe & 0x03) * 256) + T0;

T1 = ((ruwe & 0x0C) * 64) + T1;

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

{

// Start I2C-verzending

Wire.beginTransmission (Addr);

// Gegevensregister verzenden

Wire.write((60 + i));

// Stop I2C-verzending

Wire.endTransmission();

// Vraag 1 byte aan gegevens aan

Wire.requestFrom(Addr, 1);

// Lees 1 byte aan gegevens

if(Draad.beschikbaar() == 1)

{

data = Wire.read();

}

}

// Converteer de gegevens

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

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

{

// Start I2C-verzending

Wire.beginTransmission (Addr);

// Gegevensregister verzenden

Wire.write((62 + i));

// Stop I2C-verzending

Wire.endTransmission();

// Vraag 1 byte aan gegevens aan

Wire.requestFrom(Addr, 1);

// Lees 1 byte aan gegevens

if(Draad.beschikbaar() == 1)

{

data = Wire.read();

}

}

// Converteer de gegevens

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

// Start I2C-verzending

Wire.beginTransmission (Addr);

// Gegevensregister verzenden

Draad.schrijven (0x28 | 0x80);

// Stop I2C-verzending

Wire.endTransmission();

// Vraag 4 bytes aan gegevens aan

Wire.requestFrom(Addr, 4);

// Lees 4 bytes aan gegevens

// vochtigheid msb, vochtigheid lsb, temp msb, temp lsb

if(Draad.beschikbaar() == 4)

{

val[0] = Draad.lezen();

val[1] = Draad.lezen();

val[2] = Draad.lezen();

val[3] = Draad.lezen();

}

// Converteer de gegevens

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

vochtigheid = ((1,0 * H1) - (1,0 * H0)) * (1,0 * vochtigheid - 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;

// Gegevens uitvoeren naar seriële monitor

Serial.print("Relatieve vochtigheid: ");

Seriële.afdruk (vochtigheid);

Serial.println ("% RV");

Serial.print ("Temperatuur in Celsius: ");

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

Serial.print("Temperatuur in Fahrenheit: ");

Serieel.print(fTemp);

Serieel.println ("F");

vertraging (500);

}

Stap 4: Toepassingen:

HTS221 kan worden gebruikt in verschillende consumentenproducten zoals luchtbevochtigers en koelkasten enz. Deze sensor vindt ook zijn toepassing in een breder gebied, waaronder slimme domotica, industriële automatisering, beademingsapparatuur, het volgen van activa en goederen.

Aanbevolen: