Einloggen auf heise online

    • News
    • heise Developer
    • heise Netze
    • heise Open Source
    • heise Security
    • c't
    • iX
    • Technology Review
    • c't Fotografie
    • Mac & i
    • Make
    • Telepolis
    • heise Autos
    • TechStage
    • tipps+tricks
    • heise Download
    • Preisvergleich
    • Whitepapers
    • Webcasts
    • Stellenmarkt
    • Karriere Netzwerk
    • Gutscheine
    • IT-Markt
    • Tarifrechner
    • Netzwerk-Tools
    • Spielen bei Heise
    • heise shop
    • heise Select
    • Artikel-Archiv
    • Zeitschriften-Abo
    • Veranstaltungen
    • Arbeiten bei Heise
    • Mediadaten
make
  • Newsletter
  • Kontakt
  • Hintergrund
  • Projekte
  • Mitmachen
  • Heft
  • Foren
  1. Make
  2. Hintergrund
  3. Wettermessgerät mit OpenSenseMap

Wettermessgerät mit OpenSenseMap

Hintergrund 03.09.2015 14:26 Uhr Jan Wirwahn

Auf der OpenSenseMap (OSeM) soll ein flächendeckendes Sensornetzwerk für alle möglichen Messdaten entstehen. Die gesammelten Daten werden dort unter Open-Source Lizenzen veröffentlicht und können von Wissenschaftlern oder interessierten Bürgern frei heruntergeladen werden.

In dieser Anleitung wird beispielhaft die Anbindung eines SHT15-Sensors in das OpenSenseMap-Netzwerk beschrieben. Für die Datenverarbeitung bzw. -übertragung nutzen wir ein Arduino Uno mit Arduino Ethernet Shield. Die REST-Schnittstelle bietet aber auch jeder anderen programmierbaren und mit dem Internet verbundenen Messstation die Möglichkeit, Messungen auf der OSeM zu veröffentlichen und zu teilen.

Komponenten in der Übersicht

  • Arduino Uno R3
  • Arduino Ethernet Shield R3
  • Sparkfun SHT15 Breakout
Bild 1: Verkabelung des SHT15 mit dem Arduino.

SHT15 anschließen

  1. VCC zu 5V
  2. DATA zu Pin 6
  3. SCK zu Pin 7
  4. GND zu Arduino GND
SHT1x-Bibliothek

Für Sensoren der SHT1x-Serie von Sensirion gibt es bereits eine einfache Arduino-Schnittstelle. Ladet die Bibliothek von Github herunter und entpackt sie in euren Arduino/libraries-Ordner. Importiert die Bibliothek wie gehabt in eurem Arduino-Sketch, und definiert zusätzlich den Daten- und Taktpin entsprechend der Verkabelung in Bild 1. Danach könnt ihr eine Verbindung zum Sensor herstellen:

 #include<sht1x.h>
#define dataPin 6
#define clockPin 7
SHT1x sht1x(dataPin, clockPin);

Nun lassen sich über zwei Funktionen die Temperatur in Grad Celsius, sowie die relative Luftfeuchte in Prozent als Gleitkommazahl abspeichern:

float temp = sht1x.readTemperatureC();
float humi = sht1x.readHumidity();

Manuelle Registrierung

Um einen Sensor mit der OSeM zu verbinden, müsst ihr ihn zuerst dort registrieren. Falls ihr dabei keinen der SenseBox-Bausätze nutzt, müsst ihr in Schritt 4 der Registrierung die manuelle Konfiguration auswählen (Bild 2). Dort wird für jedes gemessene Phänomen ein neuer Sensor angelegt.

Bild 2: Manuelle Konfiguration eines Sensors auf der OpenSenseMap. In unserem Beispiel messen wir Temperatur in °C und Luftfeuchtigkeit in %, beides mit dem SHT15.
OpenSenseMap API

Eine REST-Schnittstelle regelt den Zugang zur Datenbank auf dem OSeM-Server. Intern ist jede Messstation mit ihren Sensoren (bzw. Phänomenen) verknüpft, die bei der Registrierung angegeben wurden. In unserem Falle haben wir eine SenseBox-ID für die Station, sowie jeweils eine Sensor-ID für Temperatur- und Luftfeuchtigkeitsmessungen bei der Registrierung generiert. Die IDs werden euch nach der Registrierung per Mail zugeschickt. Jede Messung wird dann über das HTT-Protokoll mit der POST-Operation an den Server gesendet. Dazu muss eine eindeutige URI angegeben werden, die wie folgt aufgebaut ist:

http://opensensemap.org:8000/SenseBoxID/SensorID

Jede Messung wird einzeln im Json-Format über das value-Attribut an den Server gesendet. Nehmen wir an, wir wollen von unserer Station (ID 1234) einen Messwert des Thermometers (ID abcd) von 22,5 an den OSeM-Server schicken. Die vollständige HTTP-POST-Operation dazu sieht folgendermaßen aus:

 POST /boxes/1234/abcd HTTP/1.1
Host: www.opensensemap.org
Content-Type: application/json
Connection: close
Content-Length: 14

{"value":22.5}

