Quand JavaScript rencontre le matériel : un nouveau mot dans l'embarqué
Quand on dit "développement embarqué", on pense généralement à du C, du métal nu, des insertions assembleur et des sessions de débogage interminables avec un oscilloscope. Imaginez maintenant que vous écrivez le firmware d'un capteur de température intelligent en utilisant TypeScript. Ça semble fantastique ? Et pourtant.
Le monde des systèmes embarqués connaît une révolution silencieuse. Les microcontrôleurs modernes disposent désormais de suffisamment de mémoire et de fréquence d'horloge pour exécuter des langages de script. Et TypeScript, avec son typage statique et son riche écosystème, devient un candidat idéal pour les projets embarqués où la fiabilité et la lisibilité du code sont importantes.
Dans cet article, nous verrons comment TypeScript pénètre le monde de l'embarqué, quels outils sont nécessaires, et nous écrirons du code réel pour contrôler une LED via GPIO. C'est parti !
Pourquoi TypeScript plutôt que C ou Python ?
Le choix classique pour l'embarqué est le C. Il est rapide, prévisible et consomme peu de mémoire. Mais il a un côté obscur : la gestion manuelle de la mémoire, l'absence de typage normal au niveau du compilateur et "l'enfer" des macros. Python (MicroPython) est plus simple, mais lent et dynamique — vous découvrirez le bug seulement à l'exécution, quand l'appareil se bloquera quelque part sur une étagère.
TypeScript offre un juste milieu :
- Typage strict — le compilateur détecte les erreurs à la compilation. Plus de
stringaccidentel à la place denumberdans les registres du microcontrôleur. - Syntaxe moderne — async/await, génériques, interfaces. Le code devient auto-documenté.
- Écosystème npm — des milliers de bibliothèques adaptables au matériel.
- Sécurité des types — vous savez exactement ce que vous passez à la fonction
setPin(17, HIGH), et nonsetPin("17", true).
Bien sûr, TypeScript ne remplacera pas le C pour les systèmes temps réel à forte charge. Mais pour les capteurs IoT, les ampoules intelligentes, les stations météo et les prototypes, c'est un choix idéal.
Outillage : ce qu'il faut pour commencer
Pour écrire du TypeScript pour le matériel, nous avons besoin d'un environnement d'exécution capable d'interpréter JavaScript sur un microcontrôleur. Les options les plus populaires :
- JerryScript — un moteur JS léger de Samsung. Occupe environ 1 Mo de Flash.
- Espruino — un firmware spécialisé pour STM32 et ESP32. Prend en charge TypeScript via transpilation.
- Moddable SDK — un framework IoT puissant avec support TypeScript "prêt à l'emploi".
Nous utiliserons Espruino sur une carte ESP32 (ou Raspberry Pi Pico avec le firmware Espruino). C'est le moyen le plus simple d'essayer TypeScript en embarqué sans fer à souder ni datasheets.
Installation et configuration
- Téléchargez le firmware Espruino pour votre carte depuis le site officiel.
- Flashez la carte via USB (utilisez l'utilitaire
esptoolpour ESP32). - Installez Node.js et npm, si ce n'est pas déjà fait.
- Installez
espruino-cliglobalement :npm install -g espruino-cli. - Créez un projet :
mkdir my-embedded-ts && cd my-embedded-ts && npm init -y. - Installez TypeScript :
npm install --save-dev typescript @types/espruino.
Vous avez maintenant un projet TypeScript qui connaît les types Espruino ! Créez un fichier tsconfig.json :
{ "compilerOptions": { "target": "ES2015", "module": "commonjs", "strict": true, "outDir": "./dist", "rootDir": "./src", "types": ["espruino"] }, "include": ["src/**/*"]}