• Aucun résultat trouvé

[PDF] Arduino architecture et application formation avance | Cours Arduino

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Arduino architecture et application formation avance | Cours Arduino"

Copied!
56
0
0

Texte intégral

(1)

Plan du cours

1.

Présentation de carte Arduino

2.

Présentation du logiciel Arduino IDE

3.

Présentation du logiciel de simulation ISIS Proteus

(2)

Plan du cours

1.

Présentation de carte Arduino

2.

Présentation du logiciel Arduino IDE

3.

Présentation du logiciel de simulation ISIS Proteus

(3)

1. Présentation de carte Arduino

Qu’est ce qu’un microcontrôleur ?

Un microcontrôleur est un petit ordinateur sur un seul circuit intégré contenant un processeur, mémoires et des périphériques d’entrée/sortie programmables. Comme la plupart des ordinateurs, les microcontrôleurs sont tout simplement des exécuteurs d'instructions d'usage général. L’élément principal d'un système informatique est un programme d'instructions qui est fourni par un programmeur humain.

(4)

1. Présentation de carte Arduino

Caractéristiques de la carte Arduino

La carte Arduino est un outil facile à utiliser. Elle est basée sur un microcontrôleur de type Atmel ATMEGA328 (Arduino UNO) ou ATMEGA2560 (Arduino MEGA). Ce puissant ordinateur à carte unique a réussi à se faire une bonne place dans le marché des amateurs ainsi que dans le marché des professionnels et académiques.

Un des modèles les plus répandu de carte Arduino est l’Arduino UNO. C’est la première version stable de carte Arduino.

(5)

1. Présentation de carte Arduino

Caractéristiques de la carte Arduino

(6)

1. Présentation de carte Arduino

(7)

1. Présentation de carte Arduino

(8)

1. Présentation de carte Arduino

(9)

1. Présentation de carte Arduino

(10)

1. Présentation de carte Arduino

Arduino en chiffres

ARDUINO UNO ARDUINO MEGA

Microcontrôleur

Tension de fonctionnement Tension d'entrée (recommandé) Tension d'entrée (limites)

Broches d’E/S numérique Broches d'entrée analogiques Courant DC par broche d’E/S Courant DC de la sortie 3,3V Mémoire Flash SRAM EEPROM Vitesse d'horloge Longueur Largeur Poids ATmega328 5V 7-12 V 6-20V 14 (6 fournissent la sortie PWM) 6 20 mA 50 mA 32 Ko 2 KB 1 KB 16 MHz 68,6 mm 53,4 mm 25 g ATmega2560 5V 7-12 V 6-20V 54 (15 fournissent la sortie PWM) 16 20 mA 50 mA 256 Ko 8 KB 4 KB 16 MHz 101,52 mm 53,3 mm 37g

(11)

Plan du cours

1.

Présentation de carte Arduino

2.

Présentation du logiciel Arduino IDE

3.

Présentation du logiciel de simulation ISIS Proteus

(12)

2. Présentation du logiciel Arduino IDE

L’Arduino IDE est un logiciel libre disponible en téléchargement gratuit pour les systèmes d’exploitation Linux, Windows et Mac OS X. L’environnement de développement permet d’éditer les programmes, les compiler et les charger sur la carte Arduino.

Les étapes à suivre pour installer l’Arduino IDE sous Windows s’enchainent comme suit :

1. Ouvrez le dossier Arduino IDE et avec un clic droit lancez l’installation du logiciel "arduino-1.8.5-windows.exe" en tant qu’administrateur.

2. Suivez les étapes de l’installation naïvement jusqu’à ce que Windows vous demande l’autorisation pour installer le pilote USB Arduino, une fois que vous acceptez, l’installation se termine.

(13)

2. Présentation du logiciel Arduino IDE

Il est doté d’un éditeur de code

[1], où la fonction setup contiendra toutes les opérations nécessaires à la configuration de la carte et la fonction loop est exécutée en boucle après l’exécution de la fonction setup. On retrouve aussi une barre d’outils

rapide [2] et une barre de menus [3]

pour accéder aux fonctions avancées de l’IDE. Enfin, une console [4]

affichant les résultats de la compilation du code source, des opérations sur la carte, etc.