Achtung: Der Zeilenumbruch (\n) in Zeile 6 trennt die HTTP-Header-Information von den Daten, die gesendet werden sollen. Er ist also ist notwendig, um die Operation korrekt auszuführen.

Arduino OSeM-Client

Nach der Registrierung wird ein Arduino-Sketch generiert, den ihr als Anhang in einer Bestätigungsmail zugeschickt bekommt. Ihr müsst diesen Sketch noch anpassen, indem ihr die SHT1x-Bibliothek einfügt, sowie die benötigen Variablen und eine Sensorinstanz:

 #include <SPI.h>
#include <Ethernet.h>

#include<sht1x.h>
#define dataPin 6
#define clockPin 7
SHT1x sht1x(dataPin, clockPin);


//SenseBox ID
#define senseBoxID "1234"
//Sensor IDs
#define temperatureSensorID "abcd"
#define humiditySensorID "efgh"

Innerhalb der if-Anweisung in der loop-Funktion müsst ihr nacheinander die Sensoren auslesen und mit der Hilfsfunktion postFloatValue() hochladen.

 void loop()
{
//Upload der Daten mit konstanter Frequenz
if (millis() - oldTime >= postInterval)
{
oldTime = millis();
temperature = sht1x.readTemperatureC();
postFloatValue(temperature, 1, temperatureSensorID);
humidity = sht1x.readHumidity();
postFloatValue(humidity, 0, humiditySensorID);

}
}

Falls ihr ein Ethernet-Modul nutzt, das nicht mit der Ethernet-Bibliothek kompatibel ist, müsst ihr den Sketch entsprechend anpassen. Solltet ihr weitere Fragen dazu haben, könnt ihr euch direkt an unseren Support unter der Adresse support@sensebox.de wenden.

  • Wie die Sensebox funktioniert und wie ein Exemplar auf den höchsten Gipfel Deutschlands gelangte, steht in unserer Reportage Arduinos erklimmen die Zugspitze in Make 4/2015 ab Seite 106.

(phs)

Kommentare lesen (2 Beiträge)

Forum zum Thema: Artikelforum Heft 4/2015

https://www.heise.de/-2803135 Drucken
Mehr zum Thema:
Sensortechnik
Anzeige
Anzeige
Das aktuelle Heft
Cover der aktuellen Ausgabe von Make

Die Make 2/2018 können Sie ab sofort im Zeitschriftenhandel und Heise Shop kaufen. Auf 140 Seiten u.a. mit diesen Themen: Bastelboards unter 10 Euro · Geniale Einsteiger-Projekte · Raspberry Pi 3B+ · Platinen selber ätzen · Printserver einrichten · 3D-Modelle aus der CNC-Fräse

Heft bestellen
Vorschau

Die Make 3/18 erscheint am 21. Juni 2018.

Anzeige
Anzeige
  • DSGVO: Was nach dem 25. Mai noch zu tun ist
  • Special: DSGVO Ratgeber
  • Interessante Jobangebote - IT-Jobtag in Leipzig!
  • 5 IT-Trends, die Sie auf dem Schirm haben sollten
  • Arbeitgeber Bewerbungen: Heise Karriere-Netzwerk
  • Wie Endgeräteschutz die IT-Sicherheit verbessert
  • Geldanlage: von Mensch und Maschine profitieren
Maker Faire
Ein roter Makey neben dem Logo: Maker Faire Deutschland, Österreich, Schweiz

Call for Makers!

Das Festival von Make – 2018 wieder in Berlin, Hannover, Wien und vielen weiteren Städten in Deutschland und Österreich. Die Anmeldung läuft: Zeigen Sie Ihre eigenen DIY-Projekte vor großem Publikum!

Projekte

Netzwerk-Geschwindigkeit mit einem Arduino messen Arduino-Network-Meter

Ein Managed Switch und ein Arduino messen die aktuelle Übertragungsrate einer Ethernet-Verbindung.

Projekte 1 Kommentare

Head Mounted Display aus Kopfbandlupen Smartphone-3D-Display für unter 20 Euro

Inspiriert von Open Dive: Ein Head Mounted Display für 20 Euro.

Projekte 2 Kommentare

Eine LED-Matrix aus alten Disketten Kawaii me

Die Struktur mit 88 Pixeln besteht aus 3,5"-Disketten. Die Ansteuerung erfolgt über einen Arduino.

Projekte

Vorweihnachtlicher Schmuck aus Computerteilen EDVentskranz

Vorweihnachtlicher Schmuck aus Computerteilen: Das Projekt EDVentskranz startete 2010 auf der Suche nach einem alternativen Adventskranz.

Projekte
Termine

Fehlt eine Veranstaltung? Termin eintragen

  • Aktuell
  • Hintergrund
  • Projekte
  • Mitmachen
  • Heft
  • Foren
    • Elektronik Arduino Raspberry Pi 3D-Druck
  • Newsletter
  • Kalender
  • Service
    • Twitter
    • Facebook
    • YouTube
    • Instagram
    • RSS
  • Datenschutzhinweis
  • Impressum
  • Kontakt
  • Mediadaten
  • News mobil
  • 1579405
  • Content Management by InterRed
  • Copyright © 2018 Heise Medien