Vous êtes sur la page 1sur 42

Etude et conception d’une voiture à

commande vocale

Encadré par : M. SATAR Mouloud

Soutenu le juin 2017 devant le jury composé de :

: Président
: Rapporteur
M. SATAR : Encadrant
: Examinateur
: Examinateur
La théorie, c’est quand on sait tout et que rien ne fonctionne.

La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi.

Albert Einstein

Nous avons dans ce Projet de Fin d’Etudes, concilié la théorie et la pratique.


Nous tenons à exprimer notre profonde gratitude à Monsieur le Colonel Major
Commandant la BEFRA et l’Ecole Royale de l’Air et au personnel du commandement de
l’ERA pour leur implication directe dans le suivi quotidien.

Nous remercions aussi notre encadrant M. SATAR Mouloud pour son soutien et son
aide dans la recherche de la documentation nécessaire pour la réussite du projet. Nous lui
sommes reconnaissants d’avoir été à nos côtés tout le long du projet. Et surtout, nous le
remercions pour ses conseils et son savoir-faire qu’il a partagé avec nous.

Nous ne saurons remercier ……………..Chef du Département de la Formation


Scientifique et Techniques, d’avoir répondu à nos attentes en matériel de rechange.

Nos remerciements vont aussi au Lieutenant-colonel …………….. Chef du


Département Projet et ……………Chef du Département Informatique pour leur suivi et leurs
conseils.

Que les membres du jury trouvent ici nos remerciements pour nous avoir honorés en
acceptant de siéger dans ce jury afin d’évaluer notre travail.

A toutes les personnes morales ou physiques, à nos parents, un sincère merci pour le
soutien, les conseils, la motivation et les encouragements dont vous nous avez fait preuve.

Nous ne saurons terminer notre travail sans exprimer notre gratitude et reconnaissance
aux autorités militaires de nos pays respectifs pour la confiance qu’elles ont placée en nous en
nous désignant parmi bon nombre de candidats afin de bénéficier de cette formation aussi
riche soit-elle.
Ce travail
s’inscrivant dans le cadre du Projet de Fin d’Etudes, porte sur l’étude et conception d’une
voiture à commande vocale et à commande radio. Effectué au sein du laboratoire micro-
informatique de l’Ecole Royale de l’Air, son objectif est de réaliser une voiture qui sera
capable de se déplacer sous l’effet de la voix grâce à une application réalisée sur androïde et
connectée à une carte arduino.
Ce projet s’articule autour de deux axes principaux :
 Réalisation de l’application vocale sur appinventor.
 Réalisation de la voiture et programmation de ses différents composants électroniques.
Afin d’y parvenir, nous avons utilisé l’environnement de programmation arduino pour
la programmation de la carte arduino ainsi que de l’émetteur-récepteur radio fréquence
nRF24L01 qui permettra en outre de la commande vocale une autre commande qui est par
radio fréquence à travers une manette.
La microrobotique représente une activité pluridisciplinaire à même de converger les
études réalisées dans différents domaines tels que : l’électronique, l’électricité, la mécanique
et l’informatique. De ce fait, ce projet nous a permis de concilier nos connaissances
théoriques et pratiques que nous avons acquises tout au long de notre formation afin de
réaliser le travail qui nous a été demandé.
This work, which is part of the End-of-Study Project, concerns the study and design of
a voice-activated car. Performed in the microcomputer laboratory of the Royal Air School, its
objective is to realize a car that will be able to move under the effect of the voice thanks to an
application realized on android and connected to a card arduino.

This project revolves around two main axes:

• Realization of the voice application on appinventor.

• Realization of the car and programming of its various electronic components.

In order to achieve this, we have used the arduino programming environment for
programming the arduino board as well as the radio frequency transceiver nRF24L01 which
will furthermore enable voice control another command that is by radio frequency to Through
a handle.

Microrobotics represent a multidisciplinary activity capable of converging studies


carried out in different fields such as: electronics, electricity, mechanics and computing. As a
result, this project has enabled us to reconcile our theoretical and practical knowledge that we
have acquired throughout our training in order to carry out the work that has been asked of us.

Introduction
Les systèmes embarqués font dorénavant partie de notre vie et sont intégrés à la
plupart des objets que nous utilisons au quotidien. De nos jours nous pouvons en compter
quelques centaines de milliards sur notre planète.

Ces composants logiciels et matériels sont depuis toujours utilisés dans de nombreux
types d’applications comme le transport (aéronautique, spatial, automobile, ferroviaire…), les
appareils électriques et électroniques (appareils photo, jouets, systèmes audio…), la
distribution d’énergie ou encore la productique.

Son développement nécessite des connaissances à la fois en électronique et


informatique. Pour pouvoir mettre en pratique toutes nos connaissances au cours de notre
formation, nous sommes menus à faire la conception et la réalisation d’une voiture à
commande vocale et à radio commande. Le système sera ainsi contrôle à l’aide d’une carte
électronique (arduino).

Pour pouvoir mener à bien ce projet nous avons subdivisé notre travail en trois grandes
parties :

La première qui portera sur le but et l’objectif de ce projet suivi de l’étude et le choix
des composants qui permettront la réalisation du robot.

La seconde partie sera plus centrée sur la conception du robot et de l’application


