•  
  •  
  •  
  •  
  •  
bbv Gathering 2014

MeteoRpoint – Erfahrung mit Internet of Things im Gathering 2014

Am bbv Gathering 2014 setzten sich Mitarbeitende mit dem Internet of Things auseinander – am Beispiel von Wetterstationen.

29.07.2014Text: tnt-graphics0 Kommentare
Fokus bbv_Kugelschreiber
  •  
  •  
  •  
  •  

Im Rahmen der internen Weiterbildungswoche «bbv Gathering» 2014 traf sich die ganze bbv Software Services in Davos, um sowohl innerhalb der Rolle aber auch rollenübergreifend Erfahrungen zu sammeln und als Firma noch weiter zusammenzuwachsen. Für die Rollen Engineer und Senior Engineer haben wir uns dieses Jahr etwas ganz Besonderes ausgedacht. Wir wollten das Thema Internet of Things am Beispiel von Wetterstationen behandeln und gleichzeitig unsere bereits vorhandenen Erfahrungen in Crossplattformentwicklung weiter vertiefen. Die Übersicht der Aufgabenstellung findet man hier.

Im diesem Blogpost gehen wir auf die genutzte Hardware für die MeteoRpoint Plattform näher ein.

Jedes Team bekam ein .NET Gadgeteer Set bestehend aus folgenden Komponenten:

  • FEZ Cerberus Mainboard
    Basisplattform für Sensoren und Module
  • Ethernet ENC28 Module
    Damit die Wetterstation über das HTTP API dem MeteoRserver Daten liefern kann
  • USB Client SP Module
    Für den Anschluss der Wetterstation an ein USB-Gerät (z.B. Laptop während der Entwicklung)
  • Temp&Humidity Module
    Für die Ermittlung der Temperatur und Luftfeuchtigkeit
  • Und weitere optionale Module wie Barometer, Gas-Sensor, Character Display und vieles mehr für die Teams mit ausserordentlichen Leistungen

Im untenstehenden Bild sieht man einen einfachen Versuchsaufbau der obigen Komponenten. Die Kosten pro Set beliefen sich auf ca. 160 USD.

Media Board

Was ist .NET Gadgeteer?

.NET Gadgeteer ist eine Entwicklungsplattform, die Mainboard- und Plug-and-Play-Module zur schnellen Prototypisierung nutzt. Alle Module von .NET Gadgeteer kommen bereits mit Treibern und APIs mit, so dass man sehr schnell zum Ziel kommt. .NET Gadgeteer ist ein Standard, der von Microsoft getrieben wird. Ziel des Standards ist es, Verbindungen zwischen Mainboards und Modulen zu vereinheitlichen. Alle .NET Gadgeteer Komponenten unterstützen das .NET Microframework.

«The .NET Micro Framework is .NET for small and resource constrained devices. It offers a complete and innovative development and execution environment that brings the productivity of modern computing tools to this class of devices.» – .NET Micro Framework website

Warum haben wir uns für .NET Gadgeteer entschieden?

Der Vorteil von .NET Gadgeteer ist, dass man zwar mit Hardware in Berührung kommt, aber noch nicht ein grosses Wissen über Embedded Programmierung oder Elektrotechnik mitnehmen muss. Das API von GHI macht die Programmierung der Hardware sehr einfach und stellt sicher, dass man schnell zu einem Erfolgserlebnis kommt. Eine minimale Wetterstation konnte somit für alle Teilnehmer in wenigen Stunden umgesetzt werden. Im untenstehenden Bild sieht man, wie einfach es ist, mit dem mitgelieferten Designer die genutzte Hardware auf dem Board zu konfigurieren.

BoardVisualDesigner

Im Hintergrund wird dann automatisch ein Programmstück erzeugt, die alle konfigurierten Komponenten enthält:

