Mittwoch, 27. Januar 2016

Wetterstation - Außensensor

In diesem und dem nächsten Artikel geht es darum, wie man eine kleine Wetterstation für Zuhause baut, welche einem die aktuelle Außentemperatur anzeigen kann.

Der Außensensor

In diesem Post möchte ich den Bau, und die Programmierung des Außensensors zeigen. Dieser besteht aus nur drei Teilen. Einem Temperatursensor, dafür verwende ich den DHT11 (hier auf Amazon) und einem kleinen Arduino/Mikrocontroller, hierfür bietet sich der Arduino Nano, oder ein preiswerter Klon dessen (hier auf az-delivery.com), an,  da er zwar ein vollwertiger Arduino, inklusive einfacher Programmierung über USB ist, jedoch sehr klein ist, und nur wenig Strom verbraucht.

Zusätzlich benötigt man einen 433Mhz Sender und Empfänger Set (hier bei AZDelivery). Über dieses kann der Außensensor die aktuelle Temperatur an den Empfänger, also letztendlich das LCD Display (hier bei AZDelivery), senden.

Die Verbindung der Geräte mit dem Nano ist einfach: Der DHT 11 hat drei beschriftete Pins, GND muss mit dem Ground verbunden werden, S mit einem digital Pin des Arduino, und der mittlere Pin mit den +5V des Arduino Nano. Auch die Pins des 433Mhz Senders sind beschriftet, VCC mit +5V, GND mit dem Ground, und ATAD mit einem digital Pin des Arduino.


Der Sketch

Das Auslesen des DHT11 Temperatursensors geht über die dht11 Bibliothek, durch den Befehl DHT11.temperature(). Das Übertragen der Temperatur gestaltet sich etwas komplizierter, da der Befehl zum Senden von Daten, der verwendeten Bibliothek VirtualWire, nur bestimmte Formate akzeptiert (siehe Code). 

Das Einzige, was man noch ändern muss, sind die Datenpins des DHT11 und des 433Mhz Senders. 
Der fertige Code für den Sender sieht so aus:


Weitere Ausbaumöglichkeiten

Abhängig davon, ob der Außensensor über die Steckdose, oder über eine Batterie betrieben wird, könnte man die Frequenz des Sendens der aktuellen Temperatur herunterstellen. So kann man die Temperatur etwa nur jede Minute senden, und dazwischen in den Stand-by Modus gehen. Die Verwendung des Stand-by Modus mit dem Arduino, habe ich bereits hier erklärt.

Kommentare:

  1. Zeilen 26 bis 85 koennen doch auch durch "temperature = String(temp);" erfuellt werden, oder?

    AntwortenLöschen
    Antworten
    1. Hatte ich auch probiert, funktioniert aber leider nicht.
      Fehlermeldung(wenn man switch ausklammer):

      wetterstation_sender.ino: In function 'void loop()':
      wetterstation_sender.ino:25:33: error: cannot convert 'String' to 'char*' in initialization
      Fehler beim Kompilieren.

      Löschen
  2. den ganzen switch rausschmeißen und dafür..

    sprintf(temperatur, "%d", temp);

    .. einsetzen.

    hth..

    D.

    AntwortenLöschen