[go: up one dir, main page]

0% ont trouvé ce document utile (0 vote)
56 vues51 pages

Presentation Arduino

Le document présente une formation sur Arduino, abordant des concepts d'électronique embarquée et de programmation. Il couvre des applications pratiques, des outils matériels et logiciels, ainsi que des exemples de projets tels que le contrôle de LED et l'utilisation d'afficheurs LCD. La formation vise à permettre aux participants de créer des systèmes électroniques variés en utilisant Arduino.

Transféré par

alimatousadiadera
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
56 vues51 pages

Presentation Arduino

Le document présente une formation sur Arduino, abordant des concepts d'électronique embarquée et de programmation. Il couvre des applications pratiques, des outils matériels et logiciels, ainsi que des exemples de projets tels que le contrôle de LED et l'utilisation d'afficheurs LCD. La formation vise à permettre aux participants de créer des systèmes électroniques variés en utilisant Arduino.

Transféré par

alimatousadiadera
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 51

ISET SILIANA

DEPARTEMENT GE

Formation sur :
ARDUINO
ASKRI Tahar

Avril 2017
1
PLAN

Introduction

Clignotement LED

Afficheurs LCD

Grandeurs analogiques

Communication série RS232

Commande MCC par cales

Commande MCC par Wifi

Commande MCC par GSM 2


INTRODUCTION

Electronique Embarquée : Electronique +Programmation.


unir la puissance de la programmation à
la puissance de l'électronique.

Arduino : outil qui va permettre aux débutants, amateurs ou


professionnels de créer des systèmes électroniques plus ou
moins complexes.

ASKRI Tahar 3
Applications

• Contrôler les appareils domestiques.


• Fabriquer votre propre robot.
• Faire un jeu de lumières.
• Communiquer avec l'ordinateur.
• Télécommander un appareil mobile.
• Les applications de commande.
• etc.

ASKRI Tahar 4
Les bonnes raisons de choisir Arduino

 Le prix :
45-50DT
 La liberté :
• Logiciel open source : gratuit.
• Le matériel : cartes électroniques dont les schémas
sont en libre circulation sur internet.
 La compatibilité :
compatible sous les plateformes les plus courantes
(Windows, Linux et Mac).
 Facilité d’utilisation :
• Pas besoin de souder , de programmateur de
microcontrôleur.
ASKRI Tahar 5
Les outils Arduino : Le matériel

carte électronique basée autour d'un microcontrôleur


Atmega du fabricant Atmel

ASKRI Tahar 6
Outils Arduino: Le logiciel

Le logiciel va nous
permettre de programmer
la carte Arduino.

ASKRI Tahar 7
Les différentes cartes

Carte ‘’Uno ’’
carte Arduino "Mega"

ASKRI Tahar 8
Arduino Uno : Constitution

 Mémoire programme : 32ko de type Flash : conserve son


continu.
 Mémoire de données : 2ko : oublie son contenu pour données.
 EEPROM : 1ko.
 les entrées/sorties
- 14 E/S numériques de 0 à 13. (tension : 0 à 5v, courant
max=40mA).
(0:RX, 1:TX, 2,3:interruptions, 3,5,6,9,1,11: sorties PWM…)
-6 E/S analogiques A0 à A5.
 Convertisseur analogique numérique 10 bits.
 Bus I2C avec 2 lignes SDA et SCL.
 Alimentation : par USB ou externe.
 Horloge : quartz à 16 MHz.
 2 tensions générées 5V et 3.3V.
9
 Poussoir de reset manuel.
Le logiciel : Installation

pas besoin d’installer le logiciel


Arduino sur votre ordinateur: Portable
-1 : ce sont les options de configuration
du logiciel.
-2 : il contient les boutons qui vont nous
servir lorsque l'on va programmer nos
cartes.
-3: ce bloc va contenir le programme
que nous allons créer.
-4 : celui-ci est important, car il va nous
aider à corriger les fautes dans notre
programme. C'est le débogueur.

ASKRI Tahar 10
Le logiciel : Les boutons

-1 : Ce bouton permet de vérifier le


