OSS an Schulen

Kurzbeschreibung: Das Internet der Dinge, macht aus Gebrauchsgegenständen «intelligente Dinge»: Sei es beim Sport mittels «intelligenter» Schuhe und Kleidung, beim Autofahren oder zuhause. Es verändert zusehends die Art, wie die Menschen die Welt wahrnehmen. Doch was ist das Internet der Dinge überhaupt, wie kann es im beruflichen und privaten Umfeld genutzt werden? Mittels vorgefertigter Komponenten werden eigene «intelligente Gegenstände» entworfen und mit dem Internet verbunden.

Inhalt: Ausgesuchte Highlights aus dem Kursreihe „Internet der Dinge“ (http://kurs.eb-zuerich.ch/is95) an der EB-Zürich

Folien: /media/uploads/marcel1691/2015-03-28-ossanschulen-ws_gao22vP.pdf

Kurzeinstieg

Internet der Dinge

Entwicklungsumgebung

Die nachfolgenden Programme zeigen ausgesuchte Beispiele pro Anwendungsgebiet. Weitere Anweisungen/Erklärungen stehen auf der Homepage des Programmes (auf Name des Programmes klicken).

Hardware

Für die nachfolgenden Programme verwenden wird das https://developer.mbed.org/platforms/FRDM-K64F/ Board von Freescale.

Und den IoTKit (Internet of Things Kit), ein Arduino kompatibler Shield (Aufsatz):

/media/uploads/marcel1691/iotkit.png

Dieser führt die Pin's vom Board nach oben und fügt weitere Funktionalitäten hinzu.

Sensoren

  • Poti (A0), Lichtsensor (A1), Hall (Magnet) Sensor (A2), Mikrophon (A3), Buttons A0 – A2, Temperator (I2C)

Aktoren

  • 3 x Schrittmotortreiber (D2-D5), 2 x Motor (D2-D7), Summer (D7), 3 x MOSFET (D5-D7), 4 Digit Display (I2C), 4 LED (D10-D13)

Anschlüsse

  • Servo's (D9, D10), EPS8266 WLAN Modem, MFRC522-RFID Reader, Infrarot Empfänger (A5), Funk mit 433MhZ (D9), Universelle Anschlüsse mit Signal, 5V, Ground (A0 – A5, D2-D7), 2 x I2C, 2 x SPI, 1 x Serial.

Weitere Informationen und EAGLE Dateien https://github.com/mc-b/IoTKit

GPIO

Allzweckeingabe/-ausgabe (engl. GPIO - General Purpose Input/Output) ist ein allgemeiner Kontaktstift (Pin) an einem Mikrokontroller, dessen Verhalten, unabhängig, ob als Eingabe- oder Ausgabekontakt, durch logische Programmierung frei bestimmbar ist. GPIO-Kontakten ist kein Zweck vorgegeben, sie sind daher standardmäßig unbelegt.

Mittels folgender Grundklassen kann den GPIO Pins ein Zweck vorgegeben werden:

  • DigitalOut - Ausgabe einer Positiven Spannung
  • DigitalIn - Lesen des Status eines Pins
  • AnalogIn - Auslesen der Spannung an einem Pin
  • PwmOut - Erzeugen einer Spannung, mittels Pulsweitenmodulation (PWM)

Import programDigitalOut

Mittels DigitalOut kann eine Positive Spannung an einem Pin erzeugt werden.

Import programDigitalIn

DigitalIn liest den Status eines Pins aus.

Import programAnalogIn

Liest die Spannung an einem Pin.

Import programPwmOut

Pulsweitenmodulation

Sensoren

Ein Sensor (von lateinisch sentire, dt. „fühlen“ oder „empfinden“), (Messgrößen-) Aufnehmer oder (Mess-)Fühler ist ein technisches Bauteil, das bestimmte physikalische oder chemische Eigenschaften (z. B.: Wärmestrahlung, Temperatur, Feuchtigkeit, Druck, Schall, Helligkeit oder Beschleunigung) und/oder die stoffliche Beschaffenheit seiner Umgebung qualitativ oder als Messgröße quantitativ erfassen kann. Diese Größen werden mittels physikalischer oder chemischer Effekte erfasst und in ein weiterverarbeitbares elektrisches Signal umgeformt.

Import programHallSensor

Hall Sensor

Import programLichtSensor

Licht Sensor

Aktoren

Roboter, 3D Drucker und LED's sind eng verknüpft mit dem Internet der Dinge. Ein Beispiel dafür ist: http://www.irobot.com/For-Business/Ava-500.aspx.

In vielen Robotern kommen Standard Boards mit individuellen Shield's zum Einsatz. Der Siegeszug der DIY (Do-it-yourself) 3D Druckern, wäre ohne die Arduino Mega Boards nicht denkbar gewesen.

Import programServo

Servo Beispiel

Import programMotor

Motor Beispiel

Import programSchrittmotor

Schrittmotor Beispiel

Import programTuerOeffner

Tueroeffner Beispiel

Bus Systeme

Ein Bus ist ein System zur Datenübertragung zwischen mehreren Teilnehmern über einen gemeinsamen Übertragungsweg.

In der Computerarchitektur ist ein Bus ein Untersystem, das Daten oder Energie zwischen Computerbestandteilen innerhalb eines Computers oder zwischen verschiedenen Computern überträgt. Anders als bei einem Anschluss, bei dem ein Gerät mit einem anderen über eine oder mehrere Leitungen verbunden ist (Point-to-Point-Verbindung), kann ein Bus mehrere Peripheriegeräte über den gleichen Satz von Leitungen miteinander verbinden.

Da auf Bussystemen oft sehr hochfrequente elektrische Signale übertragen werden, treten an Verzweigungen Reflexionen auf, was zu Auslöschung der Signale durch Interferenz an bestimmten Stellen und damit zur Fehlfunktion des gesamten Systems führt.

Bus Topologien

  • Point-to-Point, eine Direktverbindung zwischen zwei Punkten, z.B. Serielle Schnittstelle
  • Linien-Topologie, Reflexionen an den Leitungsenden werden durch Terminierung (Wiederstände) verhindert, z.B. I2C
  • Multiplexing, eine Lösung, diese Anzahl Buspin's zu halbieren, indem man in einer Busphase die eine Hälfte und in einer anderen die andere Hälfte der Signale über dieselbe Leitungen schickt (Multiplexbus). Ein zusätzlicher Steuerpin muss dann diese Busphasen kennzeichnen, z.B. SPI.

Import programmbed2Arduino

mbed nach Arduino mittels I2C Bus

Import programRGBLEDStrip

Beispiel RGB LED Strip 12 Volt Variante mit einer Leitung pro Farbe

Lady Ada stellt Neo Pixels vor https://www.youtube.com/watch?v=HO6xQMR8naw

HTTP (Hypertext Transfer Protocol)

Das Hypertext Transfer Protocol (HTTP, englisch für Hypertext-Übertragungsprotokoll) ist ein Protokoll zur Übertragung von Nachrichten und Daten. Es wird hauptsächlich eingesetzt, um Webseiten (Hypertext-Dokumente) aus dem World Wide Web (WWW) in einen Webbrowser zu laden. Es ist jedoch nicht prinzipiell darauf beschränkt und auch als allgemeines Dateiübertragungsprotokoll sehr verbreitet.

Jede Nachricht besteht dabei aus zwei Teilen, dem Nachrichtenkopf (englisch Message Header, kurz: Header oder auch HTTP-Header genannt) und dem Nachrichtenrumpf (englisch Message Body, kurz: Body). Der Nachrichtenkopf enthält die Anfragemethode und Informationen über den Nachrichtenrumpf wie etwa verwendete Kodierungen oder den Inhaltstyp. Der Nachrichtenrumpf enthält die Nutzdaten (siehe HTML unten).

Von den Nachrichten gibt es zwei unterschiedliche Arten: die Anfrage (englisch Request) vom Client an den Server und die Antwort (englisch Response) als Reaktion darauf vom Server zum Client. Die mbed Board's können als HTTP Client oder als HTTP Server Eingesetzt werden.

HTTP-Anfragemethoden (nicht abschliessend)

  • GET: ist die gebräuchlichste Methode. Mit ihr wird eine Ressource (zum Beispiel eine HTML Datei) vom Server angefordert.
  • POST: schickt Daten zur weiteren Verarbeitung zum Server.
  • PUT: dient dazu eine Ressource (zum Beispiel eine Datei) auf einen Webserver hochzuladen.
  • DELETE: löscht die angegebene Ressource auf dem Server. Anwendungen

Holen, Schreiben und Löschen von Daten und Dateien auf HTTP Servern.

HTML (Nachrichtenrumpf)

Die Hypertext Markup Language (engl. für Hypertext-Auszeichnungssprache), abgekürzt HTML, ist eine textbasierte maschinenlesbare Sprache (markup language) zur Strukturierung digitaler Dokumente wie Texte mit Hyperlinks, Bildern und anderen Inhalten.

HTML-Dokumente sind die Grundlage des World Wide Web und werden von Webbrowsern dargestellt.

Import programHTTPServerUI

HTTP (RPC) Server mit UI

Web-APP

Smartphones und Tablets, bzw. deren Apps sind die idealen Geräte zur Fernbedienung der "intelligenten Dinge"

Neben nativen Apps, welche für eine bestimmte Zielplattform geschrieben wurden, gibt es auch die Möglichkeit von Web-Apps (Webseiten)

Eine mobile Web-App verhält sich im Idealfall genau so wie eine native App, wird also vom Nutzer nicht wie eine Webseite wahrgenommen, sondern bietet stattdessen eine Benutzeroberfläche, die sich in das mobile Endgerät optisch und ergonomisch integriert.

Web-Apps werden, in der Regel, mittels HTML5 und JavaScript implementiert. Zur Vereinfachung der Programmierung stehen einen Reihe von Frameworks zur Verfügung.

Anwendungen

  • Zur Verfügungstellung einer einfachen APP für die Steuerung des Boards

PhoneGap ist ein Framework zur Erstellung hybrider Applikationen für mobile Endgeräte.

PhoneGap Build Service

Import programRPCHTTPServerVariable

HTTP RPC Server mit vordefinierten Objekten

Programm builden und index.html in Web-APP Verzeichnis downloaden und IP-Adresse (erscheint auf Console) ändern. index.html in Browser öffnen, LED und Servos können angesteuert werden. Mittels PhoneGap entsteht aus index.html eine APP für Smartphones.

Cloud

Plotly ist ein Online-Analytik und Datenvisualisierungstool. Plotly bietet Werkzeuge für Online-Grafiken, Analysen und Statistiken sowie wissenschaftliche Grafik-Bibliotheken für Python , R , MATLAB , Perl , Julia , Arduino und REST.

Weitere Informationen zum Anpassen des Charts etc. siehe Arduino Tutorial (scrollen nach Usage and Docs)

https://plot.ly verwendet Username, API Key zusammen mit Tokens zur Eindeutigen Authentifizierung.

Import programPlotlySensorChart

Plotly Online-Analytik und Datenvisualisierungstool Beispiel

Übersicht über weitere Cloud Dienste: http://www.programmableweb.com/apis/directory

Services / Device Server

Bei Internet auf Dingen Geräten stehen folgene Ziele im Vordergrund:

  • Direkt Adressierbar, Geräte zu Gerät oder Gerät - Cloud
  • Einfache Einbindung in bestehende Netzwerke
  • Limitiertes Ressourcen der Geräte oder Wissen der Anwender
  • Skalierbar von 250 - 300 Geräte in einem Haushalt
  • Antwortzeiten unter 100 Millisekunden für einen typische Interaktion
  • Nahtlose Integration mit Smartphones und Tablets
  • Lange Batterielebensdauer (ein Jahr und länger)

Um diese Ziele zu erreichen, werden eigene Protokolle und Device Server verwendet.

Import programCOAPmbed

CoAP Device Server Client

Demo eines Internet der Dinge Projektes http://developer.mbed.org/cookbook/Internet-of-Things-Demonstration


Please log in to post comments.