Inhaltsverzeichnis:

Arduino Nano - HTS221 Tutorial für relativen Luftfeuchtigkeits- und Temperatursensor - Gunook
Arduino Nano - HTS221 Tutorial für relativen Luftfeuchtigkeits- und Temperatursensor - Gunook

Video: Arduino Nano - HTS221 Tutorial für relativen Luftfeuchtigkeits- und Temperatursensor - Gunook

Video: Arduino Nano - HTS221 Tutorial für relativen Luftfeuchtigkeits- und Temperatursensor - Gunook
Video: Arduino Nano - TMP112 Temperature Sensor Tutorial 2024, November
Anonim
Image
Image

HTS221 ist ein ultrakompakter kapazitiver digitaler Sensor für relative Luftfeuchtigkeit und Temperatur. Es enthält ein Sensorelement und einen anwendungsspezifischen integrierten Schaltkreis (ASIC) für gemischte Signale, um die Messinformationen über digitale serielle Schnittstellen bereitzustellen. Integriert mit so vielen Funktionen ist dies einer der am besten geeigneten Sensoren für kritische Feuchtigkeits- und Temperaturmessungen. Hier ist die Demonstration mit Arduino Nano.

Schritt 1: Was Sie brauchen.

Was du brauchst..!!
Was du brauchst..!!

1. Arduino Nano

2. HTS221

3. I²C-Kabel

4. I²C-Schild für Arduino Nano

Schritt 2: Anschlüsse:

Anschlüsse
Anschlüsse
Anschlüsse
Anschlüsse
Anschlüsse
Anschlüsse
Anschlüsse
Anschlüsse

Nehmen Sie ein I2C-Shield für Arduino Nano und schieben Sie es vorsichtig über die Pins von Nano.

Verbinden Sie dann das eine Ende des I2C-Kabels mit dem HTS221-Sensor und das andere Ende mit der I2C-Abschirmung.

Die Anschlüsse sind im Bild oben dargestellt.

Schritt 3: Code:

Code
Code

Der Arduino-Code für HTS221 kann von unserem Github-Repository heruntergeladen werden - DCUBE Community.

Hier der Link dazu:

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

Wir binden die Bibliothek Wire.h ein, um die I2c-Kommunikation des Sensors mit dem Arduino-Board zu erleichtern.

Sie können den Code auch von hier kopieren, er wird wie folgt angegeben:

// Wird mit einer frei wählbaren Lizenz vertrieben.

// Verwenden Sie es, wie Sie wollen, gewinnbringend oder kostenlos, sofern es in die Lizenzen der zugehörigen Werke passt.

// HTS221

// Dieser Code wurde entwickelt, um mit dem HTS221_I2CS I2C Mini Module zu arbeiten

#enthalten

// HTS221 I2C-Adresse ist 0x5F

#define Addr 0x5F

Void-Setup ()

{

// I2C-Kommunikation als MASTER initialisieren

Wire.begin();

// Serielle Kommunikation initialisieren, Baudrate = 9600. einstellen

Serial.begin (9600);

// I2C-Übertragung starten

Wire.beginTransmission(Addr);

// Wählen Sie das durchschnittliche Konfigurationsregister

Wire.write(0x10);

// Temperaturdurchschnittsproben = 256, Feuchtigkeitsdurchschnittsproben = 512

Wire.write (0x1B);

// I2C-Übertragung stoppen

Wire.endTransmission();

// I2C-Übertragung starten

Wire.beginTransmission(Addr);

// Steuerregister auswählen1

Wire.write (0x20);

// Power ON, kontinuierliches Update, Datenausgaberate = 1 Hz

Wire.write (0x85);

// I2C-Übertragung stoppen

Wire.endTransmission();

Verzögerung (300);

}

Leere Schleife ()

