Blog

Bundesweites LiveHacking mit Tinkerforge

https://www.tinkerforge.com/static/img/_stuff/jug_hamburg.jpg

Wir möchten euch heute über eine Reihe von Veranstaltungen berichten die in verschiedenen Städten der Bundesrepublik und sogar im Ausland stattfinden wird. Am Montag, den 14.07. wird in Hamburg die erste Veranstaltung mit dem Namen “Tinkerforge und IoT” stattfinden. Diese, als LiveHacking bezeichnete, Veranstaltungsreihe wird von Sven Ruppert geleitet. Die Teilnahme ist kostenlos. Eine Beschreibung könnt ihr hier finden.

Sven arbeitet für die Codecentric AG und hält zum Beispiel Vorträge über Java bei Java User Groups (JUGs) oder schreibt als Gastautor Artikel für Jaxenter und EclipseMagazin. Aktuell beschäftigt er sich mit dem Thema “Internet der Dinge”. Bei seiner Suche nach geeigneter Hardware ist er auf uns gestoßen und nutzt seitdem das Baukastensystem für seine Vorträge. Die Bricks und Bricklets werden genutzt um Teilnehmer mit Java8 im Zusammenhang mit IoT vertraut zu machen.

Bastian wird die Veranstaltung in Hamburg, die leider bereits vollständig ausgebucht ist, besuchen, Rede und Antwort stehen und natürlich mit einem Blogpost berichten. Weitere LiveHackings sind bereits geplant.

RED Brick Software-Infrastruktur

Nachdem wir bisher lediglich über die Hardware des RED Bricks berichtet haben, wollen wir heute näher auf die Software eingehen.

Achtung: Dieser Artikel geht auf die technischen Details, der Software des RED Bricks ein. Dieses Hintergrundwissen ist für die Nutzung des RED Bricks später nicht notwendig!

Die folgende grafische Übersicht, über die aktuell geplante Software-Infrastruktur, soll in diesem Blog Post erklärt werden.

https://www.tinkerforge.com/static/img/_stuff/red_brick.png

Überblick

Die Farben in der Grafik besitzen folgende Bedeutung:

  • Blau: Tinkerforge Software Komponenten

  • Grün: Tinkerforge Hardware im Stack des RED Bricks

  • Lila: Tinkerforge Hardware extern angeschlossen

  • Orange: Externe Software Komponenten

Der Stack, sowie Mini USB und USB A, werden in der Grafik als Schnittstellen zwischen RED Brick und der Außenwelt dargestellt.

Über den Mini USB Anschluss werden mittels eines Composite USB Gadget Treibers zwei USB Klassen bereitgestellt: Die erste Klasse stellt einen Serial Port dar, über den ein einfacher Shell Access auf den RED Brick hergestellt werden kann. Die zweite Klasse stellt die Brick API zur Verfügung, d.h. ein RED Brick, der per USB an einen PC angeschlossen wird, taucht dort wie jeder andere Brick auf. Er hat ein API wie alle anderen Bricks und Bricklets. Über diese API kann der RED Brick konfiguriert werden. Dazu gehört die Übertragung des Anwender-Programms, die Einstellung wann das Programm ausgeführt werden soll (einmal, jede Stunde einmal, beim Start des RED Bricks, usw.), sowie andere Konfigurationen. Der RED Brick kann also wie eine Black Box betrachtet werden, die über Hochsprachen Bricks und Bricklets steuern kann.

Über die Stapel-Stecker können alle Bricks sowie die Ethernet Extension und RS485 Extension mit dem RED Brick genutzt werden. Für die Ethernet Extension wird ein Treiber geschrieben, der diese als normale Ethernet Schnittstelle im Linux System erscheinen lässt (eth0).

Über den USB A Anschluss können beliebige USB Geräte angeschlossen werden (Maus, Tastatur, WLAN Stick) und natürlich auch weitere Tinkerforge Hardware.

Diese Anschlüsse können alle gleichzeitig genutzt werden. Ein RED Brick Stapel, der per Mini USB an einem PC angeschlossen ist, Bricks und Bricklets verwendet, weitere Bricks und Bricklets über die RS485 Extension nutzt, mit dem Internet über die Ethernet Extension verbunden ist und weitere Geräte über USB A angeschlossen hat, ist also problemlos möglich.