(14)

Plan du cours

1.

Présentation de carte Arduino

2.

Présentation du logiciel Arduino IDE

3.

Présentation du logiciel de simulation ISIS Proteus

(15)

2. Présentation du logiciel de simulation ISIS

Proteus

Proteus est un outil logiciel permettant la conception électronique assistée par ordinateur. Proteus est composé de deux logiciels principaux : ISIS, permet la création de schémas et la simulation électrique, et ARES, dédié à la création de circuits imprimés. Grâce à des librairies additionnels, ISIS est également capable de simuler le comportement d'un microcontrôleur (PIC, Atmel, 8051, ARM, HC11...) et son interaction avec les composants qui l'entourent.

(16)

2. Présentation du logiciel de simulation ISIS

Proteus

L’installation de la version 7.6 de Proteus se fait comme suit :

1. Ouvrez le dossier Proteus 7.6 et lancez l’installation de "setup76 Sp4.exe" en tant

qu’administrateur.

2. Acceptez d’installer WinHelp.

3. Choisissez d’installer votre clé de licence installée localement.

4. Cliquez sur "Next" pour pouvoir indiquer au gestionnaire de licences le chemin de votre clé. Cliquer en suite sur "Browse For Key File", indiquez le chemin de la clé, puis cliquer sur "Install", confirmer avec "Yes" et enfin fermer le gestionnaire de licence avec "Close".

5. Poursuivez l’installation, mais n’oubliez pas de cocher "Converter Files" comme composante à installer.

(17)

2. Présentation du logiciel de simulation ISIS

Proteus

Pour pouvoir simuler les cartes Arduino plus efficacement, il est nécessaire d’ajouter la librairie Arduino à ISIS. La démarche suivante permet de le faire :

1. Copier les fichiers "ARDUINO.IDX", "ARDUINO.LIB", "AVR2.IDX", et "AVR2.LIB" du dossier Librairie Arduino pour Proteus et collez-les dans le dossier : "C:\Program Files (x86)\Labcenter Electronics\Proteus 7 Professional\LIBRARY".

2. Copier le fichier "AVR2.DLL" du dossier Librairie Arduino pour Proteus et collez-le dans le dossier : "C:\Program Files (x86)\Labcenter Electronics\Proteus 7 Professional\MODELS".

(18)

1. Coller « proteus.pro.7.6.sp4-patch.exe » dans C:\Program Files\Labcenter Electronics\Proteus 7 Professional .

2. Désactiver l’anti-virus puis ouvrer le patch en tant qu’administrateur.

3. Cliquer sur Patch, puis aller à C:\Program Files\Labcenter Electronics\Proteus 7 Professional\BIN (sélectionner le fichier puis cliquer sur OK) puis à C:\Program Files\Labcenter

Electronics\Proteus 7 Professional\MODELS (sélectionner le fichier puis cliquer sur OK)

2. Présentation du logiciel de simulation ISIS

Proteus

(19)

Plan du cours

1.

Présentation de carte Arduino

2.

Présentation du logiciel Arduino IDE

3.

Présentation du logiciel de simulation ISIS Proteus

(20)

4. Fonctionnalités de base

Configuration des Entrées/Sorties numériques

Le langage Arduino vient avec un nombre important de fonctions de base permettant d’interagir avec son environnement. Les fonctions les plus utilisée sont les fonctions

d’entrées/sorties. Ce sont elles qui permettent d’envoyer ou de mesurer une tension sur une

des broches de la carte.

Dans un premier temps, avant d’effectuer une mesure ou d’envoyer une commande. Il est nécessaire de définir la direction des broches utilisées. Pour cela on fait appel à la fonction

