Inhaltsverzeichnis:
Video: Arduino Nano - HTS221 Tutorial für relativen Luftfeuchtigkeits- und Temperatursensor - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
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.
1. Arduino Nano
2. HTS221
3. I²C-Kabel
4. I²C-Schild für Arduino Nano
Schritt 2: 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:
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:
Temperatursensor (Arduino): 8 Schritte
Temperatursensor (Arduino): Dieses Projekt ist perfekt für Fortgeschrittene und Anfänger. Die Einrichtung ist sehr einfach. Es gibt einen Chip namens LM35 (Link für zusätzliche Erklärung), der es dem Arduino ermöglicht, die Temperatur der Umgebung zu bestimmen
So erstellen Sie ein Gmail-Konto (Raigyns Tutorial für East): 8 Schritte
So erstellen Sie ein Gmail-Konto (Raigyns Tutorial für East): In diesem Tutorial zeige ich Ihnen, wie Sie ein Gmail-Konto erstellen
Tutorial zur VM Ware-Installation für Windows: 11 Schritte
VM Ware-Installation für Windows-Tutorial: VM Ware ist eine Software, die es Schülern ermöglicht, drahtlos von ihrem PC aus auf das Laufwerk ihres Schulcomputers zuzugreifen. In diesem Tutorial erfahren Sie, wie Sie VM Ware auf Windows-Computern richtig installieren. Zusammenarbeit an diesem Projekt: Smith, Bernad
Auspacken von Jetson Nano & ein Schnellstart für die Two Vision Demo – wikiHow
Auspacken von Jetson Nano & ein Quick Start-Up für Two Vision Demo: ZusammenfassungWie Sie wissen, ist Jetson Nano jetzt ein Starprodukt. Und es kann neuronale Netzwerktechnologie umfassend für eingebettete Systeme bereitstellen. Hier ist ein Unboxing-Artikel mit Details zum Produkt, dem Startvorgang und zwei visuellen Demos … Wortzahl: 800
DIY IoT-Lampe für die Hausautomation -- ESP8266-Tutorial: 13 Schritte (mit Bildern)
DIY IoT-Lampe für die Hausautomation || ESP8266-Tutorial: In diesem Tutorial werden wir eine mit dem Internet verbundene intelligente Lampe erstellen. Dies wird tief in das Internet der Dinge eintauchen und eine Welt der Heimautomatisierung eröffnen! Die Lampe ist über WLAN verbunden und verfügt über ein offenes Nachrichtenprotokoll. Das heißt, Sie können wählen