Les cartes Arduino sont aujourd'hui les modèles les plus répandus de cartes à microcontrôleur pour le prototypage de petits systèmes programmables. Elles constituent aussi un excellent support pour s'initier aux bases de la programmation impérative structurée. Avec des variables booléennes, on gère des composants simples (boutons, led, capteurs, relais, moteurs à courant continu…) et on peut déjà exploiter toutes les structures de contrôles du langage (if, for, etc.).

De plus, aucune limitation n'empêche d'aller beaucoup plus loin pour exploiter des composants assez élaborés (écrans LCD, claviers codés, passerelles domotiques, moteurs pas‑à‑pas…) et mettre en œuvre des programmes modulaires complexes de contrôle commande de systèmes temps‑réel.

Le logiciel de simulation en ligne de circuits électronique Tinkercad est une application web qui inclut dans sa panoplie divers composants programmables, notamment la carte Arduino Uno et le microcontrôleur Atmel ATtiny85C. Cet environnement permet de se passer complètement de matériel pour expérimenter des circuits programmables élémentaires, avec tous les avantages que cela comporte en termes de coût et de sécurité, mais aux approximations de simulation près.

De plus, Tinkercad fournit un environnement de programmation réduit au strict minimum, idéal pour débuter : un simple clic sur un bouton simule la chaîne de compilation, le téléchargement du programme sur la carte, et son exécution.

Ce chapitre a pour objectif de donner toutes les connaissances technologiques de base nécessaires pour débuter la programmation des cartes à microcontrôleur Arduino et compatibles. Sans surprise, les deux thèmes du titre sont développés chacun dans une section distincte.

  • On commence par l'univers Arduino, en détaillant successivement les aspects matériels – modèles de carte les plus populaires, y compris les cartes « tierces » à module Wi‑Fi ESP – et les aspects logiciels – essentiellement, le logiciel Arduino IDE (installation, prise en main, etc.).
  • On termine avec le logiciel de simulation Tinkercad, sa prise en main, ses nombreuses possibilités mais aussi ses limites.

L'univers Arduino

Bref historique

Les cartes Arduino sont des cartes électroniques de développement destinées au prototypage de systèmes de contrôle/commande A.

