Einführung ins Espruino-Board
Das Espruino-Board ähnelt dem Arduino, führt allerdings JavaScript-Code aus. Wer sich mit Node.js und Co auskennt, kann leicht in die Hardware-Programmierung einsteigen – sogar direkt aus dem Browser heraus.
![Grünes Board vor weißem Hintergrund.](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/1/1/8/4/3/6/1/Espruino_Seitenansicht_2-5e1b26ef6ef5fb25.jpeg)
(Bild: Espruino)
- Maik Schmidt
Eingebettete Systeme, die sich nicht nur in hardwarenahen Sprachen wie C und Assembler programmieren lassen, sind im Prinzip nichts neues. Viele PIC-Controller verstehen seit jeher Basic und auf leistungsstärkeren Geräten wie dem Raspberry Pi oder dem BeagleBone Black können Entwickler gleich aus den Vollen schöpfen und zum Beispiel Python oder JavaScript verwenden.
Gordon Williams wollte ein Mittelding schaffen und JavaScript auf stromsparenden und günstigen Mikrocontrollern zum Laufen bringen. Bereits 2012 hat er das Espruino-Projekt veröffentlicht und einen JavaScript-Interpreter angeboten, der auf ein paar populären Mikrocontroller-Boards funktionierte.
Die Software war nicht einfach zu installieren und auch nicht unter einer Open Source-Lizenz verfügbar, also nur als Binär-Download erhältlich. Dies und vermutlich die Ankündigung des Tessel-Boards standen einer weiteren Verbreitung im Weg und so startete Williams eine Kickstarter-Kampagne, in der er nicht nur ein spezielles Espruino-Board anbot, sondern auch die Freigabe des Quelltextes.
Die Hardware
Die Kampagne war erfolgreich und die handlichen Boards (54×41 mm) wurden vor wenigen Wochen ohne große Verzögerung ausgeliefert. Die Leistungsdaten des rund 30 Euro teuren Boards sind nicht üppig, erlauben aber eine große Bandbreite von Projekten.
Die Zentrale bildet eine ARM Cortex M3-CPU von STM32, die mit 72 MHz getaktet wird. Es stehen 48 KB RAM und 256 KB Flash-Speicher zur Verfügung und neben drei LEDs (rot, grün, blau) haben die Boards einen Micro-SD-Karten-Slot, zwei Drucktaster (einer dient als RESET-Schalter) und einen separaten Batterie-Anschluss (JST, 2 Pins).
Sehr erfreulich sieht die Lage auf Seiten der Ein-/Ausgabe-Pins aus, denn das Espruino-Board hat 44 GPIO-Pins. Davon eignen sich 26 zur Pulsweiten-Modulation (PWM) und 16 können analoge in digitale Signale umwandeln (ADC). Darüber hinaus gibt es drei USARTs und jeweils zwei SPI-, I2C- und DAC-Einheiten.
Der Aufbau der Platine eignet sich hervorragend für die prototypische Entwicklung von Schaltungen, denn alle Pins wurden nach außen geführt und es gibt sogar noch Platz für den Anschluss eines HC-05-Bluetooth-Moduls. Auch WLAN lässt sich mit dem TI CC3000 leicht nachrüsten.
Das Espruino-Board ist von Haus aus noch nicht sehr kontaktfreudig: Für erste Experimente empfiehlt es sich daher, Stiftleisten für die 40 GPIO-Pins an den Längsseiten des Boards anzulöten.
Ein Manko ist in der aktuellen Version die Verarbeitung des USB-Anschlusses, denn er ist nicht allzu belastbar und kann sich leicht lösen. Am besten steckt man dort einmalig ein Kabel ein und verbindet beziehungsweise trennt das Board dann nur noch auf der Seite des Host-Rechners. Das Problem ist bekannt und soll in einer überarbeiteten Version behoben werden.
Die Software
Auf dem Espruino-Board laufen ein JavaScript-Interpreter und ein ereignisgesteuertes System ähnlich dem von Node.js. Es ist sogar möglich, Node Packaged Modules auf dem Espruino zu verwenden.
Williams hat einen eigenen Interpreter namens TinyJS entwickelt, der mittlerweile Espruino JavaScript heißt. Die Implementierung ist minimalistisch, deckt aber so gut wie alle Aspekte des aktuellen Sprachumfangs ab. Auf der Webseite des Projekts gibt es eine vollständige Referenz aller Funktionen.
Das System ist auf möglichst geringe Speichernutzung ausgelegt und basiert nicht auf einer virtuellen Maschine, sondern auf einem rekursiv-absteigenden Parser. Somit wird Code, der innerhalb von Schleifen ausgeführt wird, automatisch etwas langsamer.