Im folgenden werden die einzelnen Komponenten die notwendig sind für dieses System vorgestellt:

Linux Distribution

Die auf Debian basierte Linux Distribution des RED Bricks ist bereits sehr weit voran geschritten. Die Konfigurationen, die für die Komponenten (RAM, Stromversorgung) und Schnittstellen (USB Mini/A, HDMI, SD Card, SPI/I2C/UART im Stack, GPIO, LEDs, etc) am Linux Kernel stattfinden müssen, sind abgeschlossen. Alle Tinkerforge Bindings und die dazu gehörenden Compiler und Interpreter sind auf der Distribution vorinstalliert. Dazu kommen die wichtigsten Bibliotheken für jede Sprache die wir unterstützen, damit auch komplexere Entwicklungen stattfinden können.

Des weiteren können zwei Images Erzeugt werden:

  • Full Image: Dieses Image stellt alle Funktionen des RED Bricks zur Verfügung, inklusive einem Grafiktreiber für OpenGL und Grafikausgabe per HDMI.

  • Fast Image: Dieses Image ist auf maximale Geschwindigkeit ausgelegt. Die GPU ist in diesem Image beispielsweise totgelegt, wodurch die Bootzeit signifikant verringert werden kann.

Mit dem Full Image verhält sich der RED Brick wie ein PC. Mit dem Fast Image verhält sich der RED Brick eher wie ein Ersatz für den Master Brick, der eine OnDevice API für C/C++, C#, Delphi/Lazarus, Java, JavaScript, MATLAB/Octave, Perl, PHP, Python, Ruby, Shell und Visual Basic .NET hat.

Status: 100%

SPI Stack Kommunikation

Die Kommunikation mit Bricks und Bricklets im Stack findet über SPI statt. Das aktuell verwendete Protokoll, welches zwischen den Bricks gesprochen wird, ist für die SAM3S4 Prozessoren entwickelt worden, die wir in den Bricks verwenden. Dieses Protokoll ist zwar sehr effizient, es würde das Linux System des RED Bricks aber leider in die Knie zwingen. Die Lösung stellt die Nutzung von DMA dar, da der Prozessor während der Kommunikation nicht belastet wird. Unser bisheriges Protokoll ist nicht DMA kompatibel. Daher muss für die SPI Kommunikation ein neues Protokoll entworfen werden, dass mit dem DMA Controller der SAM3S4 Prozessoren, als auch mit dem des A10s Prozessors kompatibel ist. Dieses Protokoll muss dann auf dem RED Brick sowie den anderen Bricks implementiert werden.

Status: 25%

Das neue Protokoll ist komplett ausgearbeitet und die Implementierung für die SPI Slaves ist fertig. Aktuell sind wir dabei die Implementierung des SPI Master Treibers auf dem RED Brick zu schreiben. Momentan sieht es so aus als könnten wir dafür /dev/spidev verwenden, welches die Entwicklung vereinfacht, da sie komplett im Brick Daemon stattfinden kann. Falls es dort zu Performanceeinbrüchen kommt, können wir aber Problemlos die relevanten Teile direkt in den Linux Kernel bringen.

RED Brick API Daemon

Der RED Brick API Daemon ist ein Daemon, der die API des RED Bricks implementiert. D.h. dieser Daemon implementiert die Konfiguration die über Mini USB stattfindet.

Status: 25%

Die wichtigsten Komponenten der API sind ausgearbeitet und die notwendige Infrastruktur (Kommunikation mit Brick Daemon etc) ist implementiert.

Composite USB Gadget Driver

Der Composite USB Gadget Driver stellt zwei Schnittstellen über Mini USB zur Verfügung. Mittels diesem Treiber taucht der RED Brick als “normaler Brick” am PC auf, es kann aber gleichzeitig ein Zugriff auf die Shell des Linux auf dem RED Brick stattfinden.

Status: 100%

Der Treiber ist fertig und funktional.

