Eine Wetterstation ist mit einem Arduino schnell aufgebaut nur der Empfänger ist das “komplizierte” aber auch hierfür gibt es eine praktikable Lösung.
Benötigte Sensoren:
Zu den oben genannten Sensoren habe ich bereits ein ausführliches Tutorial erstellt, daher möchte ich nur auf die Kommunikation über Bluetooth eingehen.
Für die Bluetoothkommunikation benutze ich das Modul HC06 welches ich in dem Tutorial Arduino Lektion 21: Bluetooth Modul HC-06 beschrieben habe.
Zusätzlich wird ein Android Bluetooth Terminal App für das Abfragen der Werte benötigt.
Aufbau der Schaltung
Schaltplan
PIN Belegung | |
---|---|
Modul / Sensor | Arduino UNO |
Bluetooth Modul HC-06 | |
VCC | 5V |
GND | GND |
TX | 11 |
RX | 10 |
DHT11 | |
+ | 5V |
out | PWM PIN 13 |
– | GND |
BMP180 | |
VCC | 3.3V |
GND | GND |
SDA | A4 |
SCL | A5 |
Fliegender Aufbau auf einem Breadboard
Der Aufbau der Wetterstation ist auf einem Breadboard schnell erledigt, da hier nicht gelötet oder geschraubt werden muss, sondern “nur” die Kabel wie in den Tutorials benannt angeschlossen werden müssen.
Wenn der Aufbau erledigt ist muss noch das Sketch geschrieben werden.
Der Arduino Sketch
Der Sketch ist ein Mix aus allen vier Tutorials.
#include <dht.h> // Bibliothek für den DHT11 Sensor #include <Wire.h> // Bibliothekt für den BMP180 Sensor #include <BMP180.h> // Bibliothekt für den BMP180 Sensor #include <SoftwareSerial.h> // Bibliothekt für das Bluetooth Modul HC-06 SoftwareSerial BT(10, 11); //Initialisieren des Bluetooth Moduls dht DHT; //Initialisieren des DHT11 Sensors BMP180 barometer; //Die Instanzvariable eines BMP180 Sensors. int sensorPin = 13; //PWM PIN des DHT11 Sensors void setup(){ BT.begin(9600); // Setzen der Baudrate für die Koomunikation über Bluetooth BT.println("Hello from Arduino"); // Setzen der Willkommensnachricht wenn sich ein Client verbindet. Wire.begin(); // Adafruit Wire Bibliothek für die I2C Kommunikation mit dem BMP180 Sensor. barometer = BMP180(); // setzen einer Instanz des BMP180 Sensors. } char a; // Variable zum speichern des gelesenen Wertes. void loop(){ int chk = DHT.read11(sensorPin); //Status holen if (BT.available()){ // Wenn Bluetooth verfügbar ist dann... Serial.println("BT.available()"); a=(BT.read()); // lesen vom Seriellen Port des Bluetooth Moduls Serial.println(a); if (a=='t'){ // 't' für Temperatur BT.println(getTemperatur()); } else if (a=='h'){ // 'h' für Luftfeuchtigkeit BT.println(getLuftfeuchtigkeit()); } else if (a=='p'){ // 'p' für Luftdruck BT.println(getLuftdruck()); } else { // Wenn nicht 't', 'h', oder 'p' empfangen wurde, soll folgende Beschreibung des Dienstes ausgegeben werden. BT.println("Bluetooth - Wetterstation"); BT.println("*************************"); BT.println("[t] Temperatur"); BT.println("[h] Luftfeuchtigkeit"); BT.println("[p] Luftdruck"); } } } //Liefert den Wert für die Temperatur aus dem DHT11 Sensor String getTemperatur(){ return "Temperatur - "+ String(DHT.temperature,1) + "C"; } //Liefert den Wert für die Luftfeuchtigkeit aus dem DHT11 Sensor String getLuftfeuchtigkeit(){ return "Luftfeuchtigkeit - "+ String(DHT.humidity,1) +"%"; } //Liefert den Wert für den Luftdruck aus dem BMP180 Sensor String getLuftdruck(){ long currentPressure = barometer.GetPressure(); String pressure = "Luftdruck - "+ String(currentPressure / 100) + " hPa"; return pressure; }
Ausgabe des Sketches in einer Bluetoothterminal Android App
Folgende Ausgabe erfolgt, wenn man sich mit der Schaltung verbunden hat und die Werte
- t – für Temperatur
- h – für Luftfeuchtigkeit
- p – für Luftdruck
eingibt.
Leider funktioniert es nicht. Bekomme die Fehlermeldung: “‘BMP180’ does not name a type”
Ich bekomme es seit Tagen nicht gefixt. Bitte um Hilfe