© istockphoto.com/kchungtw
Prozessrechner à la JavaScript

Das muss tesseln!


Massimo Banzis Arduino befreite angehende IoT-Bastler von der lästigen Pflicht der Entwicklung eigener Hardware. Ob der geringen Rechenleistung des verwendeten Prozessors – ein AVR ist nun einmal kein Supercomputer – musste JavaScript bisher „draußen“ bleiben. Doch dank der Tessel-Prozessrechnerfamilie gehört diese Limitierung nun der Vergangenheit an. Dieser Artikel führt in deren Programmierung ein.

Das amerikanische Start-up Technical Machine bietet mit der Tessel-Serie seit einiger Zeit eine alternative Prozessrechnerfamilie an, die sich auf die Websprache spezialisiert hat. Dabei kommt eine innovative Architektur zum Einsatz. Der mit 180 MHz arbeitende LPC1830 ist mit externem Speicher ausgestattet und kann Code sowohl aus dem Arbeits- als auch aus dem Remanentspeicher beziehen.

Da JavaScript auf einer 180-MHz-CPU nur wenig Spaß macht, wird der Code vor dem Deployment per Colony in LUA umgewandelt. Auf der MCU rackert sodann ein LUA-Interpreter, der den Code nach bestem Wissen und Gewissen ausführt. Hardwarezugriffe erfolgen durch in C gehaltene native Methoden, die aus der LUA-Runtime heraus aufgerufen werden.

Meine Wenigkeit hatte im Rahmen eines Workshops auf der jsDay 2015 die Möglichkeit, etwas Zeit mit dem Tessel 1 zu verbringen. Es steht außer Frage, dass man einen Prozessrechner nach Betrachtung außerhalb eines Labors nicht komplett beschreiben kann. Betrachten Sie die folgenden Ausführungen als Produktvorstellung technischer Natur – ob des geringen Preises von rund 70 Euro spricht nur wenig gegen eigene Versuche.

Ab ins Node

Hätte Netscape den immensen Erfolg der im Navigator realisierten Programmiersprache voraussehen können, so hätte man JavaScript mit Sicherheit resilienter aufgebaut. Die Entwicklung von Tessel-Applikationen erfolgt – man glaubt es kaum – per Node.js. Unter aktuellen Versionen von Ubuntu beginnt die Installation wie in Listing 1.

Listing 1

tamhan@ubuntu:~$ sudo npm install -g tessel/usr/local/bin/tessel -> /usr/local/lib/node_modules/tessel/bin/tessel.js > usb@1.0.6 install /usr/local/lib/node_modules/tessel/node_modules/usb > node-pre-gyp install –fallback-to-build . . . INFO NOTE: Please run 'sudo tessel install-drivers' to complete your driver installation. ERR! could not write to /etc/udev/rules.d/85-tessel.rules TESSEL™ by TECHNICAL MACHINE™ tessel@0.3.23 /usr/local/lib/node_modules/tessel 

Falls es im Rahmen der Installation zum im Listing 1 gezeigten Fehler kommt, so müssen Sie die Treiberinstallation im nächsten Schritt per sudo nachholen:

tamhan@ubuntu:~$ sudo tessel install-drivers INFO udev rules installed to /etc/udev/rules.d/85-tessel.rules INFO Driver installation complete. Unplug and re-plug Tessel to begin using it. 

Nach dem Kauf eines neuen Prozessrechners folgt ein Firmwareupdate. Diese alte Binsenweisheit sollte Ihnen mittlerweile in Fleisch und Blut übergegangen sein, da die Platinen bei den Händlern oft wochenlang auf Halde liegen.

Die Aktualisierung des Betriebssystems ist unter anderem deshalb interessant, weil sie uns mit der Verwendung des tessel-Kommandos vertraut macht (Listing 2).

Listing 2

tamhan@ubuntu:~$ sudo tessel update TESSEL! Connected to TM-00-04-f000da30-00644342-3ab925c2. INFO Checking for latest firmware... INFO Wifi version is also outdated. INFO Downloading remote file https://builds.tessel.io/wifi/1.28.bin INFO Wifi patch uploaded... waiting for it to apply (10s) INFO Updating firmware... please wait. Tessel will reset itself after the update INFO Complete 1175988 /1175988 tamhan@ubuntu:~$ 

Lasset uns blinken

Nach diesen vorbereitenden Überlegungen sind wir zur Realisierung unseres ersten Tessel-Programms bereit. Erstellen Sie eine neue Datei namens blinky.js, die mit dem in Listing 3 gezeigten Code auszustatten ist.

Listing 3

// Import the interface to Tessel hardware var tessel = require('tessel'); // Set the led pins as outputs with initial states // Truthy initial state sets the pin high // Falsy sets it low. var led1 = tessel.led[0]...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang