JavaScript dans le monde de l'Embedded : de l'ampoule à l'IoT
Quand on entend « systèmes embarqués » (embedded systems), on pense généralement aux langages C, C++ ou, à la rigueur, à Python sur Raspberry Pi. Mais si je vous disais que JavaScript — ce même langage avec lequel vous écrivez du frontend et du backend — s'infiltre de plus en plus dans le monde des microcontrôleurs, des capteurs et des appareils intelligents ?
Oui, vous avez bien entendu. Le développement Embedded en JavaScript n'est pas une blague, mais une tendance bien réelle qui prend de l'ampleur grâce à l'émergence de frameworks comme Espruino et Johnny-Five. Aujourd'hui, nous allons voir comment faire clignoter des LED, lire des données de capteurs et les envoyer vers le cloud — le tout en pur JavaScript.
Pourquoi JavaScript dans l'embedded ? Trois raisons majeures
Pourquoi amener un langage interprété dans un monde aux ressources limitées ? Voici trois arguments qui changent la donne :
- Faible barrière à l'entrée. Si vous connaissez déjà JS (et qui ne le connaît pas aujourd'hui ?), vous n'avez pas besoin d'apprendre le C ni de comprendre les pointeurs. Toute votre expérience — du frontend ou de Node.js — se transpose sur le matériel.
- Prototypage rapide. Écrire un firmware en JS peut se faire en une soirée. Pas besoin d'attendre la compilation, le reflashage — de nombreuses plateformes supportent le chargement en direct du code via Wi-Fi ou USB.
- Écosystème IoT. JavaScript s'intègre parfaitement dans l'architecture des appareils « intelligents » : vous vous connectez facilement à MQTT, HTTP, WebSockets et aux services cloud (AWS IoT, Google Cloud IoT).
Bien sûr, pour la production avec des exigences strictes en matière de consommation d'énergie et de vitesse, le C++ reste le roi. Mais pour les prototypes, les projets de loisir et les tâches éducatives, l'embedded JavaScript est une véritable aubaine.
Boîte à outils : avec quoi travaillons-nous
Avant d'écrire du code, choisissons le « matériel ». Les options les plus populaires pour l'embedded en JS :
- Espruino — un microcontrôleur qui comprend JavaScript « prêt à l'emploi ». Fonctionne sur STM32, avec un interpréteur JS directement intégré. Idéal pour l'apprentissage.
- Raspberry Pi Pico + Espruino — un microcontrôleur bon marché (seulement 4 $) sur lequel on peut flasher le firmware Espruino.
- Johnny-Five + Arduino — un classique. Vous écrivez du JS sur votre ordinateur, et Johnny-Five via le protocole Firmata contrôle l'Arduino. Convient à ceux qui ont déjà un Arduino.
- Node.js sur Raspberry Pi (Linux complet) — si vous avez besoin de plus que faire clignoter une LED, comme monter un serveur web, contrôler des GPIO et des caméras — prenez un Pi 4/5.
Dans cet article, nous nous concentrerons sur Espruino et Johnny-Five, car ils offrent l'expérience JS la plus pure sans couches superflues.
Écrire du code : faire clignoter une LED en JS
Commençons par le « Hello, World! » du monde embedded — une LED qui clignote. Connectez une LED (avec une résistance de 220 Ω) à la broche D13 sur Espruino (ou à la broche 13 sur Arduino).
Exemple 1 : Espruino (JS natif)
// Connecter la broche D13 en sortievar led = LED1; // LED intégrée sur Espruino
// Fonction de clignotementfunction blink() { led.toggle(); // Basculer l'état console.log('La LED est', led.read() ? 'ALLUMÉE' : 'ÉTEINTE');}
// Définir un intervalle de 500 mssetInterval(blink, 500);Chargez ce code via Espruino Web IDE (ou via le terminal). La LED commencera à clignoter à une fréquence de 1 Hz. Remarquez : nous utilisons setInterval — exactement comme dans un navigateur ou Node.js. Pas de registres, de timers ou d'interruptions en C — juste du JS.
Exemple 2 : Johnny-Five + Arduino
Si vous avez un Arduino, installez la bibliothèque Johnny-Five via npm :
npm install johnny-five