Inhaltsverzeichnis:

Wetterstation mit Arduino UNO - Gunook
Wetterstation mit Arduino UNO - Gunook

Video: Wetterstation mit Arduino UNO - Gunook

Video: Wetterstation mit Arduino UNO - Gunook
Video: Amazing arduino project 2024, Juli
Anonim
Wetterstation mit Arduino UNO
Wetterstation mit Arduino UNO

Erstellt von: Hazel Yang

Dieses Projekt ist eine Wetterstation mit einem Arduino UNO-Board zur Steuerung des Datenflusses, einem DHT22-Sensor zum Sammeln der Daten und einem OLED-Bildschirm zum Anzeigen der Daten.

Schritt 1: Artikelliste

Artikelliste
Artikelliste

1. Bildschirm: OLED, 1,3 Display SH1106, I2C weiße Farbe ---- PID: 18283

2. Sensor: Digitaler Feuchtigkeits- und Temperatursensor DHT22 ---- PID: 7375

3. Anschließen: Überbrückungsdrähte ---- PID: 10316 oder 10318 oder 10312 (abhängig von der Länge) oder Sie können Massivdraht 22 AWG verwenden ---- PID: 22490

Steckbrett ---- PID: 10686 oder 10698 oder 103142 (je nach Größe)

4. Stromversorgung: Dieses Kabel kann nur mit einem Computer-USB-Anschluss verbunden werden und das Kabel wird auch für die Datenübertragung zwischen der IDE und dem Arduino-Board verwendet. USB-KABEL, A NACH B, M/M, 0.5M (1.5FT) ---- PID: 29862

Oder Sie können dies verwenden, um das Board mit Strom zu versorgen: 5V 2A AC/DC Adapter ---- PID: 10817.

Schritt 2: Relative Einführung

Relative Einführung
Relative Einführung
Relative Einführung
Relative Einführung

Einführung des Bildschirms: 1,3 OLED-Display Weiß

1. Sie finden das Dokument, das die grundlegende Einrichtung und Beschreibungen zeigt:

Einführung des Sensors: Feuchte- und Temperatursensor DHT22 1. Sie finden das Dokument mit den Beschreibungen:

Schritt 3: Schließen Sie die Schaltung an

Verbinden Sie die Schaltung
Verbinden Sie die Schaltung

Der DHT22-Sensor sendet serielle Daten an Pin 2. Verbinden Sie also den zweiten Pin von links, der "SDA" -Pin sollte mit Pin 2 verbunden werden.

Für das SSH1106-Display verwendet es den analogen Pin zum Senden. Die Schaltung des Bildschirms ist der "SCL" -Pin für Arduinos "A5" und der "SDA" -Pin für Arduinos "A4". Während die Pixelpositionsdaten kontinuierlich übertragen werden, löst die Anzeigefunktion im Programm bei jedem Auslesen der Daten vom Sensor den Befehl nur einmal aus.

Sowohl der Sensor als auch der Bildschirm können die 3,3 V verwenden, um Arduino als Gleichstromeingang einzuschalten. Zur Stromversorgung müssen wir beide "VCC" -Pins mit Arduinos "3.3V" verbinden. Und die "GND" -Pins können einfach mit dem "GND" -Pin auf dem Arduino-Board verbunden werden.

Verwenden Sie das USB-A-zu-B-Kabel und verbinden Sie den Arudino mit dem Computer.

Schritt 4: Kompilieren vorbereiten

"u8glib" für SSH1106-Bildschirm von Olikraus.

"DHT-Sensorbibliothek" für DHT22-Sensor von Adafruit. Sie sollten die beiden Bibliotheken herunterladen: DHT22-Sensorbibliothek:

U8glib:

Und verwenden Sie "Bibliothek verwalten" in der IDE, um sie zu entpacken. Online-Anleitung zur Verwaltung von Bibliotheken:

Schritt 5: Testcode für die serielle Schnittstelle des DHT22-Sensors

Testcoe für den seriellen Port des DHT22-Sensors (der sich in der DHT22-Bibliothek befindet>> Beispiele):

(Sie können diesen Teil überspringen.)

Nur zum Testen liest der DHT22-Sensor Daten normal

#enthalten

#enthalten

#enthalten

#enthalten

#enthalten

#definiere DHTPIN 2

#define DHTTYP DHT22

DHT dht(DHTPIN, DHTTYPE);

Leere Einrichtung () {

Serial.begin (9600);

Serial.println (F ("DHT22-Test!"));

dht.begin();

}

Leere Schleife () {

// Warten Sie einige Sekunden zwischen den Messungen.

Verzögerung (2000);

// Das Auslesen von Temperatur oder Luftfeuchtigkeit dauert ca. 250 Millisekunden!

// Sensormesswerte können auch bis zu 2 Sekunden "alt" sein (es ist ein sehr langsamer Sensor)

float h = dht.readHumidity();

// Temperatur als Celsius lesen (Standard)

float t = dht.readTemperature();

// Temperatur als Fahrenheit lesen (isFahrenheit = true)

float f = dht.readTemperature(true);

// Prüfen, ob Lesevorgänge fehlgeschlagen sind und vorzeitig beenden (um es erneut zu versuchen).

if (isnan(h) || isnan(t) || isnan(f)) {

Serial.println (F ("Fehler beim Lesen vom DHT-Sensor!"));

Rückkehr;

}

// Wärmeindex in Fahrenheit berechnen (Standard)

float hif = dht.computeHeatIndex(f, h);

// Wärmeindex in Celsius berechnen (isFahreheit = false)

float hic = dht.computeHeatIndex(t, h, false);

Serial.print (F ("Feuchtigkeit: "));

Seriendruck (h);

Serial.print (F ("% Temperatur: "));

Serial.print (t);

Serial.print (F ("°C"));

Seriendruck (f);

Serial.print (F ("°F Hitzeindex: "));

Serial.print (hic);

Serial.print (F ("°C"));

Serial.print (hif);

Serial.println (F("°F"));

}

// Klicken Sie nach dem Kompilieren des Programms auf TOOLS >> SERIAL MONITOR, um die Daten zu überprüfen.

// Ende des Testprogramms.

Schritt 6: Code für das Projekt

#enthalten

#enthalten

#enthalten

#enthalten

#enthalten

#definiere DHTPIN 2

#define DHTTYP DHT22

#include "U8glib.h"

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);

DHT-Sensor (DHTPIN, DHTTYPE);

Leere Unentschieden (Leere) {

u8g.setFont(u8g_font_unifont);

float h = sensor.readHumidity();

// Temperatur als Celsius lesen (Standard)

float t = sensor.readTemperature();

// Prüfen, ob Lesevorgänge fehlgeschlagen sind und vorzeitig beenden (um es erneut zu versuchen).

if (isnan(h) || isnan(t)) {

u8g.print("Fehler.");

zum(;;);

Rückkehr;

}

u8g.setPrintPos(4, 10);

u8g.print("Temperatur(C):");

u8g.setPrintPos(4, 25);

u8g.print(t);

u8g.setPrintPos(4, 40);

u8g.print("Luftfeuchtigkeit(%):");

u8g.setPrintPos(4, 55);

u8g.print (h);

}

Leere Einrichtung (void) {

u8g.setRot180();

Serial.begin (9600);

sensor.begin();

}

Leere Schleife (Leere) {

// Bildschleife

u8g.firstPage();

tun {

zeichnen();

} while(u8g.nextPage());

// das Bild nach einiger Verzögerung neu erstellen Verzögerung (2000);

}

// Ende des Hauptprogramms.

Schritt 7: Beschreibung

Beschreibung
Beschreibung

Initialisieren Sie dann die Pin-Schaltung für das Arduino-Board. Weil die Sensorbibliothek die Daten benötigt, um das Objekt zu deklarieren.

Und Sie können die Daten des Sensors testen, indem Sie die Ausgabedaten über den digitalen Pin 2 überwachen, indem Sie die Funktion "Serial.print()" verwenden. Da die Frequenz der Datenübertragung ungefähr 1 Messwert alle 2 Sekunden beträgt (das sind 0,5 Hz), müssen wir bei der Programmierung in der Arduino IDE die Verzögerung innerhalb der Schleifenfunktion auf mehr als 2 Sekunden einstellen. Es gibt also eine "delay(2000)" innerhalb der Schleifenfunktion. Dadurch wird sichergestellt, dass die Daten häufig aktualisiert werden. Holen Sie in der Funktion "draw" die Daten vom seriellen Datenport und setzen Sie sie mit den Funktionen "readHumidity" und "readTemperature" in Float-Zahlen.

Drucken Sie die Luftfeuchtigkeit und Temperatur über die Druckfunktion in der Datei "u8glib" aus. Sie können die Position anpassen, indem Sie die Zahl in der Funktion "setPrintPos" ändern. Die Druckfunktion kann den Text und die Zahlen direkt anzeigen.

Geben Sie dem seriellen Port eine Verzögerung von 10 Sekunden, um die Hardware einzurichten. Rufen Sie dann die begin-Funktion für den Sensor auf. Laut meiner Schaltung stand mein Bildschirm auf dem Kopf. Also habe ich auch eine "setRot180"-Funktion eingebaut, um das Display zu drehen.

Die Loop-Funktion des Arduino-Boards ist die Hauptfunktion. Es ruft die Zeichenfunktion ständig auf, um den Text und die Daten jedes Mal anzuzeigen, wenn der Sensor aktualisiert wird.

Der Bildschirm sieht so aus:

Sie können das Arduino UNO von Ihrem Computer trennen und mit einem 5 V DC-Netzteil mit Strom versorgen, das an seine 2,1-mm-Strombuchse angeschlossen ist. Es speichert das Programm in seinem Laufwerk und kann das Programm nach dem Einschalten kontinuierlich erneut ausführen.

Empfohlen: