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):
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.
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.