Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Kompakte Wetterstation mit Arduino Nano – DIY-Anleitung für Temperatur, Luftfeuchte & Druck

Komponenten und Materialien

Komponente Anzahl
Arduino Nano R3 1
DHT11 Modul (Temperatur & Luftfeuchte) 1
BMP280 Drucksensor (Temperatur & Luftdruck) 1
1,44″ ST7735 TFT LCD Display (128×128) 1
3D-gedrucktes Gehäuse (STL-Datei) 1
USB-A auf Mini-USB-B Kabel 1

Benötigte Werkzeuge

Software & Design

Projektbeschreibung

Diese handliche Wetterstation erfasst drei fundamentale Wetterparameter in Echtzeit: Temperatur, relative Luftfeuchte und atmosphärischer Druck. Die Daten werden auf einem 1,44″ TFT-Farbdisplay angezeigt. Das Gerät ist batteriebetrieben (via USB-Powerbank) und passt in die Hosentasche.

Sensorwahl: Warum BMP280 + DHT11 statt BME280?

Warum Arduino Nano statt UNO?

Gleicher Mikrocontroller (ATmega328P), aber kleinerer Formfaktor und günstiger – ideal für kompakte Gehäuse.

Schaltung & Programmierung

Pin-Belegung

KomponentePinArduino Pin
DHT11 Data–D2
BMP280 (I2C)SDAA4
BMP280 (I2C)SCLA5
ST7735 TFTCSD10
ST7735 TFTDCD9
ST7735 TFTRSTD8
ST7735 TFTMOSI (SDA)D11 (Hardware SPI)
ST7735 TFTSCKD13 (Hardware SPI)
Stromversorgung5V / GNDICSP-Header + Onboard-Pins

Hinweis: Die 5 V und GND des ICSP-Headers werden zusätzlich genutzt, um Kabelgewirr zu vermeiden.

Software-Architektur

  1. Bibliotheken: SPI.h, Wire.h, Adafruit_GFX.h, Adafruit_ST7735.h, Adafruit_BMP280.h, DHT.h
  2. Initialisierung: Sensoren starten, Display initialisieren (schwarzer Hintergrund, Trennlinien, Überschriften, Farben festlegen)
  3. Hauptschleife: Alle 1 s Sensoren auslesen, Werte formatiert an festen Positionen auf dem Display ausgeben

Gehäuse & Bauweise

  • Modularer Aufbau mit Steckverbindungen (kein Löten an Sensoren) für einfache Fehlersuche
  • 3D-gedrucktes Gehäuse (STL im Projekt enthalten) mit Belüftungsschlitzen für Sensorzugang & Wärmeabfuhr
  • Stromversorgung über USB-Mini (Programmier- & Betriebsanschluss identisch)
  • Getestet über Stunden an PC-USB & 5 V Handyladegerät – Werte stimmen mit Online-Wetterdaten überein

Vollständiger Programmcode

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <Adafruit_BMP280.h>
#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT11

#define TFT_RST 8
#define TFT_CS 10
#define TFT_DC 9

#define BMP280_I2C_ADDRESS 0x76 // Oder 0x77 – mit Scanner prüfen!

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
Adafruit_BMP280 bmp280;
DHT dht(DHTPIN, DHTTYPE);

void setup(void) {
  dht.begin();
  tft.initR(INITR_144GREENTAB); // 1,44" Green Tab Display
  tft.fillScreen(ST77XX_BLACK);
  tft.drawFastHLine(0, 15, tft.width(), ST77XX_CYAN);
  tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK);
  tft.setTextSize(1);
  tft.setCursor(25, 5);
  tft.print("WEATHER BUDDY");

  if (!bmp280.begin(BMP280_I2C_ADDRESS)) {
    tft.setTextColor(ST77XX_RED, ST77XX_CYAN);
    tft.setTextSize(2);
    tft.setCursor(5, 76);
    tft.print("Connection");
    tft.setCursor(35, 100);
    tft.print("Error");
    while (1); // Halt
  }

  // Layout: Drei Bereiche mit Trennlinien
  tft.drawFastHLine(0, 55, tft.width(), ST77XX_CYAN);
  tft.drawFastHLine(0, 95, tft.width(), ST77XX_CYAN);

  // Überschriften
  tft.setTextColor(ST77XX_RED, ST77XX_BLACK);
  tft.setCursor(30, 20);
  tft.print("TEMPERATURE");

  tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK);
  tft.setCursor(40, 60);
  tft.print("HUMIDITY");

  tft.setTextColor(ST77XX_GREEN, ST77XX_BLACK);
  tft.setCursor(40, 100);
  tft.print("PRESSURE");

  tft.setTextSize(2); // Große Werte
}

