2. Une première description

Qu'est-ce qu'un Arduino?

Il s'agit d'une carte électronique aux dimensions réduites, qui possède un circuit intégré ou chip programmable, des ports d'entrée/sortie, un port de communication, éventuellement une prise USB (servant à la programmation), un connecteur pour l'alimentation, etc... On décrit souvent cette carte comme un contrôleur, un micro-contrôleur, une carte de prototypage, etc...

Ce contrôleur est construit autour d'un chip de la marque Atmel. Il en existe plusieurs modèles. Je citerai ceux qui sont à mon avis les plus courants: l'Arduino Uno (chip ATmega328), l'Arduino Mega (chip ATmega2560), l'Arduino Pro-Mini (chip ATmega128, pas de port USB ni de connecteur d'alimentation). Tous ont des caractéristiques différentes (nombres de ports E/S, connecteurs, tension de fonctionnement, etc...). Dans les exemples, j'utiliserai le plus souvent le Uno dont voici une photo avec certains éléments importants:

Arduino Uno (Rev. 3)

Les deux autres modèles cités (Photos du site http://arduino.cc). Attention, les photos ne sont pas proportionnelles entre-elles!

Arduino Mega

Arduino Pro-Mini (17x32mm)

Pour information, voici l'un des plus simples chips que l'on peut trouver: le ATtiny85.

Photo de http://sparkfun.com

Pour programmer l'Arduino, il est nécessaire de le connecter à un ordinateur. Le code source est développé et compilé grâce à un environnement de programmation (à installer au préalable sur l'ordinateur et téléchargeable ici) puis transféré dans le chip via le port USB. Une fois chargé, le code s'exécute immédiatement. Il persistera dans la mémoire même si l'Arduino n'est plus alimenté. Dès que le contrôleur est ré-alimenté (par le port USB ou une alimentaiton externe), le programme s'exécute indéfiniement.

Pour information, l'environnement de programmation est livré avec bon nombre de librairies de code déjà écrit ainsi que des exemples qui facilitent grandement la prise en main de cet Arduino. Je vous encourage fortement à parcourir ces exemples car ils aident à comprendre visuellement les principes élémentaires de programmation. De plus, toutes les instructions sont référencées ici. Cela peut être aussi d'une grande aide pour le débutant en programmation. Note: je n'ai pas pris le temps de trouver des liens autres qu'en langue anglaise. Alors si vous désirez me faire part de vos trouvailles en français, n'hésitez pas à me les communiquer. Je les ajouterai à la liste de liens.


Pourquoi l'utiliser?

Son intérêt réside dans le fait que la logique (d'un montage électronique normalement réalisé à l'aide de plusieurs composants, un design, un schéma...) devient virtuelle. Elle est modifiable à souhait grâce au chip programmable. Finalement, si on pose côte-à-côte deux réalisations qui ont pour but de faire clignoter une led (une entièrement à base de composants électroniques, l'autre autour d'un Arduino), leurs points communs sont l'alimentation, la led et sa résistance de protection. Le reste des composants est remplacé par l'Arduino...

Par exemple, voici le schéma logique d'un clignotant monostable. On y retrouve le NE555 bien connu, son circuit de charge, etc...



Dans ce schéma, la vitesse de clignotement dépend du temps de charge/décharge et est fonction des valeurs de résistance et de capacité qui sont utilisées. Si je ne suis pas satisfait par ces valeurs, il faut alors que je dessoude les composants, les remplace, voire que je redesigne le circuit pour changer la logique, etc... Ici, l'intérêt pour l'Arduino est évident. Il suffit de remplacer toute la logique de clignotement par un programme de quelques lignes et conserver uniquement la résistance de 470 ohm et la led (à droite sur le schéma) que l'on branchera à l'une des sorties de l'Arduino. Ainsi, je peux modifier le programme et la vitesse de clignotement sans avoir à sortir mon fer à souder.



Voici un exemple de ce code:

int led = 2;

void setup()
{
  pinMode( led, OUTPUT );
}

void loop()
{
  digitalWrite( led, HIGH );
  delay( 1000 );
  digitalWrite( led, LOW );
  delay( 1000 );
}


Sans entrer dans les détails pour l'instant, examinons quelques instructions. Tout d'abord l'instruction digitalWrite() qui positionne l'état de la sortie led (qui est le pin digital numéro 2) à HIGH ou LOW. Cet état persiste tant qu'il n'est pas modifié. Puis l'instruction delay( 1000 ). Cette instruction informe le programme de faire une pose de 1000ms.

Ainsi, dans la boucle principale loop() l'Arduino envoie tour à tour les valeurs HIGH et LOW, soient 5V et 0V (pour simplifier...) espacées de 1000ms et ce, indéfiniement... Notre clignotant est construit! Et si l'intervale de clignotement n'est pas satisfaisant, il suffit de remplacer les valeurs 1000 par 500 afin d'augmenter la vitesse... De la même manière, un clignotant dont la phase "allumé" est plus courte que la phase "éteint", est facilement réalisé en modifiant le premier délais (par exemple en passant de 1000 à 300ms) et en laissant le second inchangé...

Voilà! Nous venons de réaliser le tout premier programme avec l'Arduino: le clignotant.

Je profite de ce premier exemple de code pour m'excuser auprès des lecteurs francophones si j'utilise des termes et des noms de variables anglais. L'utilisation de cette langue dans le milieu de la programmation est une pratique courante et une habitude tenace... ;-)


Conclusions:

Le but n'est pas de dénigrer l'électronique, bien au contraire... C'est un monde fascinant mais, selon moi, d'une approche plutôt complexe pour le néophyte. Je préfère de loin la logique logicielle, modifiable, adaptable et plus simple à comprendre visuellement. Mais encore une fois, cela ne reflète que mon opinion et mes capacités personnelles.

Aussi, dans le contexte du modélisme ferroviaire, je trouve l'utilisation de l'Arduino plus adaptée car plus rapide à mettre en oeuvre. On peut faire le lien directement entre les composants visibles (le plus souvent ce sont des leds ou des moteurs) et le contrôleur. Une fois le programme élaboré, il suffit de relier les fils à l'Arduino et tout devrait fonctionner du premier coup...

Je prends encore quelques secondes pour répondre à une question... "Si je veux me lancer dans l'aventure, quel modèle d'Arduino dois-je acheter car il en existe beaucoup?" Sans hésitation, je conseille l'Arduino Uno. C'est le plus versatile pour commencer et le rapport options/prix est très bon. Le Mega est plus cher, un peu trop gros et comporte beaucoup de ports qui ne sont pas utiles au début. Rappelons que peu de ces ports sont nécessaires dans les premiers projets... Les modèles plus petits (par exemple le Pro-Mini) sont moins chers, un peu plus limités, mais surtout ne comportent pas nécessairement de port USB. Il devient alors plus difficile de les programmer et d'autres composants sont alors requis.



2.1. Généralités techniques

La gamme d'Arduino comprend des modèles fonctionnant sous 5V d'autres sous 3.3V. Il convient de vérifier impérativement ces valeurs au moment de l'achat et de l'utilisation que l'on veut en faire.

Alimentation externe recommandée pour un Arduino modèle 5V est entre 7V et 12V DC, 500mA environ. En effet, le montage comprend un régulateur de tension 5V. Cependant, c'est un modèle CMS sans dissipateur de chaleur. Il convient donc de ne pas utiliser des tensions trop élevées sans quoi cela risque de sentir le chaud... Il est possible d'utiliser en thérorie un maximum de 18V ou 20V mais ce n'est vraiment pas recommandé!

Courant maximum sur chaque sortie: 40mA maximum (20mA recommandé), sans dépasser un total de 150mA pour toutes les sorties. On remarquera rapidement qu'il n'est pas possible d'avoir une led sur chaque sortie, toutes allumées en même temps... Nous verons dans un exemple comment utiliser des courants et des tensions plus élevés...




2.2. Utiliser un Arduino pour programmer un autre Arduino

En effet, plusieurs modèles d'Arduino ne possèdent pas de connecteur USB (ainsi que l'électronique qui lui est associée). Dans ce cas, on utilisera un second Arduino comme programmeur. Dans notre exemple, notre utiliserons un Arduino Uno pour programmer un Arduino Pro-Mini.