vocale. Dans cette partie nous allons détailler les étapes par lesquelles nous sommes passées
pour la réalisation du robot et de l’application.

Enfin la troisième et dernière partie consistera à la réalisation du programme pour la


commande radio pour assuré le contrôle du système.

Notre travail consistera dans un premier lieu au choix des composants permettant la
réalisation de notre projet, par la suite nous allons procéder à la réalisation du robot qui pourra
se déplacer par commande vocale à travers une application conçue par nous-mêmes et
installée sur un téléphone portable. La commande de ce robot sera aussi assurée à partir du
module NRF24L01 (capable de se comporter à la fois en émetteur soit en récepteur en
fonction de l’usage dont on veut en faire) à travers une manette.
Chapitre 1 :

Etude et choix des différents composants

L’objectif de ce chapitre est non seulement de présenter le contexte de notre projet


mais aussi faire une présentation du matériel utilisé pour sa réalisation.

1.1 Présentation générale


Notre robot devra être capable de se déplacer sur une surface plane tout en répondant à
une commande vocale à partir d’un téléphone portable (avance, stop, recule, droite ou
gauche), la connectivité entre le téléphone et le robot étant assurée par un module Bluetooth.
L’organigramme de fonctionnement de tout le système se résume comme suit :
Figure 1.1 Présentation générale

La présence d’un pont H(L298D) nous permettra à travers les programmations


adéquates de changer la polarisation des moteurs, ce qui nous permettra de pouvoir assurer le
contrôle de notre robot suivant les 4 sens.

Pour ce qui est de la partie commande de notre robot, elle sera subdivisée en deux
grandes parties :

 La première consistera à commander le robot à partir d’une application vocale


réalisée sur app inventor. Le choix de ce logiciel pour la réalisation de notre
application est dû au fait de la simplicité à programmer dessus et surtout du
fait qu’il soit open source.
 La seconde sera basée sur la commande du robot à partir du module
NRF24L01 (qui joue deux rôles à la fois : celui de l’émetteur et du récepteur)
à travers une manette.

Le cœur de notre travail basé sur la carte arduino de type UNO nous permettra à
travers les différents programmes d’assurer le contrôle du pont H et par lui les moteurs.

1.1.1 Intérêt du projet :


Le but visé par ce projet est de capitaliser une expérience supplémentaire dans un
domaine particulier, ici, l’Arduino, sa communication et sa programmation. Ce qui nous
permettra de concevoir une voiture à commande vocale à base d’Arduino, contrôlable par
Smartphone. L’utilisateur pourra contrôler la voiture dans les 4 directions, l'arrêter et modifier
sa vitesse.
Les apports du projet pour le stagiaire : Le projet permet au stagiaire de s’imprégner des
connaissances des domaines d’automatique, d’électronique et de la micro-informatique :
 La programmation des circuits intégrés en l’occurrence le microcontrôleur Atmel
328P de la carte arduino.
 La programmation de l’émetteur/récepteur radio fréquences pour la transmission des
commandes.
 Le fonctionnement des motoréducteurs DG01D et des contrôleurs de vitesse (ESC).

1.1.2 Gestion et ordonnancement du projet

1.2 Présentation des composants


Pour la réalisation de notre projet, il nous a fallu un certain nombre de composants que
nous nous permettons de présenter ici.

1.2.1 La carte arduino


Arduino est un circuit imprimé en matériel libre sur lequel se trouve un
microcontrôleur qui peut être programmé pour analyser et produire des signaux électriques, de
manière à effectuer des taches très diverses comme la domotique (le contrôle des appareils
domestiques - éclairage, chauffage…), le pilotage d'un robot, etc. C’est une carte
matériellement libre (open hardware) comportant un microcontrôleur d’architecture Atmel
AVR. C’est une plateforme basée sur des entrées/sorties simples avec un environnement de
programmation libre. Il existe plusieurs versions sur le marché. Notre robot utilise la version
Uno.

Le système Arduino donne la possibilité d'allier les performances de la programmation


à celles de l'électronique. Plus précisément, pour programmer des systèmes électroniques. Il
est composé de deux parties principales : le matériel et le logiciel.

 Le matériel

Il s'agit d'une carte électronique basée autour d'un microcontrôleur Atmega du fabricant
Atmel, dont le prix est relativement bas pour l'étendue possible des applications.

Figure 1.2 Carte arduino type UNO


Figure1.3 Parties essentielles de la carte arduino

1. Le microcontrôleur
Il va recevoir le programme et le stocker dans sa mémoire puis l’exécuter.

2, 3 : Alimentation
Pour fonctionner, la carte a besoin d'une alimentation. Le microcontrôleur fonctionnant sous
5V, la carte peut entre alimentée en 5V par le port USB (en 2) ou bien par une alimentation
externe (en 3) qui est comprise entre 7V et 12V. Cette tension doit être continue et peut par
exemple être fournie par une pile 9V. Un régulateur se charge ensuite de réduire la tension a
5V pour le bon fonctionnement de la carte.

4. Visualisation
Les trois "points blancs" entoures en rouge sont des LED dont la taille est de l'ordre du
millimètre.
Ces LED servent a deux choses :
• Celle tout en haut du cadre : elle est connectée a une broche du microcontrôleur et va servir
pour tester le matériel.
Nota : Quand on branche la carte au PC, elle clignote quelques secondes.
• Les deux LED du bas du cadre : servent a visualiser l'activité sur la voie série (une pour
l'émission et l'autre pour la réception). Le téléchargement du programme dans le
microcontrôleur se faisant par cette voie, on peut les voir clignoter lors du chargement.

