Arduino-Code und Video für einen Aosong AM2320 digitalen Temperatur- und Luftfeuchtigkeitssensor
In diesem Tutorial werden wir erkunden, wie man den digitalen Temperatur- und Luftfeuchtigkeitssensor Aosong AM2320 mit dem Arduino verwendet. Dieser Sensor kommuniziert über I2C und ermöglicht es uns, die Temperatur in Celsius oder Fahrenheit sowie die Luftfeuchtigkeit in Prozent zu lesen. Am Ende dieses Tutorials wirst du in der Lage sein, ein einfaches Projekt zu bauen, das diese Messwerte im seriellen Monitor anzeigt.

Der AM2320-Sensor ist kompakt und liefert zuverlässige Daten sowohl zur Temperatur als auch zur Luftfeuchtigkeit. Er hat eine Auflösung von 0.1°C für die Temperatur und einen Feuchtigkeitsbereich von 0-99%. Die Einrichtung umfasst das Verdrahten des Sensors mit dem Arduino und das Schreiben einiger Zeilen Code, um die Sensorwerte zu lesen und anzuzeigen. Dieses Video-Tutorial bietet eine Schritt-für-Schritt-Anleitung, einschließlich Verdrahtungs- und Codebeispielen (im Video bei 00:00).
Hardware erklärt
Das Hauptbauteil dieses Projekts ist der Aosong AM2320-Sensor. Er arbeitet über I2C-Kommunikation, was den Anschluss vereinfacht, da nur zwei Datenleitungen (SDA und SCL) sowie Versorgungsspannung und Masse benötigt werden. Der Sensor misst die Temperatur im Bereich von −40 °C bis +80 °C mit einer Genauigkeit von ±0,5 °C und die Luftfeuchtigkeit von 0 % bis 99 % mit ähnlicher Genauigkeit. Der Sensor ist für einen sehr niedrigen Energieverbrauch ausgelegt, weshalb er sich für batteriebetriebene Geräte eignet.
Außerdem verfügt das AM2320-Modul über Pull-up-Widerstände, die für die I2C-Kommunikation erforderlich sind und die Signale auf den SDA- und SCL-Leitungen stabilisieren. Diese Eigenschaft vereinfacht die Verkabelung, da Sie keine externen Pull-up-Widerstände hinzufügen müssen.
Details zum Datenblatt
| Hersteller | Aosong |
|---|---|
| Teilenummer | AM2320 |
| Logik-/I/O-Spannung | 3,1 bis 5,5 V |
| Versorgungsspannung | 3,1 bis 5,5 V |
| Temperaturbereich | -40 bis +80 °C |
| Feuchtigkeitsbereich | 0 bis 99 % |
| Auflösung (Temperatur) | 0,1 °C |
| Auflösung (Luftfeuchtigkeit) | 0,1 % |
| Genauigkeit (Temperatur) | ±0,5 °C |
| Genauigkeit (Luftfeuchtigkeit) | ±3 % |
| Paket | Modul |
- Sorgen Sie für eine korrekte Spannungsversorgung (3.1 bis 5.5 V).
- Verwenden Sie Pull-up-Widerstände (typischerweise 4,7 kΩ) für die SDA- und SCL-Leitungen.
- Halten Sie die Temperatur im Bereich von -40 °C bis +80 °C, um Schäden zu vermeiden.
- Die Feuchtigkeitsmesswerte sind im Bereich von 0 % bis 99 % genau.
- Überwachen Sie während der Messungen auf Fehlercodes (z. B. Sensor offline).
Verdrahtungsanleitung

