Introduction aux systèmes Arduino
Introduction aux systèmes Arduino
aux systèmes
de commande à
base de la carte
ARDUINO
Introduction aux systèmes de commande à base de la carte Arduino
SOMMAIRE
Microcontrôleur………………………………………………………………………………………..….. 4
Le bus de données……………………………………………………………………………………..…… 6
Les mémoires………………………………………………………………………………………………… 6
Le contrôleur d’interruption……………………………………………………………………………. 6
L’horloge interne…………………………………………………………………………………………… 7
La famille Arduino……………………………………………………………………………………….... 7
Arduino Uno…………………………………………………………………………………………………. 7
Arduino Leonardo………………………………………………………………………………………….. 8
Arduino Esplora…………………………………………………………………………………..………. 10
Arduino Nano……………………………………………………………………………………..……….. 12
Arduino M0………………………………………………………………………………………..……….. 13
Arduino Ethernet………………………………………………………………………………………….. 14
Sommaire Page 1
Introduction aux systèmes de commande à base de la carte Arduino
L’alimentation électrique…………………………………………………………………..………….. 17
Les entrées/sorties…………………………………………………………………………………..…… 20
L’interface série……………………………………………………………………………………..……. 24
La barre de menu……………………………………………………………………………………..….. 30
La barre d’icônes………………………………………………………………………………........…… 30
Les onglets……………………………………………………………………………………………..…... 30
La zone d’édition…..................................................................................................... 31
Le moniteur série……………………………………………………………………………….……….. 36
Sommaire Page 2
Introduction aux systèmes de commande à base de la carte Arduino
Microcontrôleur :
Dans cette première partie, nous allons nous intéresser à l’élément principal dans une
carte Arduino : le microcontrôleur, à savoir sa structure matérielle générale et son principe
de fonctionnement.
Un microcontrôleur (µc) est un circuit intégré, qui regroupe sur une puce les éléments
essentiels d'un ordinateur (microprocesseur, mémoires, unités périphériques et
interfaces d'entrées-sorties), dans un espace très réduit, Il est généralement moins
puissant en terme de rapidité ou de taille mémoire et présente un coût réduit par rapport
aux microprocesseurs polyvalents utilisés dans les ordinateurs personnels , Ceci en fait un
composant très bon marché, parfaitement adapté pour piloter les systèmes embarquées
dans de nombreux domaines d’application : Informatique, MultiMedia (téléviseurs, cartes
audio, cartes vidéo…etc.), Contrôle des processus industriels(régulation, pilotage),
Automobile (ABS, injection, GPS, airbag), Robotique (commande de rebots industriels), et
d’autres.
La figure ci-dessous montre un microcontrôleur ATmega 328P qu’on trouve sur la carte
Arduino :
Microcontrôleur Page 3
Introduction aux systèmes de commande à base de la carte Arduino
Mémoire de Mémoire de
programme données
(Flash + EEPROM) (SRAM)
Bus de données
Horloge
interne Unité centrale de
traitement
Oscillateur
CPU
Bus de données
Appelée encore CPU (Central Processing Unit) en anglais, c’est le cœur et l’élément le plus
important dans un microcontrôleur, son rôle est l’exécution des instructions machine d’un
Microcontrôleur Page 4
Introduction aux systèmes de commande à base de la carte Arduino
programme, elle peut adresser des mémoires, gérer des entrées ou sorties et réagir à des
interruptions.
Le bus de données :
C’est un ensemble de fils électriques, permettant le transfert des données au sein du µc,
en effet, le bus de données interconnecte les différents blocs afin de leur permettre
d'échanger des données.
Les mémoires :
doit exécuter, c’est une mémoire non volatile, c’est-à-dire qu’elle ne perde pas ses
données lorsque le µc n’est plus alimenté.
- Mémoire de données (SRAM) : Utilisée pour gérer les résultats de calcul en cours,
Un port d’entrée/sortie, soit numérique ou analogique (on verra par la suite la différence
entre les deux), permet au µc de communiquer avec le monde extérieur, il constitue une
interface à laquelle une périphérie (par exemple : une résistance, une LED, un bouton
poussoir, un capteur te température, un transistor…etc.) peut être connectée.
Le contrôleur d’interruption :
Utilisé lorsqu’une interruption matérielle (en anglais Interrupt ReQuest ou IRQ), est
déclenchée par un périphérique d’entrée/sortie du µc, à ce moment-là, ce dernier
doit arrêter temporairement, l’exécution normale du programme afin de traiter un autre,
appelé programme ou service d’interruption.
Ce type de programme est très utile dans des situations où on est besoin de réagir à des
actions externes détectées par des capteurs par exemple. Nous verrons des exemples
après.
Microcontrôleur Page 5
Introduction aux systèmes de commande à base de la carte Arduino
L’horloge interne :
En regardant une carte Arduino, on peut constater tout simplement qu’elle intègre un
microcontrôleur avec d’autres périphériques et composants dont nous allons découvrir en
détail dans la partie consacrée à la carte Arduino.
La famille Arduino :
Les constructeurs d’Arduino fabriquent plusieurs cartes, chacune avec des capacités
différentes. D’autre part, la forme, la taille et le nombre d’entrées/sorties, jouent un rôle
très important dans le choix d’une carte, c’est pour cela les constructeurs ont mis un vaste
choix de cartes à microcontrôleur, afin que l’utilisateur trouve le modèle qui réponde à ses
besoins. En outre, ces cartes sont matériellement libres, ce qui signifie que d'autres
personnes peuvent modifier et produire des dérivés de cartes Arduino qui fournissent
encore plus de facteurs de forme et de nouvelles fonctionnalités.
Dans cette partie, nous allons passer en revue sur des principaux modèles de la famille,
même si nous ne verrons pas tous les modèles, vous pouvez consulter le catalogue du
constructeur sur le site officiel ou faire des recherches sur internet afin de découvrir
d’autres types de cartes.
Arduino UNO :
Basée sur un microcontrôleur ATmega 328P (Atmel), l'UNO est un excellent choix pour
votre premier Arduino. Il a tout ce dont vous avez besoin pour commencer. Il possède 14
broches d'entrée / sortie numériques (dont 6 peuvent être utilisées comme sorties PWM :
Pulse Width Modulation ou modulation de la largeur d’impulsion en français (MLI)), 6
entrées analogiques, une connexion USB, une prise
Les différents composants et fonctionnalités de cette carte seront expliqués dans la section
suivante.
Microcontrôleur ATmega328P
Tension de service 5V
Entrées analogiques 6
Mémoire Flash 32 KB
SRAM 2 KB
EEPROM 1 KB
Interface USB
Poids 25 g
Arduino Leonardo :
Arduino Leonardo est équipée d’un microcontrôleur ATmega32u4, cette carte diffère des
autres précédentes en ce que l'ATmega32u4 a intégré la communication USB, éliminant le
besoin d'un processeur secondaire. Cela permet au Leonardo d'apparaître connecté sur un
ordinateur, en tant que souris et clavier.
Microcontrôleur ATmega32u4
Tension de service 5V
Entrées analogiques 12
Mémoire Flash 32 KB
SRAM 2.5 KB
EEPROM 1 KB
Interface USB
Poids 20 g
Arduino Esplora :
Arduino Esplora est une carte dérivée de l'Arduino Leonardo. Elle diffère de toutes les
cartes Arduino en ce qu'il fournit un certain nombre de capteurs intégrés prêts à l'emploi.
L’Esplora est conçu pour les personnes qui veulent débuter avec Arduino sans avoir à se
familiariser avec l'électronique.
Microcontrôleur ATmega32u4
Tension de service 5V
Mémoire Flash 32 KB
SRAM 2.5 KB
EEPROM 1 KB
Interface USB
Poids 20 g
Tableau 3 (suite)
La carte Mega 2560 est compatible avec la plupart des shields conçus pour l'Uno et les
anciennes cartes Duemilanove ou Diecimila. Le Mega 2560 est une mise à jour de l'Arduino
Mega, qu'il remplace.
Microcontrôleur ATmega2560
Tension de service 5V
Entrées analogiques 16
SRAM 8 KB
EEPROM 4 KB
Interface USB
Poid 37 g
Tableau 4 (Suite)
Arduino Nano :
Cette carte est caractérisée par sa taille qui est largement petite par rapport aux autres
cartes. Equipée d’un microcontrôleur ATmega328, elle a plus ou moins la même
fonctionnalité de l'ancien Arduino Duemilanove, mais dans un package différent. Il ne
manque qu'une prise d'alimentation DC et fonctionne avec un câble USB Mini-B au lieu
d'un câble standard.
Architecture AVR
Tension de service 5V
La
La famille
famille Arduino
Arduino Page 11
Introduction aux systèmes de commande à base de la carte Arduino
Entrées analogiques 8
Mémoire Flash 32 KB
SRAM 2 KB
EEPROM 1 KB
Interface USB
Dimensions 18 mm* 45 mm
Poid 7g
Tableau 5 (suite)
Arduino M0 :
Avec l'ajout de la carte M0, la famille Arduino devient plus grande avec un nouveau
membre offrant des performances accrues. La puissance de son noyau Atmel donne à cette
carte une flexibilité améliorée et augmente la portée des projets que l'on peut penser et
faire; de plus, cela fait du M0 un bon outil pédagogique pour apprendre le développement
d'applications 32 bits.
SRAM 32 KB
Poid 21 g
Arduino Ethernet :
C’est un Arduino Uno intégrant un contrôleur Ethernet TCP / IP WizNet W5100.
être utilisé pour stocker des fichiers à diffuser sur le réseau, est accessible via la
bibliothèque SD.
Les broches 10, 11, 12 et 13 sont réservées pour l'interfaçage avec le module Ethernet et ne
doivent pas être utilisées autrement. Cela réduit le nombre de broches disponibles à 9, 4
étant disponibles en tant que sorties PWM. Un module optionnel « Power over Ethernet »
peut également être ajouté à la carte.
Tension de service 5V
Entrées analogiques 6
Mémoire Flash 32 KB
SRAM 2 KB
EEPROM 1 KB
Carte Micro SD
Poid 28 g
Entrées-sorties numériques
Bouton de réinitialisation
Microcontrôleur
Ces éléments sont les plus importants à connaitre dans la carte Uno, par la suite on
découvrira d’autres avec leur fonction.
- Microcontrôleur ATmega328P.
- Une tension de service de 5V.
- 14 Entrées/sorties dont 6 sont commutable en MLI.
- 6 entrées analogiques.
- Mémoire Flash de 32Ko avec 0.5k0 utilisé par le bootloader.
- Mémoire SRAM de 2 K0.
- Mémoire EEPROM DE 1Ko.
- Fréquence d’horloge de 16MHz.
- Interface de communication USB.
L’alimentation électrique :
- Via l’interface USB qui connecte la carte à l’ordinateur, cette potion sert aussi à
échanger des données entre l’ordinateur et la carte, cette interface peut fournir un
courant maximal de 500 mA (largement suffisant pour réaliser des montages
simples), elle est protégé contre les courants forts grâce à un polyfusible, mais
malgré tout ça, il faut toujours réaliser les circuits avec plus de soin et de
concentration.
- Brancher un adaptateur de tension externe ou une batterie au connecteur
d’alimentation appelée prise jack.
La figure ci-dessous montre les deux types de prises à utiliser avec la carte Uno :
Notez bien :
Avant de brancher une batterie ou bien un adaptateur de tension externe, il faut bien
respecter les limites de tensions d’alimentation citées dans les spécifications par le
constructeur, dès qu’il s’agit de tension ou de courant, il faut consulter les informations
suivantes :
Si vous utilisez un câble USB pour alimenter ou bien échanger des données avec un
ordinateur, la carte sera directement liée avec ce dernier, autrement dit, la présence
d’un court-circuit peut simplement affecter le port USB de l’ordinateur et endommager
la carte mère. Afin d’éviter tout cela, je vous conseille d’utiliser un concentrateur
Support isolateur
Vers le port
USB de
l’ordinateur
Je profite aussi de cette occasion pour vous dire qu’il est totalement déconseillé de
poser la carte directement sur un support métallique, ou une table pleine de fils
dénudés, ceci provoquera un court-circuit évidement. A fin de remédier à ça, il faut
utiliser des tampons en caoutchouc ou des écarteurs en les insérant sur les 4 trous
forés de 3mm de diamètre sur la carte, ou bien fixer avec des vis la carte sur un
support isolateur en plastique.
Une partie dédiée à la réalisation du montage électrique, tandis qu’une autre consacrée au
développement du programme. La programmation s’effectue à travers un environnement
dans lequel vous allez éditer le programme, de le compiler et le transmettre en suite via le
port USB au microcontrôleur. L’opération de transfert et de chargement du programme est
assurée par le chargeur d’amorçage (bootloader), c’est un petit logiciel installé dans une
zone de la mémoire flash du µc.
L'ATmega328P sur l'Arduino Uno est préprogrammé avec un chargeur de d’amorçage qui
vous permet de télécharger du nouveau code sans l'utilisation d'un programmateur
matériel externe.
Les entrées/sorties :
Capteur Actionneur
En général, le rôle d’une entrée de la carte Arduino est de recevoir des informations
provenant d’un capteur (bouton poussoir, capteur de température, potentiomètre,
résistance photo-électrique…etc.) et les transmettre au µc qui réagit, selon le programme
de travail contenu dans sa mémoire pour commander la sortie. Cette dernière peut être
liée à un actionneur comme un servomoteur ou bien un dispositif lumineux ou sonore.
Une entrée / sortie numérique peut prendre l’un des trois états physiques suivant : "haut"
(HIGH), "bas" (LOW) ou "haute impédance" (INPUT).
L'état "haut" (HIGH) signifie que la broche génère un signal. Cet état se traduit
généralement par une tension de 5 volts en sortie de la broche avec une carte Arduino
classique.
L'état "bas" (LOW) signifie que la broche ne génère pas de signal. Cet état se traduit
généralement par une tension de 0 volt en sortie de la broche.
L'état "haute impédance" (INPUT) est un état un peu particulier. Dans cet état, la broche
ne génère aucun signal. L'état "haute impédance" signifie que la broche est "en lecture"
(en entrée). C'est cet état qui permet de "lire" un bouton par exemple.
Les deux premières broches 0 (RX : réception) et 1 (TX : transmission), ont une deuxième
fonction et sont utilisées par l’interface série de la carte.
Un signal analogique est un signal qui varie dans le temps et pouvant prendre une infinité
de valeurs intermédiaires comme le montre l’exemple dans le graphique ci-dessous.
Pour pouvoir exploiter des mesures analogiques avec le microcontrôleur, il faut convertir
la mesure analogique en une grandeur numérique. C'est justement le but des
convertisseurs analogique/numérique (CAN ou ADC : Analog to Digial Conveter en
anglais).
Par exemple, une résolution de 1 bit n'autoriserait que deux valeurs ( ) : zéro et un. Une
résolution de 2 bits permettrait quatre valeurs ( ) : 0, 1, 2 et 3. Si nous essayions de
mesurer une plage de 0-5 volts avec une résolution de 2 bits, et que la tension mesurée
était de 4 volts, notre CAN afficherait une valeur numérique de 3, car 4 volts se situent
entre 3,75 et 5V. Il est plus facile d'imaginer cela avec la figure suivante:
Donc, avec notre exemple CAN avec une résolution de 2 bits, il ne peut représenter la
tension qu’avec quatre valeurs résultantes possibles. Si la tension d'entrée est comprise
entre 0 et 1,25, le CAN renvoie le 0 numérique; si la tension est comprise entre 1,25 et 2,5,
le CAN renvoie une valeur numérique de 1. Et ainsi de suite.
Remarque : Si vous délivrez à une entrée analogique une tension supérieure à 5v, vous
risquez de griller ce canal ou bien d’endommager complètement le microcontrôleur de la
carte. Vérifiez-vous toujours sous quelles tensions vous travaillez.
Sous certains chiffres des entrées/sorties numériques se trouve un symbole (⁓) appelé
tilde, indiquant que la broche est commutable en sortie analogique, il s’agit là d’une
broche MLI. Les broches 3, 5, 6, 9, 10, et 11 peuvent alors, être servi comme sorties
analogiques grâce à la technique de modulation de largeur d’impulsion (MLI ou PWM).
Un signal MLI (Figure 20) est un signal d’amplitude de tension et de fréquence constantes,
on peut faire varier la largeur d’impulsion de ce signal en changeant la valeur d’un
paramètre dit « rapport cyclique ». Plus l’impulsion est large plus la sortie reçoit d’énergie.
Rapport cyclique
L’interface série :
Les cartes Arduino telles que les cartes Uno, MEGA2560 et Due ont toutes un port série
matériel qui utilise le port USB de la carte. Ce port permet de charger des sketchs sur la
carte à l'aide d'un câble USB. Le code d’un sketch peut utiliser le même port USB/série
pour communiquer avec le PC en utilisant une fenêtre du moniteur de l’interface série ou
une application de traitement par exemple. Le port USB apparaît en tant que port COM
virtuel sur le PC.
L'Arduino Uno n'a qu'un seul port série, car le microcontrôleur utilisé sur l'Uno ne possède
qu'un seul port série intégré. L'Arduino MEGA 2560 et Arduino Due ont tous les deux 3
ports série supplémentaires.
Cette figure montre le seul port série disponible sur l'Arduino Uno encadré en rouge.
Ce type de communication avec votre carte Arduino peut être utile dans de nombreux cas :
Sur cette page de téléchargement, vous trouverez différentes versions de l’IDE. Etants
utilisateurs de Windows, La version qui nous intéresse se trouve dans l'encadré en haut de
page (figure ci-dessous). Cliquez là-dessus pour obtenir la dernière version de l’[Link]
serez automatiquement redirigé vers une page vous proposant de soutenir le projet
Arduino. Libre à vous de soutenir ou non le projet Arduino et vous pouvez cliquer sur "Just
download" pour télécharger le logiciel gratuitement. Le téléchargement commence.
Une fois le téléchargement est terminé, allez-vous sur le dossier de téléchargement et vous
lancez le fichier [Link], poursuivez l'installation et autorisez le processus
d'installation du pilote lorsque vous recevez un avertissement du système d'exploitation.
Vous voyez alors la liste des composants qui seront installées :
Choisissez le répertoire d'installation (je vous conseille de garder le répertoire par défaut) :
Le processus va extraire et installer tous les fichiers requis pour exécuter correctement le
logiciel Arduino IDE.
Pour lancer l’IDE, allez dans le menu démarrer ou dans votre bureau et cliquez sur l’icône
de l’IDE Arduino, vous attendez un moment, Une fois l'environnement de développement
lancé, vous devriez vous retrouver devant la fenêtre ci-dessous (figure). Il s'agit de
l'interface principale de l'environnement de développement Arduino.
En l’observant de plus près, vous pourrez remarquer différentes zones, nous allons les
passer toutes en revue, en partant du haut de la fenêtre vers le bas.
Chacune de ces parties a une fonctionnalité bien précise que nous allons voir ensemble
immédiatement.
La barre de menu :
Dans la barre de menu, vous trouverez les différents menus grâce auxquels vous pourrez
appeler certaines fonctions de l’IDE.
La barre d’icônes :
La série des icônes sous la barre de menu permet de réaliser diverses actions extrêmement
communes rapidement, d'un simple clic de souris.
L’icône "moniteur série", permet d'ouvrir le moniteur série pour communiquer avec
la carte Arduino.
Les onglets :
Le nombre de fichiers de code source peut être supérieur à ce que votre écran peut
afficher. Il est alors très pratique d'utiliser les raccourcis "Onglet précédent", "Onglet
suivant" et la liste d'onglet proposé par le menu flèche.
La zone d’édition :
La zone d’édition qui est pour le moment encore complètement vierge (figure 32), est
l’endroit où vous pouvez rédiger vos sketchs. Vous y saisissez le code source ainsi que les
instructions qui conduiront le microcontrôleur à faire ce que vous voulez. La structure
générale d’un sketch Arduino est représentée par l’organigramme de la figure suivante :
La fonction loop() fait exactement ce que son nom suggère (boucle en français), elle boucle
de façon consécutive et sans fin, permettant à votre programme de changer et de
répondre.
Chacune des deux fonctions forment ensemble avec son nom un bloc d’exécution identifié
par des accolades {}. Celles-ci servent d’éléments délimiteurs pour savoir où la définition
de la fonction commence et où elle s’arrête. En général la structure des deux fonctions
setup() et loop() dans un sketch est illustré dans l’exemple suivant :
void setup() {
//…
void loop() {
//…
Cette zone d'information affiche diverses informations sur le programme, les erreurs de
compilation, le transfert du programme, etc.
En cas d'erreur, vous trouverez dans cette zone d'information, toutes les informations
nécessaires pour résoudre les erreurs de syntaxes et autres problèmes de transfert.
Si une ligne d'erreur est fournie par le compilateur, celle-ci sera mise en surbrillance dans
la zone d'édition (figure 35).
Etape 1 :
Une vérification du code du sketch est faite par l’IDE afin d’assurer que la syntaxe est
correcte.
Etape 2 :
Le code est ensuite envoyé au compilateur qui transforme le code source de votre sketch
Arduino en fichier binaire (au format Intel HEX) compréhensibles par le microcontrôleur
de la carte : c’est le code machine.
Etape 3 :
Le chargeur d’amorçage (bootloader) transmet le fichier HEX, via USB, à la mémoir flash
du microcontrôleur.
Une fois votre sketch est achevé, vérifié et compilé avec succès, vous pourriez le
transmettre au microcontrôleur de votre carte. Première des choses, vous devriez
sélectionner le type de la carte avec laquelle vous travaillez (Arduino Uno dans ce cas).
Pour ce faire allez-vous dans le menu Outils de l’IDE, choisissez ‘Type de carte’ et cochez la
carte ‘Arduino/Genuino Uno’ (figure 36).
Afin de pouvoir entrer en communication avec votre carte, vous devriez sélectionner le bon
port COM. Vous restez toujours dans le menu Outils et vous sélectionnez ‘Port’ et cochez le
même port COM apparaissant dans votre gestionnaire de périphériques. Dans mon cas le
port COM4 sur lequel ma carte est branchée, est détecté (figure 37).
Vous pouvez ensuite transmettre tranquillement le sketch sur la carte en cliquant sur
l’icône ‘téléverser’.
Pendant le téléchargement du sketch, les trois petites LED lumineuses qui se trouvent sur
la carte Uno réagissent :
Le moniteur série :
Le moniteur série a pour but de communiquer avec la carte Arduino connectée au PC.
Celui-ci permet de transmettre et/ou recevoir des informations de la carte Arduino sous
forme de texte.
Ce moniteur série est très utile lors de la conception d'un programme Arduino pour faire
des tests. En affichant dans son écran des variables ou de simples chaines de caractères, il
est possible de voir où son programme plante, se bloque, etc.