5a Les entrées /sorties numériques D0 à D13 et la masse GND


Chacun des connecteurs D0 à D13 peut être configuré dynamiquement par programmation en
entrée ou en sortie. Les signaux véhiculés par ces connecteurs sont des signaux logiques
compatibles TTL, c'est à dire qu'ils ne peuvent prendre que deux états HAUT (5 Volts) ou
BAS (0 Volt).
En pratique, les connecteurs D0 et D1 réservés pour la liaison série asynchrone (port COM
virtuel via le câble USB) ne sont pas exploités pour d'autres utilisations.
Les connecteurs PWM (repérées par un ~) peuvent être programmés pour générer les signaux
PWM.

5b Les entrées /sorties Analogiques A0 à A5 et les connecteurs de puissances


Ces six entrées peuvent admettre toute tension analogique comprise entre 0 et 5 Volts. Pour
pouvoir être traitées par le microcontrôleur, ces entrées analogiques sont prises en charge par
un convertisseur analogique numérique qui possède une résolution de 10 bits, soit 2 = 1024
10

possibilités de 0 à 1023.

 Le logiciel
Le logiciel permet de programmer la carte Arduino. Il offre une multitude de fonctionnalités.
Au jour d'aujourd'hui, l'électronique est de plus en plus remplacée par de l'électronique
programmée. On parle aussi d'électronique embarquée ou d'informatique embarquée.
L’interface du logiciel arduino se présente comme suit :

Figure1.4 interface du logiciel arduino

1. options de configuration du logiciel


2. boutons pout la programmation des cartes
3. programme à créer
4. débogueur (affichage des erreurs de programmation)
 Le langage Arduino
Le projet Arduino était destine a l'origine principalement a la programmation
multimédia interactive en vue de spectacle ou d'animations artistiques. C'est une partie de
l'explication de la descendance de son interface de programmation de Processing.
Processing est une librairie java et un environnement de développement libre. Le logiciel
fonctionne sur Macintosh, Windows, Linux, BSD et Androïde.
Référence:
• Le langage Java.
• Le langage C.
• L'algorithmique.

 Structure d’un programme arduino :


Le programme est divisé en 2 grosses parties :
void setup () // fonction d’initialisation de la carte
{
…………… // contenu de l’initialisation
}
voidloop () // fonction ppale qui s’exécute à l’infini
{
…………… // contenu de votre programme
}

Figure 1.5 Exemple d’un programme arduino


1.2.2 Le module Bluetooth HC-05
Le HC 05 est un module Bluetooth à 6 sorties qui peut être « maître » (il peut
proposer à un autre élément Bluetooth de s’appairer avec lui) ou « esclave » (il ne peut
que recevoir des demandes d’appairage). Son rôle dans notre projet sera d’assurer la
connexion entre la carte arduino et l’androïde sur lequel est installé l’application de la
commande vocale.

Figure 1.6 Bluetooth HC-05

1.2.3 Le Module NRF24L01

Le NRF24L01 est un émetteur-récepteur à une seule puce de 2,4 GHz avec un moteur
de protocole de bande de base intégré, conçu pour les applications sans fil à très faible
puissance. Le NRF24L01 est conçu pour fonctionner dans la bande de fréquence ISM à
l'échelle mondiale à 2.400 - 2.4835GHz. Un MCU (microcontrôleur) et très peu de
composants passifs externes sont nécessaires pour concevoir un système radio avec le
NRF24L01.
Transmission
La vitesse de fonctionnement maximale est de 2 Mbps, avec une faible consommation
électrique.
La distance de transmission est relativement élevée et permet le pilotage de robots.
Le module avec antenne incorporée (visible en zigzag sur le circuit) peut transmettre à
environ 100 mètres (transmission 1 mW), en terrain dégagé et avec une transmission sur 250
KHz. Augmenter la vitesse réduit la portée de transmission.
Pour de la plus longue portée (1 km) il existe des module analogues mais amplifiés et avec
une plus grande antenne supplémentaire à brancher dessus.

Figure 1. 7 Module NRF24L01 Figure 1.8 Vue schématique NRF24L01


1.2.4 La batterie
Pour l’alimentation du robot nous avons utilisé les piles ordinaires : une pile de
9V pour la carte arduino et le module bluetooth et un montage en série de 4 piles de
1,5V avec celle de 9V afin d’assurer le fonctionnement des moteurs à travers le pont
H.

Figure 1.9 Pile de 9V Figure 1.10 Batterie alimentant le pont H

1.2.5 La plaque d’essai


Une plaque d'essai est d'une très grande utilité pour réaliser des montages
électroniques sans soudure, en association notamment avec une carte à
microcontrôleur telle que les cartes Arduino.

Figure 1.11 La plaque d’essai

1.2.6 Les fils de connexion


Ce sont des fils conducteurs qui assureront la connexion et le passage du courant
électrique entre les différents composants du robot.

Figure 1.12Les fils de connexion