void loop() {
  char buf[8];

  // Sensoren lesen
  float temp = bmp280.readTemperature();      // °C
  float hum = dht.readHumidity();             // %
  float pres = bmp280.readPressure();         // Pa

  // 1. Temperatur (°C) – Gelb
  if (temp < 0)
    sprintf(buf, "-%02u.%02u", (int)abs(temp), (int)(abs(temp) * 100) % 100);
  else
    sprintf(buf, " %02u.%02u", (int)temp, (int)(temp * 100) % 100);

  tft.setTextColor(ST77XX_YELLOW, ST77XX_BLACK);
  tft.setCursor(11, 34);
  tft.print(buf);
  tft.drawCircle(89, 34, 2, ST77XX_YELLOW); // Grad-Symbol
  tft.setCursor(95, 34);
  tft.print("C");

  // 2. Luftfeuchte (%) – Magenta
  sprintf(buf, "%02u ", (int)hum);
  tft.setTextColor(ST77XX_MAGENTA, ST77XX_BLACK);
  tft.setCursor(45, 74);
  tft.print(buf);
  tft.setCursor(75, 74);
  tft.print("%");

  // 3. Druck (hPa) – Orange
  // pres in Pa → /100 = hPa
  sprintf(buf, "%04u.%02u", (int)(pres / 100), (int)((uint32_t)pres % 100));
  tft.setTextColor(ST77XX_ORANGE, ST77XX_BLACK);
  tft.setCursor(3, 112);
  tft.print(buf);
  tft.setCursor(91, 112);
  tft.print("hPa");

  delay(1000);
}

Benötigte Bibliotheken (Arduino Library Manager)

  • Adafruit ST7735 and ST7789 Library
  • Adafruit GFX Library
  • Adafruit BMP280 Library
  • DHT sensor library (von Adafruit)

3D-Druck Gehäuse

Die STL-Datei für das maßgeschneiderte Gehäuse ist im Projekt enthalten. Drucken Sie es mit PLA oder PETG, 0,2 mm Schichthöhe, 20 % Infill. Belüftungsschlitze sorgen für Luftzirkulation an den Sensoren.

Fazit

Eine preiswerte (< ~25 €), kompakte und präzise Wetterstation, die Spaß macht und nützlich ist. Ideal für Einsteiger in Sensorik, Displays und 3D-Druck.

Bezugsquellen

Elektronische Bauteile z. B. bei UTSOURCE bestellen.

Herstellungsprozess

  1. Outdoor-Wetterstation mit Raspberry Pi 2 & ADS-WS1 bauen
  2. Raspberry Pi Wetterstation bauen, die tägliche Wetterdaten per E-Mail sendet
  3. Remote-Wetterüberwachung mit Raspberry Pi 3 & PubNub
  4. Fortgeschrittene Wetterstation v2.0: Echtzeit Temperatur, Druck, Feuchte & Höhe Monitoring
  5. DIY Photoshop-Steuerkonsole mit Arduino Nano RP2040 bauen
  6. Präzise 7-Segment-Uhr mit Arduino Pro Mini & DS1302 RTC – Selbstbau
  7. Tragbare Arduino-Wetterstation für 10$ bauen (Nano, DHT22, BMP180 & LCD)
  8. eDOT: Präzise Arduino-Uhr & Wetterstation mit IR-Fernbedienung
  9. Kompaktes FM-Radio mit Arduino Nano und RDA5807M selbst bauen
  10. Wetterstation mit Arduino & ThingSpeak IoT (DHT11 + ESP8266)