programme, il actionne un module
qui cherche les erreurs dans votre
Programme.
-2 : Créer un nouveau fichier.
-3 : Sauvegarder le programme en -5 : Stoppe la vérification.
cours.
-6 : Charger un programme
-4 : On n'y touche pas pour existant.
l'instant.
-7 : Compiler et envoyer le
programme vers la carte.

ASKRI Tahar 11
Présentation de la carte

-1: Microcontrôleur
-2: Alimentation par port
USB 5V.
-3: Alimentation externe 7-
12V : un régulateur interne
se charge de la rendre 5V.
-4: Visualisation par 3
LEDs. La haute pour tester
la carte et les deux autres
pour l’activité du port série
E et R.
-5 : La connectique en 5a et
5b.
ASKRI Tahar 12
Tester la carte (1)

1ère étape : ouvrir un


programme
Nous allons choisir un exemple
tout simple qui consiste à faire
clignoter une LED. Son nom est
Blink et vous le trouverez dans la
catégorie Basics.

ASKRI Tahar 13
Tester la carte(2)

2e étape
Avant d'envoyer le programme
Blink vers la carte, il faut dire au
logiciel quel est le nom de la carte
et sur quel port elle est branchée.

Choisir la carte que l'on va


programmer.
Il s'agit de la carte "Uno". Allez
dans le menu "Tools" ("outils" en
français) puis dans "Board "
("carte" en français). Vérifiez que
c'est bien le nom "Arduin Uno" qui
est coché. Si ce n'est pas le cas,
cochez-le.

ASKRI Tahar 14
Tester la carte(3)

Choisissez le port de connexion de


la carte.

Allez dans le menu Tools, puis


Serial port. Là, vous choisissez le
port COMX, X étant le numéro du
port qui est affiché. Ne choisissez
pas COM1 car il n'est quasiment
jamais connecté à la carte. Dans
mon cas, il s'agit de COM5 :

Dernière étape
envoyer le programme dans la carte. Pour ce faire, il suffit de cliquer
sur le bouton Upload (ou"Télécharger" en Français), en jaune-orangé
sur la photo. :

ASKRI Tahar 15
Tester la carte(4)

Le message affiché : "Done uploading " signale que


le programme a bien été chargé dans la carte. Si
votre matériel fonctionne, vous devriez avoir une LED
sur la carte qui clignote :

En bas dans l'image, vous voyez le texte : "Uploading


to I/O Board...", cela signifie que le logiciel est en
train d'envoyer leprogramme dans la carte. Une fois
qu'il a fini, il affiche un autre message.

ASKRI Tahar 16
Ajouter la librairie Arduino à Porteus

Copier les deux fichiers ArduinoTEP.LIB et ArduinoTEP.IDX.


Placer les deux fichiers dans la librairie de Porteus.
 Pour PORTEUS 7 : C:\Program Files(x86)\Labcenter Electronics\Proteus 7 Professional\LIBRARY
POUR PORTEUS 8 : C:\ProgramData\LabcenterElectronics\Proteus 8 professional\Data\LIBRARY
 ouvrir Isis et dans la section compenent chercher ArduinoTEP.

Faites vos circuits, Ecrire vos programmes, les compiler et ajouter le fichier .hex
à Arduino et enfin simuler vos programmes.

ASKRI Tahar 17
LED : contraintes

C'est un composant électronique qui crée de la


lumière quand il est parcouru par un courant
électrique(A->K).

Pour une LED, l’intensité du courant qui la


traverse est I=20mA

V  VD 5  1.2
R   190
I 20 *10 3

On utilise une résistance de 220Ω

ASKRI Tahar 18
Boutons : contraintes

un bouton n'est jamais qu'un fil qui est connecté ou non selon sa position.

-perturbations (des lampes à proximité, un téléphone portable, un doigt sur le circuit, l'électricité
statique, ...).
on place en série avec le bouton une résistance de pull-up.
-Les boutons ne sont pas des systèmes mécaniques parfaits. Du coup, lorsqu'un appui est fait
dessus, le signal ne passe pas immédiatement et proprement de 5V à 0V.

