7
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

Arduino - Les bases de la programmationArduino : les bases de la programmation Figure 1.1 Une carte Arduino Uno. Alimentation secteur Sur la Figure 1.1, nous pouvons repérer juste

  • Upload
    others

  • View
    16

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Arduino - Les bases de la programmationArduino : les bases de la programmation Figure 1.1 Une carte Arduino Uno. Alimentation secteur Sur la Figure 1.1, nous pouvons repérer juste

1Voici ArduinoLe 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.

ARDUI__Monk.indb 1 21/03/13 18:05

© 2013 Pearson France – Arduino – Simon Monk

Page 2: Arduino - Les bases de la programmationArduino : les bases de la programmation Figure 1.1 Une carte Arduino Uno. Alimentation secteur Sur la Figure 1.1, nous pouvons repérer juste

2 Arduino : les bases de la programmation

Les microcontrôleursLe 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 micro-contrôleur à vos composants électroniques.Les entrées permettent aussi bien de lire des valeurs numériques (est-ce qu'un inter-rupteur 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 microcon-trô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.)

ARDUI__Monk.indb 2 21/03/13 18:05

© 2013 Pearson France – Arduino – Simon Monk

Page 3: Arduino - Les bases de la programmationArduino : les bases de la programmation Figure 1.1 Une carte Arduino Uno. Alimentation secteur Sur la Figure 1.1, nous pouvons repérer juste

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éveloppementNous 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 UnoLa Figure 1.1 montre l'aspect d'une carte Arduino. Découvrons les principaux compo-sants qui la peuplent.

ARDUI__Monk.indb 3 21/03/13 18:05

© 2013 Pearson France – Arduino – Simon Monk

Page 4: Arduino - Les bases de la programmationArduino : les bases de la programmation Figure 1.1 Une carte Arduino Uno. Alimentation secteur Sur la Figure 1.1, nous pouvons repérer juste

4 Arduino : les bases de la programmation

Figure 1.1

Une carte Arduino Uno.

Alimentation secteurSur 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 tensionDans 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).

Interrupteur Reset

Cristal

Circuit

d'interface USB

Régulateur de

tension 5 V

Connecteur

d'alimentation

Connexions numériques

Connecteur de

programmation

série

Microcontrôleur

Entrées analogiques

ARDUI__Monk.indb 4 21/03/13 18:05

© 2013 Pearson France – Arduino – Simon Monk

Page 5: Arduino - Les bases de la programmationArduino : les bases de la programmation Figure 1.1 Une carte Arduino Uno. Alimentation secteur Sur la Figure 1.1, nous pouvons repérer juste

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 analogiquesLe 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ériquesPassons 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ôleurPoursuivons 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.

ARDUI__Monk.indb 5 21/03/13 18:05

© 2013 Pearson France – Arduino – Simon Monk

Page 6: Arduino - Les bases de la programmationArduino : les bases de la programmation Figure 1.1 Une carte Arduino Uno. Alimentation secteur Sur la Figure 1.1, nous pouvons repérer juste

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éinitiali-sation ou de la mise hors tension.

Autres composantsEntre 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.

ARDUI__Monk.indb 6 21/03/13 18:05

© 2013 Pearson France – Arduino – Simon Monk

Page 7: Arduino - Les bases de la programmationArduino : les bases de la programmation Figure 1.1 Une carte Arduino Uno. Alimentation secteur Sur la Figure 1.1, nous pouvons repérer juste

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érimenta-tions. 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 microcon-trô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.

ARDUI__Monk.indb 7 21/03/13 18:05

© 2013 Pearson France – Arduino – Simon Monk