Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Kompakte Sensor-Platine mit AHT20 und BMP280: Vielseitig und platzsparend

Posted on 2. Dezember 20241. Dezember 2024 by Stefan Draeger

Komplexe Messaufgaben erfordern oft mehrere Sensoren – doch das geht auch einfacher. Diese kleine Platine vereint den AHT20 und den BMP280 Sensor und bietet dir die Möglichkeit, Temperatur, Luftfeuchtigkeit und Druck effizient auf kleinstem Raum zu erfassen. Dank der kompakten Bauweise, die kaum größer als ein 10-Cent-Stück ist, eignet sich die Platine ideal für Anwendungen mit begrenztem Platzangebot, wie IoT-Geräte, Wetterstationen oder tragbare Elektronik.

Kompakte Sensor-Platine mit AHT20 und BMP280: Vielseitig und platzsparend
Dieses Video auf YouTube ansehen.

Die Kommunikation über den I²C-Bus macht die Integration in bestehende Projekte kinderleicht und minimiert den Verkabelungsaufwand. Trotz der geringen Größe überzeugen die Sensoren mit einer hohen Messgenauigkeit und Zuverlässigkeit, wodurch diese Lösung nicht nur platzsparend, sondern auch leistungsstark ist.

Den BMP280 und weitere Luftdrucksensoren habe ich dir im Beitrag Genauigkeitstest bei der PTB: Luftdrucksensoren BMP180, BMP280 und BME680 einem Test unterzogen und dir einen ausführlichen Bericht veröffentlicht.

Inhaltsverzeichnis

  • Technische Daten der Sensoren AHT20 & BMP280
  • Bezug der Sensor-Platine mit AHT20 und BMP280
  • Aufbau der Sensor-Platine
  • Aufbau der Schaltung am Arduino UNO R3
  • Programmieren der Sensor-Platine in der Arduino IDE
  • Anzeigen der Sensorwerte auf einem OLED-Display

Technische Daten der Sensoren AHT20 & BMP280

Nachfolgend die technischen Daten der beiden Sensoren:

Technische DatenAHT20BMP280
Versorgungsspannung2.0 – 5.5V DC1.71 – 3.6V
SchnittstelleI²CI²C
MessbereichTemperatur: -40 bis +85 °C
Feuchtigkeit: 0 – 100 %
Temperatur: -40 bis +85 °C
Luftdruck: 300 – 1100 hPa
GenauigkeitTemperatur: ±0.3 °C
Feuchtigkeit: ±2 %
Temperatur: ±1 °C (typ. bei 950-1050 hPa)
Luftdruck: ±0.12 hPa (±1 m)

Aus der Tabelle können wir zusätzlich entnehmen, dass der AHT20 sowie auch der BMP280 die Temperatur messen, dieses können wir uns gleichzeitig zu eigen machen und prüfen, inwieweit die Sensorwerte auseinander gehen.

Bezug der Sensor-Platine mit AHT20 und BMP280

Ich habe mir diese kleine Platine (wie so oft) bei Aliexpress.com für ein paar Euro bestellt. Du bekommst diese aber auch über ebay.de für knapp 4,90 € inkl. 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!

Aufbau der Sensor-Platine

Die kleine 15 mm x 15 mm Platine verfügt über vier Pins (SCL, GND, SDA & VDD) und noch zwei 3 mm Bohrungen an den Seiten.

Aufbau der Schaltung am Arduino UNO R3

Schließen wir die Sensor-Platine via I2C an den Arduino UNO an, um diese später auszulesen. Da der BMP280 Sensor mit maximal 3.6V arbeitet, dürfen wir hier nur den 3.3V Pin als Stromversorgung verwenden.

Für den Aufbau der Schaltung benötigst du:

  • einen Arduino UNO R3* oder Arduino Nano V3*
  • ein passendes Datenkabel*
  • eine Sensor-Platine mit AHT20 & BMP280 Sensor*
  • vier Breadboardkabel*, 10 cm, männlich – männlich
  • ein 170 oder 400 Pin Breadboard*

Programmieren der Sensor-Platine in der Arduino IDE

Bevor wir mit der Programmierung beginnen, installieren wir die Bibliotheken für die beiden Sensoren AHT20 & BMP280. Dazu öffnen wir den Bibliotheksverwalter (1) und suchen zunächst nach „aht20“ (2) es wird dir nun eine lange Liste von kompatiblen Bibliotheken aufgelistet. Aus dieser Liste wähle ich „Adafruit AHTX0 von Adafruit“ und klicke dort INSTALLIEREN (3). Diese Bibliothek hat jedoch einige Abhängigkeiten, welche zusätzlich installiert werden müssen. Daher klicken wir im neuen Dialog auf „ALLE INSTALLIEREN“ (4).

Um die Bibliothek für den BMP280 Sensor zu installieren, suchen wir zunächst nach dieser (5) und wählen auch hier die Version von Adafruit aus (6).

Im ersten Schritt möchte ich die Daten der beiden Sensoren auf der seriellen Schnittstelle ausgeben. Dazu kopiere ich mir zunächst die benötigten Code-Snippets aus den Beispielen, welche den beiden Bibliotheken beiliegen.

Programm: Ausgabe der Sensordaten in tabellarischer Form auf der seriellen SchnittstelleHerunterladen
Programm: exportieren der Sensordaten im CSV-FormatHerunterladen
Wert 				|BMP280			|AHT20
------------------------------------------------------------------------------
Temperatur			|20.59 °C		|20.80 °C
Luftdruck			|101491.25 Pa		|
Luftfeuchtigkeit		|			|50.96% rH
------------------------------------------------------------------------------
Temperatur			|20.59 °C		|20.79 °C
Luftdruck			|101489.41 Pa		|
Luftfeuchtigkeit		|			|51.44% rH

