Suchcode

Lektion 35: Verwendung des HTU21D-Temperatursensors mit dem Arduino

Lektion 35: Verwendung des HTU21D-Temperatursensors mit dem Arduino

Dieses Projekt zeigt Ihnen, wie Sie mit einem Arduino Temperatur- und Feuchtigkeitsdaten von einem HTU21D-F-Sensor auslesen. Dieser Sensor ist preiswert und weit verbreitet, wodurch er sich ideal für eine Vielzahl von Projekten eignet. Der Sensor gibt Daten über I2C aus, ein gängiges digitales Kommunikationsprotokoll. Das Erlernen der Nutzung dieses Sensors und von I2C eröffnet viele Möglichkeiten für Ihre Projekte.

HTU21D module

Praktische Anwendungen:

  • Einen smarten Umweltmonitor für das Smart Home bauen
  • Eine Wetterstation erstellen
  • Entwicklung eines klimatisierten Gehäuses für empfindliche Elektronik
  • Überwachung von Temperatur und Luftfeuchtigkeit in einem Gewächshaus oder Terrarium

Hardware/Komponenten

Sie benötigen die folgenden Komponenten:

  • Arduino-Board (z. B. Uno, Nano)
  • HTU21D-F Temperatur- und Feuchtigkeitssensor (im Video bei 00:22)
  • Verbindungsdrähte
  • Breadboard (optional, aber empfohlen)

Verdrahtungsanleitung

Die Verkabelung ist unkompliziert. Schließen Sie den Sensor wie folgt an den Arduino an (im Video bei 02:28):

  • Sensor VCC an Arduino 3,3 V
  • Sensor-GND an Arduino-GND
  • Sensor SDA an Arduino A4
  • Sensor SCL an Arduino A5

Arduino wiring for HTU21DF light intesity sensor
Arduino wiring for HTU21DF light intesity sensor

Erklärung des Codes

Der bereitgestellte Code verwendet die Adafruit HTU21D-F-Bibliothek (im Video bei 03:03), um mit dem Sensor zu interagieren. Die wichtigsten Teile sind:


// These are the lines that you can configure:
const int inPin =A0;//can change
const int iteration = 1000; //can change (see video at 00:22)
const float LM35_FACTOR =0.01;// do not change

inPin: Gibt den analogen Pin an, der mit dem Temperatursensor verbunden ist. Sie können dies ändern, um es an Ihre Verdrahtung anzupassen.

iteration: Diese Variable steuert die Anzahl der Messwerte, die zur Mittelung der Temperatur genommen werden. Eine Erhöhung verbessert die Genauigkeit, verlangsamt jedoch die Messungen (im Video bei 00:22).

DergetHTU()Die Funktion (im Video bei 08:46) ermöglicht es, durch Übergabe eines Zeichens ('C', 'F', 'K' oder 'H') als Argument die Temperatur in Celsius, Fahrenheit oder Kelvin oder die Luftfeuchtigkeit abzurufen. Der Code verwendet dann diese Funktion, um die Daten im seriellen Monitor anzuzeigen.


float getTemperature(char type) {
  // ... (code to read temperature and humidity) ...
  if (type == 'F') {
    value = averageTemperature * 9 / 5 + 32; // Fahrenheit
  } else if (type == 'K') {
    value = averageTemperature + 273.15; // Kelvin
  } else {
    value = averageTemperature; // Celsius
  }
  return value;
}

Live-Projekt/Vorführung

Das Video demonstriert die Funktionalität des Sensors (im Video bei 07:34). Der serielle Monitor zeigt die Temperatur- und Feuchtigkeitswerte an. Der Präsentator zeigt auch, wie der Code Aktionen basierend auf Temperaturgrenzwerten auslösen kann (im Video bei 06:45).

Kapitel

  • [00:00] Einleitung
  • [00:22] Sensorübersicht
  • [01:22] Überprüfung des Datenblatts
  • [02:28] Verkabelung
  • [03:03] Bibliotheksinstallation
  • [04:05] Code-Erklärung (Teil 1)
  • [08:33] Code-Erklärung (Teil 2)
  • [07:34] Live-Demonstration

Bilder

thumb_robojax_HTU21DF_types-1756423961-8524
thumb_robojax_HTU21DF_types-1756423961-8524
Arduino wiring for HTU21DF light intesity sensor
Arduino wiring for HTU21DF light intesity sensor
HTU21D module
HTU21D module
HTU21D module-back
HTU21D module-back
212-Arduino code using HTU21D-F Humidity & Temperature Sensor (basic)
Sprache: C++
++
/***************************************************
  This is an example for the HTU21D-F Humidity & Temperature Sensor

  Designed specifically to work with the HTU21D-F sensor from Adafruit
  ----> https://www.adafruit.com/products/1899

  These module use I2C to communicate; 2 pins are required to
  interface
 ****************************************************/

#include <Wire.h>
#include "Adafruit_HTU21DF.h"

// Connect Vin to 3-5VDC
// Connect GND to ground
// Connect SCL to I2C clock pin (A5 on UNO)
// Connect SDA to I2C data pin (A4 on UNO)

Adafruit_HTU21DF htu1 = Adafruit_HTU21DF();//create object for first HTU21DF sensor
Adafruit_HTU21DF htu2 = Adafruit_HTU21DF();//create object for second HTU21DF sensor
//Adafruit_HTU21DF htu3 = Adafruit_HTU21DF();//create object for third HTU21DF sensor (disabled, remove // from begging of code)

void setup() {
  Serial.begin(9600);
  Serial.println("HTU21D-F test for two modules");

  if (!htu.begin()) {
    Serial.println("Couldn't find sensor!");
    while (1);
  }
}

void loop() {
	//get value for sensor 1
    float temp1 = htu1.readTemperature();
    float rel_hum1 = htu1.readHumidity();

	//get value for sensor 2
    float temp2 = htu2.readTemperature();
    float rel_hum2 = htu2.readHumidity();	

	//get value for sensor 3
    float temp3 = htu3.readTemperature();
    float rel_hum3 = htu3.readHumidity();	
	
	//print values for sensor 1
    Serial.print("Sensor 1 Temp : "); Serial.print(temp1); Serial.print(" C");
    Serial.print("\t\t");
    Serial.print("Sensor 1 Humidity: "); Serial.print(rel_hum1); Serial.println(" %");

	//print values for sensor 2
    Serial.print("Sensor 2 Temp : "); Serial.print(temp2); Serial.print(" C");
    Serial.print("\t\t");
    Serial.print("Sensor 2 Humidity: "); Serial.print(rel_hum2); Serial.println(" %");	
	
	//print values for sensor 3
    //Serial.print("Sensor 3 Temp : "); Serial.print(temp3); Serial.print(" C");
    //Serial.print("\t\t");
    //Serial.print("Sensor 3 Humidity: "); Serial.print(rel_hum3); Serial.println(" %");	
	
    delay(500);
}

Dinge, die Sie vielleicht brauchen

Dateien📁

Arduino-Bibliotheken (zip)