1.2.7 Le châssis 
Le châssis est l’élément sur lequel seront installés tous les composants de notre robot.
Il est constitué de quatre roues, deux situées à l’avant du châssis et communiquées à un
moteur dont le fonctionnement assure la direction gauche et droite du robot. Il est
représente comme suit :

Figure 1.13 Schéma représentatif de l’avant du châssis

Et les deux autres roues situées à son arrière sur lesquelles est également fixé
un moteur grâce à des engrenages et dont la mise en fonctionnement assurera le
déplacement avant et arrière de notre robot. Il se présente également comme suit :

Figure 1.14 Schéma représentatif de l’arrière du châssis

1.2.7.1 Présentation générale du moteur


Les moteurs à courant continu permettent une réalisation économique de moteurs, en
général de faibles puissances pour des usages multiples : automobile, robotique,
jouets…
Figure 1.15 Moteur à courant continu
Un conducteur en forme de spires, parcouru par un courant I, placé dans un champ
magnétique, est soumis à des forces de Laplace. Ces forces créent un couple de rotation qui
fait tourner la spire autour de son axe. Quand la spire a fait un demi-tour, il faut inverser la
polarité pour inverser le sens des forces et continuer le mouvement : c’est le rôle du
collecteur.
Le moteur à courant continu est constitué de deux parties : une partie tournante
appelée rotor et une fixe appelée stator. Le rotor est constitué d’un noyau métallique avec un
bobinage de cuivre alors que le stator comporte des aimants permanents qui engendrent un
champ magnétique dont le flux traverse le rotor. L’espace étroit entre le rotor et le stator est
nommé entrefer.

Figure 1.16 Schéma général de fonctionnement

1.2.7.2 Equations caractéristiques du moteur

Le moteur se comporte comme une résistance en série avec un générateur de


tension (fem : force électromotrice) :
I : courant consommé par le moteur
U : tension d’alimentation du moteur
E : force électromotrice
R : résistance interne du bobinage
Figure 1.17 Schéma équivalent d’un moteur à courant continu

Il existe une inductance L dans le circuit que l’on peut négliger ici si le courant
est en régime continu comme dans notre cas d’étude. Les équations caractéristiques du
moteur sont les suivantes :
La première est celle de la tension, elle découle directement du schéma
équivalent d’un moteur à courant continu. Elle se présente comme suit :

U =E+ RI
De cette première équation découlent celles de E (fem) et I (courant consommé
par le moteur).
E=K e . ω

I =K c .C

U Tension (V)
E Force électromotrice (V)
R Résistance interne du bobinage (Ω)
I Courant consommé par le moteur (A)
Ke Constante
Kc Constante
C Couple moteur (N.m)
ω Fréquence de rotation (rad/s)

Remarque :
 Pour faire varier la fréquence de rotation, il faut faire varier E et donc la tension
d’alimentation U.
 Pour inverser le sens de rotation, il faut inverser E et donc la tension d’alimentation à
ses bornes.
 Le courant I varie avec le couple, on peut aussi limiter le courant pour limiter le
couple.

1.2.8 Le pont H L298N


Lorsque qu’on veut faire tourner un moteur à courant continu dans les deux sens de
rotation, il faut inverser la polarité de l’alimentation sur ses bornes d’où l’emploi du pont H
qui est un composant servant à contrôler la polarité aux bornes d'un récepteur. Il est composé
de quatre éléments de commutation généralement disposés schématiquement en une forme de
H d'où le nom. Les commutateurs peuvent être des relais, des transistors, ou autres éléments
de commutation en fonction de l'application visée. Il permet d’inverser le sens de rotation
d’un moteur à courant continu.
Figure 1.18 Pont H L298N

Figure 1.20 Vue schématique du pont H

Si l’on actionne S1 et S4 seuls, le moteur tourne dans un sens. Par contre si c’est S2 et
S3 qui sont actionnés, le moteur tourne dans l’autre sens.

1.2.8.1 Caractéristiques du pont H

 Léger, petit
 Des capacités hors-pair pour contrôle moteur
 Diodes de protections
 Un dissipateur (pour dissiper la chaleur en cas de forte charge)
 Un sélecteur pour sélectionner la source d'alimentation
 4 Sélecteurs pour les résistances pull up
 Sortie pour 2 moteurs continu/ 1 moteur pas-à-pas (4 bobines, deux phases)
 Indicateur LED pour sens de rotation moteur
 Indicateur LED pour alimentation 5V
 4 trous de fixation standard
1.2.8.2 Spécifications du pont H

 Composant de contrôle en puissance: L298N


 Alimentation de la charge: de +6V à +35V
 Courant Max (en pointe): 2A
 Tension de commande logique Vss: de +5 à +7V (alimentation interne de +5V)
 Courant de commande logique: de 0 à 36mA
 Tensions pour contrôle du sens: Low -0.3V~1.5V, high: 2.3V~Vss
 Tensions pour contrôle "Enable": Low -0.3V~1.5V, high: 2.3V~Vss
 Puissance Max: 25W (Température 75 ℃)
 Température de fonctionnement: de -25℃ à +130℃
 Dimensions: 60mm x 54mm
 Poids: ~48g

Ce chapitre nous a permis d’une part de présenter le bien fondé de notre projet de fin
d’études et d’autre part faire une présentation et description des différents composants
nécessaires à la réalisation du robot.
Chapitre 2 :

Conception du robot et réalisation de l’application à commande vocale

