Arduino-Wetterstation mit Bluetooth, Datalogging und Android-App

WetterstationDie Wetterdaten für die Wetterstation werden von einem Board gesammelt, das ich für einen Schülerwettbewerb (ILC) bekommen und zusammengesetzt habe. Auf dem Board rechnet ein ATxmega128A3U. Temperatur, Luftfeuchte, Luftdruck, Helligkeit, Regenmenge und Windgeschwindigkeit werden bestimmt. Die letzen beiden Werte werden durch mechanische Aufbauten ermittelt, an denen ein Magnet einen Hallsensor passiert.

Auf dem Breadboard befindet sich ein ATmega328p, auf dem Arduino-Code läuft. Das ILC-Board sammelt und sendet die sechs Wetterdaten auf Anfrage an den Arduino. Aus Zeitgründen habe ich dafür ein eigenes Protokoll implementiert, diese Aufgabe könnte eleganter und besser mit I²C o.ä. umgesetzt werden.

ScreenshotDer Arduino ermittelt über eine angeschlossene DCF77-Antenne die aktuelle Uhrzeit, wie in einer Funkuhr. Mithilfe eines SD-Moduls wird auf einer SD-Karte eine Textdatei angelegt, in der die Wetterdaten gespeichert werden. Die Daten werden alle vier Sekunden aufgenommen und gespeichert, mit einer Zeile pro Datensatz. Dabei verwende ich das CSV-Format, sodass die Daten später einfach ausgewertet werden.

An die serielle Schnittstelle des Arduinos ist ein Bluetooth-Modul angeschlossen. Eine selbst entwickelte Android-App empfängt die Wetterdaten und zeigt sie an. Dazu werden die Daten in Textform über die serielle Verbindung gesendet, im Format Name-Doppelpunkt-Wert, also z.B. “Temperatur:25.41”. Neben den Wetterdaten werden in der App auch die Uhrzeit des DCF-Moduls und Informationen zur Stromversorgung angezeigt.

Wetterstation mit BeschriftungenAls Stromversorgung dient entweder ein Akku von einem Modellauto (7,2V, 3Ah), der auf dem Board auf 5V reguliert wird, oder ein Handyladegerät, das über den Micro-USB-Port an das ILC-Board angeschlossen wird. Die Widerstände auf dem Breadboard dienen dazu, zwischen dem Arduino mit 5V und dem ILC-Board (bzw. dem DCF77-Modul) mit 3,3V zu kommunizieren.
Der eine Knopf setzt den Arduino zurück und der andere schaltet das Bluetooth-Modul an oder aus. Die rote LED leuchtet auf, wenn ein Fehler auftritt, wie zum Beispiel ein fehlerhaftes Zeitsignal oder eine fehlende SD-Karte. Die rechte grüne LED leuchtet immer und die linke visualisiert das DCF-Signal, sodass man erkennen kann, ob die Antenne richtig ausgerichtet ist.

SchaltplanDer Hauptnachteil von meinem Projekt ist, dass es nicht wetterfest ist und somit nicht ohne zusätzliches Gehäuse draußen aufgestellt werden kann. Die Wetterstation bringt den ATmega an seine Grenzen was Programm- und Arbeitsspeicher betrifft. Für weitere Features wie eine aktive Steuerung über Bluetooth wäre also z.B. ein Arduino Mega notwendig. Ein weiteres Problem ist die Zuverlässigkeit des DCF77-Moduls, das drinnen oft kein Signal empfängt. In Zukunft plane ich, ein ähnliches Projekt mit einem Raspberry Pi umzusetzen, der dann alle Aufgaben außer dem Sammeln der Sensordaten übernimmt. Die Daten könnten so über das Internet bereitgestellt werden und die Beschränkung durch die Bluetooth-Reichweite entfällt.

GUIIch habe mit dem Projekt bei der Intel Leibniz Challenge 2013 teilgenommen, bin aber nicht in die Endauswahl gekommen. Für diesen Wettbewerb habe ich auch eine GUI entwickelt, mit der die Daten über eine USB-Verbindung am Computer angezeigt werdenkönnen.

Downloads: Arduino-Sketch, Arduino-Sketch für den ATtiny, Android-App (mindestens Android 4.0), Fritzing-Schaltplan.

2 thoughts on “Arduino-Wetterstation mit Bluetooth, Datalogging und Android-App

  1. frusti

    Hallo,
    Wow super Idee, finde ich echt Spitze!
    Möchte auch mit Arduino coole Sachen machen, aber bin mit Elektronik leider nicht so vertraut. Von wo hast Du das alles gelernt? Kann man ohne viel Kenntnisse von Elektronik dies auch erlernen?

    Danke für eine Antwort.

    Grüße
    frusti

    Reply
    1. Marian Post author

      Hi frusti,
      mit Arduino anzufangen ist sehr einfach. Vor allem, wenn Englsich kein Problem für dich ist. Es gibt gute Tutorials auf Youtube, zum Beispiel die von Jeremy Blum. Auf arduino.cc gibt es ein (deutsches und englisches) Forum, wo man wirklich alles fragen kann. Ich empfehle dir mit einem Arduino Uno anzufangen, es gibt aber günstigere (gleichwertige) Nachbauten, da Arduino Open Source ist. Es lohnt sich auf jeden Fall Preise zu vergleichen, da viele Elektronikteile zu teuer angeboten werden. Es gibt überall im Internet viel Material dazu, du kannst mich natürlich auch jederzeit fragen.

      LG,
      Marian

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *