Programmation Des Systèmes Intelligents Et Connectés Avec Arduino
Programmation Des Systèmes Intelligents Et Connectés Avec Arduino
Programmation Des Systèmes Intelligents Et Connectés Avec Arduino
2016-2017
Ecole Supérieure Polytechnique / Département Génie Informatique
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 2
Les premiers outils de prototypage des systèmes électroniques sont certes
puissants, mais nécessitent un processus de développement long et difficile à
apprendre, cela requiert de solides connaissances en programmation
informatique et en électronique.
Salué pour avoir établi le mouvement des “makers” et générer un regain
d’intérêt pour l’électronique, Arduino a considérablement évolué depuis que la
première carte a été mise en vente il y a un peu plus de dix ans. Arduino a
permis à plus de gens d’apprendre, d’expérimenter et de réaliser des projets
complets qui auraient auparavant exigés du matériel dédié et coûteux.
Arduino a suscitée rapidement l’intérêt des ingénieurs professionnels. En
effet, ces cartes bon marché leur permettent de valider une conception de
projet et fabriquer rapidement un prototype.
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 3
Arduino : présentation
Arduino est une carte basée sur un microcontrôleur abordable et simple à
mettre en œuvre pour développer des montages électroniques numériques
programmables à base de microprocesseur. Le système Arduino comprend à
la fois :
Le développement matériel de sa carte,
Mais aussi le développement de son environnement de programmation.
Alors que la première génération de cartes incorporait seulement un
microcontrôleur AVR d’Atmel, on note aujourd’hui l’intégration à Arduino de
plusieurs autres types de cartes issues de autres projets telles que les
célèbres cartes ESP8266.
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 4
Arduino : une plate-forme matérielle
L’élément de base de la carte Arduino est le microcontrôleur, ce qui explique
que chaque version d’Arduino a un type de microcontrôleur bien distinct. La
version la plus populaire étant sans nulle doute la UNO. Dans la suite, nous
travaillerons avec :
Arduino Uno R3
Arduino Mega 2560
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 5
Arduino UNO
La carte Arduino Uno est une carte à microcontrôleur basée sur
l'ATmega328. Elle contient tout ce qui est nécessaire pour le fonctionnement
du microcontrôleur. Son interfaçage avec l’ordinateur se fait via un port USB,
qui sert également de source d’alimentation.
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 6
Arduino UNO : caractéristiques
Le tableau suivant présente les principales caractéristiques de l’Arduino Uno.
Processeur AVR 8 bits à architecture RISC
16 MHz de vitesse d'horloge
32 Ko de mémoire FLASH
ATmega328
2 Ko de mémoire SRAM
1 Ko d'EEPROM
Timers/Counters : Timer0 et Timer2 (8 bits), Timer1 (16bits)
5V (port USB) ou 712V (alimentation externe)
AREF : tension de référence pour les entrées analogiques
GND : c’est la masse
Alimentation
Sources de tension de +5V
Sources de tension de +3.3V
Vin : alimentation non stabilisée
14 Entrées/Sorties numériques (5V, 40mA, 50M) numéroté de 0 à 13
Connectique
6 Entrées analogiques (10bits) numérotées de A0 à A5
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 7
Arduino MEGA
La carte Arduino Mega 2560 est une carte à microcontrôleur basée sur
l’ATmega2560. C’est la carte qu'il faut si on manque de broches E/S et de
mémoire avec la carte Uno.
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 8
Arduino MEGA : caractéristiques
Le tableau suivant présente les principales caractéristiques de Arduino Mega
Processeur AVR 8 bits à architecture RISC
16 MHz de vitesse d'horloge
256 Ko de mémoire FLASH
ATmega2560
8 Ko de mémoire SRAM
4 Ko d'EEPROM
Timers/Counters : Timer0 et Timer2 (8 bits), Timer1 (16bits)
5V (port USB) ou 712V (alimentation externe)
AREF : tension de référence pour les entrées analogiques
GND : c’est la masse
Alimentation
Sources de tension de +5V
Sources de tension de +3.3V
Vin : alimentation non stabilisée
54 Entrées/Sorties numériques (5V, 40mA, 50M) numéroté de 0 à 13
Connectique
16 Entrées analogiques (10bits) numérotées de A0 à A15
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 9
Arduino : un environnement logiciel
Le logiciel Arduino est gratuit, open source et multiplateformes: Windows, Linux, Mac OS
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 10
Arduino : configuration
Avant de pouvoir utiliser Arduino, une configuration préalable du logiciel
s’impose.
Sélection du port série : indiquer le numéro de port sur lequel Arduino est connecté
à l’ordinateur.
Sélection du port série : préciser au logiciel avec quel type de carte on va travailler
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 11
Introduction au langage Arduino
Le langage Arduino est basé sur les langages C/C++ et supporte toutes les
constructions standards du langage C et quelques-uns des outils du C++. Le
langage Arduino repose sur l'utilisation du compilateur C pour les
microcontrôleurs AVR, AVR Libc, et vous permet d'utiliser la plupart de ses
fonctions.
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 12
Structure du programme Arduino
La structure d'un programme doit toujours comporter les fonctions setup()et loop()
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 13
Syntaxe de base
Comme tout langage de programmation, il existe des règles de syntaxes à
respecter.
Point-virgule : marque la fin d’une instruction, on peut séparer plusieurs instructions
intsur
a =une
13;même ligne à l'aide de virgule, le point-virgule devant être alors mis à la fin.
digitalWrite(pin1,HIGH), digitalWrite(pin2,LOW), digitalWrite(pin3,HIGH);
La variable à gauche de l'opérateur d'assignement (le signe =) nécessite d'être capable de stocker la
valeur qu'on lui attribue.
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 15
Les autres opérateurs
En plus des opérateurs arithmétiques, le langage Arduino présente d’autres
opérateurs pour plus de facilité de programmation.
Opérateurs de comparaison
x == y // x est égal à y
x != y // x est différent de y
x < y // x est inférieur à y
x > y // x est supérieur à y
x <= y // x est inférieur ou égal à y
x >= y // x est supérieur ou égal à y
Conditions if/else
if (brocheCinqEntree < 500) {
// faire l'action A
}
else if (brocheCinqEntree < 1000) {
// faire l'action B
}
else {
// faire l'action C
}
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 17
Structures de contrôle
Boucle while
while(expression) { // tant que l'expression est vraie
// instructions à effectuer
}
Boucle for
for (initialisation; condition; incrementation) {
//instruction à exécuter
}
Types de variables
Pour les types non signés, on repère ces types par le mot unsigned qui les précède.
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 19
Conversion des types de données
Arduino permet de faire la conversion d’un type de donnée vers un autre.
byte(x) // Convertit une valeur en donnée de type byte
int(x) // Convertit une valeur en donnée de type int
long(x) // Convertit une valeur en donnée de type long
float(x) // Convertit une valeur en donnée de type float
String(x) // Convertit une valeur en en donnée de type string
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 20
Les constantes Arduino prédéfinies
Les constantes prédéfinies du langage Arduino sont des valeurs particulières
ayant une signification spécifique.
Définition de niveaux logiques
Les états VRAI et FAUX dans Arduino sont représentées par : true et false.
Définition des niveaux de broche
Une broche numérique ne peut prendre/être qu'à deux valeurs : HIGH ou LOW.
• HIGH
En mode INPUT, Arduino renverra HIGH si une tension de plus 3V est présente sur la broche.
En mode OUTPUT, Arduino met la broche sur 5V avec une intensité maximale de 40mA.
• LOW
En mode INPUT, Arduino renverra LOW si une tension de moins de 2V est présente sur la broche.
En mode OUTPUT, Arduino met la broche sur 0 volts.
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 21
Les chaînes de caractères
Les chaînes de caractères sont représentées sous forme de tableau de
variables de type char et se termine par un zéro. Toutes les expressions
suivantes sont des déclarations valides pour des chaînes de caractère.
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[ ] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";
void setup()
{
pinMode(ledPin, OUTPUT); // met la broche numérique en sortie
}
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 24
Ecrire sur des Entrées/Sorties numériques
Met un niveau logique HIGH ou LOW sur une broche numérique, sa tension est mise à
5V pour le niveau HIGH, 0V pour le niveau LOW.
digitalWrite(pin, value)
void loop()
{
digitalWrite(ledPin, HIGH); // allume ou éteint la LED selon le montag
}
Il n'est pas nécessaire de faire appel à l'instruction pinMode() pour mettre la broche en
mode OUTPUT.
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 27
Arduino et la communication série UART
La communication série est indispensable pour dialoguer avec une carte
Arduino puisque c'est le mode de transmission utilisé par défaut.
Hardware : toutes les cartes Arduino disposent d’au moins d’un port série. Pour
l’Arduino UNO, ses ports UART se trouvent aux broches numériques pin0 (RX) et
pin1 (TX). Si on utilise cette fonctionnalité, on ne peut pas utiliser les broches 0 et 1
en tant que broches E/S.
Software : Arduino dispose d’une bibliothèque Serial pour la communication série.
Cette bibliothèque met à la disposition du programmeur de nombreuses fonctions
permettant d’exploiter tous les avantages de la communication série.
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 28
Initialiser une communication série
Pour initialiser une communication, on utilise la fonction begin qui prend deux
paramètres dont l’un est optionnel. L’émetteur et le récepteur doivent utiliser
la même configuration.
Serial.begin(speed)
• speed : fixe le débit de communication (en bauds) pour la communication série.
Les débits les plus couramment utilisés sont : 9600 et 115200.
• config : paramètre optionnel, permet de spécifier la taille des données, le bit de
parité et les bits stop. La valeur par défaut est SERIAL_8N1.
Serial.begin(9600);
Serial.begin(9600, SERIAL_8N1);
Applications Electroniques Dédiées aux Réseaux et Télécoms
DUT2TR & DST2TR / ESP
O. SADIO ousmane.sadio@ucad.edu.sn 5. Programmation des Systèmes Intelligents et Connectés avec Arduino 29
Envoi de données texte
Permet d’envoyer du texte sous format ASCII. Cette fonction prend deux
paramètres dont l’un est optionnel.
Serial.print(val)
• val : la valeur à afficher. N'importe quel type de données.
• format : optionnel, spécifie la base utilisée (pour les nombres entiers : BIN, DEC,
HEX, OCT ou le nombre de décimales (pour les nombres de type float).
Serial.print("hello world!");
Serial.print(val, format);