L’objectif visé par ce chapitre est la présentation des différentes étapes de la


conception du robot et l’explication de l’application réalisée sur androïde pour la commande
vocale.
2.1 Partie mécanique
Elle s’est essentiellement basée sur le montage du châssis, comme nous l’avons décrite
dans le premier chapitre ensuite la fixation du pont H et la carte arduino fixée aux circuits
électroniques est ensuite fixée à l’aide de visses sur le châssis, la plaque d’essai fixée à coté
de l’arduino à l’aide de la colle.

Figure 2.1 Montage des composants sur le châssis

2.2 Partie électronique


Elle a été plus centrée sur la connexion des différents composants électronique
et sera représentée ici par des schémas explicatifs réalisés sur le logiciel Fritzing.

2.2.1 Connexion entre la carte arduino, le pont H et les moteurs


La première connexion que nous avons réalisée fut la connexion entre le pont H et la
carte arduino, comme expliqué dans le premier chapitre on a vu que le rôle du pont H sera très
déterminant pour pouvoir assurer le contrôle du robot suivant les quatre directions et même le
contrôle aussi de la vitesse des moteurs.

Moteur B

Pont H

Carte arduino

Moteur A

Figure 2.2 Connexion arduino et le pont H

2.2.2 Connexion entre arduino et le module Bluetooth


Le branchement des deux autres sorties se fait de la manière suivante : le Rx du
module Bluetooth se branche sur le Tx de l'Arduino et vice versa.
Le gros avantage de ce module, en plus d'être très simple d'utilisation, est qu'une LED
s'allume lorsque celui-ci est mis en tension et clignote. Le clignotement s'arrête lorsque le
module est connecté en Bluetooth à un appareil. La LED est à ce moment allumé
constamment.
Figure 2.3 connexion arduino avec le Bluetooth HC-05
2.3 Partie programmation

La partie programmation s’est déroulée en deux grandes étapes. La première étape


était sur la programmation de la carte pour qu’elle puisse exécuter les différentes commandes.
Pour cela nous avons commencé par des programmes basiques qui nous ont permis de non
seulement nous familiariser avec la programmation sur arduino mais aussi de vérifier le bon
fonctionnement de nos composants. C’est ainsi que notre premier programme réalisé fut
l’allumage de la led 13, qui est une led intégré sur la carte arduino et qui est généralement
simple comme va le montrer la figure ci-dessous :

Figure 2.4 Programme pour allumer une led

La suite logique de cette série de programmation fut le programme d’exécution des


deux moteurs à travers le principe du pont H. Ce programme comme celui de la led est
composé de trois parties, une première permet d’initialiser les différentes broches, la seconde
de configurer ces broches comme sortie et la troisième permet une exécution de la boucle,
dans ce cas les moteurs tournent dans un sens pendant quatre secondes puis changent de sens
pendant 2 secondes la boucle se répète à l’infini.
Après le programme du tournage des deux moteurs il restait à y ajouter le contrôle de
la vitesse des moteurs et celui de la direction gauche et droite avant de terminer avec celui de
la voix.
Il est important que les ports pour le contrôle de la vitesse soient connecté aux sorties
analogique PMW.
Après l’initialisation des variables et leurs déclarations comme sorties, nous passons au
« void loop ». Pour terminer on a juste créé un sous void pour chaque variable. Tous ces
programmes on pu être simulé sur le logiciel proteus isis.
Après la réussite de ces différents programmes nous allons finir avec la partie vocale
en introduisant dans le programme précédent les codes permettant une exécution des
commandes vocales.
Tous les programmes dont nous avons fait cas seront présentés en annexe en fin du
document.
2.4 Réalisation et programmation de l’application vocale
Pour pouvoir créer notre application, nous avons utilisé le logiciel open source App
Iventor, qui est un outil de développement en ligne pour les téléphones et les tablettes sous
Android. App Inventor est un OS (open source) créé par Google, et concurrent de l’Ios
d’Apple qui équipe l’iPad, iPodTouch et iPhone.
La plateforme de développement est offerte à tous les utilisateurs possédant un compte
Gmail. Elle rappelle certains langages de programmation simplifiés des années 80 et s’inspire
des travaux d’une étudiante en thèse au MIT, Ricarose Roque. Le projet a été dirigé par Hal
Abelson, professeur au MIT qui a mis au point le portage du langage LOGO sur Apple 2 au
début des années 80.

2.4.1 À quoi ressemble un programme App Inventor ?


La programmation se réalise en ligne, à l’aide de son navigateur préféré, et sous
l’environnement logiciel de son choix (Mac, Linux ou Windows). Seules contraintes : avoir
un compte Gmail pour pouvoir y accéder, et un accès à internet évidemment. Les
informations sont stockées sur des serveurs distants.
Le concept d’App Inventor :

Figure 2.5 Concept d’App Inventor

3 fenêtres sont proposées pendant le développement :


- Une pour la création de l’interface homme machine : ce sera l’allure de votre application ;
- Une pour la programmation par elle-même : elle permettra, par l’assemblage de blocs de
créer le comportement de l’application ;
- Et 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 Android 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.
Figure 2.6 Fenêtre de la création de l’interface

Figure 2.7 Fenêtre de la programmation graphique


Figure 2.8 L’émulateur pour tester le programme