pinMode(pin, état) en lui donnant la pin concernée et l’état: void setup(){

pinMode(1,OUTPUT) ; // Pin 1 en sortie

pinMode(2,INPUT) ; // Pin 2 en entrée }

(21)

4. Fonctionnalités de base

Configuration des Entrées/Sorties numériques

Une fois la configuration est faite, on peut procéder à l’utilisation des broches. Toutes les broches sont capables d’écrire et de lire des données numériques (c'est-à-dire des 0 (0V) ou des 1 (5V)).

La fonction digitalRead(pin): mesure une donnée numérique sur une des broches, la

broche en question doit être réglée en entrée.

La fonction digitalWrite(pin, valeur): écrit une donnée numérique sur une des broches, la

broche concernée doit être réglée en sortie. Le paramètre valeur doit être égal à HIGH (état 1 soit 5V) ou LOW (état 0 soit 0V).

(22)

4. Fonctionnalités de base

Timers

Les Timers sont utilisés pour une variété de tâches, par exemple, pour gérer le temps d’appui sur un bouton ou pour générer des signaux modulés en largeur d'impulsion (PWM) pour le contrôle moteur à titre d’exemple. Le langage Arduino fournis quelques fonctions permettant de gérer le temps:

La fonction delay(): suspend le programme durant un laps de temps (en millisecondes)

spécifié comme paramètre.

La fonction delayMicroseconds(): suspend le programme pour un laps de temps (en

microsecondes) spécifié comme paramètre.

La fonction millis(): retourne le nombre de millisecondes depuis que la carte Arduino a

commencé à exécuter le programme jusqu’au moment de l’exécution de la fonction millis().

La fonction micros(): retourne le nombre de microsecondes depuis que la carte Arduino a

(23)

Premier Programme : BLINK

1. Tout d’abord ouvrez l’Arduino IDE, et allez vers Outils  Type de carte puis choisissez le type de votre carte (Arduino/Genuino UNO ou Arduino/Genuino MEGA)

2. Allez à Fichier  Exemples  01.Basics  Blink. Le code source du programme est le suivant :

(24)

Premier Programme : BLINK

Pour pouvoir simuler l’Arduino sur ISIS, il faut lui indiquer le chemin du fichier ".hex" ; pour cela nous devons activer une fonctionnalité d’Arduino IDE qui permet d’afficher le chemin du fichier ".hex".

1. Allez vers Fichier  Préférences

2. Cochez les deux cases suivantes :

Dès maintenant, à chaque fois que vous compilez un programme, la console en bas d’Arduino IDE vous permettra de récupérer le chemin absolu de votre fichier ".hex".

(25)

Premier Programme : BLINK

Réalisez le montage suivant sous ISIS, indiquer à la carte Arduino le chemin du programme puis lancez la simulation du montage.

(26)

Premier Programme : BLINK

 Le bouton ‘’Téléverser‘’ permet de charger le programme sur la mémoire Flash d’Arduino.

La LED de test branchée sur le PIN 13 va commencer à clignoter !

(27)

Exercice 1

Réalisez un montage et écrivez un programme qui permet d’allumer une LED branchée sur le PIN 13 durant 5 secondes une fois un bouton poussoir lié au PIN A0 est actionné..

(28)

Exercice 1 (Solution)

(29)

Exercice 2

Réalisez un montage et écrivez un programme 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é.

(30)

Exercice 2 (Solution)

(31)

Exercice 3

Maintenant nous voulons reprendre l’exercice 2 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. Réalisez le montage et écrivez un programme.

(32)

Exercice 3 (Solution)

(33)

4. Fonctionnalités de base

Interruptions

Il est parfois nécessaire d’attendre un événement externe (appui

sur un bouton, données d’un capteur, etc.) pour effectuer une

action. Pour ce type de problème, on utilise les interruptions. Il y a 2

broches d'interruption externes sur l’Arduino UNO, INT0 et INT1, et ils

sont mappés sur les broches 2 et 3 de la carte, et a 6 broches

(34)

4. Fonctionnalités de base

Interruptions

La fonction attachInterrupt(): détermine une routine d'interruption à exécuter quand une

interruption se produit.

Syntaxe de la fonction: attachInterrupt(interruption, routine, mode)

interruption : Numéro de l’interruption (0 (pin2) ou 1 (pin3))

routine : fonction à appeler une fois que l’interruption se produit. Cette fonction ne doit pas prendre de paramètres et ne retourne rien.

mode : LOW, CHANGE, RISING, ou FALLING.

LOW : Lorsque la broche est à l’état 0 (0V).

RISING : Lorsque la broche passe de l’état 0 (0V) à l’état 1 (5V) (front montant).

FALLING : Lorsque la broche passe de l’état 1 (5V) à l’état 0 (0V) (front descendant).

CHANGE : Lorsque la broche change d’état (front montant et front descendant).

La fonction detachInterrupt(): Désactive une interruption.

(35)

4. Fonctionnalités de base

Interruptions

La fonction noInterrupts(): permet de désactiver les interruptions. Les interruptions sont

activées par défauts.

(36)

Exercice 4

Reprenons l’exercice 3, mais cette fois en utilisant la fonction attachInterrupt() (non pas la fonction millis). Réalisez le montage et écrivez le programme.

(37)

Exercice 4 (Solution)

(38)

4. Fonctionnalités de base

Communication série

Utilisée pour la communication entre la carte Arduino et un ordinateur ou d'autres appareils. Toutes les cartes Arduino ont au moins un port série. Il communique sur les broches numériques 0 (Rx) et 1 (TX) et avec l'ordinateur via USB.

Serial.begin(): configuration de la vitesse de transmission de données. Une vitesse s’exprime en bits par seconde. Les vitesses les plus courantes sont 9600, 19200 et 115200 bits par seconde.

Serial.println(): transmet les données au port série sous forme de texte lisible ASCII suivie de retour à la ligne à la fin du message envoyé.

Serial.available(): permet d’obtenir le nombre d'octets 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).

(39)

Exercice 5

Réalisez un montage et écrivez un programme qui permet d’afficher l’état du bouton poussoir connecté au pin A0 (état ‘ON’ ou ‘OFF’ en utilisant la fonction Serial.println())

(40)

Exercice 5 (Solution)

(41)

4. Fonctionnalités de base

Conversion Analogique/Numérique

o Qu’est ce qu’un Convertisseur Analogique Numérique (CAN)?

C’est un dispositif qui convertit des grandeurs analogiques en grandeurs numérique. La valeur numérique obtenue sera proportionnelle à la valeur analogique fournie en entrée.

Le convertisseur analogique/numérique d’Arduino 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.

(42)

4. Fonctionnalités de base

Conversion Analogique/Numérique

Le microcontrôleur de l'Arduino UNO contient 6 canaux de conversion analogiques-numérique (A/D) configurés sur les broches analogiques A0 jusqu’à A5.

Le microcontrôleur de l'Arduino MEGA contient 16 canaux de conversion analogiques-numérique (A/D) configurés sur les broches analogiques A0 jusqu’à A15.

(43)

4. Fonctionnalités de base

Conversion Analogique/Numérique

La fonction analogRead(pin):

pin: le numéro de l’entrée analogique.

La valeur retournée sera le résultat de la conversion analogique numérique (comprise entre 0 et 1023)

(44)

Exercice 6

Pour créer une variation de la tension, nous allons utiliser un potentiomètre raccordé au pin A0. Ecrivez un programme qui permet de récupérer la valeur analogique de A0 (utilisez analogRead(A0)) et de l’afficher sur le moniteur série.

(45)

Exercice 6 (Solution)

Pour créer une variation de la tension, nous allons utiliser un potentiomètre raccordé au pin A0. Ecrivez un programme qui permet de récupérer la valeur analogique de A0 (utilisez analogRead) et de l’afficher sur le moniteur série.

(46)

4. Fonctionnalités de base

Contrôle de puissance par modulation de largeur d'impulsion (PWM)

PWM : Pulse Width Modulation (ou Modulation à Largeur d’Impulsion) est une technique

pour contrôler la puissance électrique fournie aux appareils. Le signal PWM est constitué d’une série d’impulsions sous forme d’un signal rectangulaire.

Le principe de la PWM repose sur le rapport cyclique (en anglais Duty Cycle) qui désigne le fait que le niveau logique 1 peut ne pas durer le même temps que le niveau logique 0. Le rapport cyclique est mesuré en pourcentage (%). Plus le pourcentage est élevé plus le niveau logique 1 est présent dans la période.

(47)

4. Fonctionnalités de base

Contrôle de puissance par modulation de largeur d'impulsion (PWM)

La fonction analogWrite(pin, value): écrit une valeur sous forme de PWM sur une des broches réglée en sortie.

pin: identifiant de la broche de sortie.

(48)

4. Fonctionnalités de base

(49)

Exercice 7

Réalisez un montage et écrivez un programme qui permet la visualisation du signal PWM sur l’oscilloscope attaché au pin 9, en agissant sur un potentiomètre attaché au pin A0. (en utilisant la fonction analogWrite)

(50)

Exercice 7 (Solution)

Réalisez un montage et écrivez un programme qui permet la visualisation du signal PWM sur l’oscilloscope attaché au pin 9, en agissant sur un potentiomètre attaché au pin A0. (en utilisant la fonction analogWrite)

(51)

4. Fonctionnalités de base

Contrôle de moteurs

L’Arduino comme tout cerveau d’un système embarqué est utilisé dans des 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).

Le moteur DC: ou moteur à courant continu convertit l'énergie électrique sous forme d’un courant continu en puissance mécanique. Généralement ces moteurs ont deux bornes, l’application d’une tension continue à ces bornes conduit à la rotation du moteur dans un sens, l’inversion de la polarité de la tension le conduit à tourner dans le sens contraire.

(52)

Exercice 8

Réalisez un montage et écrivez un programme qui permet la 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.

(53)

Exercice 8 (Solution)

(54)

4. Fonctionnalités de base

Contrôle de moteurs

Le servo-moteur: un moteur (rotatif) qui peut effectuer des rotations très précises (dans une portion de tour seulement) et en un certain nombre de pas (de micro-déplacements). Il y a toutes sortes de moteurs. Un des avantages des servo-moteurs est sa possibilité de maintenir avec force une position donnée. On peut piloter des rotations avec l’Arduino, quelques fois directement avec la carte si le moteur n’est pas trop puissant, sinon en passant par un montage associé.

(55)

4. Fonctionnalités de base

Contrôle de moteurs

Le servo-moteur:

Composition: un moteur à courant continu, un circuit électronique pour commander le moteur avec un signal, un système d'engrenage pour amplifier le couple de rotation et un potentiomètre qui fournit l’information sur la position (angle de rotation).

Connexion: le servo-moteur a besoin de trois fils de connexion pour fonctionner. Deux fils servent à son alimentation, le dernier étant celui qui reçoit le signal de commande:

• : pour l’alimentation (4.5V à 6V en général).

• ou : pour la masse (0V).

• , , ... : entrée du signal de commande, codé en PWM. 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.

(56)

4. Fonctionnalités de base

Contrôle de moteurs

Le servo-moteur:

Commande d’un servomoteur par Arduino: La bibliothèque Servo.h permet à une

carte Arduino de contrôler des servomoteurs. Les modèles standards permettent l'arbre d’être positionné à divers angles, généralement entre 0 et 180 degrés.

La fonction attach(): associe un objet "servomoteur" à une broche de l’Arduino.

La fonction write(): commande l’arbre du servomoteur à tourner vers l’angle donné

en paramètre (0°- 180°).

La fonction read(): retourne la valeur de l’angle de l’arbre du moteur (0°-180°).

Références

Documents relatifs

Ces pratiques basées essentiellement sur l’imitation des codes, images et signes du monde de l’entreprise (comme on peut trouver ailleurs l’artiste ouvrier,

Elle était une vieille danse, sûrement, et elle avait beaucoup servi, mais il lui semblait qu’elle avait aussi sa place dans cette danse du moment.. Ca marchait, parfois, et

Résumé : Cette communication analyse les mutations de l’industrie des médias dans un contexte de convergence qui favorise l’expansion des groupes des médias mais

In this paper, we develop a new constant size thresh- old Attribute Based Signcryption Scheme (t-ABSC) as a novel security mechanism for the access control, data encryption, and

L’article propose d’étudier la conduite des politiques de lutte contre la pauvreté (LCP) à destination des personnes sans-abri sur le territoire de la Région de

The MISE approach (mediation information system engineering) aims at defining and designing a platform, dedicated to initiate and support any collaborative situation among

Based on this information and using the theory of quantitative games, we lift most of the linear-time–branching-time spectrum of van Glabbeek [24] to the quantitative setting, while

« Une morale assimilative et tendanciellement égalitariste se profile chez Darwin comme l’horizon de l’état de civilisation en tant qu’il est fondé sur