JavaScript ist eine der häufigsten verwendeten Sprachen - zumindest auf GitHub!
Da stellt man sich doch die Frage, warum man nicht auch Microcontroller mit JavaScript programmieren kann, wo die meisten Entwickler doch eh die Sprache kennen und können.

Es gibt gute Nachrichten! Neben ein paar Board-Plattformen wie Tessel.io(?) gibt es auch ein wunderbares Projekt namens Espruino(?), welches die wohl günstigsten Microcontroller "ESP8266" oder "ESP32" in die Lage versetzen JavaScript zu interpretieren. Dieses bietet eine Gelegenheit viele IOT-Geräten mit schon bestehenden Wissen zu entwickeln.

Hardware

Zum Entwickeln würde ich auf jeden Fall die NodeMCU Entwicklungsboards nutzen, da man diese leichter Flashen und erstmal mit USB anschließen kann.

Software

Espurino verfügt über eine eigene kleine IDE, welche das Programmieren von ESP8266 sehr bequem und einfach macht. Die IDE läuft als Browser App für Chrome und kann hier heruntergeladen werden: https://chrome.google.com/webstore/detail/espruino-web-ide/bleoifhkdalbjfbobjackfdifdneehpo

Um die kleinen ESP32 oder ESP8266 Chips zu flashen, empfehle ich das Python Tool esptool.py. Dafür müsst ihr Python installieren. Die Treiber für den ESP8266 für Windows gibts hier: http://www.wch.cn/download/CH341SER_ZIP.html

Die Anleitung zum Flashen gibts direkt auf Espurino:
https://www.espruino.com/ESP8266_Flashing oder https://www.espruino.com/ESP32 für den ESP32.

Wenn Ihr alles richtig gemacht habt, könnt ihr euch jetzt über die Espurino Web IDE  zu eurem ESP8266 oder ESP32 verbinden. Dazu oben links auf das gelbe Steckerkabel klicken. Als nächstes sagt die IDE auch schon Found ESP8266_BOARD, 2v03 .

Wenn Ihr den Befehlt reset() eintippt startet euer Chip neu und ihr seht auch noch mal die Willkommens-Meldung + System Informationen.

Bereit für Happy-Hacking

Und schon kann es losgehen und ihr könnt eure ersten Anwendungen schreiben.

Zum Beispiel könnt Ihr so eine WLAN-Verbindung aufbauen:

var wifi = require("Wifi");
// Verbindung mit dem WLAN herstellen
wifi.connect("WLAN-NAME", {password:"WLAN-PASSWORD"}, function(err){
  console.log("connected? err=", err, "info=", wifi.getIP());
});

Erzeugt folgendes Ergebnis, nach erfolgreicher WLAN-Verbindung:

Weitere klasse Beispiele gibt es hier im Blog!