Innehållsförteckning:

Arduino Nano - HTS221 Relativ fuktighet och temperatursensor Handledning: 4 steg
Arduino Nano - HTS221 Relativ fuktighet och temperatursensor Handledning: 4 steg

Video: Arduino Nano - HTS221 Relativ fuktighet och temperatursensor Handledning: 4 steg

Video: Arduino Nano - HTS221 Relativ fuktighet och temperatursensor Handledning: 4 steg
Video: STC-3028 Thermostat with Heat and Humidity Fully Explained and demonstrated 2024, Juli
Anonim
Image
Image

HTS221 är en ultrakompakt kapacitiv digital sensor för relativ luftfuktighet och temperatur. Den innehåller ett avkänningselement och en blandad signalapplikationsspecifik integrerad krets (ASIC) för att tillhandahålla mätinformation via digitala seriella gränssnitt. Integrerad med så många funktioner är detta en av de mest lämpliga sensorerna för kritisk fukt- och temperaturmätning. Här är demonstrationen med arduino nano.

Steg 1: Vad du behöver.. !

Vad du behöver..!!
Vad du behöver..!!

1. Arduino Nano

2. HTS221

3. I²C -kabel

4. I²C -skärm för Arduino Nano

Steg 2: Anslutningar:

Anslutningar
Anslutningar
Anslutningar
Anslutningar
Anslutningar
Anslutningar
Anslutningar
Anslutningar

Ta en I2C -sköld för Arduino Nano och skjut den försiktigt över stiften på Nano.

Anslut sedan den ena änden av I2C -kabeln till HTS221 -sensorn och den andra änden till I2C -skärmen.

Anslutningar visas på bilden ovan.

Steg 3: Kod:

Koda
Koda

Arduino-koden för HTS221 kan laddas ner från vårt github-arkiv- DCUBE Community.

Här är länken till samma:

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

Vi inkluderar bibliotek Wire.h för att underlätta I2c -kommunikationen mellan sensorn och Arduino -kortet.

Du kan också kopiera koden härifrån, den ges enligt följande:

// Distribueras med en fri vilja licens.

// Använd den hur du vill, vinst eller gratis, förutsatt att den passar i licensen för dess associerade verk.

// HTS221

// Denna kod är utformad för att fungera med HTS221_I2CS I2C Mini Module

#omfatta

// HTS221 I2C -adressen är 0x5F

#define Addr 0x5F

void setup ()

{

// Initiera I2C -kommunikation som MASTER

Wire.begin ();

// Initiera seriell kommunikation, ange överföringshastighet = 9600

Serial.begin (9600);

// Starta I2C -sändning

Wire.beginTransmission (Addr);

// Välj genomsnittligt konfigurationsregister

Wire.write (0x10);

// Temperaturmedelsprover = 256, prover för luftfuktighetsmedel = 512

Wire.write (0x1B);

// Stoppa I2C -överföring

Wire.endTransmission ();

// Starta I2C -sändning

Wire.beginTransmission (Addr);

// Välj kontrollregister1

Wire.write (0x20);

// Power ON, kontinuerlig uppdatering, datautmatningshastighet = 1 Hz

Wire.write (0x85);

// Stoppa I2C -överföring

Wire.endTransmission ();

fördröjning (300);

}

void loop ()

{

osignerade int -data [2];

osignerad int val [4];

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

// Värden för kalliberation av luftfuktighet

för (int i = 0; i <2; i ++)

{

// Starta I2C -sändning

Wire.beginTransmission (Addr);

// Skicka dataregister

Wire.write ((48 + i));

// Stoppa I2C -överföring

Wire.endTransmission ();

// Begär 1 byte data

Wire.requestFrom (Addr, 1);

// Läs 1 byte data

om (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konvertera luftfuktighetsdata

H0 = data [0] / 2;

H1 = data [1] / 2;

för (int i = 0; i <2; i ++)

{

// Starta I2C -sändning

Wire.beginTransmission (Addr);

// Skicka dataregister

Wire.write ((54 + i));

// Stoppa I2C -överföring

Wire.endTransmission ();

// Begär 1 byte data

Wire.requestFrom (Addr, 1);

// Läs 1 byte data

om (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konvertera luftfuktighetsdata

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

för (int i = 0; i <2; i ++)

{

// Starta I2C -sändning

Wire.beginTransmission (Addr);

// Skicka dataregister

Wire.write ((58 + i));

// Stoppa I2C -överföring

Wire.endTransmission ();

// Begär 1 byte data

Wire.requestFrom (Addr, 1);

// Läs 1 byte data

om (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konvertera luftfuktighetsdata

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

// Temperaturberäkningsvärden

// Starta I2C -sändning

Wire.beginTransmission (Addr);

// Skicka dataregister

Wire.write (0x32);

// Stoppa I2C -överföring

Wire.endTransmission ();

// Begär 1 byte data

Wire.requestFrom (Addr, 1);

// Läs 1 byte data

om (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Starta I2C -sändning

Wire.beginTransmission (Addr);

// Skicka dataregister

Wire.write (0x33);

// Stoppa I2C -överföring

Wire.endTransmission ();

// Begär 1 byte data

Wire.requestFrom (Addr, 1);

// Läs 1 byte data

om (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Starta I2C -sändning

Wire.beginTransmission (Addr);

// Skicka dataregister

Wire.write (0x35);

// Stoppa I2C -överföring

Wire.endTransmission ();

// Begär 1 byte data

Wire.requestFrom (Addr, 1);

// Läs 1 byte data

om (Wire.available () == 1)

{

raw = Wire.read ();

}

raw = raw & 0x0F;

// Konvertera temperaturberäkningsvärdena till 10-bitar

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

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

för (int i = 0; i <2; i ++)

{

// Starta I2C -sändning

Wire.beginTransmission (Addr);

// Skicka dataregister

Wire.write ((60 + i));

// Stoppa I2C -överföring

Wire.endTransmission ();

// Begär 1 byte data

Wire.requestFrom (Addr, 1);

// Läs 1 byte data

om (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konvertera data

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

för (int i = 0; i <2; i ++)

{

// Starta I2C -sändning

Wire.beginTransmission (Addr);

// Skicka dataregister

Wire.write ((62 + i));

// Stoppa I2C -överföring

Wire.endTransmission ();

// Begär 1 byte data

Wire.requestFrom (Addr, 1);

// Läs 1 byte data

om (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konvertera data

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

// Starta I2C -sändning

Wire.beginTransmission (Addr);

// Skicka dataregister

Wire.write (0x28 | 0x80);

// Stoppa I2C -överföring

Wire.endTransmission ();

// Begär 4 byte med data

Wire.requestFrom (Addr, 4);

// Läs 4 byte med data

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

om (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Konvertera data

flottörfuktighet = (val [1] * 256,0) + val [0];

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

// Utdata till seriell bildskärm

Serial.print ("Relativ luftfuktighet:");

Seriellt tryck (luftfuktighet);

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");

fördröjning (500);

}

Steg 4: Ansökningar:

HTS221 kan användas i olika konsumentprodukter som luftfuktare och kylskåp etc. Denna sensor hittar också sin tillämpning på en bredare arena, inklusive smart hemautomation, industriell automatisering, andningsutrustning, tillgångs- och varuspårning.

Rekommenderad: