0% fanden dieses Dokument nützlich (0 Abstimmungen)
62 Ansichten3 Seiten

Arduino

Das Dokument beschreibt den Aufbau eines Wetterstationsprojekts mit einem BME280-Sensor. Es werden Werte wie Temperatur, Luftfeuchtigkeit und Luftdruck gemessen und über ein Wifi-Modul auf einem OLED-Display und einem Webserver angezeigt.

Hochgeladen von

lsinger794
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als TXT, PDF, TXT herunterladen oder online auf Scribd lesen
0% fanden dieses Dokument nützlich (0 Abstimmungen)
62 Ansichten3 Seiten

Arduino

Das Dokument beschreibt den Aufbau eines Wetterstationsprojekts mit einem BME280-Sensor. Es werden Werte wie Temperatur, Luftfeuchtigkeit und Luftdruck gemessen und über ein Wifi-Modul auf einem OLED-Display und einem Webserver angezeigt.

Hochgeladen von

lsinger794
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als TXT, PDF, TXT herunterladen oder online auf Scribd lesen

#include <Adafruit_BME280.

h>
#include <WebServer.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET -1
#define BMP_SDA 22 // Pin für SDA (Datenleitung)
#define BMP_SCL 21 // Pin für SCL (Taktleitung)
#define RAIN_SENSOR_PIN 13 // Pin für den Tropfensensor

//Defaultwert für OLED Display setzen


Adafruit_SSD1306 display(OLED_RESET);

//Werte für Connection mit Hotspot


const char* ssid = "hotspot";
const char* password = "passwort";
WebServer server(80);

// Initialisiere den BME280-Sensor


Adafruit_BME280 bme;

//Werte die ausgegeben werden


float temperature, humidity, pressure;

//wenn "/" in URL vorkommt wird diese Funktion aufgerufen - Daten werden an Server
gesendet und ausgegeben
void handleRoot() {
String message = "Temperature: " + String(temperature) + " C\n";
message += "Humidity: " + String(humidity) + " %\n";
message += "Pressure: " + String(pressure) + " hPa\n";

[Link](200, "text/plain", message);


}

//Funktion die den Fehlerfall - [Link](handleNotFound); - aus dem Setup


behandelt
//wenn die Verbindung zum Server nicht funktionieren sollte
void handleNotFound() {
String message = "File Not Found\n\n";
message += "URI: ";
message += [Link]();
message += "\nMethod: ";
message += ([Link]() == HTTP_GET) ? "GET" : "POST";
message += "\nArguments: ";
message += [Link]();
message += "\n";
for (uint8_t i = 0; i < [Link](); i++) {
message += " " + [Link](i) + ": " + [Link](i) + "\n";
}
[Link](404, "text/plain", message);
}

void setup() {
//Display
[Link](SSD1306_SWITCHCAPVCC, 0x3C); //Adressierung beachten, hier 0x3C!
[Link](115200);

//Wifi verbindung erstellen mit oben deklarierten Werten für ssid und passwort
[Link](WIFI_STA);
[Link](ssid, password);
[Link]("");

//Webserver
//Auf Verbindung mit Webserver warten
while ([Link]() != WL_CONNECTED) {
delay(500);
[Link](".");
}

//Ausgabe auf Serial Monitor - Infos um Handy mit Server verbinden zu können
[Link]("");
[Link]("Connected to ");
[Link](ssid);
[Link]("IP address: ");
[Link]([Link]());

//beim Symbol "/" in der URL wird handleRoot aufgerufen


[Link]("/", handleRoot);
[Link]("/inline", []() {
[Link](200, "text/plain", "this works as well");
});

//falls Serververbindung nicht funktionieren sollte -> handleNotFound funktion


wird aufgerufen
[Link](handleNotFound);

[Link](BMP_SDA, BMP_SCL); // Initialisiere die I2C-Verbindung mit den


angegebenen Pins

[Link]();
[Link]("HTTP server started");
unsigned status;
status = [Link](0x76);

// status = [Link](0x76, &Wire2)


//falls [Link] nichts liefert wird der Fehlerfall auf dem Serial Monitor
erklärt
if (!status) {
[Link]("Could not find a valid BME280 sensor, check wiring,
address, sensor ID!");
[Link]("SensorID was: 0x"); [Link]([Link](),16);
[Link](" ID of 0xFF probably means a bad address, a BMP 180
or BMP 085\n");
[Link](" ID of 0x56-0x58 represents a BMP 280,\n");
[Link](" ID of 0x60 represents a BME 280.\n");
[Link](" ID of 0x61 represents a BME 680.\n");
while (1) delay(10);
}
}

void loop() {
//Display wird gecleart und dann werden die Values in die jeweiligen Zeilen
(SetCursor) geschrieben
[Link]();
[Link](WHITE);
[Link](1);
[Link](23, 0);
[Link]("Temp: " + String(temperature) + " C");
[Link](23, 12);
[Link]("Humi: " + String(humidity) + " %");
[Link](23, 24);
[Link]("Pres: " + String(pressure) + " hPa");
[Link]();

//server wartet auf Client anfrage und beginnt dann die Website aufzubauen
[Link]();
delay(2); // Notwendig für die CPU

//jeweilige Werte vom bme Sensor einlesen


temperature = [Link]();
humidity = [Link]();
pressure = [Link]() / 100.0F; // Druck in hPa
}

Das könnte Ihnen auch gefallen