L’approche graphique ne remplace pas la réflexion et l’analyse préalable nécessaire à


tout projet de développement. La logique de programmation événementielle reste également
un préalable avant la mise en oeuvre d’App Inventor. Par contre, elle a le mérite de masquer
toute la complexité imposée par l’apprentissage d’un langage de programmation objet (ici
Java), à savoir une syntaxe et des concepts parfois assez subtils. Cet apprentissage restera
obligatoire pour aller plus loin.

2.4.2 Découvrir App Inventor


Pour se connecter, il faut un compte Gmail personnel (et être connecté à ce compte).
Pour créer une application, allez sur le site : http://ai2.appinventor.mit.edu
Nous obtenons l’écran suivant :

Figure 2.9 Ecran d’accueil de App Inventor


Présentation des différents menus :

Le menu « Project Le menu « Connect » Le menu « Build » Le menu « Help


» »

Permet de Permet de visualiser le Permet de construire le Permet


visualiser les résultat du projet soit QR code de l’application deretrouver un
projets réalisés sur l’émulateur, soit sur ou de sauvegarder Certains
(My Projects), de le smartphone ou la l’application sur votre nombres de
réaliser un tablette par ordinateur. ressources,
nouveau projet l’intermédiaire du Wifi, d’aides,
(New), d’importer soit par l’intermédiaire d’exemples…
un projet, de d’un câble USB en anglais !
sauvegarder un
projet…

2.4.3 Comment réaliser un premier projet avec App Inventor ?


La réalisation d’un projet sur App Inventor passe toujours par les trois étapes
suivantes :
 Première étape du projet : « dessiner l’interface »
Pour créer une application, la première phase est la création de son interface.
Pour cela, le site affiche un écran de téléphone dans lequel nous pouvons placer, en les faisant
glisser, les éléments que nous voulons utiliser. Il y a des éléments graphiques comme des
boutons, des labels… et des éléments non graphiques comme des capteurs (ex. géo
localisation…) ou des fonctions permettant d’effectuer des actions : lecteur audio, appareil
photo…
L’écran se partage en 4 parties :

La palette L’écran du téléphone La liste des Les propriétés des


contenant tous les lui-même : éléments et des différents éléments
éléments qui médias utilisés utilisés :
peuvent être sur l’écran :
positionnés sur
l’écran du
téléphone :

Afin de réaliser l’interface, il suffira de prendre les différents éléments et les faire glisser sur
l’écran du téléphone. Ces éléments peuvent être :
 Une « TextBox »qui permet de saisir du texte.
 Un bouton.
 Des labels qui permettront d’afficher du texte.
Il suffira ensuite de définir les propriétés de chaque élément :

 2ème étape du projet : « Décrire le comportement de l’application »


Une fois l’allure de notre application créée, il est nécessaire de décrire son comportement :
Pour cela, il faut cliquer sur « Blocks » en haut et à droite de la page nous obtenons l’écran
suivant représente sur la figure suivant :

Figure2.10 schéma du blocks de programmation

Sur la gauche, nous avons un système d’onglets. Nous y retrouvons les différents composants
que nous placerons sur l’écran ainsi que des blocks utilitaires « Built in » Dans l’onglet «
Screen1 », nous retrouvons les éléments de l’interface : Ainsi nous allons pouvoir décrire le
comportement de chacun d’entre eux, par la réalisation des algorithmes à l’aide des différents
blocs.

Figure2.11 exemple des blocs de programmation


 3ème étape du projet : « Tester l’application sur l’émulateur ou le Smartphone»
Cette troisième et dernière partie du projet est consacrée au test de l’application soit :
 L’émulateur : un écran s’affichera sur l’ordinateur.
 Al Companion : dans ce cas, la connexion se fera directement sur le
Smartphone en wifi.
 USB : la connexion se fera sur le Smartphone via un câble USB.
Pour ce qui est du Smartphone, l’application MIT AI2 Companion doit être installée, il est
disponible sur playStore. Sur le PC, l’application MIT Emulator in AI2 doit être installée
aussi disponible sur le site http://appinventor.mit.edu/explore/ai2/windows.html.
En choisissant Al Companion : un Code de 6 caractères est généré ainsi qu’un QR
Code. Il suffit de saisir le code ou de scanner le QR Code pour que l’application soit visible
sur le Smartphone et faire ainsi le test
Sur l’émulateur : un smartphone apparaît à l’écran. Il faut le déverrouiller, puis
l’application se lance automatiquement. On peut le tester comme sur un téléphone.

2.4.2 Réalisation de l’application pour la commande du robot

Ainsi pour la réalisation de notre application pour la commande vocale de notre robot
nous avons suivi ces différentes étapes comme cela a été décrit précédemment :
 Une pour la création de l’interface homme machine : ce sera l’allure de notre
application ;
 Une pour la programmation par elle-même : elle permettra, par l’assemblage de blocs
de créer le comportement de l’application ;
 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.

 La fenêtre de la création de l’interface :

Gestion des
fonctionnalités

Partie pour la connexion


Zone de sélection des Partie pour la
Commande vocale
éléments à ajouter connexion du robot
au Bluetooth
Figure 2.12 L’interface de l’application.
 La fenêtre de la de programmation graphique :

Cette fenêtre sera la programmation des différents buttons crée au niveau de l’interface.

