In der JavaScript-Welt herrscht permanente Bewegung. Immer mehr Werkzeuge, Frameworks und Bibliotheken entstehen, die dem Entwickler die Arbeit vereinfachen. Dieser Artikel zeigt, wie JavaScript heutzutage auch bei der Hardware Entwicklung unterstützt. Die Skriptsprache JavaScript-Code läuft auf fast allen Geräten wie PC, Smartphone, Haushaltsgeräten und sogar Microcontrollern. Weboberflächen oder native Applikationen für mobile Endgeräte lassen sich durch die zahlreich verfügbaren Frameworks effizient entwickeln. Mit der beliebten JavaScript-Laufzeitumgebung Node.js, die auf Chromes V8 JavaScript-Engine basiert, lassen sich plattformunabhängige Server Applikationen erstellen. Da auf Frontend- und Backend-Seite die gleiche Programmiersprache verwendet werden kann, hat sich JavaScript vor allem in der IoT-Welt (Internet of Things) etabliert.

JavaScript ist beliebt
Die Sprache ist relativ einfach zu lernen und lässt viel Freiheit. Durch die weite Verbreitung und unzählig verfügbare Module aus der Community lassen sich auch komplexe Probleme schnell lösen. Dies führt zu Motivation und unterstützt den Entwickler, sein Ziel schnell zu erreichen. In JavaScript lässt sich je nach Bedarf objektorientiert, prozedural oder funktional programmieren.

JavaScript gilt heute als eine ernstzunehmende Programmiersprache
JavaScript wurde in den 90er Jahren als leichtgewichtige Skriptsprache für den Netscape-Browser entwickelt.  Einige Designschwächen stammen aus dieser Zeit, die bei den Entwicklern nicht gerade den besten Ruf hinterlassen haben. JavaScript wurde über die Jahre hin stark verbessert und wird heute stürmisch weiterentwickelt. Die Einführung des standardisierten Sprachkerns von JavaScript “ECMA Script” ermöglicht eine objektorientierte Syntax wie sie ähnlich auch bei klassenbasierten Programmiersprachen üblich ist. Die Einführung vom Klassensystem ES6+ ist einer der Hauptgründe der heutigen Beliebtheit. JavaScript-Applikationen lassen sich in eine bestehende Infrastruktur gut integrieren. Verteilte JavaScript-Applikationen verwenden zur Kommunikation oder zum Austausch von strukturierten Daten meist das kompakte Datenformat JSON (JavaScript Object Notation). Da für alle gängigen Programmiersprachen eine JSON Implementierung existiert, lassen sich JavaScript-Applikationen gut mit bestehende Applikationen verbinden. Die JavaScript Runtime Node.js ermöglicht es sogar, native C++ Addons vom Javascript Code aus über die N-API Schnittstelle zu verwenden.

Die Herausforderung eines Hardware Entwicklers
Hardware Entwickler stehen bei ihren Projekten meist vor den selben Herausforderungen. Nachdem die Anforderungen des Kunden „vollständig“ geklärt sind, gilt es, die Architektur der Schaltung zu entwerfen, die Key Components müssen gefunden und evaluiert werden. Die Arbeiten werden im Team verteilt, die Software Entwickler bekommen mitunter einen noch unbekannten Microcontroller vom Kunden vorgeschrieben. Sie besorgen sich alle nötigen Informationen zum ausgesuchten Controller, warten auf den notwendigen Debugger und eventuell noch auf die notwendige Lizenz dafür. Wenn es gut läuft, gibt es ein verfügbares Evaluation-Kit für den Controller und die erste Basis-Software kann auf die MCU (Microcontroller Unit) programmiert werden. Bis die ersten Schnittstellen für die externe Peripherie erstellt wurden, vergeht Zeit. In dieser Zeit müssen bereits vom Hardware Entwickler die ersten finalen Entscheidungen getroffen werden, z. B. welcher Sensor die Anforderungen erfüllt. Gerade bei neuen und unbekannten Modulen gilt es schnell die richtigen Kandidaten auszufiltern. Sprich, der Hardware Entwickler muss sich parallel zu den Kollegen aus der Software Abteilung zu helfen wissen und benötigt für seine Entscheidungen einen Prototypen-Aufbau, um die kritischen Schaltungsteile oder Module möglichst vorab testen zu können. Oft ist die Deadline für den ersten Prototypen knapp bemessen und somit bleibt für die Korrektur eines wesentlichen Schaltungsteils im ersten Muster wenig Zeit. Je mehr kritische Teile vorab auf ihre Tauglichkeit geprüft werden können, desto höher ist die Chance, dass der erste Wurf oder sogar das Projekt ein Erfolg wird.

Rapid Prototyping
Der Hardware Entwickler benötigt Tools um seine Schaltungsteile testen zu können. Dabei spielt der verwendete Microcontroller meist keine Rolle, oftmals müssen nur die üblichen seriellen Schnittstellen wie UART, I2C, SPI, RS485 oder CAN zur Verfügung stehen und einige Ein- und Ausgänge angesteuert werden können. Heutzutage gibt es leistungsfähige Microcontroller auf denen sogar JavaScript ausgeführt werden kann. Beliebte Microcontroller Boards auf Basis des ESP32 stammen von der Firma Espressif. Die Module beherbergen meistens zwei 32-Bit-Prozessorkerne des Typs Tensilica Xtensa LX6, die mit 160 MHz bis 240 MHz Taktfrequenz arbeiten.
Abb. 1: (Leiterplatte): Mouser Electronics Inc.

Ein komplettes Board, wie das ESP32WROOM, verfügt sogar über WLAN und Bluetooth und ist bereits für wenige Euro im Handel erhältlich. Als freie Entwicklungswerkzeuge stehen unter anderem die GNU Compiler Collection inkl. Toolchain zur Verfügung.

Der Microcontroller versteht JavaScript
Das Open Source Projekt Espruino stellt einen JavaScript Interpreter zur Verfügung der sogar auf kleinen, stromsparenden und Resourcen ärmeren Microcontrollern läuft. Es werden bereits zahlreiche Microcontroller verschiedener Firmen unterstützt aus den Reihen ESP32 (Espressif), STM32 oder NRF52832 (Nordic). Espruino ist eine Art „mini Node.js“ für Microcontroller und ermöglicht einen einfachen Zugriff auf die Hardware. Die kostenlose Web-IDE erleichtert den Einstieg.

Abb. 2: (Programm Screenshot): Pur3 Ltd (www.espruino.com)

Fazit
Die heutzutage erhältlichen Hard- und Software Tools vereinfachen das Rapid Prototyping enorm. Zur Steuerung lässt sich die Hardware leicht an eine Web-Oberfläche anbinden, da auf beiden Seiten die selbe Programmiersprache zum Einsatz kommen kann. Die unzähligen Open Source Projekte und Bibliotheken ermöglichen einen schnellen Einstieg in die Materie. Hardware Entwickler können komplexe Schaltungsaufgaben vorab in Betrieb nehmen ohne zu tief in die Microcontroller Welt eintauchen zu müssen, da die Programmierung auch mit einem einfachen visuellen Grafik Editor erfolgen kann.

Copyright by embeddeers GmbH

Quelle
Abbildung 1: (Leiterplatte): Mouser Electronics Inc. (www.mouser.de)
Abbildung 2: (Programm Screenshot): Pur3 Ltd (www.espruino.com)
Autor: Manuel Köcke