{

unsignierte int-Daten[2];

unsigned int val[4];

unsigned int H0, H1, H2, H3, T0, T1, T2, T3, roh;

// Feuchtigkeitskalibrierungswerte

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

{

// I2C-Übertragung starten

Wire.beginTransmission(Addr);

// Datenregister senden

Wire.write((48 + i));

// I2C-Übertragung stoppen

Wire.endTransmission();

// 1 Byte Daten anfordern

Wire.requestFrom(Addr, 1);

// 1 Byte Daten lesen

if(Draht.verfügbar() == 1)

{

data = Wire.read();

}

}

// Feuchtigkeitsdaten konvertieren

H0 = Daten[0] / 2;

H1 = Daten[1] / 2;

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

{

// I2C-Übertragung starten

Wire.beginTransmission(Addr);

// Datenregister senden

Wire.write((54 + i));

// I2C-Übertragung stoppen

Wire.endTransmission();

// 1 Byte Daten anfordern

Wire.requestFrom(Addr, 1);

// 1 Byte Daten lesen

if(Draht.verfügbar() == 1)

{

data = Wire.read();

}

}

// Feuchtigkeitsdaten konvertieren

H2 = (Daten[1] * 256.0) + Daten[0];

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

{

// I2C-Übertragung starten

Wire.beginTransmission(Addr);

// Datenregister senden

Wire.write((58 + i));

// I2C-Übertragung stoppen

Wire.endTransmission();

// 1 Byte Daten anfordern

Wire.requestFrom(Addr, 1);

// 1 Byte Daten lesen

if(Draht.verfügbar() == 1)

{

data = Wire.read();

}

}

// Feuchtigkeitsdaten konvertieren

H3 = (Daten[1] * 256.0) + Daten[0];

// Temperaturkalibrierungswerte

// I2C-Übertragung starten

Wire.beginTransmission(Addr);

// Datenregister senden

Wire.write (0x32);

// I2C-Übertragung stoppen

Wire.endTransmission();

// 1 Byte Daten anfordern

Wire.requestFrom(Addr, 1);

// 1 Byte Daten lesen

if(Draht.verfügbar() == 1)

{

T0 = Wire.read();

}

// I2C-Übertragung starten

Wire.beginTransmission(Addr);

// Datenregister senden

Wire.write (0x33);

// I2C-Übertragung stoppen

Wire.endTransmission();

// 1 Byte Daten anfordern

Wire.requestFrom(Addr, 1);

// 1 Byte Daten lesen

if(Draht.verfügbar() == 1)

{

T1 = Wire.read();

}

// I2C-Übertragung starten

Wire.beginTransmission(Addr);

// Datenregister senden

Wire.write (0x35);

// I2C-Übertragung stoppen

Wire.endTransmission();

// 1 Byte Daten anfordern

Wire.requestFrom(Addr, 1);

// 1 Byte Daten lesen

if(Draht.verfügbar() == 1)

{

raw = Wire.read();

}

roh = roh & 0x0F;

// Konvertieren Sie die Temperaturkalibrierungswerte in 10-Bit

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

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

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

{

// I2C-Übertragung starten

Wire.beginTransmission(Addr);

// Datenregister senden

Wire.write((60 + i));

// I2C-Übertragung stoppen

Wire.endTransmission();

// 1 Byte Daten anfordern

Wire.requestFrom(Addr, 1);

// 1 Byte Daten lesen

if(Draht.verfügbar() == 1)

{

data = Wire.read();

}

}

// Konvertieren Sie die Daten

T2 = (Daten[1] * 256.0) + Daten[0];

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

{

// I2C-Übertragung starten

Wire.beginTransmission(Addr);

// Datenregister senden

Wire.write((62 + i));

// I2C-Übertragung stoppen

Wire.endTransmission();

// 1 Byte Daten anfordern

Wire.requestFrom(Addr, 1);

// 1 Byte Daten lesen

if(Draht.verfügbar() == 1)

{

data = Wire.read();

}

}

// Konvertieren Sie die Daten

T3 = (Daten[1] * 256.0) + Daten[0];

// I2C-Übertragung starten

Wire.beginTransmission(Addr);

// Datenregister senden

Wire.write(0x28 | 0x80);

// I2C-Übertragung stoppen

Wire.endTransmission();

// 4 Byte Daten anfordern

Wire.requestFrom(Addr, 4);

// 4 Byte Daten lesen

// Luftfeuchtigkeit msb, Luftfeuchtigkeit lsb, temp msb, temp lsb

if(Draht.verfügbar() == 4)

{

val[0] = Wire.read();

val[1] = Wire.read();

val[2] = Wire.read();

val[3] = Wire.read();

}

// Konvertieren Sie die Daten

Schwebefeuchte = (val[1] * 256.0) + val[0];

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

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

Schwimmer cTemp = (((T1 - T0) / 8,0) * (Temp - T2)) / (T3 - T2) + (T0 / 8,0);

Schwimmer fTemp = (cTemp * 1,8) + 32;

// Daten an seriellen Monitor ausgeben

Serial.print ("Relative Luftfeuchtigkeit: ");

Serial.print (Luftfeuchtigkeit);

Serial.println("% RH");

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

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

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

Serial.print (fTemp);

Serial.println("F");

Verzögerung (500);

}

Schritt 4: Anwendungen:

HTS221 kann in verschiedenen Verbraucherprodukten wie Luftbefeuchtern und Kühlschränken usw. eingesetzt werden. Dieser Sensor findet auch seine Anwendung in einem breiteren Bereich, einschließlich Smart Home Automation, Industrieautomation, Beatmungsgeräte, Asset- und Warenverfolgung.

Empfohlen: