| LLL - Wetterstation mit BME280LLL-Wetterstation ist eine Schaltung mit dem Sensor BME280. Die drei L-Buchstaben stehen für Lufttemperatur, Luftdruck und Luftfeuchtigkeit, die
Messgrößen, die der Sensor liefern kann. Die eigentlichen Komponenten der Schaltung sind neben dem Sensor BME280 der Mikrocontroller Arduino Mega und ein 320x240
LCD-Display. Drei weitere Teilnehmer der Schaltung haben mit der eigentlichen Aufgabe der Schaltung wenig zu tun. Zwei lineare Spannungsregler und ein Levelkonverter
haben die Aufgabe, die unterschiedliche Spannungen „kompatibel“ zueinander zu machen. Man könnte sie als Schnittstelle zwischen dem Sensor und Mikrocontroller bezeichnen. Für die
Verdrahtung auf einem Steckbrett werden um die zehn Verbindungen benötigt. Die Versorgungsspannung beträgt 9VDC. Die Spannungsregler stellen 3,3 V für den Sensor und 5 V
für den Levelkonverter bereit. Auf dem Display werden in einem Takt von 5 Sekunden die gemessen Werte angezeigt. BME280Der Umgebungssensor BME280 besteht aus drei verschiedenen Sensortypen, die in einem Gehäuse untergebracht sind. Man kann den Sensor von dem Sensor
BMP280 dadurch unterscheiden, dass er ein quadratisches Gehäuse mit einem kleinen Loch hat. Sensor BMP280 kann lediglich Temperatur und Luftdruck messen. Mit dem BME280
können Temperatur, Luftdruck und die aktuelle Luftfeuchtigkeit gemessen werden.
Technische Daten:
|
Mit einem Pegelwandler werden Signale von einem Spannungspegel auf ein anderes gebracht. Auf diese Weise werden Signale von zwei miteinander kommunizierten Quellen angepasst. In unserem Fall werden die 5V Signale von Arduino auf 3,3V gebracht und zu dem Sensor weitergeleitet. Umgekehrt werden die 3,3V Signale von dem Sensor auf den 5V Pegel des Arduino umgewandelt. Der Pegelwandler wird auf der HV-Seite (Hohe Spannung) mit den von dem Spannungsregler L78L05 stammenden 5V eingespeist. Seine LV-Seite (Niedrige Spannung) wird von dem Regler HT73333, der 3,3 V liefert, mit Spannung versorgt.
#include "Wire.h" // BME280 notwendige Bibliotheken einbinden #include "Adafruit_Sensor.h" #include "Adafruit_BME280.h" uint8_t BME280_Adresse = 0x76; // Sensor I2C-Bus Adresse Adafruit_BME280 my_bme; #define SDA 20 // Sensoranschluß: I2C - Daten #define SCL 21 // Sensoranschluß: I2C - Clock #include "MCUFRIEND_kbv.h" // Bibliothek Display MCUFRIEND_kbv tft; #define BLACK 0x0000 // Display-Farben zur Auswahl #define BLUE 0x002F #define RED 0xF800 #define GREEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define GRAY 0x8410 String Ausgabe_Zeile [3][2]; // Variable für Ergebnisse // [x][0] - alte Werte // [x][1] - neue Werte // ********************************************************************************************** void Ausgabe() { // Unterprogramm Display Ausgabe for (int i=0; i<3; i++) { // Alle drei Werte durchlaufen tft.setTextColor(BLUE); // Textfarbe (blau) zum Löschen int PosX = 150; // Text X-Position int PosY = 87 + (i * 50); // Text Y-Position tft.setCursor(PosX, PosY); // Cursoposition setzen tft.print(Ausgabe_Zeile [i][0]); // Alter Text wird überschrieben (Löschen) tft.setTextColor(WHITE); // Neue Textfarbe if (Ausgabe_Zeile [0][1] == "Stoerung") { tft.setTextColor(RED); // Textfarbe bei Störung } tft.setCursor(PosX, PosY); // Cursoposition tft.print(Ausgabe_Zeile [i][1]); // Neue Inhalte schreiben Ausgabe_Zeile [i][0] = Ausgabe_Zeile [i][1]; // Neue Inhalte speichern } } // ********************************************************************************************** void setup() { tft.begin(0x9341); tft.setRotation(1); // Text Ausrichtung tft.fillScreen(BLUE); // Display Hintergrundfarbe tft.drawRect(3, 3, 314, 234, YELLOW); // Rahmen tft.setTextSize(1); // Schriftgrösse tft.setTextColor(CYAN); // Textfarbe tft.setCursor(15, 13); // Cursoposition tft.print("LLL"); // Text tft.setTextSize(3); // Schriftgrösse tft.setTextColor(GREEN); // Textfarbe tft.setCursor(39, 25); // Cursoposition tft.print("Wetterstation"); // text tft.setTextSize(2); // Schriftgrösse tft.setTextColor(MAGENTA); // Textfarbe tft.setCursor(10, 65); // Cursoposition tft.print("Lufttemperatur *C"); // Text tft.setCursor(10, 115); // Cursoposition tft.print("Luftfeuchtigkeit %"); // Text tft.setCursor(10, 165); // Cursoposition tft.print("Luftdruck hPa"); // Text tft.setTextSize(3); // Schriftgrösse } // ********************************************************************************************** void loop() { for (int i=0; i<3; i++) { // Ausgabetexte mit "Stoerung" vorbelegen Ausgabe_Zeile [i][1] = "Stoerung"; } bool check = my_bme.begin(BME280_Adresse); // Sensor - Prüfung if (check) { // Wenn OK, Werte ermitteln Ausgabe_Zeile [0][1] = my_bme.readTemperature(); // Temperaturmessung Ausgabe_Zeile [1][1] = my_bme.readHumidity(); // Feuchtigkeit Ausgabe_Zeile [2][1] = my_bme.readPressure() / 100; // Luftdruck } Ausgabe(); // Unterprogramm aufrufen delay(5000); // Wartezeit } // **********************************************************************************************
Google-Suche auf MEINE-SCHALTUNG.de : |