Voici les connections à effectuer du Uno vers le Pro-Mini:
  • 5V vers Vcc
  • GND vers GND
  • RX0 vers RX1
  • TX1 vers TX0
  • Reset vers GRN

Ensuite, il suffit de configurer l'IDE de la manière suivante:

  • carte à programmer: Arduino Mini-Pro 5V 16MHz avec Atmega328
  • programmateur: Arduino comme ISP

Bien évidemment, on prendra soin d'indiquer la bonne carte à programmer en fonction des besoins...

Ensuite, il suffit de compiler et pousser le résultat sur la carte comme lors de la programmation du Uno et le tour est joué... Après avoir retiré les fils de connection et alimenté correctement le Pro-mini, celui-ci exécutera le programme ainsi compilé...




2.3. Utiliser un module FTDI pour programmer un autre Arduino

Comme dans l'exemple précédent, on désire programmer un Arduino ne possèdant pas de connecteur USB comme le modèle Pro-Mini. Il n'y a rien de bien sorcier ici. Alors pourquoi en parler si cela est si simple? En fait, je me suis rendu compte au cours de mes différentes expériences d'achat en ligne, que les Pro-Mini (et peut-être d'autres modèles) ne sont pas 100% compatibles avec le design original. Et cela arrive souvent au niveau de l'ordre ou du câblage des ports... J'ai donc pris quelques minutes pour rédiger ce petit paragraphe comme pense-bête pour mes prochains montages. ;-)

Cette fois-ci, on utilisera un module FTDI-USB. Mieux qu'une description détaillée, il suffit de considérer que ce module correspond à la partie USB manquante du Pro-Mini en comparaison au modèle Uno...

Les connections sont simples: à gauche le module FTDI-USB, à droite l'Arduino Pro-Mini.



Il suffit de connecter les pins un-pour-un, de haut en bas. On pourra vérifier le plus important: les deux VCC sont bien reliés ensemble! Au moins, il ne risque pas d'y avoir de court-circuit...

Ensuite, il suffit de configurer l'IDE de la manière suivante:
  • carte à programmer: Arduino Mini-Pro 5V 16MHz avec Atmega328
  • programmateur: USBtinyISP
de brancher le câble USB au PC, et enfin de lancer la compilation. Et voilà...



Aucun commentaire:

Publier un commentaire