Pour atténuer ce phénomène, nous allons utiliser un


condensateur en parallèle avec le bouton. Ce composant servira
ici"d'amortisseur" qui absorbera les rebonds

ASKRI Tahar 19
Application 1 : Faire clignoter LED

ASKRI Tahar 20
clignoter LED : programme

• pinMode(pin,type): initialisation de la broche. le type est OUTPUT


ou INPUT.
• digitalWrite (pin,valeur) : pin = valeur cad 0 ou 1= HIGH ou LOW.
• delay(t) : créer une temporisation de t ms.

Void setup() //fonction initialisation tourne une seule fois


{
pinMode(2, OUTPUT); //broche 2 sortie
}

Void loop() //boucle tourne à l’infini


{
digitalWrite(2, LOW); //éteindre LED
delay(1000); //pause 1s
digitalWrite(2, HIGH); //allumer LED
delay(1000); //pause 1s
}

ASKRI Tahar 21
allumer LED avec bouton(1)

ASKRI Tahar 22
allumer LED avec bouton(2)

const int bouton = 2; //le bouton est connecté à la broche 2 de la carte Adruino
const int led = 13; //la LED à la broche 13
int etatBouton; //variable qui enregistre l'état du bouton
void setup()
{
pinMode(led, OUTPUT); //la led est une sortie
pinMode(bouton, INPUT); //le bouton est une entrée
etatBouton = HIGH; //on initialise l'état du bouton comme "relaché"
}

