Académique Documents
Professionnel Documents
Culture Documents
de la Recherche Scientifique
*****************
Direction Générale des Etudes Technologiques
*****************
Institut Supérieur des Etudes Technologiques de Djerba
*****************
Département Technologies de l’Informatique
Atelier Interfaces et
Communication
(ARDUINO)
Élaboré par :
Slah MHAYA
Public cible :
Classe de 2ème année
Licence Technologies de l’Informatique
(Système Embarqué et Mobile)
Version 2016
AVANT-PROPOS
Ce support est consacré à la mise en œuvre d’applications d’interfaçage et d’exploitation des différents
protocoles de communication par un microcontrôleur.
Cet atelier permet à l’étudiant d’acquérir des compétences pratiques lui permettant de concevoir et de
déployer une solution sous l’environnement Arduino. A la fin de cet atelier, l’étudiant sera capable mettre en
œuvre une application d’interfaçage et de communication via les protocoles les plus standards (série,
OneWire, parallèle,..)
Comme pré requis, cet atelier nécessite des connaissances de base en architecture et systèmes
(Systèmes Industriels), Réseaux et Protocoles, les microcontrôleurs et leur programmation.
Le support présente neuf ateliers, dont chacun est précédé par une partie intitulée «Présentation ». Cette
partie vise d’une part, à faire le lien avec les parties théoriques en question, et d’autre part, à se rappeler des
concepts de bases nécessaires.
Le premier TP (TP1 : commande d’une diode LED) est précédé par une présentation sous forme de
diapositives, au cours de laquelle il y’aura une description de l’environnement Arduino (matériel et logiciel).
Cette présentation est disponible en consultation dans l’espace de cours réservé à notre institut sur la
plateforme MOODLE à l’adresse ent.uvt.rnu.tn.
Le contenu, ainsi que l’enseignement pédagogique de cet atelier peut toujours évoluer en fonction des
critiques et remarques constructives des lecteurs.
2
SUIVI DES VERSIONS DU SUPPORT
Pré requis
Architecture et systèmes
Programmation des microcontrôleurs
Objectifs généraux
Niveau cible
Volume horaire
- 3h de Travaux Pratiques pour chaque groupe
Soit en total : 45h
Moyens pédagogiques
- PC
- Carte Arduino
- Périphériques d’E/S
- Vidéoprojecteur
Evaluation
- Coefficient : 2
- Note non présentielle : 20%
- Moyenne des TP : 80%
3
Atelier Interfaces et Communication TRAVAUX PRATIQUES
Plan
Gestion du clavier
-Travaux pratique N°4 :
4
TP 1 : COMMANDE D’UNE DIODE LED
Objectifs spécifiques :
Le but de ce TP est de commander une diode LED à l’aide d’une carte Arduino UNO.
A la fin du TP, l’étudiant sera capable de réaliser un clignotement et un jeu de lumière à l’aide de plusieurs
diodes LED.
Volume horaire :
3 heures
5
1 Présentation :
La diode électroluminescente (LED) émet de la lumière. Elle est polarisée: la patte “+” est la plus longue, l’autre patte
est la patte “-”. Les broches numériques de l’Arduino, lorsqu’elles sont configurées en sorties et qu’elles sont à l’état
1 ou haut (HIGH), fournissent une tension de 5 volts, supérieure à ce que peut accepter une LED. Les LED doivent
donc être couplées en série avec une résistance (sauf pour la broche numérique 13 qui est déjà câblée en série avec
une résistance de valeur moyenne pour une LED ( 1K ohm ), on peut donc, dans la plupart des cas, directement lui
brancher une LED).
2 Manipulation 01 :
Le but de cette manipulation est de faire clignoter une diode LED toutes les secondes.
6
Figure 4 : branchement d'une diode LED
Vous notez l’utilisation d’une résistance en série avec la diode LED pour minimiser l’appel en courant.
Une fois la dernière ligne exécutée, la carte revient au début de la troisième phase et recommence sa lecture et son
exécution des instructions successives. Et ainsi de suite. Cette boucle se déroule des milliers de fois par seconde et
anime la carte.
7
Figure 6 : Vérification et chargement du programme
3 Manipulation 02 :
Modifiez le programme précédent pour commander deux diodes LED (choisissez les broches de votre choix)
4 Manipulation 03 :
En utilisant six diodes LED, réalisez un jeu de lumière (exemple : un chenillard)
8
TP 2 : UTILISATION D’UN BOUTON POUSSOIR
Objectifs spécifiques :
Le but de ce TP est la gestion du bouton poussoir. A la fin du TP l’étudiant sera capable de lire l’état d’un
bouton et de réaliser un traitement selon cet état (commander une diode LED ou afficher un message)
Volume horaire :
6 heures
9
1 Présentation :
Les boutons sont les capteurs les plus simples. En appuyant sur un bouton, on connecte ses fils, de telle sorte que le
bouton agit comme un interrupteur. En relâchant le bouton, on interrompt le circuit. Il existe des boutons de
différentes tailles et formes. Quand on utilise une plaque à essais, il est pratique d’employer un bouton avec quatre
fils. Les fils fonctionnent par paires, si bien que deux fils adjacents sont toujours connectés l’un à l’autre.
Pour lire une broche de donnée, elle doit être connectée à quelque chose. On ne doit pas lire une broche qui n’est
pas connectée car son état est instable. Une résistance pull-up met la broche à l’état haut (HIGH) quand elle n’est
pas connectée ce qui évite son instabilité.
2 Manipulation 01 :
Au cours de cette manipulation, nous allons commander une diode LED à l’aide d’un bouton poussoir. Lorsqu’on
appuie sur le bouton, la LED va allumer et lorsqu’on relâche le bouton la LED s’éteindra.
3 Manipulation 02 :
Modifiez le programme précédent de telle sorte que le premier appui sur le bouton poussoir allume la diode LED et
que le second appuie l’éteint.
10
4 Manipulation 03 :
Nous allons réaliser un dé numérique à l’aide de trois diodes LED. L’appuie sur le bouton poussoir va générer un
numéro aléatoire entre 1 et 6 ; le numéro obtenue sera codé de la façon suivante :
Bonus :
Pour générer un numéro aléatoire, vous devez utiliser les fonctions randomSeed() et random().
11
TP 3 : GESTION DU CLAVIER
Objectifs spécifiques :
Le but de ce TP est la gestion du clavier. L’étudiant sera capable à la fin de ce TP de lire un code à partir du
clavier pour réaliser un traitement spécifique en sortie.
Volume horaire :
6 heures
12
1 Présentation :
Le clavier dispose de 12 touches arrangées selon la matrice des téléphones sur une grille de 3X4. Les touches sont
reliées sur une matrice, il suffit donc de 7 pins d'un microcontrôleur pour pouvoir l'utiliser (3 colonnes et 4 lignes).
2 Manipulation 01 :
Au cours de cette manipulation, vous devez réaliser un montage qui permet de lire le numéro du bouton appuyé par
l’utilisateur et d’envoyer son code sur le moniteur série de l’Arduino.
13
Figure 12 : Ajout d'une bibliothèque
Bonus :
Pour communiquer avec le moniteur série de l’Arduino, il faut utiliser la bibliothèque Serial (Serial.begin,
Serial.print, Serial.println,…)
3 Manipulation 02 :
Au cours de cette manipulation vous allez réaliser une serrure codée.
Principe de fonctionnement :
Un code à plusieurs chiffres (4 chiffres par exemple) doit être saisi par l’utilisateur pour ouvrir une porte. Le
programme commence par envoyer le message « Saisir code » sur le moniteur série. Si le code saisi est correct, une
diode LED s’allume et le message « code correct » est envoyé sur le moniteur série, sinon le programme envoie le
message « code erroné » suivi de « Saisir code ».
14
TP 4 : COMMANDE D’UN AFFICHEUR LCD
Objectifs spécifiques :
Le but de ce TP est de commander un afficheur LCD. L’étudiant sera capable d’afficher des messages et
gérer la position du curseur de l’afficheur
Volume horaire :
6 heures
15
1 Présentation :
Les afficheurs LCD (Liquid Crystal Display) sont devenues incontournables dans toute application qui demande la
visualisation de paramètres, il s’agit donc d’une interface Homme/Machine. Ils sont très utilisés dans les montages à
microcontrôleur, et permettent une grande convivialité. Au cours de ce TP nous allons utiliser un afficheur LCD
alphanumérique de 2x16 caractères représenté par la figure ci-dessous :
N.B : Les broches 15 et 16 ne sont présentes que sur les afficheurs LCD avec rétroéclairage avec :
En observant le brochage de l’afficheur, on constate qu’il faut un minimum de 6 sorties pour le commander. En effet,
si on utilise l’adressage sur 4 bits et que l’on se prive de la lecture dans l’afficheur, il nous faut commander les six
broches EN, RS, D4, D5, D6, et D7.
Ce mode 4 bits est bien pratique quand on utilise un petit microcontrôleur où le nombre d’entrées/sorties est très
limité. En contrepartie, le mode 4 bit complique un petit peu le protocole de communication (logiciel) puisque qu’il
faut passer la donnée 8 bits en deux fois (4 + 4 = 8 ). Ce passage s’effectue comme suit :
puis :
En mode 4 bits, les broches D0, D1, D2, D3 doivent rester « en l’air » (non connectées).
16
A l’inverse, si on utilise toutes les broches de l’afficheur il faut 11 sorties pour le commander. Mais cela n’apporte
rien de plus; en mode 4 bits toutes les fonctionnalités sont disponibles.
3 Manipulation 01 :
Le but de cette première manipulation et d’afficher un texte fixe sur l’écran LCD (votre nom et prénom par exemple)
Fichier > Exemples > LiquidCrystal > HelloWorld. Adaptez le code pour afficher votre nom et prénom (sur deux
lignes). Si vous ne trouverez pas la bibliothèque « LiquidCrytal », il faut l’ajouter
Bonus :
Ajouter une animation au texte affiché : clignotement, défilement à droite, défilement à gauche.
4 Manipulation 02 :
Reprenez la manipulation du TP précédent (serrure codée) et utilisez l’afficheur LCD à la place du moniteur série.
5 Manipulation 03 :
Vous allez réaliser un jeu où il faut deviner un nombre choisi au hasard par le programme (fonction
random(Min,MAX+1)) . Le jeu commence par afficher le message « Devine un nombre entre Min et Max » (avec Min
et Max : les limites inférieure et supérieure des nombres à deviner). Après chaque tentative, le programme vous
17
dira si le nombre que vous avez proposé est trop grand, trop petit, ou si vous avez trouvé la bonne réponse et après
combien d’essais.
Exemple d’exécution :
15
Trop petit
22
Trop grand
17
Trop grand
16
Exact
4 essais
18
TP 5 : GESTION DE LA CONVERSION A/N
Objectifs spécifiques :
Volume horaire :
6 heures
19
1 Présentation :
En plus des pattes numériques, l’Arduino possède 6 pattes (A0..A5) qui peuvent être utilisées comme entrées
analogiques. Ces entrées prennent un voltage (entre 0 et 5V) et le convertissent en un nombre compris entre 0 (0V)
et 1023 (5V) (résolution de 10 bits). Un composant très utile qui utilise ces entrées est le potentiomètre (aussi
appelé résistance variable). Quand il est connecté avec 5V entres ces pattes extérieures, la patte centrale ressort des
valeurs comprises entre 0 et 5V en fonction de l’angle selon lequel son axe est tourné (ex : 2,5V au milieu). Cette
valeur peut être ensuite utilisée comme variable dans le programme.
2 Manipulation 01 :
Lors de cette manipulation, vous allez réaliser un programme qui permet de lire la valeur analogique délivrée par le
potentiomètre sur l’une des entrées analogiques et d’afficher le résultat sur le moniteur série de l’Arduino.
3 Manipulation 02 :
Lors de la précédente manipulation, vous avez remarqué que les valeurs affichées sur le moniteur série sont
comprises entre 0 et 1023. Modifiez votre programme pour qu’il calcule les valeurs réelles de la tension lue
(comprises entre 0 et 5V) et les affiche sur un afficheur LCD.
20
Bonus :
Vous pouvez utiliser la fonction map() pour passer de la valeur numérique (0-1023) à la valeur analogique (0-5).
4 Manipulation 03 :
Commandez le clignotement d’une diode LED à l’aide du potentiomètre : plus la valeur de la tension lue est grande,
plus le clignotement de la diode est rapide et inversement.
5 Manipulation 04 :
Commandez la luminosité d’une diode LED à l’aide du potentiomètre : plus la valeur de la tension lue est grande,
plus la luminosité de la diode augmente et inversement.
Bonus :
Il faut brancher la diode LED sur l’une des pins de l’ARDUINO (3, 5, 6, 9, 10 et 11) qui utilisent le PWM. Pour
commander la diode LED, utilisez la commande AnalogWrite(). Il est à noter que le rapport cyclique de la sortie
PWM varie de 0 à 255. Pensez à utiliser encore une fois la fonction map().
6 Manipulation 05 :
Réalisez une jauge électronique à l’aide de 5 diodes LED : plus la tension augmente plus le nombre de diodes
allumées augmente
3
4
21
TP 6 : L’ACQUISITION DE LA TEMPERATURE
ET DE L’HUMIDITE : LE CAPTEUR DHT11
Objectifs spécifiques :
Le but de ce TP est de faire l’acquisition de l’information envoyée par le capteur numérique DHT11.
L’étudiant sera capable de gérer une communication OneWire et d’exploiter les informations acquises à
savoir la température et l’humidité
Volume horaire :
3 heures
22
1 Présentation :
Le capteur DHT11 est constitué d’un senseur de température à base d'une thermistance à coefficient négatif de
température et d’un capteur d’humidité résistif. Un microcontrôleur intégré s’occupe de faire les mesures, de les
convertir et de les transmettre. Le DHT11 fait partie des circuits numériques qui dialoguent au moyen d'une seule
ligne série bidirectionnelle de type OneWire (Un fil).
• Résolution 1 % RH.
• Précision à 25 °C : ± 5% RH.
2 Manipulation 01 :
Téléchargez la bibliothèque « DHT11 » et ajoutez-la au dossier des bibliothèques de l’Arduino.
Testez le bon fonctionnement du programme en affichant les résultats sur le moniteur série.
23
Figure 18 : branchement du capteur DHT11
3 Manipulation 02 :
Modifiez le programme précédent pour afficher les valeurs de la température et de l’humidité sur un afficheur LCD.
Ajoutez deux diodes LED l’une pour contrôler la température et l’autre pour l’humidité (les LED s’allumeront
lorsqu’on atteint un seuil bien déterminé de température ou d’humidité ; essayez de faire varier les valeurs de
température et d’humidité pour atteindre ces seuils et allumer les LED)
Bonus :
La ligne de connexion (DATA) peut faire jusqu'à 20 m de longueur entre le capteur et la carte Arduino, dans ce cas il
faut diminuer la valeur de R à 4,7 kW.
24
TP 7 : MESURE DE LA DISTANCE :
LE CAPTEUR HC-SR04
Objectifs spécifiques :
Le but de ce TP est de détecter un obstacle et de renvoyer une distance en utilisant le capteur ultrason HC-
SR04. L’étudiant sera capable de faire des traitements spécifiques selon la distance acquise.
Volume horaire :
6 heures
25
1 Présentation :
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.
1.1 Caractéristiques :
Dimensions : 45 mm x 20 mm x 15 mm
Plage de mesure : 2 cm à 400 cm
Résolution de la mesure : 0.3 cm
Angle de mesure efficace : 15 °
Largeur d'impulsion sur l'entrée de déclenchement (Trigger Input Pulse width) : 10 µs
Vcc : alimentation en 5V
Trig : entrée. Une impulsion (5V) supérieure à 10µs permet de lancer la mesure.
Echo : sortie. La durée de l’impulsion correspondra à la distance.
Gnd : commun
26
1.3 Calcul de la distance :
La distance parcourue par un son se calcule en multipliant la vitesse du son, environ 340 m/s par le temps de
propagation, soit : d = v · t (distance = vitesse · temps).
Le HC-SR04 donne une durée d'impulsion en dizaines de µs. Il faut donc multiplier la valeur obtenue par 10 µs pour
obtenir le temps t.
On sait aussi que le son fait un aller-retour. La distance vaut donc la moitié.
La formule d = durée/58 cm figure aussi dans le manuel d'utilisation du HC-SR04 car la fraction 17/1000 est égale à
1/58.8235.
Note : A grande distance, la surface de l'objet à détecter doit mesurer au moins 0.5 m²
2 Manipulation 01 :
Téléchargez une des bibliothèques du capteur HC-SR04 disponibles.
Ecrire un programme qui permet de lire la distance à partir du capteur et d’envoyer l’information sur le moniteur
série de l’Arduino (la distance doit être exprimée en cm).
27
3 Manipulation 02 :
Ajoutez un deuxième capteur à votre montage. Le but est de réaliser un détecteur d’obstacle. Le premier capteur
détecte un obstacle à droite (distance inférieur à 5 cm par exemple) et votre programme affiche le message
« obstacle à droite » sur le moniteur série et le deuxième capteur détecte un obstacle à gauche et le programme
affiche « obstacle à gauche ».
Bonus :
Vous pouvez ajouter deux diodes LED pour signaler l’approche d’un obstacle (une de chaque côté)
4 Manipulation 03 :
Modifier le montage précédent en ajoutant un afficheur LCD. Le but de cette manipulation est d’afficher tous les
messages sur l’écran de l’afficheur au lieu de les envoyer au moniteur série
28
TP 8 : COMMANDE D’UN SERVOMOTEUR
Objectifs spécifiques :
Volume horaire :
6 heures
29
1 Présentation :
Les servomoteurs sont des actionneurs très utilisés en modélisme et dans l’industrie. Ils ont comme caractéristique
principale leur « couple », c'est-à-dire la force de rotation qu’ils peuvent exercer. Plus un servomoteur aura de
couple et plus il pourra actionner des « membres » lourds comme déplacer un bras qui porte une charge.
Pour la robotique de loisirs, les servomoteurs ont en général peu de couple et sont de taille réduite, bien adaptée à
un encombrement minimal et à une énergie disponible limitée.
Figure 22 Le servomoteur
Les servomoteurs sont pilotés par un fil de commande et alimentés par deux autres fils.
Habituellement, ces 3 fils sont rassemblés dans une prise au format standard.
Un fil rouge est relié à l’alimentation positive (+5 ou +6 V selon le servomoteur), le fil noir est relié à la masse (GND)
et le fil jaune est utilisé pour la commande.
2 Commande du servomoteur
Pour commander un servomoteur il faut envoyer sur son fil de commande (fil jaune) une impulsion dont la durée
correspond à l’angle désiré. Historiquement, cette impulsion était délivrée par un circuit oscillateur ( exemple :
NE555).
Avec la programmation de l’Arduino, le circuit oscillateur n’est plus nécessaire ; la bibliothèque « servo » permet de
piloter un servomoteur en lui transmettant simplement l’angle sur lequel il souhaite se positionner (cet angle est
compris entre 0° et 180°).
30
3 Manipulation
Téléchargez la bibliothèque « Servo » qui permet de commander le servomoteur.
Lancez l’exemple de la bibliothèque « Sweep » qui permet de piloter le servomoteur de 0° à 180° et inversement
d’une façon continue.
4 Manipulation 02 :
Le but de cette manipulation est de commander le servomoteur à l’aide d’un potentiomètre ; lorsque l’axe du
potentiomètre tourne, le bras du servomoteur doit tourner à son tour et dans le même sens.
Bonus :
N’oubliez pas que la valeur numérique délivrée par le CAN est comprise entre 0 et 1023 et que le servomoteur
accepte un angle compris entre 0 et 180° ; pensez à utiliser la fonction map().
5 Manipulation 03 :
Reprenez le programme de la manipulation 02 du TP8 (utilisation de deux capteurs pour détecter les obstacles à
droite et à gauche). Modifiez ce programme pour qu’il commande le servomoteur de telle sorte que lorsque
l’obstacle détecté est à gauche, il fait tourner le bras du servomoteur à droite et inversement.
31
TP 9 : INTERFAÇAGE LABVIEW - ARDUINO
(INITIATION)
Objectifs spécifiques :
Le but de ce TP est de s’initier à l’interfaçage entre le logiciel Labview et la carte Arduino UNO.
L’étudiant sera capable d’établir cet interfaçage en manipulant les différents outils et logiciels nécessaires à
l’établissement de cette communication. Il pourra aussi commander les Entrées/Sorties de l’Arduino à l’aide
de Labview en exploitant des exemples simples fournis par labVIEW.
Ce TP sera une initiation aux étudiants pour l’année suivante (3ème année, spécialité SEM) qu’ils pourraient la
développer et l’exploiter pour la réalisation des mini projets au niveau du module Projet Professionnel
Personnalisé (PPP).
Volume horaire :
3 heures
32
1 Présentation :
Le but de cet atelier est de découvrir comment se fait l’interfaçage entre le logiciel LabVIEW avec un Arduino. C’est
aussi de comprendre comment récupérer les données de différents capteurs, comment par l’appuie sur un bouton il
sera possible d’allumer une LED ou faire tourner un servomoteur
LabVIEW est un logiciel développé par National Instruments permettant de coder à l’aide de diagramme. Grâce à ce
logiciel il est possible de créer des outils de mesure et de contrôle.
Pour établir cette communication, un certain nombre d’outils et logiciels sont nécessaires :
Télécharger et installer la dernière version des drivers NI-VISA : c’est un pilote qui permet
à Labview de communiquer avec les instruments comme l’Arduino(dans notre cas en
utilisant une connexion USB
Nous allons télécharger les deux types de VI ensuite nous verrons la différence entre les deux outils.
Dans la zone de recherche de VIPM, tapez Arduino et chercher labVIEW Interface For Arduino :
33
Sélectionner LIFA et cliquez sur l’icône install :
3 Interfaçage labVIEW-Arduino
L’interfaçage diffère selon le type de VI installé.
- le sketch « LIFA_Base.ino » : c’est ce sketch que vous compilerez et transfèrerez à la carte Arduino
- le sketch « LabVIEWInterface.ino » : il contient l’implémentation de toutes les fonctions utilisées par
LabVIEW pour dialoguer avec la carte Arduino
- le fichier d’inclusion « LabVIEWInterface.h » : ce fichier d’en-tête est particulièrement intéressant puisque
c’est lui qui contient les « define » que vous pouvez modifier pour adapter LIFA.
Finalement, il faut charger le sketch « LIFA_Base.ino » dans l’environnement Arduino, le compilez puis programmez
la carte Arduino ; ainsi la carte est prête à fonctionner avec labVIEW
34
3.2 Installation du firmwar MakerHub(LINX)
L’installation de MakerHub(LINX) est beaucoup plus facile. Pour ce faire connecter la carte Arduino sur le port USB
du pc et lancer labVIEW. Choisir dans le menu principal outils > MakerHub > LINX > LINX Firmwar Wizard.
En cliquant sur suivant, on se retrouve avec la fenetre du choix du numéro du port serie :
35
L’étape suivante est le choix de la version du firmware et de la méthode du chargement :
36
4 Fonctionnement de labVIEW :
Un programme LabVIEW se compose de deux parties. Une partie appelée « Front_Panel » est l’interface sur laquelle
l’utilisateur va interagir pour commander son arduino. Puis une partie « Block-Diagram » où le programme sera écrit.
5 Manipulation 01 :
Pour réaliser l’interfaçage avec la carte Arduino, nous allons utiliser le firmware LINX de MakerHub.
6 Manipulation 02 :
1- Lancer l’exemple « LINX Servo 1 Chanel »
37
CORRECTION DES ATELIERS
38
TP 1 : COMMANDE D’UNE DIODE LED
Manipulation 02 :
Modifiez le programme précédent pour commander deux diodes LED (choisissez les broches de votre choix)
Manipulation 03 :
En utilisant six diodes LED, réalisez un jeu de lumière (exemple : un chenillard)
39
TP 2 : UTILISATION D’UN BOUTON POUSSOIR
Manipulation 01 :
Au cours de cette manipulation, nous allons commander une diode LED à l’aide d’un bouton poussoir. Lorsqu’on
appuie sur le bouton, la LED va allumer et lorsqu’on relâche le bouton la LED s’éteindra.
Manipulation 02 :
Modifiez le programme précédent de telle sorte que le premier appui sur le bouton poussoir allume la diode LED et
que le second appuie l’éteint :
40
Lors de l’exécution de ce programme, on remarque que la diode LED ne suit pas toujours l’appui sur le bouton
poussoir ; il y’a l’effet rebond (un seul appui sur le bouton, correspond réellement à plusieurs fronts successifs) : du
coup, parfois la diode reste éteinte ou bien au contraire reste allumée. Pour remédier à ce disfonctionnement, il faut
sauvegarder l’état précédent du bouton poussoir et n’inverser l’état de la diode LED que si l’état du bouton est
différent de son ancien état et qu’il est haut. Ce qui nous donne le programme suivant :
Manipulation 03 :
Nous allons réaliser un dé numérique à l’aide de trois diodes LED. L’appuie sur le bouton poussoir va générer un
numéro aléatoire entre 1 et 6 :
41
Pour générer un numéro aléatoire, il faut utiliser les fonctions randomSeed() et random() :
Pour récupérer la valeur renvoyée par random() bit par bit, il suffit d’appliquer des masques avec les valeurs binaires
B001, B010 et B100.
42
TP 3 : GESTION DU CLAVIER
Manipulation 01 :
Au cours de cette manipulation, vous devez réaliser un montage qui permet de lire le numéro du bouton appuyé par
l’utilisateur et d’envoyer son code sur le moniteur série de l’Arduino.
Manipulation 02 :
Au cours de cette manipulation vous allez réaliser une serrure codée.
Un code à plusieurs chiffres (4 chiffres par exemple) doit être saisi pour ouvrir une porte. Le programme commence
par envoyer le message « Saisir code » sur le moniteur série. Si le code saisi est correct, une diode LED s’allume et le
message « code correct » est envoyé sur le moniteur série, sinon on envoie le message « code erroné » suivi de
« Saisir code » (dans notre exemple le code correcte est : 1234).
43
44
Résultat d’exécution :
45
TP 4 : Commande d’un afficheur LCD
Manipulation 01 :
Le but de cette première manipulation et d’afficher un texte fixe sur l’écran LCD (votre nom et prénom par exemple)
Résultat exécution :
46
lcd.scrollDisplayLeft() : Décale le contenu de l'écran (texte et curseur) d'un espace vers la gauche ; puisque la chaine
« Mohamed Ben Ali » contient 15 caractères, il faut décaler le curseur 15 fois à gauche pour la faire disparaitre de
l’écran.
lcd.scrollDisplayRight() : Décale le contenu de l'écran (texte et curseur) d'un espace vers la droite ; notre but est de
faire réapparaitre le texte ensuite le décaler vers la droite pour le faire disparaitre. Du coup, il nous faut un décalage
de 31 fois (15 : longueur de la chaine + 16 : longueur d’une ligne de l’écran).
Une fois le texte disparait vers la droite, il faut le faire réapparaitre avec un deuxième décalage à gauche de 16
caractères et revenir à la situation initiale.
Résultat d’exécution :
Manipulation 02 :
Reprenez la manipulation du TP précédent (serrure codée) et utilisez l’afficheur LCD à la place du moniteur série.
47
Résultat d’exécution :
48
Manipulation 03 :
Vous allez réaliser un jeu où il faut deviner un nombre choisi au hasard par le programme :
49
Résultat d’exécution :
50
TP 5 : Gestion de la conversion A/N
Manipulation 01 :
Lors de cette manipulation, vous allez réaliser un programme qui permet de lire la valeur analogique délivrée par le
potentiomètre sur l’une des entrées analogiques et d’afficher le résultat sur le moniteur série.
Résultat d’exécution :
Manipulation 02 :
Lors de la précédente manipulation, vous avez remarqué que les valeurs affichées sur le moniteur série sont
comprises entre 0 et 1023. Modifiez votre programme pour qu’il calcule les valeurs réelles de la tension lue
(comprises entre 0 et 5V) et les affiche sur un afficheur LCD.
51
Résultat d’exécution :
L’utilisation de la fonction map(), permet de calculer la tension d’entrée à partir de la valeur numérique (l’équivalent
de la règle de trois). La conversion se fait par rapport à 5000 pour avoir plus de précision et ne pas se retrouver avec
uniquement six valeurs (0, 1, 2, 3, 4, 5). Ensuite le résultat obtenu est divisé par 1000 pour retrouver la valeur de la
tension en volts.
Manipulation 03 :
Commandez le clignotement d’une diode LED à l’aide du potentiomètre : plus la valeur de la tension lue est grande,
plus le clignotement de la diode est rapide et inversement.
Il suffit de gérer l’intervalle d’attente entre le changement d’état de la diode LED par la valeur de la tension lue à
partir du potentiomètre.
52
Manipulation 04 :
Commandez la luminosité d’une diode LED à l’aide du potentiomètre : plus la valeur de la tension lue est grande,
plus la luminosité de la diode augmente et inversement.
Résultat d’exécution :
La diode est branchée sur la sortie 9 qui utilise le module PWM. La valeur lue à partir du potentiomètre ne pourra
pas être renvoyée directement vers la diode LED. Elle doit être formatée à l’aide de la fonction map() qui nous
permettra de passer d’une valeur comprise entre 0 et 1023 (sortie du CAN sur 10 bits) à une valeur comprise entre 0
et 255 (rapport cyclique du PWM).
Manipulation 05 :
Réalisez une jauge électronique à l’aide de 5 diodes LED : plus la tension augmente plus le nombre de diodes
allumées augmente
53
Explication de l’instruction digitalWrite(pin[i],(niveau >= i)?HIGH : LOW) : si « niveau » est supérieur ou égal à « i »,
alors « pin[i] » reçoit « HIGH » sinon elle reçoit « LOW ».
54
TP 6 : L’acquisition de la temperature et de
l’humidite : le capteur DHT11
Manipulation 01 :
Téléchargez la bibliothèque DHT11.h et ajoutez-la au dossier des bibliothèques de l’Arduino.
Testez le bon fonctionnement du programme en affichant les résultats sur le moniteur série.
Résultat d’exécution :
DHT11-RETRY_DELAY : c’est le delais minimum entre deux lectures successives du capteur. Ce délais est fixé par la
datasheet du capteur et au niveau de sa bibliothèque à 1000 ms.
55
Manipulation 02 :
Modifiez le programme précédent pour afficher les valeurs de la température et de l’humidité sur un afficheur LCD.
Ajoutez deux diodes LED l’une pour contrôler la température et l’autre pour l’humidité (les LED s’allumeront
lorsqu’on atteint un seuil bien déterminé de température ou d’humidité ; essayez de faire varier les valeurs de
température et d’humidité pour atteindre ces seuils et allumer les LED)
Résultat d’exécution :
56
TP 7 : mesure de la distance : le capteur
HC-SR04
Manipulation 01 :
Téléchargez une des bibliothèques du capteur HC-SR04 disponibles.
Ecrire un programme qui permet de lire la distance à partir du capteur et d’envoyer l’information sur le moniteur
série de l’Arduino (la distance doit être exprimée en cm).
Résultat d’exécution :
Manipulation 02 :
Ajoutez un deuxième capteur à votre montage. Le but est de réaliser un détecteur d’obstacle. Le premier capteur
détecte un obstacle à droite (distance inférieur à 5 cm) et votre programme affiche le message « obstacle à droite »
sur le moniteur série et le deuxième capteur détecte un obstacle à gauche et le programme affiche « obstacle à
gauche ».
57
Résultat d’exécution :
Manipulation 03 :
Modifier le montage précédent en ajoutant un afficheur LCD. Le but de cette manipulation est d’afficher tous les
messages sur l’écran de l’afficheur au lieu de les envoyer au moniteur série.
58
Résultat d’exécution :
59
TP 8 : commande d’un servomoteur
Manipulation
Téléchargez la bibliothèque « Servo » qui permet de commander le servomoteur.
Lancez l’exemple de la bibliothèque « Sweep » qui permet de piloter le servomoteur, avec un pas de 1°, de 0° à 180°
et inversement d’une façon continue.
Manipulation 02 :
Le but de cette manipulation est de commander le servomoteur à l’aide d’un potentiomètre ; lorsque l’axe du
potentiomètre tourne, le bras du servomoteur doit tourner à son tour et dans le même sens.
60
Manipulation 03 :
Reprenez le programme de la manipulation 02 du TP8 (utilisation de deux capteurs pour détecter les obstacles à
droite et à gauche). Modifiez ce programme pour qu’il commande le servomoteur de telle sorte que lorsque
l’obstacle détecté est à gauche, il fait tourner le ras du servomoteur à droite et inversement.
61
62
TP 9 : interfaçage Labview - Arduino
(initiation)
Manipulation 01 :
Une fois l’exemple lancé, on obtient les interfaces suivantes :
- Face avant :
63
- Fenêtre du diagramme :
1 : c’est la partie de configuration ; elle est équivalente à la fonction setup() dans le sketch Arduino. C’est à ce
niveau qu’on fait la configuration du port série
2 : c’est la fonction digitalWrite() équivalente à la fonction Arduino qui prend en argument le numéro de la sortie et
la valeur à envoyer ( un appui sur le bouton poussoir envoie un niveau haut)
3 : c’est le rectangle gris qui encadre tous les autres éléments ; il s’agit de la boucle infinie void loop()
Manipulation 02 :
- Face avant de l’exemple de la commande du servomoteur :
64
1 : choix de la sortie de commande du servomoteur
2 : sélection de l’angle à envoyer au servomoteur : en variant la commande de 500 à 2500, l’axe du servo suivra le
mouvement (la valeur 1500us correspond à un angle de 90 degrés).
- Face Diagramme :
1 : initialisation de la sortie vers le servomoteur (cette sortie restera occupée tant que la connexion avec le
servomoteur est active
65
LISTE DES FIGURES
Figure 1 : image et symbole d'une LED ............................................................................................................................. 6
Figure 2 : Tension et courant de seuil d'une LED .............................................................................................................. 6
Figure 3 : Code couleurs des résistances .......................................................................................................................... 6
Figure 4 : branchement d'une diode LED .......................................................................................................................... 7
Figure 5 : Structure d'un programme ARDUINO ............................................................................................................... 7
Figure 6 : Vérification et chargement du programme ...................................................................................................... 8
Figure 7 : Différentes vues d'un bouton poussoir........................................................................................................... 10
Figure 8 : Branchement d'un bouton poussoir ............................................................................................................... 10
Figure 9 : Combinaisons du dé numérique ..................................................................................................................... 11
Figure 10 : Clavier numérique 3x4 à ruban ..................................................................................................................... 13
Figure 11 : Branchement du clavier à la carte ARDUINO ................................................................................................ 13
Figure 12 : Ajout d'une bibliothèque .............................................................................................................................. 14
Figure 13 : Afficheur LCD 2x16 ........................................................................................................................................ 16
Figure 14 : branchement de l'écran LCD ......................................................................................................................... 17
Figure 15 : Entrées analogiques de la carte Arduino UNO ............................................................................................. 20
Figure 16 : Branchement d'un potentiomètre ................................................................................................................ 20
Figure 17 : Brochage du capteur DHT11 ......................................................................................................................... 23
Figure 18 : branchement du capteur DHT11 .................................................................................................................. 24
Figure 19 : brochage du HC-SR04.................................................................................................................................... 26
Figure 20 : Principe de fonctionnement du HC-SR04...................................................................................................... 26
Figure 21 : Branchement du capteur HC-SR04 ............................................................................................................... 27
Figure 22 Le servomoteur ............................................................................................................................................... 30
Figure 23 : Principe de la commande d'un servomoteur ................................................................................................ 30
Figure 24 : Branchement du servomoteur ...................................................................................................................... 31
Figure 25 : Recherche du VI LIFA..................................................................................................................................... 33
Figure 26 : Ajout du VI LIFA ............................................................................................................................................. 34
Figure 27 : Ajout VI MakerHub........................................................................................................................................ 34
Figure 28 : Choix du type de la carte dans LINX .............................................................................................................. 35
Figure 29 : Choix du port série pour LINX ....................................................................................................................... 35
Figure 30 : Choix de la méthode de chargement ............................................................................................................ 36
Figure 31 : Chargement du firmware .............................................................................................................................. 36
Figure 32 : exemple d'interfaces labVIEW ...................................................................................................................... 37
66
BIBLIOGRAPHIE
[2] T.Karvinen, K.Karvinen, V.Valtokari, les capteurs pour arduino et raspberry pi tutoriels et projets, dunod, 2014.
WEBOGRAPHIE
67