LOCODUINO

Forum de discussion
Dépôt GIT Locoduino
Flux RSS

lundi 25 juin 2018

11 visiteurs en ce moment

Choisir sa carte Arduino

. Par : Christian

À force de compléter votre application, la taille de votre programme ou de vos variables occupe presque tout l’espace mémoire alloué sur votre bonne vieille carte Uno et vous envisagez de vous équiper d’une carte plus performante. Cet article va vous aider à choisir votre nouveau compagnon de voyage.

Comparatif des cartes Arduino utilisables en modélisme ferroviaire

Les deux tableaux ci-dessous dressent un comparatif de différentes cartes utilisables en modélisme ferroviaire ; il ne prend pas en compte les cartes spécialisées pour l’internet ou l’équipement de vêtements. Ces tableaux vous donnent une vue synoptique des possibilités de chaque carte, ce qui peut déjà vous aider dans votre choix.

Carte ArduinoPrix (euros)Microcontrôleur (µC)Type (bits)CLK (MHz)Alim (V)
Micro
18
ATmega32U4
8
16
5
Leonardo
18
ATmega32U4
8
16
5
Uno
20
ATmega328P
8
16
5
Nano
20
ATmega328P
8
16
5
MKR Zero
21
ATSAMD21G18
32
48
3,3
101 (2)
29
Intel Curie
32
32
3,3
Due
34
AT91SAM3X8E
32
84
3,3
Mega
35
ATmega2560
8
16
5
Zero
39
ATSAMD21G18
32
48
3,3
M0 PRO
39
ATSAMD21G18
32
48
3,3
Carte ArduinoFlash (KB)Bootloader (KB)SRAM (KB)EEPROM (KB)Digital I/OSorties PWM  Analog I/O
Micro
32
4
2,5
1
20
7
12
Leonardo
32
4
2,5
1
20
7
12
Uno
32
0,5
2
1
14
6
6
Nano
32
2
2
1
14
6
8 (1)
MKR Zero
256
8
32
-
22
12
7/1
101 (2)
196
-
24
-
14
4
6
Due
512
-
96
-
54
12
12/2
Mega
256
8
8
4
54
15
16
Zero
256
-
32
-
20
10
6/1
M0 PRO
256
-
32
-
20
12
6/1

(1) Dont 6 Analog I/O qui peuvent être utilisées comme Digital I/O
(2) Bluetooth et accéléromètre/gyromètre 6 axes

Ces tableaux a été établis d’après les données fournies sur le site d’Arduino (www.arduino.cc) ; bien qu’ils parlent d’eux-même, nous allons commenter les données qu’on y trouve et spécifier les points à vérifier avant tout achat. Le prix est donné en euros à la date du 31 mai 2018, cela ne veut pas dire que vous ne puissiez pas trouver la carte plus ou moins cher ailleurs. La taille occupée par les différents espaces mémoire est en kilo-bytes (KB, ou encore kilo-octets si vous préférez l’appellation française). La mémoire Flash est celle qui contient le programme, la mémoire SRAM est celle qui contient les données et la mémoire EEPROM est une mémoire non volatile contenant des données qui ne s’effacent pas lorsque la carte n’est plus alimentée (voir l’article Bibliothèque EEPROM). La taille occupée par le bootloader est celle spécifiée par Arduino ; l’espace utilisable par l’utilisateur est la taille de la mémoire Flash diminuée de la taille du bootloader. Il existe des possibilités pour se passer du bootloader et ainsi récupérer la totalité de la mémoire Flash. La manipulation est décrite sur internet. Le nombre de sorties délivrant de la PWM   est inclus dans le nombre d’entrées-sorties numériques (Digital I/O) : par exemple, sur une carte Uno on trouve 14 E/S numériques dont 6 peuvent fournir de la PWM (voir l’article La PWM : Qu’est-ce que c’est ? (1)). Toutes les cartes contiennent des entrées analogiques et certaines une ou deux sorties analogiques.

De bonnes nouvelles

Un rapide coup d’œil nous permet de voir que les prix ont considérablement évolué et on trouve aujourd’hui des cartes haut de gamme pour le même prix que les cartes d’entrée de gamme d’il y a cinq ans. Cependant, si vous débutez avec Arduino, nous vous conseillons tout de même de faire vos premiers pas avec une carte Uno (voir l’article Arduino : toute première fois !). Pourquoi, direz-vous, puisque pour le même prix, on peut s’offrir une bête de course ? La réponse est simple : la carte Uno a été vendue à des millions d’exemplaires et internet est rempli de forum qui en parlent, de tutoriel pour apprendre à l’utiliser et de projets dont vous pourrez vous inspirer, et ce n’est pas forcément le cas pour une carte récente et performante. De plus, l’électronique complétant une carte dans une application fonctionne souvent en 5 V alors que les cartes récentes opèrent souvent en 3,3 V, une incompatibilité qui n’est pas simple à résoudre pour un novice. De plus, une sortie en 3,3 V ne permet pas de commander certaines DEL   blanches qui ont une tension de seuil supérieure à 3,3 V. Enfin, personne n’a appris à conduire sur une Ferrari ! Malgré tout cela, c’est à vous de prendre votre décision et si le fait de posséder une bête de course peut vous motiver à découvrir le monde d’Arduino, alors tant mieux !

Critères à prendre en compte pour choisir

