Avec le temps, le concept des cartes Arduino du départ a été largement adopté par nombre d’acteurs qui ont tous développé des familles de cartes plus ou moins puissantes, plus ou moins couteuses, plus ou moins connectées, mais aussi plus ou moins grandes, chères ou pas... Choisir la bonne carte pour une application particulière est devenu ardu, et avec l’évolution rapide du marché et des techniques, ça ne va pas s’arranger.
Quel microcontrôleur choisir ?
Ou l’inconvénient de l’avantage...
.
Par :
DIFFICULTÉ :★☆☆
Aujourd’hui, si l’on cherche une carte microcontrôleur pour un usage particulier, il convient de se poser un certains nombre de questions pour réduire l’éventail des possibilités, et qu’il ne reste plus que des critères non techniques à considérer dans le désordre : prix, couleur, provenance, pérennité de la marque...
Mais avant d’arriver à ça, il faut connaître et lister les besoins, matériels ou pas.
- Nombre de broches ?
C’est souvent le premier critère matériel, parce que c’est le plus simple à appréhender. Moins de broches que nécessaire, et il faudra passer par un circuit extérieur pour multiplier les broches d’entrée sortie. Plus de broches que nécessaire, sans être un problème, peut conduire à réviser à la baisse le format de la carte et donc éventuellement réduire le prix du montage... Il faut aussi avoir conscience du devenir du projet. Est ce un projet unique one-shot, sans nécessité d’évolution ? Ou est ce un point de départ pour quelque chose de plus grand ? Parce que dans ce cas, prendre un peu de marge sur le nombre de broches ne parait pas déraisonnable. - Tension ?
Selon ce qui va être branché sur la carte, il faut alimenter tout ça en 5v ou 3.3v, et être capables de lire des tensions renvoyées par des capteurs ou d’autre dispositifs qui ne disposent peut être que d’un seul type de tension. Par exemple, un ESP32 étant lui même alimenté en 3.3v ne sera pas ’tolérant’ au 5v sur ses broches d’entrées, au risque de le griller. Alors qu’un UNO ou un MEGA pourra très bien indifféremment considérer une broche d’entrée alimentée en 3.3v ou 5v comme HIGH ! - Puissance électrique disponible ?
Quelque soit le modèle de microcontrôleur, la puissance qui peut être délivrée est faible, la plupart du temps largement sous l’Ampère. Cela signifie que ce n’est pratiquement pas un critère puisque vous devrez très probablement ajouter une alimentation extérieure pilotée par un pont en H type LMD18200, L6203 ou L298D. Bien sûr si vous voulez piloter deux Dels ou un servo moteur, ce n’est pas le cas. Ce n’est pas non plus le cas si vous en avez un peu plus mais que vous êtes certains qu’ils ne seront pas activés en même temps ! Dans tous les cas, le datasheet associé au microcontrôleur choisi devra être bien lu et compris pour éviter la petite fumée blanche [1] voire le début d’incendie. - Connectivité ?
Au delà du nombre de broches, il s’agit de savoir si vous avez besoin de communiquer avec l’extérieur : liaisons série, I2C, SPI, CAN, WIFI, Bluetooth... Il faut savoir cependant que certains sont émulables par logiciel, comme la bibliothèque AltSoftSerial pour la liaison série sur microcontrôleur AVR ou EspSoftwareSerial pour les ESP. - Format ?
Le format va être conditionné par deux choses : la place disponible pour le projet, et les extensions que l’on veut ajouter sur l’Arduino lui même avec des ’Shields’. Pour ces derniers, l’utilisation d’un UNO ou d’un MEGA est nécessaire, même si d’autres formats plus exotiques existent.
Pour la taille du microcontrôleur, on commence avec un ATtiny excessivement petit, puis plus grand avec l’Arduino Micro sans prise USB. On passe ensuite au format ’Ticket de métro’ pour les Nano, les ESP32, les STM32 type ’Blue Pill’ ou Nucleo. Puis le format de base, celui de l’Arduino Uno historique sur lesquels peuvent s’enficher quantité de shields aux rôles les plus variés. Format réutilisé pour les Leonardo et beaucoup d’autres plus ou moins compatibles... Enfin l’Arduino Mega et le Due, grands format avec leurs 50 et quelques broches et qui peuvent eux aussi recevoir la plupart des shields dédiés au Uno... Enfin surtout le Mega, à vérifier pour le Due basé sur un autre microcontrôleur et en 3.3v. Remarque également valable pour le Nucleo 144, autre grand format doté d’un microcontrôleur en 3.3v. - Taille mémoire ?
C’est un aspect que l’on a tendance à laisser de côté. Pourtant si physiquement tout marche mais que le programme ne rentre pas dans le microcontrôleur faute de place, c’est un peu bête ! Avec les STM32, les ESP, ou les dernier Uno R4, peu de problème de place, ils sont généreux, merci à leurs processeurs ARM généreusement dimensionnés. Par contre les AVR (Uno, ATTiny, Mega) sont souvent chiches en mémoire programme, mais plus encore en mémoire vive, celle qui disparait lorsque l’on coupe le courant... Sur ces modèles quelques kilo-octets seulement sont disponibles, c’est assez étriqué. Faites attention aussi aux bibliothèques venues de l’extérieur employées pour le projet, pas toujours optimisées et qui peuvent gravement grever les deux mémoires... Et je ne parle même pas des Tiny qui ne disposent souvent que d’une poignée d’octets aussi bien pour le programme que pour les données. Cependant, ils peuvent être suffisants pour des projets très particulier. C’est peut être le moment pour apprendre un langage bien plus économe : l’assembleur ! - Capacités ? (Analogique, PWM, ...)
Le rôle de chaque broche est aussi essentiel. Sur les modèles historiques équipés de microcontrôleurs AVR le nombre de broches analogiques, PWM ou qui gèrent des interruptions est limité. Limité en quantité, mais aussi souvent limité à des broches bien particulières qui peuvent poser problème lors de l’implantation physique du circuit. Les microcontrôleurs plus modernes, ESP, STM, et autres basés sur des cœurs ARM ont généralement des broches bien plus versatiles et configurables. - Prix ?
Les prix vont de 1€ pour les tout petits microcontrôleurs à plusieurs dizaines d’Euro sur les modèles les plus puissants. D’autres encore plus chers existent mais le public visé est plus professionnel qu’amateur. Dans nos applications de train électrique, on peut bien sûr se faire plaisir et viser le luxe, mais les microcontrôleurs aux prix raisonnables habituels suffisent la plupart du temps largement. Attention à prendre en compte la source d’approvisionnement. Les modèles achetés en Asie sont souvent de qualité inférieure et parfois dotés de particularités qui peuvent poser problème, comme le circuit CH340G pour piloter la prise USB sur certains modèles qui nécessite un driver pas toujours facile à installer... Les commandes passées aussi loin sont aussi parfois assorties d’un délai de livraison de quatre à six semaines qui peut faire réfléchir. Par contre les tarifs sont souvent imbattables, même avec la TVA payée (attention à vérifier que le site paye bien cette TVA et que vous n’avez rien de plus à régler). - Le code ?
Ça peut paraître anecdotique, mais l’outil de développement peut aussi faire la différence. Les modèles plus récents ne sont pas forcément bien implantés dans l’IDE Arduino et nécessitent quelquefois de se tourner vers les outils fournis plus ou moins gratuitement par les fabricants, ou sur d’autre plateformes comme Visual Studio Code ou Eclipse. Le système opératif de la machine qui va servir à développer peut aussi être un frein de ce point de vue. En effet, si les IDE Arduino sont bien disponibles sur toutes les plateformes, le support des derniers modèles de microcontrôleur peut tarder à arriver. Donc attention à la bonne disponibilité des outils qui doivent vous aider dans votre projet.
Attention également aux différences entre les modèles de Microcontrôleur. L’IDE Arduino arrive à masquer la plupart des différences entre les connectiques et les protocoles. Mais pour des usages plus pointus, lecture de données analogiques, PWM, interruptions, timers, il faudra vous conformer à la documentation des constructeurs, voire développer vous même des aspects assez techniques de votre projet.
Pensez aussi aux bibliothèques qui ne sont pas forcément adaptées à votre modèle de Microcontrôleur. Généralement et selon la norme, un fichier library.properties est présent dans son répertoire et liste les matériels compatibles. Si votre matériel n’y est pas, vous pouvez tenter votre chance, à vos risques et périls !
- Enfin les grands formats : à gauche une Mega2560, au centre la même dans une version compacte, et à droite la DUE, équipée d’un microcontrôleur bien plus puissant.
Au final, c’est sans doute aussi un peu ce qui traine au fond de votre tiroir qui sera finalement sélectionné : un Nano peut remplacer un Uno s’il n’y a pas de shield à installer, à l’inverse un Uno ou un Mega peuvent remplacer un Nano si la place n’est pas un problème, un ESP peut remplacer un Nano ou un Nucleo sur la plupart des usages... Gardez aussi à l’esprit que pour une même famille de carte, les modèles sont souvent nombreux et très différents : voir la famille des ESP, des Teensy, des Every... Enfin, il est toujours possible d’associer plusieurs Arduino là où un seul ne suffit pas. Les capacités de discussion entre les cartes via les protocoles communs comme I2C, SPI ou même une liaison série permettent cela relativement facilement.
En résumé, on regarde les broches, la place disponible, le fond du tiroir puis le fond du porte-monnaie... Procéder par exclusion : on fait une liste de tout ce qui est disponible ou que l’on peut se procurer, puis on réduit la liste en fonction des besoins à remplir. Ce qui reste est ce qui convient !
Pour vous aider, un petit tableau avec les principaux modèles du moment :
Modèle |
Format |
Broches |
Alim |
Programme |
Données |
Comm |
Prix Asie |
Prix Europe |
ATtiny 45 | Dip 8 | 5 [2] | 5v | 4096 octets (4k) | 256 octets | 1.50€ | 2€ | |
ATtiny 85 | Dip 8 | 5 [3] | 5v | 8192 octets (8k) | 512 octets | 2€ | 3€ | |
Micro | 48x18 mm | 24 | 5v | 32ko | 2560 octets | Serial | 5€ | 20€ |
Pro Micro | 40x23 mm | 24 | 5v | 32ko | 2560 octets | Serial | 4€ | 25€ |
Nano | 45x18 mm | 24 | 5v | 32ko | 2048 octets | Serial | 3€ | 20€ |
ESP32 | 48x25 mm | 20 | 3.3v | 4096Ko | 380k | Wifi+BT | 5€ | 20€ |
Uno R3 | 68x53 mm | 22 | 5v | 32ko | 2048 octets | Serial | 3€ | 25€ |
Uno R4 Wifi | 68x53 mm | 22 | 5v | 256ko | 32ko | Wifi+BT+CAN | 10€ | 30€ |
Mega2560 | 101x53 mm | 54 | 5v | 256ko | 8ko | Serial | 1.50€ | 50€ |
Due | 101x53 mm | 54 | 3.3v | 512ko | 96ko | Serial | — | 50€ |
Giga R1 WIFI | 101x53 mm | 76 | 3.3v | 2048ko | 1024ko | Wifi+BT+CAN | — | 80€ |
Ne sont cités ici que ceux que nous avons croisé au fil de nos pérégrinations, mais il est bien évident que le marché évolue, la technique aussi, que de nouveaux modèles, voire de nouveaux acteurs (MKR ou Pi2040 chez Arduino, Teensy, STM32 Nucleo ou Bluepill, Pi pico, etc) apparaissent et peuvent remettre en cause les choix passés.
Les prix sont donnés hors promotions et à titre indicatif. Ils ont été vérifiés au moment de l’écriture de l’article.
Rappelez vous malgré tout que même un vieil Arduino peut déjà faire beaucoup. Certes qui peut le plus peut le moins, mais si le moins est suffisant, pourquoi chercher ailleurs ?
[1] Abemus papam ? Non !
[2] Sur ces petits circuits, une broche Reset peut aussi être utilisée comme une broche classique dans les cas désespérés
[3] Sur ces petits circuits, une broche Reset peut aussi être utilisée comme une broche classique dans les cas désespérés