[sourcecode lang=“csharp“]
namespace MeteoR.Station {
using Gadgeteer;
using GTM = Gadgeteer.Modules;

public partial class Program : Gadgeteer.Program {
private Gadgeteer.Modules.Seeed.Barometer barometer;

private Gadgeteer.Modules.Seeed.TemperatureHumidity temperatureHumidity;

private Gadgeteer.Modules.GHIElectronics.Display_N18 display_N18;

private Gadgeteer.Modules.GHIElectronics.Display_HD44780 char_Display;

private Gadgeteer.Modules.GHIElectronics.FMRadio fmRadio;

protected new static GHIElectronics.Gadgeteer.FEZCerberus Mainboard {
get {
return ((GHIElectronics.Gadgeteer.FEZCerberus)(Gadgeteer.Program.Mainboard));
}
set {
Gadgeteer.Program.Mainboard = value;
}
}

public static void Main() {
// Important to initialize the Mainboard first
Program.Mainboard = new GHIElectronics.Gadgeteer.FEZCerberus();
Program p = new Program();
p.InitializeModules();
p.ProgramStarted();
// Starts Dispatcher
p.Run();
}

private void InitializeModules() {
this.barometer = new GTM.Seeed.Barometer(2);
this.temperatureHumidity = new GTM.Seeed.TemperatureHumidity(3);
this.display_N18 = new GTM.GHIElectronics.Display_N18(5);
this.char_Display = new GTM.GHIElectronics.Display_HD44780(4);
this.fmRadio = new GTM.GHIElectronics.FMRadio(7);
}
}
}
[/sourcecode]

Das eigentliche Programm entwickelt man in einer Partial Klasse. Hier ein ganz einfaches Beispiel, das zeigt, wie z.B. das Barometer und der Temperatursensor angesprochen werden:

[sourcecode lang=“csharp“]
namespace MeteoR.Station
{
using System;
using System.IO;
using System.Net;
using System.Threading;
using Gadgeteer.Modules.Seeed;
using Gadgeteer.Networking;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using Microsoft.SPOT.Net;
using Microsoft.SPOT.Net.NetworkInformation;
using GT = Gadgeteer;
using GTM = Gadgeteer.Modules;

public partial class Program
{
private void ProgramStarted()
{
this.InitHardware();

this.barometer.MeasurementComplete += this.BarometerOnMeasurementComplete;
this.temperatureHumidity.MeasurementComplete += this.TemperatureHumidityOnMeasurementComplete;
}

private void InitHardware()
{
}

private void TemperatureHumidityOnMeasurementComplete(TemperatureHumidity sender, double temperature, double relativeHumidity)
{
this.char_Display.Clear();
this.char_Display.PrintString(„T: “ + temperature.ToString(„##.#“) + “ ° “ + „H:“ + relativeHumidity.ToString(„##.#“) + “ %“);
}

private void BarometerOnMeasurementComplete(Barometer sender, Barometer.SensorData sensorData)
{
this.char_Display.Clear();
this.char_Display.PrintString(“P: “ + sensorData.Pressure.ToString());
}
}
}
[/sourcecode]

Des Weiteren konnten wir durch die grosse Anzahl an Modulen und Sensoren den Teams, die besonders effizient zum Ziel kamen, weitere Gadgets wie z.B. Gas Sensor, Character-Display und vieles mehr anbieten, ohne dass es zu hohen zusätzlichen Kosten führte.

Als zuverlässiger Lieferant nutzten wir Mouser Electronics. Die liefern ab 80 USD portofrei in die Schweiz.

Im nächsten Blogpost zeigen wir euch eine Übersicht über die Resultate der Teams.

Unser Wissen im Abo

IoT Device Lifecycle Management

IoT-Geräte richtig verwalten – so geht’s

IoT/Internet der Dinge
Low Code und No Code

Software aus dem Baukasten

Digitalisierung
bbv Griechenland

«Der neue Standort ist mehr als ein Büro»

1 Offshoring

Artikel kommentieren

Die E-Mail-Adresse wird nicht publiziert. Notwendige Felder sind mit einem * versehen.

Beachtung!

Entschuldigung, bisher haben wir nur Inhalte in English für diesen Abschnitt.

Achtung!

Entschuldigung, bisher haben wir für diesen Abschnitt nur deutschsprachige Inhalte.

Beachtung!

Entschuldigung, bisher haben wir nur Inhalte in English für diesen Abschnitt.

Achtung!

Entschuldigung, bisher haben wir für diesen Abschnitt nur deutschsprachige Inhalte.