Arduino - Les bases de la programmation

publicité
1
Voici Arduino
Le circuit microcontrôleur Arduino a excité l'imagination de nombreux passionnés
d'électronique. Il séduit quiconque désire fabriquer des circuits électroniques grâce à
sa facilité d'emploi et à son approche libre, open-source.
Ce circuit vous permet d'exploiter des composants électroniques en les connectant sur
des broches, ce qui lui permet de les contrôler, en allumant par exemple des lumières ou
en contrôlant des moteurs, ou bien en détectant l'environnement, à travers sa luminosité
ou sa température. C'est ce domaine d'emploi qui fait que les circuits Arduino sont
souvent classés dans la catégorie de l'informatique physique. D'un autre côté, puisque
le circuit Arduino peut être connecté à un ordinateur classique via sa prise USB, vous
pouvez faire en sorte qu'il devienne le circuit d'interface pour contrôler les mêmes
composants électroniques depuis votre ordinateur habituel.
Ce chapitre va présenter le circuit Arduino, ses origines et ses constituants principaux.
© 2013 Pearson France – Arduino – Simon Monk
ARDUI__Monk.indb 1
21/03/13 18:05
 
2
Arduino : les bases de la programmation
Les microcontrôleurs
Le composant capital de votre circuit Arduino est un microcontrôleur. Quasiment tous
les autres composants du circuit sont destinés à fournir de la puissance et à permettre
de communiquer avec un autre ordinateur.
Un microcontrôleur est littéralement un petit ordinateur contenu dans une seule
puce. Il embarque même plus de fonctions que les premiers ordinateurs personnels,
puisqu'il réunit un processeur central, un ou deux kilo-octets de mémoire vive (RAM)
pour stocker les données, quelques kilo-octets de mémoire en lecture seule effaçable
(EEPROM) ou en mémoire flash, dans lesquels vous pouvez stocker les programmes,
ainsi que des broches d'entrée et de sortie. Ces broches permettent de relier le microcontrôleur à vos composants électroniques.
Les entrées permettent aussi bien de lire des valeurs numériques (est-ce qu'un interrupteur est ouvert ou fermé ?) que des valeurs analogiques (quelle est la tension présente
sur cette broche ?) Cette polyvalence permet de connecter de nombreux types de
capteurs de lumière, de température, de volume sonore, etc.
De même, les sorties peuvent être exploitées en numérique ou en analogique. Vous
pouvez donc forcer une broche de sortie à prendre l'état éteint ou allumé (0 ou 5 volts)
afin de contrôler l'allumage d'une diode LED (Light-Emitting Diode) ou bien vous servir
de la tension en sortie pour contrôler la vitesse de rotation d'un moteur électrique, ou la
luminosité d'une lampe, au lieu de simplement les allumer et les éteindre.
Sur la carte Arduino, le microcontrôleur est la puce à 28 broches insérée dans un socle
au milieu de la carte. C'est dans cette puce que se trouvent le processeur, la mémoire
et toute l'électronique d'interface avec les broches d'entrée/sortie. Le processeur a été
conçu et réalisé par la société Atmel, un des plus importants fabricants de microcontrôleurs. Chaque fabricant de microcontrôleurs (on les appelle des fondeurs) produit
en réalité des dizaines de puces différentes, regroupées en familles. Il faut savoir que
les microcontrôleurs ne sont pas conçus seulement pour les passionnés d'électronique
(ils ne constituent qu'un faible pourcentage de leur marché). Ces puces sont d'abord
destinées à être incorporées dans les produits d'électronique de loisirs et domestique :
voitures, machines à laver, lecteurs de DVD, jouets pour enfants, et même climatiseurs.
Un des atouts d'Arduino est de simplifier vos choix parmi l'énorme variété proposée
par les fabricants de microcontrôleurs. Cela constitue une standardisation de fait sur
laquelle vous pouvez bâtir. (À vrai dire, comme nous le verrons plus tard, ce n'est pas
exactement la réalité, mais cela s'en rapproche.)
© 2013 Pearson France – Arduino – Simon Monk
ARDUI__Monk.indb 2
21/03/13 18:05
 
Chapitre 1
Voici Arduino
3
Cela signifie que lorsque vous prévoyez de démarrer un nouveau projet, vous ne perdez
pas de temps à commencer par comparer les avantages et inconvénients des différentes
gammes de microcontrôleurs.
Circuits de développement
Nous savons maintenant que le microcontrôleur n'est qu'une puce électronique. Une puce
ne peut pas travailler seule, sans un certain nombre de composants électroniques qui
lui fournissent notamment une source d'électricité régulée et stable (les microcontrôleurs sont assez chatouilleux à ce niveau) ainsi que des moyens de communiquer avec
l'ordinateur qui va servir à concevoir les programmes qui animeront ce microcontrôleur.
C'est à ce moment qu'entre en jeu la notion de circuit de développement. Une carte
Arduino est en fait un circuit de développement à microcontrôleur dont le schéma
de conception matérielle est rendue public (open-source). Cela signifie que le fichier
d'implantation des composants sur le circuit imprimé PCB (Printed Circuit Board) ainsi
que les schémas électriques sont tous disponibles au public. Chacun est donc libre de
s'en servir pour concevoir et fabriquer sa propre carte compatible Arduino.
Tous les fabricants de microcontrôleurs, y compris la société Atmel qui est à l'origine
du microcontrôleur ATmega328 de certaines cartes Arduino, proposent leurs propres
circuits de développement et leurs propres logiciels de programmation. Ces produits
sont en général peu onéreux, mais ils sont d'abord destinés aux ingénieurs électroniques
plutôt qu'aux amateurs. Il en résulte que tant les circuits que les logiciels sont d'un emploi
moins aisé, et réclament donc une plus longue phase d'apprentissage avant que l'on ne
puisse produire quelque chose d'utile avec eux.
Visite guidée de la carte Arduino Uno
La Figure 1.1 montre l'aspect d'une carte Arduino. Découvrons les principaux composants qui la peuplent.
© 2013 Pearson France – Arduino – Simon Monk
ARDUI__Monk.indb 3
21/03/13 18:05
 
4
Arduino : les bases de la programmation
Interrupteur Reset
Connexions numériques
Circuit
d'interface USB
Connecteur de
programmation
Cristal
série
Régulateur de
tension 5 V
Microcontrôleur
Connecteur
d'alimentation
Entrées analogiques
Figure 1.1
Une carte Arduino Uno.
Alimentation secteur
Sur la Figure 1.1, nous pouvons repérer juste sous le connecteur USB un composant
qui est le régulateur de tension 5 V. Ce composant se charge de stabiliser et de réguler
à 5 V la tension d'entrée qui peut varier entre 7 V et 12 V.
En comparaison des autres composants montés en surface (CMS), ce régulateur est
assez volumineux, ce qui lui permet de mieux dissiper la chaleur qu'il dégage pour
faire baisser la tension en délivrant un ampérage suffisant. Cela permettra au circuit
de piloter correctement des composants externes.
Connecteur des sources de tension
Dans le bas de la carte, nous trouvons deux connecteurs (voir Figure 1.1). Le connecteur
de gauche est consacré à la fourniture de différentes tensions. En partant de la gauche,
la troisième broche correspond à Reset qui a la même fonction de réinitialisation que le
bouton Reset en haut à gauche de la carte. La fonction est la même que sur un PC : cela
provoque le redémarrage du microcontrôleur. Pour forcer un redémarrage avec cette
broche, il faut la forcer momentanément à 0 V (état bas).
© 2013 Pearson France – Arduino – Simon Monk
ARDUI__Monk.indb 4
21/03/13 18:05
 
Chapitre 1
Voici Arduino
5
Les broches suivantes de ce connecteur fournissent les différentes tensions : 3,3 V,
5 V, GND et 9 V). La broche GND correspond à la masse, soit 0 V. C'est la référence
de masse par rapport à laquelle toutes les autres tensions de la carte sont exprimées.
Entrées analogiques
Le second connecteur du bas comporte les légendes A0 à A6. Ces broches d'entrée
permettent de mesurer une tension pour pouvoir en utiliser les valeurs dans les
programmes. Précisons que les broches servent à mesurer une tension et non un courant.
Le circuit d'entrée auquel chacune des broches donne accès possède une résistance
interne (impédance) très importante, ce qui fait que le courant passant par la broche
est toujours très faible.
Ces entrées sont désignées comme étant de type analogique, et elles le sont par défaut,
mais vous pouvez également les exploiter en tant qu'entrées numériques ou même
comme sorties numériques.
Connexions numériques
Passons maintenant aux deux connecteurs du haut de la carte, et commençons par
celui de droite (voir Figure 1.1). Les légendes désignent des entrées numériques de 0 à
13 en partant de la droite (Digital). Ces broches peuvent servir d'entrées ou de sorties.
Lorsque vous les utilisez en tant que sorties, elles se comportent comme les broches
de source de tension présentées plus haut, sauf qu'elles fonctionnent toutes en 5 V et
qu'elles peuvent être activées et désactivées depuis un programme. Si vous activez une
de ces broches, la tension présente sera à 5 V. Si vous désactivez la broche, la tension
sera à 0 V. Comme pour les broches de tension, il faut veiller à ne jamais dépasser le
courant maximal qu'elles peuvent supporter. Les deux premières broches à droite (0 et 1)
portent une légende supplémentaire (RX et TX) pour la transmission et la réception.
Ces deux broches sont réservées à la communication ; elles sont, d'une façon indirecte,
les connexions en émission et en réception de la connexion USB vers votre ordinateur.
Toutes les broches numériques peuvent supporter jusqu'à 40 mA (milliampères) à 5 V.
C'est largement suffisant pour alimenter une LED standard, mais assurément pas pour
alimenter directement un moteur électrique.
Le microcontrôleur
Poursuivons notre visite de la carte Arduino en nous intéressant à son cœur : la puce du
microcontrôleur correspond au rectangle noir à 28 broches en bas. Vous constatez que
cette puce est insérée dans un support (DIL), ce qui permet de la remplacer aisément en
cas d'avarie. Le microcontrôleur utilisé sur la carte Arduino Uno est du type ATmega328.
La Figure 1.2 fournit un schéma des principaux sous-systèmes de ce circuit.
© 2013 Pearson France – Arduino – Simon Monk
ARDUI__Monk.indb 5
21/03/13 18:05
 
6
Arduino : les bases de la programmation
Le cerveau de cette puce correspond à l'unité centrale de traitement ou CPU (Central
Processing Unit). C'est une sorte d'automate qui décide de tout ce qui se passe sur la
carte. Il lit une par une les instructions du programme qui est stocké dans la mémoire
flash, puis les exécute en séquence. Parfois, cela suppose d'aller lire des données dans
la mémoire vive (RAM), de les modifier et de les réécrire ou bien de modifier l'état
d'une des broches des sorties numériques entre 0 V et 5 V.
Figure 1.2
Diagramme
schématique
du processeur
ATmega328.
%
!
$ "
#
La partie mémoire EEPROM est analogue à une mémoire flash dans le sens où son
contenu n'est pas effacé à la mise hors tension. Mais, alors que la mémoire flash est
destinée à stocker les instructions du programme, la mémoire EEPROM va mémoriser
les données système et utilisateur qui ne doivent pas être perdues lors d'une réinitialisation ou de la mise hors tension.
Autres composants
Entre le microcontrôleur et le port USB, vous remarquez un petit rectangle argenté
aux coins arrondis. C'est le cristal oscillateur à quartz qui bat 16 millions de fois par
seconde. À chaque battement, le microcontrôleur réalise une opération élémentaire :
addition, soustraction, copie, et autres instructions machine.
Dans l'angle supérieur gauche, nous trouvons le bouton poussoir Reset. Une brève pression
sur cet interrupteur envoie une impulsion logique sur la broche Reset du microcontrôleur,
ce qui le force à redémarrer en effaçant la mémoire. Sachez que les programmes stockés
sur la carte ne sont pas effacés, parce qu'ils sont stockés dans de la mémoire flash non
volatile, c'est-à-dire que le contenu n'est pas perdu en cas de mise hors tension.
Au milieu du bord droit de la carte, nous trouvons un connecteur mâle à six broches
marqué ICSP. C'est un connecteur pour la programmation série de l'Arduino, qui permet
de se passer du port USB. Nous n'utiliserons pas ce connecteur dans ce livre, car nous
profitons de la connexion USB et du logiciel de programmation.
© 2013 Pearson France – Arduino – Simon Monk
ARDUI__Monk.indb 6
21/03/13 18:05
 
