Blog

API Bindings und Package Management

In der Vergangenheit waren die Installations- und Benutzungsanleitungen der API Bindings davon ausgegangen dass ein Nutzer sich mit einer von uns unterstützen Sprache bereits auskennt. In den letzten Tagen haben wir daran gearbeitet die Dokumentation diesbezüglich zu verbessern. Es sollte nun auch für einen Anfänger möglich sein die API Bindings zu installieren und eines der Testbeispiele auszuführen ohne etwas auf einer anderen Seite nachlesen zu müssen.

Die Links zu den Installations- und Benutzungsanleitungen für die von uns unterstützten Sprachen können in der Dokumentation gefunden werden.

Einen Vorschlag den wir sehr oft bekommen haben war, Packages und Package Repositories für Sprachen zu unterstützen die soetwas anbieten. Wir haben uns anfangs dagegen ausgesprochen, da die API Bindings automatisch generiert werden und das hochladen eines Paketes einen weiteren manuellen Schritt zum Prozess des freischalten neuer Bindingsversionen hinzufügt.

Allerdings haben wir in letzter Zeit so viele Anfragen diesbezüglich bekommen das wir uns entschieden haben Packages in Repositories zu bringen für Sprachen wo dies für uns einfach möglich. Aktuell unterstützen wir Maven (Java), NPM (JavaScript), CPAN (Perl), PyPI (Python) und GEM (Ruby). Dies bedeutet, dass man nun die Bindings für diese Sprachen mit einem einfachen Kommandozeilen One-Liner installieren und aktualisieren kann.

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

Java - Maven:

Füge Abhängigkeit zu deiner pom.xml hinzu

JavaScript - NPM:

> npm -g install tinkerforge

Perl - CPAN

> cpanm Tinkerforge

Python - PyPI

> pip install tinkerforge

Ruby - GEM

> gem install tinkerforge

Erstes LiveHacking in Hamburg

Wie im letzten Blogpost angekündigt, hat gestern Abend das erste LiveHacking in Hamburg stattgefunden:

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

Bastian war bei diesen Event mit dabei, das von der Java User Group Hamburg, Sven Ruppert (Codecentric AG) und Alexander Bischof organisiert wurde. Die Teilnehmer wurden in die Räumlichkeiten der Hacker- und Makerspace Attraktor e.V eingeladen und konnten ihre eigenen Ideen mit dem Tinkerforge Baukastensystem umsetzen. Es hat sehr viel Spaß gemacht euch bei der Nutzung unserer Module über die Schulter zu schauen und mit euch Ideen auszutauschen. Ein paar Kleinigkeiten und Bugs sind uns aufgefallen, die wir natürlich beseitigen wollen. Die ersten Bugfixes haben wir direkt heute morgen veröffentlicht.

Es sind weitere LiveHackings bundesweit geplant, bei denen wir Sven Ruppert unterstützen werden. Seinen Bericht könnt ihr hier finden . Danke für das sehr positive Feedback und die Verbesserungsanregungen! Wir freuen uns auf die weiteren Events.

LED Strip Bricklet unterstützt WS2811 und WS2812(B)

Mit der neuen Firmware Version 2.0.4 unterstützt das LED Strip Bricklet nun neben dem LED Treiber WS2801 auch die Treiber WS2811, WS2812 und WS2812B (auch bekannt als “NeoPixel”).

Zum testen haben wir unterschiedliche LED Strips sowie eine 256 Pixel große LED Matrix von unterschiedlichen Herstellern angesteuert.

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

Des weiteren haben wir auf der Maiker Faire ein WS2812B Strip mit dem RED Brick zwei Tage ohne Aussetzer ansteuern können. Die Anleitungen in der Dokumentation wurden entsprechend angepasst. Sie Erklären nun auch wie die neu unterstützten Treiber angeschlossen werden müssen (die Clock-Leitung wird nicht mehr verwendet).

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.