›   Demo 1: Sensordaten
›  Umsetzung

Übersicht der Komponenten

Der IoT-Demonstrator besteht aus einer Reihe verteilter Hardwarekomponenten (IoT-Geräte), die mit einem zentralen Server kommunizieren. Ein IoT-Gerät besteht aus verschiedenen Komponenten: WLAN-fähige Mikrocontroller, Stromversorgung und Sensoren. Auf jedem IoT-Gerät läuft eine eingebettete Software, die die Messung und Übertragung der Sensordaten steuert.

Architekturdiagramm

Hardwarekomponenten

Weshalb ein Entwicklerboard verwenden?
  • Das ATMEL AVR STK600 Board ist ein Entwicklungs-System für Mikrocontroller der Marke ATMEL. Das Board bietet einen schnellen Einstieg in die Programmierung und Erstellung neuer Anwendungen sowie beim Prototyp-Testing von verschiedenen Typen der ATMEL-Mikrocontroller. Auf dem verwendeten Board ist ein Mikrocontroller vom Typ ATmega2560 enthalten, sowie verschiedene Anschlüsse/Schnittstellen, z.B. USB, und 8 LEDs. Die Stromversorgung des Boards erfolgt über eine DC-Einbaubuchse, die direkt mit dem PC verbunden werden kann.

Für die schnelle Entwicklung von Prototypen setzen wir das Entwicklerboard STK600 ein. An das Entwicklerboard sind die anderen benötigten Komponenten angeschlossen:

Mikrocontroller: ATmega2560
  • Ein Mikrocontroller ist ein Mikrorechner, der aus den drei Kernelementen Prozessor, Speicher (RAM, ROM) und Ein- und Ausgabesteuerungen besteht. Diese Elemente befinden sich alle auf einem Chip, genannt Ein-Chip-System, und werden entsprechend für die Anwendungsfälle ausgewählt.
    Der ATmega 2560 ist ein leistungsfähiger 8-Bit Mikrocontroller der Firma Atmel, der auf dem STK600-Entwicklerboard defaultmäßig dabei ist.
IoT-Modul: ESP8266
  • Der ESP8266 ist ein 32-Bit-Mikrocontroller der chinesischen Firma espressif, der aktuell oft in IoT-Szenarien verwendet wird, da er Datenübertragung per WLAN an einen Webserver ermöglicht. Der ESP8266 kann für die Nutzung als Seriell-zu-WLAN-Schnittstelle mit Hilfe einfacher Befehle angesteuert werden:
    AT+RST - startet das Modul
    AT+CWMODE=1 - setzt den WLAN-Modus
    AT+CWJAP=ssid,password - verbindet sich mit einem Router
    AT+CIPSTART="TCP",ip,port - startet eine TCP-Verbindung
    AT+CIPSEND=length, data - sendet Daten
    AT+CIPCLOSE - schließt die TCP-Verbindung

Temperatursensor: LM335
  • Der Temperatursensor LM335 der Firma Texas Instruments misst Temperaturen als analoge Spannungswerte, wobei die Temperatur linear von der Spannung abhängt.

Entwicklerboard STK600

Embedded Software

Was ist eine eingebettete Software?
  • Eine eingebettete Software ist ein Programm, das fester Bestandteil einer Hardware bzw. eines Geräts ist und für diese entwickelt wurde, um eine festgelegte Aufgabe zu erfüllen. Beispiele sind z.B. die Programme, die in Haushaltsgeräte eingebaut sind und diese steuern.
    Eingebettete Software unterscheidet sich von nicht-eingebetteter Software in verschiedenen Punkten:
    • Ein eingebettetes Programm läuft in einer Endlosschleife, in der es auf Ereignisse aus der Umwelt wartet und darauf reagiert, oder in der es periodisch festgelegte Aufgaben durchführt.
    • Die Anforderungen bezüglich Zeit-, Speicher-, und Energiebedarf sind streng. Eine eingebettete Software hat knappere Ressourcen (Zeit und Speicher) zur Verfügung und muss die vorgesehenen Aufgaben in Echtzeit, d.h. in einem genau festgelegten Zeitfenster, durchführen.

Das Kernstück des Demonstrators ist die eingebettete Software, die die periodische Messung der Sensordaten und ihre Übertragung an den Webserver steuert.
Die eingebettete Software wurde als C-Programm implementiert. Das C-Programm besteht aus den Quellcode-Dateien:
  • main.c - das Hauptprogramm, enthält die main-Funktion
  • ADC.c - enthält Hilfsfunktionen für die Initialisierung und Verwendung des ADC
  • USART.c - enthält Hilfsfunktionen für die Initialisierung und Verwendung des USART
