In diesem Beitrag möchte ich dir den Sensor für Temperatur & rel. Luftfeuchtigkeit AM2320 vorstellen.
Der Sensor AM2320 ist sehr klein (kaum größer als ein 1 € Stück), hat dabei aber trotzdem eine sehr gute Auflösung und vor allem durch die I2C Schnittstelle eine sehr gute Anbindung an den Arduino.
Bezug
Diesen Sensor habe ich (wie so viele andere) über ebay.de* bezogen.
Der Preis liegt zwischen 1,45 € bis 2,55 € ohne Versandkosten.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Auf anderen Plattformen wie amazon.de oder aliexpress.com erhält man diesen Sensor auch, aber der Preis ist sehr ähnlich, jedoch die Lieferzeiten sind sehr viel länger.
Die Lieferung erfolgte in einer kleinen, einfachen, antistatischen Tüte. Diese Art der Lieferung ist für Sensoren üblich und auch sehr gut.
Technische Daten des AM2320 Sensors
- Betriebsspannung 3,3V / 5V
- Messbereich
- Temperatur -40 °C bis 80 °C (Toleranz ±0.5 °C)
- rel. Luftfeuchtigkeit 0 % bis 99,9 % (Toleranz ±0.3 %)
- Schnittstelle I2C (0x5C)
- Abmaße (L x B x H) 22,5 mm x 12 mm x 4,7 mm
Weitere technische Daten kannst du auch dem Datenblatt zum Sensor unter https://akizukidenshi.com/download/ds/aosong/AM2320.pdf entnehmen.
Pinout des Sensors AM2320
Der Sensor verfügt über 4 Pins welche wie folgt belegt sind:
Anschluss am Arduino
Der Sensor verfügt wie bereits gezeigt über die I2C Schnittstelle und wird dadurch über die Pins analog A4 (SDA) und analog A5 (SCL) angeschlossen.
Für den Aufbau der Schaltung verwende ich neben dem Sensor und einem Arduino UNO, noch zusätzlich:
- 1x 400 Pin Breadboard,
- 4x Breadboardkabel, 10 cm, männlich – männlich,
- 2x 2,2 kOhm Widerstand
Aufbau der Schaltung
Im Nachfolgenden ist der Sensor auf einem Breadboard gesteckt, dabei schaut die Schrift bzw. das Gitter nach vorne. Mit dem Aufbau beginnen, von links (VCC).
Anschluss von VCC & GND
Als Erstes wird 5V vom Arduino an den ersten Pin des Sensors angeschlossen.
Der Pin GND wird mit dem dritten Pin des Sensors verbunden.
Anschluss von SDA & SCL
Die Datenleitung SDA wird mit dem analogen Pin A4 und SCL mit dem analogen Pin A5 verbunden.
Zusätzlich werden diese beiden Pins mit einem 2,2 kOhm Widerstand an VCC verbunden.
Programmieren
benötigte Bibliothek für den AM2320
Zum einfachen Zugriff auf die Sensordaten können wir uns einer Bibliothek bedienen. Der Vorteil ist das wir nicht viel Code schreiben müssen, damit wir die Sensordaten erhalten.
Wie man eine Bibliothek in der Arduino IDE installiert habe ich bereits im Beitrag Arduino IDE, Einbinden einer Bibliothek ausführlich erläutert.
Die Bibliothek wird über den Bibliotheksverwalter installiert, diesen erreichst du über das Hauptmenü „Sketch“ > „Bibliothek einbinden“ > „Bibliotheken verwalten“. (Oder über die Tastenkombination Strg+Umschalt+I.)
Als Erstes wird in dem Bibliotheksverwalter nach „am2320“ (1) gesucht. Die Liste der Bibliotheken wird dann nach dem Suchbegriff gefiltert und wir wählen in dem ersten Eintrag „Adafruit AM2320 sensor library“ die Schaltfläche „Installieren“ (2). Nach der Installation kann dieser Dialog mit der Schaltfläche „Schließen“ (3) geschlossen werden.
Beispiel
Der Bibliothek liegt ein Beispiel bei, welches auf dem seriellen Monitor der Arduino IDE die Temperatur sowie die relative Luftfeuchtigkeit anzeigt.
Dieses Beispiel werde ich im nachfolgenden als Basis nutzen.
Quellcode zum Messen der Temperatur & rel. Luftfeuchtigkeit
Im Nachfolgenden möchte ich dir gerne zeigen, wie man die beiden Sensorwerte des AM2320 auf einem Display anzeigen kann.
Da der Sensor die Temperatur nur in Grad Celsius liefert, berechne ich die Temperatur in Fahrenheit sowie Kelvin mit einer einfachen Formel.
//Bibliotheken zum betreiben des Displays #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include "Adafruit_Sensor.h" #include "Adafruit_AM2320.h" #define OLED_RESET 4 //eine neue instanz für das Display erzeugen Adafruit_SSD1306 display(OLED_RESET); Adafruit_AM2320 am2320 = Adafruit_AM2320(); void setup() { //aufbauen der Kommunikation zum Display mit der I2C Adresse 0x3C display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //setzen der Textgröße auf den Wert 2 display.setTextSize(1); //setzen der Textfarbe auf Weiß display.setTextColor(WHITE); //beginn der Kommunikation mit dem Sensor am2320.begin(); } void loop() { //lesen der Temperatur in Grad Celsius float tempC = am2320.readTemperature(); //berechnen der Temperatur in Grad Fahrenheit float tempF = (tempC *1.8)+32; //berechnen der Temperatur in Grad Kelvin float tempK = tempC + 273.15; //lesen der rel. Luftfeuchtigkeit float humidity = am2320.readHumidity(); displayText("Temperatur", String(tempC,2)+"C"); delay(1200); displayText("Temperatur", String(tempF, 2)+"F"); delay(1200); displayText("Temperatur", String(tempK, 2)+"K"); delay(1200); displayText("rel. Luftf.", String(humidity,0)+"%"); delay(1200); } //Zeigt einen zweizeiligen Text auf dem Display an //der Parameter "text" wird in der ersten Zeile //der Parameter "value" in der zweiten Zeile //angezeigt. void displayText(String text, String value){ display.clearDisplay(); display.setCursor(36, 12); display.println(text); display.setCursor(36, 24); display.println(value); display.display(); }
Video
In diesem Video zeige ich dir die Ausgabe des Sketches aus dem Beispiel. Das verwendete 0,42 OLED Display habe ich bereits im Beitrag Arduino Lektion #110: 0,42 Zoll OLED Display beschrieben. (Dort findest du ggf. weitere interessante Details zu diesem wohl kleinsten OLED Display.)
Fazit
Dieser Sensor ist ein guter, adäquater Ersatz für einen DHT11 Sensor (der DHT22 ist deutlich genauer). Durch die verwendete I2C Schnittstelle kann dieser sehr einfach adressiert werden. Leider kann die Adresse nicht geändert werden, sodass man nur leider einen Sensor anschließen.
Im Schaltbild
Aufbau der Schaltung “AM2320 am Arduino UNO”
wird GND und VCC vom AM2320 an +5V des arduion angeschlossen. GND des AM2320 muss auf GND vom Arduino.
Hi Christoph,
vielen Dank für deinen Hinweis.
Ich habe den Fehler soeben behoben.
Gruß,
Stefan Draeger