IX. Micro-contrôleur▲
Un micro-contrôleur est un petit processeur informatique relié à des entrées et des sorties numériques (0 ou 1) ou analogiques (tension variable). Il est capable de mémoriser et d'exécuter un programme visant à interpréter les entrées pour agir sur les sorties. Il se programme en général à l'aide d'un ordinateur mais peut fonctionner de manière autonome. En milieu industriel, les automates programmables qui servent à gérer et piloter des machines en sont une illustration. Ce type de machine intervient sur la commande d'un système mais ne peut délivrer beaucoup de puissance. Pour cela, on relaye ses commandes avec des transistors ou des relais.
Il existe de nombreux types et tailles de micro-contrôleurs avec plus ou moins d'entrées /sorties et d'interfaces. À petite échelle, les PIC (produits par la société Microchip) sont des circuits intégrés bien connus des électroniciens depuis de nombreuses années. De nombreuses autres marques comme ATMEL, STMicroelectronics, Parallax ou Motorola produisent également des machines de ce type. Ils sont en général programmés en C/C++ et nécessitent des connaissances approfondies en électronique. La plate-forme Arduino a apporté une avancée majeure dans l'accessibilité de cette technologie au plus grand nombre, par sa simplicité d'utilisation et son coût abordable.
Depuis l'émergence de cette plate-forme, de nombreux projets parallèles ont été développés : par exemple, Pinguino(9), Beeboard(10), Freeduino(11), Ginsing(12) ou Comet, Hackteria bioElectronics(13), etc.
IX-A. Arduino▲
Arduino est un circuit imprimé en matériel libre (dont les plans de la carte elle-même sont publiés en licence libre, mais dont certains composants sur la carte, comme le microcontrôleur par exemple, ne sont pas en licence libre) sur lequel se trouve un microcontrôleur qui peut être programmé pour analyser et produire des signaux électriques, de manière à effectuer des tâches très diverses comme la domotique (le contrôle des appareils domestiques - éclairage, chauffage…), le pilotage d'un robot, etc.
IX-A-1. Micro-contrôleur▲
La puce la plus courante qui équipe la carte Arduino est la ATMEGA328. Certains anciens modèles ont une puce ATMEGA168 qui est dotée d'un peu moins de mémoire. Les cartes Arduino Mega sont dotées d'une puce ATMEGA644 qui a plus de mémoire et plus d'entrées/sorties. Tous les processeurs de la famille ATMEGA se programment sensiblement de la même manière mais des différences peuvent apparaître pour des fonctions plus complexes. Pour plus de détails à ce sujet, référez-vous à la rubrique Matériel du site Arduino : http://arduino.cc/en/Main/Hardware.
Dans l'interface de programmation, le menu Tools > Board permet de définir avec quelle machine l'on travaille (voir chapitre « Prise en main rapidePrise en main rapide »). Le micro-contrôleur traite des informations reçues par ses entrées pour agir sur les sorties suivant un programme défini par l'utilisateur et ce via l'environnement de programmation Arduino.
IX-A-2. Interface USB/série▲
Cette partie permet d'établir une communication avec un ordinateur, directement avec un câble USB, afin de programmer le contrôleur ou d'échanger des informations avec un programme qu'il exécute. Côté ordinateur, la carte Arduino apparaît au même titre que n'importe quel périphérique USB et nécessite l'installation d'un pilote (cela est expliqué dans le chapitre installation). Lorsqu'on utilise cette connexion, l'ordinateur assure directement l'alimentation de la carte Arduino via la liaison USB.
IX-A-3. Alimentation▲
Ce circuit assure l'alimentation de l'ensemble des composants et des sorties suivant deux modes différents :
- lorsque la carte est connectée à un ordinateur via USB, c'est le port USB de l'ordinateur qui fournit l'énergie (5 V) ;
- lorsqu'on branche une source d'énergie au connecteur de la carte (batterie, transformateur ou pile), le système peut fonctionner de manière autonome.
Ce circuit inclut un régulateur de tension à 5 V mais il doit être alimenté entre 6 et 20 V. On conseille en général de l'alimenter plutôt entre 7 et 12 V pour garder une marge en basse tension et éviter que le circuit ne chauffe trop (car le régulateur de tension disperse toute surtension en chaleur). Sur les premiers modèles de cartes Arduino, un petit sélecteur permettait de choisir le mode mais depuis le modèle « Duemilanove », le passage de l'un à l'autre mode est automatique. Il ne faut pas brancher sur le 5 V de la carte des composants qui consomment plus de 500 mA.
IX-A-4. Entrées/sorties▲
C'est par ces connexions que le micro-contrôleur est relié au monde extérieur. Une carte Arduino standard est dotée de :
- 6 entrées analogiques.
- 14 entrées/sorties numériques dont 6 peuvent assurer une sortie PWM (voir explication en bas dans la section « Les sorties numériquesEntrées/sorties »).
Les entrées analogiques lui permettent de mesurer une tension variable (entre 0 et 5 V) qui peut provenir de capteurs(14) ou d'interfaces diverses (potentiomètres, etc.).
Les entrées/sorties numériques reçoivent ou envoient des signaux « 0 » ou « 1 » traduits par 0 ou 5 V. On décide du comportement de ces connecteurs (entrée ou sortie) en général dans l'initialisation du programme (voir chapitre « Programmer ArduinoProgrammer Arduino »), mais il peut être aussi changé dans le corps du programme.
Lorsqu'on utilise une entrée numérique, il est important de s'assurer que le potentiel de l'entrée « au repos » est bien celui auquel on s'attend. En effet, si on laisse l'entrée « libre », c'est-à-dire câblée à rien, le potentiel qu'elle prendra ne sera pas nécessairement 0 V. On parle alors de potentiel flottant, car l'électricité statique ambiante ou les perturbations électromagnétiques peuvent faire apparaître des valeurs très fluctuantes. Pour s'assurer du bon fonctionnement, l'on utilise une liaison protégée par une résistance qui va « tirer vers le haut » (5 V) ou « tirer vers le bas » (0 V) le potentiel au repos, comme une sorte d'élastique. On utilise en général une résistance de 10 kOhms.
Les sorties numériques peuvent actionner de nombreux composants (LED, transistor, etc.) mais elles ne peuvent pas fournir beaucoup de courant (40 mA pour une carte Arduino UNO). Pour piloter des circuits de plus forte puissance, il faut passer par des transistors ou des relais (voir chapitre « Précautions d'utilisationPrécautions d'utilisation »).
La puce ATMEGA n'est pas capable de sortir des tensions variables. Heureusement, 6 des sorties numériques (N° 3, 5, 6, 9, 10, 11) peuvent produire un signal PWM. Ce sigle signifie « Pulse Width modulation » en anglais ; en français l'on parle de MLI : "« Modulation de largeur d'impulsion ». Il s'agit d'un artifice permettant de produire une tension variable à partir d'une tension fixe.
La technique s'apparente approximativement à du morse : le signal de sortie est modulé sous forme d'un signal carré dont la largeur des créneaux varie pour faire varier la tension moyenne :
IX-A-5. ISP▲
ISP signifie « In-circuit Serial Programming ». Dans le cas où le micro-contrôleur de votre carte Arduino viendrait à ne plus fonctionner, il est possible de remplacer la puce défectueuse. Ainsi le port ISP vous permet de configurer votre nouvelle puce pour la rendre compatible avec l'IDE Arduino. En effet le micro-contrôleur de la carte Arduino possède un bootloader (ou bios) qui lui permet de dialoguer avec l'IDE. Il faut pour cela acheter un programmateur ISP ou il est aussi possible d'utiliser une autre carte Arduino comme programmateur ISP.
IX-A-6. Circuit de commande▲
La carte Arduino est un circuit de commande qui sert principalement à contrôler des actionneurs et recenser les informations des capteurs. Il n'est pas conçu pour alimenter les éléments qui requièrent un certain niveau de puissance, comme des moteurs. Dans le cas où l'on voudrait utiliser de tels actionneurs, il faudrait utiliser un circuit additionnel que l'on désigne par circuit de puissance (voir chapitre « Précautions d'utilisationPrécautions d'utilisation »).
IX-B. Circuits additionnels▲
Il est possible de spécialiser la carte Arduino en l'associant avec des circuits additionnels que l'on peut fabriquer soi-même ou acheter déjà montés. Lorsqu'ils se branchent directement sur la carte, ces circuits s'appellent des « shields » ou cartes d'extension. Ces circuits spécialisés apportent au système des fonctionnalités diverses et étendues dont voici quelques exemples :
- ethernet : communication réseau ;
- Bluetooth ou zigbee : communication sans fil ;
- pilotage de moteurs (pas à pas ou à courant continu) ;
- pilotage de matrices de LED : pour piloter de nombreuses LED avec peu de sorties ;
- écran LCD : pour afficher des informations ;
- lecteur de carte mémoire : lire ou stocker des données ;
- lecteur de MP3 ;
- GPS : pour avoir une information de position géographique ;
- joystick ;
- etc.