Académique Documents
Professionnel Documents
Culture Documents
Arduino est une plate-forme de prototypage d'objets interactifs à usage créatif constituée d'une carte
électronique et d'un environnement de programmation. Cet environnement matériel et logiciel permet à
l'utilisateur de formuler ses projets par l'expérimentation directe avec l'aide de nombreuses ressources
disponibles en ligne.
Arduino est utilisé dans beaucoup d'applications comme l'électrotechnique industrielle et embarquée ; le
modélisme, la domotique mais aussi dans des domaines différents comme l'art contemporain et le pilotage
d'un robot, commande des moteurs et faire des jeux de lumières, communiquer avec l'ordinateur,
commander des appareils mobiles (modélisme).
Microcontrôleur ATmega328
a. Description
Un microcontrôleur ATMega328 est un circuit intégré qui rassemble sur une puce plusieurs éléments
complexes dans un espace réduit au temps des pionniers de l’électronique. Aujourd’hui, en soudant un
grand nombre de composants encombrants ; tels que les transistors ; les résistances et les condensateurs
tout peut être logé dans un petit boîtier en plastique noir muni d’un certain nombre de broches dont la
programmation peut être réalisée en langage C. la figure suivante montre un microcontrôleur ATMega 328,
qu’on trouve sur la carte Arduino.
Le microcontrôleur ATMega328 est constitué par un ensemble d’éléments qui ont chacun une fonction
bien déterminée. Il est en fait constitué des mêmes éléments que sur la carte mère d’un ordinateur.
Globalement, l’architecture interne de ce circuit programmable se compose essentiellement de :
• La mémoire Flash : C'est Celle qui contiendra le programme à exécuter. Cette mémoire est effaçable
et réinscriptible mémoire programme de 32Ko (dont bootloader de 0.5 ko).
• RAM : c'est la mémoire dite "vive", elle va contenir les variables du programme. Elle est dite
"volatile" car elle s'efface si on coupe l'alimentation du microcontrôleur. Sa capacité est 2 ko.
• EEPROM : C'est le disque dur du microcontrôleur. On y enregistre des infos qui ont besoin de
survivre dans le temps, même si la carte doit être arrêtée. Cette mémoire ne s'efface pas lorsque
l'on éteint le microcontrôleur ou lorsqu'on le reprogramme [12].
On peut distinguer deux genres de sources d’alimentation (Entrée Sortie) et cela comme suit :
• VIN : La tension d'entrée positive lorsque la carte Arduino est utilisée avec une source de
tension externe (à distinguer du 5V de la connexion USB ou autre source 5V régulée). On peut
alimenter la carte à l'aide de cette broche, ou, si l'alimentation est fournie par le jack
d'alimentation, accéder à la tension d'alimentation sur cette broche.
• 3.3V : Une alimentation de 3.3V fournie par le circuit intégré FTDI (circuit intégré faisant
l'adaptation du signal entre le port USB de votre ordinateur et le port série de l'ATMega) de la
carte est disponible : ceci est intéressant pour certains circuits externes nécessitant cette
tension au lieu du 5V. L'intensité maximale disponible sur cette broche est de 50mA [12].
Cette carte possède 14 broches numériques (numérotée de 0 à 13) peut être utilisée soit comme une
entrée numérique, soit comme une sortie numérique, en utilisant les instructions pinMode, digitalWrite et
digitalRead du langage Arduino. Ces broches fonctionnent en 5V. Chaque broche peut fournir ou recevoir
un maximum de 40mA d'intensité et dispose d'une résistance interne de "rappel au plus" (pull-up)
(déconnectée par défaut) de 20-50 KOhms. Cette résistance interne s'active sur une broche en entrée à
l'aide de l'instruction digitalWrite (broche, HIGH).
En plus, certaines broches ont des fonctions spécialisées :
• Interruptions Externes : Broches 2 et 3. Ces broches peuvent être configurées pour déclencher une
interruption sur une valeur basse, sur un front montant ou descendant, ou sur un changement de
valeur.
• Impulsion PWM (largeur d'impulsion modulée) : Broches 3, 5, 6, 9, 10, et 11. Fournissent une
impulsion PWM 8-bits à l'aide de l'instruction analogWrite.
• SPI (Interface Série Périphérique) : Broches 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ces broches
supportent la communication SPI (Interface Série Périphérique) disponible avec la librairie pour
communication SPI. Les broches SPI sont également connectées sur le connecteur ICSP qui est
mécaniquement compatible avec les cartes Méga.
• I2C : Broches 4 (SDA) et 5 (SCL). Supportent les communications de protocole I2C (ou interface TWI
(Two Wire Interface - Interface "2 fils"), disponible en utilisant la librairie Wire/I2C (ou TWI - Two-
Wire interface - interface "2 fils").
• LED : Broche 13. Il y a une LED incluse dans la carte connectée à la broche 13. Lorsque la broche est
au niveau HAUT, la LED est allumée, lorsque la broche est au niveau BAS, la LED est éteinte.
La carte UNO dispose 6 entrées analogiques (numérotées de 0 à 5), chacune pouvant fournir une mesure
d'une résolution de 10 bits (c.à.d. sur 1024 niveaux soit de 0 à 1023) à l'aide de la très utile fonction
analogRead du langage Arduino. Par défaut, ces broches mesurent entre le 0V (valeur 0) et le 5V (valeur
1023), mais il est possible de modifier la référence supérieure de la plage de mesure en utilisant la broche
AREF et l'instruction analog Reference du langage Arduino.
La carte Arduino UNO intègre un fusible qui protège le port USB de l’ordinateur contre les surcharges en
intensité (le port USB est généralement limité à 500mA en intensité).
Bien que la plupart des ordinateurs aient leur propre protection interne, le fusible de la carte fournit une
couche supplémentaire de protection. Si plus de 500mA sont appliqués au port USB, le fusible de la carte
coupera automatiquement la connexion jusqu'à ce que le court-circuit ou la surcharge soit stoppé.
Ces broches sont connectées aux broches correspondantes du circuit intégré ATMega328 programmé en
convertisseur USB – vers – série de la carte, composant qui assure l'interface entre les niveaux TTL et le
port USB de l'ordinateur.
Comme un port de communication virtuel pour le logiciel sur l’ordinateur, La connexion série de l'Arduino
est très pratique pour communiquer avec un PC, mais son inconvénient est le câble USB, pour éviter cela, il
existe différentes méthodes pour utiliser ce dernier sans fil :
Le Bluetooth est un protocole de communication sans fil, permettant l’échange bidirectionnel de données
à une distance bien précise (15 à 20 mètres), en utilisant des ondes radio UHF sur une bande de fréquence
de 2.4 GHz. Son objectif est de simplifier les connexions entre les appareils électroniques en supprimant les
liaisons filaires.
Le module HC-05 n'est pas plus gros qu’un pouce. Il est en fait un montage d'un module Bluetooth sur un
petit P.C.B, cela permet de s'affranchir de certaines contraintes comme la soudure du module (qui est très
délicate), la conversion 5V et 3.3V, la régulation de l'alimentation (3.3V de nouveau) ou encore l'ajout de
LED de signal, tout cela est déjà intègre.
Le DHT11 est un capteur de température et d'humidité qui possède quatre broches : VCC, GND, Data Pin et
une broche non connectée. Une résistance pull-up de 5k à 10k ohms est sondée pour la communication
entre le capteur et le microcontrôleur. Le capteur DHT11 se compose d'un élément capacitif de détection
de l'humidité et d'une thermistance pour la détection de la température.
Paramètres DHT11
Humidité (relative %) 20 ~ 80%
Précision (humidité) +/- 5%
Température 0 ~ +50°C
Précision (température) +/- 2°C
Fréquence mesure max 1Hz (1 mesure par seconde)
Tension d'alimentation 3 ~ 5 volts
Stabilité à long terme +/- 1% par an
Puisque l’Arduino inclut des sorties d’alimentation, la connexion de ce dernier avec le capteur utilisé révèle
encore plus facile, dans ce cas, il suffit de brancher les pins de 5V et de VSS ainsi que le pin du data avec les
sorties correspondantes sur la carte comme le montre la figure suivante :
La communication entre le DHT11 et le microcontrôleur se fait via un seul bus de data (single-bus data
format) pour la transmission et la réception. Un processus de communication dure 4ms. La transmission du
data entre les deux éléments s’effectue par un basculement de niveau électrique entre deux états : haut et
bas. Ainsi, le processus se divise en deux phases : la phase de réception, à travers laquelle le capteur reçoit
le signal du microcontrôleur pour fonctionner, et la phase de transmission, dans laquelle le capteur
transmis le data qui porte les informations sur la température et l’humidité vers le microcontrôleur. Le
processus de communication est schématisé dans la courbe qui suit :
Comme on voit dans la courbe, la tension à l’entrée du data pin du capteur bascule entre deux niveaux
haut et bas. Dans la phase de transmission, courbe noire, le microcontrôleur envoie une impulsion
électrique durant 18 ms qui constitue un signal de déclanchement pour le fonctionnement du capteur.
Lorsque l’impulsion se termine, le microcontrôleur laisse un intervalle de temps attendant la réponse du
capteur, et la phase de réception du signal de déclanchement est terminée. Ensuite, lorsque le capteur
reçoit le signal du microcontrôleur, il envoie un signal de réponse qui dure 80 µs. Puis, le programme du
DHT11 le voltage du data bus au niveau haut en le conservant pour 80 µs en se préparant pour la
transmission du data.
Quand le voltage du data bus est au niveau bas, cela signifie que le capteur est en train de transmettre les
données. Dans cette étape, chaque bit du data commence par un niveau de voltage bas, et la durée du
niveau haut qui le suivre détermine si le bit et un « 1 » ou un « 0 » (une durée de 26 à 28 µs signifie un 0
tandis qu’une durée de 70 µs signifie un 1).
Ce sont des câbles conducteurs qui permettent de raccorder les différents composants dans le circuit.
Notre réalisation software a besoin de deux étapes : la première consiste a un programme qui va s’injecter
aux microcontrôleurs de la carte Arduino après avoir été convertie par l’IDE en code HEX et la deuxième a
un programme qui va se manipule sous App Inventor et s’installe sous smart phone.
Le logiciel de programmation de la carte Arduino de code (langage proche de C). Une fois, le programme
tapé ou modifié au clavier, il sera transféré et mémorisé dans la carte à travers de la liaison USB. Le câble
USB alimenté à la fois en énergie la carte et transporte aussi l’information, ce programme appelé IDE
Arduino.
Comme n’importe quel langage de programmation, une interface souple et simple est exécutable sur
n’importe quel système d’exploitation, Arduino basé sur la programmation en C.
Le logiciel Arduino est un environnement de développement (IDE) open source et gratuit, téléchargeable
sur le site officiel d’Arduino.
Un programme Arduino comporte trois parties : la partie déclaration des variables (optionnelle) la partie
initialisation et configuration des entrées/sorties : la fonction setup () la partie principale qui s'exécute en
boucle : la fonction loop ()
Commentaires /** Ce programme fait clignoter une LED branchée sur la broche
Cette zone permet de commenter
13 et fait également clignoter la diode de test de la carte
le programme.
Commentaire sur une ligne : //
**/
Commentaires multilignes : /****/
Proteus est un logiciel CAO électronique qui permet la conception d'un système électronique complet et de
le simuler, y compris avec le code des microcontrôleurs. Pour ce faire, elle inclut un éditeur de schéma
(ISIS), un outil de placement-routage (ARES), un simulateur analogique-numérique, un environnement de
développement intégré pour microcontrôleurs, un module de programmation par algorigrammes ainsi
qu'un éditeur d'interface pour smartphone afin de piloter à distance des cartes Arduino ou Raspberry.
Proteus est composé de différents packages qui sont : Proteus PCB pour le circuit imprimé, Proteus VSM
pour la simulation, Proteus Visual Designer/IoT Builder pour Arduino/Raspberry pour développer des
projets comparables à ceux conçus avec des outils tels que Scratch et App Inventor.
Figure II.6 : Interface du logiciel Proteus ISIS
Android est un système d’exploitation développé initialement pour les Smart phones. Il utilise un noyau
Linux qui est un système d’exploitation libre pour PC et intègre tous les utilitaires et les périphériques
nécessaires à un smart phone. Il est optimisé pour les outils Gmail.
Aussi, l’Android est libre et gratuit et a été ainsi rapidement adopté par des fabricants. La société Android a
été rachetée en 2007 par Google. Mais aujourd’hui, l’Androïde est utilisé dans de nombreux appareils
mobiles (smart phones).
Les applications sont exécutées par un processeur de type ARM à travers un interpréteur JAVA. En plus de
cela, l’androïde concurrence l’opérateur système d’Apple qu’il tend à dépasser en nombre d’utilisateurs.
Android évolue pour mieux gérer l’hétérogénéité des appareils qu’il utilise.
App Inventor est un outil de développement des applications en ligne pour les smart phones sous androïde
et permet à chacun de créer son application personnelle pour le système d’exploitation Androïde qui est
développée par Google.
La plateforme de développement est offerte à tous les utilisateurs possédant un compte Gmail. Elle
rappelle certains langages de programmation simplifiés basés sur une interface graphique similaire à
Scratch. Les informations des applications sont stockées sur des serveurs distants. Elles sont actuellement
entretenues par le Massachusetts Institute of Technologie (MIT).
L’environnement de App Inventor contient trois fenêtres sont proposées pendant le développement :
• Une pour la création de l’interface homme machine : elle sera l’allure de l’application (App Inventor
Designer) ;
• Une pour la programmation par elle-même : elle permet, par l’assemblage des blocs de créer le
comportement de l’application (App Inventor Block Editor) ;
• Une pour l’émulateur : qui permettra de tester l’application. L’émulateur permet de remplacer un
terminal réel pour vérifier le bon fonctionnement du programme.
• La connexion d’un terminal réel sous Androïde permettra ensuite d’y télécharger le programme
pour un test réel. Ce terminal pourra aussi bien être un téléphone qu’une tablette ; le
comportement du programme sera identique.
N.B. : Scratch est un environnement graphique permettant aux débutants de s’initier à la programmation.
On y programme le comportement de lutins animes à l’aide de briques visuelles qui s’emboîtent comme
des Lego par Drag and Drop.
2009 : Début du développement du logiciel App Inventor par Google à partir de recherches dans
l’enseignement de l’informatique faites par le MIT, Boston près de New-York. L’Objectif de l’enseignement
permet à des étudiants qui débutent en informatique d’apprendre à programmer sans se noyer sous le
code Java.
2011: Google rend App Inventor open source. Le MIT poursuit le développement.
2012 : Version beta APP INVENTOR diffusé par le MIT encore en version beta aujourd’hui.
Google fournit gratuitement un kit de développement (SDK) prévu pour s’intégrer (sous la forme d’un
Plugin) à l’environnement de développement Éclipse (libre). Il permet de développer des applications
codées en langage Java pour les différentes versions d’Androïde.
• Se connecter à Internet.
• Ouvrir notre navigateur et se connecter au compte Google.
• Se connecter au site Internet d’APP INVENTOR du MIT. Cela peut être assez long parfois car
APP INVENTOR est lancée depuis le Web en mode Cloud.
• Créer un nouveau projet :
• Cliquer sur My Projects (en haut à gauche) / New / Project Name (sans espace) / OK. On aura
interface graphique suivant :
• Partie 2 : C’est la surface du téléphone ajusté automatiquement par App Inventor ou manuellement
par nous-même en utilisant le composant « Viewer ».
• Partie 4 : Les propriétés des différents éléments utilisés par exemple la couleur et la taille du
bouton ou texture.
Pour ajouter un bouton sur l’écran d’émulateur virtuel, on clique sans lâcher sur le mot « Bouton » dans la
palette en déplaçant la souris sur Viewer et relâcher le bouton et là un nouveau bouton va apparaître sur le
Viewer.
Une fois les composants de l’écran de téléphone mis en place et désigné, nous passons à la deuxième
phase de développement d'une application via App Inventor : l'interface Scratch, pour cela, il faut cliquer
sur « Open the Blocks Editor » en haut à droite de la page.
L’interface Scratch permet d’imbriquer des éléments graphiques entre eux pour effectuer la partie
programmation de l’application à développer. De cette partie, on peut assembler les différents blocs de
l’application et indiquer comment les composants doivent se comporter et qui s’affichent dans l’émulateur
virtuel (par exemple ; ce qui se produit quand un utilisateur clique un bouton) déterminant le
fonctionnement même de l'application, en réaction à des événements (internes ou externes) ou à des
réponses.
Figure II.7 En-tête d’éditeur de blocks APP INVENTOR
II.9. Conclusion
Dans ce chapitre nous avons présenté les différents matériels et logiciels utilisés dans notre projet pour
réaliser : l’application Android, les différents composants, ainsi que les techniques de programmation.
Le chapitre suivant sera consacré pour la réalisation pratique de notre projet et la simulation de système
finale.