void loop()
{
etatBouton = digitalRead(bouton); //Rappel : bouton = 2
if(etatBouton == HIGH) //test si le bouton a un niveau logique HAUT
{
digitalWrite(led,HIGH); //la LED reste éteinte
}
else //test si le bouton a un niveau logique différent de HAUT (donc BAS)
{digitalWrite(led,LOW); //le bouton est appuyé, la LED est allumée}
} 23
Afficheur LCD

Brochage

LCD ARDUINO
4/RS 7
6 /E 8
Mode 4 bits
11/D4 9
12/D5 10
13/D6 11
14/D7 12 24
Afficheur LCD: Le démarrage de l'écran

LiquidCrystal(rs, enable, d4, d5, d6, d7) où rs est le numéro de la broche


où est branché "RS", "enable" est la broche "E" et ainsi de suite pour les données.

#include "LiquidCrystal.h" //ajout de la librairie


//Vérifier les broches !
LiquidCrystal lcd(7,8,9,10,11,12); //liaison 4 bits de données
int mavariable = 42;
void setup()
{
lcd.begin(16,2); //utilisation d'un écran 16 colonnes et 2 lignes
lcd.setCursor(0,0); //place le curseur aux coordonnées (0,0)
lcd.write("ISET Siliana"); //petit test pour vérifier que tout marche
lcd.setCursor(0,1); //place le curseur aux coordonnées (0,0)
lcd.print(mavariable);
}
void loop()
{}

ASKRI Tahar 25
Afficheur LCD: Gérer l'affichage

#include <LiquidCrystal.h> //on inclut la librairie


// initialise l'écran avec les bonnes broches
LiquidCrystal lcd(7,8,9,10,11,12);
void setup()
{
lcd.begin(16, 2); // règle la taille du LCD
lcd.print(‘’ ISET Siliana!");
}

void loop()
{
lcd.noDisplay(); //fait disparaître le texte le texte est bien stocké en mémoire
delay(500);
lcd.display(); //fait apparaître le texte (s'il y en a évidemment)
delay(500);
}

ASKRI Tahar 26
Afficheur LCD: Animer l'affichage

#include <LiquidCrystal.h> //on inclut la librairie


LiquidCrystal lcd(7,8,9,10,11,12);
char message[29]="ISET SILANA ARDUINO";
int i;
void setup()
{
lcd.begin(16, 2);
}
void loop()
{
lcd.setCursor(14,0);
lcd.leftToRight(); //indique que le texte doit être déplacer vers la gauche
lcd. autoscroll() ; //rend automatique ce déplacement
for(i=0; i<19; i++)
{
lcd.print(message[i]);
delay(500);
}
27
}
Horloge avec afficheur LCD(1)

#include <LiquidCrystal.h> //on inclut la librairie

// initialise l'écran avec les bonnes broches


// ATTENTION, REMPLACER LES NOMBRES PAR VOS BRANCHEMENTS À VOUS !
LiquidCrystal lcd(7,8,9,10,11,12);
int heures,minutes,secondes;
char message[16] = "";

void setup()
{
lcd.begin(16, 2); // règle la taille du LCD : 16 colonnes et 2 lignes
//changer les valeurs pour démarrer à l'heure souhaitée !
heures = 0;
minutes = 0;
secondes = 0;
}

ASKRI Tahar 28
Horloge avec afficheur LCD(2)

void loop()
{
if(secondes == 60) //une minutes est atteinte ?
{ secondes = 0; //on recompte à partir de 0
minutes++; }
if(minutes == 60) //une heure est atteinte ?
{ minutes = 0;
heures++; }
if(heures == 24) //une journée est atteinte ?
{ heures = 0; }
//met le message dans la chaine à transmettre
sprintf(message,"Il est %2d:%2d:%2d",heures,minutes,secondes);
lcd.home(); //met le curseur en position (0;0) sur l'écran
lcd.write(message); //envoi le message sur l'écran
delay(1000); //attend une seconde
secondes++;
}
29
Les grandeurs analogiques

Convertisseur analogique numérique 10 bits donc on a 210 valeurs possibles

Pas de calcul :

analogRead(pin): lire la valeur lue sur une entrée analogique de l'Arduino.


•L'argument est le numéro de l'entrée analogique.
•La valeur retournée (un int) sera le résultat de la conversion analogique->
numérique.

la valeur réelle : valeur retournée*pas de conversion

ASKRI Tahar 30
Application : voltmètre

On veut mesurer la tension aux bornes d’un


potentiomètre et envoyer la valeur sur le port série.

ASKRI Tahar 31
Programme : voltmètre
const int potar = 0; // le potentiomètre, branché sur la broche analogique 0
int valeurLue; //variable pour stocker la valeur lue après conversion
float tension; //on convertit cette valeur en une tension

void setup()
{
Serial.begin(9600);
}

void loop()
{
valeurLue = analogRead(potar); //on convertit en nombre la tension lue
tension = valeurLue * 5.0 / 1024; //on traduit la valeur brute en tension
Serial.print("valeurLue = "); //on traduit la valeur brute en tension (produit en croix)
Serial.println(valeurLue); //on affiche la tension calculée
Serial.print("Tension = ");
Serial.print(tension,2);
Serial.println(" V");
Serial.println(); //on saute une ligne entre deux affichages
delay(500); //on attend une demi-seconde pour que l'affichage ne soit pas trop rapide
} ASKRI Tahar 32
Capteur de température numérique

Supposons que le potentiomètre est un capteur


de température de 0 à 100°C.

AFFICHER LA VALEUR DE LA TEMPERATURE SUR L’AFFICHEUR LCD?

ASKRI Tahar 33
Communication série : RS232(1)
Port série:DB9

1. DCD : Détection d'un signal sur la ligne. Utilisée uniquement pour la


connexion de l'ordinateur à un modem ; détecte la porteuse.
2. RXD : Broche de réception des données.
3. TXD : Broche de transmission des données.
4. DTR : Le support qui veut recevoir des données se déclare prêt à "écouter"
l'autre.
5. GND : Le référentiel électrique commun ; la masse.
6. DSR : Le support voulant transmettre déclare avoir des choses à dire.
7. RTS : Le support voulant transmettre des données indique qu'il voudrait
communiquer.
8. CTS : Invitation à émettre. Le support de réception attend des données.
9. RI : Très peu utilisé, indiquait la sonnerie dans le cas des modems RS232.
ASKRI Tahar 34
Communication série : RS232(2)
La gestion des erreurs : Bit de parité

Contrôle de flux
Si les dispositifs communicant entre eux par l'intermédiaire de la liaison série ne traitent pas les
données à la même vitesse.
Contrôle de flux logiciel
ce contrôle de flux utilise des caractères de la table ASCII, le caractère 17 et 19, respectivement
nommés XON et XOFF.
le récepteur envoie le caractère XOFF pour indiquer à l'émetteur qu'il sature.
Lorsqu'il est à nouveau apte à traiter les informations, il envoie le caractère XON pour dire à
l'émetteur qu'il est à nouveau prêt à écouter ce que l'émetteur à a lui dire.
Contrôle de flux matériel

ASKRI Tahar 35
Communication série : RS232(2)
deux cartes Arduino
l'ordinateur et la carte Arduino
La liaison série entre la carte Arduino et
l'ordinateur est établie à travers le port USB. En
fait, ce port USB n'est pas utilisé avec le
protocole USB, mais avec celui de la liaison
série !
l'ordinateur utilise des niveaux de -12V à +12V
Arduino apprécie énormément les tensions de
0V ou 5V (que l'on appelle niveau "TTL").
Adaptation de niveau : un composant est
placé entre les deux supports.
une carte Arduino et un autre Avec Arduino lorsque vous branchez la carte
micro contrôleur sur votre USB d'ordinateur, ce dernier détecte
automatiquement un nouvel appareil avec
Même chose qu’entre lequel il est possible de communiquer par voie
deux cartes Arduino série.

ASKRI Tahar 36
Communication série : émettre des données

Chaine de caractères Variable

void setup() int variable = 512;


{ char lettre = 'a';
Serial.begin(9600); void setup()
Serial.print(‘’ISET Siliana! "); //l'objet exécute {
//une première fonction Serial.begin(9600);
Serial.println(‘’Departement Electrique"); Serial.println(variable);
//puis une deuxième //fonction, Serial.print(lettre);
différente cette fois-ci
Serial.println(3.1415926535);
Serial.println(‘’ Formation Arduino"); //et
Serial.println(3.1415926535, 0);
//exécute à nouveau la même
} Serial.println(3.1415926535, 2);
Serial.println(65, BIN); //envoie la
//valeur 1000001
Lettre = lettre+1;
Serial.print(lettre);
ASKRI Tahar } 37
Communication série : Réception des données

void setup()
{
Serial.begin(9600);
}
void loop()
{int cardispo = 0; //variable contenant le nombre de caractère disponibles dans le
//buffer
cardispo = Serial.available();
while(cardispo > 0) //tant qu'il y a des caractères à lire
{
carlu = Serial.read(); //on lit le caractère
Serial.print(carlu); //puis on le renvoi à l’expéditeur tel quel
cardispo = Serial.available(); //on relit le nombre de caractères dispo
}
}

ASKRI Tahar 38
Communication série : Application1

On veut établir une liaison série entre deux cartes arduino:

- La première carte envoie à la deuxième les alphabets en

majuscule.

- Lorsque la deuxième carte reçoit un caractère, elle le

retransmet à la première en minuscule.

- Lorsque le caractère O est reçu une led branchée à la carte

2 s’allume et lorsque la lettre C est reçu la led s’éteint. 39


Application 1: Solution

carte1 carte2
char i = 0; char carlu = 0; //contient le caractère à lire
char lettre = 'A'; int cardispo = 0; //le nombre de caractère
void setup() disponibles dans le buffer
{ void setup()
Serial.begin(9600); {
} Serial.begin(9600);
void loop() }
{
//petit message d'accueil void loop()
Serial.println("------ L'alphabet Français ------"); {
//on commence les envois cardispo = Serial.available();
for(i=0; i<26; i++) while(cardispo > 0) //tant qu'il y a des
{ // caractères à lire
Serial.print(lettre); //on envoie la lettre {
lettre = lettre + 1; //on passe à la lettre suivante carlu = Serial.read(); //on lit le caractère
delay(250); //on attend 250ms avant de Serial.println(carlu+32); //puis on le renvoi à
//réenvoyer //l’expéditeur tel quel
}
cardispo = Serial.available(); //on relit le
Serial.println(""); //on fait un retour à la ligne
// nombre de caractères dispo
delay(5000); //on attend 5 secondes avant de
}
//renvoyer l'alphabet
} } 40
Commande MCC 24v

Sortie arduino = 5v et moteur 24V


 Utiliser un relais

Si la bobine du relais est 5V : c’est bon


Si non
=> utiliser le circuit intégré ULN2803

Courant max ULN: 500mA


Tension max ULN: 50V

ASKRI Tahar 41
Commande MCC 24v:programme

const int bouton = 3;


Void setup() //fonction initialisation tourne une seule fois
{
pinMode(2, OUTPUT); //broche 2 sortie
pinMode(3, INPUT); //broche 3 sortie

Void loop() //boucle tourne à l’infini


{
If (digitalRead(bouton))
digitalWrite(2, HIGH); //Démarrer moteur
Else
digitalWrite(2, LOW); //arrêter moteur
}

ASKRI Tahar 42
Commande MCC par wifi

ESP8266 Arduino
VCC 3,3V
CH_PD 3,3V
TX RX
RX TX
GND GND

ASKRI Tahar 43
Configurer le module wifi: commandes AT(1)

Tester ESP8266 via les commandes AT


Function AT Command Reponse
Fonctionnement AT OK
+CIFSR:APIP,"192.168.4.1"
Obtenir l’adresse IP +CIFSR:APMAC,"62:01:94:18:98:9b"
OK

TCP/UDP connection AT+CIPMUX? Query


AT+CIPMUX=0 Single
AT+CIPMUX=1 Multiple

Configurer comme AT+CIPSEVER=mode Mode 0 to close server mode;


serveur ,ports mode 1 to opent; port=port
Reset AT+RST OK

Remarque: au moment de la configuration RX vers RX et TX vers TX


ASKRI Tahar 44
Configurer le module wifi: commandes AT(2)

ASKRI Tahar 45
Commande MCC par wifi

void loop()
{
#define SEPARATOR ':' // separator
if (Serial.available())
char buffer; // buffer for incoming
{
void setup() buffer = Serial.read();
{ }
pinMode(13,OUTPUT);
if (buffer == SEPARATOR)
// initialize both serial ports: {buffer=Serial.read();}
Serial.begin(115200);
delay(1000); if(buffer=='a')
Serial.println("AT+CIPMUX=1"); {
delay(2000); digitalWrite(13, HIGH);
}
Serial.println("AT+CIPSERVER=1,8080"); if(buffer=='b')
delay(2000); {
digitalWrite(13, LOW); digitalWrite(13, LOW);
}
} }
ASKRI Tahar 46
Application wifi Hercules(1)

ASKRI Tahar 47
Application wifi Hercules(2)

48
sim900 Icomsat v1.1

IComsat is a GSM/GPRS shield for Arduino and based


on the SIM900 Quad-band GSM/GPRS module. It is controlled via AT
commands (GSM 07.07 ,07.05 and SIMCOM enhanced AT
Commands), and fully compatible with Arduino / Iteaduino and
Mega.

ASKRI Tahar 49
SMS : commandes AT(1)
FONCTION Commande Réponse

AT+CPIN="0000’’ OK
Set the pin code (replace 0000 with you PIN
code).

Set SMS mode to text AT+CMGF=1 OK

AT+CMGS="+31638740161’’
Set phone number of Replace the above phone >
number with your own cell
phone number
To find out which +CPMS: (("SM","BM","SR"),("SM"))
storages are supported AT+CPMS=?
by your mobile phone
to read messages from AT+CPMS="SM" OK
the SIM card use
CMGL: 1,"REC
UNREAD","+31625012354",,"07/07/0
50
Listing the messages AT+CMGL="ALL" 5,09:55:16+08" Test message 1
SMS : commandes AT(2)

+CMGR: "REC
Read message AT+CMGR=2 READ","+31625012254",,"07/07/05,0
9:56:03+08" Test message 2 OK
Delete message AT+CMGD=2

AT+CNMI

ASKRI Tahar 51

Vous aimerez peut-être aussi