Tout dépend de ce qui vous bloque pour continuer à développer votre application. Bien souvent, c’est la taille de la mémoire Flash (pour le programme) ou de la mémoire SRAM (pour les données) qui est limitative, voire les deux en même temps. Si la mémoire SRAM est saturée par un nombre important de données, alors que la mémoire Flash ne l’est pas, vous avez la possibilité de transférer les données constantes en mémoire Flash grâce au mot PROGMEM (voir https://www.arduino.cc/reference/en/language/variables/utilities/progmem/) [1]. Si les espaces mémoire Flash et SRAM arrivent à saturation en même temps, il est temps de changer de carte car il n’y a pas d’autres solutions et le tableau peut vous aider dans ce premier choix.

Le nombre d’entrées-sorties numériques ou analogiques peut aussi être limitatif assez rapidement. C’est le cas par exemple si votre application gère des signaux lumineux de type SNCF. Une cible de type H comporte de nombreuses lampes sans compter l’œilleton. Le nombre d’E/S peut aussi être limitatif si vous disposez d’un grand réseau et que vous voulez l’équiper de nombreux capteurs pour repérer la position des trains. Enfin, votre application a peut-être besoin d’une sortie analogique et seules les cartes évoluées en proposent (Due, Zero, M0, etc.) [2].

La vitesse de travail peut aussi être le facteur limitatif. C’est assez rare car nos petits trains ne se déplacent pas si rapidement que ça, mais cela peut être le cas par exemple si vous voulez développer une centrale DCC   sophistiquée, prenant en charge un écran LCD couleur à haute résolution et tactile. Certaines cartes travaillent à 48 MHz (c’est trois fois plus rapide qu’une carte Uno ou Mega) voire 84 MHz pour la Due.

Le tableau est-il suffisant pour choisir ?

Hélas non car il ne donne que les principales caractéristiques des cartes (microcontrôleur, fréquence de travail, espaces mémoires, nombres d’E/S). Disons qu’il permet de dégrossir le problème mais il faut aller voir les spécifications techniques de chacune des cartes que ce premier choix aura déterminées. Par exemple, il peut être intéressant de regarder les possibilités de communication : présence ou non de bus comme I2C, SPI  , CAN (voir l’article Mise en oeuvre du Bus CAN entre modules Arduino (1)) et leur nombre ainsi que d’autres possibilités sans fil comme le Bluetooth ou le WIFI. Il est également intéressant de regarder la résolution de la conversion numérique-analogique : sur 10 bits comme pour la carte Uno ou sur 12 bits comme sur la carte Due ? L’alimentation de la carte ne doit pas être négligée non plus et il faut prendre en considération le courant que peut fournir les sorties individuellement (20 mA pour l’Uno) ou en totalité (200 mA pour l’Uno et 130 mA pour la Due). Si votre carte doit alimenter un peu d’électronique, il faut regarder ce que délivrent les sorties de tension stabilisée (50 mA en 3,3 V pour l’Uno et 800 mA en 3,3 V pour la Due). Bien évidemment, nos exemples entre l’Uno et la Due ne sont pas là pour orienter votre choix mais pour vous montrer la différence entre une petite carte d’entrée de gamme et une carte performante.

Le côté logiciel est aussi à prendre en considération en s’informant sur l’existence ou non de bibliothèques écrites pour ces cartes car c’est toujours un plus d’avoir accès à des programmes déjà au point pour contrôler tel ou tel composant électronique. Dans le même registre logiciel, les cartes n’ont pas les mêmes possibilités en matière d’interruptions externes : le nombre de broches sur lesquelles des interruptions externes sont possibles est primordial si on veut surveiller la circulation des trains sur un réseau.

Pour finir, il est indispensable, surtout si on s’oriente vers une carte sophistiquée, de regarder sous le capot. Ce que le site Arduino n’indique pas, vous pouvez le trouver en consultant la notice du microcontrôleur qui équipe la carte, téléchargeable directement sur le site du constructeur du µC. Vous aurez ainsi accès à toutes les limitations en courant, la façon d’utiliser les timers et leur nombre, comment modifier la fréquence des PWM fournies par la carte donc par le µC (voir l’article Les Timers (IV)), les convertisseurs analogique-numérique et encore bien d’autres choses ou ressources cachées. Vous pourrez ainsi vous faire la meilleure opinion possible pour choisir la carte qui est vraiment adaptée à vos besoins. Ne partez pas du principe « qui peut le plus peut le moins » car les cartes sophistiquées peuvent être difficiles à mettre en œuvre pour peu qu’on sorte un peu des sentiers battus.

Y a-t-il d’autres alternatives ?

Tout ce qui concerne Arduino est en Open-source, ce qui signifie qu’un industriel peut parfaitement reproduire une carte et la commercialiser sous un nom qui lui est propre. C’est ce qu’on appelle un clone et le continent asiatique ne s’est pas gêné pour nous en fournir. Ces clones sont moins chers car ils sont construits autour de composants électroniques de moins bonne qualité et surtout parce que la rémunération de la main d’œuvre est (beaucoup) moins élevée. Au tout début, il y a eu quelques problèmes de compatibilité ; ce n’était rien de bien méchant et un bon bricoleur pouvait s’en sortir en allant télécharger les drivers qui convenaient à ces cartes. Aujourd’hui, ces drivers sont souvent livrés avec la dernière version du système d’exploitation, ce qui fait que le clone est reconnu tout de suite et fonctionne normalement. Une fois de plus, internet nous permet de trouver les clones de telle ou telle carte Arduino.

Mais il existe aussi d’autres cartes qui peuvent être programmées avec l’IDE d’Arduino et qui ont des performances augmentées ou bien sont livrées avec des fonctions de communication intégrées. C’est le cas par exemple du module WIFI ESP8266 qui peut être utilisé soit en association avec le microcontrôleur d’une carte Arduino ou bien de façon autonome en exécutant lui-même des applications. Cette formule remplace l’ancien système qui consistait à associer une carte Arduino avec un shield   WIFI. Il existe de nombreuses versions de l’ESP8266 qui diffèrent par le nombre de broches accessibles, le type d’antenne ou la quantité de mémoire Flash : citons l’ESP-01, l’ESP-12 ou encore l’ESP32. Ces cartes ESP sont très populaires et de nombreuses bibliothèques existent pour elles. Elles sont produites par Espressif d’où le nom d’ESP (www.espressif.com). Voici quelques liens utiles concernant les cartes ESP :
https://github.com/esp8266/Arduino
https://github.com/espressif/arduino-esp32

Parmi les cartes programmables avec l’environnement d’Arduino, on peut aussi citer les cartes Teensy produites par PJRC (www.pjrc.com/teensy/) qui sont d’ailleurs vendues sur le site d’Arduino. Les deux cartes Teensy les plus performantes sont les Teensy 3.5 et 3.6 qui sont des bêtes de course :
3.5 : 120MHz, 512k de flash, 192k de SRAM, 4k d’EEPROM
3.6 : 180MHz, 1M de flash, 256k de RAM, 4k d’EEPROM
https://www.pjrc.com/teensy/techspecs.html
Les prix de ces deux cartes vont de 24 à 34 $ sur le site PJRC suivant que vous les voulez avec ou sans broches de connexions.

Citons également les cartes à base de STM32 de STMicroelectronics au format Uno ou Nano avec une offre large en terme de fréquence de fonctionnement et de taille mémoire et dont une partie est supportée dans l’IDE Arduino.
http://www.st.com/en/evaluation-tools/stm32-mcu-nucleo.html
https://community.st.com/community/stm32-community/blog/2017/07/13/stm32-cores-enabled-in-arduino-ide

Selon les applications développées, il n’est pas toujours nécessaire de faire appel à des cartes complètes et sophistiquées, parfois un simple microcontrôleur programmé peut suffire comme les ATtiny. Là aussi, c’est tout une gamme de possibilités qui s’offre à nous : tailles des mémoires, nombres de broches, système de communication SPI   ou I2C, timers, etc. Pour programmer ces microcontrôleurs, une simple carte Arduino suffit comme l’explique la série d’articles commençant par l’article Le microcontrôleur ATtiny45 (1).

Comme vous le constatez, de nombreuses alternatives existent aux cartes Arduino tout en restant dans un environnement que vous connaissez bien avec l’IDE d’Arduino pour l’écriture et la mise au point de vos programmes.

Nous espérons que ces quelques conseils vous seront utiles pour choisir la carte Arduino qui conviendra le mieux à votre projet. N’hésitez pas à utiliser d’autres sources comme internet, le site de LOCODUINO ou certaines revues comme Hackable Magazine qui traitent des cartes Arduino. Bon développement !

[1Ceci est vrai pour les Arduino à base de microcontrôleurs AVR (Uno, Nano, …) qui, du fait d’une particularité dans l’architecture ne peuvent lire directement des constantes stockées dans la Flash. Par conséquent, les constantes sont initialement recopiées dans la SRAM. le fait de déclarer une constante PROGMEM empêche cette recopie mais l’accès à la constante nécessite de passer par des fonctions qui effectuent une recopie temporaire en SRAM. En revanche les Arduino à base de microcontrôleurs ARM Cortex M (Due, M0, Teensy 3.x, …) peuvent tout à fait lire des constantes directement depuis Flash sans cette phase de recopie en SRAM. Pour des raison de compatibilité, un programme avec des constantes déclarées PROGMEM peut être compilé sur les cartes Arduino basées sur des microcontrôleurs ARM mais cette directive est ignorée.

[2Malgré tout une sortie analogique peut être synthétisée à partir d’une sortie PWM au moyen d’une résistance et d’un condensateur en circuit série.

4 Messages

Réagissez à « Choisir sa carte Arduino »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Matériel »

Fonctionnement et pilotage d’une DEL

Qu’est ce qu’une carte Arduino ?

Amplifier le signal de sortie d’un ARDUINO avec un ULN 2803

Résistances, kézako ?

Relais électromagnétique

Les diodes classiques

Détecteurs à ultrasons

La carte Arduino Uno

Bouton poussoir

Les différents types de mouvements d’un servomoteur

Les encodeurs en quadrature

Les écrans LCD alphanumériques

Des bus de communication pour l’Arduino

Les interrupteurs

Le microcontrôleur ATtiny45 (1)

Le microcontrôleur ATtiny45 (2)

Le microcontrôleur ATtiny45 (3)

Le microcontrôleur ATtiny45 (4)

Le microcontrôleur ATtiny45 (5)

Le microcontrôleur ATtiny45 (6)

Le microcontrôleur ATtiny45 (7)

Le microcontrôleur ATtiny45 (8)

Signaux lumineux et Arduino

Les shields de prototypage et de connexion

Commande de moteur à courant continu

Choisir sa carte Arduino

Les derniers articles

Choisir sa carte Arduino


Christian

Le microcontrôleur ATtiny45 (8)


Christian

Le microcontrôleur ATtiny45 (7)


Christian

Commande de moteur à courant continu


Christian

Le microcontrôleur ATtiny45 (6)


Christian

Les shields de prototypage et de connexion


Christian

Le microcontrôleur ATtiny45 (5)


Christian

Signaux lumineux et Arduino


Christian

Le microcontrôleur ATtiny45 (4)


Christian

Le microcontrôleur ATtiny45 (3)


Christian

Les articles les plus lus

Bouton poussoir

Commande de moteur à courant continu

Qu’est ce qu’une carte Arduino ?

La carte Arduino Uno

Des bus de communication pour l’Arduino

Choisir sa carte Arduino

Amplifier le signal de sortie d’un ARDUINO avec un ULN 2803

Le microcontrôleur ATtiny45 (1)

Le microcontrôleur ATtiny45 (6)

Le microcontrôleur ATtiny45 (2)