Um den AM2320-Sensor mit dem Arduino zu verdrahten, gehen Sie diese Schritte sorgfältig durch. Zuerst verbinden Sie die Stromanschlüsse: der äußerste linke Pin des AM2320 wird mit den 5V des Arduino (oder VCC) verbunden, während der GND-Pin mit dem GND des Arduino verbunden wird. Der zweite Pin von links (SDA) wird mit dem analogen Pin A4 beim Arduino Uno oder A20 beim Arduino Mega verbunden. Der dritte Pin (SCL) geht zu A5 beim Arduino Uno oder A21 beim Arduino Mega.
Außerdem müssen Sie einen 4.7 kΩ-Widerstand vom SDA-Pin zur 5V-Leitung und einen weiteren 4.7 kΩ-Widerstand vom SCL-Pin zur 5V-Leitung anschließen. Dies gewährleistet eine ordnungsgemäße I2C-Kommunikation. Wenn Sie andere Arduino-Modelle wie das Leonardo verwenden, sind die SDA- und SCL-Pins ebenfalls A4 bzw. A5.
Codebeispiele & Schritt-für-Schritt-Anleitung
Werfen wir einen Blick auf einige wichtige Teile des in diesem Projekt verwendeten Arduino-Codes. Zuerst initialisieren wir den Sensor und richten die serielle Kommunikation ein:
#include
AM2320 sensor;
void setup() {
Serial.begin(9600);
sensor.begin();
} In diesem Codeausschnitt binden wir die notwendige Bibliothek mit#include <AM2320.h>und erstellen eine Instanz des Sensors. Dersetup()Die Funktion initialisiert die serielle Kommunikation mit 9600 Baud und startet den Sensor.
Als Nächstes haben wir die Hauptschleife, die die Temperatur und Luftfeuchtigkeit ausliest:
if (sensor.measure()) {
Serial.print("Temperature: ");
Serial.print(temp('C'));
Serial.print(" C, Humidity: ");
Serial.print(sensor.getHumidity());
Serial.println("%");
}Dieser Code prüft, ob die Sensormessung erfolgreich war. Falls ja, gibt er die Temperatur in Grad Celsius und die Luftfeuchtigkeit in Prozent auf dem seriellen Monitor aus. Dertemp('C')Die Funktion wird aufgerufen, um die Temperatur in Grad Celsius abzurufen. Wenn Sie Fahrenheit möchten, können Sie sie aufrufen.temp('F').
Demonstration / Was Sie erwartet
Wenn Sie das Programm ausführen, sollten Sie im seriellen Monitor alle 0,5 Sekunden aktualisierte Temperatur- und Luftfeuchtigkeitswerte sehen. Zum Beispiel könnte die Ausgabe "Temperature: 23.5 C, Humidity: 50%" anzeigen. Wenn Sie den Sensor erwärmen, sollten Sie einen Temperaturanstieg und einen Rückgang der Luftfeuchtigkeit beobachten, was seine Reaktionsfähigkeit demonstriert (im Video bei 11:15).
Video-Zeitstempel
- 00:00- Einführung in den AM2320-Sensor
- 01:30- Verdrahtungsanleitung
- 03:45- Code-Durchgang
- 05:15- Vorführung der Messwerte
++
/**
This is Arduino code for Aosong Digital Temperature and Humidity Sensor.
This code is presented as part of a Robojax tutorial.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Copyright 2016 Ratthanan Nalintasnai
Modified for Robojax.com video by
Ahmad S. on March 22, 2018 at 22:45 in Ajax, Ontario, Canada
This code, with library and other codes, is available at
https://robojax.com
Watch the video instruction for this code: https://youtu.be/3ifN0FhLB5E
**/
// Include library into the sketch
#include <AM2320.h>
// Create an instance of sensor
AM2320 sensor;
void setup() {
// enable serial communication
Serial.begin(9600);
Serial.print("Robojax AM2320 Demo ");
// call sensor.begin() to initialize the library
sensor.begin();
}
void loop() {
// sensor.measure() returns a boolean value
// - true indicates measurement is completed successfully
// - false indicates that either the sensor is not ready or CRC validation failed
// use getErrorCode() to check for the cause of the error.
if (sensor.measure()) {
Serial.print("Temperature: ");
Serial.print(temp('C'));
Serial.print(" C, Humidity: ");
Serial.print(sensor.getHumidity());
Serial.println("%");
}
else { // error has occurred
int errorCode = sensor.getErrorCode();
switch (errorCode) {
case 1: Serial.println("ERR: Sensor is offline"); break;
case 2: Serial.println("ERR: CRC validation failed."); break;
}
}
delay(500);
}
/*
* temp()
* returns temperature based on the parameter T
* if T == 'F', will convert Celsius to Fahrenheit
* if T is anything else or empty, will return Celsius
* how to use:
* to get Fahrenheit, use temp('F')
* to get Celsius, use temp('C') or temp('')
* the temp('') uses an empty single quote
*
*/
float temp(char T)
{
if (sensor.measure()) {
if(T =='F')
{
// convert to FAHRENHEIT and return
// Robojax video tutorial
return sensor.getTemperature()* 1.8 + 32;
}else{
return sensor.getTemperature();// return CELSIUS
}
}// if sensor.measure
}
Ressourcen & Referenzen
Noch keine Ressourcen vorhanden.
Dateien📁
Datenblatt (pdf)
-
Adafruit-AM2320-Temperatur- und Feuchtigkeitssensor I2C Benutzerhandbuch
adafruit-am2320-temperature-humidity-i2c-sensor.pdf1.27 MB
Fritzing-Datei
-
AM2320 Feuchtigkeits- und Temperatursensor
AM2320 Humidity and Temperature Sensor.fzpz0.01 MB