Introduction à l'Électronique et Arduino
Introduction à l'Électronique et Arduino
Pr. Mejhoudi
Objectifs
Notions de base
Les systèmes embarqués
Les microcontrôleurs
Acquérir des notion de base sur l’électronique, les systèmes embarqués et les
microcontrôleurs.
Maitriser les outils de simulation et de développement sur la plateforme
Arduino. (Arduino IDE et ISIS Proteus)
Découvrir les fonctionnalité de la carte Arduino.
S’expérimenter à développer des prototypes d’objets interactifs.
Objectifs de la formation Le courant électrique
Notions de base La tension
Les systèmes embarqués La résistance
Les microcontrôleurs Le courant continu et le courant alternatif
L’intensité (I) aussi appelée le courant est le débit(*) d’électrons circulants dans un matériau conducteur, elle se
mesure en Ampères (A).
Plus il y a d’électrons qui circulent à travers un circuit, plus la valeur du courant est forte.
(*) un débit est une quantité par seconde. Par exemple le débit du robinet est de 1 litre par seconde.
Objectifs de la formation Le courant électrique
Notions de base La tension
Les systèmes embarqués La résistance
Les microcontrôleurs Le courant continu et le courant alternatif
Tension (U) – ou généralement la différence de potentiel électrique est définie comme la quantité de travail
nécessaire pour déplacer une charge.
Autrement dit, la tension est la force qui permet aux électrons de bouger
dans un matériau conducteur, elle se mesure en Volts (V) qui est définie
comme Joule de travail par Coulomb de charge.
Objectifs de la formation Le courant électrique
Notions de base La tension
Les systèmes embarqués La résistance
Les microcontrôleurs Le courant continu et le courant alternatif
Résistance -l'opposition à l'écoulement de la charge électrique. Il se trouve dans les composants électriques, telles que
les ampoules et beaucoup d’autres éléments chauffants. L’unité de mesure de résistance est l’ohm (Ω).
• Plus la tension est importante aux bornes d‘une résistance, plus le courant qui la traverse est fort.
Loi d’Ohm
Objectifs de la formation La tension
Notions de base La résistance
Les systèmes embarqués Le courant continu et le courant alternatif
Les microcontrôleurs Les composants électroniques de base
Le courant électrique peut être en courant continu (DC) ou courant alternatif (AC).
Le courant continu tel que celui généré par les batteries est caractérisé par une direction uniforme d'écoulement et une
quantité (tension) uniforme d'électricité.
Le courant alternatif est caractérisé par la direction de l'écoulement et une quantité d'électricité qui change de manière
cyclique en fonction du temps.
Objectifs de la formation La tension
Notions de base La résistance
Les systèmes embarqués Le courant continu et le courant alternatif
Les microcontrôleurs Les composants électroniques de base
La résistance
Objectifs de la formation La tension
Notions de base La résistance
Les systèmes embarqués Le courant continu et le courant alternatif
Les microcontrôleurs Les composants électroniques de base
La loi d‘Ohm Loi d’additivité des tensions Loi d’unicité des tensions Diviseur de tension
La diode
Une diode est un appareil semi-conducteur qui agit principalement comme
commutateur à sens unique de courant. Elle permet au courant de circuler
facilement dans une direction, mais restreint fortement le courant de circuler
dans la direction opposée.
Objectifs de la formation La tension
Notions de base La résistance
Les systèmes embarqués Le courant continu et le courant alternatif
Les microcontrôleurs Les composants électroniques de base
Diode électroluminescente
Attention à ne pas faire passer un courant trop fort dans une LED, sinon elle
risque de “griller”. L’utilisation d’une résistance est obligatoire.
Objectifs de la formation La tension
Notions de base La résistance
Les systèmes embarqués Le courant continu et le courant alternatif
Les microcontrôleurs Les composants électroniques de base
Le condensateur
Un condensateur est un composant passif qui possède deux
armatures conductrices séparées par un isolant.
Le transistor
Le relais
Un système embarqué est un système de calcul avec une fonction bien déterminée au sein d'un système
mécanique ou électrique plus grande, souvent avec des contraintes de calcul en temps réel. Il est intégré dans le
cadre d'un dispositif complet comprenant souvent d’autres périphériques et des actionneurs mécaniques.
Objectifs
Notions de base
Les systèmes embarqués
Les microcontrôleurs
ASIC
µC
CPU
FPGA
Notions de base
Les systèmes embarqués
Les microcontrôleurs
Présentation de la plateforme Arduino
Notions de base
Les systèmes embarqués
Les microcontrôleurs
Présentation de la plateforme Arduino
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
La fonction delay()
La fonction Delay() Suspend le programme durant un laps de temps (en millisecondes) spécifié comme
paramètre.
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
Exercice 1 :
Le but de l’exercice est d’écrire un programme qui fait clignoter une LED avec un delay graduel au fil du
temps ; au début la LED commencera à clignoter à 100ms de pause, et à chaque itération du programme la
pause va se doubler.
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
Exercice 1 : Solution
int LED=13;
int i=100;
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
digitalWrite(LED, HIGH);
delay(i);
digitalWrite(LED, LOW);
delay(i);
i=i*2;
}
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
Exercice 2 :
Exercice 3 :
Réalisez un montage qui permet d’allumer une LED branchée sur le PIN 13 une fois un bouton poussoir
actionné (A0). La LED s’éteint une fois un autre bouton poussoir (A5) est poussé.
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
int LED=13;
Exercice 3 : Solution int boutonON=A0;
int boutonOFF=A5;
void setup() {
pinMode(LED, OUTPUT);
pinMode(boutonON, INPUT);
pinMode(boutonOFF, INPUT);
}
void loop() {
if(digitalRead(boutonON)==0)
digitalWrite(LED, HIGH);
if(digitalRead(boutonOFF)==0)
digitalWrite(LED, LOW);
}
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
Casse-tête 1:
Maintenant nous voulons reprendre l’exercice 3 de la façon suivante : une fois que le bouton ON est
actionné la LED doit rester allumée durant 5 secondes, mais à tout instant si le bouton OFF est poussé la
LED doit s’éteindre instantanément.
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
La fonction millis()
Casse-tête 1: Solution
void loop() {
int LED=13; present=millis();
int boutonON=A0; if(digitalRead(boutonON)==0)
int boutonOFF=A5; {
long passe; digitalWrite(LED, HIGH);
long present=0; passe=millis();
void setup() { }
pinMode(LED, OUTPUT); if(digitalRead(boutonOFF)==0||present-
pinMode(boutonON, INPUT); passe>5000)
pinMode(boutonOFF, INPUT); {digitalWrite(LED, LOW);}
} }
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
Exercice 4 :
Réutiliser le même montagequi précède, cette fois pour restreindre le droit de l’utilisateur à allumer la
LED qu’une fois toutes les 20 secondes.
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
Exercice 4 : Solution
int LED=13;
int boutonON=A0;
int boutonOFF=A5;
if(digitalRead(boutonON)==0&&present-ON>20000)
long passe;
{
long ON=20001;
digitalWrite(LED, HIGH);
long present;
ON=millis();
void setup() {
passe=millis();
pinMode(LED, OUTPUT);
}
pinMode(boutonON, INPUT);
if(digitalRead(boutonOFF)==0||present-passe>5000)
pinMode(boutonOFF, INPUT);
digitalWrite(LED, LOW);
}
}
void loop() {
present=millis();
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
La fonction micros()
La fonction delayMicroseconds()
Suspend le programme pour un laps de temps (en microsecondes) spécifié comme paramètre.
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
Les interruptions
Un programme s’exécute sur un µcontrôleur qui tourne normalement d’une façon séquentielle : instruction par
instruction.
Une interruption est un événement extérieur qui interrompt le programme en cours et exécute un programme
spécial (routine d'interruption). Après la routine d’interruption a été terminé, le programme en cours se
poursuit avec l'instruction suivante.
Une Instruction signifie une seule instruction de la machine, et non pas une ligne de code.
Autrement dit une interruption est un réflexe à une excitation, que le µC doit exécuter sans y réfléchir.
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
Les interruptions
Le processeur au cœur de tout Arduino a deux types d'interruptions: externe et par changement d’état d’une
broche (pin). Il y a seulement deux broches d'interruption externes sur l’Arduino, I NT 0 et INT1, et ils sont
mappés sur les broches 2 et 3 de la carte.
Ces interruptions peuvent être configurées pour déclencher sur front montant (RISING), descendant
(FALLING), ou zéro logique (LOW). Les déclencheurs sont interprétés par le matériel, et l'interruption est très
rapide.
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
Les interruptions
La fonction noInterrupts()
La fonction noInterrupts() permet de désactiver les interruptions. Les interruptions sont activées par défauts.
La fonction interrupts()
Les interruptions
La fonction attachInterrupt()
Détermine une routine d'interruption nommé (ISR) pour l’exécuter quand une interruption se produit. Elle
remplace toute fonction précédente qui a été attaché à l'interruption.
La plupart des cartes Arduino ont deux interruptions externes: numéros 0 (sur la broche numérique 2) et 1
(sur la broche numérique 3).
Syntaxe de la fonction : attachInterrupt(interruption, routine, mode)
Les interruptions
La function detachInterrupt()
Désactive une interruption.
Syntaxe de la fonction: detachInterrupt(interrption)
Interruption : Numéro de l’interruption
Remarque : Typiquement les variables globales sont utilisées pour transmettre des données entre une routine
et le programme principal. Pour s'assurer que les variables utilisées dans une routine sont correctement
mises à jour, déclarez-les comme volatile.
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
Exercice 5 :
Reprenons le casse-tête 1, nous allons nous forcer à le résoudre mais cette fois sans avoir recourt à la
fonction millis() ni aux autres fonction du temps.
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
Exercice 5 : Solution
if(digitalRead(boutonON)==0)
volatile int LED=13;
{
int boutonON=A0;
digitalWrite(LED, HIGH);
void setup() {
delay(5000);
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
pinMode(boutonON, INPUT);
}
attachInterrupt(0, OFF, LOW);
}
}
void OFF() {
void loop() {
digitalWrite(LED, LOW);
}
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
La fonction begin()
Cette fonction une fois insérée dans la partie setup du programme, permet d’initialiser le port série de la carte
Arduino. La vitesse de transmission des données est donnée en paramètre à la fonction [Link]().
Exemple :
void setup() {
[Link](9600);
}
void loop() {}
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
La fonction println()
Transmet les données au port série sous forme de texte lisible ASCII suivie d'un caractère de retour
chariot (ASCII 13, ou '\ r') et un caractère de nouvelle ligne (ASCII 10, ou '\ n').
Exemple :
void setup() {
[Link](9600);
}
void loop() {
[Link](“Hello world”);
delay(500);
}
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
Exercice 6 :
Réaliser un montage sous ISIS, reliant la carte Arduino à un moniteur série (Virtual Terminal). Le moniteur
servira à afficher l’état du bouton poussoir connecté au pin A0 en temps réel.
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
La fonction available()
Lorsque la carte Arduino est configurée pour recevoir des données sur le port série, il est nécessaire de pouvoir
vérifier à tout instant si une nouvelle trame de données a été reçue est prête à être traité. La fonction
[Link]() permet d’obtenir le nombre d'octets (caractères) disponibles pour lecture sur port série. Ce
sont des données qui ont déjà arrivé et ont été stockés dans la mémoire tampon de réception série (qui détient 64
octets).
La fonction read()
Exercice 7 :
Réalisons un montage de simulation qui consiste à transmettre des caractères à la carte Arduino via le
terminal virtuel. Arduino retransmettra chaque caractère au terminal virtuel pour qu’il soit affiché
Présentation de la plateforme Arduino
Premier Programme : Blink
Timers et interruptions
Communication série
Exercice 7 : Solution
char flux;
void setup() {
[Link](9600);
}
void loop() {
if ([Link]() > 0)
{
flux = [Link]();
[Link]("Vous avez tappe:");
[Link](flux);
}
delay(10);
}
Premier Programme : Blink
Timers et interruptions
Communication série
Conversion Analogique/Numérique
Les µcontrôleurs ATMega utilisés pour l'Ar duino contiennent six canaux de conversion analogiques-numérique
(A/D). Le convertisseur a une résolution de 10 bits, c’est-à-dire que chaque valeur analogique réelle entre 0
et 5V sera représentée par un nombre entier entre 0 et 1023.
La fonction analogRead()
Lit la valeur de la broche analogique spécifiée.
Syntaxe : analogRead(pin)
pin : A0-A5
Entrées analogiques
Premier Programme : Blink
Timers et interruptions
Communication série
Conversion Analogique/Numérique
Exercice 8 :
Pour créer une variation de la tension, nous allons utiliser un potentiomètre raccordé au pin A0. L’objectif de
l’exercice est d’écrire un programme qui permettra de récupérer la valeur analogique de A0 et de l’afficher sur
le terminal virtuel.
Premier Programme : Blink
Timers et interruptions
Communication série
Conversion Analogique/Numérique
Exercice 8 : Solution
int valeur;
void setup() {
pinMode(A0,INPUT);
[Link](9600);
}
void loop() {
valeur=analogRead(A0);
[Link](valeur);
delay(500);
}
Premier Programme : Blink
Timers et interruptions
Communication série
Conversion Analogique/Numérique
Exercice 9 :
Réalisons un montage avec lequel nous pourrons commander l’allumage et l’extinction d’une LED par degré de
luminosité. Pour cela une photorésistance doit être branchée sur l’une des entrées analogiques. Si la valeur de
l’entrée analogique dépasse un seuil donnée la LED doit s’éteindre et s’allumer dans le cas contraire.
Premier Programme : Blink
Timers et interruptions
Communication série
Conversion Analogique/Numérique
Exercice 9 : Solution
void loop() {
valeur=analogRead(A0);
int LED=13;
if(valeur>=500)
int valeur;
void setup() { digitalWrite(LED,LOW);
pinMode(A0,INPUT); else
pinMode(13,OUTPUT); digitalWrite(LED,HIGH);
} delay(10);
}
Timers et interruptions
Communication série Le moteur DC
Le servomoteur
Conversion Analogique/Numérique
Le moteur pas-à-pas
Contrôle de moteurs
L’Arduino comme tout cerveau d’un système embarqué est utilisé dans un large éventail d’applications pour
commander et interagir avec des actionneurs mécaniques, parmi lesquels les moteurs. Ce sont des dispositifs
permettant d’effectuer des mouvements physiques à partir d’énergie (dans notre cas électrique).
Timers et interruptions
Communication série Le moteur DC
Le servomoteur
Conversion Analogique/Numérique
Le moteur pas-à-pas
Contrôle de moteurs
Exercice 10 :
Réalisons un circuit de commande d’un moteur DC
12V unidirectionnel à l’aide d’un transistor NPN
(Darlington) TIP122. Deux boutons poussoirs relié à
l’Arduino, seront responsables de la mise en
marche/arrêt du moteur.
Timers et interruptions
Communication série Le moteur DC
Le servomoteur
Conversion Analogique/Numérique
Le moteur pas-à-pas
Contrôle de moteurs
Exercice 10 : Solution
Exercice 11 :
Reprenons l’exercice 10, mais nous allons choisir de commander un
moteur DC 120V par un relai au lieu d’un transistor.
Timers et interruptions
Communication série Le moteur DC
Le servomoteur
Conversion Analogique/Numérique
Le moteur pas-à-pas
Contrôle de moteurs
Exercice 12 :
Réalisons un circuit de commande d’un
moteur DC 120V bidirectionnel à l’aide
de deux relais. Deux boutons poussoirs
relié à l’Arduino, seront responsables
de la mise en marche du moteur, l’un
dans un sens et l’autre dans le sens
contraire. Un troisième bouton poussoir
servira à arrêter le moteur.
Timers et interruptions
Communication série Le moteur DC
Le servomoteur
Conversion Analogique/Numérique
Le moteur pas-à-pas
Contrôle de moteurs