Nachfolgend der Code zur tabellarischen Darstellung der Daten:

// Importieren der benötigten Bibliotheken
#include <Wire.h>
// für den BMP280 Sensor
#include <Adafruit_BMP280.h>
// für den AHT20 Sensor
#include <Adafruit_AHTX0.h>

//Objekt instanziieren vom Typ Adafruit_BMP280
Adafruit_BMP280 bmp;

//Objekt instanziieren vom Typ Adafruit_AHTX0
Adafruit_AHTX0 aht;

void setup() {
  //beginn der seriellen Kommunikation mit 9600 baud
  Serial.begin(9600);
  
  //beginn der Kommunikation mit dem BMP280 Sensor
  bmp.begin();
  //Konfigurieren des BMP280 Sensors
  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,
                  Adafruit_BMP280::SAMPLING_X2,
                  Adafruit_BMP280::SAMPLING_X16,
                  Adafruit_BMP280::FILTER_X16,
                  Adafruit_BMP280::STANDBY_MS_500);
  
  //beginn der Kommunikation mit dem AHT20 Sensor
  aht.begin();
  
  //Ausgeben einer Tabelle
  Serial.println("Wert \t\t\t\t|BMP280\t\t\t|AHT20");
  Serial.println("------------------------------------------------------------------------------");
}

void loop() {
  //lesen der Daten vom AHT20 Sensor
  sensors_event_t humidity, temp;
  aht.getEvent(&humidity, &temp);

  Serial.print("Temperatur\t\t\t|");
  Serial.print(String(bmp.readTemperature(), 2) + " °C");
  Serial.print("\t\t|");
  Serial.println(String(temp.temperature, 2) + " °C");

  Serial.print("Luftdruck\t\t\t|");
  Serial.print(String(bmp.readPressure(), 2) + " Pa");
  Serial.println("\t\t|");

  Serial.print("Luftfeuchtigkeit\t\t|");
  Serial.print("\t\t\t|");
  Serial.println(String(humidity.relative_humidity,2)+"% rH");

  delay(5000);
  Serial.println("------------------------------------------------------------------------------");
}

Anzeigen der Sensorwerte auf einem OLED-Display

Die beiden Sensoren (AHT20 & BMP280) liefern jeweils die Temperatur, da ich diesen Wert lediglich einmal benötige, nutze ich diesen vom BMP280. Ansonsten zeige ich auf dem Display noch zusätzlich den Luftdruck in hPa (Hektopascal) sowie die Luftfeuchtigkeit in % an.

Für die Schaltung verwende ich ein 0,96″ OLED-Display, welches du auf ebay.de bereits ab 2,95 € zzgl. Versandkosten beziehen kannst.

Programm: anzeigen der Sensordaten auf einem OLED-DisplayHerunterladen
// Importieren der benötigten Bibliotheken
#include <Wire.h>
// für den BMP280 Sensor
#include <Adafruit_BMP280.h>
// für den AHT20 Sensor
#include <Adafruit_AHTX0.h>

// für das OLED-Display
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// das Display wird via 0x3C am I2C Port angesteuert
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(128, 32, &Wire, -1);

//Objekt instanziieren vom Typ Adafruit_BMP280
Adafruit_BMP280 bmp;

//Objekt instanziieren vom Typ Adafruit_AHTX0
Adafruit_AHTX0 aht;

void setup() {
  //beginn der seriellen Kommunikation mit 9600 baud
  Serial.begin(9600);
  
  // beginn der Kommunikation mit dem Display
  display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);
  // setzen der Textgröße
  display.setTextSize(1);
  // setzen der Schriftfare "weiß"
  display.setTextColor(SSD1306_WHITE);

  //beginn der Kommunikation mit dem BMP280 Sensor
  bmp.begin();
  //Konfigurieren des BMP280 Sensors
  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,
                  Adafruit_BMP280::SAMPLING_X2,
                  Adafruit_BMP280::SAMPLING_X16,
                  Adafruit_BMP280::FILTER_X16,
                  Adafruit_BMP280::STANDBY_MS_500);

  //beginn der Kommunikation mit dem AHT20 Sensor
  aht.begin();
}

// Funktion zum schreiben einer Textzeile auf dem Display
// lineIndex - der Index der Zeile
// desc - Beschreibung zbsp. "Temperature"
// value - der Wert zbsp. "18.56"
// sign - die Einheit zbsp. "C"
void drawText(int lineIndex, String desc, float value, String sign) {
  display.setCursor(3, lineIndex * 10);
  display.println(desc + String(value, 2) + sign);
}

void loop() {
  //lesen der Daten vom AHT20 Sensor
  sensors_event_t humidity, temp;
  aht.getEvent(&humidity, &temp);
  
  // leeren des Displays
  display.clearDisplay();
  // anzeigen der Temperatur
  drawText(0, "Temperature:", bmp.readTemperature(), " C");
  // anzeigen des Luftdrucks
  drawText(1, "Pressure:", bmp.readPressure()/100, " hPa");
  // anzeigen der Luftfeuchtigkeit
  drawText(2, "Humidity:", humidity.relative_humidity, " % rH");
  // absenden der Daten an das Display
  display.display();
  
  // eine kleine Pause von 5 Sekunden
  delay(5000);
}

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}