Was ist ein Analog-Digitalwandler (ADC)?
  • Viele Sensoren liefern ihre Messwerte als analoge kontinuierliche Signale. Ein Analog-Digitalwandler ist ein Bauelement, das analoge Eingangssignale in digitale Ausgangswerte umsetzen kann. Für unseren Demonstrator verwenden wir den eingebauten Analog-Digitalwandler des Mikrocontrollers, um die gemessenen analogen Temperaturen bzw. Spannungen in digitale Werte zu wandeln.
Was versteht man unter USART-Datenübertragung?
  • UART ist eine serielle Schnittstelle, die zur Datenübertragung zwischen Mikrocontroller und PC oder zwischen verschiedenen Mikrocontrollern genutzt wird. Wir verwenden UART für die Übertragung der Befehle vom Mikrocontroller an das WLAN-Modul ESP8266.

Für die Implementierung wird Atmel Studio eingesetzt, eine Entwicklungsumgebung, die alle Aspekte der eingebetteten Softwareentwicklung unterstützt, angefangen von der Projekterstellung, Programmierung, Simulation und Übertragung der Software auf den Mikrocontroller.

Struktur des Hauptprogramms

#define F_CPU 16000000UL
#define DEV 3
#include <avr/io.h>

int main(void){
  // (1) Deklariere Variablen
  uint16_t val = 0;
  uint8_t T_C = 0;
  // (2) Initialisiere ...
  adc_init(); // ADC
  uart_init();// UART
  esp_init(); // ESP8266
  // (3) Endlosschleife
  while (1) {	
    // Alle 30 Sekunden	
    _delay_ms(300000);	
    // Lese Sensordaten ...
    val = adc_read()*100/204;
    T_C = val - 273;
    // sende sie an Webserver
    esp_send(DEV, T_C);		
  } 
} 

Datenbank

Weshalb eine Datenbank verwenden?
  • Eine Datenbank im allgemeinen ist eine strukturierte Sammlung zusammengehöriger Daten. Der wichtigste und aktuell am häufigsten eingesetzte Datenbanktyp ist die relationale Datenbank. Eine relationale Datenbank besteht aus mehreren Tabellen, die über Schlüssel miteinander in Beziehung stehen. Jede Tabelle besteht ihrerseits aus mehreren Datensätzen.

    Der Vorteil beim Einsatz einer Datenbank ist, dass wir die Daten persistent speichern und die Datenintegrität mit Hilfe von Integritätseinschränkungen sicherstellen können.

Für die persistente Speicherung der aufgezeichneten Sensordaten setzen wir eine MySQL-Datenbank ein. Wie im Datenbankdiagramm dargestellt, werden vier Datenbanktabellen verwendet:
  • die Tabelle device speichert die Eigenschaften der Geräte
  • die Tabelle sensor speichert die Eigenschaften der Sensoren
  • die Tabelle sensordata speichert die übertragenen Messungen
  • die Tabelle transmission speichert die Eigenschaften einer Datenübertragung, z.B. wie häufig sie stattfindet.

ER-Diagramm der Datenbank

Webserver

Was ist ein Webserver?
  • Die Aufgabe eines Webservers besteht darin, auf http-Anfragen hin die angeforderten Webseiten an den Client zu senden. Der Anbieter von Webseiten benötigt einen Webserver, auf dem eine Kombination von Programmen läuft, mit deren Hilfe statische dynamische Webseiten und -anwendungen entwickelt und bereitgestellt werden können.
Der Webserver hat in unserem IoT-Demonstrator zwei Aufgaben. Einerseits empfängt er die Sensordaten, die die IoT-Geräte senden, und andererseits liefert er die Webseiten, die diese Daten darstellen, an die anfragenden Clients aus.

Entwicklungssystem: XAMPP
  • XAMPP ist eine Zusammenstellung von freier Software für den Betrieb eines Apache-Webservers, die das einfache Installieren und Konfigurieren von PHP- und PERL-basierten Webanwendungen ermöglicht. XAMPP steht für:
    X Platzhalter für das Betriebssystem: Windows-Server werden als WAMPP, Linux-Server als LAMPP und Mac-Server als MAMPP bezeichnet.
    A steht für Apache, einen weitverbreiteten, kostenlosen Webserver.
    M bezeichnet das Datenbankmanagementsystem MySQL bzw. MariaDB.
    P steht für die Skriptsprache PHP.
    P steht für Perl, eine weitere Skriptsprache. XAMPP wird hauptsächlich für die Entwicklung von Webanwendungen eingesetzt. Der Einsatz als produktiver Webserver ist aus Sicherheitsgründen zu vermeiden.
Wir verwenden das Programmpaket XAMPP als Entwicklungsumgebung, da es viele Softwarekomponenten und Programmiersprachen bündelt, die wir für die Entwicklung unserer Webanwendung benötigen.
Weiterhin verwenden wir JavaScript-Frameworks wie JQuery und Chart.js für die Erstellung einer ansprechenden und responsiven Benutzeroberfläche.

Funktionsweise des Webservers

Funktionsweise des WWW