C Iii
C Iii
III.1. Introduction
Ce chapitre présente l’environnement Arduino et les différents composants électroniques
que nous allons utiliser pour réaliser ce projet. Nous allons présenter chaque composant, donner
la signification de ses broches et ses caractéristiques techniques.
III.2. Arduino
III.2.1. Présentation
Arduino est une plate-forme électronique open source basée sur du matériel et des
logiciels faciles à utiliser. Les cartes Arduino sont capables de lire les entrées - la lumière sur
un capteur, un doigt sur un bouton ou un message Twitter - et de les transformer en une sortie -
en activant un moteur, en allumant une LED, en publiant quelque chose en ligne. Vous pouvez
dire à votre carte quoi faire en envoyant un ensemble d'instructions au microcontrôleur sur la
carte. Pour ce faire, vous utilisez le langage de programmation Arduino (basé sur Wiring ) et le
logiciel Arduino (IDE) , basé sur Processing. [9]
Le projet Arduino est issu d'une équipe d'enseignants et d'étudiants de l'école de Design
d'Interaction d'Ivrea (Italie). Ils rencontraient un problème majeur à cette période (avant 2003 -
2004) : les outils nécessaires à la création de projets d'interactivité étaient complexes et onéreux
(entre 80 et 100 euros). Ces coûts souvent trop élevés rendaient difficiles le développement par
les étudiants de nombreux projets et ceci ralentissait la mise en œuvre concrète de leur
apprentissage.
Leur préoccupation se concentra alors sur la réalisation d'un matériel moins cher et plus
facile à utiliser. Ils souhaitaient créer un environnement proche de Processing, ce langage de
37
CHAPITRE III Environnement Arduino et les composants
utilisés
programmation développé dès 2001 par Casey Reas et Ben Fry, deux anciens étudiants de John
Maeda au M.I.T., lui-même initiateur du projet DBN.
En 2003, Hernando Barragan, pour sa thèse de fin d'études, avait entrepris le développement
d'une carte électronique dénommée Wiring, accompagnée d'un environnement de programmation
libre et ouvert. Pour ce travail, Hernando Barragan réutilisait les sources du projet Processing.
Basée sur un langage de programmation facile d'accès et adaptée aux développements de projets
de designers, la carte Wiring a donc inspiré le projet Arduino (2005).
Comme pour Wiring, l'objectif était d'arriver à un dispositif simple à utiliser, dont les coûts
seraient peu élevés, les codes et les plans « libres » (c'est-à-dire dont les sources sont ouvertes et
peuvent être modifiées, améliorées, distribuées par les utilisateurs eux-mêmes) et, enfin, « multi-
plates-formes » (indépendant du système d'exploitation utilisé).
Conçu par une équipe de professeurs et d’étudiants (David Mellis, Tom Igoe, Gianluca
Martino, David Cuartielles, Massimo Banzi ainsi que Nicholas Zambetti), l'environnement
Arduino est particulièrement adapté à la production artistique ainsi qu'au développement de
conceptions qui peuvent trouver leurs réalisations dans la production industrielle.
Le nom Arduino trouve son origine dans le nom du bar dans lequel l’équipe avait l'habitude
de se retrouver. Arduino est aussi le nom d'un roi italien, personnage historique de la ville
« Arduin d’Ivrée », ou encore un prénom italien masculin qui signifie « l'ami fort ».
38
CHAPITRE III Environnement Arduino et les composants
utilisés
39
CHAPITRE III Environnement Arduino et les composants
utilisés
40
CHAPITRE III Environnement Arduino et les composants
utilisés
C’est principalement ce menu qui est le plus utilisé lorsqu’on programme une carte Arduino.
Il dispose d’un certain nombre de choses très utiles.
41
CHAPITRE III Environnement Arduino et les composants
utilisés
42
CHAPITRE III Environnement Arduino et les composants
utilisés
43
CHAPITRE III Environnement Arduino et les composants
utilisés
Lorsqu’un code est écrit dans l'interface de programmation, certains mots apparaissent en
différentes couleurs qui clarifient le statut des différents éléments.
En bleu, apparaissent les mots-clés reconnus par le langage Arduino comme des constantes.
En gris, apparaissent les commentaires qui ne seront pas exécutés dans le programme. Il est
utile de bien commenter son code pour s'y retrouver facilement ou pour le transmettre à d'autres
personnes. L'on peut déclarer un commentaire de deux manières différentes :
Dans une ligne de code, tout ce qui se trouve après « // » sera un commentaire ;
L’on peut encadrer des commentaires sur plusieurs lignes entre « /* » et « */ ».
Une variable est un espace réservé dans la mémoire vive (RAM) du microcontrôleur. Elle
est caractérisée par un nom qui permet d'y accéder facilement.
Il existe différents types de variables identifiés par un mot-clé dont les principaux sont :
44
CHAPITRE III Environnement Arduino et les composants
utilisés
Dans un sketch Arduino, il est nécessaire de déclarer les variables pour leur réserver un
espace mémoire adéquat. On déclare une variable en spécifiant son type, son nom, puis en lui
assignant une valeur initiale (optionnel).
Exemple :
Les structures de contrôle sont des blocs d'instructions qui s'exécutent en fonction du respect
d'un certain nombre de conditions.
if
Si plusieurs instructions doivent être exécutées, elles doivent être réunies dans un bloc
encadré par une paire d’accolades.
45
CHAPITRE III Environnement Arduino et les composants
utilisés
Si la condition formulée est évaluée comme vraie, alors l’instruction ou les instructions
suivantes sont exécutées.
if-else
L’instruction if-else est une extension de l’instruction if. Si la condition formulée est
évaluée comme fausse, alors l’option est choisie.
switch-case
La structure switch-case sert principalement quand une variable entière est susceptible de
prendre un certain nombre de valeurs connues a priori. Une instruction if pourrait suffire mais la
variante switch-case est considérée ici comme plus élégante.
Les nombres suivis d’un deux-points sont comparés à la valeur de la variante et, lorsqu’il y
a égalité, les instructions qui suivent sont exécutées. L’instruction break entraîne une
interruption dans l’exécution de la structure et donc la sortie de cette structure. La ligne default
46
CHAPITRE III Environnement Arduino et les composants
utilisés
est optionnelle et finit par être atteinte quand aucune des lignes précédentes n’est vérifiée. Elle
est en tout point comparable à l’alternative else dans une construction if-else.
for
La boucle for est toujours utilisée quand on sait, au moment d’entrer dans la boucle,
combien de fois elle doit s’exécuter.
while
Contrairement à la boucle for, seule une condition est formulée dans l’en-tête de la boucle
while. Cela implique, par exemple, que la valeur de la variante figurant dans la condition doit
être modifiée dans le corps de la boucle, faute de quoi vous aurez une boucle sans fin.
Ce type de boucle est utilisé principalement quand on ne sait pas exactement au début de la
boucle combien de fois elle doit s’exécuter.
Break
47
CHAPITRE III Environnement Arduino et les composants
utilisés
Les boucles for et while, qui s’exécutent tant que la condition formulée le permet, disposent
également de ce qu’on peut appeler une « issue de secours ». L’instruction permet en effet de
quitter prématurément une boucle, le sketch reprenant alors aussitôt après celle-ci.
Les constantes sont des expressions prédéfinies dans le langage Arduino. Elles sont utilisées
pour rendre les programmes plus faciles à lire. On distingue :
INPUT
Cette constante est utilisée pour programmer les broches numériques quand il s’agit
d’établir le sens de circulation des données. Si une broche numérique doit servir d’entrée, cette
constante est transmise comme deuxième argument à l’instruction pinMode. La ligne de code
suivante configure la broche 13 comme entrée :
OUTPUT
La constante OUTPUT sert également pour programmer les broches numériques quand il
s’agit de définir une broche numérique comme sortie. La ligne suivante de code configure la
broche 13 comme sortie :
HIGH
La constante HIGH est utilisée pour mettre une sortie numérique au niveau HIGH. La ligne
d’instruction suivante met la broche 8 au niveau HIGH :
48
CHAPITRE III Environnement Arduino et les composants
utilisés
LOW
Cette constante est employée pour mettre une sortie numérique au niveau LOW. La ligne
d’instruction suivante met la broche 8 au niveau LOW :
true
La constante true sert par exemple dans des conditions gouvernant des structures de
contrôle :
Si la variable booléenne a prend la valeur true, l’instruction qui suit l’instruction if est
exécutée.
false
Cette constante est également utilisée dans des conditions gouvernant des structures de
contrôle :
Si la variable booléenne a prend la valeur false, l’instruction qui suit l’instruction if est
exécutée.
Avec l’instruction PinMode, on peut programmer une broche numérique pour qu’elle serve
soit d’entrée soit de sortie.
digitalWrite
L’instruction digitalWrite permet d’une part d’influer sur le niveau de sortie d’une broche
numérique programmée comme sortie avec OUTPUT. Les constantes HIGH et LOW sont
49
CHAPITRE III Environnement Arduino et les composants
utilisés
utilisées. Elle active d’autre part la résistance pull-up interne sur une broche numérique
programmée comme entrée avec INPUT.
digitalRead
L’instruction analogRead permet d’interroger une entrée analogique, une valeur comprise
entre 0 et 1023 est alors délivrée en retour. Ce domaine de valeurs est basé sur la résolution de 10
bits du convertisseur analogique/numérique.
analogWrite
L’instruction analogWrite permet d’agir sur une sortie numérique en utilisant la MLI
(modulation de largeur d’impulsions).
delay
50
CHAPITRE III Environnement Arduino et les composants
utilisés
delayMicroseconds
Si l’instruction delay est trop imprécise du fait que la valeur est interprétée comme une
indication en millisecondes, l’instruction delayMicroseconds peut être utilisée. L’exécution du
sketch est alors interrompue pendant le temps indiqué, la valeur étant interprété comme des
microsecondes. La ligne suivante provoque une attente de cent microsecondes :
millis
L’instruction millis renvoie une valeur indiquant, en millisecondes, le temps écoulé depuis
le début du sketch.
D. Directives de prétraitement
#include
Exemple :
#define
51
CHAPITRE III Environnement Arduino et les composants
utilisés
Exemple :
La carte Arduino Mega 2560 est une carte basée sur le microcontrôleur ATmega2560.
52
CHAPITRE III Environnement Arduino et les composants
utilisés
III.3.1.2. Spécifications
Microcontrôleur ATmega 2560
Fréquence d’horloge 16 MHz
Tension de service 5V
Tension d’entrée (recommandée) 7-12 V
Tension d’entrée (limites) 6-20 V
Ports numériques 54 entrées et sorties (15 sorties commutable en MLI)
Ports analogiques 16 entrées analogiques
Courant maxi par broche d’E/S (c.c) 40 mA
Courant maxi par broche 3,3 V 50 mA
Mémoire 8 Ko (en mémoire Flash)
Chargeur d’amorçage 256 Ko Flash, 8 Ko SRAM, 4 Ko EEPROM
Interface USB
Dimensions 10,16 cm x 5,3 cm
53
CHAPITRE III Environnement Arduino et les composants
utilisés
54
CHAPITRE III Environnement Arduino et les composants
utilisés
Microcontrôleur (13)
Un microcontrôleur est un circuit intégré qui rassemble sur une puce plusieurs éléments
complexes dans un espace réduit. C’est le cerveau de la carte ; il s’occupe de tout ce qui est
calcul, exécution des instructions du programme et gestion des ports d’entrée/sortie. [14]
La carte Arduino MEGA 2560 peut être alimentée soit via le port USB (1) ou à l’aide d’une
alimentation externe via le port jack (4). La source d’alimentation est sélectionnée
automatiquement par la carte. La carte peut fonctionner avec une alimentation externe 6 à 20V.
Cependant, si la carte est alimentée avec moins de 7V, la broche 5V pourrait fournir moins de
5V, et la carte pourrait être instable. Si on utilise plus de 12V, le régulateur de tension de la carte
pourrait chauffer ce dernier. Les broches d’alimentation sont les suivantes :
VIN (9) : la tension d’entrée positive lorsque la carte Arduino est utilisée avec une
source de tension externe.
5V (7) : la tension régulée utilisée pour faire fonctionner le microcontrôleur et les
autres composants de la carte. Le 5V régulé fourni par cette broche peut donc
provenir soit de la tension d’alimentation VIN via le régulateur de la carte, ou bien
de la connexion USB ou de tout autre source d’alimentation régulée.
3,3V (6) : une alimentation de 3,3V fournie par le circuit intégré FTDI (circuit
intégré faisant l’adaptation du signal entre le port USB de l’ordinateur et le port série
55
CHAPITRE III Environnement Arduino et les composants
utilisés
Son rôle est de cadencer le microcontrôleur à une fréquence précise de 16MHz. Ainsi il
permet à la carte Arduino Mega 2560 de calculer les données de temps.
Chacune des 54 broches numériques de la carte Arduino MEGA 2560 peut être utilisée soit
comme une entrée numérique, soit comme une sortie numérique. Ces broches fonctionnent en
5V. Chaque broche peut fournir ou recevoir un maximum de 40mA d’intensité et possède une
résistance pull-up interne (déconnectée par défaut) de 20-50KΩ. Cette résistance interne s’active
sur une broche en entrée à l’aide de l’instruction digitalWrite(broche, HIGH).
Communication Série :
Port Série Serial : 0 (RX) et 1 (TX) ;
Port Série Serial1 : 19 (RX) et 18 (TX) ;
Port Série Serial2 : 17 (RX) et 16 (TX) ;
Port Série Serial3 : 15 (RX) et 14 (TX) ;
Interruptions Externes : broche 2 (interrupt 0), 3 (interrupt 1), 18 (interrupt 5), 19
(interrupt 4), 20 (interrupt 3), et 21 (interrupt 2). Ces broches peuvent être configurées
pour déclencher une interruption sur une valeur basse, sur un front montant ou
descendant, ou sur un changement de valeur.
Impulsion PWM (Modulation de largeur d’impulsion) : les Broches de 2 à 13 et 44 à 46
fournissent une sortie PWM 8 bits à l’aide de la fonction analogWrite ().
56
CHAPITRE III Environnement Arduino et les composants
utilisés
La carte Arduino MEGA 2560 dispose de 16 entrées analogiques, chacune pouvant fournir
une mesure d’une résolution de 10 bits (1024 niveaux soit de 0 à 1023) à l’aide de la fonction
analogRead () du langage Arduino. Par défaut, ces broches mesurent entre 0V (valeur 0) et le 5V
(valeur 1023). Les broches analogiques peuvent être utilisées en tant que broches numériques.
AREF (14) : tension de référence pour les entrées analogiques. Utilisé avec
analogReference().
Reset (5) : mettre cette broche au niveau BAS entraîne la réinitialisation du
microcontrôleur.
Bouton reset (12)
Le capteur HC-SR04 utilise les ultrasons pour déterminer la distance d'un objet. Il offre une
excellente plage de détection sans contact, avec des mesures de haute précision et stables. Son
fonctionnement n'est pas influencé par la lumière du soleil ou des matériaux sombres, bien que
des matériaux comme les vêtements puissent être difficiles à détecter. [15]
57
58
CHAPITRE III Environnement Arduino et les composants
utilisés
Ce capteur comprend quatre broches et la configuration des broches de celui-ci est décrite
dans ce tableau.
Boche Description
Il s’agit d’une broche d’entrée, utilisée pour initialiser la mesure en transmettant des
Trig
ondes ultrasonores en gardant cette broche haute pendant 10µs
Il s’agit d’une broche de sortie, qui passe au niveau haut pendant une période de
Echo
temps spécifique et qui équivaut à la durée pendant laquelle l’onde revient au capteur
59
CHAPITRE III Environnement Arduino et les composants
utilisés
Le principe de fonctionnement du capteur est entièrement basé sur la vitesse du son dans
l’air.
60
CHAPITRE III Environnement Arduino et les composants
utilisés
La vitesse du son dans l’air est d’environ 340 m / s ou 0,034 cm / µs. Si nous multiplions la
vitesse du son par le temps que les ondes sonores ont parcouru, on obtient la distance parcourue
par les ondes sonores.
La distance entre le capteur et l’objet n’est en réalité que la moitié de cette distance car les
ondes sonores se sont déplacées du capteur vers l’objet et de l’objet vers le capteur. Nous devons
donc diviser le résultat par deux.
Distance (cm) = Vitesse du son (cm/µs) x Temps (µs) / 2 = 0,034 x Temps (µs) / 2
III.3.3. Servomoteur
III.3.3.1. Définition
III.3.3.2. Constitution
61
CHAPITRE III Environnement Arduino et les composants
utilisés
La partie électrique d’un servomoteur ne dispose que de 3 fils codés par couleur, qui
permettent d’alimenter le moteur et de lui transmettre des ordres de positions sous forme d’un
signal codé en largeur d’impulsion plus communément appelés PWM ou RCO. Cela signifie que
c’est la durée des impulsions qui détermine l’angle absolu de l’axe de sortie et donc la position
du bras de commande du servomoteur. Le signal est répété périodiquement, en général toutes les
20 millisecondes, ce qui permet à la carte électronique de contrôler et de corriger
continuellement la position angulaire de l’axe de sortie, cette dernière étant mesurée par le
potentiomètre.
C=Fxr
62
CHAPITRE III Environnement Arduino et les composants
utilisés
Pmax = C/d
63
CHAPITRE III Environnement Arduino et les composants
utilisés
Broche Description
64
CHAPITRE III Environnement Arduino et les composants
utilisés
Le SIM800L EVB est un module GSM/GPRS capable d'envoyer et recevoir des SMS, de
passer et recevoir des appels, de transférer des données via l'unité GPRS. Ce module SIM800L
dispose d'un ensemble d'interface série de niveau TTL, d'un ensemble d'interface d'alimentation,
ainsi que d'un ensemble d'antennes à utiliser lors de l'interfaçage sur ce module.
65
CHAPITRE III Environnement Arduino et les composants
utilisés
Tableau III. 4 : configuration des broches du module GSM SIM800L EVB [24]
Le module GPS NEO-6M est un récepteur GPS qui peut localiser tous les emplacements sur
terre car il est capable de suivre environ 22 satellites. Ce module (voir page suivante) nous
fournit les coordonnées GPS (latitude, longitude, altitude), la date et l’heure en temps réel. [25]
66
CHAPITRE III Environnement Arduino et les composants
utilisés
Tension de fonctionnement : 3 – 5 V
Courant de fonctionnement : 45 mA
Température de fonctionnement : -40 à 85 °C
Débit en bauds : 9600 (par défaut)
Taille : 23 mm x 35 mm
Taille de l’antenne : 25 mm x 25 mm
67
CHAPITRE III Environnement Arduino et les composants
utilisés
Le DFPlayer Mini MP3 est un module qui peut être connecté directement à un haut-parleur
ou à un écouteur. Il peut être utilisé comme un module autonome avec batterie, haut-parleur et
bouton poussoir. Il peut être, également, utilisé en combinaison avec un microcontrôleur tel
qu'un Arduino (On pourra utiliser des commandes série pour lancer une musique, aller à la
suivante ou la précédente, augmenter le volume, le diminuer, etc.…).
Il s'utilise avec une carte micro SD de 32Gb maximum et permet de lire les fichiers mp3 ou
wave qui y sont stockés.
68
CHAPITRE III Environnement Arduino et les composants
utilisés
Le module peut être commandé par une liaison série RS232 à une vitesse de 9600 bauds.
Le module peut renvoyer des informations lors de l’envoi d’une commande par la liaison
série.
Il s’agit de la sortie canal droit qui peut être reliée à l’entrée d’un amplificateur externe.
Il s’agit de la sortie canal gauche qui peut être reliée à l’entrée d’un amplificateur externe.
C’est la sortie de l’amplificateur intégré qui peut être relié à la borne positive d’un haut-
parleur externe.
Masse : GND
69
CHAPITRE III Environnement Arduino et les composants
utilisés
C’est la sortie de l’amplificateur intégré qui peut être relié à la borne négative d’un haut-
parleur externe.
Un bouton poussoir relié à cette broche permet de passer soit à la piste précédente du fichier
sélectionné ou de diminuer le niveau de volume délivré par l’amplificateur :
Un bouton poussoir relié à cette broche permet de passer soit à la piste suivante du fichier
sélectionné ou d’augmenter le niveau de volume délivré par l’amplificateur :
Sur cette broche, il est possible de brancher des touches qui permettent d’éviter d’utiliser la
liaison série.
Ces touches sont branchées en parallèle sur l’entrée du module en utilisant pour chaque
touche une résistance d’une valeur précise qui permet au DFPlayer de déterminer quelle
est la commande sélectionnée lors de l’appui sur une touche,
Le nombre de touches à brancher est limité à 10,
Il est possible de connecter moins de touches, mais il est indispensable de respecter la
valeur de la résistance associée à la touche pour permettre au DFPlayer de déterminer
quelle est la commande sélectionnée.
Réseau de Touche port 2 : ADKEY_2
70
CHAPITRE III Environnement Arduino et les composants
utilisés
On branche sur cette broche la borne positive d’une clé USB (32Go) pour augmenter la
capacité de stockage du module.
On branche sur cette broche la borne négative d’une clé USB (32Go) pour augmenter la
capacité de stockage du module.
71
CHAPITRE III Environnement Arduino et les composants
utilisés
72
CHAPITRE III Environnement Arduino et les composants
utilisés
III.3.8. Haut-parleur
III.3.8.1. Description
Un haut-parleur est transducteur électromécanique destiné à produire des sons à partir d’un
signal électrique. [30]
73
CHAPITRE III Environnement Arduino et les composants
utilisés
Puissance : 3 W
Impédance : 4 Ω
Un afficheur LCD est une interface visuelle entre un système (projet) et l’utilisateur. Son
rôle est de transmettre les informations utiles d’un système à un utilisateur. Il affichera donc des
données susceptibles d’être exploiter par l’utilisateur d’un système. [31]
74
CHAPITRE III Environnement Arduino et les composants
utilisés
6 E Entrée de validation
7 à 14 D0 à D7 Bits de données
16 A Anode du rétroéclairage (+5)
15 K Cathode du rétroéclairage (masse)
75
CHAPITRE III Environnement Arduino et les composants
utilisés
Broche Description
LIGNES
COLONNES
76
CHAPITRE III Environnement Arduino et les composants
utilisés
Une diode électroluminescente, plus connue sous l’appellation DEL ou LED (Light
Emitting Diode), est un dispositif optoélectronique capable d’émettre de la lumière lorsqu’il est
parcouru par un courant électrique. [36]
77
CHAPITRE III Environnement Arduino et les composants
utilisés
Nous avons utilisé deux types de résistances dans ce projet : fixes et variables
Leur utilité principale est d’augmenter la résistance à un endroit d’un circuit électrique.
78
CHAPITRE III Environnement Arduino et les composants
utilisés
III.4. Conclusion
Dans ce chapitre nous avons présenté la plate-forme Arduino avec ses différentes cartes, son
logiciel et son langage de programmation. Après cela, on a présenté les différents composants
électroniques que nous avons utilisés pour réaliser ce projet, tout en spécifiant la signification de
leurs boches et leurs caractéristiques techniques, et le fonctionnement de certains composants.
Nous verrons dans le prochain chapitre qui est dédié à la réalisation de notre projet,
comment brancher ces composants avec la carte Arduino.
79