Récupération de la liste des


périphériques Bluetooth
appariés sur le Smartphone

Déconnexion au
périphérique sélectionné
Connexion au
périphérique Activation de la
sélectionné commande vocale.
Figure 2.13 Programme activation Bluetooth

Cette première partie de notre programme va nous permettre de choisir parmi la liste
des périphériques affichées, dans notre cas ce sera le module Bluetooth (HC-05), et dès que la
connexion sera établie entre le téléphone et le module bluetooth, un bandeau de notification
affichera « connecté » ou de se déconnecter de ce périphérique et lorsque « BP_vocal » est
cliqué, sera lancée la procédure de reconnaissance vocale.

Figure 2.14 L’interface de la programmation de l’application.

Le programme ci-dessus est le corps même de notre application. Il consiste à envoyer


les instructions prononcées par l’utilisateur, lorsque la reconnaissance vocale a reconnu un
texte, il est stocké dans la variable « result », « result » est affiché dans la zone « consignes »
de l’écran. Dans notre cas,
Si « result » = « devant »
Envoyer la valeur devant sur le port Bluetooth
Si « result » = « recule »
Envoyer la valeur recule sur le port Bluetooth
Si le « result »=  « gauche »
Envoyer la valeur gauche sur le port Bluetooth
Si le « result »= « droite »
Envoyer la valeur droite sur le port Bluetooth
Vu que notre application nécessite l’utilisation de l’internet pour l’analyse de l’instruction
vocale, nous avons jugé nécessaire d’y ajouter une dernière commande comme dans la figure
ci-dessous, il sera comme un programme d’arrêt d’urgence.

Figure 2.15 Programme du bouton d’arrêt d’urgence.

Il suffira de cliquer sur l’icône stop sur le téléphone pour arrêter la voiture.

Ce chapitre nous a permis d’avoir le prototype de notre robot capable de se déplacer


grâce à l’application vocale que nous avons réalisée sur téléphone.
Chapitre 3 :
Réalisation du programme pour la commande du robot à partir
d’un module NRF24L01 (émetteur/récepteur)

L’objectif visé par ce chapitre est de remplacer le module Bluetooth sur le robot
réalisé au deuxième chapitre par deux modules NRF24L01 (l’un sera l’émetteur et l’autre
récepteur) et enfin d’assurer le déplacement du robot dans tous les sens à travers de nouveaux
programmes et la commande par une manette. L’intérêt ici est que l’on n’a plus besoin de la
connexion internet avant de commander le robot, ce qui n’était pas possible dans le cas de la
commande vocale.
3.1 Composants utilisés
Pour cette dernière partie de notre projet nous avons utilisé en dehors des composants
de la partie précédente :

 Une nouvelle carte arduino.


 Deux modules NRF24L01 (l’un émetteur et l’autre récepteur).
 Un joystick.

3.2 Présentation du joystick.


Un joystick n'est rien d'autre que deux potentiomètres: un qui change de valeur lorsque
le joystick est incliné selon l'axe des x, et un autre qui change de valeur lorsque le joystick est
incliné selon l'axe des y, sera connecté à l’arduino émettrice.

Chacun des deux potentiomètres est utilisé en diviseur de tension entre les pins GND
et 5 V de l'Arduino.  Le potentiomètre Y (qui permet d'avancer ou de reculer) achemine son
signal à la pin analogique 0, et le potentiomètre X (qui permet de tourner à gauche ou à droite)
achemine son signal à la pin analogique 1.

Il existe plusieurs type de joystick celui que nous avons utilisé est celui du
PlayStation 2 qui se compose comme suite :

Figure 3.1 schéma représentatif du joystick


3.3 Présentation du module NRF24L01

Le NRF24L01 est un émetteur-récepteur à une seule puce de 2,4 GHz avec un


moteur de protocole de bande de base intégré, conçu pour les applications sans fil à très faible
puissance. Le nRF24L01 est conçu pour fonctionner dans la bande de fréquence ISM à
l'échelle mondiale à 2.400 - 2.4835GHz. Un MCU (microcontrôleur) et très peu de
composants passifs externes sont nécessaires pour concevoir un système radio avec le
nRF24L01.

3.3.1 Caractéristiques principales du NRF24L01


Bande de fréquence ISM 2,4 GHz.
Vitesse maximale de données 2Mbps, modulation GFSK, anti-brouillage robuste,
spécialement idéal pour application de l'industrie.
126 canaux, points multiples et sauts de fréquence.
Contrôle de l'adresse CRC et Star topologie des périphériques intégrés.
Faible puissance 1.9V- 3.6V. Courant 22 µA en mode veille, 900 nA en mode veille.
Antenne 2.4 GHz embarquée, taille 15 mm X 29 mm.
Adresse programmée du microprogramme. Seules les données de sortie lors de
l'adressage et peuvent générer soit interrompre. Il peut être utilisé directement avec la
plupart des MCU.
Régulateur embarqué.
2.54MM interface d'en-tête.
Gestion automatique des paquets et gestion automatique des transactions par paquets
dans Enhock ShockBurst mode. Mécanisme de reconnaissance de paquets intégrés en
option pour réduire les pertes de paquets.
Pour 5V MCU, connectez une résistance de 2K entre les IO du module et MCU à
réduire le courant. Pour une MCU de 3,3 V, les IO de MCU peuvent être connectés
directement à ceux du module RF24L01.