Inventées en Italie dans les années 2000 W, elles ont « démocratisé » aux amateurs et au monde éducatif la pratique des microcontrôleurs programmés en langage de haut niveau – le C++ (et non pas en langage d'assemblage, qui était usuellement employé auparavant).

Le succès des cartes Arduino tient à une stratégie commerciale audacieuse adoptée dès le départ par leurs concepteurs A :

  • Open‑source. Toutes les données techniques des cartes et les codes sources sont publiques et libres de droit, donc n'importe qui peut commercialiser des cartes, mais sans mentionner la marque Arduino.
  • Low‑cost. Une carte Arduino Uno R3 authentique coûte environ 20 € TTC, son équivalent chinois 3 €.
  • All‑inclusive. L'environnement de développement intégré Arduino IDE, inspiré des plateformes de développement Wiring W et Processing W, permet de programmer les cartes. Très facile à prendre en main, cette application intègre tous les outils essentiels de développement (édition de code avec auto‑complétion intelligente, fichiers sources et chaîne de compilation C++, protocoles de téléversement, gestionnaire de cartes et de bibliothèques, exemples types, moniteur série, etc.) ;
  • Online. Un site internet (cf. le lien [A↗] supra) regroupe tous les services gratuits indispensables pour les développeurs :
    • les liens de téléchargement des composants logiciels  ;
    • la documentation technique des cartes et des bibliothèques de fonctions ;
    • un éditeur de code en ligne, Arduino Web Editor, associé à un espace de stockage cloud qui est mis à la disposition de tout internaute ayant créé un compte.

Développement et concurrence

Rapidement s'est développé tout un écosystème de modules électroniques d'extension (Ethernet, Wi‑Fi, capteurs, cartes de puissance…) avec leur bibliothèques de fonctions appropriées, constituant un véritable framework W du langage C++.

C'est la richesse de cet écosystème qui rend les cartes Arduino si attractives.

Dans les années 2010, en même temps que la marque Arduino étoffait sa gamme de cartes A, des concurrents ont développé des architectures matérielles plus performantes. Certaines – Teensy , Wemos , NodeMCU W… – sont compatibles avec l'environnement de programmation Arduino, moyennant quelques adaptations (on parle de carte tierce, en anglais third‑party board). Bénéficiant d'un excellent rapport qualité/prix, elles rencontrent un grand succès de popularité

En réaction à cette concurrence, la marque Arduino a mis sur le marché en 2023 une nouvelle gamme de cartes plus performantes A.

Architecture de la carte Arduino Uno R3

Généralités

Toutes les cartes Arduino ou compatibles emploient un microcontrôleur W. Ce dernier peut différer d'un modèle de carte à l'autre.

Un microcontrôleur est un composant programmable qui intègre notamment :

  • un ou plusieurs microprocesseur(s) W (en anglais, central processing unit ou CPU) qui chacun constituent un cœur du microcontrôleur ;
  • des unités de mémoire de différents types (flash, SRAM, EEPROM…) pour stocker le programme embarqué, et les données exploitées en cours d'exécution ;
  • des circuits spécialisés pour assurer diverses tâches (bus de communication, convertisseur analogique numérique, etc.).

Pour chaque microcontrôleur, un compilateur C++ spécifique, au moins conforme à la norme C++11 a été développé. Ce sont ces compilateurs qui sont mis en œuvre par le logiciel Arduino IDE pour produire un code exécutable à partir du code source fourni par le programmeur.

  1. Les microcontrôleurs employés sur les cartes Arduino Uno, Mega, Nano – qu'on peut aujourd'hui qualifier d'« historiques » – n'ont qu'un seul cœur : il s'agit d'un cœur AVR W dont les performances peuvent sembler modestes en comparaison d'autres architectures plus récentes. Néanmoins, ces performances étaient excellentes au regard de leur prix lors de leur mise sur le marché.
  2. Contrairement à une carte de développement de type Raspberry Pi, une carte Arduino ne peut gérer qu'un seul programme embarqué à la fois. Ce n'est pas un ordinateur.

Caractéristiques de la carte et de son microcontrôleur

La carte Arduino Uno R3 (revision 3) est basée sur un microcontrôleur Atmel ATmega328P W qui se présente en boîtier DIP (dual inline package W) ou SMD (surface mounted device W) – cf. sa documentation technique .

Dans la gamme des cartes Arduino, c'est le modèle le plus vendu car il apporte un excellent compromis en termes de performances, de robustesse et de coût.

La carte Arduino Uno R3 a les caractéristiques suivantes A :

  • processeur ATmega328P à cœur AVR – architecture Harvard RISC 8 bits (il faut donc 4 temps d'horloge pour charger dans un registre de calcul un entier long codé sur 32 bits) ;
  • fréquence d'horloge 16 MHz (soit une période de 62,5 ns par opération sur le microcontrôleur) ;
  • mémoire flash (non volatile) pour le programme embarqué (code exécutable) de 32 ko ;
  • mémoire SRAM (volatile, statique) pour les données de 2 ko ;
  • mémoire EEPROM (non volatile) complémentaire pour les données 1 ko ;
  • port numérique d'entrées‑sorties 0 ‑ 5 V à 14 broches avec 1 led intégrée ; (pins 0‑13) dont 6 modulables (PWM) sur 8 bits (0-255) ;
  • convertisseur analogique numérique (CAN) unipolaire ajustable 5 V sur 10 bits (0‑1023), multiplexé sur un port à 6 broches (pins A0‑A5) ;
  • protocoles de communication embarqués UART, SPI, I2C ;
  • port USB type B qui combine alimentation et convertisseur pour liaison série via un microcontrôleur Atmel ATmega16U2 dédié et un circuit oscillant à quartz 16 MHz ;
  • prise d'alimentation externe 7 ‑ 12 V barrel jack ⌀5,5 × 2,1 mm.

Une carte Arduino Uno R3 coûte environ 20 €, pèse 25 g et mesure hors‑tout 69 × 54 mm.

Le plan de brochage (pinout) de la carte est disponible au lien suivant .

En réalité, le port analogique de la carte est polyvalent. Ses six broches A0 à A5 peuvent également faire office d'entrées‑sorties logiques (ou booléennes) – cf. le plan de brochage en lien ci‑dessus et le chap. C2‑VIII .

Interface matérielle pour l'utilisateur

L'interface matérielle utilisateur de la carte est minimale. Elle comporte (cf. photo supra) :

  • un bouton‑poussoir RESET et une broche éponyme associée RESET qui permettent, respectivement par appui ou par signal logique, de réinitialiser (c'est‑à‑dire reprendre au début) l'exécution du programme utilisateur ;
  • une led intégrée (built‑in LED) repérée L qui donne l'image du niveau logique de tension sur la broche 13 du port d'entrées‑sorties numériques ; cette led permet en particulier de tester un programme élémentaire de clignotement (blink) sans recourir à du matériel supplémentaire ;
  • d'autres led – ON TX RX – qui permettent de vérifier la mise sous tension de la carte et l'activité sur les broches de communication série avec le terminal de programmation.

Autres cartes Arduino

Il existe une trentaine de modèles de cartes Arduino authentiques, et plus d'une centaines de cartes compatibles W. Il n'est pas question de les détailler toutes ici, mais seulement quelques unes qui présentent un intérêt technologique au regard de leurs caractéristiques et performances.

La carte Arduino Nano

La carte Arduino Nano présente, par rapport à une carte Uno R3  :

  • des caractéristiques techniques et un coût comparables,
  • mais un encombrement beaucoup plus réduit.

Elle est donc privilégiée pour les systèmes embarqués.

En contre‑partie, sa petite taille la rend moins facile à manipuler et moins robuste à l'usage. Elle ne représente pas un choix pertinent pour les expérimentations usuelles en laboratoire.

Ses principales caractéristiques sont les suivantes A :

  • processeur Atmel ATmega328P SMD à cœur AVR (8 bits) ;
  • fréquence d'horloge 16 MHz ;
  • mémoire flash 32 ko (programme) ;
  • mémoire SRAM 2 ko (données) ;
  • mémoire EEPROM 1 ko ;
  • port numérique  5 V 14 broches (6 en PWM sur 8 bits) avec 1 led intégrée ;
  • CAN unipolaire ajustable 5 V 10 bits, 8 broches ;
  • protocoles UART, SPI, I2C ;
  • port USB mini A qui combine alimentation et convertisseur pour liaison série via un circuit intégré FTDI FT232RL W (avec oscillateur interne) ;
  • coût 20 €, poids 7 g, dimensions 45 × 18 mm.

Le plan de brochage (pinout) de la carte est disponible au lien suivant .

La carte Arduino Mega 2560

La carte Arduino Mega présente par rapport à une carte Uno R3  :

  • des volumes mémoires plus importants, tant pour le programme que les données,
  • des entrées‑sorties plus nombreuses dans toutes les catégories (numériques, analogiques, séries).

Un peu plus encombrante et plus chère, elle n'apporte en revanche aucun gain en vitesse d'exécution.

Dans sa version Rev3, ses principales caractéristiques sont les suivantes A :

  • processeur Atmel ATmega2560 SMD à cœur AVR (8 bits) ;
  • fréquence d'horloge 16 MHz ;
  • mémoire flash 256 ko (programme) ;
  • mémoire SRAM 8 ko (données) ;
  • mémoire EEPROM 4 ko ;
  • port numérique 5 V 54 broches (15 en PWM sur 8 bits) avec 1 led intégrée ;
  • CAN unipolaire ajustable 5 V 10 bits, 8 broches ;
  • protocoles UART (4 ports), SPI, I²C ;
  • port USB type B qui combine alimentation et convertisseur pour liaison série via un microcontrôleur Atmel ATmega 16U2 dédié et un circuit oscillant à quartz 16 MHz ;
  • connecteur d'alimentation externe 7 ‑ 12 V barrel jack ⌀5,5 × 2,1 mm ;
  • coût 35 €, poids 37 g, dimensions 102 × 54 mm.

Le plan de brochage (pinout) de la carte est disponible au lien suivant .

La carte Arduino Due

La carte Arduino Due présente par rapport à une carte Mega :

  • un encombrement et un coût identiques,
  • mais une capacité mémoire, une précision et une vitesse d'exécution significativement supérieures grâce un microcontrôleur plus performant.

En contre‑partie, son port numérique opère seulement à la tension de 3,3 V et ses ports USB micro sont moins robustes aux manipulations répétées.

Ses principales caractéristiques sont les suivantes A :

  • processeur Atmel SAM3X8E ARM Cortex‑M3 W SMD 32 bits ;
  • fréquence d'horloge 84 MHz ;
  • mémoire flash 512 ko (programme et données) ;
  • mémoire SRAM 96 ko (données) ;
  • port numérique 3,3 V 54 broches (12 en PWM sur 12 bits) avec 1 led intégrée ;
  • CAN unipolaire 3,3 V (non ajustable) 12 bits, 12 broches ;
  • CNA 0,6 - 2,7 V 12 bits (2 broches) ;
  • protocoles UART (5 ports), SPI, I²C, CAN ;
  • 2 ports USB micro B :
    • un port de programmation (le plus proche du connecteur d'alimentation externe), qui combine alimentation et convertisseur pour liaison série via un microcontrôleur Atmel ATmega16U2 dédié et un circuit oscillant à quartz 16 MHz ;
    • un port natif CDC W (communication device class) directement relié au microcontrôleur ; ce port permet notamment d'émuler et de communiquer avec des dispositifs de type clavier, souris, etc. A ;
  • connecteur d'alimentation externe 7 ‑ 12 V barrel jack ⌀5,5 × 2,1 mm ;
  • coût 35 €, poids 36 g, dimensions 102 × 54 mm.

Le plan de brochage (pinout) de la carte est disponible au lien suivant .

La nouvelle gamme de cartes Arduino à processeur 32 bits

En 2023, en réaction au succès grandissant des cartes à SoC Wi‑Fi, la marque Arduino a mis sur le marché une nouvelle gamme de cartes « grand public » dont on peut retenir les aspects suivants :

  • Elles conservent en grande partie les supports matériels de la gamme historique – mêmes formes et mêmes dispositions des connecteurs – pour rester compatibles avec tous les modules d'extension de l'écosystème Arduino.
  • Elles marquent un tournant en embarquant des microcontrôleurs à architectures ARM 32 bits, cadencés à des fréquences plus élevées et disposant de nettement plus de mémoire que ceux à architecture AVR 8 bits historiquement embarqués.

La carte Uno R4

Le modèle phare de cette nouvelle gamme est la carte Uno R4 qui se décline en deux variantes : la Minima et la WiFi.

  • Destinée à remplacer la Uno R3, la carte Uno R4 Minima A en adopte logiquement la même forme. Pour un prix un peu moins élevé (18 €), elle en améliore significativement les aspects suivants :
    • Elle embarque un microcontrôleur Renesas RA4M1 à architecture ARM Cortext M4 32 bits cadencé à 48 MHz avec 256 ko de mémoire flash (pour le code exécutable), et 32 ko de RAM.
    • En plus des fonctionnalités d'entrées‑sorties usuelles du modèle Uno R3 (cf. supra ), ce microcontrôleur dispose d'un CAN (convertisseur analogique numérique) dont la résolution peut être poussée à 14 bits, d'un CNA (convertisseur numérique analogique 12 bits et d'un bus CAN (controller area network).
    • La liaison avec le poste de travail est assurée par un connecteur USB micro C.
  • Quant à la carte Uno R4 WiFi A, à peine plus chère (25 €), elle vient en remplacement de la Uno WiFi Rev2 (qu'on trouvait encore en 2023 pour environ 50 €). En plus des caractéristiques de la Minima, on peut essentiellement citer les améliorations suivantes :
    • Pour assurer la connectivité Wi‑Fi et Bluetooth, elle embarque un module ESP32‑S3‑Mini‑1‑N8 (cf. supra ). De plus, ce module peut être programmé indépendamment du microcontrôleur principal grâce à un connecteur à broches Dupont mâles 3 × 2.
    • Elle possède une matrice de 12 × 8 led rouges sur sa face, qui se pilote facilement par le biais d'une bibliothèque logicielle.
    • Elle implémente une horloge temps‑réel qui peut être maintenue en veille même quand la carte est éteinte via une broche dédiée (VTRC).
    • Elle dispose d'un connecteur Qwiic qui facilite grandement sa liaison par bus  I²C à tout un écosystème de capteurs (cf. ce lien commercial à titre d'exemple ).

Autres nouvelles cartes (Nano, Giga…)

Dans la même philosophie, la marque Arduino propose également les nouvelles cartes suivantes.

  • Pour les applications embarquées, la Nano ESP32 A (18 €), qui vient en remplacement de la traditionnelle Nano.
  • Son microcontrôleur principal est un ESP32‑S3 avec les connectivités Wi‑Fi et Bluetooth (cf. supra ).
  • Pour les applications exigeantes en performances (vitesse, mémoire), la Giga R1 WiFi A (69 €), qui vient en remplacement de la Due.
    • Son microcontrôleur est un STM32H747XI à double cœur ARM Cortex M7 et M4, cadencés respectivement à 480 et 240 MHz.
    • Elle embarque également un chipset Murata 1DX qui assure les connectivités Wi‑Fi et Bluetooth.

Cartes tierces à module Wi‑Fi

Avec l'essor de l'Internet des objets W (Internet of things, abrégé IoT), certains fabricants de puce ont développés des circuits intégrés dits SoC – sigle anglais signifiant system‑on‑chip – qui associent un microcontrôleur à une antenne Wi‑Fi.

C'est notamment le cas du fabricant chinois Espressif qui a développé les gammes de modules à microcontrôleur ESP8266  W et ESP32 W – cf. le module ESP‑32S en photo ci‑contre, dont l'antenne est apparente et dont le microcontrôleur est protégé par un blindage.

Les microcontrôleurs ESP8266 et ESP32 sont basés sur des processeurs intégrés Xtensa à architecture RISC 32 bits conçus par l'entreprise californienne Tensilica W (cf. le microcontrôleur ESP32 en photo ci‑contre). La plupart sont fabriqués par des sous‑traitants comme le Taïwanais TSMC W.

Ces microcontrôleurs sont programmables dans divers langages comme Lua W (avec le firmware NodeMCU – pour microcontroller unit), Python (avec le firmware MicroPython)… et en C++ via l'environnement Arduino.

Plus en détails, un module ESP est essentiellement constitué, en plus de son microcontrôleur, d'un oscillateur à quartz, d'une unité de mémoire flash externe et d'une antenne Wi‑Fi – cf. le module ESP‑12F à microcontrôleur en photo ci‑contre avec et sans son blindage.

De plus, la plupart des modules à microcontrôleur ESP8266 embarquent une led intégrée.

Dans le commerce, on trouve aussi toutes sortes de cartes de développements (development kit) qui embarquent un module à microcontrôleur ESP8266 W ou ESP32. Les deux exemples décrits ci‑dessous sont typiques de ceux que l'on peut utiliser en prototypage d'objets connectés.

La carte de développement Joy‑It SBC‑NodeMCU (ESP8266)

À peine plus grande qu'une Arduino Nano, la carte SBC‑NodeMCU  de l'assembleur allemand Joy‑It présente des caractéristiques nettement supérieures, et pour un prix deux fois moindre :

  • microcontrôleur ESP8266 à processeur Tensilica Xtensa LX106 32 bits embarqué dans un module ESP‑12E  ;
    • fréquence d'horloge jusqu'à 160 MHz ;
    • mémoire flash interne 96 ko (programme) ;
    • mémoire SRAM 64 ko (données) ;
    • mémoire flash externe 4 Mo ;
    • module Wi‑Fi 2,4 GHz normes 802.11 b/g/n
    • port d'entrées‑sorties polyvalent (GPIO) 16 broches en 3,3 V  :
      • CAN ajustable sur 10 bits, 1 broche ;
      • 16 broches PWM sur 10 bits ;
      • bouton‑poussoir (« flash ») et 2 led intégrés (tous câblés en logique négative) ;
      • protocoles UART, SPI, HSPI, I²C, SDIO ;
  • port USB micro B qui combine alimentation et convertisseur pour liaison série via un ASIC Silicon Labs CP2102  (à oscillateur interne 48 MHz) ;
  • coût 10 €, poids 8 g, dimensions 49 × 26 mm.

Le plan de brochage de la carte (pinout) est disponible au lien suivant .

La carte de développement Joy‑It NodeMCU ESP32

Un peu plus grande que la SBC‑NodeMCU présentée supra , la carte NodeMCU ESP32  de la même marque Joy‑It a des caractéristiques encore supérieures, pour un prix à peine plus cher :

  • microcontrôleur ESP32 à processeur Tensilica Xtensa LX6 32 bits double cœur embarqué dans un module ESP‑WROOM‑32 (wireless room) ;
    • fréquence d'horloge jusqu'à 240 MHz ;
    • mémoire flash 4 Mo (programme) ;
    • mémoire SRAM 512 ko (données) ;
    • module Wi‑Fi 2,4 GHz normes 802.11 b/g/n ;
    • module Bluetooth classic et LE (low energy) ;
    • port d'entrées‑sorties polyvalent (GPIO) 16 broches en 3,3 V  :
      • CAN ajustable sur 12 bits, 15 broche ;
      • CNA sur 8 bits, 2 broche ;
      • 16 broches PWM sur 16 bits ;
      • bouton‑poussoir (« boot ») et 2 led intégrés (tous câblés en logique négative) ;
      • protocoles UART (2), SPI, VSPI, I²C, SDIO ;
  • port USB micro B qui combine alimentation et convertisseur pour liaison série via un ASIC Silicon Labs CP2102 (à oscillateur interne 48 MHz) ;
  • coût 12,5 €, poids 8 g, dimensions 48 × 38 mm.

Le plan de brochage de la carte (pinout) est disponible au lien suivant .

  1. L'implémentation du convertisseur USBUSART (cf. chap. C3‑X ) par un ASIC W (application‑specific integrated circuit) nécessite parfois l'installation d'un pilote sur le système d'exploitation du poste de travail utilisé comme terminal de programmation. C'est en particulier le cas avec Microsoft Windows ou Mac OS pour des ASIC comme :
    • les CH340  du fabricant chinois WCH ; le pilote pour Windows peut être téléchargé au lien suivant  et celui pour Mac OS ici  ;
    • les CP210x  du fabricant californien Silicon Labs ; les pilotes peuvent être téléchargés au lien suivant .
  2. Sur un poste de travail à système Linux, la compilation et le téléversement d'un programme sur une carte à module ESP32 peut poser des difficultés, parce que le composant logiciel pySerial W n'est pas installé ou pas reconnu.
  3. Une solution consiste à exécuter dans un terminal Bash les commandes en ligne suivantes :
    	
    sudo apt install python-is-python3
    sudo apt install python3-serial

Le microcontrôleur Atmel ATtiny85

Dans son boîtier DIP 8 broches, le microcontrôleur Atmel ATtiny85 constitue une solution matérielle minimale en prototypage pour exécuter un programme Arduino.

Très peu encombrant, sobre en énergie, très économique, il remplace avantageusement une carte Nano lorsque peu d'entrées‑sorties sont requises.

Par absence de port USB, un montage ad hoc ou une carte spécifique de programmation avec un convertisseur USB‑série (cf. la photo ci‑dessous) est nécessaire pour téléverser le programme via le logiciel Arduino IDE.

Les caractéristiques de ce microcontrôleur sont les suivantes (plusieurs valeurs selon le modèle)  :

  • architecture Harvard 8 bits ;
  • fréquence d'horloge 10 ou 20 MHz ;
  • mémoire flash 2 à 8 ko (programme) ;
  • mémoire SRAM 128 à 512 o (données) ;
  • mémoire EEPROM 128 à 512 o ;
  • port d'entrées‑sorties polyvalent (GPIO) 6 broches :
    • CAN ajustable 5 V sur 8 ou 10 bits, 4 broches ;
    • port numérique 5 V, 6 broches (3 en pwm sur 8 bits) ;
    • protocoles UART, SPI, I²C.
  • coût 2 €, poids 1 g, dimensions 10 × 7 mm.

Le plan de brochage (pinout) du microcontrôleur est disponible au lien suivant .

L'environnement intégré de développement Arduino IDE

Arduino IDE (integrated development environment) est un logiciel libre (licence GNU GPL version 2 W) et multiplateforme (Windows, Linux, MacOS) pour programmer les cartes Arduino et compatibles.

La première version stable de la branche 2.x a été publiée en septembre 2022. Par rapport à la branche initiale 1.x, son interface utilisateur présente plusieurs améliorations significatives, notamment un mode sombre et une auto‑complétion intelligente W).

Développé principalement en langage Java, le logiciel Arduino IDE s'exécute sur la machine virtuelle JRE (Java Runtime EnvironmentW.

Cette solution logicielle assure une excellente portabilité. Ainsi, le logiciel Arduino IDE fonctionne sur n'importe quel poste de travail dès lors que la machine virtuelle JRE est installée et opérationnelle.

Installation d'Arduino IDE 2.x 

Comme pour la plupart des logiciels multiplateforme, il est conseillé d'effectuer le téléchargement depuis la page web dédiée de l'éditeur, ici A pour l'IDE Arduino.

Quant à l'installation, la procédure est très différente selon le système d'exploitation :

  • Sur un poste de travail fonctionnant sous Windows, elle ne pose aucune difficulté. Il suffit de se laisser guider par la procédure d'exécution de l'utilitaire d'installation – en anglais, setup.
  • Sur un poste de travail fonctionnant sous Linux en revanche, la procédure nécessite une certaine expertise. Deux possibilités existent :
    • l'utilisation d'un fichier d'application monolithique dit appimage – solution qui a l'avantage d'être portable sur un support amovible (clef USB), mais en contre‑partie peu modulaire ;
    • l'utilisation d'un fichier d'archive – solution classique qui nécessite l'exécution d'un script de commandes (lequel malheureusement n'est pas fourni).

Pour une installation classique sur un poste de travail à système Linux, on recommande de suivre la procédure décrite ci‑dessous en exécutant, dans un terminal, les commandes fournies pour chaque étape.

  1. Dans le dossier Téléchargement, on télécharge le fichier d'archive .zip depuis la page de téléchargement supra, on le déplace dans le répertoire /opt réservé aux applications optionnelles et on procède à son extraction.
  2.   
    cd /home/elv/Téléchargements
    wget https://downloads.arduino.cc/arduino-ide/arduino-ide_2.3.2_Linux_64bit.zip -O arduino-ide_2.3.2.zip
    sudo mv arduino-ide_2.3.2.zip /opt && cd /opt
    sudo unzip arduino-ide_2.3.2.zip && sudo rm arduino-ide_2.3.2.zip
    sudo mv arduino-ide_2.3.2_Linux_64bit arduino-ide_2.3.2
    Cette étape de décompression constitue l'essentiel de la procédure d'installation. Dans le dossier /opt/arduino-ide_2.3.2 se trouve le fichier exécutable de l'application, nommé arduino-ide. Il ne reste que quelques petits ajustements à effectuer, spécifique au système Linux.
  3. Pour pouvoir téléverser des programmes sur les cartes Arduino, on donne à l'utilisateur le droit d'opérer sur les ports USB du poste de travail, en le faisant entrer dans le groupe dialout.
  4.   
    sudo usermod -a -G dialout elv
  5. Pour pouvoir facilement lancer l'application depuis un terminal, on crée un lien symbolique du fichier exécutable de l'application Arduino IDE dans le répertoire usuel des fichiers binaires – lien que l'on nomme simplement arduino et auquel on confère le droit d'être exécutable par tous les utilisateur.
  6.   
    sudo ln -s /opt/arduino-ide_2.3.2/arduino-ide /usr/bin/arduino2
    sudo chmod +x /usr/bin/arduino2
  7. Pour pouvoir lancer l'application depuis un raccourci du bureau, on crée un lanceur d'application dans le répertoire dédié :
  8.   
    sudo nano /usr/share/applications/Arduino-IDE-2.desktop
    et, dans l'éditeur de texte nano, on y copie/colle (avec les commandes du menu contextuel de la souris, accessibles par clic‑droit) le code ci‑dessous :
    [Desktop Entry]
    Type=Application
    Name=Arduino IDE 2.3.2
    GenericName=Arduino IDE 2.3.2
    Comment=Open-source electronics prototyping platform
    Exec="/usr/bin/arduino2"
    Icon=/usr/share/icons/Mint-Y/apps/32/arduino.png
    Terminal=false
    Categories=Development;IDE;Electronics;
    MimeType=text/x-arduino;
    Keywords=embedded electronics;electronics;avr;microcontroller;
    StartupNotify=true
    StartupWMClass=Arduino IDE
    
    On sauvegarde ces modifications (Ctrl-S) et on quitte (Ctrl-X) l'éditeur.
    Pour prendre en compte les modifications précédentes, il n'est pas nécessaire de redémarrer le poste ; il suffit simplement de se déconnecter puis se reconnecter.
    Via le menu principal de Linux Mint, on retrouve alors ce lanceur d'application en tapant « Arduino » dans la barre de recherche. Avant de l'exécuter, faire un clic‑droit et sélectionner la commande ajouter au panneau pour placer son raccourci dans la barre inférieure du bureau.
  9. Lors de la toute première exécution, le logiciel Arduino IDE procède à certaines tâches complémentaires d'installation qui prennent un peu de temps. En particulier, il télécharge de nombreux fichiers qu'il place dans les répertoires cachés .arduino15 et .arduinoIDE du répertoire maison de l'utilisateur. Cela signifie que durant cette étape, la connexion Internet du poste de travail doit être opérationnelle.
  10. Remarque. Si l'application Arduino IDE était déjà sur le poste de travail et que l'installation est en fait une mise à jour, la procédure ci‑dessus garantit la conservation de toutes les cartes et bibliothèques préalablement installées par chaque utilisateur. En effet, ces composants logiciels sont stockés dans les répertoires .arduino15 qui ne sont pas touchés.

Les fichiers sources du framework et la documentation

Dans une installation par défaut, le logiciel Arduino IDE comprend en libre accès dans le répertoire .arduino15 tous les fichiers sources du framework qui sont nécessaires pour mettre en œuvre des cartes Arduino à cœur AVR (cf. supra ), à savoir :

  • les fichiers sources fondamentaux qui constituent ce qu'on appelle le noyau (en anglais, core) du framework Arduino ;
  • les fichiers sources de quelques modules de bibliothèque usuels, qui sont très utiles pour employer des composants matériels périphériques : shield Ethernet, écran LCD, capteurs, etc.

Ces fichiers sont codés en langage C++ pour s'adapter, par des instructions de haut niveau, à toute une famille de cartes Arduino : Uno R3 , Nano, Mega, etc.

Les modules de bibliothèque Arduino fournissent au codeur des types, des classes, des constantes (ou pseudo‑constantes) et des fonctions spécifiques, faciles à employer :

  • tous ces éléments de langage sont documentés sur le site internet Arduino A ;
  • leurs fichiers sources sont également partagés et consultables en libre accès sur la plateforme Github A.
  • (En particulier, on trouve au lien suivant G – également référencé dans l'onglet « LIENS » du panneau latéral de ce site de cours – tous les fichiers du noyau pour les cartes à cœur AVR.)

Pour accéder à la documentation technique des cartes tierces (cf. supra ), il faut consulter d'autres sites. En particulier, pour les pages de références logicielles des cartes à SoC ESP8266, on pourra consulter ce lien .

Les chaînes de compilation

Par défaut, le logiciel Arduino IDE incorpore dans le répertoire .arduino15 une chaîne de compilation GCC (cf. chap. CI‑2 ) spécifiquement développée pour les microcontrôleurs des cartes Arduino à cœur AVR (Uno R3 , Nano, Mega…).

Le fichier pilote de cette chaîne de compilation est nommé  avr-g++, conformément à la nomenclature usuelle de GCC.

Si l'on souhaite programmer une carte Arduino d'un autre type (pour une carte Due, à microcontrôleur à cœur ARM), il est nécessaire d'installer préalablement non seulement la chaîne de compilation adaptée, mais aussi le noyau du framework et éventuellement les bibliothèques spécifiques à ce type de carte.

Avec l'IDE Arduino, il n'est pas possible de choisir la version de la norme (cf. chap. C1‑II ) du langage C++ qui est appliquée lors de la compilation. Néanmoins, on peut savoir quelle est cette version en codant le programme ci‑dessous :

void setup()
{	
  Serial.begin(115200);
  Serial.println(__cplusplus);
}

void loop() {}

En compilant et téléversant le code dans une carte Arduino Uno R3 , on obtient dans la fenêtre du moniteur série l'affichage 201103. La chaîne de compilation pilotée par avr-g++ est donc en principe conforme à la norme C++11.

L'interface utilisateur

En version 2.x, l'interface utilisateur du logiciel Arduino IDE reste assez simple. Elle présente (cf. la figure ci‑dessous) :

  • une barre de 5 menus déroulants très classiques (Fichiers, Éditions, etc.) ;
  • une barre avec 5 boutons de raccourcis vers les commandes les plus usuelles (vérification du code, compilation et téléversement, moniteur série, etc.) ;
  • un cadre principal d'édition de code source multi‑onglets, avec une coloration syntaxique minimale ;
  • sous le cadre principal, un cadre multi‑fonctions, également multi‑onglets, avec par défaut le compte‑rendu (output console) de compilation et téléversement .

Lorsqu'on clique sur le bouton d'activation du moniteur série (serial monitor), un deuxième onglet s'ouvre automatiquement dans le cadre multi‑fonctions. Il émule un terminal d'entrées‑sorties textuelles entre le poste de travail et la carte à microcontrôleur qui lui est raccordée.

Quant au bouton juste à gauche, il permet d'activer dans une fenêtre graphique supplémentaire le traceur série (serial plotter). On y trouve en abscisses une échelle de temps et en ordonnée l'échelle des valeurs numériques en sortie sur le port série de la carte. Les variations de ces valeurs sont tracées en temps‑réel.

Avertissements de compilation

En version 2.x, comme dans les versions précédentes, la commande Préférences du menu Fichier ouvre une fenêtre de paramétrage avec, dans l'onglet Settings (ouvert par défaut).

On y trouve :

  • des cases à cocher pour afficher les résultats détaillés de la compilation et du téléversement du programme dans la carte ; il est recommandé de cocher ces cases pour pouvoir diagnostiquer les problèmes en cas d'échec ;
  • juste en dessous, un menu déroulant pour choisir les avertissements du compilateur (il correspond à l'option -W de la commande gcc – cf chap. C1‑II ) ; là encore, il est recommandé de choisir l'exhaustivité, c'est‑à‑dire l'option All.

Emploi d'un éditeur de code externe

En version 2.x, contrairement aux versions précédentes, il n'est plus nécessaire de cocher une case de la fenêtre de préférences pour pouvoir recourir à un éditeur de code externe pour l'édition d'un fichier source déjà ouvert avec Arduino IDE. Toute modification du fichier est immédiatement répercutée dans la fenêtre d'édition dès qu'elle est sauvegardée.

L'emploi d'un éditeur de code externe plus performant, comme Sublime Text ou VS Code, devient d'autant plus pertinent que le programme développé est complexe et réparti sur un grand nombre de fichiers. On peut alors bénéficier d'une coloration syntaxique avancée et des outils de navigation et de re‑factorisation de cet éditeur tout en gardant l'usage de la chaîne de compilation et de téléversement fourni par Arduino IDE, qui n'est pas facile d'installer sur un éditeur externe.

Le gestionnaire de bibliothèques

Dans les version 2.x d'Arduino IDE, par rapport aux versions précédentes, l'ergonomie du gestionnaire de bibliothèques est améliorée. Il est accessible par un raccourci dans la colonne de boutons à gauche de la fenêtre principale et s'ouvre dans un panneau latéral (cf. la capture d'écran ci‑contre).

Pour installer un module de bibliothèque référencé, le plus simple est de taper son nom dans la barre de recherche. Si le texte tapé contient un mot coïncidant avec celui d'un module existant dans la base de donnée des modules référencés Arduino, il est alors proposé à l'installation. Il suffit de cliquer sur le bouton  INSTALL.

Attention ! Pour un même thème ou un composant donné, il existe très souvent de nombreux modules de bibliothèque. Pour ne pas les confondre et savoir lequel est requis par un programme donné, on peut s'aider du nom des auteurs comme élément d'identification.

Un panorama des modules de bibliothèques les plus usuels est proposé au chapitre C4‑VII 

Le gestionnaire de cartes

À l'instar du gestionnaire de bibliothèques, dans les version 2.x d'Arduino IDE, par rapport aux versions précédentes, l'ergonomie du gestionnaire de cartes est également améliorée, avec un raccourci placé dans la colonne de boutons à gauche de la fenêtre principale et s'ouvre dans un panneau latéral (cf. la capture d'écran ci‑contre).

Pour installer la chaîne de compilation et les fichiers de bibliothèques du noyau d'une type particulier de cartes (par exemple, une Due – cf. supra), le plus simple est de taper le nom de ce type dans la barre de recherche. Si le texte tapé contient un mot reconnu par le moteur de recherche associé à la barre, un ou plusieurs types de cartes sont proposés à l'installation. Il suffit de choisir celui voulu en cliquant sur le bouton  INSTALL.

En plus des cartes Arduino usuelles (ou de leurs clones), il est possible avec Arduino IDE d'installer des cartes tierces (cf. supra ). Toutefois, elles ne sont pas répertoriées par défaut par le gestionnaire de cartes.

Pour y remédier, il suffit d'ajouter une URL spécifique à chaque type de cartes tierces dans la fenêtre de préférences (menu Fichier), dans la barre prévue à cet effet (cf. la capture d'écran ci‑dessous). Elle pointe vers un fichier au format JSON qui lui‑même contient, pour chaque modèle de cartes, une URL pointant vers un fichier d'archive contenant la chaîne de compilation adaptée à ce modèle.

Les URL données ci‑dessous permettent au gestionnaire de cartes de référencer les familles de cartes les plus courantes :

  • cartes à module ESP8266 (cf. supra.  et G) :
    https://github.com/esp8266/Arduino/releases/download/3.1.2/package_esp8266com_index.json
  • cartes à module ESP32 (cf. supra.  et G) :
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  • cartes Teensy du fabricant américain PJRC  :
    https://www.pjrc.com/teensy/package_teensy_index.json
  • microcontrôleurs ATTiny du fabricant américain Atmel W :
    https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json

Une fois que le type de cartes tierces est référencé par le gestionnaire de cartes, l'installation peut être effectuée comme pour n'importe quel autre type de cartes Arduino. Attention, une telle opération prend une durée non négligeable (plusieurs minutes), puisqu'il faut télécharger et installer sur le poste de travail toute la chaîne de compilation nécessaire pour les programmer.

Le logiciel Arduino en ligne de commande

En alternative à Arduino IDE, on peut exploiter les cartes Arduino et compatibles via une application en ligne de commande nommée Arduino CLI A – pour command line interface.

Éventuellement exploitée par une minorité d'utilisateurs experts, cette solution a surtout été développée pour permettre d'interfacer les fonctionnalités Arduino dans des IDE généralistes comme par exemple VS Code (cf. infra ).

On trouve tous les détails nécessaires à l'installation et la prise en main d'Arduino CLI à partir du fichier README.md publié sur la page d'accueil Github suivante G.

Prise en charge d'Arduino dans VS Code

Grâce à diverses extensions, le logiciel VS Code (cf. chap. C1‑II ) peut prendre en charge le framework Arduino, non seulement pour l'édition de code source – avec les fonctionnalités IntelliSense – mais aussi pour toutes les fonctionnalités d'Arduino IDE : téléversement du programme, moniteur série, gestionnaire de cartes, etc.

Il existe principalement deux alternatives pour la prise en charge d'Arduino dans VS code :

  • On peut installer l'extension Arduino Community Edition qui fait suite à celle développée par Microsoft mais supprimée du marché (deprecated) en octobre 2024. Correctement paramétrée, cette extension apporte toutes les fonctionnalités attendues pour programmer des cartes Arduino et compatibles. C'est la solution la plus simple, donc recommandée pour les débutants.
  • On peut installer l'extension PlateformIO , qui permet d'intégrer dans VS Code l'accès à la plateforme de développement éponyme de systèmes embarqués. Cette solution est très populaire car elle ne se limite pas à la prise en charge des cartes Arduino (on peut aussi programmer avec des microcontrôleurs PIC ). Toutefois, elle présente l'inconvénient d'être plus complexe dans sa mise en œuvre que l'extension Arduino Community Edition.

L'extension Arduino Community Edition

L'extension Arduino Community Edition émule toutes les fonctionnalités d'Arduino IDE sans nécessiter que cette application soit installée sur le poste de travail. Pour cela :

  • elle intègre une version spécifique d'Arduino CLI (cf. supra ) dite bundle – c'est‑à‑dire groupée avec l'extension.
  • elle exploite une autre extension nommée Serial Monitor (développée par Microsoft) pour mettre en œuvre les communications série entre une carte Arduino et le poste de travail, qui sont indispensables pour le téléversement de programmes.

L'installation ne pose aucune difficulté, il suffit de procéder comme pour toute extension via le Marketplace en cliquant sur le bouton bleu Install (cf. chap. C1‑II ). L'extension Serial Monitor est automatiquement installée dans la foulée.

Une fois l'extension installée, avant toute prise en main, il est recommandé d'activer la fonctionnalité Arduino CLI intégrée dans l'extension. Pour cela, on peut par exemple faire un clic‑droit sur l'extension listée dans le panneau latéral et, dans le menu contextuel ainsi ouvert, choisir Settings. Il suffit alors de cocher la case correspondant à l'option idoine, comme sur la capture d'écran ci‑dessous.

Ce choix est alors enregistré dans le fichier de préférences settings.json de l'utilisateur par la ligne de code :
"arduino.useArduinoCli": true
sachant qu'on peut aussi directement coder cette ligne pour effectuer le même réglage.

Quant à la prise en main, elle est assez simple, à condition de bien respecter l'ordre des opérations comme indiqué ci‑après.

  1. Pour commencer, il faut créer un répertoire de projet ; à titre d'exemple de démonstration, partons sur un classique HelloWorld. On peut alors ouvrir ce répertoire via la commande File/Open Folder….
  2. Dans ce répertoire, via la commande File/New File… on crée un nouveau fichier qui, conformément aux usages dans le framework Arduino (cf. chap. C2‑I ), doit impérativement :
    • être homonyme avec le répertoire de projet (same basename) ;
    • avoir l'extension .ino.
    donc dans notre exemple HelloWorld.ino. Typiquement, on peut y coder le programme suivant :
    void setup()
    {	
      Serial.begin(115200);
      Serial.println("Hello, World!");
    }
    
    void loop() {}
    
    Remarque : par son extension .ino, ce fichier est automatiquement identifié par VS Code comme un fichier source Arduino. Lors de la première prise en main du logiciel, Une fenêtre pop‑up en bas de la fenêtre principale propose alors d'installer un pack d'extensions C/C++, mais ce n'est pas indispensable.
  3. Via la palette de commande (activée par la touche F1), il est alors impératif de lancer la commande Arduino: Initialize. Elle crée automatiquement dans le répertoire de projet un sous‑répertoire .vscode et, dans ce dernier, un fichier nommé arduino.json où le fichier principal du programme (le sketch) est identifié. Dans notre exemple, on a :
    "sketch": "HelloWorld.ino"
  4. Dans la barre de notifications en bas de la fenêtre principale, on remarque maintenant que plusieurs éléments de texte sont apparus, notamment une zone interactive :
    Select Board Type
    En cliquant dessus, on active un menu déroulant où l'on peut sélectionner le type de carte Arduino sur lequel on veut exécuter le programme. Sans même raccorder de carte au poste de travail, on peut faire ce choix, par exemple sélectionner le type Arduino Uno.
  5. Cette action crée automatiquement dans le sous‑répertoire .vscode un fichier nommé c_cpp_properties.json qui configure la fonctionnalité IntelliSense, que l'on peut alors tester en survolant avec le pointeur de la souris les différents identificateurs du programme (setup, loop, Serial…) : des informations sur ces éléments doivent automatiquement s'afficher.
    De plus, cette action ajoute automatiquement deux lignes dans le fichier arduino.json, précisant les valeurs respectives des paramètres "configuration" et "board".
  6. On peut dès lors vérifier que le code est compilable avec la commande Arduino: Verify accessible via la palette de commande ou le bouton de raccourci spécifique aux fichiers .ino en haut à droite de la fenêtre d'édition (cf. la figure ci‑contre).
  7. Ce faisant, le compte‑rendu de compilation s'affiche dans l'onglet OUTPUT sous la fenêtre d'édition.
  8. Raccorder au poste de travail une carte du type choisi et, toujours dans la barre de notifications, cliquer sur la zone interactive :
    Select Serial Port
    Cette action ouvre un menu déroulant dans lequel on doit choisir le port USB du poste de travail sur lequel la carte est raccordée. Elle ajoute automatiquement dans le fichier arduino.json une ligne précisant la valeur du paramètres "port".
  9. On peut dès lors téléverser le programme exécutable dans la carte avec la commande Arduino: Upload accessible via la palette de commande ou le bouton de raccourci en haut à droite de la fenêtre d'édition (cf. la figure ci‑contre).
  10. Ce faisant, le compte‑rendu de téléversement s'affiche dans l'onglet OUTPUT sous la fenêtre d'édition.
  11. Enfin, on peut observer l'exécution du programme dans l'onglet SERIAL MONITOR, en cliquant sur le bouton Start Monitoring : le message « Hello, World! » doit s'y afficher.

En résumé, hormis le choix de l'utilisation de Arduino CLI qui est général et n'a pas besoin d'être renouvelé, les étapes :

  • d'initialisation,
  • de choix du type de carte,
  • de choix du port USB sur lequel la carte est branchée,

sont à effectuer à chaque nouveau programme développé, avant de pouvoir procéder au téléversement du code exécutable dans la carte.

Par ailleurs, comme avec le logiciel Arduino IDE, on dispose de la possibilité d'ajout de nouvelles cartes et de nouvelles bibliothèques. Il suffit pour cela de taper la touche F1 pour accéder à la palette de commande, de saisir « Arduino » de sélectionner respectivement :

  • Arduino: Board Manager
  • Arduino: Library Manager

Dans les deux cas, on accède à une interface similaire à celle le logiciel Arduino IDE avec une barre de recherche un menu déroulant (cf. supra ).

Enfin, pour accéder à des cartes tierces, il faut éditer le fichier de préférences de l'utilisateur settings.json et ajouter une propriété de la forme :

  "arduino.additionalUrls": [
    "URL 1",
    "URL 2", // ...
  ],

L’environnement de simulation Tinkercad

Bref descriptif

Tinkercad  est une application web gratuite mise en ligne pour le monde éducatif par l’entreprise américaine Autodesk, pionnière et leader dans le domaine des logiciels de CAO (conception assistée par ordinateur, en anglais CAD pour computer-aided design).

Cette application permet notamment de concevoir et simuler des prototypes de circuits électroniques composés, comme dans la réalité, de :

  • platines d’expérimentation (breadboards),
  • fils de connexion (jumpers),
  • composants usuels en électronique (résistances, condensateurs, etc.),
  • quelques circuits intégrés, dont des composants programmables.

Comme la plupart des applications web, elle requiert la création d'un compte utilisateur avec une adresse électronique. Elle offre alors à chaque souscripteur un espace de stockage (sur le cloud) pour mémoriser ses conceptions.

L'application Tinkercad actuelle résulte de la fusion en 2017 de :

  • l'application éponyme de modélisation 3D développée par les ingénieurs finlandais Kai Backman et Mikko Mononen ;
  • l'application 123D Circuits de simulation électronique (également connue par son URL circuits.io désormais obsolète) développée depuis 2011 par Autodesk.

Premiers pas

La prise en main de l'application est très simple et intuitive. Elle fait l'objet d'un exercice de travaux pratiques . Pour plus de détails, on trouve toutes sortes de tutoriels sur internet Y.

Création d'un circuit

L'espace de travail simule la technologie du prototypage sur platine d'essai (breadboard).

  • On implante des composants par glisser-déposer depuis un panneau latéral sur la droite.
  • Le paramétrage des composants procède via un pop-up contextuel.
  • Les liaisons électriques entre composants s'établissent en cliquant sur leurs bornes pour « tirer » des fils dont on peut changer la couleur.

Programmation

Le panneau latéral comporte deux composants programmables :

  • la carte Arduino Uno R3,
  • le microcontrôleur miniature Atmel ATtiny85 (8 broches).

Ces deux composants se programment dans un volet éditeur de texte rudimentaire, expansible par le bouton « Code » situé en haut à droite de la fenêtre principale. En choisissant le mode « Texte », on peut composer le programme directement en langage C++ (norme de 1998).

En bas du volet d'édition se trouve un bouton pour activer la simulation du moniteur série et sa zone de saisie. On peut ensuite activer la fenêtre graphique pour simuler le traceur série.

Simulation

Un clic sur le bouton   ▶  Démarrer la simulation   déclenche d'abord la chaîne de compilation du code source.

En l’absence d’erreur, la simulation de l’exécution du programme commence et, selon les instructions du programme, les composants s'animent avec un degré de réalisme plus ou moins bon : les leds s'allument, mais les moteurs ne tournent pas (certains défauts de câblage peuvent même être signalés par un symbole d'explosion). De plus :

  • Un chronomètre intitulé « durée du simulateur » indiquant dans la barre supérieure le temps écoulé depuis le début de l'exécution.
  • Le bouton « Démarrer » mute en Arrêter la simulation   pour pouvoir terminer l'exécution.

Attention : un arrêt n'est pas une mise en pause ! Un nouvel appui sur le bouton « Démarrer » recommence entièrement le processus compilation-exécution.

Remarque. Isl est également possible de simuler le programme en mode pas‑à‑pas – ce qu'on appelle le débogueur – en imposant des points d'arrêt dans le code. Il suffit pour cela, avant de commencer la simulation, de cliquer sur n'importe quel numéro de ligne (et pour autant de lignes que l'on veut), qui porte alors une étiquette bleue. Alors :

  • le programme s'arrête automatiquement au moment où arrive l'exécution de cette ligne ;
  • on peut afficher les valeurs des variables à cet instant en passant le pointeur de la souris sur leur identificateur.

Pour avancer dans l'exécution du programme, on a alors deux possibilités :

  • cliquer sur le bouton  pour aller au prochain point d'arrêt ;
  • cliquer sur le bouton  pour aller à l'instruction suivante.

En cas d’erreur(s), la ou les lignes de code « incriminées » sont mises en  surbrillance rouge  et des messages de diagnostic sont affichés dans un volet à fond sombre qui simule une console d'exécution à la place du moniteur série.

En affichant la valeur de la variable d'environnement __cplusplus comme supra , on obtient maintenant la valeur 201402 (norme C++14) mais il n'y a pas si longtemps, on obtenait 199711 (norme C++98).

Évaluation

Avantages

Aux programmeurs débutants, Tinkercad procure deux avantages notables :

  • pouvoir se concentrer sur les algorithmes sans être parasité par des difficultés annexes (chaîne de compilation, flux d’entrées/sorties, pannes de matériel, etc.) ;
  • mettre en œuvre des composants animés dont le comportement est visuel et facile à interpréter (led, boutons, etc.).

Inconvénients

Toutefois, Tinkercad reste un environnement d'initiation et ses inconvénients doivent être soulignées, en particulier les suivants.

  • La réaction de la partie matérielle (mouvement, force, chaleur…) n’est pas simulée alors qu’elle est souvent indispensable à la vérification du bon fonctionnement du programme.
  • Exemple. Dans un système motorisé, il n'est pas possible de simuler des butées de fin de courses qui arrêteraient le mouvement.
  • Certains aspects matériels ou logiciels sont mal simulés.
  • Exemple matériel. Sous Tinkercad, un condensateur utilisé comme anti‑rebond en parallèle des contacts d'un bouton‑poussoir, provoque au démarrage de la carte un saut de tension comme un appui inopiné sur le bouton.
    Exemple logiciel. Sous Tinkercad, l'émulation du moniteur série n'affiche pas correctement les caractères accentués.
  • La gamme de composants est restreinte et malheureusement non extensible.
  • Exemple. Exceptée la Uno, les autres cartes Arduino (Nano, Mega, etc.), bien que très usitées dans la pratique, ne sont pas simulées.
  • Les gamme des modules de bibliothèque est également très restreinte et, là encore, non extensible ; il est impossible de créer de nouvelles bibliothèques, donc de développer une programmation vraiment modulaire.
  • Exemple. Il n'est pas possible dans le programme utilisateur d'inclure le module de bibliothèque Time.h, donc d'exploiter les fonctions de ce module pour faire des calculs de dates et heures.
  • L'éditeur de code est rudimentaire (fond clair, coloration syntaxique peu contrastée, pas d’auto‑complétion lors de la saisie, pas de formulaire de recherche ni de remplacement) et il ne peut gérer qu'un seul fichier.
  • Ces défauts et lacunes se font sentir dès que le code source s'étend sur plus d'une page. Il est donc préférable de coder sur un éditeur de code externe et de copier‑coller le programme dans Tinkercad seulement pour tester son fonctionnement.

L'alternative Wokwi

Il existe une alternative gratuite à Tinkercad : le simulateur en ligne Wokwi développé par la société estonienne Codemagic . Cet outil a commencé à être développé en 2019 mais sa notoriété n'a vraiment touché le grand public que depuis 2024.

Contrairement à Tinkercad, il n'est pas obligatoire de créer un compte pour pouvoir utiliser le simulateur, qui est directement accessible au lien suivant Wokwi. Pour accéder à l'interface de développement, il suffit simplement de choisir le type de composant programmable (carte Arduino ou autre – le choix est appréciable).

Avec une souscription payante, il est même possible d'opérer en liaison avec un éditeur de code associé sur le poste de travail de l'utilisateur (VS Code ou JetBrain).

Comme Tinkercad, l'interface de développement se présente sous la forme d'une page web avec :

  • un éditeur de code, avec ici une bonne coloration syntaxique ;
  • un espace de travail pour construire le montage électronique autour du composant programmable, avec des mécanismes similaires :
    • cliquer‑déposer pour insérer les composants depuis un menu déroulant (bouton ) ;
    • cliquer‑tirer pour relier les composants avec des conducteurs dont on peut ensuite changer la couleur.

Le montage est temporairement mémorisé au format JSON dans l'onglet diagram.json que l'on peut consulter (ce n'est pas le cas avec Tinkercad).

Une fois que le montage et le code sont terminés, la sauvegarde peut se faire de deux manières :

  • par copier/coller du contenu des onglets de code et du montage dans des fichiers sur le poste de travail (c'est la seule solution possible en usage libre sans compte utilisateur) ;
  • par sauvegarde sur l'espace de stockage associé au compte utilisateur, en choisissant l'option « public project » (la sauvegarde de projets privés est possible mais pas gratuite).

Quant à la simulation, elle s'effectue directement en cliquant sur le bouton . Attention : la compilation sur le serveur peut prendre du temps.

Comparaison avec Tinkercad

Le simulateur Wokwi présente de nombreux points communs avec Tinkercad, suffisant pour qu'il constitue une alternative tout à fait satisfaisante lorsque le premier n'est pas disponible.

Il possède même certains atouts significatifs qui peuvent en faire un choix incontournable, notamment pour simuler l'exécution de programmes :

  • dont le code source est réparti sur plusieurs fichiers (via le menu de gestion des fichiers – bouton 🞃 – cf. la capture d'écran ci‑dessus) ;
  • sur cartes de développement particulières (Arduino Mega, Espressif ESP32, STmicroelectronics STM32, Raspberry Pi Pico) ;
  • ou qui font appel à des fichiers de bibliothèques (via le menu Library manager, cf. la capture d'écran ci‑dessus) qui ne sont pas pris en charge par Tinkercad.

En revanche, il ne modélise pas les aspects électriques des circuits (il n'y a pas de multimètre ni d'oscilloscope dans le menu des composants). Mais ces aspects sont de toute façon pris en charge de façon assez grossière sous Tinkercad et ne sont pas essentiels en termes de prototypage de systèmes informatiques embarqués.