(Dernière mise à jour par Benjamin le 29 mars 2024)
Qu’est-ce qu’un microcontrôleur ?
C’est un circuit intégré qui regroupe à lui seul presque tous les éléments d’un ordinateur : processeur, mémoires, stockage, interfaces d’entrées-sorties. Le microprocesseur qu’on trouve dans les ordinateurs a besoin de tous ces mêmes périphériques pour travailler, mais ils sont externes. Il a de surcroit besoin d’un système d’exploitation. Les microcontrôleurs ont deux qualités essentielles, leur très petite taille et leur sobriété énergétique. On les trouve partout, dès qu’une tâche très spécialisée doit être accomplie. On les trouve notamment dans tous les systèmes embarqués : électroménager, automobile, jouets, robots, drones, sans oublier les avions où ils sont nombreux, sans même que le pilote ne le soupçonne. Il existe des milliers de références de microcontrôleurs. Les réalisations de ce site utilisent des cartes Arduino et Teensy, les seules qui seront brièvement décrites ici.
Les cartes Arduino
Elles sont de plus en plus nombreuses et performantes, certaines sont adaptées au prototypage de projets simples, d’autres sont destinées aux professionnels et à l’industrie. Voir ici le site officiel Arduino. Les microcontrôleurs sont variés, 8 bits ou 32 bits, parfois même à double cœur, les fréquences d’horloge s’échelonnent de 16 à 480 MHz. Certaines carte embarquent des extensions de communication, Wifi, Bluetooth, GSM, CAN bus, et/ou des capteurs variés, inertie, pression, température, proximité…etc.
Mais les trois cartes les plus simples, toutes équipées de microcontrôleur 8 bits à 16 MHz, avec des entrées/sorties fonctionnant en 5 volts , restent les plus connues et les plus répandues : Mega 2560, Uno et Nano (fig. 1).
Leur architecture ouverte (open hardware) a permis l’apparition de très nombreux clones de ces cartes Arduino. Ceci a contribué à leur popularité.
Un autre élément capital du succès des cartes Arduino est leur environnement de développement, l’I.D.E Arduino (pour “Integrated Development Environment”). Cet environnement logiciel, gratuit et en source libre, masque complètement au débutant la complexité du microcontrôleur, et lui permet d’écrire son premier programme en quelques secondes. Et par là même, d’apprendre sans s’en apercevoir les bases du langage de programmation C++. Sans se soucier des mécanismes mis en œuvre au sein du microcontrôleur. Un peu comme on utilise son ordinateur sans se soucier du microprocesseur qu’il contient.
Il existe d’autres environnements de développement pour les cartes Arduino, plutôt destinés aux professionnels. Aucun n’égale l’IDE Arduino en simplicité d’utilisation.
L’existence d’innombrables “bibliothèques” gratuites et open source constitue un autre point fondamental de ce succès. Ces bibliothèques (libraries en anglais) sont des extensions de l’IDE Arduino, qui permettent de réaliser des tâches particulières, parfois en rapport avec une extension matérielle. Par exemple, pour utiliser un écran, il faut télécharger sur Internet, puis inclure dans le programme (le “sketch” dans le jargon Arduino) une bibliothèque particulière, souvent fournie par le fabricant de l’écran, pour piloter ce dernier. A chaque extension matérielle sa bibliothèque (son pilote).
Arduino Uno Rev3
C’est la plus populaire. Elle est équipée d’un microcontrôleur ATmega328P, qui comporte 32KB de mémoire flash pour les programmes, 2KB de mémoire vive SRAM, une EEPROM de 1KB. La carte a 14 entrées/sorties digitales (dont 6 utilisables en PWM), et 6 entrées analogiques. L’Arduino Uno a 1 port série, 1 bus SPI et 1 bus I2C.
On trouve dans le commerce d’innombrables cartes d’extensions pour la carte Arduino Uno, on parle de “shields”. Ces cartes s’enfichent sans soudure dans les connecteurs de la carte Uno, afin d’en étendre les possibilités. Ces shields pour Arduino Uno sont devenus un véritable standard et ont contribué à l’extraordinaire essor des cartes Arduino. On trouve des shields Wifi, Bluetooth, Ethernet, GPS, servomoteurs, CAN bus, lecteur micro-SD… etc. Il n’y a aucune limite à l’imagination des concepteurs de shields. Pour notre premier Micro-EMS, nous avons réalisé nous-mêmes un shield personnalisé, à partir d’un protoshield (shield vierge, sans aucun composant).
Arduino Mega 2560
C’est un peu la grande sœur de la Uno. Elle est équipée d’un microcontrôleur ATmega2560, qui comporte 256KB de mémoire flash pour les programmes, 8KB de mémoire vive SRAM, une EEPROM de 4KB. La carte a 54 entrées/sorties digitales (dont 15 utilisables en PWM), et 16 entrées analogiques. L’Arduino Mega a 4 ports série, 1 bus SPI et 1 bus I2C. Tous les shields prévus pour la carte Uno sont compatibles avec la Mega.
Arduino nano
C’est la plus petite des cartes Arduino, d’innombrables clones sont disponibles. Les caractéristiques sont exactement les mêmes que l’Arduino Uno, avec le même microcontrôleur ATmega328P, mais avec une taille réduite comme on le voit sur la photo ci-dessus.
Le modèle Arduino Nano Every, plus récent, répond à la même logique d’encombrement réduit. Il dispose d’un microcontrôleur 8 bits ATMega4809, avec 48 KB de mémoire flash et 6 KB de SRAM.
Il existe d’autres cartes Arduino Nano encore plus récentes, très différentes, en dehors de la même petite taille : Nano 33 BLE et Nano 33 BLE Sense. Elles sont beaucoup plus puissantes que la Nano “historique”, car équipées d’un microcontrôleur 32 bits à 64 MHz, avec des mémoires flash et SRAM beaucoup plus importantes, une logique à 3,3 volts, le Bluetooth intégré, et différents capteurs, notamment inertiels.
Arduino Nano ESP32
Cette carte apparue en 2023 est la première de la gamme Arduino qui soit basée sur un microcontrôleur Espressif ESP32-S3, sous la forme d’un module u-blox® NORA-W106. Il s’agit d’une puce double cœur 32 bits. La fréquence d’horloge est de 240 MHz, il y a 384 kB de ROM, 512 kB de SRAM et 16 MB de mémoire flash externe. La caractéristique principale de cette carte (fig. 2) est sa connectivité WiFi et BlueTooth LE. Cette carte a une logique en 3.3 volts. Elle possède 14 entrées/sorties digitales, 8 entrées analogiques, toutes les broches supportent la PWM et les interruptions externes. Elle a un contrôleur CAN intégré, 2 ports UART, 1 port SPI et 1 port I2C. Cette carte est utilisée dans l’enregistreur de vol AvionicsDuino.
Les cartes Teensy
Voir ici le site officiel PJRC. On ne parlera ici que des plus récentes, les Teensy 3.6, 4.0, et 4.1 (fig. 3). Elles sont toutes équipées d’un microcontrôleur 32 bits, avec une logique en 3,3 volts. En sus de leur puissance de calcul considérable, sans commune mesure avec celle des cartes Arduino 8 bits, ces cartes ont deux atouts très important par rapport à d’autres cartes disposant de caractéristiques similaires. Elles partagent le même IDE que les cartes Arduino (avec une surcouche logicielle dénommée Teensyduino) et elles disposent d’une immense collection de bibliothèques spécialement optimisées pour elles. Elles se programment donc exactement de la même façon que les cartes Arduino. Leur coût est du même ordre de grandeur.
Teensy 3.6
Equipée d’un ARM Cortex-M4 32 bits à 180 MHz et d’une unité de calcul en virgule flottante 32 bits.
Mémoires : 1 MB Flash, 256 KB RAM et 4 KB EEPROM
64 entrées-sorties digitales, 22 sorties PWM
25 entrées analogiques
6 ports série, 3 ports SPI, 4 ports I2C
2 CAN bus
1 lecteur micro-SD
1 horloge temps réel RTC
Teensy 4.0
Equipée d’un ARM Cortex-M7 32 bits à 600 MHz et d’une unité de calcul en virgule flottante 32 & 64 bits.
Mémoires : 2 MB Flash, 1 MB RAM et 1 KB EEPROM simulée
40 entrées-sorties digitales, 31 sorties PWM
14 entrées analogiques
7 ports série, 3 ports SPI, 3 ports I2C
3 CAN bus
1 horloge temps réel RTC
Cette carte est utilisée dans l’AHRS, le micro-EMS-Teensy, et le module distant Compas digital.
Equipée d’un ARM Cortex-M7 32 bits à 600 MHz et d’une unité de calcul en virgule flottante 32 & 64 bits.
Mémoires : 8 MB Flash, 1 MB RAM et 4 KB EEPROM simulée
55 entrées-sorties digitales, 35 sorties PWM
18 entrées analogiques
8 ports série, 3 ports SPI, 3 ports I2C
3 CAN bus (dont un FD)
1 lecteur micro-SD
Ethernet 10/100 Mbit
1 horloge temps réel RTC
Cette carte est utilisée dans les unités centrales de l’EFIS et de l’EMS.
Quelle carte choisir ?
Pour faire très simple, sur un avion, on peut dire qu’une carte 8 bits/16 MHz Arduino Uno ou Nano est adaptée pour gérer quelques capteurs et actuateurs, par exemple pour piloter un servo de trim, ou faire un compte tour et/ou un calculateur de carburant. Une carte Arduino Mega est suffisante pour être le cœur d’un EMS (Engine Monitoring System). Pour des applications exigeant plus de puissance de calcul, comme l’affichage parfaitement fluide d’un horizon artificiel, ou si on souhaite faire communiquer plusieurs microcontrôleurs sur un CAN bus, les cartes Teensy sont mieux adaptées, en particulier la Teensy 4.1. La carte Arduino Nano ESP32 est une des nombreuses cartes du commerce exploitant un circuit ESP32 Espressif, avec sa connectivité WiFi. Nous l’avons choisie pour cette connectivité et pour sa taille réduite par rapport aux cartes concurentes équivalentes.