Benutzerschnittstelle

Das Endziel ist es den RED Brick über den Brick Viewer konfigurierbar zu machen. Die API des RED Bricks sollte nur von “Power-Usern” überhaupt genutzt werden müssen. Der “normale” Nutzer überträgt sein Programm und konfiguriert den RED Brick nur über den Brick Viewer.

Status: 0%

Mit der Implementierung der Benutzerschnittstelle haben wir noch nicht begonnen.

Ethernet Treiber (W5200)

Auf der Ethernet Extension nutzen wir den WIZnet W5200 IC um Ethernet zu sprechen. Für diesen gibt es leider noch keinen Linux Kernel Treiber. Allerdings gibt es bereits Treiber für die sehr ähnlichen W5100 und W5300, was die Implementierung eines solchen Treibers vereinfacht.

Status: 0%

Mit der Implementierung wurde noch nicht begonnen.

RS485 Extension Support

Die Unterstützung für die RS485 Extension hat aktuell die niedrigste Priorität und wird erst nach der Veröffentlichung des RED Bricks starten.

Maker Faire 2014

https://www.tinkerforge.com/static/img/_stuff/MakerFaireHannover.jpg

Im letzten Jahr hat die erste deutsche Maker Faire in Hannover stattgefunden. Wir waren dabei und konnten mit euch einige interessante Gespräche führen. Dies ist ein guter Grund für uns auch dieses Jahr and der Maker Faire teilzunehmen.

Die Maker Faire findet vom 05.- 06. Juli wieder im Hannover Congress Centrum statt, allerdings diesmal mit deutlich vergrößerten Räumlichkeiten. Weitere Informationen findet ihr auf: http://makerfairehannover.com/.

Wir werden natürlich Prototypen des RED Bricks mit im Gepäck haben. Wir freuen uns auf euch!

Überarbeitete Dokumentation und Kits

Screenshot von Tinkerforge Dokumentation

Dokumentation

Wir haben die Dokumentation aufgeräumt. Eine neu geschaffene Einstiegsseite soll einen Überblick über Bricks, Bricklets, Master Extensions und die Konzepte hinter dem Tinkerforge Baukastensystem geben.

In dem Zuge haben wir die Dokumentation aller Produkte überarbeitet. Wie es der Fehlerteufel so will, ist dort sicher auch irgendwo etwas schief gelaufen. Bitte gebt uns Bescheid, wenn wir tote oder falsche Links entdeckt. Danke!

Kits

Ebenfalls überarbeitet haben wir die Zusammenstellung des Education und Tinker Kits:

Das Education Kit ist dazu gedacht in der Ausbildung eingesetzt zu werden. Das Kit wurde längere Zeit nicht überarbeitet. Die Menge an Bricklets, die direkt genutzt werden können, ohne das extern irgendwelche in Eigenleistung gefertigten Komponenten angeschlossen werden müssen ist mit der Zeit immer größer geworden. Ein Grund es zu überarbeiten. So haben wir als Beispiel das bisher im Kit vorhandene IO-16 Bricklet, an dem Taster oder LEDs angeschlossen werden können, durch Bricklets wie Motion Detector Bricklet oder Multi Touch Bricklet ersetzt. Die im Kit vorhandenen Module ermöglichen nun eine Vielzahl an Projekten, die einfach durch Zusammenstecken der mitgelieferten Module realisiert werden können.

Das Tinker Kit dient dazu die Hardware bereitzustellen um nahezu jedes erdenkliche Projekt zu realisieren. Auch dieses Kit hatten wir lange Zeit nicht aktualisiert, so dass die Frage aufkam welche neuen Module in das Kit kommen sollten und welche wir vielleicht rausnehmen wollen. Wir haben uns dazu entschieden einfach alles in das Kit gepackt. In dem Kit sind nun alle Tinkerforge Module mindestens einmal enthalten. Genau das richtige, für einen Grundstock an Modulen wenn man noch nicht weiß in welche Richtung die Reise geht.

RED Brick

Beim RED Brick geht es auch gut voran. Nächste Woche werden wir euch hier über den aktuellen Stand informieren.