3.3.2 Circuit d’interface


Le NRF24L01 a un circuit qui se présente comme suit :

Figure 3.2 Circuit d’interface


Remarque:
 VCC est compris entre 1.9V et 3.6V. Nominal 3.3V.
 A part VCC et GND, d'autres broches peuvent être connectées à 5V MCU avec
une résistance pour limiter les actuel.

3.3.3 Diagramme du module NRF24L01 et description des broches


Le module NRF24L01 utilise le chipset nRF24L01 de Nordic.
Pin Name Pin function Description
1 CE Digital Input Chip Enable Activates RX or TX mode
2 CNS Digital Input SPI Chip Select
3 SCK Digital Input SPI Clock
4 MOSI Digital Input SPI Slave Data Input
5 MISO Digital Output SPI Slave Data Output, with tri-state option
6 IRQ Digital Output Maskable Interrupt pin. Active low
7 VDD Power Power Supply (+1.9V to +3.6V DC)
8 VSS Power Ground (0V)
9 XC2 Analog Output Crystal Pin 2
10 XC1 Analog Intput Crystal Pin 1
11 VDD_PA Power Output Power Supply Output (+1.8V) for the internal
nRF24L01+ Power Amplifier. Must be connected
to ANT1 and ANT2.
12 ANT1 RF Antenna interface 1
13 ANT2 RF Antenna interface 2
14 VSS Power Ground (0v)
15 VDD Power Power Supply (1.9V to +3.6V DC)
16 IREF Analog Input Reference current. Connect 22kΩ resistor to
ground.
17 VSS Power Ground (0V)
18 VDD Power Power Supply (+1.9V to + 3.6V DC)
19 DVDD Power Output Internal digital supply output for de-coupling
purposes.
20 VSS Power Ground ( 0V)
Tableau 3.1 fonctions des broches

Il existe quatre modes de fonctionnement de NRF24L01:


 Mode émetteur-récepteur
 Mode de configuration
 Mode veille
 Mode veille
Le mode de travail est déterminé par trois choses: registre PWR_UP, registre
PRIM_RX et CE.
Voici ce qui suit:
3.3.4 Configuration NRF24L01

3.4 Connexion des différents composants

3.4.1 Connexion du module nRF24L01 avec la carte arduino

Les broches programmables sont celles indiquées sur la figure ci-dessous :

Figure 3.3 connexion de la carte arduino et le nRF24L01


VCC est la broche d’alimentation elle est connectée à 3.3V ou 5V
GND est la masse
CE et CSN sont des broches permettant l’envoi et la réception des données. Elles sont
connectées respectivement aux broches 7 et 8 d’arduino.
MOSI et MISO sont des broches permettant de configurer le protocole de communication
Maitre/esclave du bus SPI. Elles doivent être connectées respectivement aux broches 11 et 12
sur arduino.
SCK est la broche d’horloge qui cadence la transmission de données. Elle est reliée à la
broche 13 d’arduino.
IRQ est la broche d’interruption (généralement non utilisée).

3.4.2 Connexion de la carte émettrice avec les joysticks

La connexion entre les deux joysticks et la carte se fait selon la figure suivant :

Figure 3.2 connexion joysticks arduino

Arduino ports Joystick 1ports Joystick 2 ports


5v VCC VCC
A0 VRX -
A1 - VRY
Tableau 3.1 brochage joystick arduino
3.5 Programmation du récepteur et de l’émetteur
Pour pouvoir programmer les modules nous sommes passé par ces différentes étapes :

 Le téléchargement et installation de la bibliothèque


 Utilisation de la bibliothèque

3.5.1 Téléchargement et installation de la bibliothèque.


La bibliothèque que nous avons utilisée est la bibliothèque Mirf, elle est disponible
sur le site GitHub et le guide d’installation sur arduino.cc. Elle permet de contrôler
rapidement et facilement des modules nRF24L01. Celle-ci est conçue de manière très
simpliste, sans extra. Le gros du travail est laissé à la charge du module radio lui même. La
bibliothèque Mirf se contente juste d'exposer des fonctions de haut niveau pour communiquer
avec le module radio.

3.5.2 Utilisation de la bibliothèque Mirf


Après son installation, pour pouvoir l’exécuter correctement on ajoute ces quelques lignes en
début du programme comme montré dans la figure ci-dessous :

Figure 3.3 fonction d’initialisation de la bibliothèque Mirf

Et dans la fonction setup () on appelle les fonctions suivantes pour initialiser le module radio.

Elle se présente comme suit :

Figure 3.4 initialisation du module radio.


Le premier bloc de ce programme permet d’initialiser la bibliothèque elle-même en
fournissant les numéros de broche ici les CE et CSN sur le 9 et 10 mais dans notre cas nous
avons utilisée le 7 et le 8.

Le second bloc permet de choisir le canal de fréquence et la taille des messages qui
vont être transmis. Cette taille est fixe et doit être fournie à l'initialisation du module radio.

Le troisième et dernier bloc de code permet de choisir l'adresse d'émission (TADDR)


et de réception (RADDR) du module. Chaque adresse faisant 5 octets de long, cela donne 1
099 511 627 776 adresses possibles par canal de fréquence.

Vous aimerez peut-être aussi