Chapitre 1
Voici Arduino
7
Nous trouvons enfin à droite du port USB, au-dessus de l'oscillateur, le circuit d'interface
USB qui convertit les signaux entre le standard USB et les niveaux acceptables par la
carte Arduino.
Les origines d'Arduino
À l'origine, Arduino avait été conçu pour aider les étudiants dans leurs expérimentations. En 2005, il a été proposé à la vente par Massimo Banzi et David Cuartielles. En
quelques années, il est devenu très populaire auprès des concepteurs, des étudiants et
des artistes, par sa facilité d'emploi et sa robustesse.
Un point clé dans le succès de ce circuit est que tous les schémas de conception Arduino
ont été rendus librement accessibles dans le cadre d'une licence Creative Commons.
C'est ce qui a permis de voir apparaître des circuits compatibles encore moins chers.
Seul le nom Arduino est protégé. Les clones portent souvent des noms contenant une
mention du type "*duino" : Boarduino, Seeeduino ou Freeduino. Cela dit, les cartes
officielles qui sont fabriquées en Italie se vendent toujours très bien. Les revendeurs
les plus importants ne vendent que des cartes officielles dans un joli emballage et avec
une garantie de qualité.
Une autre raison du succès d'Arduino est que ce circuit n'est pas limité au microcontrôleur. Une grande quantité de cartes d'extension compatibles avec Arduino est apparue.
Ce genre de carte, appelée bouclier (shield), s'enfiche directement sur la carte Arduino,
dans une relation carte-mère/carte-fille. Vous trouverez des cartes d'extension pour
quasiment tous les besoins, ce qui peut souvent vous éviter de devoir sortir le fer à souder,
car il est bien plus pratique de connecter plusieurs cartes d'extension en les empilant
les unes sur les autres. Voici quelques-unes des cartes boucliers les plus répandues :
• Ethernet, pour permettre à une carte Arduino de devenir un serveur web ;
• moteur, pour piloter un moteur électrique ;
• hôte USB, pour contrôler des périphériques USB ;
• relais, pour contrôler des relais depuis la carte Arduino.
© 2013 Pearson France – Arduino – Simon Monk
ARDUI__Monk.indb 7
21/03/13 18:05
Téléchargement