SlideShare une entreprise Scribd logo
SIGNATURES




Signature Encadreur
ESPRITEC

Signature
Département de
langue
Robot à base d’Android



DEDICACES




Je dédie ce travail en témoignage de mon profond respect, mon grand amour et toute ma
gratitude à :

Mes chers parents,
Tous les membres de ma famille,
Et tous mes amis.




                                                 Houssem Eddine LASSOUED
                                                                                          i
                                                                              Dédicaces
Robot à base d’Android



REMERCIEMENTS



C’est avec un grand plaisir que je tiens tout d’abord à         exprimer toute ma
reconnaissance à mon cher encadrant à ESPRIT : Mr Imed AMRI, pour l'attention
qu'il a apportée à mon projet tout au long de ses divers stades allant de l’idée à la
réalisation et pour ces précieux conseils.


Je veux aussi, adresser mes remerciements à tous les membres de l’équipe ‘’ESPRIT
MOBILE‘’ Sana, Salma, Wael, Hamza et Karray pour leurs soutien, appui et
encouragement.


Je suis redevable à tous mes enseignants d’ESPRIT pour leurs efforts qui ont guidé
mes pas tout au long de mes études universitaires.


Que tous ceux qui m'ont soutenu de près ou de loin, trouvent dans ce travail
l’expression de ma reconnaissance infinie.


Je tiens enfin, à exprimer l'honneur que me font les membres du jury pour avoir
accepté de me prêter leur attention et évaluer mon travail.


                                                                                  ii
                                                                     Remerciements
Robot à base d’Android



RESUM


Le travail présenté dans ce rapport, qui a été effectué au sein d’ESPRITEC, entre dans le
cadre du projet de fin d’études pour l’obtention du diplôme national d’ingénieur en
télécommunication. Il concerne la conception et la réalisation d’un ROBOT à base d’Android.

Ce ROBOT assure un ensemble de fonctionnalités tels que l’exploration des milieux
quotidiens, dangereux et inaccessibles, il assure la sécurité dans les milieux industriels, par la
détection d’obstacles, détection de fuite de gaz, envoi d’alerte, par plusieurs moyens.

Mots-clés: Android, Robot, Embarqué, IOIO, capteurs




ABSTRACT
The work presented in this report, which was performed within ESPRITEC, is part of the
graduation project for the National Diploma in telecom engineering, it concern the design
and implementation of an Android Based ROBOT.

This ROBOT ensures a variety of features such as the exploration of daily zones, dangerous
and inaccessible; it provides security in industrial sectors, obstacle detection, detection of
gas leakage, sending alarm by several methods

Keywords: Android, Robot, Embedded, IOIO, sensors.




                                                                                             iii
                                                                                        Résumé
Robot à base d’Android



TABLE DES MATIERES



 SIGNATURES .................................................................................................... i
 DEDICACES ...................................................................................................... i
 REMERCIEMENTS ........................................................................................... ii
 RESUM ........................................................................................................ iii
 TABLE DES MATIERES .................................................................................... iv
 LISTE DES FIGURES ....................................................................................... viii
 LISTE DES TABLEAUX ...................................................................................... x
 INTRODUCTION GENERALE ............................................................................ 1
 1. PRESENTATION GENERALE ......................................................................... 3
Introduction ............................................................................................................................ 3
I.         Contexte du projet .......................................................................................................... 3
II.        Présentation de l’Organisme d’Accueil ........................................................................... 3
III.          Problématique du projet ............................................................................................. 4
IV.           Solution proposée........................................................................................................ 5
Conclusion .............................................................................................................................. 5
 2. ETAT DE L’ART ............................................................................................ 6
Introduction ............................................................................................................................ 6
I.         Présentation des Solutions Existantes ............................................................................ 6
      Choix de la solution ............................................................................................................. 7
      Avantages de la carte IOIO.................................................................................................. 8
II.        La Carte IOIO ................................................................................................................... 9
      1.      Présentation ................................................................................................................ 9
      2.      Caractéristiques Techniques et capacités ................................................................. 10
      3.      Plateforme de développement ................................................................................. 11

                                                                                                                                 iv
                                                                                                                Table des matières
Robot à base d’Android

Conclusion ............................................................................................................................ 13
 3. SPECIFICATIONS ET ANALYSE DES BESOINS .............................................. 14
Introduction .......................................................................................................................... 14
I.         Gestion du projet ........................................................................................................ 14
      1.      Approche Agile vs. Séquentielle ............................................................................ 15
      2.      Choix de méthodologie .......................................................................................... 16
      1.      Adaptative Software Development (ASD) ............................................................ 16
      2.      Dynamic Software Development Method (DSDM)............................................. 16
      3.      eXtreme Programming (XP) ................................................................................... 16
      4.      Rapid Application Development (RAD) ................................................................ 17
      5.      Scrum ........................................................................................................................ 17
      3.      Choix de la méthodologie : Mobile D .................................................................. 17
II.        Identification des acteurs .............................................................................................. 19
III.          Spécification fonctionnelle ........................................................................................ 19
      1.      Vision du produit ....................................................................................................... 19
      2.      Besoin fonctionnels ................................................................................................. 20
      3.      Besoin non fonctionnels ......................................................................................... 20
      4.      Cas d’utilisation généraux ......................................................................................... 21
IV.           Cas d’utilisations Détaillés ...................................................................................... 23
      1.      Le 1er Cas- Explorer un lieu .................................................................................... 23
      2.      Le 2ème Cas- Récupérer le Streaming Vidéo ........................................................ 24
      3.      Le 3ème Cas- Détecter un obstacle ........................................................................ 25
      4.      Le 4ème Cas- Détecter une fuite de gaz ................................................................ 26
      5.      Le 5ème Cas- Récupérer l’état du ROBOT.............................................................. 27
V. Diagramme de séquence système ............................................................................ 28
VI.           Diagrammes de Séquence détaillés...................................................................... 29
      1.      Diagramme de séquence 1– Déplacer le ROBOT ............................................... 29
      2.      Diagramme de séquence 2– Surveiller un lieu .................................................... 30
      3.      Diagramme de séquence 3– Détecter un Obstacle ............................................ 31
      4.      Diag.de séquence 4 – Détecter une fuite de Gaz .............................................. 32

                                                                                                                                  v
                                                                                                                Table des matières
Robot à base d’Android

VII.          Maquettes ................................................................................................................. 33
Conclusion ............................................................................................................................ 35
 4. CONCEPTION ............................................................................................ 36
Introduction ........................................................................................................................ 36
I.         Diagramme de séquence objets ............................................................................... 36
II.        Diagramme d’activités................................................................................................... 37
III.          Diagramme de Classe ................................................................................................ 38
Conclusion ........................................................................................................................... 39

 5. REALISATION ............................................................................................ 40
Introduction .......................................................................................................................... 40
I.         Réalisation Logicielle .................................................................................................. 40
      1.      Environnement de travail .......................................................................................... 40
II.        Réalisation Matérielle ................................................................................................... 48
      1.      Environnement de travail ....................................................................................... 48
      3.      Construction matérielle .......................................................................................... 53
      4.      Estimation du coût .................................................................................................. 55
      5.      Produit final .............................................................................................................. 56
      a.      Montage électronique Fritzing .................................................................................. 56
      b.      Album Photos ............................................................................................................ 57
III.          Défis relevés............................................................................................................... 58
IV.           Perspective & Evolution ............................................................................................ 58
V.         Chronogramme ............................................................................................................. 59
 CONCLUSION GENERALE .............................................................................. 60
 BIBLIOGRAPHIE ............................................................................................ 61
 ANNEXE ........................................................................................................ 62
OpenAccessory et ADK ...................................................................................................... 62
      OpenAccessory.................................................................................................................. 62
      ADK .................................................................................................................................... 62
Spécification Huawei Gaga U8180 ................................................................................... 63
Capteur Ultrason – Dossier Technique ............................................................................ 64


                                                                                                                                   vi
                                                                                                                  Table des matières
Robot à base d’Android


Motor Driver TB6612FNG .................................................................................................. 68
Capteur de Gaz (MQ5) ....................................................................................................... 72
1er Article sur Tunandroid.com ........................................................................................ 73
Participation à TUNIROBOTS2012 et premier prix ........................................................ 75
Participation à ComNet’2012 Supcom à Hammmet .................................................... 77
Participation à Droidcon Tunis 2012 (cité des sciences) ............................................... 78




                                                                                                                    vii
                                                                                                   Table des matières
Robot à base d’Android



LISTE DES FIGURES



Figure 1 - Android@Home ......................................................................................................... 1
Figure 2 - Logo ESPRIT Mobile .................................................................................................... 3
Figure 3 - Différents environnement du projet ......................................................................... 4
Figure 4 - ADK de Google............................................................................................................ 6
Figure 5 - Arduino Mega2560..................................................................................................... 7
Figure 6 - IOIO – Logo officiel ..................................................................................................... 9
Figure 7 - IOIO – Distributeur Sparkfun ...................................................................................... 9
Figure 8 - Montage de la carte IOIO ......................................................................................... 10
Figure 9 - Carte IOIO ................................................................................................................. 10
Figure 10 - Classification des Pins ............................................................................................ 11
Figure 11 - Montage de l'exemple Démo ................................................................................. 13
Figure 12 - Interface de l'application Démo ............................................................................. 13
Figure 14 - Cas d’utilisation généraux du projet ..................................................................... 21
Figure 15 – Cas d’utilisation - Explorer un lieu ......................................................................... 23
Figure 16 - cas d'utilisation - Récupérer le Streaming Vidéo ................................................... 24
Figure 17 - Cas d'utilisation – Détecter un obstacle ................................................................ 25
Figure 18 - Cas d'utilisation - Détecter une fuite de gaz .......................................................... 26
Figure 19 - Cas d'utilisation - Récupérer l’état du ROBOT ....................................................... 27
Figure 20 - Diagramme de séquence système ......................................................................... 28
Figure 21 - Diagramme de séquence – Déplacer le ROBOT ..................................................... 29
Figure 22 - Diagramme de séquence – Surveiller un lieu ........................................................ 30
Figure 23 - Diagramme de séquence – Détecter un Obstacle ................................................. 31
Figure 24 - Diagramme de séquence – Détecter une fuite de Gaz ......................................... 32
Figure 25 - Maquette du ROBOT .............................................................................................. 33
Figure 26 - Maquette de l’interface principale de l’application de commande ..................... 34
Figure 27 - Diagramme de séquence objets............................................................................. 36
Figure 28 - Diagramme d'activités............................................................................................ 37
Figure 29 - Diagramme de Classe ............................................................................................. 38
Figure 30 - Logo Eclipse ............................................................................................................ 40
Figure 31 - Logo Fritzing ........................................................................................................... 41
Figure 32 - Logo Photoshop...................................................................................................... 41
Figure 33 - Logo GIT.................................................................................................................. 41
Figure 34 - Dropbox logo .......................................................................................................... 41


                                                                                                                                viii
                                                                                                                 Liste des figures
Robot à base d’Android

Figure 35 - Interface de connexion .......................................................................................... 42
Figure 36 - Joystick de déplacement ........................................................................................ 42
Figure 37 - Zone d'affichage du streaming ............................................................................... 42
Figure 38 - SeekBars ................................................................................................................. 43
Figure 39 - Interface de détection de Gaz ................................................................................ 43
Figure 40 - Interface de détection de distance ........................................................................ 43
Figure 41 - Interface d'affichage d'état de Batterie ................................................................. 43
Figure 42 - Notification de connexion ...................................................................................... 44
Figure 43 - Tab d'orientation .................................................................................................... 44
Figure 44 - écran 1 - Interface de connexion ........................................................................... 44
Figure 45 - écran 2 - Interface de commande .......................................................................... 45
Figure 46 - Interface de l'application Daemon ......................................................................... 48
Figure 47 - Huawei Gaga .......................................................................................................... 49
Figure 48 - Carte IOIO ............................................................................................................... 50
Figure 49 - Plateforme de déplacement .................................................................................. 50
Figure 50 - Motor Driver........................................................................................................... 50
Figure 51 - Détecteur Ultrason ................................................................................................. 51
Figure 52 - Capteur de gaz........................................................................................................ 51
Figure 53 - Servo Moteur ......................................................................................................... 52
Figure 54 - Brackets .................................................................................................................. 52
Figure 55 - Montage du bras de la caméra .............................................................................. 52
Figure 56 - Batterie ................................................................................................................... 52
Figure 57 – Montage Carte IOIO - Smartphone ....................................................................... 53
Figure 58 – Montage électronique de la plateforme de déplacement .................................... 53
Figure 59 – Montage Carte IOIO et capteur de gaz ................................................................. 54
Figure 60 – Montage Carte IOIO et capteur ultrason .............................................................. 54
Figure 61 – Montage de la carte IOIO avec les servos moteurs .............................................. 55
Figure 62 - Estimation du coût du ROBOT................................................................................ 55
Figure 63 - Schéma électronique global ................................................................................... 56
Figure 64 - Le Robot dans sa première phase .......................................................................... 57
Figure 65 - Le Robot dans la phase intermédiaire ................................................................... 57
Figure 66 - Le Robot en phase finale ........................................................................................ 58
Figure 67 - Chronogramme général ......................................................................................... 59
Figure 68 - USB Host and Accessory Modes ............................................................................. 62




                                                                                                                                  ix
                                                                                                                  Liste des figures
Robot à base d’Android



LISTE DES TABLEAUX



Tableau 1 Comparaison entre les différentes solutions ........................................................... 7
Tableau 2 - Comparatif entre approche agile et approche classique ..................................... 15
Tableau 3 - Caractéristiques du Mobile-D................................................................................ 18
Tableau 4 - Définition du problème ......................................................................................... 19
Tableau 5 - Position du produit ................................................................................................ 19
Tableau 6 - Description du cas d'utilisation Explorer un lieu ................................................... 23
Tableau 7 - Description du cas d'utilisation Récupérer le streaming vidéo ............................. 24
Tableau 8 - Description du cas d'utilisation Récupérer la distance ......................................... 25
Tableau 9 - Description du cas d'utilisation récupérer le niveau de gaz ................................. 26
Tableau 10 - Description du cas d'utilisation récupérer l'état du ROBOT ............................... 27
Tableau 11 – Commande des Moteurs .................................................................................... 46




                                                                                                                            x
                                                                                                              Liste tableaux
Robot à base d’Android



INTRODUCTION
GENERALE

Android est devenu de plus en plus intéressant pour le développement de matériel.
Maintenant, on devrait bientôt pouvoir brancher des manettes de jeu, un matériel
personnalisé, des capteurs et autres dispositifs et de faire une plate-forme Android-
Anywhere.

Les nouvelles API1 de gestion de matériel permettront à tout le monde de développer des
accessoires matériels pour Android, à partir d’amateurs individuels vers les grandes marques
mondiales. On n’a pas à signer un NDA2, et vous n’avez pas besoin d’une licence de matériel
spéciale, les aspects qui concernent la politique d’Apple n’existeront pas chez Android.

On a toujours été en mesure de connecter un appareil Android à un ordinateur, mais jusqu'à
quelques mois avant, il n'y avait aucun moyen pour les applications Android d’interagir avec
un autre matériel via le port USB. Dans ce contexte, nous explorons un nouvel appui pour les
périphériques d'entrée USB, ainsi que de nouvelles possibilités pour les applications de
communiquer avec des périphériques via le port USB ou même la connectivité Bluetooth.

L’une des annonces (1) les plus importantes du Google IO 20113, est l’arrivée du géant
d’internet dans les systèmes domotiques et électroniques pour maison, office, industrie
etc... Google devrait proposer un écosystème composé de plusieurs éléments Software et
Hardware tournant autour d’Android, le tout disponible en open source.

Pour satisfaire ce nouveau besoin, plusieurs sociétés ont commencé déjà des mois avant
l’annonce de Google, à proposer différentes solutions, parmi
lesquelles nous trouvons La carte IOIO, la solution de Ytai BEN TSVI
(2)
   , un jeune ingénieur développeur et amateur d’électronique, qui a
conçu cette carte dans son passe-temps sans savoir au préalable
que son produit serait exploitable mondialement et adopté
officiellement par Google (3).

C’est dans ce cadre que notre projet s’inscrit : il s’agit de Concevoir,             Figure 1 - Android@Home
construire, développer un système embarqué intelligent basé sur

1
  Application Programming Interface
2
  Non-Disclosure Agreement
3
  Google I/O est une conférence annuelle de deux jours, organisée par Google au Moscone Center de San
Francisco, en Californie.

                                                                                                      1
                                                                                 Introduction Générale
Robot à base d’Android

Android, soit un Robot à base d’Android.

Tout au long de ce rapport, nous exposerons les différentes étapes de réalisation de notre
projet, en commençant par une présentation des notions fondamentales relatives à la
compréhension de notre sujet, ensuite nous présenterons les différentes solutions
existantes et finalement dans la dernière partie, on donnera une description détaillée de la
solution formulée.




                                                                                          2
                                                                     Introduction Générale
Robot à base d’Android



 1. PRESENTATION
 GENERALE
        Introduction
 Nous présentons dans ce chapitre une étude préliminaire du projet. Dans un premier temps,
 nous présentons l’environnement du stage. Par la suite, nous décrivons la problématique,
 ainsi que les principaux objectifs du projet.


I. Contexte du projet
 Dans le cadre de la formation d’ingénieurs Télécommunications à l’École Supérieure Privée
 d’ingénierie et de Technologies (ESPRIT), nous avons eu l’occasion d’effectuer notre projet
 de fin d’études pour l’obtention du diplôme d’ingénieur national en Télécommunications au
 sein du Laboratoire de Recherche et Développement EPRITEC attaché à ESPRIT précisément
 avec l’équipe ESPRIT Mobile, généralement ce projet vise à compléter notre formation
 universitaire acquise, durant trois ans, au sein de cet établissement, et de nous introduire
 dans la vie professionnelle grâce à une mise en pratique de nos connaissances, à l’utilisation
 des compétences acquises et à mettre en épreuve notre esprit d’ingénieur. Le projet
 consiste à concevoir et réaliser un ROBOT à base du système Android dans le but d’initier et
 d’améliorer la recherche dans le domaine Mobile/Embarqué à ESPRIT.


II. Présentation de l’Organisme d’Accueil
 Le projet a été réalisé au sein d’ESPRITEC, l’unité de Recherche-Développement-Innovation
 (RDI) de l’Ecole Supérieure Privé d’Ingénierie et de Technologies (ESPRIT) situé au pôle
 technologique El Ghazela. Cette unité s’oriente vers la «Recherche appliquée » et privilégie
 deux axes :

 – L’axe «Technologique» : pour la maitrise des technologies avancées. Elle nécessite la mise
 en place d’une plate-forme pour le développement des services et l’expérimentation des
 nouvelles applications et des nouvelles technologies.

 – L’axe «Application et service» : pour développer des prototypes, des nouveaux services et
 applications avancées pouvant avoir des retombées
 industrielles et/ou socio-économique.

 ESPRITEC partage ses activités entre plusieurs équipes :
                                                                   Figure 2 - Logo ESPRIT Mobile




                                                                                             3
                                                                        Présentation générale
Robot à base d’Android

  - L’équipe ESPRIT Mobile1 réalise des Projets sur les différentes plateformes et systèmes
  mobile, comme Android, BlackBerry, iOS, WP7, et aussi sur la SMART TV, l’AR-Drone, ADK,
  Panda Board etc…
  – L’équipe M2M (Machine to Machine) spécialisé dans la technologie ambiante et le
  traitement d’image.
  – L’équipe Cloud travaille sur la mise en place des systèmes de Cloud Computing.
  – L’équipe E-GOV réalise des projets d’intégration et d’urbanisation des systèmes
  d’informations.
  Les projets entrepris mobilisent des équipes composées de plusieurs chercheurs,
  enseignants-chercheurs, ingénieurs et étudiants en projet de fin d’études (PFE) et projet de
  fin de l’année (PFA) sous la conduite d’un chef de projet. Des étudiants en PFE, Mastères ou
  Doctorats d’autres institutions sont aussi intégrés dans les équipes de projets dans le cadre
  de conventions de partenariat avec les laboratoires et unités de recherche des
  établissements publics.

  Notre projet, réalisé au sein de l’équipe ESPRIT Mobile entre également dans le cadre d’un
  grand projet pédagogique innovant à ESPRIT, vise à intégrer les toutes nouvelles tendances
  technologiques dans l’environnement pédagogique à travers des Workshops orientés, des
  Travaux Pratiques dirigés, et même des Produits finis à réalisés.


III. Problématique du projet
  Pour aboutir à un système embarqué intelligent basé sur Android et qui répond aux besoins
  demandés par ESPRITEC et par des
  différents      clients     potentiels
  (entreprises,   personnes),   il   est
  important de se focaliser en premier
  lieu sur les problématiques du projet
  pour pouvoir s'organiser.

  De la sorte, on va déterminer le
  périmètre d'action et de faisabilité de
  ce projet. Comme il est illustré à la
  figure 3, le projet passe par plusieurs
  environnements, cela commence sur la
  machine du développeur, en passant
  par une phase de réalisation matérielle,
  vers l’environnement de test réel pour
  arriver finalement à l’environnent de
  production. De plus, le projet peut être              Figure 3 - Différents environnement du projet
  transféré d’un environnement à un autre plusieurs fois avant qu’il soit finalisé.

  1
      http://www.espritmobile.com/

                                                                                                   4
                                                                              Présentation générale
Robot à base d’Android

  La migration et le déploiement du projet d’un environnement vers un autre ne se fait pas de
  la même façon et ne présente pas les mêmes degrés de complexité, puisque sur
  l’environnement de développement, une simple compilation suffira, mais le déploiement de
  la solution sur les autres environnements surtout la réalisation matérielle présente plusieurs
  contraintes et difficultés de plus si nous voulons transférer seulement un composant ou une
  fonctionnalité bien spécifique, sans toucher aux autres composants ce qui rend cette
  manipulation délicate et pénible d’où le besoin de concevoir une approche qui permet de
  réaliser cette tâche.

  Il y a aussi d’autres scénarios possible du système qui nous obligent de concevoir une
  solution polyvalente tel que :

     Système qui répond à des besoins spécifiques en termes de fonctionnalités.
     Système qui possède une marge d’évolutivité assez grande.
     Prouver la possibilité de fusionner l’intelligence d’Android avec le milieu quotidien


IV. Solution proposée
  La solution proposée comme système embarqué intelligent basée sur le OS Android, sera un
  ROBOT à base d’Android, équipé avec deux applications, la première aura comme rôle
  d’assurer le fonctionnement interne du Robot et l’interaction avec le milieu extérieur, la
  deuxième permet à l’utilisateur de commander et interagir avec le ROBOT en offrant une
  interface graphique dotée de plusieurs fonctionnalités avancées, et une interface de
  connexion sans fil.


          Conclusion
  Ce chapitre nous a servi à mettre notre projet dans son cadre. En effet, notre projet de fin
  d’études est réalisé à ESPRITEC, et qui consiste à créer un robot intelligent basée sur
  Android, dans le but de suivre et accroître l’innovation technologique dans ce domaine et
  initier tout un nouvel horizon dans la création et l’exploitation des systèmes embarqués
  intelligents.

  Dans le chapitre suivant, nous introduirons les concepts nécessaires à la compréhension de
  ce projet à savoir : une présentation de la solution choisie comme concept et comme
  plateforme de développement logicielle et matérielle et les autres solutions existantes ainsi
  qu’une comparaison entre ces derniers pour mettre l’accent sur leurs points forts et faibles.




                                                                                               5
                                                                          Présentation générale
Robot à base d’Android



2. ETAT DE L’ART


Introduction
Dans ce chapitre nous allons présenter quelques notions et technologies qui vont servir à
mieux comprendre notre sujet, ce chapitre sera composé de cinq parties qui seront réparties
comme suit.

La première partie sera consacrer à la présentation du principe et concept des solutions
existantes et leurs nouveaux enjeux avec une étude comparative entre les produits similaires
du marché, la seconde partie présente la carte IOIO, son architecture physique et logique
ainsi toutes ces composantes pour finir avec une brève présentation de sa plateforme de
développement.


 I. Présentation des Solutions Existantes
Les systèmes embarqués ne sont pas particulièrement nouveaux, les premiers systèmes
sont apparus au début des années 60. La première génération de ces systèmes a été
construite sur des solutions lourdes et complexes à déployer en se basant essentiellement à
la programmation bas-niveau et les résultats obtenus n’ont pas toujours été à la hauteur des
espérances des utilisateurs. Il faut également ajouter que les systèmes embarqués classiques
n’étaient pas suffisamment matures pour tenir véritablement les promesses de l’unification
des interfaces de communications vis-à-vis l’utilisateur.

Fort heureusement la situation a beaucoup changé ces derniers temps
grâce à l’apparition du système mobile Open Source Android: de
nouvelles plates-formes techniques embarquées plus simples et plus
complètes telles que la carte IOIO, la carte Arduino (4), l’ADK de Google
(5)
   , la PANDA BOARD et la Beagle BOARD sont apparues et le niveau de
maturité des systèmes embarqués à base d’Android s’est
considérablement accru. Il en résulte le début d’un grand retour des
projets embarqués conçues à base d’ANDROID.

Vu la présence de quelques produits exploitables sur le marché, le choix Figure 4 - ADK de Google
d’une solution pour la création du ROBOT, se base sur plusieurs critères tel que le prix et les
fonctionnalités offertes, la compatibilité avec les autres acteurs environnementaux tel que
les composants électroniques, et surtout la réponse aux besoins demandés.

                                                                                              6
                                                                                  Etat de l’art
Robot à base d’Android

Le tableau ci-dessous présente une étude comparative entre les principales solutions sur le
marché.

Critères de comparaison           Carte Arduino        Carte Google ADK                Carte IOIO
Développement                     JAVA, C++ Sketch   JAVA, C++ Sketch           JAVA (+IOIO Lib)
Compatibilité Versions Android    V1.5 with ADB      V3.1 Or V2.3.4             V1.5 and UP
Dimensions                        68 - 53mm          86 - 53mm                  70 - 30mm
Compatibilité Bluetooth           Bluetooth          Bluetooth Shield           NATIVE (V.3)
                                  Shield                                        Plug & Play
Compatibilité OpenAccessory       Non                Oui                        Oui (V.3)
Connectivité USB Hôte             Oui                Oui                        Oui
Prix                              75$                80$ - 400$                 50$
                       Tableau 1 Comparaison entre les différentes solutions

D’après le comparatif ci-dessus nous constatons que la carte IOIO est la carte la plus adaptée
à la création de ce système intelligent.

Choix de la solution :
Les deux différences les plus significatives entre les 3 solutions sont les suivantes:
ADK et ses clones ne fonctionnent que sur des appareils Android très spécifiques, tandis que
la carte IOIO pourrait fonctionner sur presque n'importe quel appareil Android depuis
Android 1.5.

Avec ADK ou l’Arduino vous devriez écrire à la fois le côté Android (Java) et de côté carte
(C++) du logiciel (Sketch (6)) et d'établir un protocole de communication (7) entre eux. Vous
auriez à connaître les deux langages et deux IDE1 différents et, même si vous faites quelque
chose de très trivial, il faudra une importante durée de temps pour obtenir quelque chose
qui fonctionne de manière fiable. Avec IOIO, vous écrivez simplement le côté d'Android. Il
suffit d’inclure une bibliothèque appelée IOIOLib dans l’application, ce qui fournit une API
qui vous permet de contrôler les broches de la carte IOIO et ses fonctions comme s'ils
étaient physiquement connectés à votre Android. Vous n'avez pas besoin de se soucier du
fait qu'il y a un processeur distinct, des protocoles de communication, etc…

Si vous vous en tenez un Dongle Bluetooth dans IOIO au lieu d'un câble USB à
l'Android, il communiquera sans fil avec l’appareil. La bonne chose est que
votre application n'a pas besoin de s'en soucier, et vous pourrez même
revenir en arrière lorsque votre application est en cours
d'exécution.

IOIO Supporte officiellement le protocole OpenAcessory
(ADK)2 de Google.
Cette nouvelle fonctionnalité est actuellement réalisée en
mode bêta. Les Informations techniques disponibles sur le wiki
                                                                                 Figure 5 - Arduino Mega2560
1
  Integrated Development Environment
2
  Le terme "ADK" Accessory Development Kit : est souvent utilisé comme synonyme de "OpenAccessory",
lorsqu’on dit que cette carte supporte ADK ça veut dire qu'elle supporte le protocole OpenAccessory.

                                                                                                        7
                                                                                            Etat de l’art
Robot à base d’Android

IOIO. La façon dont cela fonctionne est que la carte IOIO sera capable de communiquer avec
le périphérique Android via le protocole OpenAccessory. Lorsque ce n'est pas supporté, il
sera parfaitement switcher à ADB1. Cela vous permet de connecter la même carte IOIO aux
deux types de dispositifs, les nouveaux et les anciens. L’application peut très facilement être
portée sur le nouveau mode, cela ne nécessite que quelques non-intrusive modifications aux
métadonnées de l’application.

Avantages de la carte IOIO
La carte IOIO Supporte toutes les versions Android - puisque elle fonctionne aussi bien avec
OpenAccessory et l’ADB elle peut communiquer avec une très grande variété de dispositifs
Android existants, en s'appuyant sur OpenAccessory quand elle existe et en tirant parti des
fonctionnalités supplémentaires de l’ADB. D'autres cartes, qui ne prennent pas en charge de
l’ADB, sont limitées à tous, sauf aux derniers appareils Android sur le marché.

Fonctionnalité - IOIO est presque identique à Arduino Mega (figure 5) en termes de nombre
de broches (pins) et de fonctions. La seule différence est le nombre de canaux PWM (IOIO-9,
Mega-16) et les canaux de TWI (IOIO-3, Mega-1).

Coût - à 50 $, IOIO semble actuellement être la carte la moins chère commercialisée et
disponible sur le marché. Une alternative à proximité est une version DIY, ce qui coûte 55 $
et nécessite une certaine amélioration de plus.

Développement de haut niveau - les autres cartes nécessite à la fois une application Android
et un code intégré en C pour la carte, la conception de votre propre protocole de
communication. IOIO fait tout cela automatiquement, il ne reste qu’écrire le code Android
de l’application, En utilisant une API Java de haut niveau pour contrôler les fonctions de la
carte.

Support Forum et Wiki - IOIO a un groupe de discussion active et une extensive
documentation wiki, qui continue de croître rapidement. Le projet IOIO est engagé aussi
bien dans la communauté amateur que dans la communauté professionnelle

Dimensions - IOIO est probablement la plus petite carte, presque aussi petit qu’on pourrait
obtenir avec 48 broches E/S, des broches d'alimentation et d'un connecteur USB. Il est
beaucoup plus petit que la carte ADK.

Bootloader - firmware - IOIO comprend un chargeur de démarrage sécurisé, qui permet les
mises à niveau à effectuer à travers un appareil Android.

Alimentation - IOIO possède un commutateur-mode à 5V capable de délivrer jusqu'à 1,5 A.
Cela permet de charger simultanément un appareil Android et alimenter deux servos
moteurs standard sans problème. Quelques autres cartes nécessitent une alimentation de
5V externe pour soutenir ce cas d'utilisation. En outre, IOIO a un limiteur intégré qui permet
de limiter le courant de charge d'Android. Ceci est très utile pour les configurations
fonctionnant sur batterie, lorsque vous ne voulez pas l'appareil Android à vider votre

1
    Android Debug Bridge

                                                                                              8
                                                                                  Etat de l’art
Robot à base d’Android

batterie.

Open-Source - Contrairement à certaines des autres solutions, le matériel de l'IOIO, le
Firmware et le logiciel(les APIs) sont totalement open-source avec une licence FreeBSD (très
permissive). Cette approche a été choisie parce que selon l’inventeur c'est ce qui marche le
mieux pour la communauté des amateurs, et permet aux gens de personnaliser le produit
pour leurs besoins, contribuer au projet, le comprendre mieux et concurrencer sur son prix.

En conclusion, la carte IOIO est très compétitive avec les autres plates-formes compatibles
OpenAccessory, d’où le choix d’utiliser cette carte lors de ce projet.




                                    Figure 6 - IOIO – Logo officiel



II. La Carte IOIO
   1. Présentation
   IOIO (prononcez: yo-yo) est un produit qui vous permet de connecter des circuits
   électroniques à un appareil Android et de les contrôler à partir d'une application
   Android.

   Il est composé d'une petite carte PCB (2.7x1.2
   "= 7x3cm) spécialement conçu pour être piloté
   via un dispositif Android (avec version d'OS 1.5
   et sup.) par le biais de son port USB Ce pilotage
   s'effectuera via des API JAVA™ simples et
   intuitives que vous utilisez dans votre
   application Android qui gère toutes les
   communications avec la carte sans avoir
   recours à une programmation embarquée bas
                                                         Figure 7 - IOIO – Distributeur Sparkfun
   niveau, ni au moindre programmateur externe).
   Aucune modification de l'appareil Android est nécessaire - vous éviter la complication de
   la modification et l'annulation de la garantie.

   Dès lors le module IOIO permettra à votre système Android d'interagir avec le monde
   extérieur en lui permettant de disposer de ports d'entrée/sorties tout ou rien, de sortie
   PWM, d'entrée analogiques, de liaison SPI™, I2C™, UART...




                                                                                               9
                                                                                   Etat de l’art
Robot à base d’Android

      IOIO est disponible pour achat en ligne à partir du site officiel de SparkFun Electronics1.

      La totalité du logiciel et du matériel sont à 100% open-source sous une licence
      permissive.


      2. Caractéristiques Techniques et capacités
La carte électronique est construite autour d’un microcontrôleur PIC série 24F, qui dispose
d’une connexion USB hôte. Il suffit donc de la relier à l’aide d’un câble USB à un périphérique
Android (OS v1.5 minimum) pour que la carte IOIO interprète des commandes reçues par
une application.

Pour mieux comprendre c’est quoi la carte IOIO et comment utiliser au mieux ses
caractéristiques, cette section prend une brève tournée à travers ce produit et fournit des
introductions aux quelques-unes de ses caractéristiques et ses capacités.




                                                                 Figure 9 - Carte IOIO
          Figure 8 - Montage de la carte IOIO


Pour les spécifications techniques, la carte IOIO se compose de :
1. Connecteur USB (type A) connecteur femelle: Permet de connecter l'appareil Android.
2. GND pins (9 pins): prise de terre.
3. VIN pins (3 pins): Utilisé pour l'alimentation à la carte. Tension entre 5V-15V doit être fournie.
4. 5V pins (3 pins): Normalement, utilisée comme sortie 5V lorsque la carte est alimentée à
      partir de VIN. Peut être utilisé comme entrée 5V en cas VIN n'est pas connecté.
5. 3.3V pins (3 pins): 3,3 V en sortie.
6. I/O pins (48 pins, numérotées 1-48): Des broches E/S. Certains ont des fonctions spéciales,
      voir ci-dessous:
            48 pins d’entrées/sorties (peuvent fonctionner comme des entrées et sorties
             numériques.)

1
    http://www.sparkfun.com/

                                                                                                    10
                                                                                         Etat de l’art
Robot à base d’Android


       16 entrées analogiques (10-bits)
       Jusqu’à 9 sorties PWM
       Jusqu’à 4 liaisons séries UART
       Jusqu'à 3 canaux SPI.
       Jusqu’à 3 liaisons TWI (I2C-compatible)

7. LED d'alimentation: S'allume lorsque la carte IOIO est sous tension.
8. Stat LED: S'allume brièvement lors de la mise sous tension, puis devient sous le contrôle des
    applications.
9. MCLR pin: Non normalement utilisé. Son but est de programmer le Firmware nouveau
    Bootloader sur la carte IOIO.
10. Charge Current Trimmer (CHG): Permet de régler la quantité de courant de charge fourni
    sur la ligne VBUS de l'USB à l'appareil Android. Tourner dans le sens (+) augmente de
    courant de charge.
11. Régulateur de tension 5v - 1,5 A : Peut charger l'appareil Android ainsi que la puissance
    d'un couple de petits moteurs.
12. Bootloader : intégré sur la carte, permettant la mise à niveau du Firmware en direct à
    partir d’une application sur l’appareil Android.




                                        Figure 10 - Classification des Pins


3. Plateforme de développement
Dans cette section, nous allons jeter un œil à l'architecture de la carte IOIO du point de
vue d'un développeur.
La carte IOIO offre un ensemble de logiciels et Firmware disponible en téléchargement via la
page Github 1officielle du Développeur (8).

1
 GitHub est un service web d'hébergement et de gestion de développement de logiciels, utilisant le
programme Git

                                                                                                          11
                                                                                               Etat de l’art
Robot à base d’Android

Le pack se compose de :
     IOIOLib (V3.23) : API JAVA officielle pour le développement sous Android
     Image IOIO Bootloader (v3.23) : pour mettre à jour le Bootloader de la carte
     Firmware Image (v2) : pour mettre à jour le Firmware de la carte IOIO
     L’application IOIO Manager (9) : elle permet de gérer les images des applications ainsi
       que les images de Bootloader

IOIOLib – Principe de développement :
IOIOLib est une bibliothèque Android, qui permet à votre application Android de contrôler la
carte IOIO. Elle expose un ensemble d'interfaces Java, couvrant les différentes fonctions de
la carte électronique. Lorsque vous générez votre application, IOIOLib se fait emballé dans
votre fichier Apk, afin que votre application soit autonome et ne nécessite aucune
installation supplémentaire sur l'appareil Android qui l'exécute. L'ensemble du code est pur
Java, dépendant uniquement de la norme Android 1.5 (ou version ultérieure).

IOIOLib est tout documenté au format Javadoc standard, et cette documentation est
destinée à être complète et être utilisée comme référence pendant le codage. Dans ce qui
suit, nous essayons de couvrir une utilisation de la bibliothèque à partir d'une approche
commune de cas d'utilisation plutôt que d'être 100% formelle.

La bibliothèque est organisée en plusieurs packages Java. Le package ioio.api contient toutes
les APIs publiques pour contrôler la IOIO. Ceci est le package de notre application qui sera
utilisé. Dedans, le paquet ioio.api.exception contient certaines exceptions levées par l'API
IOIO. Le paquet ioio.impl contient la mise en œuvre de ces interfaces et n'est pas destinée à
être utilisée directement. Le paquet ioio.util contient des utilitaires utiles qui peuvent vous
rendre la vie un peu plus facile lors de l'écriture des applications ioio, mais ne fournissent
pas les fonctionnalités de base. Ce paquet contient une classe, qui sert de classe de base
pour notre application basée sur IOIO, qui gère automatiquement la bonne connexion /
déconnexion à la carte IOIO en réponse à des événements d'application.

IOIOLib – Utilisation : (sous Eclipse)
La dernière version de IOIOLib peut être téléchargée depuis la page Téléchargements (10).

      Extraire IOIOLib à un endroit où vous voulez normalement garder vos projets
       Android.
      L'importer dans Eclipse en utilisant Fichier> Importer ... > Général> Projets existants
       dans Workspace ..., puis choisissez le répertoire IOIOLib vous venez de créer et
       cliquez sur Terminer.
      Il référence de votre projet d'application, conformément à ces instructions
      Assurez-vous que votre application déclare android.permission.INTERNET. Cela
       peut se fait en ouvrant le fichier AndroidManifest.xml qui se trouve à la racine de
       votre projet, allez à l'onglet Permissions> Ajouter ... > Permissions Utilisateur>

                                                                                             12
                                                                                  Etat de l’art
Robot à base d’Android

        Sélectionnez android.permission.INTERNET sous "Nom".
       Assurez-vous que vous avez activé le débogage USB sur votre appareil Android, en
        allant dans Paramètres> Applications> Développement> Activer le débogage USB.

Voici à quoi ressemble un exemple de HelloIOIO

public class MainActivity extends IOIOActivity {
    ...
    class Looper extends BaseIOIOLooper {
        private DigitalOutput led_;

          @Override
          protected void setup() throws ConnectionLostException {
              led_ = ioio_.openDigitalOutput(0, true);
          }

          public void loop() throws ConnectionLostException {
              led_.write(!button_.isChecked());
              try {
                  Thread.sleep(100);
              } catch (InterruptedException e) {
              }
          }
    }

    @Override
    protected IOIOLooper createIOIOLooper() {
        return new Looper();
    }
}


Cette Application permettra d’allumer la LED numéro 0 de la carte IOIO via un Bouton




                                              Figure 13
                                                      Figure 12 - Interface de l'application Démo



    Figure 11 - Montage de l'exemple Démo


Conclusion
Dans ce chapitre, nous avons passé en revue les différentes notions nécessaires à la
compréhension de notre sujet et nous avons mené une étude comparative entre les
différentes approches et solutions disponibles pour réaliser un système embarqué basé sur
Android.
Puisque ce projet est notre premier contact avec le milieu Android embarqué, il nécessite
beaucoup de recherche et dès le début nous savions que selon nos découvertes nous serons
amenés à changer les spécifications, avec ces contraintes.
                                                                                                     13
                                                                                          Etat de l’art
Robot à base d’Android



3. SPECIFICATIONS
ET ANALYSE DES
BESOINS
Introduction
Après avoir présenté le cadre général de notre projet, nous allons, dans ce chapitre, entamer
la phase de spécification et d’analyse des besoins. En effet, tout au long de ce chapitre, nous
allons identifier et préciser les besoins à satisfaire. Ces besoins représentent aussi les
fonctionnalités à réaliser dans notre application, ce chapitre sera présenté sous forme de
« User cases » et « Sequence Diagrams »- scénarios. Nous commençons ce chapitre avec une
description de la gestion de notre projet

Le choix d’une méthode agile est évident et après une comparaison entre les principales
méthodes agiles, nous allons choisir la méthodologie la plus adéquate pour réaliser ce
projet.


 I. Gestion du projet
Trop souvent, de bonnes idées de projet n’aboutissent pas, du fait d’une mauvaise
organisation. Pour améliorer nos chances de réussite, nous devons choisir une méthode de
développement de logiciels pour notre application.

La discipline de gestion des projets comporte deux grandes branches de méthodologie, les
méthodes classiques (ou Séquentielle) et les méthodes agiles.

Nous allons dans cette partie présenter ces deux approches, faire une brève description des
différentes méthodologies, et présenter la méthodologie que nous allons l’adaptée en
spécifiant les avantages et la compatibilité avec notre cas de figure.




                                                                                           14
                                                        Spécifications et analyse des besoins
Robot à base d’Android


   1. Approche Agile vs. Séquentielle
Pour bien choisir notre type de méthodologie de travaille nous avons dressé le tableau 2-6
qui présente une comparaison entre les deux approches par thème. (11)

       Thème                    Approche Séquentielle                                   Approche agile
Cycle de vie              En cascade ou en V, sans                        Itératif et incrémental.
                          rétroaction possible, phases
                          séquentielles.
Planification             Prédictive, caractérisée par des                Adaptative avec plusieurs niveaux de
                          plans plus ou moins détaillés sur               planification avec ajustements si
                          la base d’un périmètre et                       nécessaires au fil de l’eau en fonction
                          d’exigences définies au début du                des changements survenus.
                          projet.
Documentation             Produite en quantité importante    Réduite au strict nécessaire au profit
                          comme            support        de d’incréments                 fonctionnels
                          communication, de validation et    opérationnels pour obtenir le feedback
                          de contractualisation.             du client.
Équipe                    Une équipe avec des ressources     Une équipe responsabilisée où
                          spécialisées, dirigées par un chef l’initiative et la communication sont
                          de projet.                         privilégiées, soutenue par le chef de
                                                             projet.
Qualité                   Contrôle qualité à la fin du cycle Un contrôle qualité précoce et
                          de développement. Le client permanent, au niveau du produit et du
                          découvre le produit fini.          processus. Le client visualise les
                                                             résultats tôt et fréquemment.
Changement                Résistance voire opposition au Accueil favorable au changement
                          changement.                        inéluctable, intégré dans le processus.
                          Processus lourds de gestion des
                          changements acceptés.
Suivi de                  Mesure de la conformité aux Un seul indicateur d’avancement : le
l’avancement              plans initiaux.                    nombre           de       fonctionnalités
                                                             implémentées et le travail restant
                          Analyse des écarts.                affaire.
Gestion des risques       Processus distinct, rigoureux, de Gestion des risques intégrée dans le
                          gestion des risques.               processus            global,         avec
                                                             responsabilisation de chacun dans
                                                             l’identification et la résolution des
                                                             risques.
                                                             Pilotage par les risques.
Mesureur succès           Respect des engagements initiaux Satisfaction client par la livraison de
                          en termes de coûts, de budget et valeur ajoutée.
                          de niveau de qualité.
            Tableau 2 - Comparatif entre approche agile et approche classique pour la gestion de projet

Maintenant que nous connaissons mieux les différences majeures entre approches
traditionnelles et approches agiles à travers la comparaison faite ci-dessus nous avons opté

                                                                                                        15
                                                                     Spécifications et analyse des besoins
Robot à base d’Android

pour une approche agile pour gérer notre projet.

    2. Choix de méthodologie
Puisque nous avons choisie d’adopter une approche agile pour gérer notre projet nous allons
maintenant choisir quelle méthode agile à suivre tout au long de la réalisation de notre
Projet.

Pour choisir une méthode nous citons, tout d’abord, quelque unes parmi les principales
méthodes agiles, par ordre alphabétique, avec leurs caractéristiques principales.

    1. Adaptative Software Development (ASD)
Ses caractéristiques principales sont :

   Focaliser sur l’objectif.
   Se baser sur des composants.
   Itérer.
   Découper le temps et fixer des deadlines (timeboxing).
   Piloter le projet par les risques.
   Accepter le changement.

    2. Dynamic Software Development Method (DSDM)
DSDM se base sur neuf principes :

   Implication active des utilisateurs.
   Autonomie et pouvoir de décision des équipes.
   Livraisons fréquentes.
   Adéquation aux besoins des clients comme seul critère d’acceptation du produit.
   Développement itératif et incrémental.
   Modifications réversibles.
   Définition globale macroscopique des besoins.
   Intégration des tests dans tout le cycle de vie.
   Collaboration et coopération entre toutes les parties prenantes.

    3. eXtreme Programming (XP)
XP repose sur quatre valeurs :

   Communication : l’effort de communication entre les différents intervenants est
    indispensable pour atteindre l’objectif commun. Nous devons privilégie la communication
    directe, dans le recueil et la clarification des besoins, dans la planification des itérations,
    dans la répartition et l’exécution des travaux.
   Simplicité : la solution la plus simple est la meilleure pour atteindre les objectifs ; grâce à
    cette simplicité, l’application pourra évoluer facilement, si nécessaire. La simplicité est
    applicable au client dans la définition de ces besoins, dans le choix des outils et du
    processus.
   Feedback : le retour d’information est essentiel pour valider le fait que le projet est sur la
    bonne voie : tests unitaires pour valider le fonctionnement du code, intégration continue

                                                                                              16
                                                           Spécifications et analyse des besoins
Robot à base d’Android

    pour détecter des anomalies, tests fonctionnels pour valider la conformité aux besoins,
    livraisons fréquentes…, autant de pratiques qui rendent plus aisées les adaptations
    éventuelles, sans attendre le terme du projet.
   Courage : le courage est nécessaire aussi bien chez le client que chez les développeurs.
    Pour mener à bien un projet XP, le client doit avoir le courage de donner un ordre de
    priorité à ses exigences, de reconnaitre que certains de ses besoins ne sont pas toujours
    très claires. Le développeur doit aussi avoir le courage de modifier l’architecture même si
    le développent est déjà bien avancée, de jeter du code existant et d’accepter qu’il est
    parois plus rapide et efficace de réécrire une portion de code à zéro plutôt que de
    bricoler du code existant.

    4. Rapid Application Development (RAD)
RAD n’est pas à proprement parler une méthode agile, mais c’est une approche
(semi)itérative incrémentale préconisant un usage intensif des techniques de
communication facilitée.

    5. Scrum
Les valeurs mises en avant par Scrum sont les suivantes :

   Transparence : La transparence garantit que tous les indicateurs relatifs à l’état du
    développement sont visibles par tous ceux qui sont intéressés par le résultat du produit.
    Non seulement la transparence pousse à la visibilité mais ce qui est rendu visible doit être
    bien compris ; cela signifie que ce qui est vu est bien le reflet de la réalité. Par exemple, si
    un indicateur annonce que le produit est fini (ou une partie seulement du produit), cela
    doit être strictement équivalent à la signification de fini définie par l’équipe.
   Inspection : Les différentes facettes du développement doivent être inspectées
    suffisamment souvent pour que des variations excessives dans les indicateurs puissent
    être détectées à temps.
   Adaptation : Si l’inspection met en évidence que certains indicateurs sont en dehors des
    limites acceptables, il est probable que le produit résultant sera également inacceptable
    si on ne réagit pas ; le processus doit donc être ajusté rapidement pour minimiser les
    futures déviations.

Une étude de ces différentes méthodologies révèle qu’elles ont un tronc commun, mais elles
se différencient par leur degré de formalisme, les revues, le rythme du projet, le nombre et
la longueur des itérations et à la taille de projets.

Après cette étude comparative notre choix s’est focaliser sur deux méthode Scrum et XP,
mais nous avons choisi XP puisque la qualité principale de cette dernière est la simplicité de
plus cette méthode privilégie une équipe autonome, malgré que nous n’avons pas respecté
une caractéristique fondamentale de XP qui est le travail en binôme, ce qui n’est le cas avec
notre projet, puisqu’il est réalisé par un seul développeur.


    3. Choix de la méthodologie : Mobile D
Tandis que beaucoup de méthodes agiles ont été présentées, aucune d’elles n’est


                                                                                               17
                                                            Spécifications et analyse des besoins
Robot à base d’Android

spécifiquement visée pour le développement mobile et surtout pour notre cas.
Mobile-D est une approche agile pour l’équipement mobile qui est basé sur XP (eXtrême
Programing), la méthodologie Crystal (Scalability) et Rational Unified Proces (Assurance de
cycle de vie). Elle est conçue pour rencontrer les caractéristiques spécifiques de
développement de l’application mobile et le standard de qualité de l’industrie.
Le travail de développement est divisé en différentes phases qui sont l’exploration,
initialisation, production, stabilisation, et test et correction du système.
Il se dégage de ce qui précède que nous allons suivre la méthodologie XP (eXtreme
Programing) qui est un processus de développement logiciel agile.
XP propose un cycle de développement itératif incrémental, qui fusionne les trois phases de
conception, de réalisation et de test pour chaque itération du logiciel à réaliser.
En faisant la combinaison des avantages des trois méthodes, Mobile-D satisfait les
caractéristiques du développement requis, Cela est représenté dans le tableau 3 suivant :

 Caractéristiques de               Rational                                 Logiciel Mobile
      Mobile-D
Changement élevée En raison du changement élevé des       Incertitude élevée, environnement
d’environnement      exigences, on a besoin de            dynamique: Centaines de nouveau de
                     l’approche de développement          téléphones portables sont fabriqués
                     incrémental et itératif              chaque année
Petite équipe de Les petites équipes peuvent réagir       Majorité de logiciel mobile sont
développement        plus     rapidement,      partager   développés par micro (<10) ou
                     l’information,        peu       de   moyennes (<250) entreprises, La taille
                     documentation est nécessaire         de l’équipe est souvent inférieure à 20
                                                          personnes
Client identifiable    Pour éviter      le    malentendu Nombre          potentiellement      illimité
                       d’affaires                         d’utilisateur. Client d’affaires plus facile
                                                          à identifier, par exemple distributeur
Environnement de Flexible, extensive, etc…                Utilise souvent Java et C++
développement
d’objet orienté
Non           sécurité Les échecs ne causent pas la perte Majorités de logiciel mobile existant
critique               des vies                           sont pour le but de divertissement. Les
                                                          équipement mobiles sont non fiables
Logiciel de niveau Les grands systèmes embarqués Tandis que les systèmes mobiles sont
d’application          exigent la communication étendue complexes et fortement dépendants, les
                       et mécanismes de vérification.     applications mobiles peuvent être
                                                          applications autonomes
Petit système          Moins de conception d’Up front La taille des applications mobiles varie,
                       requise                            mais généralement elles sont moins que
                                                          10.000 lignes de code
Cycle de               Pour les buts de la rétroaction Les cycles de développement varient. En
développement          rapide                             général, les applications mobiles
court                                                     peuvent être développés de 1 à 6 mois
                                 Tableau 3 - Caractéristiques du Mobile-D




                                                                                                   18
                                                                Spécifications et analyse des besoins
Robot à base d’Android



II. Identification des acteurs
        L’acteur de notre Système Intelligent (Robot) s’intercale entre 3 types d’utilisateurs
        selon l’environnement d’exploitation, soit les entreprises (principalement
        industrielles) ou les personnes physiques pour des besoins personnelles, ou les
        établissements de Recherche (Universités, Laboratoires,…).

        Ces utilisateurs jouent presque le même rôle ce qui nous permet de dire que notre
        application n’a qu’un seul acteur qu’on l’appelle dorénavant UTILISATEUR.




III. Spécification fonctionnelle
Nous commençons par présenter la vision et le use case général de notre projet puis nous
découpons le projet sous forme de scénarios.

   1. Vision du produit
Pendant les premières réunions avec le responsable à ESPRITEC (Equipe ESPRIT Mobile) nous
avons discuté les différents côtés de notre projet ce qui nous a permis de définir l’énoncé du
problème, l’impact de la problématique, ce que permet le produit, et la position du produit à
réaliser dans son environnement et par rapport à l’existant, comme montré dans les deux
tableaux suivants:

Le problème                   d’intégration de solutions intelligentes dans le monde réel en
                              utilisant l’intelligence logicielle disponible(Android).
Affecte                       les milieux domotiques, industriels, …
L’impact du problème est      manipulation délicate et trop de temps perdu pour interagir
                              avec le milieu quotidien d’une façon automatisée
Une solution réussite         une manipulation plus raffiné des fonctionnalités à assurer
permettrait                   par le système intelligent, une interaction efficace avec le
                              monde extérieur
                                 Tableau 4 - Définition du problème

Pour                       ESPRITEC
Type de produit            ROBOT(Hardware) + 2 applications mobiles.
Qui permet                 d’assurer différentes types de fonctionnalités comme
                           l’exploration, la sécurité, la surveillance, la réaction intelligente.
A la différence de         les systèmes embarqués existants, Limité en fonctionnalités,
                           Programmables généralement en langage bas niveau, et ne
                           communique pas avec les moyens disponibles pour tout le
                           monde (Smartphone, Tablet, Navigateur Web).
                                   Tableau 5 - Position du produit




                                                                                                 19
                                                              Spécifications et analyse des besoins
Robot à base d’Android


   2. Besoin fonctionnels
       a. Explorer un lieu
Le ROBOT doit être explorateur, il doit être doté de capacités de déplacement, dans les
différentes directions y inclut les rotations à gauche et à droite, l’utilisateur doit être capable
de le faire déplacer à volonté et à distance.

       b. Récupérer le Streaming Vidéo
L’application de commande doit récupérer le streaming vidéo à partir de la caméra du
ROBOT, pour permettre à l’utilisateur de le visualiser directement.

       c. Détecter un obstacle
Le ROBOT doit être capable de détecter un obstacle à une portée définie, et de l’éviter, en
donnant en temps réel des indications sur la distance qui le sépare de cet obstacle.

       d. Détecter une fuite de gaz
Le ROBOT doit être capable de détecter le niveau de gaz (type à définir après) dans l’air, et
de lancer une alarme lorsqu’il détecte une fuite et un niveau élevé.

       e. Lancer une Alerte en cas d’urgence
Le ROBOT doit être capable d’activer une alerte et d’envoyer des notifications par les
moyens disponibles (Email/SMS) en cas d’urgence.

       f. Avoir l’état du Robot
L’utilisateur sera capable de récupérer un ensemble d’information concernant l’état actuel
du ROBOT, soit le niveau du signal wifi, le niveau de batterie, les 3 axes du ROBOT dans
l’espace pour détecter les inclinaisons, la géolocalisation etc...


   3. Besoin non fonctionnels
       a. Ergonomie
L’application de commande doit respecter les standards de l’interfaçage Homme-Machine,
en offrant à l’utilisateur une interface ergonomique et une bonne expérience d’utilisation.
L’apparence de cette interface est principalement caractérisée par des composants, des
formes, des couleurs et la disposition des éléments.

       b. Contraintes techniques et matérielles
La partie technique et matérielle du ROBOT doit être adaptée aux besoins
du projet et doit être totalement contrôlable et gérable via la partie
logicielle et d’une façon transparente à l’utilisateur.


                                                                                              20
                                                           Spécifications et analyse des besoins
Robot à base d’Android


       c. Contraintes d’utilisation
L’interface utilisateur doit être simple et facile à comprendre pour que l’utilisateur puisse
bénéficier des fonctionnalités du système.

       d. Contraintes de performance
Le temps de réponse de tout le système doit être acceptable pour une utilisation en temps
réel.
Le système doit être stable et sûr.

       e. Automatisation partielle
Le système doit être d’une façon partielle automatisé, dans la
communication ROBOT-Utilisateur et inversement, et dans les différentes
parties de détection.

       f. Maintenabilité
Les différents modules développés du système doivent être faciles à maintenir. Pour cela, le
code doit être lisible et bien structuré. Nous devons respecter les standards de codage
concernant par exemple les noms des attributs et des variables, les noms des méthodes ainsi
que la disposition des commentaires.

   4. Cas d’utilisation généraux
Pour avoir une vue globale sur les grandes lignes de notre système, les spécifications
générales sont synthétisées sous la forme du diagramme UML des cas d’utilisation de la
figure 3-17 : ce schéma résume les actions que peut effectuer l’utilisateur du projet.




                            Figure 14 - Cas d’utilisation généraux du projet

                                                                                                   21
                                                                Spécifications et analyse des besoins
Robot à base d’Android


       Cas d’utilisation 1: Explorer un lieu
L’utilisateur sera capable de déplacer le ROBOT à distance, directement à travers une
interface dédiée équipée avec les composants nécessaires, une certaine communication
avec le ROBOT sera établie au préalable, puis les commandes de déplacements seront
envoyés instantanément au ROBOT, qui se charge de la réception des commandes, du
traitement, et de l’exécution des ordres.

La possibilité d’orienter la caméra du ROBOT pour visionner une certaine zone précise aussi
entre dans cette idée d’explorer des lieux.

       Cas d’utilisation 2 : Récupérer le Streaming Vidéo
Le ROBOT se charge d’enregistrer en temps réel une partie du flux vidéo depuis la caméra,
l’envoyé à l’application de commande, et ainsi de suite.

       Cas d’utilisation 3 : Récupérer la distance à un obstacle
L’utilisateur doit avoir la possibilité de récupérer à tout moment la distance à l’obstacle le
plus proche directement sur l’interface de commande.

Le ROBOT se charge d’activer, stabiliser le capteur et d’exécuter à tout moment cette
fonctionnalité, une possibilité de prendre une décision si la distance calculée est moins d’une
certaine valeur.

       Cas d’utilisation 4 : Afficher le niveau de gaz
L’utilisateur doit avoir la possibilité de récupérer à tout moment le niveau de gaz
directement sur l’interface de commande.

Le ROBOT se charge d’activer, stabiliser le capteur et d’exécuter à tout moment cette
fonctionnalité, et d’être en mode écoute s’il y aura un changement dans le niveau de gaz.

       Cas d’utilisation 5 : Activer une Alerte Email/SMS
En cas d’urgence le ROBOT peut envoyer des alertes SMS/Email à un correspondant et lancer
une alerte sonore

       Cas d’utilisation 6 : Récupérer l’état du ROBOT
L’utilisateur peut recevoir un ensemble d’information depuis le ROBOT :
Afficher l’orientation du ROBOT : cette information est obtenu directement depuis
l’accéléromètre intégré dans le Smartphone du ROBOT, cette information nous donne une
indication sur l’inclinaison du ROBOT, l’activation de la géolocalisation sera aussi disponible
en OUTDOOR.

Afficher l’état du signal WIFI : cette information est primordiale pour l’utilisateur pour garder
la connectivité au ROBOT, une fois le signal est faible, une alerte sera affichée à l’écran
directement et avant la coupure de connexion.

                                                                                             22
                                                          Spécifications et analyse des besoins
Robot à base d’Android

Afficher l’état de la batterie : elle permet à l’utilisateur de connaitre le pourcentage de
batterie du ROBOT et de savoir une approximation du temps restant avant l’alimenter.


IV. Cas d’utilisations Détaillés
Cette section sera consacrée à la présentation des cas d’utilisations principales.


   1. Le 1er Cas- Explorer un lieu




                                   Figure 15 – Cas d’utilisation - Explorer un lieu

Ce diagramme représente les différents aspects de ce que nous appelons exploration des
lieux, que nous présentons dans ce tableau :

            Cas d’utilisation n°             001
            Nom                              Explorer un lieu
             Acteur                          Utilisateur
            Description                      Permettre de déplacer librement le Robot et
                                             explorer un lieu bien déterminé.
            Pré-Conditions                             ROBOT alimenté et activé,
                                                       connexion avec la partie commande
                                                        établie
            Post-Conditions                  N/A
            Scénario nominal                       1.   Commander le ROBOT à distance pour
                                                        le faire déplacer en avant/arrière, le
                                                        faire tourner à gauche/droite
            Scénario Alternatif              N/A
            Exception                        Erreur de connexion :
                                                       Le système s’arrête
                           Tableau 6 - Description du cas d'utilisation Explorer un lieu


                                                                                                          23
                                                                       Spécifications et analyse des besoins
Robot à base d’Android


   2. Le 2ème Cas- Récupérer le Streaming Vidéo




                            Figure 16 - cas d'utilisation - Récupérer le Streaming Vidéo

Ce diagramme représente la fonctionnalité responsable de la récupération du streaming
vidéo, le ROBOT sera équipé d’une caméra pour l’enregistrement vidéo, l’utilisateur doit
avoir la possibilité de récupérer le streaming directement sur l’interface de commande et
savoir exactement ce que le ROBOT filme en temps réel, ci-dessous la description :
           Cas d’utilisation n°              002
           Nom                               Récupérer le streaming vidéo
           Acteur                            Utilisateur
           Description                       Permettre de recevoir le streaming vidéo en temps
                                             réel depuis le ROBOT.

           Pré-Conditions                              ROBOT alimenté et activé,
                                                       connexion avec la partie commande établie
           Post-Conditions                   N/A
           Scénario nominal                        1.   Activer la caméra du ROBOT, et l’envoi du
                                                        streaming
                                                   2.   Activer la réception du streaming
                                                        directement sur l’application de commande
           Scénario Alternatif               N/A
           Exception                         Erreur de connexion :
                                                       Le système s’arrête
                                             Faible bande passante :
                                                     Temps de latence plus grand
                    Tableau 7 - Description du cas d'utilisation Récupérer le streaming vidéo




                                                                                                          24
                                                                       Spécifications et analyse des besoins
Robot à base d’Android


   3. Le 3ème Cas- Détecter un obstacle




                                   Figure 17 - Cas d'utilisation – Détecter un obstacle

Ce diagramme représente la fonctionnalité de détecter un obstacle à proximité et calculer la
distance qui le sépare au ROBOT, on trouve une description de ce cas ci-dessous :
            Cas d’utilisation n°                003
            Nom                                 Récupérer la distance
            Acteur                              Utilisateur
            Description                         Permettre à l’utilisateur d’afficher la distance qui
                                                sépare le robot à un obstacle.
            Pré-Conditions                                ROBOT alimenté et activé,
                                                          Capteur bien fonctionnel
            Post-Conditions                     N/A
            Scénario nominal                          1.   Détecter l’obstacle
                                                      2.   Mesurer la distance
                                                      3.   Eviter l’obstacle à une distance déterminée
            Scénario Alternatif                 N/A
            Exception                           Erreur de connexion :
                                                       Pas de récupération de valeur
                          Tableau 8 - Description du cas d'utilisation Récupérer la distance




                                                                                                             25
                                                                          Spécifications et analyse des besoins
Robot à base d’Android


   4. Le 4ème Cas- Détecter une fuite de gaz




                               Figure 18 - Cas d'utilisation - Détecter une fuite de gaz

Ce diagramme représente la fonctionnalité de calculer le niveau de Gaz dans l’air autours du
ROBOT et détecter s’il y a une fuite ou non, ci-dessous une description détaillée :
            Cas d’utilisation n°              004
            Nom                               Récupérer le niveau de gaz
            Acteur                            Utilisateur
            Description                       Permettre à l’utilisateur d’afficher le niveau de gaz
                                              autour détecté par le ROBOT.
            Pré-Conditions                              ROBOT alimenté et activé,
                                                        Capteur bien fonctionnel
            Post-Conditions                   N/A
            Scénario nominal                        1.   Détecter le niveau de Gaz
                                                    2.   Envoyer le niveau de gaz à l’application de
                                                         commande
                                                    3.   Lancer une Alerte en cas d’urgence
            Scénario Alternatif               N/A
            Exception                         Erreur de connexion :
                                                        Pas de récupération de valeur
                        Tableau 9 - Description du cas d'utilisation récupérer le niveau de gaz




                                                                                                           26
                                                                        Spécifications et analyse des besoins
Robot à base d’Android


   5. Le 5ème Cas- Récupérer l’état du ROBOT




                              Figure 19 - Cas d'utilisation - Récupérer l’état du ROBOT

Ce diagramme présente la fonctionnalité de récupérer un ensemble d’informations et
d’indicateurs qui nous donne plus de détail sur l’état du ROBOT lorsqu’il est actif, ci-dessous
une description détaillé de ce cas:

            Cas d’utilisation n°             005
            Nom                              Récupérer l’état du ROBOT
            Acteur                           Utilisateur
            Description                      Récupérer un ensemble d’information qui représente
                                             les caractéristiques actuelles du ROBOT comme le
                                             niveau du signal, le niveau de batterie etc.
            Pré-Conditions                             ROBOT alimenté et activé,
                                                       Détection de gaz activée
            Post-Conditions                  N/A
            Scénario nominal                       1.   Récupérer automatiquement toutes les
                                                        informations sur l’interface utilisateur.
            Scénario Alternatif              N/A
            Exception                        Pas de service GPS/internet disponible:
                                                      Pas d’envoi d’information
                      Tableau 10 - Description du cas d'utilisation récupérer l'état du ROBOT




                                                                                                          27
                                                                       Spécifications et analyse des besoins
Robot à base d’Android



V. Diagramme de séquence système
Pour avoir une vue séquentielle globale sur les principales fonctionnalités de notre système,
on présente de diagramme de séquence système dans la figure 15 :




                              Figure 20 - Diagramme de séquence système

Ce diagramme montre l’interaction de façon séquentielle entre l’acteur et le système.
Une première connexion doit être établie, une fois la connexion est effectuée, l’utilisateur
peut sélectionner une action à faire, lorsqu’il aura l’interface principale.
La fonctionnalité explorer un lieu consiste à faire déplacer le ROBOT dans les directions
voulues librement que ce soit en avant, arrière ou en tournant à gauche et droite, les
commandes seront envoyées à l’objet Daemon qui va exécuter ces taches directement sur le
ROBOT.
La fonctionnalité de surveiller une zone se base essentiellement sur le fait que l’utilisateur
peut recevoir le streaming vidéo directement sur l’application de commande.
Récupérer la distance à l’obstacle et le niveau de Gaz constituent aussi des fonctionnalités
prêtes à utilisés via des interfaces utilisateurs ou celui-ci peut recevoir la distance au
obstacle ainsi que le niveau de gaz en air, une action sera effectuée si le niveau de gaz ou la
distance atteint un niveau prédéfini.




                                                                                                28
                                                             Spécifications et analyse des besoins
Robot à base d’Android



VI. Diagrammes de Séquence détaillés
Dans cette partie nous présentons une étude dynamique du projet en se basant sur les
diagrammes de séquence détaillés


   1. Diagramme de séquence 1– Déplacer le ROBOT




                         Figure 21 - Diagramme de séquence – Déplacer le ROBOT

Ce diagramme de séquence représente les différentes étapes établies afin de mettre le
ROBOT en mouvement, le système sera divisé en modules actives comme suit :

        Application 1 : elle représente l’application de commande qui représente l’interface
         utilisateur d’une part et le lien sans fil avec le ROBOT d’autre part.
      Application 2 : elle représente l’application résidente qui contrôlera le ROBOT
         réellement elle fait le lien entre l’application de commande et la carte IOIO
      Carte IOIO : elle représente l’interface entre l’application Android 2 et tous les
         composants électroniques, dans ce cas les moteurs DC et les circuits associés qui
         seront détaillés dans le chapitre réalisation
      Moteurs DC : représentent les composants électroniques qui seront
         activés/désactivés via la carte IOIO
L’utilisateur doit entrer l’adresse IP du ROBOT pour pouvoir se connecter, l’application 1
tente d’établir la connexion avec l’application 2, une fois la connexion est établie, il y aura
l’activation de la carte IOIO, et l’interface de commande principale sera affichée à
l’utilisateur.

                                                                                                 29
                                                              Spécifications et analyse des besoins
Robot à base d’Android

L’utilisateur sera capable de commander le ROBOT à l’aide d’un Joystick, le faite de bouger le
Joystick va générer un ensemble de commandes suivant le sens, qui seront envoyées à
l’application 2 qui reçoit ces commandes, les traites, puis les transformer en commandes
compréhensibles par la Carte IOIO, une fois les données sont envoyés à cette carte, elle se
charge de générer des signaux de commandes vers les différents moteurs.

Lorsque l’utilisateur relâche le Joystick, l’application 1 envoi une commande spéciale d’arrêt
à l’application 2 qui envoi de même une commande à la carte IOIO pour arrêter
immédiatement les moteurs.


   2. Diagramme de séquence 2– Surveiller un lieu




                          Figure 22 - Diagramme de séquence – Surveiller un lieu

Ce diagramme de séquence représente les différentes étapes et possibilités pour assurer la
fonctionnalité de surveiller un lieu, le système sera divisé en modules actives de la même
façon comme dans le diagramme précédent.

La partie connexion est nécessaire pour pouvoir établir la suite des actions.

L’utilisateur sera capable d’activer la caméra du Smartphone situé dans le ROBOT, suite à
cette action l’application 2 se charge de lancer la caméra et d’envoyé le streaming en retour


                                                                                                   30
                                                                Spécifications et analyse des besoins
Robot à base d’Android

à l’application 1 dans laquelle l’utilisateur peut visualiser ce flux directement dans l’interface
de commande.

L’utilisateur peut aussi orienter la caméra suivant deux axes, Pan(gauche/droite) et
Tilt(haut/bas), ces deux fonctions seront bien accessible à tout moment via l’interface de
commande à l’aide de deux composants sous forme de ‘SeekBar’ qui seront détaillés dans le
chapitre réalisation, la manipulation de ses deux composants génèrent des commandes qui
seront envoyés à l’application 2 qui à son tour traite ces commandes et l’état actuel de la
caméra et décide ou non et avec quel angle de changer l’orientation de la caméra.

Le changement de l’orientation de la caméra peut s’effectué aussi bien dans le cas où le
ROBOT est en arrêt que lorsqu’il est en mouvement.

Comme option l’utilisateur peut prendre des snapshots directement via la caméra du
ROBOT, et ces photos seront sauvegardées dans un emplacement spécifique dans le
Smartphone 2.


   3. Diagramme de séquence 3– Détecter un Obstacle




                         Figure 23 - Diagramme de séquence – Détecter un Obstacle

Ce diagramme de séquence montre le déroulement de la détection d’obstacle assurée par le
ROBOT, le système sera divisé en modules actives de la même façon comme dans le
diagramme précédent.


                                                                                                   31
                                                                Spécifications et analyse des besoins
Robot à base d’Android

La partie connexion est nécessaire pour pouvoir établir la suite des actions.

L’utilisateur aura la possibilité d’afficher la distance qui sépare le ROBOT au premier obstacle
sur son chemin, une commande sera envoyé à l’application 2 qui se chargera d’activer le
capteur de proximité utilisé via la carte IOIO, le capteur donc va être en fonction il va
envoyer les informations sur la distance calculée à la carte IOIO qui va à son tour traiter et
envoyer ces informations à l’application 2.

Au niveau de l’application 2, elle va envoyer ces informations à l’application 1 qui va
visualiser des valeurs compréhensibles pour l’utilisateur, selon les valeurs reçues par
l’application 2 un certain traitement va s’effectuer pour décider si elle va réagir ou non, dans
le cas où ces valeurs sont dans une certaine portée qui sera détaillée dans le chapitre
réalisation, elle va ordonner à la carte IOIO pour exécuter une ou un ensemble d’action pour
éviter un choc avec l’obstacle, les moteurs vont changer la direction vers la droite ou gauche.

Le type de capteur de proximité et son fonctionnement vont être détaillés dans le chapitre
réalisation.


     4. Diag.de séquence 4 – Détecter une fuite de Gaz




                      Figure 24 - Diagramme de séquence – Détecter une fuite de Gaz

Ce diagramme de séquence montre le déroulement de la détection d’une fuite de gaz
assurée par le ROBOT, le système sera divisé en modules actives de la même façon comme
dans le diagramme précédent.


                                                                                                  32
                                                               Spécifications et analyse des besoins
Robot à base d’Android

 La partie connexion est nécessaire pour pouvoir établir la suite des actions.

 L’utilisateur aura la possibilité d’afficher le niveau de gaz dans l’air dans la pièce où se situe
 le ROBOT, une commande sera envoyé à l’application 2 qui se chargera d’activer le détecteur
 de gaz via la carte IOIO, le détecteur donc va être en fonction il va envoyer les informations
 sur la concentration du gaz calculée dans l’air à la carte IOIO qui va à son tour traiter et
 envoyer ces informations à l’application 2.

 Au niveau de l’application 2, elle va envoyer ces informations à l’application 1 qui va
 visualiser des valeurs compréhensibles pour l’utilisateur, selon les valeurs reçues par
 l’application 2 un certain traitement va s’effectuer pour décider si elle va réagir ou non, dans
 le cas où ces valeurs sont au-delà de la valeur normale et présentent un danger, elle va
 ordonner à la carte IOIO pour exécuter une Alerte qui sera envoyé directement à
 l’utilisateur. Le type de gaz et le fonctionnement du détecteur vont être détaillés dans le
 chapitre réalisation.


VII. Maquettes
        1. Maquette du ROBOT




                                     Figure 25 - Maquette du ROBOT

 Suivant notre besoin essentiel et notre vision sur le produit à réaliser, nous dessinons
 grossièrement une maquette du futur ROBOT. Pour ce faire nous modélisons deux vues pour
 aboutir à la figure 16.
 Ces deux vues présentent la squelette générale du ROBOT, composée d’une tête qui va

                                                                                                 33
                                                              Spécifications et analyse des besoins
Robot à base d’Android

contenir essentiellement un Smartphone Android équipé d’une caméra, une connectivité
Wifi, un accéléromètre, un dispositif GPS, et qui constitue le cerveau du ROBOT et la partie
intelligente contenant la deuxième application qui assure la réception des commandes
issues de l’application de commande, et assure aussi l’interfaçage avec tous ce qui est
électronique pour exécuter ces commandes convenablement, l’application est responsable
de la capture vidéo à partir de la caméra, la capture des différentes signaux à partir des
différents composants du ROBOT, le traitement de ces informations et l’exécution des
actions appropriés.
La tête du ROBOT est liée au corps via un mécanisme mobile qui permettra un certain degré
de rotation et d’inclinaison qu’on détaillera dans le chapitre Réalisation.
Le corps du ROBOT est composé d’une plateforme de déplacement composée
essentiellement de 4 roues avec deux chaines, une partie électronique qui va contenir la
carte IOIO, les capteurs, l’alimentation et les autres circuits nécessaires.

       2. Maquette de l’application de commande




                 Figure 26 - Maquette de l’interface principale de l’application de commande

L’application de commande se présente sous la forme d’une interface principale, avec des
widgets, boutons et autres contrôles découpée en cinq zones organisées comme suit :

   En haut un menu qui contient 4 Tabs représentants un Tab pour le niveau de batterie, un
    Tab pour la distance au premier obstacle, un Tab qui affiche le niveau de gaz et un autre
    Tab pour afficher les coordonnées d’orientation du ROBOT dans l’espace.

                                                                                                     34
                                                                  Spécifications et analyse des besoins
Robot à base d’Android

   À gauche deux bulles qui permettent à l’utilisateur de savoir le niveau du signal et le
    niveau de la luminosité si elle est disponible, un Pad/Joystick principal de commande qui
    va permettre de déplacer le ROBOT.
   Au milieu une grande interface qui représente un afficheur du streaming Vidéo reçu à
    partir du ROBOT.
   À droite, deux éléments qui affichent les alertes qui correspondent à la faiblesse du
    signal Wifi ou à une erreur de connexion avec le ROBOT, un Widget qui donne une
    indication sur la vitesse du ROBOT.
   En bas, un ensemble de commande pour activer/désactiver le Streaming vidéo, le
    déplacement de la caméra, le flux audio

Pour donner un aspect familier à notre application de commande nous avons choisi
d’adopter le « look and fée» d’une sorte d’interface de jeu ou d’un tableau de bord ou
panneau de commande unique qui va contenir la quasi-totalité des fonctionnalités.


Conclusion
La spécification des besoins nous a permis d’avoir une vision plus claire du sujet et une
compréhension plus profonde des tâches à réaliser. Elle mène également à prévoir les
problèmes à rencontrer et chercher les solutions permettant de les contourner.

Nous avons essayé tout au long de ce chapitre de bien présenter les besoins fonctionnels et
non fonctionnels du sujet et les différents scenarios d’utilisation de l’application. Ces
scenarios vont être la base sur laquelle nous allons concevoir et réaliser notre projet, ces
deux phases seront détaillées dans les deux chapitres qui suivent.




                                                                                          35
                                                       Spécifications et analyse des besoins
Robot à base d’Android



4. CONCEPTION

Introduction
Nous consacrons ce chapitre à la présentation de l’architecture et de la conception de notre
projet. Nous commençons par décrire l’architecture de notre application principale à travers
les différentes vues dynamiques à travers le diagramme de séquence objets, ainsi qu’un
diagramme d’activités global et un diagramme de de classe qui va jeter un coup d’œil sur les
différentes entités du projet. Ensuite, nous décrivons la conception de la structure technique
du ROBOT, par plusieurs schémas explicatifs, représentant les différents composants
matériels qui seront choisis et bien détaillés dans le chapitre suivant.


 I. Diagramme de séquence objets
Pour avoir une vue séquentielle globale sur les principales fonctionnalités de notre système,
on présente de diagramme de séquence système dans la figure 27 :




                              Figure 27 - Diagramme de séquence objets



                                                                                            36
                                                                                   Conception
Robot à base d’Android

Ce diagramme montre l’interaction de façon séquentielle entre les 6 Objets principaux du
scénario et l’acteur, ces objets représentent les classes principales de l’application de
commande et les classes principales de l’application Daemon coté ROBOT.
Une première connexion doit être établie entre les deux applications, pour que l’utilisateur
puisse sélectionner une action à faire via l’interface qui sera affichée.


II. Diagramme d’activités
Dans cette partie nous présentons le diagramme d’activité lié à tout le système




                                  Figure 28 - Diagramme d'activités

Selon ce diagramme on remarque que notre système est multitâche, il offre un ensemble de
possibilités qui sont tous accessible via une seule interface principale de commande, qui est
le moyen de communication entre l’utilisateur et le ROBOT.

L’interface de commande est toujours en action que ce soit lors de réception des données
ou lors d’envoi des commandes ou même lorsque elle est en écoute car à tout moment elle
assure la connectivité au ROBOT et reste prête à n’importe quel action ou notification

L’utilisateur sera capable de commander le ROBOT à l’aide d’un Joystick, le faite de bouger le
Joystick va générer un ensemble de commandes suivant le sens, qui seront envoyées à
l’application 2.




                                                                                           37
                                                                                  Conception
Robot à base d’Android



III. Diagramme de Classe
On présente ici le diagramme de classe du système développé :




                                   Figure 29 - Diagramme de Classe

Le diagramme de classes est un schéma statique. Il représente le point de vue statique d'une
application, il est non seulement utilisée pour visualiser, décrire et documenter les différents
aspects d'un système, mais aussi pour la construction de code exécutable de l'application
logicielle. Il décrit les attributs et les opérations d'une classe et aussi les contraintes
imposées au système.

Le diagramme de classe de notre projet montre deux grandes parties qui représentent
chacune une application séparée.

La première application nommée application de commande est celle qui va être disponible
pour l’utilisateur pour commander et gérer le ROBOT, une de ses classes importantes est la
classe Client_Thread qui va se charger d’établir et de maintenir la connectivité avec sa
correspondante dans la deuxième application Server_Thread.

La deuxième application nommée Application Daemon pour dire qu’elle est résidente dans
le ROBOT et elle fonctionne sans intervention humaine directe, elle fonctionne en

                                                                                            38
                                                                                   Conception
Robot à base d’Android

permanence dès que le ROBOT est mis sous tension. Elle se compose d’un nombre plus
grand de classes parmi lesquelles on cite la classe IOIO_Thread_Connection qui se charge de
la communication avec la carte IOIO en utilisant la bibliothèque IOIO Lib.


Conclusion
La conception détaillée nous a permis d’avoir une vision plus précise sur le sujet et une
compréhension plus profonde des tâches à réaliser. Elle mène également à prévoir les
besoins matérielles et logicielles nécessaires pour atteindre l’objectif.

Nous avons essayé tout au long de ce chapitre de bien présenter les différents diagrammes
conceptuels du projet. Ces diagrammes vont être la base sur laquelle nous allons réaliser
notre projet, cette phase sera détaillée dans le chapitre suivant.




                                                                                        39
                                                                               Conception
Robot à base d’Android



5. REALISATION

Introduction
Ce chapitre constitue le dernier volet du rapport de notre projet de fin d'études. Il a pour
objectif d'exposer le travail achevé. Pour ce faire, nous avons divisons la réalisation en deux
grandes parties, la réalisation logicielle qui va contenir tous le travail effectué au niveau de
développement des deux applications, la deuxième partie est la réalisation matérielle qui va
décrire les différentes phases de construction du ROBOT. Enfin, nous clôturons ce chapitre
par la présentation du chronogramme des taches réalisées et des défis relevés.


 I. Réalisation Logicielle
Dans cette partie nous allons présenter l’environnement du travail, les différentes phases de
développement des applications, et le résultat obtenu.


1. Environnement de travail
Chaque développeur doit choisir un environnement de développement constitué
généralement par un IDE, et quelques autres outils et logicielles.

   1. Eclipse
Eclipse est un environnement multi-langage de développement comprenant un
environnement de développement intégré (IDE) et un plug-in extensible système. Il est écrit
principalement en Java et peut être utilisé pour développer des applications en Java et, par
le biais de divers plug-ins, autres langages de programmation, y compris Ada, C, C + +,
COBOL, Perl, PHP, Python, Ruby.

   2. SDK Android
Android SDK est indispensable pour développer sous
Android, c’est un kit de développement crée pour être
intégré dans un IDE, il offre un ensemble d’outils nécessaire
pour le développement et le test comme le ADT, le
compilateur, l’émulateur, le DDSM …                                      Figure 30 - Logo Eclipse


   1. IOIO Lib
IOIO Lib est une bibliothèque Android spéciale crée par le constructeur de la carte IOIO, qui
permet à l’application Android de contrôler la carte IOIO. Elle expose un ensemble
d'interfaces Java, couvrant les différentes fonctions de la carte. Elle offre un ensemble de

                                                                                                 40
                                                                                       Réalisation
Robot à base d’Android

classes et méthodes qui servent à communiquer avec les différents pins de la carte, d’autres
méthodes servent à changer la fréquence ou la pulsation d’un tel pin. Lorsqu’on génère
l’application, IOIOLib s’intègre dans la cible .apk, afin que l’application soit autonome et ne
nécessite aucune installation supplémentaire sur le Smartphone Android qui l'exécute.

    2. Fritzing1
Fritzing est un logiciel libre d'édition de circuit électronique ou circuit
imprimé. Il est possible de compléter sa bibliothèque de composants.
Chaque composant est défini à l'aide de 3 éléments : l'image du composant,
qui peut être réalisée à partir d'une image, le symbole du composant et la
représentation du composant sur le circuit imprimé (nombre et position Figure 31 - Logo Fritzing
des pistes).

Tout en étant un logiciel d'apparence simpliste, il possède malgré tous des fonctions
d'exportation vers Eagle et Gerber, ainsi que les typon au format PDF et SVG. On va l’utiliser
pour schématiser les différents montages du projet, ainsi que le montage complet de tout le
ROBOT.

    3. Photoshop CS5
Photoshop est un logiciel de retouche, de traitement et de dessin assisté par
ordinateur édité par Adobe. Il est principalement utilisé pour le traitement
de photographies numériques, mais sert également à la création d’images et
de design. On l’utilise énormément dans notre application de Figure 32 - Logo Photoshop
commande, pour créer presque tous les éléments graphiques allant du
Joystick, les Tab personnalisés, les éléments flottant jusqu’au design général de l’interface et
des bordures ainsi les autres besoins comme le SplashScreen et l’icône.

    4. EGit (plugin) 2
Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé
par Linus Torvalds, et distribué selon les termes de la licence publique générale
GNU version 2. EGit est une interface écrite en Java, puis une extension git pour
Eclipse, elle permet toutes les opérations de SVN.

    5. Dropbox 3                                                                    Figure 33 - Logo GIT

Dropbox est un service, sécurisé, de stockage et de partage
de fichiers dans le Cloud.

2. Développement                                                               Figure 34 - Dropbox logo


On va diviser cette section en deux parties chacune corresponde à une application, on va


1
  http://fritzing.org/
2
  http://www.eclipse.org/egit/
3
  http://www.dropbox.com/

                                                                                                  41
                                                                                        Réalisation
Robot à base d’Android

détailler les phases de développement de chacune élément par élément étape par étape.

    1. Application de commande
Cette Application représente l’interface de commande principale pour l’utilisateur, à travers
elle il peut contrôler et gérer le ROBOT.

     Phase 1 – Interface de connexion
Cette interface représente le moyen avec lequel
l’utilisateur peut insérer l’IP du ROBOT ainsi qu’un mot de
passe en cas ou le ROBOT est sécurisé, une fois les
paramètres sont insérer un clic sur le bouton OK va créer
une socket réseaux de type TCP qui va tenter de trouver
cette IP, une fois l’IP est trouvée et les trames sont
envoyées l’autre application va traiter le mot de passe s’il
                                                                     Figure 35 - Interface de connexion
est validé elle va ouvrir un canal de communication sur le
port 81, et elle va répondre par un message de confirmation, ce message va permettre
d’afficher l’interface de commande à l’utilisateur et le laisser contrôler le ROBOT. Dans
l’autre cas la fenêtre de connexion s’affiche une autre fois pour signaler que les paramètres
sont incorrects.
     Phase 2 – Système de déplacement
Cette fonctionnalité de base est assurée à l’aide d’un Joystick
conçu spécialement pour cette tâche, il est composé d’un élément
mobile qui sera sensible à la touche, cet élément peut varié dans
un rayon limité par rapport au centre fixe, le centre de cet
élément est repéré par un point, chaque point est caractérisé par
un x et un y, ils représentent deux coordonnées par rapport au
centre, selon leurs valeurs, une variable qui s’appelle commande      Figure 36 - Joystick de
                                                                          déplacement
initialisé à STOP va contenir une certaine chaine de caractères de
cette liste : NORD, NORD-EST, EST, SUD-EST, SUD, SUD-OUEST, OUEST, NORD-OUEST et
STOP.
Une fois la variable change de valeur elle sera immédiatement envoyée via un canal UDP à
l’application au côté ROBOT.
     Phase 3 – Streaming de la caméra
Dans l’interface principale au milieu on trouve une
grande zone dédiée pour l’affichage du flux vidéo issu
de la caméra du ROBOT, le principe est plutôt
compliqué, l’application situé au niveau du ROBOT
lance la caméra en mode visualisation et pas
enregistrement, une fois la caméra est en fonction,
l’application fais une capture successive d’images et
                                                                   Figure 37 - Zone d'affichage du streaming

                                                                                                      42
                                                                                            Réalisation
Robot à base d’Android

enregistre cet ensemble d’images dans un "buffer" comme le cas d’une vidéo classique, pour
envoyer tous ces images d’une manière fluide et pour ne pas encombré le canal déjà établie
entre les deux partie, on a trouvé une solution qui se résume dans la création d’un petit
serveur Web au niveau de l’application Daemon, ce serveur va fonctionner sur le port 80
pour ne pas augmenter le débit sur l’autre port déjà ouvert, il assure la disponibilité d’une
page contenant une image pris chaque 0.2 sec à partir du buffer, et de l’autre part
l’application de commande va récupérer cette image du serveur et rafraichir la zone
d’affichage avec une fréquence supérieure à la fréquence d’envoi, avec cette méthode en
gagne en bande passante , aussi on gagne au niveau de la rapidité d’exécution des
commandes sans avoir penser à la taille du flux reçu.
    Phase 4 – Mécanisme d’orientation de la caméra
Cette fonctionnalité permet de tourner la caméra (Smartphone)
à gauche ou à droite, l’incliner en haut ou en bas, l’application
de commande comporte 2 SeekBars, une horizontale située en
bas de la zone de streaming, et une verticale située à droite de
la même zone, elles sont directement opérationnelles par
l’utilisateur qui peut déplacer sont doit directement pour
tourner la caméra dans la direction voulue, une fois la valeur de      Figure 38 - SeekBars

l’un des SeekBars change, une commande sera directement envoyée au ROBOT en indiquant
la valeur de changement selon cette valeur le résultat sera un mouvement angulaire de la
caméra.
    Phase 5 – Niveau de Gaz
Pour avoir le niveau de gaz actuel, nous avons développé cette
interface qui reçoit d’une façon continue les valeurs depuis le
capteur de gaz situé dans le ROBOT et à travers l’application
Daemon et la carte IOIO, les valeurs sont comprises entre 0 et 700
ppi, un indicateur du niveau dangereux indique si la valeur actuelle      Figure 39 - Interface de détection
                                                                                        de Gaz
est acceptable ou non.
    Phase 6 – Distance à l’obstacle
Pour avoir la distance qui sépare le ROBOT au premier obstacle,
nous avons développé cette interface qui reçoit d’une façon
continue les valeurs depuis le détecteur de proximité situé dans
le ROBOT et à travers l’application Daemon et la carte IOIO, la
distance est affichée en centimètre.                                   Figure 40 - Interface de détection
    Phase 7 – Pourcentage de la batterie                                          de distance

Cette fonctionnalité est réalisée à travers un circuit qui va
calculer le pourcentage de la batterie restant ainsi que la valeur
de la batterie du Smartphone situé dans le ROBOT, et ces valeurs
sont reçues et affichées dans l’application de commande, on
trouve aussi une estimation sur la durée restante.                      Figure 41 - Interface d'affichage
                                                                               d'état de Batterie

                                                                                                 43
                                                                                       Réalisation
Robot à base d’Android


    Phase 8 – Notifications de connexion
Une fois on récupère l’état du signal wifi du ROBOT, on peut juger est ce
que ce signal est bien acceptable pour maintenir la connexion ou non, dans
le cas où ce signal devient faible une notification d’alerte s’affiche en
indiquant un Warning, dans le cas où l’application détecte que la connexion
wifi avec le ROBOT est coupée, une nouvelle alerte s’affiche indiquant une
erreur, ces fonctions sont réalisées à travers des Thread qui tourne en
Background d’une façon continue.                                            Figure 42 - Notification de
                                                                                           connexion
    Phase 9 – Orientation
L’orientation du ROBOT est effectuée en recevant les 3 indicateurs de
l’accéléromètre du Smartphone du ROBOT, un certain calcul se fait et on aura
exactement ces valeurs, on peut juger sur la stabilité du ROBOT, ou
l’inclinaison du terrain à travers ces indicateurs.                                         Figure 43 - Tab
                                                                                             d'orientation
    Phase 10 – Caméra Move / ROBOT Speak
Caméra Move est une fonctionnalité optionnelle qui permet une deuxième méthode pour
orienter la caméra du ROBOT directement à travers les indicateurs accéléromètre du
Smartphone de commande, elle est encore en phase bêta mais elle peut servir pour les tests.
ROBOT Speak est une fonctionnalité optionnelle, elle est une sorte de Talkie-Walkie entre le
Smartphone de l’utilisateur et le ROBOT, une fois activée l’utilisateur peut parler
directement au Smartphone, ce dernier à l’aide du microphone va récupérer la parole et
l’application va envoyer ce flux audio vers l’autre application, un Haut-parleur au niveau du
ROBOT servira pour diffuser le son.
    Phase finale – Application Complète
Ci-dessous les interfaces finales de l’application de commande :




                                 Figure 44 - écran 1 - Interface de connexion




                                                                                                    44
                                                                                          Réalisation
Robot à base d’Android




                             Figure 45 - écran 2 - Interface de commande


   2. Application Daemon (démon)
Cette Application représente la partie intelligente du ROBOT, elle offre tout un système
autonome de contrôle, basée généralement sur des activités héritées de Thread, et d’autres
hérités de Runnable, ce qui l’application prête à n’importe que action que ce soit provenant
de la partie commande via des trame TCP ou UDP ou de la part des composants
électroniques via la carte IOIO, nous détaillons ci-dessous les différentes phases de
réalisation de cette application.

    Phase 1 –connexion
C’est la deuxième partie de la même fonctionnalité de l’application 1, dès la mise sous
tension du ROBOT l’application affiche son adresse IP, et ouvre un canal réseau d’écoute
pour attendre l’autre application. Une fois la requête de demande de connexion arrive,
l’application vérifie le mot de passe, et répond par une requête de confirmation, et ouvre un
nouveau canal de communication dédié à la réception des commandes sur le Port spécifique
81, toutes les commandes reçues sont envoyées à une unité qui valide, traite et achemine
les actions.
    Phase 2 – Streaming vidéo
Nous avons déjà expliqué cette partie dans la première application, il reste à indiquer que
cette application détecte les qualités disponible des images prises par la caméra, et affecte
une qualité minimale mais pas inférieur à 320x480, pour que le traitement et le transfert
sera un peu rapide et on aura un minimum de temps de latence sans avoir une différence
niveau qualité d’affichage.
Pour le serveur Web attribué dans l’application, il ouvre un canal de communication
accessible depuis n’importe quel adresse du réseau, donc si on possède l’adresse IP du
ROBOT, on peut suivre le streaming tout comme la personne qui commande le ROBOT.


                                                                                               45
                                                                                     Réalisation
Robot à base d’Android

Les images successives sauvegardées dans un Buffer auront une taille maximale de 1024 Ko
soit à peu près 10 images compressées de type JPEG, une fois le Buffer est plein il y aura
automatiquement un écrasement de l’image la plus ancienne et ainsi de suite.
    Phase 3 – Déplacement du ROBOT
Une fois l’utilisateur déplace le joystick dans une direction, l’application daemon reçoit une
commande spécifique, cette commande est traitée pour distinguer est ce que il s’agit d’un
mouvement vers l’avant (NORD) ou vers la droite (EST) ou autre … une fois la commande est
identifiée, une suite d’action seront attribuées à chacun des 4 moteurs, suivant ce tableau :
                        Moteur 1           Moteur 2          Moteur 3             Moteur 4
                     (avant -droit) (avant -gauche) (arrière -droit) (arrière - gauche)
NORD                   Sens direct        Sens direct       Sens direct          Sens direct
NORD-EST                 STOP             Sens direct          STOP              Sens direct
EST                   Sens Inverse        Sens direct      Sens Inverse          Sens direct
SUD-EST                  STOP            Sens Inverse          STOP             Sens Inverse
SUD                   Sens Inverse       Sens Inverse      Sens Inverse         Sens Inverse
SUD-OUEST             Sens Inverse          STOP           Sens Inverse            STOP
OUEST                 Sens Inverse        Sens direct      Sens Inverse          Sens direct
NORD-OUEST             Sens direct          STOP            Sens direct            STOP
                                Tableau 11 – Commande des Moteurs

Pour ce faire l’application passe ces nouvelles commandes à une unité qui va les transformer
en des ordres compréhensibles par la carte IOIO, du genre : activer tel Pin avec tel courant
etc...
RQ : suivant le tableau résultant et suivant des tests effectués, on peut utiliser juste deux
moteurs pour déplacer le ROBOT, le M1 et le M2, on aura le même résultat mais une petite
baisse de vitesse, par contre on gagne dans la consommation d’énergie, ça reste un choix
pour le client final d’utiliser tant de moteurs qu’il en a besoin.
    Phase 4 –Orientation de la caméra
Ce mécanisme est assuré par deux Servos Moteurs avec un bras constitué de deux ‘Braquets’
(supports métalliques), un pour assurer le PAN (panorama) et l’autre le TILT(inclinaison), une
fois que l’application reçoit la commande elle traite la valeur, et la change en fréquence
qu’elle l’envoi à la carte IOIO pour pouvoir commander le Servo Moteur voulu avec la valeur
adéquate.
Le premier Servo Moteur possède un angle d’action égale à 200° ce qui nous permet
d’effectué une orientation de gauche à droite facilement, même on peut tourner avec un
angle de 20° vers l’arrière.
Le 2ème Servo Moteur possède un angle d’action plus limité de 120°, vu qu’il y aura des
contraintes mécaniques dans son mouvement, il nous permet de s’orienter vers le Haut, vers
l’avant (position par défaut) et une petite inclinaison vers le bas de 20°.
    Phase 5 – Détection de gaz
La détection du Gaz s’effectue à l’aide d’un module qu’on a développé spécialement pour ça,
il s’occupe de l’écoute active du Pin de la carte IOIO attaché au détecteur de Gaz, aussi il se

                                                                                            46
                                                                                  Réalisation
Robot à base d’Android

charge de gérer la stabilité du capteur lors du démarrage, une fois le capteur détecte un
niveau de gaz supérieur à la normale, il génère un signal électrique analogique, qu’il se passe
par la carte IOIO, et selon sa puissance l’application traite cette information et donne
directement les bonnes valeurs à la partie d’envoi qui se charge d’envoyer ces valeurs à
l’application de commande où il seront directement visible dans la zone dédiée pour ça.
    Phase 6 – Détection d’obstacles
La détection d’un obstacle s’effectue aussi à l’aide d’un module développé spécialement
pour ça, il fait de l’écoute active du Pin de la carte IOIO attaché au capteur de proximité, le
capteur choisit est un capteur Ultra-son il envoi et reçoit un signal ultrasonique chaque
période (de l’ordre de 20 ms), selon la rapidité de la réception il estime avec une précision
de 1 cm la distance qu’il le sépare à l’obstacle, il génère un signal électrique analogique, qu’il
l’envoi à la carte IOIO, l’application traite cette information et donne directement des
valeurs compréhensibles à la partie d’envoi qui se charge d’envoyer ces valeurs à
l’application de commande où il seront directement visible dans la zone dédiée pour ça.
Une fois la distance détectée est inférieure à une valeur prédéfinie (10 cm), le ROBOT
s’arrête et change de direction vers la droite/gauche, ce mécanisme intelligent permet
d’éviter les obstacles proches. On peut bien entendu exécuter n’importe quel action de type
lancer une alarme ou suivre un certain trajet etc…
    Phase 7 – Récupération d’état de Batterie
Pour récupérer l’état de la batterie du ROBOT, on a recourt à un circuit spécial qui détecte le
pourcentage restant vis-à-vis la capacité totale, cette valeur est envoyé à la carte IOIO est
sera lu à partir de l’application Daemon chaque intervalle de temps (5 min) on ajoute à cette
valeur la valeur de la batterie du Smartphone, puis on envoie les deux à l’application de
commande qui se charge de les afficher et d’estimer la durée restante.
    Phase 8 – Orientation du ROBOT
On récupère les valeurs données par l’accéléromètre et la boussole (si elle est disponible)
puis l’application traite ces informations avant de les envoyées à l’application de commande
    Phase 9 – Envoi d’alertes
Dans le cas où on détecte un niveau de gaz élevé, l’application se charge de lancer une
nouveau module, ce dernier il effectue une procédure pour lancer une alerte, il envoie un
SMS spécial/Mail qui contient un message prédéfini alertant l’utilisateur qu’il y a une fuite
de gaz, et il le propose d’appeler l’un des numéros d’urgence, une alerte SONORE sera aussi
déclenchée.
    Phase finale – Application Complète
Après assemblage de tous ces fonctions nous aurons une application complète prête à
opérer, cette application ne nécessite pas une interface conviviale avec des beau design vu
qu’elle interagit avec un ROBOT est une autre application à distance, mais au minimum elle
doit être compréhensible.




                                                                                               47
                                                                                     Réalisation
Robot à base d’Android




                              Figure 46 - Interface de l'application Daemon



II. Réalisation Matérielle
La réalisation matérielle du ROBOT comporte plusieurs phases, on va commencer par
présenter un peu l’environnement, le matériel requis et les outils utilisés, puis on détaille
tous les phases de construction jusqu’au aboutir à un résultat final.


   1. Environnement de travail
Pour construire un ROBOT on doit avoir un ensemble d’outils et on aura besoin d’un endroit
adéquat pour le faire, pour ce faire on liste ci-dessous ces différents nécessités.
    Atelier : nous avons utilisé pendant les premières phases le laboratoire
       d’électromécanique d’ESPRIT, où on a trouvé les équipements et les outils pour
       pouvoir commencer nos tests, après on a décidé de changer la stratégie et d’avoir
       nos propres outils et équipements et migrer vers le Labo ESPRIT-Mobile.
    Outils & équipements : puisque notre ROBOT se compose d’une partie électronique
       donc on aura besoin des outils de base pour l’assemblage, soudure, la connexion
       filaire, les différentes tests électriques, voici une liste complète : Fer à souder,
       multimètre, Transformateur de courant, un cutter, des piles, des connecteurs (pin
       strip), des fils conducteurs, maquette de test, des diodes de test, des résistances,
       toile isolante, …


   2. Composants matériels
Notre ROBOT a besoin d’un ensemble de composants pour pouvoir voir le jour, on liste ici
tous les composants principaux pour construire le ROBOT, leurs spécification technique:


                                                                                                  48
                                                                                        Réalisation
Robot à base d’Android


  Un Smartphone Android (Huawei GAGA)
La première chose indispensable à avoir pour construire ce ROBOT, est un Smartphone,
sur lequel il y aura l’OS Android qui sera notre milieu d’exploitation et de développement
de l’application qui va gérer tout le ROBOT, aussi on va exploiter tous les autres
composants du Smartphone comme suit :
        o La carte WIFI jouera le rôle de connectivité sans fil du ROBOT
        o La connectique Bluetooth, sera un autre moyen exploitable pour se connecter
             au ROBOT
        o La carte d’acquisition GSM + puce : nous les exploitant en envoyant les SMS
             d’alerte à n’importe que numéro, on peut aussi avoir la possibilité d’appeler
             ou d’envoyer des commandes SMS pour commander le ROBOT
        o La carte 3G : on peut connecter le ROBOT à Internet directement, on doit ainsi
             penser au temps de latence, et la bande passante
        o L’écran : il servira d’interface pour afficher des notifications visuelles, ou autre
             informations
        o Microphone : Le ROBOT sera capable d’écouter son entourage, enregistrer est
             diffuser, on peut avoir un ROBOT détecteur de son, ou même un ROBOT qui
             réagit à des commandes vocales.
        o Haut-parleur : il servira comme une sortie sonore du ROBOT, un tas de
             possibilités existe
        o L’accéléromètre : nous l’utilisant dans la récupération de l’orientation du
             ROBOT dans l’espace
        o La Boussole : servira à indiquer l’orientation selon le Nord du ROBOT
        o GPS : est nécessaire pour avoir la localisation de notre ROBOT
        o La carte SD/le stockage interne : servira énormément pour la sauvegarde des
             données volumineuses comme les photos, vidéos, son et toute autre
             information générée ou traitée par le ROBOT
Nous avons choisi d’utiliser le Huawei GAGA, il tourne sous Android 2.2, il comporte
toutes les spécifications requises pour le projet ainsi qu’il possède deux avantages
majeures, le poids et les dimensions sont les plus faibles, aussi le prix il est le moins cher
du marché (environ 199 DT soit 130 $) – [voir annexe pour les spécifications techniques
complètes]




                                   Figure 47 - Huawei Gaga


                                                                                           49
                                                                                 Réalisation
Robot à base d’Android


  Une carte IOIO
La carte IOIO est notre grand secret, elle est la relation entre l’OS Android (SOFT) et
l’électronique (HARD) (voir Chapitre 2.II)




                                      Figure 48 - Carte IOIO

  Moteurs + Roues (ROVER5)
Pour pouvoir se déplacer le ROBOT a besoin de 4 Moteurs + 4 Roues, après une recherche
dans les constructeurs robotique nous avons trouvé ce modèle qui s’appelle ROVER5 c’est
un châssis équipé de 4 moteur DC avec deux chaines en plastiques qui couvre les 4 bases
de Roues, il servira comme base du ROBOT




                             Figure 49 - Plateforme de déplacement

CARACTÉRISTIQUES
 Tension nominale moteur: 7,2 V
 Blocage du moteur actuel: 2.5A
 Couple de sortie d'axe: 10Kg/cm
 Rapport Boîte de vitesse: 86.8:1
 Type de codeur: Quadrature
 Résolution du codeur: 1000 changements d'état par 3 tours de roue
 Vitesse: 1Km/h
  Motor Driver (TB6612FNG)
C’est un petit circuit imprimé qui est nécessaire pour pouvoir commander les 4 Moteurs
DC simultanément et via la même source d’alimentation




                                    Figure 50 - Motor Driver




                                                                                         50
                                                                               Réalisation
Robot à base d’Android

CARACTERISTIQUES
   Tension d'alimentation: VM = 15V max, VCC = 2.7-5.5V
   Courant de sortie: Iout = 1,2 (en moyenne) / 3.2A (crête)
   Le contrôle Standby pour économiser l'énergie
   CW / CCW / court freinage / arrêt /modes de commande de moteur
   Built-in circuit de coupure thermique et le circuit de détection de basse tension
   Toutes les broches de la TB6612FNG espacées de 0,1 "
   Condensateurs de filtrage sur les lignes d'approvisionnement
  Capteur Ultrason(SEN10737P)
Comme capteur de proximité on a choisi d’utiliser le capteur ultrason SEN10737P, Ce
capteur Grove-ultrasons est un module sans contact de mesure de distance qui est
compatible avec le système Grove. Il est conçu pour une utilisation facile dans les projets
modulaire avec la performance industrielle.




                                    Figure 51 - Détecteur Ultrason
CARACTERISTIQUES
   Plage de détection: 3cm-4m, meilleur résultat en angle de 30 degrés.
   Interface Grove
   Précision : ~ 1 cm
   Alimentation 5V DC
  Capteur de Gaz(SEN90512P)
Le capteur de gaz choisi est le SEN90512P c’est un capteur de gaz (MQ2) ce module est
utile pour détecter les fuites de gaz (dans la maison et de l'industrie). Il peut détecter GPL,
l'i-butane, le méthane, l'alcool, l'hydrogène, la fumée et ainsi de suite. S'appuyant sur son
temps de réponse rapide. Les mesures peuvent être prises dès que possible. Également la
sensibilité peut être ajustée par le potentiomètre.




                                          Figure 52 - Capteur de gaz
CARACTÉRISTIQUES
   Haute sensibilité au GPL, le gaz naturel, gaz de ville
   Faible sensibilité à l'alcool, la fumée.
   Réponse rapide
   Stable et durable
   Circuit de pilotage simple
   MQ-5: gaz de ville, l'hydrogène, 100 ppm à 3,000 ppm

                                                                                                 51
                                                                                       Réalisation
Robot à base d’Android


    Servos Moteur + accessoires
Pour pouvoir orienter la caméra et la faire tourner à gauche/droite et en haut/bas, nous
avons choisi d’utiliser un mécanisme qui se compose de deux Servos Moteurs et les
accessoires en relations comme les ‘Brackets’.




            Figure 53 - Servo Moteur                           Figure 54 - Brackets


  Un montage est requis pour avoir le résultat ci-dessous :

  CARACTERISTIQUES
       Nom de marque: EMax
       Item: ES08A
       Tension de fonctionnement: 4.2-6V
       Vitesse de fonctionnement: 0.10sec/60degree (4.8v)
       Couple de blocage: 1.8kg/cm
       Plage de température: -55 ℃ 0 ℃
       Dimension: 32 (notamment l'oreille cas servo)
       x11.5x24mm
       Poids: 9g
       Kit comprend: Servos Horns x3 & Vis x3
  Liste des éléments du Paquet 9g Servo Bracket:
       Support x2
       Yoke x1
       Rivet plastique (3X5.5) x4
       Rivet plastique (2X5.6) x8
       Rondelle plastique x2                                       Figure 55 - Montage du bras de la caméra
       Visses x8
       Batterie
  Pour assurer une alimentation à tous les
  composants du ROBOT, nous avons choisi
  d’utiliser une alimentation centralisée par le biais
  d’une seule batterie 12 V, 2.2 AH /20HR, avec un
  prix de 27 $.

                                                                       Figure 56 - Batterie



                                                                                                 52
                                                                                       Réalisation
Robot à base d’Android


   3. Construction matérielle
Dans cette partie nous allons présenter tous les schémas et montages électroniques
effectués afin d’avoir une vue détaillée et profonde sur chaque élément construit.

     1. Smartphone et carte IOIO




                               Figure 57 – Montage Carte IOIO - Smartphone

Le Smartphone doit être connecté à la carte IOIO via le port USB comme le montre la figure
ci-dessus, l’alimentation de la carte IOIO est séparée donc on doit connecter les pins Vin et
GND à +VCC et GND de la batterie. Une fois connectée et alimentée la carte IOIO peut
communique avec le Smartphone à travers notre application. Le mode débogage doit être
activé dans le Smartphone.

     2. Plateforme de déplacement




                    Figure 58 – Montage électronique de la plateforme de déplacement


                                                                                                    53
                                                                                          Réalisation
Robot à base d’Android

La figure montre le montage de deux Moteurs DC avec le Motor Driver cité avant, le Motor
Driver doit être connecté à la carte IOIO du côté montré dans le schéma, les Pins attribués
doivent être les mêmes utilisés dans l’application. Chaque Motor Driver peut faire
fonctionner deux moteurs, donc on aura besoin de refaire ce montage en changeant bien
évidement les pins de 4-11, le Motor Driver est alimenté avec 3.3 V via la carte IOIO, et il
alimente les moteurs par 9v via la batterie.
Chaque Moteur possède deux pins pour le commander, faire circuler le courant dans un sens
ou un dans l’autre sens permet d’inverser le sens de rotation du Moteur.

     3. Capteur de gaz




                            Figure 59 – Montage Carte IOIO et capteur de gaz

Le capteur de gaz comporte 3 pins, on connecte le pin Signal à la carte IOIO (fil bleu), par une
entrée analogique, par exemple le PIN 34, ce même nombre va être utilisé dans l’application
pour faire l’écoute du signal analogique généré lorsque il y aura une fuite de gaz. Les deux
autres fils sont pour l’alimentation et la masse, ce capteur ne nécessite pas plus de 5 V donc
on peut l’alimenter directement par le PIN 5v de la carte IOIO.

     4. Capteur Ultrason




                           Figure 60 – Montage Carte IOIO et capteur ultrason

Le capteur Ultrasonique se connecte à la carte IOIO via une sortie analogique connecté ici au
PIN 6(fil jaune) jouant le rôle du SIGNAL, elle génère un signal analogique au fur et à mesure
qu’il détecte un obstacle, la deuxième sortie (fil orange) sert comme stabilisateur du

                                                                                                    54
                                                                                          Réalisation
Robot à base d’Android

capteur, elle est toujours à 1, les deux autres fils sont pour l’alimentation el la masse, le
capteur ultrason a besoin de moins de 5 v donc il peut prendre sa tension de la carte IOIO.

     5. Servos Moteurs




                       Figure 61 – Montage de la carte IOIO avec les servos moteurs

Le mécanisme d’orientation de la caméra nécessite deux servos moteurs, ils sont branchés
comme suit, la sortie en jaune représente le SIGNAL analogique (PWM) d’entrée qui va
commander le servos moteur pour le faire tourner d’un tel angle. Ils sont liés ici aux pins 3 et
6, les autres sorties sont pour l’alimentation (5v) et la masse.


   4. Estimation du coût
On présente ici une estimation du coût du ROBOT :

Produit                                              Prix
Smartphone Huawei Gaga                               130 $
Carte IOIO                                           50 $
Rover5                                               55 $
Motor Driver                                         8.95 $ x 2
Capteur Ultrason                                     15 $
Capteur de Gaz                                       6.90 $
Servos Moteurs                                       9.90 $ x 2
Brackets                                             9.90 $ x2
Batterie                                             27 $
Autres                                               40 $
TOTAL                                                381 $
                                Figure 62 - Estimation du coût du ROBOT




                                                                                                      55
                                                                                            Réalisation
Robot à base d’Android


   5. Produit final
On présente ici le produit final réalisé, pendant la partie de mettre tous les composants
ensemble nous avons la possibilité de changer quelques PINS suivant les contraintes
techniques rencontrés.

     a. Montage électronique Fritzing




                                Figure 63 - Schéma électronique global

Ce montage Global montre presque tous les composants électroniques du ROBOT, on aura
toujours la possibilité d’ajouter d’autres composants et d’avoir de nouvelles fonctionnalités
tant qu’il reste des PINS vides dans la carte IOIO, nous parleront des nouvelles possibilités
dans la section perspectives.




                                                                                             56
                                                                                   Réalisation
Robot à base d’Android


    b. Album Photos
On présente ici un ensemble de photos du ROBOT depuis les premières phases jusqu’à la
phase finale.




                     Figure 64 - Le Robot dans sa première phase




                   Figure 65 - Le Robot dans la phase intermédiaire


Ces Photos sont prises dans des dates différentes, elles montrent l’évolution du Robot
pendant les 2 premiers mois, où le grand travail été sur le développement des applications
et comment gérer la connectivité entre eux.




                                                                                          57
                                                                                Réalisation
Robot à base d’Android




                            Figure 66 - Le Robot en phase finale

Ces Photos présente un produit final et bien fonctionnel, avec lequel nous avons participé à
plusieurs évènements (voir annexes)


III. Défis relevés
Après avoir achevé ce projet, nous pouvons citer les différents problèmes rencontrés que
nous avons pu résoudre tout au long de son réalisation :

      Problème de consommation en énergie, et l’effet auto-drain rencontré avec le Motor
       Driver.
      Le temps énorme que nous avons pris pour nous documenter sur la carte IOIO et
       l’utilisation de matériel.
      Le Problème du temps de latence du ROBOT.
      Le problème de synchronisation entre deux applications Android distantes.
      Le problème de la bande passante limité.
      Les blocages techniques lors du montage de quelques circuits électroniques.
      Le problème du non disponibilité de la quasi-totalité des composants électroniques
       en Tunisie.


IV. Perspective & Evolution
D’après les paragraphes qui précèdent nous pouvons dire qu’il reste des points à optimiser
dans notre projet tel que l’optimisation de la réception du streaming vidéo, la gestion des
cas d’urgence lors des incidents, l’amélioration de la partie traitement d’information, ce
manque est dû à des contraintes techniques puisque ce projet est notre première

                                                                                           58
                                                                                 Réalisation
Robot à base d’Android

expérience avec le Matériel géré par Android.
Comme perspective, nous pouvons rendre notre projet plus polyvalent en ajoutons des
capteurs de température, d’humidité, de magnitude, de couleurs, de courant, de force, de
pression, infrarouges, téléphonique, "de chocs", d’autres types de gaz, d'inclinaison, de
niveau, Humidistances, Transducteurs à ultrasons etc…

Ces composants nous ouvrent l’esprit à d’autres idées réalisables à travers un système
embarqué basé sur Android, nous citant ci-dessous quelques idées de projets:
    Robot suiveur de ligne
    Robot détecteur de mines (métaux)
    Robot autonome de surveillance
    Robot spécialisé dans la détection des différents types de gaz (milieux industriels,
      plateformes pétrolières)
    Robot explorateur de zones inaccessibles pour humains (catastrophes naturelles)
    Système d’éclairage basé sur Android
    Système d’alarme basé sur Android
    Appareil de détection de niveau d’alcohol (Breath Analyser)
    Système de notification pour boite aux lettres
    Système de verrouillage intelligent
    Système d’aide à la décision pour voiture
    Système intégré pour réfrigérateur basé sur Android
    Quadricoptère volante basée sur Android


V. Chronogramme




                           Figure 67 - Chronogramme général
On remarque que la réalisation de ce projet été bien distribué au niveau de plusieurs
environnements en parallèle et sur une période de 6 mois.


                                                                                       59
                                                                             Réalisation
Robot à base d’Android



CONCLUSION
GENERALE

Ce projet de fin d’études, qui s’est déroulé à ESPRITEC, avait pour but la conception et la
réalisation d’un ROBOT intelligent à Base du système Android pour des buts divers comme la
sécurité, la surveillance, l’exploration etc...

« Android Based ROBOT » offre une multitude de fonctionnalités dont, les essentielles sont :

    Visualisation du Streaming Vidéo directement sur le Smartphone de l’utilisateur.
    Déplacement avancé et exploration d’endroits inaccessibles.
    Détection d’obstacles et réaction automatisée.
    Détection de fuite de Gaz,...
    La gestion des Alertes suite à des évènements précises.
Notre projet a couvert au bout du compte la majeure partie des fonctionnalités qui nous ont
été demandées au début, mais opportunités d’améliorations de ce projet sont multiples.
D’une part, nous pourrons améliorer l’application pour rendre l’interactivité plus souple et
complète avec l’utilisateur, aussi on peut évoluer même le ROBOT en lui intégrants de
multiples nouveaux capteurs et détecteurs, et circuits diverses pour le rendre encore plus
complet et automatisée.

D’autre part, nous pourrons penser à lui ajouter des modules pour qu’il puisse gérer non
seulement les situations déjà programmées mais aussi de nouvelles situations où il peut
apprendre tout seul à l’aide d’algorithmes d’apprentissage et d’intelligence artificielle, qu’on
peut modéliser facilement au niveau de l’application Android.

D'un point de vue personnel, tout au long de ce projet, nous avons eu l’occasion de mettre
en pratique nos connaissances acquises au sein de l’école ESPRIT, aussi bien en
programmation et développement qu’en électronique, embarquées et en matières Télécom
et nous avons également eu l’opportunité de travailler avec de nouveaux outils, matériels, et
méthodologies.

Cette expérience a été très enrichissante et importante car elle a marqué la fin de ce cycle
d’ingénieur et nous a permis d’être confrontés aux responsabilités qui sont celles d’un
ingénieur : faire face aux délais, au stress et aux contraintes du travail dans un milieu de
recherche et d’innovation.




                                                                                            60
                                                                                   Conclusion
Robot à base d’Android



BIBLIOGRAPHIE



1. Mike Lockwood, Erik Gilling, Jeff Brown. Google I/O 2011: Android Open Accessory API
and Development Kit (ADK). Youtube.com. [Online] 05 11, 2011. [Cited: 01 01, 2012.]
http://www.youtube.com/watch?v=s7szcpXf2rE.

2. TSVI, Ytai Ben. Profil Google+. Plus.Google.com. [En ligne] [Citation : 15 04 2012.]
https://plus.google.com/113760481226159480550/about.

3. FELLER, SAM. An Interview with Ytai Ben-Tsvi, Inventor of the IOIO. Engineer Blogs.
[Online] 03 21, 2012. [Cited: 03 24, 2012.] http://engineerblogs.org/2012/03/an-interview-
with-ytai-ben-tsvi-inventor-of-the-ioio/.

4. Site officiel ARDUINO. Arduino.cc. [En ligne] [Citation : 03 01 2012.] http://arduino.cc/.

5. Google. Android Open Accessory Development Kit. Developer.android.com. [En ligne]
[Citation : 01 04 2012.]
http://developer.android.com/guide/topics/connectivity/usb/adk.html.

6. First Sketch. Arduino.cc. [En ligne] [Citation : 15 02 2012.]
http://arduino.cc/en/Tutorial/Sketch.

7. Two steps communication protocol. arduino.cc. [En ligne] [Citation : 19 02 2012.]
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1292733514.

8. Tsvi, Ytai Ben. Github ytai / ioio. Github.com. [En ligne] https://github.com/ytai/ioio.

9. —. The IOIO Manager ApplicationNew Page Edit Page Page History. Github.com. [En ligne]
https://github.com/ytai/ioio/wiki/The-IOIO-Manager-Application.

10. Android Software and IOIO Application Firmware Images. github.com. [En ligne]
https://github.com/ytai/ioio/wiki/Downloads.

11. Rota, Véronique Messager. Gestion de projet agile avec Scrum, Lean, eXtreme
Programming... 3e édition. s.l. : Eyrolles.




                                                                                             61
                                                                                  Bibliographie
Robot à base d’Android



ANNEXE



OpenAccessory et ADK
       OpenAccessory
OpenAccessory est une nouvelle fonctionnalité pour Android, qui permet de connecter des
périphériques externes à un appareil Android via une connexion USB. Cette fonctionnalité
expose une interface standardisée sur le bus USB, ainsi que d'une API Java permettant une
application Android à communiquer avec l'accessoire sur l'autre extrémité. Cette
fonctionnalité est supportée sur Android 2.3.4 et supérieur. Le protocole OpenAccessory
permet à l'appareil Android à agir comme un hôte ou d'un périphérique sur le bus USB (le
mode hôte est pris en charge uniquement sur Android 3.x et supérieur, et seulement sur
certains appareils).

OpenAccessory est un protocole de bas niveau: il dispose d'un seul canal de communication
full-duplex entre l'appareil Android et l'accessoire, sur laquelle des octets arbitraires peuvent
être envoyés dans les deux sens - un peu comme une connexion UART. Il laisse au
concepteur d'accessoires pour concevoir le protocole de niveau supérieur, c'est à dire quels
sont les messages à envoyer et à ce que leur sens est de l'application Android et de
l'accessoire.

       ADK
Le kit de développement de l'accessoire (ADK) est
une implémentation de référence des cartes
OpenAccessory enabled, développé par Google et
a annoncé conjointement avec OpenAccessory.
Cette carte est essentiellement un Arduino Mega
avec un Shield à bord d'hôte USB. Il est livré avec
une bibliothèque C ++ de côté Arduino qui
implémente le protocole. Suite à Google,                   Figure 68 USB Host and Accessory Modes

plusieurs constructeurs ont publiés des cartes
compatibles.




                                                                                                 62
                                                                                            Annexe
Robot à base d’Android


Spécification Huawei Gaga U8180
           General Information                             Memory

Brand              Huawei                                  Internal      Yes, Internal Memory : 256MB RAM +
                                                           Memory        512MB Flash
Model              Gaga U8180
                                                           External      Yes, Up to 16GB
Weight             100 G                                   Memory
Form Factor        Touch Bar                               Memory Slot   Yes, Micro SD Card
Dimensions         104x56x13 MM                            Message
                   GSM 850 / 900 / 1800 / 1900 / UMTS      SMS           Yes
Operating Freq
                   900 / 2100 MHz
                                                           MMS           Yes
Touch Screen       Yes, Capacitive Touch Screen
                                                           Email         Yes
Display Color      2.8 inches QVGA, TFT Capacitive
                   Touchscreen, 262K Colors                Social        Google Maps, Google Search, Gmail
                                                           Networking
Display Size       Huawei Gaga U8180 has a display size    Services
                   of 240 x 30 px
                                                           Music
Sensors            G-sensor for Auto-Rotate UI
                                                           Ring Tone     Vibration, Polyphonic, MP3
Camera           Yes, 3.2 Mega Pixels Camera with Focus
                                                           FM            N/A
Camera Res.      2048 x 1536 Pixels
                                                           Music         Yes, Music Formats : MP3, AAC+, eAAC
Zoom             Yes, Digital Zoom                                       with 3.5mm Audio Jack
Video            Yes, QVGA (240x320 Pixels) at 24fps       Speaker       Yes
Video Player     Yes, Video Formats : MP4, H.263, H.264,   Headset       Yes
                 15fps VGA / 30fps WQVGA
                                                           Data
Software
                                                           GPRS          Yes
Games                  Yes
                                                           Bluetooth     Yes, v2.1 with A2DP
Browser                Yes, WAP 2.0/HTML
                                                           Wirless       Yes, Wi-Fi 802.11 b/g/n
Operating System       Android OS, v2.2 (Froyo)            Protocol
Call Records                                               Port          Yes, Micro USB (High Speed USB)
Phone Book         Practically Unlimited                   Edge          N/A
Received Calls     Practically unlimited                   Infra Red     No
Dialed Calls       Practically unlimited                   3G            Yes
Battery                                                    GPS           Yes, with A-GPS support
Stand-By Time          N/A                                 CPU           Yes, Qualcomm MSM7225 528MHz
Talk Time              N/A                                               Processor

Li-ion                 1200 mAH                            Salespack     Handset, Battery, Charger, Earphone,
                                                                         USB Cable, User Manual, Warranty Card




                                                                                                           63
                                                                                                      Annexe
Robot à base d’Android


Capteur Ultrason – Dossier Technique
Spécification

Supply voltage            5V

Global Current Consumption 15 mA
Ultrasonic Frequency      40k Hz
Maximal Range             400 cm
Minimal Range             3 cm
Resolution                1 cm
Trigger Pulse Width       10 μs
Outline Dimension         43x20x15 mm

Dimensions Mécaniques




M




                                                           64
                                                      Annexe
Robot à base d’Android


Utilisation
Installation Matérielle




Une brève impulsion ultrasonique est transmise à l'instant 0, réfléchie par un objet. Le seigneur reçoit ce signal
et le convertit en un signal électrique. L'impulsion suivante peut être transmis lors de l'écho est disparu. Cette
période est appelée période de cycle. La durée du cycle recommandent devrait pas être inférieur à 50ms. Si
une impulsion largeur 10μs de déclenchement est envoyé à la broche de signal, le module à ultrasons se
produire huit signal de 40 kHz à ultrasons et à détecter l'écho de retour. La distance mesurée est
proportionnelle à la largeur d'impulsion d'écho et peut être calculée par la formule ci-dessus. Si aucun obstacle
n'est détecté, la broche de sortie donne un signal de niveau haut 38ms.

Programmation


/* Ping))) Sensor

      This sketch reads a PING))) ultrasonic rangefinder and returns the
      distance to the closest object in range. To do this, it sends a pulse
      to the sensor to initiate a reading, then listens for a pulse
      to return. The length of the returning pulse is proportional to
      the distance of the object from the sensor.

      The circuit:
       * +V connection of the PING))) attached to +5V
       * GND connection of the PING))) attached to ground
       * SIG connection of the PING))) attached to digital pin 7

      created 3 Nov 2011
      by David A. Mellis
      modified 30 Jan 2012
      by Tom Igoe

      This example code is in the public domain.
 */


                                                                                                            65
                                                                                                       Annexe
Robot à base d’Android



// this constant won't change.    It's the pin number
// of the sensor's output:
const int pingPin = 7;

void setup() {
  // initialize serial communication:
  Serial.begin(9600);
}

void loop()
{
  // establish variables for duration of the ping,
  // and the distance result in inches and centimeters:
  long duration, inches, cm;

    // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
    // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
    pinMode(pingPin, OUTPUT);
    digitalWrite(pingPin, LOW);
    delayMicroseconds(2);
    digitalWrite(pingPin, HIGH);
    delayMicroseconds(5);
    digitalWrite(pingPin, LOW);

    // The same pin is used to read the signal from the PING))): a HIGH
    // pulse whose duration is the time (in microseconds) from the sending
    // of the ping to the reception of its echo off of an object.
    pinMode(pingPin, INPUT);
    duration = pulseIn(pingPin, HIGH);

    // convert the time into a distance
    inches = microsecondsToInches(duration);
    cm = microsecondsToCentimeters(duration);

    Serial.print(inches);
    Serial.print("in, ");
    Serial.print(cm);
    Serial.print("cm");
    Serial.println();
    delay(100);
}

long   microsecondsToInches(long microseconds)
{
  //   According to Parallax's datasheet for the PING))), there are
  //   73.746 microseconds per inch (i.e. sound travels at 1130 feet per
  //   second). This gives the distance travelled by the ping, outbound


                                                                             66
                                                                        Annexe
Robot à base d’Android


    // and return, so we divide by 2 to get the distance of the obstacle.
    // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
    return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds)
{
  // The speed of sound is 340 m/s or 29 microseconds per centimeter.
  // The ping travels out and back, so to find the distance of the
  // object we take half of the distance travelled.
  return microseconds / 29 / 2;
}




                                                                             67
                                                                        Annexe
Robot à base d’Android


Motor Driver TB6612FNG
Block Diagram




Fonctions des PINS




                                            68
                                       Annexe
Robot à base d’Android


Operation Range




Fonction H-SW de contrôle




Description Opérationnelle H-SW
                                                     69
                                                Annexe
Robot à base d’Android




Caractéristiques visées




Caractéristiques électriques


                                                  70
                                             Annexe
Robot à base d’Android




Diagramme d’application Typique




                                                     71
                                                Annexe
Robot à base d’Android


Capteur de Gaz (MQ5)
Caractéristiques électroniques

                         Parameter
Items                                         Min            Type            Max            Unit
                         name
System Characteristics
VCC                       Working Voltage     4.9            5               5.1            V
                          Heating
PH                                            0.5            -               800            mW
                         consumption
RL                        Load resistance                    can adjust
RH                        Heater resistance   -              33              -              Ω
                         Sensing
Rs                                            3              -               30              kΩ
                         Resistance


Installation Matérielle
Connectez ce module à la broche analogique de Grove. Vous pouvez
gagner la tension présente à travers la broche SIG. Plus la
concentration du gaz, plus la tension de sortie de la broche SIG. La
sensibilité peut être réglée en tournant le potentiomètre. S'il vous plaît
noter le meilleur temps de préchauffage de la sonde est d'environ 24
heures.



Programmation

Connectez le module avec l'aide Grove Bouclier A0 comme sur la
photo ci-dessus. Utilisez le programme ci-dessous pour obtenir la tension. Vous pouvez voir la tension
ira plus élevé si la concentration des incréments de gaz.

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

void loop() {
  float vol;
  int sensorValue = analogRead(A0);
  vol=(float)sensorValue/1024*5.0;
  Serial.println(vol,1);
}




                                                                                                        72
                                                                                                   Annexe
Robot à base d’Android


1er Article sur Tunandroid.com
TUNANDROID.COM
La Communauté Android en Tunisie
« Android Based ROBOT » – Un Robot Tunisien avec un cerveau Android1
PAR HO USSEM EDD INE L ASSO UED , LE 6 FÉVRIE R 2012


Avec ses premiers pas, le Robot à bien pris une
forme et peut être déclaré comme une Version
Alpha du projet de Réalisation d’un ROBOT Basée
sur le OS Mobile ANDROID, dans le cadre d’un
Projet de fin d’études à ESPRIT (Ecole Supérieure
Privée d’Ingénierie et de Technologie) en TUNISIE.

     L’idée de base de ce projet été comment
Transformer un smartphone Android en un Robot!
Connecter le monde Android(Soft) au monde
électronique(Hard) est bien évidement possible
maintenant,      quelques   solutions    de     faire
communiquer ces deux mondes existent, citant la
carte IOIO(utilisé dans ce Robot),la carte Arduino,
la Google ADK Board,… un choix est possible selon
les besoins du projet et les caractéristiques de
chaque plateforme, je vous propose quelques
comparaisons         entre      ces       solutions:
Google ADK vs Arduino ADK vs Sparkfun IOIO
vs                    ADK                    Shield
IOIO        over       OpenAccessory         (ADK)
The IOIO and Android Based Hardware
The Buzz at the Google I/O 2011

    Android est devenu de plus en plus intéressant
pour le développement de matériel. Maintenant,
vous devriez bientôt pouvoir brancher manettes de
jeu, matériel personnalisé, des capteurs et autres dispositifs et de faire une plate-forme
Android-Anywhere.
Les nouvelles API de gestion de matériel permettra à tout le monde de développer des
accessoires matériels pour Android, à partir d’amateur individuels vers les grandes
marques mondiales. Vous n’avez pas à signer un NDA, et vous n’avez pas besoin d’une
licence de matériel spécial, les aspects qui concerne la politique d’Apple n’existera pas
chez Android. N’importe qui peut le faire.

   Revenant à ce Robot, comme c’est une première expérience à ESPRIT, il sera destiné
pour le Test, la sécurité et la recherche dans le domaine Android Embarqué, la domotique
avec       Android,        la       notion      de      Maison      Intelligente    etc…


1
 Lien : http://www.tunandroid.com/content/2012/02/06/android-based-robot-un-robot-tunisien-avec-un-
cerveau-android/

                                                                                                  73
                                                                                             Annexe
Robot à base d’Android

Il sera doté d’un ensemble de capacités et il assurera pas mal de fonctionnalités, je vous
liste ici quelques-unes:

-Déplacement dans les 4 directions (inclut les rotations) avec 2 niveaux de vitesses.
-Commandé à distance via un Smartphone Android(wifi)/ via un Navigateur Web
-Capture vidéo et envoi du Streaming en direct vers l’application de commande
-Un système de détection d’obstacles/de distances
-Un module de géolocalisation GPS (OUTDOOR)
-Détection de mouvement (motion Detection)/d’obscurité
-Détection de fuite de Gaz/Mesure de Température
-Fonctionnalité d’Alarme en cas d’urgence
-Notification Automatique par SMS / E-mail
-Signalisation en cas de problèmes (Alimentation faible, déséquilibre, wifi hors portée)
-Récupération des mesures sur l’alimentation du Robot et la qualité de signal
-Module de Commandes Vocales
-… (de nouvelles idées tous les jours)

Le projet est encore dans sa première phase, en attendant l’avancement au fur et à
mesure, nos encouragement pour toute l’équipe qui travaille dessus, on espère qu’on voit
d’autres projets innovants en Tunisie, il faut juste avoir confiance en soi.
“Trust yourself. You know more than you think you do.”

Quelques Photos:




FÉVRIER 6TH, 2012 | TAGS : AND RO ID , AND RO ID BASED RO BO T , DO MO TIQ UE , ESPRIT , ESPRIT
MO BILE , IO IO , IO IO AND RO ID , MO BILE PHO NE , RO BO T , RO BO T
AND RO ID , RO BO TIQ UE , TUNISIA ,TUNIS IE | CATÉGO RIE
: D ÉVELO PPEMENT , NO UVEAUTÉS , SMARTPHO NES



                                                                                                 74
                                                                                            Annexe
Robot à base d’Android


Participation à TUNIROBOTS2012 et premier prix
TUNANDROID.COM
La Communauté Android en Tunisie

Un ROBOT Android élu comme Meilleur Exposition à TUNIROBOTS-20121
PAR HO USSEM EDD INE L ASSO UED , LE 22 AVRIL 2012


L’Institut National des Sciences Appliquées et de la Technologie (INSAT) a organisé le dimanche
22 avril 2012 à partir de 9 h la journée nationale de la robotique, baptisée Tunirobots’12.




Une action menée en grande partie par les étudiants bénévoles de l’institut qui ont composés des
équipes bien organisées afin d’assurer la réussite de cette journée.

Les expositions des différents robots construits par les étudiants leur a permis de démontrer
encore une fois l’ingéniosité des jeunes tunisiens en matière de robotique et de technologie, et
seront le trait d’union entre eux et les différentes entreprises qui assisteront à cet évènement qui
promet de belles réalisations.

Android été bien évidement présent lors de cette journée, et oui... nos jeunes tunisiens ont bien
pensé cette année d’entrer à Tunirobots avec des robots plus intelligents et moins classique, des
robots avec un cerveau ANDROID !

C’est à ce propos que nous parlons de la participation d’un jeune élève ingénieur de l’école
ESPRIT, Mr. Houssem Eddine Lassoued qui a participé avec son Projet de fin d’étude en cours de
réalisation, un Robot à base d’Android, nous avons bel et bien
parlé de ce projet avant, ici.



Pour résumer la journée, « l’Android Based Robot » a eu
beaucoup de succès auprès de l’audience présente tout au
long de la journée, des étudiants de différentes institutions
des amateurs, des professionnels, et des médias ont profité
de l’occasion pour faire quelques interviews avec l’exposant
du Robot, il y avait aussi un nombre de jurys
indépendants appartenant à des différentes universités et
« labos », leurs rôle était de visiter chaque exposant et juger
son Robot sur différentes critères, dont les plus importantes
sont l’originalité, les fonctionnalités, la réalisation et les
perspectives du projet qui doivent être bien expliquées par
l’exposant.

1
    Lien :

                                                                                         75
                                                                                    Annexe
Robot à base d’Android




Le résultat est annoncé vers la fin de la journée, et une victoire pour le Robot à Base Android qui
a remporté le prix de la meilleure exposition    ) un grand Bravo pour Houssem Eddine,
Félicitation pour toute l’équipe Mobile d’ESPRIT, et c’est une victoire aussi pour la Communauté
Tunandroid;)

le prix attribué au vainqueur est une Tablette ARCHOS 70 IT, une certification de participation,
et une jolie médaille pour garder le souvenir.




AVRIL 22ND , 2012 | T AGS : 12, AND RO ID , ESPRIT , EXPO SANT , HO USSEM ED INE LASSO U ED , INSAT ,IO IO
AND RO ID , MO BILE , PRIX, RO BOT , TUNIRO BOTS , TUNISIE | CATÉGO RIE
: ARCHO S, EMBARQ UÉ ,EVENTS , NATIO NAL , NO UVEAUTÉS




                                                                                                  76
                                                                                             Annexe
Robot à base d’Android


Article Tekiano.com 1:
                                      Un peu plus loin, nous retrouvons cette fois le stand du Club Esprit.
                                      Houssem Eddine Lassoued, étudiant en 5ème année télécommunication
                                      nous présente un robot commandé à base du système d'exploitation
                                      Google Android. «Ce robot est constitué de quatre moteurs, d'une carte
                                      électronique IOIO, d'une webcam, d'un capteur à ultra-son et d'un
                                      détecteur de gaz. Il est capable s'introduire dans divers endroits restreints
                                      et effectuer des tâches variées comme la surveillance d'un domicile, ou
                                      d'un entrepôt » Souligne le concepteur qui au passage, précise que
                                      l'avantage de ce système embarqué est le fait de pouvoir contrôler ce
                                      robot directement depuis son Smartphone, grâce à une application qui
                                      renseignera l'utilisateur sur les distances d'un tel
                                      objet ou obstacle ou encore du taux de gaz présent
                                      dans une pièce...



Participation à ComNet’2012 Supcom à Hammmet 2
On a participé avec le robot à la la troisième Conférence Internationale sur les
Communications et Réseaux (ComNet'2012), qui se tiendra le 1er avril 2012, à
Hammamet.




Cette conférence internationale réunit des chercheurs des TIC des pays du
Nord et du Sud dans le but de se rencontrer, d'échanger leurs idées et leur
expertise, d'initier et de renforcer leur coopération sur des sujets liés aux
communications réseaux. Il se positionne comme une plate-forme pour les
chercheurs et les praticiens à la fois du milieu universitaire et de l'industrie
pour se rencontrer et partager la recherche de pointe et le développement
dans ces domaines.

ComNet'2012 fournira une excellente tribune internationale pour le partage
des connaissances et des résultats de recherche dans les théories, les
méthodologies et les applications dans différents sujets liés à la communication
et au réseau (filaires et sans fil).

1
  http://www.tekiano.com/tek/science/5177-tunirobots-2012-bataille-de-robots-et-premiere-fusee-tunisienne-
.html
2
  http://www.supcom.mincom.tn/ComNet2012/

                                                                                                     77
                                                                                                Annexe
Robot à base d’Android


Participation à Droidcon Tunis 2012 (cité des sciences)1
La Cité des sciences de Tunis a accueilli pour la
première fois en Tunisie, le 12 et 13 Mai 2012, «le
Droidcon Tunis 2012 », un événement majeur
tournant autour du système d’exploitation mobile
Android.          Ces   deux   jours   sont   constitués   de
conférences, de débats, d’ateliers d’initiation, d’un
espace d’expositions gratuit, de démonstrations, d’un Barcamp et même d’un Hackathon,
sorte de marathon pour développeurs. .

Durant deux jours de Droidcon Tunis, plus de 350 participants ont pris part à une
aventure à la fois originale et exceptionnellement enrichissante.

Durant le premier jour, un barcamp a été organisé en parallèle à une succession de
formations d’initiations donné par les membres de Tunandroid et une conférence donné
par Tunisiana.

Dans le grand auditorium, un challenge d’application a eu lieu, ou chaque participant, qui
souhaite participer au challenge, a 3 minutes pour présenter son application. Le gagnant
par vote à main levée, a eu un smartphone Alcatel One Touch.

Parmi la participation d’ESPRIT, été notre projet le Robot à Base d’Android




1
    droidcon.tn

                                                                                       78
                                                                                  Annexe
Robot à base d’Android




                   79
              Annexe
Robot à base d’Android




                   80
              Annexe
Robot à base d’Android




                   81
              Annexe
Robot à base d’Android




                   82
              Annexe
Robot à base d’Android




                   83
              Annexe
Robot à base d’Android


NOTES




                           84
                      Annexe

Contenu connexe

PDF
Conception et réalisation d’un robot de supervision : acquisition et échange ...
PPTX
ROBOT à base d'Android - Présentation PFE
PPTX
Presentation pfe RoBeX
PDF
Rapport de pfe gestion de parc informatique et Helpdesk
PDF
Rapport de stage PFE - Mémoire master: Développement d'une application Android
PDF
Projet ROBOT MOBILE SUIVEUR DE LIGNE BASE SUR LE TRAITEMENT D'IMAGE
PPT
Masrour cours dynamique des systèmes - vibrations -chapitre4-vibrations-masrour
PDF
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Conception et réalisation d’un robot de supervision : acquisition et échange ...
ROBOT à base d'Android - Présentation PFE
Presentation pfe RoBeX
Rapport de pfe gestion de parc informatique et Helpdesk
Rapport de stage PFE - Mémoire master: Développement d'une application Android
Projet ROBOT MOBILE SUIVEUR DE LIGNE BASE SUR LE TRAITEMENT D'IMAGE
Masrour cours dynamique des systèmes - vibrations -chapitre4-vibrations-masrour
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...

Tendances (20)

PDF
RAPPORT DE PROJET DE FIN D’ETUDES
PDF
Rapport pfe
PDF
rapport fin d'etude
PDF
Rapport PFE Génie Electrique (2016)
PDF
Rapport PFE Ahmed BEN JEMIA
PDF
Rapport de stage PFE ( DUT) chez Synthèse Conseil - Jaiti Mohammed
PDF
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
PPTX
présentation soutenance PFE 2016
PDF
Rapport de stage boite à idées innovantes avec dashboard
PPTX
Conception, automatisation et supervision d’une machine d’assemblage connec...
PDF
Rapport de Projet de Fin d'étude .
PDF
Rapport de stage de fin d'etudes Application web de E-commerce
PDF
Rapport PFE réalisation d’un Framework Kinect
PDF
Rapport de stage du fin d'étude
PDF
Rapport stage
PDF
Rapport final pfe_systeme_de_gestion _de_cabinet_de_formation_mobile_web
PDF
Rapport PFE
PDF
Plateforme de gestion des projets de fin d'études
PDF
Conception et developpement d'une application mobile Android e-location
PDF
AUTOMATISATION D’UNE MACHINE EXTRUDEUSE ET MISE EN PLACE D’UNE INTERFACE HOMM...
RAPPORT DE PROJET DE FIN D’ETUDES
Rapport pfe
rapport fin d'etude
Rapport PFE Génie Electrique (2016)
Rapport PFE Ahmed BEN JEMIA
Rapport de stage PFE ( DUT) chez Synthèse Conseil - Jaiti Mohammed
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
présentation soutenance PFE 2016
Rapport de stage boite à idées innovantes avec dashboard
Conception, automatisation et supervision d’une machine d’assemblage connec...
Rapport de Projet de Fin d'étude .
Rapport de stage de fin d'etudes Application web de E-commerce
Rapport PFE réalisation d’un Framework Kinect
Rapport de stage du fin d'étude
Rapport stage
Rapport final pfe_systeme_de_gestion _de_cabinet_de_formation_mobile_web
Rapport PFE
Plateforme de gestion des projets de fin d'études
Conception et developpement d'une application mobile Android e-location
AUTOMATISATION D’UNE MACHINE EXTRUDEUSE ET MISE EN PLACE D’UNE INTERFACE HOMM...
Publicité

En vedette (20)

PDF
2743557 dossier-ppe-robot-suiveur-de-ligne
PPT
C'est quoi un robot ?
PPTX
Séance 2 robo cept.ppt
PPTX
Présentation robotique
PDF
Rapport de projet de fin d'étude licence informatique et multimédia
PPTX
Cours robotique complet
PPT
Sport et dopage
PPT
Les robots
PDF
Autonomous navigation of flying robot
PPTX
Tutorial 2 downloading and i nstalling omnet++
PPTX
Tutorial 5 adding more nodes
PPTX
Tutorial 6 queues & arrays & results recording
PPTX
Tutorial 4 adding some details
PPTX
Tutorial 1 installing mixim and mixnet
PDF
Computer Networks Omnet
PPTX
Powerpoint Oral TIPE 2010-2011
PDF
Simulators for Wireless Sensor Networks (OMNeT++)
PPTX
Using Omnet++ in Simulating Ad-Hoc Network
PPTX
Tutorial 3 getting started with omnet
PDF
Tracing and awk in ns2
2743557 dossier-ppe-robot-suiveur-de-ligne
C'est quoi un robot ?
Séance 2 robo cept.ppt
Présentation robotique
Rapport de projet de fin d'étude licence informatique et multimédia
Cours robotique complet
Sport et dopage
Les robots
Autonomous navigation of flying robot
Tutorial 2 downloading and i nstalling omnet++
Tutorial 5 adding more nodes
Tutorial 6 queues & arrays & results recording
Tutorial 4 adding some details
Tutorial 1 installing mixim and mixnet
Computer Networks Omnet
Powerpoint Oral TIPE 2010-2011
Simulators for Wireless Sensor Networks (OMNeT++)
Using Omnet++ in Simulating Ad-Hoc Network
Tutorial 3 getting started with omnet
Tracing and awk in ns2
Publicité

Similaire à ROBOT à base d'Android - Rapport PFE (20)

DOCX
PFE::Conception et développement du Back Office d'une application mobile de g...
PDF
Rapport-de-perfectionnement-Jasser-Degani.pdf
PDF
Conception et développement d'une application de gestion de stock SAATSA TEZO...
PDF
392327755-Conception-Et-Realisation-d-Un-Site-Web-Et-Une-Application-Mobile-d...
PDF
Rapport Projet de Fin d'Etudes
PDF
Qgis 1.7.2 user-guide_fr
PDF
Rapport (Mémoire de Master) de stage PFE pour l’obtention du Diplôme Nationa...
PDF
Rapport Projet Fin d'Études PFE
PDF
rapport-projet-de-fin-detudes
PDF
rapport-170608045227 (1).pdf
DOCX
Rapport PFE Développent d'une application bancaire mobile
PDF
rapport-170608045227 (1).pdf
PDF
Etude critique et amélioration de la gestion de la performance du service mai...
PDF
Rapport de stage de perfectionnement - Mahmoudi Mohamed Amine
PDF
Conception et développement d'une application Android pour TUNISAIR
PDF
1601896849 rapport fluttercopie
PDF
Mémoire_SciencesPo_Alexis-Legrand_L’INTERNET-DES-OBJETS,-UN-PAS-VERS-LA-TRAN...
PDF
Automatisation d'une maison intelligente via une application android
PDF
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
PDF
ERP Universitaire
PFE::Conception et développement du Back Office d'une application mobile de g...
Rapport-de-perfectionnement-Jasser-Degani.pdf
Conception et développement d'une application de gestion de stock SAATSA TEZO...
392327755-Conception-Et-Realisation-d-Un-Site-Web-Et-Une-Application-Mobile-d...
Rapport Projet de Fin d'Etudes
Qgis 1.7.2 user-guide_fr
Rapport (Mémoire de Master) de stage PFE pour l’obtention du Diplôme Nationa...
Rapport Projet Fin d'Études PFE
rapport-projet-de-fin-detudes
rapport-170608045227 (1).pdf
Rapport PFE Développent d'une application bancaire mobile
rapport-170608045227 (1).pdf
Etude critique et amélioration de la gestion de la performance du service mai...
Rapport de stage de perfectionnement - Mahmoudi Mohamed Amine
Conception et développement d'une application Android pour TUNISAIR
1601896849 rapport fluttercopie
Mémoire_SciencesPo_Alexis-Legrand_L’INTERNET-DES-OBJETS,-UN-PAS-VERS-LA-TRAN...
Automatisation d'une maison intelligente via une application android
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
ERP Universitaire

ROBOT à base d'Android - Rapport PFE

  • 2. Robot à base d’Android DEDICACES Je dédie ce travail en témoignage de mon profond respect, mon grand amour et toute ma gratitude à : Mes chers parents, Tous les membres de ma famille, Et tous mes amis. Houssem Eddine LASSOUED i Dédicaces
  • 3. Robot à base d’Android REMERCIEMENTS C’est avec un grand plaisir que je tiens tout d’abord à exprimer toute ma reconnaissance à mon cher encadrant à ESPRIT : Mr Imed AMRI, pour l'attention qu'il a apportée à mon projet tout au long de ses divers stades allant de l’idée à la réalisation et pour ces précieux conseils. Je veux aussi, adresser mes remerciements à tous les membres de l’équipe ‘’ESPRIT MOBILE‘’ Sana, Salma, Wael, Hamza et Karray pour leurs soutien, appui et encouragement. Je suis redevable à tous mes enseignants d’ESPRIT pour leurs efforts qui ont guidé mes pas tout au long de mes études universitaires. Que tous ceux qui m'ont soutenu de près ou de loin, trouvent dans ce travail l’expression de ma reconnaissance infinie. Je tiens enfin, à exprimer l'honneur que me font les membres du jury pour avoir accepté de me prêter leur attention et évaluer mon travail. ii Remerciements
  • 4. Robot à base d’Android RESUM Le travail présenté dans ce rapport, qui a été effectué au sein d’ESPRITEC, entre dans le cadre du projet de fin d’études pour l’obtention du diplôme national d’ingénieur en télécommunication. Il concerne la conception et la réalisation d’un ROBOT à base d’Android. Ce ROBOT assure un ensemble de fonctionnalités tels que l’exploration des milieux quotidiens, dangereux et inaccessibles, il assure la sécurité dans les milieux industriels, par la détection d’obstacles, détection de fuite de gaz, envoi d’alerte, par plusieurs moyens. Mots-clés: Android, Robot, Embarqué, IOIO, capteurs ABSTRACT The work presented in this report, which was performed within ESPRITEC, is part of the graduation project for the National Diploma in telecom engineering, it concern the design and implementation of an Android Based ROBOT. This ROBOT ensures a variety of features such as the exploration of daily zones, dangerous and inaccessible; it provides security in industrial sectors, obstacle detection, detection of gas leakage, sending alarm by several methods Keywords: Android, Robot, Embedded, IOIO, sensors. iii Résumé
  • 5. Robot à base d’Android TABLE DES MATIERES SIGNATURES .................................................................................................... i DEDICACES ...................................................................................................... i REMERCIEMENTS ........................................................................................... ii RESUM ........................................................................................................ iii TABLE DES MATIERES .................................................................................... iv LISTE DES FIGURES ....................................................................................... viii LISTE DES TABLEAUX ...................................................................................... x INTRODUCTION GENERALE ............................................................................ 1 1. PRESENTATION GENERALE ......................................................................... 3 Introduction ............................................................................................................................ 3 I. Contexte du projet .......................................................................................................... 3 II. Présentation de l’Organisme d’Accueil ........................................................................... 3 III. Problématique du projet ............................................................................................. 4 IV. Solution proposée........................................................................................................ 5 Conclusion .............................................................................................................................. 5 2. ETAT DE L’ART ............................................................................................ 6 Introduction ............................................................................................................................ 6 I. Présentation des Solutions Existantes ............................................................................ 6 Choix de la solution ............................................................................................................. 7 Avantages de la carte IOIO.................................................................................................. 8 II. La Carte IOIO ................................................................................................................... 9 1. Présentation ................................................................................................................ 9 2. Caractéristiques Techniques et capacités ................................................................. 10 3. Plateforme de développement ................................................................................. 11 iv Table des matières
  • 6. Robot à base d’Android Conclusion ............................................................................................................................ 13 3. SPECIFICATIONS ET ANALYSE DES BESOINS .............................................. 14 Introduction .......................................................................................................................... 14 I. Gestion du projet ........................................................................................................ 14 1. Approche Agile vs. Séquentielle ............................................................................ 15 2. Choix de méthodologie .......................................................................................... 16 1. Adaptative Software Development (ASD) ............................................................ 16 2. Dynamic Software Development Method (DSDM)............................................. 16 3. eXtreme Programming (XP) ................................................................................... 16 4. Rapid Application Development (RAD) ................................................................ 17 5. Scrum ........................................................................................................................ 17 3. Choix de la méthodologie : Mobile D .................................................................. 17 II. Identification des acteurs .............................................................................................. 19 III. Spécification fonctionnelle ........................................................................................ 19 1. Vision du produit ....................................................................................................... 19 2. Besoin fonctionnels ................................................................................................. 20 3. Besoin non fonctionnels ......................................................................................... 20 4. Cas d’utilisation généraux ......................................................................................... 21 IV. Cas d’utilisations Détaillés ...................................................................................... 23 1. Le 1er Cas- Explorer un lieu .................................................................................... 23 2. Le 2ème Cas- Récupérer le Streaming Vidéo ........................................................ 24 3. Le 3ème Cas- Détecter un obstacle ........................................................................ 25 4. Le 4ème Cas- Détecter une fuite de gaz ................................................................ 26 5. Le 5ème Cas- Récupérer l’état du ROBOT.............................................................. 27 V. Diagramme de séquence système ............................................................................ 28 VI. Diagrammes de Séquence détaillés...................................................................... 29 1. Diagramme de séquence 1– Déplacer le ROBOT ............................................... 29 2. Diagramme de séquence 2– Surveiller un lieu .................................................... 30 3. Diagramme de séquence 3– Détecter un Obstacle ............................................ 31 4. Diag.de séquence 4 – Détecter une fuite de Gaz .............................................. 32 v Table des matières
  • 7. Robot à base d’Android VII. Maquettes ................................................................................................................. 33 Conclusion ............................................................................................................................ 35 4. CONCEPTION ............................................................................................ 36 Introduction ........................................................................................................................ 36 I. Diagramme de séquence objets ............................................................................... 36 II. Diagramme d’activités................................................................................................... 37 III. Diagramme de Classe ................................................................................................ 38 Conclusion ........................................................................................................................... 39 5. REALISATION ............................................................................................ 40 Introduction .......................................................................................................................... 40 I. Réalisation Logicielle .................................................................................................. 40 1. Environnement de travail .......................................................................................... 40 II. Réalisation Matérielle ................................................................................................... 48 1. Environnement de travail ....................................................................................... 48 3. Construction matérielle .......................................................................................... 53 4. Estimation du coût .................................................................................................. 55 5. Produit final .............................................................................................................. 56 a. Montage électronique Fritzing .................................................................................. 56 b. Album Photos ............................................................................................................ 57 III. Défis relevés............................................................................................................... 58 IV. Perspective & Evolution ............................................................................................ 58 V. Chronogramme ............................................................................................................. 59 CONCLUSION GENERALE .............................................................................. 60 BIBLIOGRAPHIE ............................................................................................ 61 ANNEXE ........................................................................................................ 62 OpenAccessory et ADK ...................................................................................................... 62 OpenAccessory.................................................................................................................. 62 ADK .................................................................................................................................... 62 Spécification Huawei Gaga U8180 ................................................................................... 63 Capteur Ultrason – Dossier Technique ............................................................................ 64 vi Table des matières
  • 8. Robot à base d’Android Motor Driver TB6612FNG .................................................................................................. 68 Capteur de Gaz (MQ5) ....................................................................................................... 72 1er Article sur Tunandroid.com ........................................................................................ 73 Participation à TUNIROBOTS2012 et premier prix ........................................................ 75 Participation à ComNet’2012 Supcom à Hammmet .................................................... 77 Participation à Droidcon Tunis 2012 (cité des sciences) ............................................... 78 vii Table des matières
  • 9. Robot à base d’Android LISTE DES FIGURES Figure 1 - Android@Home ......................................................................................................... 1 Figure 2 - Logo ESPRIT Mobile .................................................................................................... 3 Figure 3 - Différents environnement du projet ......................................................................... 4 Figure 4 - ADK de Google............................................................................................................ 6 Figure 5 - Arduino Mega2560..................................................................................................... 7 Figure 6 - IOIO – Logo officiel ..................................................................................................... 9 Figure 7 - IOIO – Distributeur Sparkfun ...................................................................................... 9 Figure 8 - Montage de la carte IOIO ......................................................................................... 10 Figure 9 - Carte IOIO ................................................................................................................. 10 Figure 10 - Classification des Pins ............................................................................................ 11 Figure 11 - Montage de l'exemple Démo ................................................................................. 13 Figure 12 - Interface de l'application Démo ............................................................................. 13 Figure 14 - Cas d’utilisation généraux du projet ..................................................................... 21 Figure 15 – Cas d’utilisation - Explorer un lieu ......................................................................... 23 Figure 16 - cas d'utilisation - Récupérer le Streaming Vidéo ................................................... 24 Figure 17 - Cas d'utilisation – Détecter un obstacle ................................................................ 25 Figure 18 - Cas d'utilisation - Détecter une fuite de gaz .......................................................... 26 Figure 19 - Cas d'utilisation - Récupérer l’état du ROBOT ....................................................... 27 Figure 20 - Diagramme de séquence système ......................................................................... 28 Figure 21 - Diagramme de séquence – Déplacer le ROBOT ..................................................... 29 Figure 22 - Diagramme de séquence – Surveiller un lieu ........................................................ 30 Figure 23 - Diagramme de séquence – Détecter un Obstacle ................................................. 31 Figure 24 - Diagramme de séquence – Détecter une fuite de Gaz ......................................... 32 Figure 25 - Maquette du ROBOT .............................................................................................. 33 Figure 26 - Maquette de l’interface principale de l’application de commande ..................... 34 Figure 27 - Diagramme de séquence objets............................................................................. 36 Figure 28 - Diagramme d'activités............................................................................................ 37 Figure 29 - Diagramme de Classe ............................................................................................. 38 Figure 30 - Logo Eclipse ............................................................................................................ 40 Figure 31 - Logo Fritzing ........................................................................................................... 41 Figure 32 - Logo Photoshop...................................................................................................... 41 Figure 33 - Logo GIT.................................................................................................................. 41 Figure 34 - Dropbox logo .......................................................................................................... 41 viii Liste des figures
  • 10. Robot à base d’Android Figure 35 - Interface de connexion .......................................................................................... 42 Figure 36 - Joystick de déplacement ........................................................................................ 42 Figure 37 - Zone d'affichage du streaming ............................................................................... 42 Figure 38 - SeekBars ................................................................................................................. 43 Figure 39 - Interface de détection de Gaz ................................................................................ 43 Figure 40 - Interface de détection de distance ........................................................................ 43 Figure 41 - Interface d'affichage d'état de Batterie ................................................................. 43 Figure 42 - Notification de connexion ...................................................................................... 44 Figure 43 - Tab d'orientation .................................................................................................... 44 Figure 44 - écran 1 - Interface de connexion ........................................................................... 44 Figure 45 - écran 2 - Interface de commande .......................................................................... 45 Figure 46 - Interface de l'application Daemon ......................................................................... 48 Figure 47 - Huawei Gaga .......................................................................................................... 49 Figure 48 - Carte IOIO ............................................................................................................... 50 Figure 49 - Plateforme de déplacement .................................................................................. 50 Figure 50 - Motor Driver........................................................................................................... 50 Figure 51 - Détecteur Ultrason ................................................................................................. 51 Figure 52 - Capteur de gaz........................................................................................................ 51 Figure 53 - Servo Moteur ......................................................................................................... 52 Figure 54 - Brackets .................................................................................................................. 52 Figure 55 - Montage du bras de la caméra .............................................................................. 52 Figure 56 - Batterie ................................................................................................................... 52 Figure 57 – Montage Carte IOIO - Smartphone ....................................................................... 53 Figure 58 – Montage électronique de la plateforme de déplacement .................................... 53 Figure 59 – Montage Carte IOIO et capteur de gaz ................................................................. 54 Figure 60 – Montage Carte IOIO et capteur ultrason .............................................................. 54 Figure 61 – Montage de la carte IOIO avec les servos moteurs .............................................. 55 Figure 62 - Estimation du coût du ROBOT................................................................................ 55 Figure 63 - Schéma électronique global ................................................................................... 56 Figure 64 - Le Robot dans sa première phase .......................................................................... 57 Figure 65 - Le Robot dans la phase intermédiaire ................................................................... 57 Figure 66 - Le Robot en phase finale ........................................................................................ 58 Figure 67 - Chronogramme général ......................................................................................... 59 Figure 68 - USB Host and Accessory Modes ............................................................................. 62 ix Liste des figures
  • 11. Robot à base d’Android LISTE DES TABLEAUX Tableau 1 Comparaison entre les différentes solutions ........................................................... 7 Tableau 2 - Comparatif entre approche agile et approche classique ..................................... 15 Tableau 3 - Caractéristiques du Mobile-D................................................................................ 18 Tableau 4 - Définition du problème ......................................................................................... 19 Tableau 5 - Position du produit ................................................................................................ 19 Tableau 6 - Description du cas d'utilisation Explorer un lieu ................................................... 23 Tableau 7 - Description du cas d'utilisation Récupérer le streaming vidéo ............................. 24 Tableau 8 - Description du cas d'utilisation Récupérer la distance ......................................... 25 Tableau 9 - Description du cas d'utilisation récupérer le niveau de gaz ................................. 26 Tableau 10 - Description du cas d'utilisation récupérer l'état du ROBOT ............................... 27 Tableau 11 – Commande des Moteurs .................................................................................... 46 x Liste tableaux
  • 12. Robot à base d’Android INTRODUCTION GENERALE Android est devenu de plus en plus intéressant pour le développement de matériel. Maintenant, on devrait bientôt pouvoir brancher des manettes de jeu, un matériel personnalisé, des capteurs et autres dispositifs et de faire une plate-forme Android- Anywhere. Les nouvelles API1 de gestion de matériel permettront à tout le monde de développer des accessoires matériels pour Android, à partir d’amateurs individuels vers les grandes marques mondiales. On n’a pas à signer un NDA2, et vous n’avez pas besoin d’une licence de matériel spéciale, les aspects qui concernent la politique d’Apple n’existeront pas chez Android. On a toujours été en mesure de connecter un appareil Android à un ordinateur, mais jusqu'à quelques mois avant, il n'y avait aucun moyen pour les applications Android d’interagir avec un autre matériel via le port USB. Dans ce contexte, nous explorons un nouvel appui pour les périphériques d'entrée USB, ainsi que de nouvelles possibilités pour les applications de communiquer avec des périphériques via le port USB ou même la connectivité Bluetooth. L’une des annonces (1) les plus importantes du Google IO 20113, est l’arrivée du géant d’internet dans les systèmes domotiques et électroniques pour maison, office, industrie etc... Google devrait proposer un écosystème composé de plusieurs éléments Software et Hardware tournant autour d’Android, le tout disponible en open source. Pour satisfaire ce nouveau besoin, plusieurs sociétés ont commencé déjà des mois avant l’annonce de Google, à proposer différentes solutions, parmi lesquelles nous trouvons La carte IOIO, la solution de Ytai BEN TSVI (2) , un jeune ingénieur développeur et amateur d’électronique, qui a conçu cette carte dans son passe-temps sans savoir au préalable que son produit serait exploitable mondialement et adopté officiellement par Google (3). C’est dans ce cadre que notre projet s’inscrit : il s’agit de Concevoir, Figure 1 - Android@Home construire, développer un système embarqué intelligent basé sur 1 Application Programming Interface 2 Non-Disclosure Agreement 3 Google I/O est une conférence annuelle de deux jours, organisée par Google au Moscone Center de San Francisco, en Californie. 1 Introduction Générale
  • 13. Robot à base d’Android Android, soit un Robot à base d’Android. Tout au long de ce rapport, nous exposerons les différentes étapes de réalisation de notre projet, en commençant par une présentation des notions fondamentales relatives à la compréhension de notre sujet, ensuite nous présenterons les différentes solutions existantes et finalement dans la dernière partie, on donnera une description détaillée de la solution formulée. 2 Introduction Générale
  • 14. Robot à base d’Android 1. PRESENTATION GENERALE Introduction Nous présentons dans ce chapitre une étude préliminaire du projet. Dans un premier temps, nous présentons l’environnement du stage. Par la suite, nous décrivons la problématique, ainsi que les principaux objectifs du projet. I. Contexte du projet Dans le cadre de la formation d’ingénieurs Télécommunications à l’École Supérieure Privée d’ingénierie et de Technologies (ESPRIT), nous avons eu l’occasion d’effectuer notre projet de fin d’études pour l’obtention du diplôme d’ingénieur national en Télécommunications au sein du Laboratoire de Recherche et Développement EPRITEC attaché à ESPRIT précisément avec l’équipe ESPRIT Mobile, généralement ce projet vise à compléter notre formation universitaire acquise, durant trois ans, au sein de cet établissement, et de nous introduire dans la vie professionnelle grâce à une mise en pratique de nos connaissances, à l’utilisation des compétences acquises et à mettre en épreuve notre esprit d’ingénieur. Le projet consiste à concevoir et réaliser un ROBOT à base du système Android dans le but d’initier et d’améliorer la recherche dans le domaine Mobile/Embarqué à ESPRIT. II. Présentation de l’Organisme d’Accueil Le projet a été réalisé au sein d’ESPRITEC, l’unité de Recherche-Développement-Innovation (RDI) de l’Ecole Supérieure Privé d’Ingénierie et de Technologies (ESPRIT) situé au pôle technologique El Ghazela. Cette unité s’oriente vers la «Recherche appliquée » et privilégie deux axes : – L’axe «Technologique» : pour la maitrise des technologies avancées. Elle nécessite la mise en place d’une plate-forme pour le développement des services et l’expérimentation des nouvelles applications et des nouvelles technologies. – L’axe «Application et service» : pour développer des prototypes, des nouveaux services et applications avancées pouvant avoir des retombées industrielles et/ou socio-économique. ESPRITEC partage ses activités entre plusieurs équipes : Figure 2 - Logo ESPRIT Mobile 3 Présentation générale
  • 15. Robot à base d’Android - L’équipe ESPRIT Mobile1 réalise des Projets sur les différentes plateformes et systèmes mobile, comme Android, BlackBerry, iOS, WP7, et aussi sur la SMART TV, l’AR-Drone, ADK, Panda Board etc… – L’équipe M2M (Machine to Machine) spécialisé dans la technologie ambiante et le traitement d’image. – L’équipe Cloud travaille sur la mise en place des systèmes de Cloud Computing. – L’équipe E-GOV réalise des projets d’intégration et d’urbanisation des systèmes d’informations. Les projets entrepris mobilisent des équipes composées de plusieurs chercheurs, enseignants-chercheurs, ingénieurs et étudiants en projet de fin d’études (PFE) et projet de fin de l’année (PFA) sous la conduite d’un chef de projet. Des étudiants en PFE, Mastères ou Doctorats d’autres institutions sont aussi intégrés dans les équipes de projets dans le cadre de conventions de partenariat avec les laboratoires et unités de recherche des établissements publics. Notre projet, réalisé au sein de l’équipe ESPRIT Mobile entre également dans le cadre d’un grand projet pédagogique innovant à ESPRIT, vise à intégrer les toutes nouvelles tendances technologiques dans l’environnement pédagogique à travers des Workshops orientés, des Travaux Pratiques dirigés, et même des Produits finis à réalisés. III. Problématique du projet Pour aboutir à un système embarqué intelligent basé sur Android et qui répond aux besoins demandés par ESPRITEC et par des différents clients potentiels (entreprises, personnes), il est important de se focaliser en premier lieu sur les problématiques du projet pour pouvoir s'organiser. De la sorte, on va déterminer le périmètre d'action et de faisabilité de ce projet. Comme il est illustré à la figure 3, le projet passe par plusieurs environnements, cela commence sur la machine du développeur, en passant par une phase de réalisation matérielle, vers l’environnement de test réel pour arriver finalement à l’environnent de production. De plus, le projet peut être Figure 3 - Différents environnement du projet transféré d’un environnement à un autre plusieurs fois avant qu’il soit finalisé. 1 http://www.espritmobile.com/ 4 Présentation générale
  • 16. Robot à base d’Android La migration et le déploiement du projet d’un environnement vers un autre ne se fait pas de la même façon et ne présente pas les mêmes degrés de complexité, puisque sur l’environnement de développement, une simple compilation suffira, mais le déploiement de la solution sur les autres environnements surtout la réalisation matérielle présente plusieurs contraintes et difficultés de plus si nous voulons transférer seulement un composant ou une fonctionnalité bien spécifique, sans toucher aux autres composants ce qui rend cette manipulation délicate et pénible d’où le besoin de concevoir une approche qui permet de réaliser cette tâche. Il y a aussi d’autres scénarios possible du système qui nous obligent de concevoir une solution polyvalente tel que :  Système qui répond à des besoins spécifiques en termes de fonctionnalités.  Système qui possède une marge d’évolutivité assez grande.  Prouver la possibilité de fusionner l’intelligence d’Android avec le milieu quotidien IV. Solution proposée La solution proposée comme système embarqué intelligent basée sur le OS Android, sera un ROBOT à base d’Android, équipé avec deux applications, la première aura comme rôle d’assurer le fonctionnement interne du Robot et l’interaction avec le milieu extérieur, la deuxième permet à l’utilisateur de commander et interagir avec le ROBOT en offrant une interface graphique dotée de plusieurs fonctionnalités avancées, et une interface de connexion sans fil. Conclusion Ce chapitre nous a servi à mettre notre projet dans son cadre. En effet, notre projet de fin d’études est réalisé à ESPRITEC, et qui consiste à créer un robot intelligent basée sur Android, dans le but de suivre et accroître l’innovation technologique dans ce domaine et initier tout un nouvel horizon dans la création et l’exploitation des systèmes embarqués intelligents. Dans le chapitre suivant, nous introduirons les concepts nécessaires à la compréhension de ce projet à savoir : une présentation de la solution choisie comme concept et comme plateforme de développement logicielle et matérielle et les autres solutions existantes ainsi qu’une comparaison entre ces derniers pour mettre l’accent sur leurs points forts et faibles. 5 Présentation générale
  • 17. Robot à base d’Android 2. ETAT DE L’ART Introduction Dans ce chapitre nous allons présenter quelques notions et technologies qui vont servir à mieux comprendre notre sujet, ce chapitre sera composé de cinq parties qui seront réparties comme suit. La première partie sera consacrer à la présentation du principe et concept des solutions existantes et leurs nouveaux enjeux avec une étude comparative entre les produits similaires du marché, la seconde partie présente la carte IOIO, son architecture physique et logique ainsi toutes ces composantes pour finir avec une brève présentation de sa plateforme de développement. I. Présentation des Solutions Existantes Les systèmes embarqués ne sont pas particulièrement nouveaux, les premiers systèmes sont apparus au début des années 60. La première génération de ces systèmes a été construite sur des solutions lourdes et complexes à déployer en se basant essentiellement à la programmation bas-niveau et les résultats obtenus n’ont pas toujours été à la hauteur des espérances des utilisateurs. Il faut également ajouter que les systèmes embarqués classiques n’étaient pas suffisamment matures pour tenir véritablement les promesses de l’unification des interfaces de communications vis-à-vis l’utilisateur. Fort heureusement la situation a beaucoup changé ces derniers temps grâce à l’apparition du système mobile Open Source Android: de nouvelles plates-formes techniques embarquées plus simples et plus complètes telles que la carte IOIO, la carte Arduino (4), l’ADK de Google (5) , la PANDA BOARD et la Beagle BOARD sont apparues et le niveau de maturité des systèmes embarqués à base d’Android s’est considérablement accru. Il en résulte le début d’un grand retour des projets embarqués conçues à base d’ANDROID. Vu la présence de quelques produits exploitables sur le marché, le choix Figure 4 - ADK de Google d’une solution pour la création du ROBOT, se base sur plusieurs critères tel que le prix et les fonctionnalités offertes, la compatibilité avec les autres acteurs environnementaux tel que les composants électroniques, et surtout la réponse aux besoins demandés. 6 Etat de l’art
  • 18. Robot à base d’Android Le tableau ci-dessous présente une étude comparative entre les principales solutions sur le marché. Critères de comparaison Carte Arduino Carte Google ADK Carte IOIO Développement JAVA, C++ Sketch JAVA, C++ Sketch JAVA (+IOIO Lib) Compatibilité Versions Android V1.5 with ADB V3.1 Or V2.3.4 V1.5 and UP Dimensions 68 - 53mm 86 - 53mm 70 - 30mm Compatibilité Bluetooth Bluetooth Bluetooth Shield NATIVE (V.3) Shield Plug & Play Compatibilité OpenAccessory Non Oui Oui (V.3) Connectivité USB Hôte Oui Oui Oui Prix 75$ 80$ - 400$ 50$ Tableau 1 Comparaison entre les différentes solutions D’après le comparatif ci-dessus nous constatons que la carte IOIO est la carte la plus adaptée à la création de ce système intelligent. Choix de la solution : Les deux différences les plus significatives entre les 3 solutions sont les suivantes: ADK et ses clones ne fonctionnent que sur des appareils Android très spécifiques, tandis que la carte IOIO pourrait fonctionner sur presque n'importe quel appareil Android depuis Android 1.5. Avec ADK ou l’Arduino vous devriez écrire à la fois le côté Android (Java) et de côté carte (C++) du logiciel (Sketch (6)) et d'établir un protocole de communication (7) entre eux. Vous auriez à connaître les deux langages et deux IDE1 différents et, même si vous faites quelque chose de très trivial, il faudra une importante durée de temps pour obtenir quelque chose qui fonctionne de manière fiable. Avec IOIO, vous écrivez simplement le côté d'Android. Il suffit d’inclure une bibliothèque appelée IOIOLib dans l’application, ce qui fournit une API qui vous permet de contrôler les broches de la carte IOIO et ses fonctions comme s'ils étaient physiquement connectés à votre Android. Vous n'avez pas besoin de se soucier du fait qu'il y a un processeur distinct, des protocoles de communication, etc… Si vous vous en tenez un Dongle Bluetooth dans IOIO au lieu d'un câble USB à l'Android, il communiquera sans fil avec l’appareil. La bonne chose est que votre application n'a pas besoin de s'en soucier, et vous pourrez même revenir en arrière lorsque votre application est en cours d'exécution. IOIO Supporte officiellement le protocole OpenAcessory (ADK)2 de Google. Cette nouvelle fonctionnalité est actuellement réalisée en mode bêta. Les Informations techniques disponibles sur le wiki Figure 5 - Arduino Mega2560 1 Integrated Development Environment 2 Le terme "ADK" Accessory Development Kit : est souvent utilisé comme synonyme de "OpenAccessory", lorsqu’on dit que cette carte supporte ADK ça veut dire qu'elle supporte le protocole OpenAccessory. 7 Etat de l’art
  • 19. Robot à base d’Android IOIO. La façon dont cela fonctionne est que la carte IOIO sera capable de communiquer avec le périphérique Android via le protocole OpenAccessory. Lorsque ce n'est pas supporté, il sera parfaitement switcher à ADB1. Cela vous permet de connecter la même carte IOIO aux deux types de dispositifs, les nouveaux et les anciens. L’application peut très facilement être portée sur le nouveau mode, cela ne nécessite que quelques non-intrusive modifications aux métadonnées de l’application. Avantages de la carte IOIO La carte IOIO Supporte toutes les versions Android - puisque elle fonctionne aussi bien avec OpenAccessory et l’ADB elle peut communiquer avec une très grande variété de dispositifs Android existants, en s'appuyant sur OpenAccessory quand elle existe et en tirant parti des fonctionnalités supplémentaires de l’ADB. D'autres cartes, qui ne prennent pas en charge de l’ADB, sont limitées à tous, sauf aux derniers appareils Android sur le marché. Fonctionnalité - IOIO est presque identique à Arduino Mega (figure 5) en termes de nombre de broches (pins) et de fonctions. La seule différence est le nombre de canaux PWM (IOIO-9, Mega-16) et les canaux de TWI (IOIO-3, Mega-1). Coût - à 50 $, IOIO semble actuellement être la carte la moins chère commercialisée et disponible sur le marché. Une alternative à proximité est une version DIY, ce qui coûte 55 $ et nécessite une certaine amélioration de plus. Développement de haut niveau - les autres cartes nécessite à la fois une application Android et un code intégré en C pour la carte, la conception de votre propre protocole de communication. IOIO fait tout cela automatiquement, il ne reste qu’écrire le code Android de l’application, En utilisant une API Java de haut niveau pour contrôler les fonctions de la carte. Support Forum et Wiki - IOIO a un groupe de discussion active et une extensive documentation wiki, qui continue de croître rapidement. Le projet IOIO est engagé aussi bien dans la communauté amateur que dans la communauté professionnelle Dimensions - IOIO est probablement la plus petite carte, presque aussi petit qu’on pourrait obtenir avec 48 broches E/S, des broches d'alimentation et d'un connecteur USB. Il est beaucoup plus petit que la carte ADK. Bootloader - firmware - IOIO comprend un chargeur de démarrage sécurisé, qui permet les mises à niveau à effectuer à travers un appareil Android. Alimentation - IOIO possède un commutateur-mode à 5V capable de délivrer jusqu'à 1,5 A. Cela permet de charger simultanément un appareil Android et alimenter deux servos moteurs standard sans problème. Quelques autres cartes nécessitent une alimentation de 5V externe pour soutenir ce cas d'utilisation. En outre, IOIO a un limiteur intégré qui permet de limiter le courant de charge d'Android. Ceci est très utile pour les configurations fonctionnant sur batterie, lorsque vous ne voulez pas l'appareil Android à vider votre 1 Android Debug Bridge 8 Etat de l’art
  • 20. Robot à base d’Android batterie. Open-Source - Contrairement à certaines des autres solutions, le matériel de l'IOIO, le Firmware et le logiciel(les APIs) sont totalement open-source avec une licence FreeBSD (très permissive). Cette approche a été choisie parce que selon l’inventeur c'est ce qui marche le mieux pour la communauté des amateurs, et permet aux gens de personnaliser le produit pour leurs besoins, contribuer au projet, le comprendre mieux et concurrencer sur son prix. En conclusion, la carte IOIO est très compétitive avec les autres plates-formes compatibles OpenAccessory, d’où le choix d’utiliser cette carte lors de ce projet. Figure 6 - IOIO – Logo officiel II. La Carte IOIO 1. Présentation IOIO (prononcez: yo-yo) est un produit qui vous permet de connecter des circuits électroniques à un appareil Android et de les contrôler à partir d'une application Android. Il est composé d'une petite carte PCB (2.7x1.2 "= 7x3cm) spécialement conçu pour être piloté via un dispositif Android (avec version d'OS 1.5 et sup.) par le biais de son port USB Ce pilotage s'effectuera via des API JAVA™ simples et intuitives que vous utilisez dans votre application Android qui gère toutes les communications avec la carte sans avoir recours à une programmation embarquée bas Figure 7 - IOIO – Distributeur Sparkfun niveau, ni au moindre programmateur externe). Aucune modification de l'appareil Android est nécessaire - vous éviter la complication de la modification et l'annulation de la garantie. Dès lors le module IOIO permettra à votre système Android d'interagir avec le monde extérieur en lui permettant de disposer de ports d'entrée/sorties tout ou rien, de sortie PWM, d'entrée analogiques, de liaison SPI™, I2C™, UART... 9 Etat de l’art
  • 21. Robot à base d’Android IOIO est disponible pour achat en ligne à partir du site officiel de SparkFun Electronics1. La totalité du logiciel et du matériel sont à 100% open-source sous une licence permissive. 2. Caractéristiques Techniques et capacités La carte électronique est construite autour d’un microcontrôleur PIC série 24F, qui dispose d’une connexion USB hôte. Il suffit donc de la relier à l’aide d’un câble USB à un périphérique Android (OS v1.5 minimum) pour que la carte IOIO interprète des commandes reçues par une application. Pour mieux comprendre c’est quoi la carte IOIO et comment utiliser au mieux ses caractéristiques, cette section prend une brève tournée à travers ce produit et fournit des introductions aux quelques-unes de ses caractéristiques et ses capacités. Figure 9 - Carte IOIO Figure 8 - Montage de la carte IOIO Pour les spécifications techniques, la carte IOIO se compose de : 1. Connecteur USB (type A) connecteur femelle: Permet de connecter l'appareil Android. 2. GND pins (9 pins): prise de terre. 3. VIN pins (3 pins): Utilisé pour l'alimentation à la carte. Tension entre 5V-15V doit être fournie. 4. 5V pins (3 pins): Normalement, utilisée comme sortie 5V lorsque la carte est alimentée à partir de VIN. Peut être utilisé comme entrée 5V en cas VIN n'est pas connecté. 5. 3.3V pins (3 pins): 3,3 V en sortie. 6. I/O pins (48 pins, numérotées 1-48): Des broches E/S. Certains ont des fonctions spéciales, voir ci-dessous:  48 pins d’entrées/sorties (peuvent fonctionner comme des entrées et sorties numériques.) 1 http://www.sparkfun.com/ 10 Etat de l’art
  • 22. Robot à base d’Android  16 entrées analogiques (10-bits)  Jusqu’à 9 sorties PWM  Jusqu’à 4 liaisons séries UART  Jusqu'à 3 canaux SPI.  Jusqu’à 3 liaisons TWI (I2C-compatible) 7. LED d'alimentation: S'allume lorsque la carte IOIO est sous tension. 8. Stat LED: S'allume brièvement lors de la mise sous tension, puis devient sous le contrôle des applications. 9. MCLR pin: Non normalement utilisé. Son but est de programmer le Firmware nouveau Bootloader sur la carte IOIO. 10. Charge Current Trimmer (CHG): Permet de régler la quantité de courant de charge fourni sur la ligne VBUS de l'USB à l'appareil Android. Tourner dans le sens (+) augmente de courant de charge. 11. Régulateur de tension 5v - 1,5 A : Peut charger l'appareil Android ainsi que la puissance d'un couple de petits moteurs. 12. Bootloader : intégré sur la carte, permettant la mise à niveau du Firmware en direct à partir d’une application sur l’appareil Android. Figure 10 - Classification des Pins 3. Plateforme de développement Dans cette section, nous allons jeter un œil à l'architecture de la carte IOIO du point de vue d'un développeur. La carte IOIO offre un ensemble de logiciels et Firmware disponible en téléchargement via la page Github 1officielle du Développeur (8). 1 GitHub est un service web d'hébergement et de gestion de développement de logiciels, utilisant le programme Git 11 Etat de l’art
  • 23. Robot à base d’Android Le pack se compose de :  IOIOLib (V3.23) : API JAVA officielle pour le développement sous Android  Image IOIO Bootloader (v3.23) : pour mettre à jour le Bootloader de la carte  Firmware Image (v2) : pour mettre à jour le Firmware de la carte IOIO  L’application IOIO Manager (9) : elle permet de gérer les images des applications ainsi que les images de Bootloader IOIOLib – Principe de développement : IOIOLib est une bibliothèque Android, qui permet à votre application Android de contrôler la carte IOIO. Elle expose un ensemble d'interfaces Java, couvrant les différentes fonctions de la carte électronique. Lorsque vous générez votre application, IOIOLib se fait emballé dans votre fichier Apk, afin que votre application soit autonome et ne nécessite aucune installation supplémentaire sur l'appareil Android qui l'exécute. L'ensemble du code est pur Java, dépendant uniquement de la norme Android 1.5 (ou version ultérieure). IOIOLib est tout documenté au format Javadoc standard, et cette documentation est destinée à être complète et être utilisée comme référence pendant le codage. Dans ce qui suit, nous essayons de couvrir une utilisation de la bibliothèque à partir d'une approche commune de cas d'utilisation plutôt que d'être 100% formelle. La bibliothèque est organisée en plusieurs packages Java. Le package ioio.api contient toutes les APIs publiques pour contrôler la IOIO. Ceci est le package de notre application qui sera utilisé. Dedans, le paquet ioio.api.exception contient certaines exceptions levées par l'API IOIO. Le paquet ioio.impl contient la mise en œuvre de ces interfaces et n'est pas destinée à être utilisée directement. Le paquet ioio.util contient des utilitaires utiles qui peuvent vous rendre la vie un peu plus facile lors de l'écriture des applications ioio, mais ne fournissent pas les fonctionnalités de base. Ce paquet contient une classe, qui sert de classe de base pour notre application basée sur IOIO, qui gère automatiquement la bonne connexion / déconnexion à la carte IOIO en réponse à des événements d'application. IOIOLib – Utilisation : (sous Eclipse) La dernière version de IOIOLib peut être téléchargée depuis la page Téléchargements (10).  Extraire IOIOLib à un endroit où vous voulez normalement garder vos projets Android.  L'importer dans Eclipse en utilisant Fichier> Importer ... > Général> Projets existants dans Workspace ..., puis choisissez le répertoire IOIOLib vous venez de créer et cliquez sur Terminer.  Il référence de votre projet d'application, conformément à ces instructions  Assurez-vous que votre application déclare android.permission.INTERNET. Cela peut se fait en ouvrant le fichier AndroidManifest.xml qui se trouve à la racine de votre projet, allez à l'onglet Permissions> Ajouter ... > Permissions Utilisateur> 12 Etat de l’art
  • 24. Robot à base d’Android Sélectionnez android.permission.INTERNET sous "Nom".  Assurez-vous que vous avez activé le débogage USB sur votre appareil Android, en allant dans Paramètres> Applications> Développement> Activer le débogage USB. Voici à quoi ressemble un exemple de HelloIOIO public class MainActivity extends IOIOActivity { ... class Looper extends BaseIOIOLooper { private DigitalOutput led_; @Override protected void setup() throws ConnectionLostException { led_ = ioio_.openDigitalOutput(0, true); } public void loop() throws ConnectionLostException { led_.write(!button_.isChecked()); try { Thread.sleep(100); } catch (InterruptedException e) { } } } @Override protected IOIOLooper createIOIOLooper() { return new Looper(); } } Cette Application permettra d’allumer la LED numéro 0 de la carte IOIO via un Bouton Figure 13 Figure 12 - Interface de l'application Démo Figure 11 - Montage de l'exemple Démo Conclusion Dans ce chapitre, nous avons passé en revue les différentes notions nécessaires à la compréhension de notre sujet et nous avons mené une étude comparative entre les différentes approches et solutions disponibles pour réaliser un système embarqué basé sur Android. Puisque ce projet est notre premier contact avec le milieu Android embarqué, il nécessite beaucoup de recherche et dès le début nous savions que selon nos découvertes nous serons amenés à changer les spécifications, avec ces contraintes. 13 Etat de l’art
  • 25. Robot à base d’Android 3. SPECIFICATIONS ET ANALYSE DES BESOINS Introduction Après avoir présenté le cadre général de notre projet, nous allons, dans ce chapitre, entamer la phase de spécification et d’analyse des besoins. En effet, tout au long de ce chapitre, nous allons identifier et préciser les besoins à satisfaire. Ces besoins représentent aussi les fonctionnalités à réaliser dans notre application, ce chapitre sera présenté sous forme de « User cases » et « Sequence Diagrams »- scénarios. Nous commençons ce chapitre avec une description de la gestion de notre projet Le choix d’une méthode agile est évident et après une comparaison entre les principales méthodes agiles, nous allons choisir la méthodologie la plus adéquate pour réaliser ce projet. I. Gestion du projet Trop souvent, de bonnes idées de projet n’aboutissent pas, du fait d’une mauvaise organisation. Pour améliorer nos chances de réussite, nous devons choisir une méthode de développement de logiciels pour notre application. La discipline de gestion des projets comporte deux grandes branches de méthodologie, les méthodes classiques (ou Séquentielle) et les méthodes agiles. Nous allons dans cette partie présenter ces deux approches, faire une brève description des différentes méthodologies, et présenter la méthodologie que nous allons l’adaptée en spécifiant les avantages et la compatibilité avec notre cas de figure. 14 Spécifications et analyse des besoins
  • 26. Robot à base d’Android 1. Approche Agile vs. Séquentielle Pour bien choisir notre type de méthodologie de travaille nous avons dressé le tableau 2-6 qui présente une comparaison entre les deux approches par thème. (11) Thème Approche Séquentielle Approche agile Cycle de vie En cascade ou en V, sans Itératif et incrémental. rétroaction possible, phases séquentielles. Planification Prédictive, caractérisée par des Adaptative avec plusieurs niveaux de plans plus ou moins détaillés sur planification avec ajustements si la base d’un périmètre et nécessaires au fil de l’eau en fonction d’exigences définies au début du des changements survenus. projet. Documentation Produite en quantité importante Réduite au strict nécessaire au profit comme support de d’incréments fonctionnels communication, de validation et opérationnels pour obtenir le feedback de contractualisation. du client. Équipe Une équipe avec des ressources Une équipe responsabilisée où spécialisées, dirigées par un chef l’initiative et la communication sont de projet. privilégiées, soutenue par le chef de projet. Qualité Contrôle qualité à la fin du cycle Un contrôle qualité précoce et de développement. Le client permanent, au niveau du produit et du découvre le produit fini. processus. Le client visualise les résultats tôt et fréquemment. Changement Résistance voire opposition au Accueil favorable au changement changement. inéluctable, intégré dans le processus. Processus lourds de gestion des changements acceptés. Suivi de Mesure de la conformité aux Un seul indicateur d’avancement : le l’avancement plans initiaux. nombre de fonctionnalités implémentées et le travail restant Analyse des écarts. affaire. Gestion des risques Processus distinct, rigoureux, de Gestion des risques intégrée dans le gestion des risques. processus global, avec responsabilisation de chacun dans l’identification et la résolution des risques. Pilotage par les risques. Mesureur succès Respect des engagements initiaux Satisfaction client par la livraison de en termes de coûts, de budget et valeur ajoutée. de niveau de qualité. Tableau 2 - Comparatif entre approche agile et approche classique pour la gestion de projet Maintenant que nous connaissons mieux les différences majeures entre approches traditionnelles et approches agiles à travers la comparaison faite ci-dessus nous avons opté 15 Spécifications et analyse des besoins
  • 27. Robot à base d’Android pour une approche agile pour gérer notre projet. 2. Choix de méthodologie Puisque nous avons choisie d’adopter une approche agile pour gérer notre projet nous allons maintenant choisir quelle méthode agile à suivre tout au long de la réalisation de notre Projet. Pour choisir une méthode nous citons, tout d’abord, quelque unes parmi les principales méthodes agiles, par ordre alphabétique, avec leurs caractéristiques principales. 1. Adaptative Software Development (ASD) Ses caractéristiques principales sont :  Focaliser sur l’objectif.  Se baser sur des composants.  Itérer.  Découper le temps et fixer des deadlines (timeboxing).  Piloter le projet par les risques.  Accepter le changement. 2. Dynamic Software Development Method (DSDM) DSDM se base sur neuf principes :  Implication active des utilisateurs.  Autonomie et pouvoir de décision des équipes.  Livraisons fréquentes.  Adéquation aux besoins des clients comme seul critère d’acceptation du produit.  Développement itératif et incrémental.  Modifications réversibles.  Définition globale macroscopique des besoins.  Intégration des tests dans tout le cycle de vie.  Collaboration et coopération entre toutes les parties prenantes. 3. eXtreme Programming (XP) XP repose sur quatre valeurs :  Communication : l’effort de communication entre les différents intervenants est indispensable pour atteindre l’objectif commun. Nous devons privilégie la communication directe, dans le recueil et la clarification des besoins, dans la planification des itérations, dans la répartition et l’exécution des travaux.  Simplicité : la solution la plus simple est la meilleure pour atteindre les objectifs ; grâce à cette simplicité, l’application pourra évoluer facilement, si nécessaire. La simplicité est applicable au client dans la définition de ces besoins, dans le choix des outils et du processus.  Feedback : le retour d’information est essentiel pour valider le fait que le projet est sur la bonne voie : tests unitaires pour valider le fonctionnement du code, intégration continue 16 Spécifications et analyse des besoins
  • 28. Robot à base d’Android pour détecter des anomalies, tests fonctionnels pour valider la conformité aux besoins, livraisons fréquentes…, autant de pratiques qui rendent plus aisées les adaptations éventuelles, sans attendre le terme du projet.  Courage : le courage est nécessaire aussi bien chez le client que chez les développeurs. Pour mener à bien un projet XP, le client doit avoir le courage de donner un ordre de priorité à ses exigences, de reconnaitre que certains de ses besoins ne sont pas toujours très claires. Le développeur doit aussi avoir le courage de modifier l’architecture même si le développent est déjà bien avancée, de jeter du code existant et d’accepter qu’il est parois plus rapide et efficace de réécrire une portion de code à zéro plutôt que de bricoler du code existant. 4. Rapid Application Development (RAD) RAD n’est pas à proprement parler une méthode agile, mais c’est une approche (semi)itérative incrémentale préconisant un usage intensif des techniques de communication facilitée. 5. Scrum Les valeurs mises en avant par Scrum sont les suivantes :  Transparence : La transparence garantit que tous les indicateurs relatifs à l’état du développement sont visibles par tous ceux qui sont intéressés par le résultat du produit. Non seulement la transparence pousse à la visibilité mais ce qui est rendu visible doit être bien compris ; cela signifie que ce qui est vu est bien le reflet de la réalité. Par exemple, si un indicateur annonce que le produit est fini (ou une partie seulement du produit), cela doit être strictement équivalent à la signification de fini définie par l’équipe.  Inspection : Les différentes facettes du développement doivent être inspectées suffisamment souvent pour que des variations excessives dans les indicateurs puissent être détectées à temps.  Adaptation : Si l’inspection met en évidence que certains indicateurs sont en dehors des limites acceptables, il est probable que le produit résultant sera également inacceptable si on ne réagit pas ; le processus doit donc être ajusté rapidement pour minimiser les futures déviations. Une étude de ces différentes méthodologies révèle qu’elles ont un tronc commun, mais elles se différencient par leur degré de formalisme, les revues, le rythme du projet, le nombre et la longueur des itérations et à la taille de projets. Après cette étude comparative notre choix s’est focaliser sur deux méthode Scrum et XP, mais nous avons choisi XP puisque la qualité principale de cette dernière est la simplicité de plus cette méthode privilégie une équipe autonome, malgré que nous n’avons pas respecté une caractéristique fondamentale de XP qui est le travail en binôme, ce qui n’est le cas avec notre projet, puisqu’il est réalisé par un seul développeur. 3. Choix de la méthodologie : Mobile D Tandis que beaucoup de méthodes agiles ont été présentées, aucune d’elles n’est 17 Spécifications et analyse des besoins
  • 29. Robot à base d’Android spécifiquement visée pour le développement mobile et surtout pour notre cas. Mobile-D est une approche agile pour l’équipement mobile qui est basé sur XP (eXtrême Programing), la méthodologie Crystal (Scalability) et Rational Unified Proces (Assurance de cycle de vie). Elle est conçue pour rencontrer les caractéristiques spécifiques de développement de l’application mobile et le standard de qualité de l’industrie. Le travail de développement est divisé en différentes phases qui sont l’exploration, initialisation, production, stabilisation, et test et correction du système. Il se dégage de ce qui précède que nous allons suivre la méthodologie XP (eXtreme Programing) qui est un processus de développement logiciel agile. XP propose un cycle de développement itératif incrémental, qui fusionne les trois phases de conception, de réalisation et de test pour chaque itération du logiciel à réaliser. En faisant la combinaison des avantages des trois méthodes, Mobile-D satisfait les caractéristiques du développement requis, Cela est représenté dans le tableau 3 suivant : Caractéristiques de Rational Logiciel Mobile Mobile-D Changement élevée En raison du changement élevé des Incertitude élevée, environnement d’environnement exigences, on a besoin de dynamique: Centaines de nouveau de l’approche de développement téléphones portables sont fabriqués incrémental et itératif chaque année Petite équipe de Les petites équipes peuvent réagir Majorité de logiciel mobile sont développement plus rapidement, partager développés par micro (<10) ou l’information, peu de moyennes (<250) entreprises, La taille documentation est nécessaire de l’équipe est souvent inférieure à 20 personnes Client identifiable Pour éviter le malentendu Nombre potentiellement illimité d’affaires d’utilisateur. Client d’affaires plus facile à identifier, par exemple distributeur Environnement de Flexible, extensive, etc… Utilise souvent Java et C++ développement d’objet orienté Non sécurité Les échecs ne causent pas la perte Majorités de logiciel mobile existant critique des vies sont pour le but de divertissement. Les équipement mobiles sont non fiables Logiciel de niveau Les grands systèmes embarqués Tandis que les systèmes mobiles sont d’application exigent la communication étendue complexes et fortement dépendants, les et mécanismes de vérification. applications mobiles peuvent être applications autonomes Petit système Moins de conception d’Up front La taille des applications mobiles varie, requise mais généralement elles sont moins que 10.000 lignes de code Cycle de Pour les buts de la rétroaction Les cycles de développement varient. En développement rapide général, les applications mobiles court peuvent être développés de 1 à 6 mois Tableau 3 - Caractéristiques du Mobile-D 18 Spécifications et analyse des besoins
  • 30. Robot à base d’Android II. Identification des acteurs L’acteur de notre Système Intelligent (Robot) s’intercale entre 3 types d’utilisateurs selon l’environnement d’exploitation, soit les entreprises (principalement industrielles) ou les personnes physiques pour des besoins personnelles, ou les établissements de Recherche (Universités, Laboratoires,…). Ces utilisateurs jouent presque le même rôle ce qui nous permet de dire que notre application n’a qu’un seul acteur qu’on l’appelle dorénavant UTILISATEUR. III. Spécification fonctionnelle Nous commençons par présenter la vision et le use case général de notre projet puis nous découpons le projet sous forme de scénarios. 1. Vision du produit Pendant les premières réunions avec le responsable à ESPRITEC (Equipe ESPRIT Mobile) nous avons discuté les différents côtés de notre projet ce qui nous a permis de définir l’énoncé du problème, l’impact de la problématique, ce que permet le produit, et la position du produit à réaliser dans son environnement et par rapport à l’existant, comme montré dans les deux tableaux suivants: Le problème d’intégration de solutions intelligentes dans le monde réel en utilisant l’intelligence logicielle disponible(Android). Affecte les milieux domotiques, industriels, … L’impact du problème est manipulation délicate et trop de temps perdu pour interagir avec le milieu quotidien d’une façon automatisée Une solution réussite une manipulation plus raffiné des fonctionnalités à assurer permettrait par le système intelligent, une interaction efficace avec le monde extérieur Tableau 4 - Définition du problème Pour ESPRITEC Type de produit ROBOT(Hardware) + 2 applications mobiles. Qui permet d’assurer différentes types de fonctionnalités comme l’exploration, la sécurité, la surveillance, la réaction intelligente. A la différence de les systèmes embarqués existants, Limité en fonctionnalités, Programmables généralement en langage bas niveau, et ne communique pas avec les moyens disponibles pour tout le monde (Smartphone, Tablet, Navigateur Web). Tableau 5 - Position du produit 19 Spécifications et analyse des besoins
  • 31. Robot à base d’Android 2. Besoin fonctionnels a. Explorer un lieu Le ROBOT doit être explorateur, il doit être doté de capacités de déplacement, dans les différentes directions y inclut les rotations à gauche et à droite, l’utilisateur doit être capable de le faire déplacer à volonté et à distance. b. Récupérer le Streaming Vidéo L’application de commande doit récupérer le streaming vidéo à partir de la caméra du ROBOT, pour permettre à l’utilisateur de le visualiser directement. c. Détecter un obstacle Le ROBOT doit être capable de détecter un obstacle à une portée définie, et de l’éviter, en donnant en temps réel des indications sur la distance qui le sépare de cet obstacle. d. Détecter une fuite de gaz Le ROBOT doit être capable de détecter le niveau de gaz (type à définir après) dans l’air, et de lancer une alarme lorsqu’il détecte une fuite et un niveau élevé. e. Lancer une Alerte en cas d’urgence Le ROBOT doit être capable d’activer une alerte et d’envoyer des notifications par les moyens disponibles (Email/SMS) en cas d’urgence. f. Avoir l’état du Robot L’utilisateur sera capable de récupérer un ensemble d’information concernant l’état actuel du ROBOT, soit le niveau du signal wifi, le niveau de batterie, les 3 axes du ROBOT dans l’espace pour détecter les inclinaisons, la géolocalisation etc... 3. Besoin non fonctionnels a. Ergonomie L’application de commande doit respecter les standards de l’interfaçage Homme-Machine, en offrant à l’utilisateur une interface ergonomique et une bonne expérience d’utilisation. L’apparence de cette interface est principalement caractérisée par des composants, des formes, des couleurs et la disposition des éléments. b. Contraintes techniques et matérielles La partie technique et matérielle du ROBOT doit être adaptée aux besoins du projet et doit être totalement contrôlable et gérable via la partie logicielle et d’une façon transparente à l’utilisateur. 20 Spécifications et analyse des besoins
  • 32. Robot à base d’Android c. Contraintes d’utilisation L’interface utilisateur doit être simple et facile à comprendre pour que l’utilisateur puisse bénéficier des fonctionnalités du système. d. Contraintes de performance Le temps de réponse de tout le système doit être acceptable pour une utilisation en temps réel. Le système doit être stable et sûr. e. Automatisation partielle Le système doit être d’une façon partielle automatisé, dans la communication ROBOT-Utilisateur et inversement, et dans les différentes parties de détection. f. Maintenabilité Les différents modules développés du système doivent être faciles à maintenir. Pour cela, le code doit être lisible et bien structuré. Nous devons respecter les standards de codage concernant par exemple les noms des attributs et des variables, les noms des méthodes ainsi que la disposition des commentaires. 4. Cas d’utilisation généraux Pour avoir une vue globale sur les grandes lignes de notre système, les spécifications générales sont synthétisées sous la forme du diagramme UML des cas d’utilisation de la figure 3-17 : ce schéma résume les actions que peut effectuer l’utilisateur du projet. Figure 14 - Cas d’utilisation généraux du projet 21 Spécifications et analyse des besoins
  • 33. Robot à base d’Android Cas d’utilisation 1: Explorer un lieu L’utilisateur sera capable de déplacer le ROBOT à distance, directement à travers une interface dédiée équipée avec les composants nécessaires, une certaine communication avec le ROBOT sera établie au préalable, puis les commandes de déplacements seront envoyés instantanément au ROBOT, qui se charge de la réception des commandes, du traitement, et de l’exécution des ordres. La possibilité d’orienter la caméra du ROBOT pour visionner une certaine zone précise aussi entre dans cette idée d’explorer des lieux. Cas d’utilisation 2 : Récupérer le Streaming Vidéo Le ROBOT se charge d’enregistrer en temps réel une partie du flux vidéo depuis la caméra, l’envoyé à l’application de commande, et ainsi de suite. Cas d’utilisation 3 : Récupérer la distance à un obstacle L’utilisateur doit avoir la possibilité de récupérer à tout moment la distance à l’obstacle le plus proche directement sur l’interface de commande. Le ROBOT se charge d’activer, stabiliser le capteur et d’exécuter à tout moment cette fonctionnalité, une possibilité de prendre une décision si la distance calculée est moins d’une certaine valeur. Cas d’utilisation 4 : Afficher le niveau de gaz L’utilisateur doit avoir la possibilité de récupérer à tout moment le niveau de gaz directement sur l’interface de commande. Le ROBOT se charge d’activer, stabiliser le capteur et d’exécuter à tout moment cette fonctionnalité, et d’être en mode écoute s’il y aura un changement dans le niveau de gaz. Cas d’utilisation 5 : Activer une Alerte Email/SMS En cas d’urgence le ROBOT peut envoyer des alertes SMS/Email à un correspondant et lancer une alerte sonore Cas d’utilisation 6 : Récupérer l’état du ROBOT L’utilisateur peut recevoir un ensemble d’information depuis le ROBOT : Afficher l’orientation du ROBOT : cette information est obtenu directement depuis l’accéléromètre intégré dans le Smartphone du ROBOT, cette information nous donne une indication sur l’inclinaison du ROBOT, l’activation de la géolocalisation sera aussi disponible en OUTDOOR. Afficher l’état du signal WIFI : cette information est primordiale pour l’utilisateur pour garder la connectivité au ROBOT, une fois le signal est faible, une alerte sera affichée à l’écran directement et avant la coupure de connexion. 22 Spécifications et analyse des besoins
  • 34. Robot à base d’Android Afficher l’état de la batterie : elle permet à l’utilisateur de connaitre le pourcentage de batterie du ROBOT et de savoir une approximation du temps restant avant l’alimenter. IV. Cas d’utilisations Détaillés Cette section sera consacrée à la présentation des cas d’utilisations principales. 1. Le 1er Cas- Explorer un lieu Figure 15 – Cas d’utilisation - Explorer un lieu Ce diagramme représente les différents aspects de ce que nous appelons exploration des lieux, que nous présentons dans ce tableau : Cas d’utilisation n° 001 Nom Explorer un lieu Acteur Utilisateur Description Permettre de déplacer librement le Robot et explorer un lieu bien déterminé. Pré-Conditions  ROBOT alimenté et activé,  connexion avec la partie commande établie Post-Conditions N/A Scénario nominal 1. Commander le ROBOT à distance pour le faire déplacer en avant/arrière, le faire tourner à gauche/droite Scénario Alternatif N/A Exception Erreur de connexion :  Le système s’arrête Tableau 6 - Description du cas d'utilisation Explorer un lieu 23 Spécifications et analyse des besoins
  • 35. Robot à base d’Android 2. Le 2ème Cas- Récupérer le Streaming Vidéo Figure 16 - cas d'utilisation - Récupérer le Streaming Vidéo Ce diagramme représente la fonctionnalité responsable de la récupération du streaming vidéo, le ROBOT sera équipé d’une caméra pour l’enregistrement vidéo, l’utilisateur doit avoir la possibilité de récupérer le streaming directement sur l’interface de commande et savoir exactement ce que le ROBOT filme en temps réel, ci-dessous la description : Cas d’utilisation n° 002 Nom Récupérer le streaming vidéo Acteur Utilisateur Description Permettre de recevoir le streaming vidéo en temps réel depuis le ROBOT. Pré-Conditions  ROBOT alimenté et activé,  connexion avec la partie commande établie Post-Conditions N/A Scénario nominal 1. Activer la caméra du ROBOT, et l’envoi du streaming 2. Activer la réception du streaming directement sur l’application de commande Scénario Alternatif N/A Exception Erreur de connexion :  Le système s’arrête Faible bande passante :  Temps de latence plus grand Tableau 7 - Description du cas d'utilisation Récupérer le streaming vidéo 24 Spécifications et analyse des besoins
  • 36. Robot à base d’Android 3. Le 3ème Cas- Détecter un obstacle Figure 17 - Cas d'utilisation – Détecter un obstacle Ce diagramme représente la fonctionnalité de détecter un obstacle à proximité et calculer la distance qui le sépare au ROBOT, on trouve une description de ce cas ci-dessous : Cas d’utilisation n° 003 Nom Récupérer la distance Acteur Utilisateur Description Permettre à l’utilisateur d’afficher la distance qui sépare le robot à un obstacle. Pré-Conditions  ROBOT alimenté et activé,  Capteur bien fonctionnel Post-Conditions N/A Scénario nominal 1. Détecter l’obstacle 2. Mesurer la distance 3. Eviter l’obstacle à une distance déterminée Scénario Alternatif N/A Exception Erreur de connexion :  Pas de récupération de valeur Tableau 8 - Description du cas d'utilisation Récupérer la distance 25 Spécifications et analyse des besoins
  • 37. Robot à base d’Android 4. Le 4ème Cas- Détecter une fuite de gaz Figure 18 - Cas d'utilisation - Détecter une fuite de gaz Ce diagramme représente la fonctionnalité de calculer le niveau de Gaz dans l’air autours du ROBOT et détecter s’il y a une fuite ou non, ci-dessous une description détaillée : Cas d’utilisation n° 004 Nom Récupérer le niveau de gaz Acteur Utilisateur Description Permettre à l’utilisateur d’afficher le niveau de gaz autour détecté par le ROBOT. Pré-Conditions  ROBOT alimenté et activé,  Capteur bien fonctionnel Post-Conditions N/A Scénario nominal 1. Détecter le niveau de Gaz 2. Envoyer le niveau de gaz à l’application de commande 3. Lancer une Alerte en cas d’urgence Scénario Alternatif N/A Exception Erreur de connexion :  Pas de récupération de valeur Tableau 9 - Description du cas d'utilisation récupérer le niveau de gaz 26 Spécifications et analyse des besoins
  • 38. Robot à base d’Android 5. Le 5ème Cas- Récupérer l’état du ROBOT Figure 19 - Cas d'utilisation - Récupérer l’état du ROBOT Ce diagramme présente la fonctionnalité de récupérer un ensemble d’informations et d’indicateurs qui nous donne plus de détail sur l’état du ROBOT lorsqu’il est actif, ci-dessous une description détaillé de ce cas: Cas d’utilisation n° 005 Nom Récupérer l’état du ROBOT Acteur Utilisateur Description Récupérer un ensemble d’information qui représente les caractéristiques actuelles du ROBOT comme le niveau du signal, le niveau de batterie etc. Pré-Conditions  ROBOT alimenté et activé,  Détection de gaz activée Post-Conditions N/A Scénario nominal 1. Récupérer automatiquement toutes les informations sur l’interface utilisateur. Scénario Alternatif N/A Exception Pas de service GPS/internet disponible:  Pas d’envoi d’information Tableau 10 - Description du cas d'utilisation récupérer l'état du ROBOT 27 Spécifications et analyse des besoins
  • 39. Robot à base d’Android V. Diagramme de séquence système Pour avoir une vue séquentielle globale sur les principales fonctionnalités de notre système, on présente de diagramme de séquence système dans la figure 15 : Figure 20 - Diagramme de séquence système Ce diagramme montre l’interaction de façon séquentielle entre l’acteur et le système. Une première connexion doit être établie, une fois la connexion est effectuée, l’utilisateur peut sélectionner une action à faire, lorsqu’il aura l’interface principale. La fonctionnalité explorer un lieu consiste à faire déplacer le ROBOT dans les directions voulues librement que ce soit en avant, arrière ou en tournant à gauche et droite, les commandes seront envoyées à l’objet Daemon qui va exécuter ces taches directement sur le ROBOT. La fonctionnalité de surveiller une zone se base essentiellement sur le fait que l’utilisateur peut recevoir le streaming vidéo directement sur l’application de commande. Récupérer la distance à l’obstacle et le niveau de Gaz constituent aussi des fonctionnalités prêtes à utilisés via des interfaces utilisateurs ou celui-ci peut recevoir la distance au obstacle ainsi que le niveau de gaz en air, une action sera effectuée si le niveau de gaz ou la distance atteint un niveau prédéfini. 28 Spécifications et analyse des besoins
  • 40. Robot à base d’Android VI. Diagrammes de Séquence détaillés Dans cette partie nous présentons une étude dynamique du projet en se basant sur les diagrammes de séquence détaillés 1. Diagramme de séquence 1– Déplacer le ROBOT Figure 21 - Diagramme de séquence – Déplacer le ROBOT Ce diagramme de séquence représente les différentes étapes établies afin de mettre le ROBOT en mouvement, le système sera divisé en modules actives comme suit :  Application 1 : elle représente l’application de commande qui représente l’interface utilisateur d’une part et le lien sans fil avec le ROBOT d’autre part.  Application 2 : elle représente l’application résidente qui contrôlera le ROBOT réellement elle fait le lien entre l’application de commande et la carte IOIO  Carte IOIO : elle représente l’interface entre l’application Android 2 et tous les composants électroniques, dans ce cas les moteurs DC et les circuits associés qui seront détaillés dans le chapitre réalisation  Moteurs DC : représentent les composants électroniques qui seront activés/désactivés via la carte IOIO L’utilisateur doit entrer l’adresse IP du ROBOT pour pouvoir se connecter, l’application 1 tente d’établir la connexion avec l’application 2, une fois la connexion est établie, il y aura l’activation de la carte IOIO, et l’interface de commande principale sera affichée à l’utilisateur. 29 Spécifications et analyse des besoins
  • 41. Robot à base d’Android L’utilisateur sera capable de commander le ROBOT à l’aide d’un Joystick, le faite de bouger le Joystick va générer un ensemble de commandes suivant le sens, qui seront envoyées à l’application 2 qui reçoit ces commandes, les traites, puis les transformer en commandes compréhensibles par la Carte IOIO, une fois les données sont envoyés à cette carte, elle se charge de générer des signaux de commandes vers les différents moteurs. Lorsque l’utilisateur relâche le Joystick, l’application 1 envoi une commande spéciale d’arrêt à l’application 2 qui envoi de même une commande à la carte IOIO pour arrêter immédiatement les moteurs. 2. Diagramme de séquence 2– Surveiller un lieu Figure 22 - Diagramme de séquence – Surveiller un lieu Ce diagramme de séquence représente les différentes étapes et possibilités pour assurer la fonctionnalité de surveiller un lieu, le système sera divisé en modules actives de la même façon comme dans le diagramme précédent. La partie connexion est nécessaire pour pouvoir établir la suite des actions. L’utilisateur sera capable d’activer la caméra du Smartphone situé dans le ROBOT, suite à cette action l’application 2 se charge de lancer la caméra et d’envoyé le streaming en retour 30 Spécifications et analyse des besoins
  • 42. Robot à base d’Android à l’application 1 dans laquelle l’utilisateur peut visualiser ce flux directement dans l’interface de commande. L’utilisateur peut aussi orienter la caméra suivant deux axes, Pan(gauche/droite) et Tilt(haut/bas), ces deux fonctions seront bien accessible à tout moment via l’interface de commande à l’aide de deux composants sous forme de ‘SeekBar’ qui seront détaillés dans le chapitre réalisation, la manipulation de ses deux composants génèrent des commandes qui seront envoyés à l’application 2 qui à son tour traite ces commandes et l’état actuel de la caméra et décide ou non et avec quel angle de changer l’orientation de la caméra. Le changement de l’orientation de la caméra peut s’effectué aussi bien dans le cas où le ROBOT est en arrêt que lorsqu’il est en mouvement. Comme option l’utilisateur peut prendre des snapshots directement via la caméra du ROBOT, et ces photos seront sauvegardées dans un emplacement spécifique dans le Smartphone 2. 3. Diagramme de séquence 3– Détecter un Obstacle Figure 23 - Diagramme de séquence – Détecter un Obstacle Ce diagramme de séquence montre le déroulement de la détection d’obstacle assurée par le ROBOT, le système sera divisé en modules actives de la même façon comme dans le diagramme précédent. 31 Spécifications et analyse des besoins
  • 43. Robot à base d’Android La partie connexion est nécessaire pour pouvoir établir la suite des actions. L’utilisateur aura la possibilité d’afficher la distance qui sépare le ROBOT au premier obstacle sur son chemin, une commande sera envoyé à l’application 2 qui se chargera d’activer le capteur de proximité utilisé via la carte IOIO, le capteur donc va être en fonction il va envoyer les informations sur la distance calculée à la carte IOIO qui va à son tour traiter et envoyer ces informations à l’application 2. Au niveau de l’application 2, elle va envoyer ces informations à l’application 1 qui va visualiser des valeurs compréhensibles pour l’utilisateur, selon les valeurs reçues par l’application 2 un certain traitement va s’effectuer pour décider si elle va réagir ou non, dans le cas où ces valeurs sont dans une certaine portée qui sera détaillée dans le chapitre réalisation, elle va ordonner à la carte IOIO pour exécuter une ou un ensemble d’action pour éviter un choc avec l’obstacle, les moteurs vont changer la direction vers la droite ou gauche. Le type de capteur de proximité et son fonctionnement vont être détaillés dans le chapitre réalisation. 4. Diag.de séquence 4 – Détecter une fuite de Gaz Figure 24 - Diagramme de séquence – Détecter une fuite de Gaz Ce diagramme de séquence montre le déroulement de la détection d’une fuite de gaz assurée par le ROBOT, le système sera divisé en modules actives de la même façon comme dans le diagramme précédent. 32 Spécifications et analyse des besoins
  • 44. Robot à base d’Android La partie connexion est nécessaire pour pouvoir établir la suite des actions. L’utilisateur aura la possibilité d’afficher le niveau de gaz dans l’air dans la pièce où se situe le ROBOT, une commande sera envoyé à l’application 2 qui se chargera d’activer le détecteur de gaz via la carte IOIO, le détecteur donc va être en fonction il va envoyer les informations sur la concentration du gaz calculée dans l’air à la carte IOIO qui va à son tour traiter et envoyer ces informations à l’application 2. Au niveau de l’application 2, elle va envoyer ces informations à l’application 1 qui va visualiser des valeurs compréhensibles pour l’utilisateur, selon les valeurs reçues par l’application 2 un certain traitement va s’effectuer pour décider si elle va réagir ou non, dans le cas où ces valeurs sont au-delà de la valeur normale et présentent un danger, elle va ordonner à la carte IOIO pour exécuter une Alerte qui sera envoyé directement à l’utilisateur. Le type de gaz et le fonctionnement du détecteur vont être détaillés dans le chapitre réalisation. VII. Maquettes 1. Maquette du ROBOT Figure 25 - Maquette du ROBOT Suivant notre besoin essentiel et notre vision sur le produit à réaliser, nous dessinons grossièrement une maquette du futur ROBOT. Pour ce faire nous modélisons deux vues pour aboutir à la figure 16. Ces deux vues présentent la squelette générale du ROBOT, composée d’une tête qui va 33 Spécifications et analyse des besoins
  • 45. Robot à base d’Android contenir essentiellement un Smartphone Android équipé d’une caméra, une connectivité Wifi, un accéléromètre, un dispositif GPS, et qui constitue le cerveau du ROBOT et la partie intelligente contenant la deuxième application qui assure la réception des commandes issues de l’application de commande, et assure aussi l’interfaçage avec tous ce qui est électronique pour exécuter ces commandes convenablement, l’application est responsable de la capture vidéo à partir de la caméra, la capture des différentes signaux à partir des différents composants du ROBOT, le traitement de ces informations et l’exécution des actions appropriés. La tête du ROBOT est liée au corps via un mécanisme mobile qui permettra un certain degré de rotation et d’inclinaison qu’on détaillera dans le chapitre Réalisation. Le corps du ROBOT est composé d’une plateforme de déplacement composée essentiellement de 4 roues avec deux chaines, une partie électronique qui va contenir la carte IOIO, les capteurs, l’alimentation et les autres circuits nécessaires. 2. Maquette de l’application de commande Figure 26 - Maquette de l’interface principale de l’application de commande L’application de commande se présente sous la forme d’une interface principale, avec des widgets, boutons et autres contrôles découpée en cinq zones organisées comme suit :  En haut un menu qui contient 4 Tabs représentants un Tab pour le niveau de batterie, un Tab pour la distance au premier obstacle, un Tab qui affiche le niveau de gaz et un autre Tab pour afficher les coordonnées d’orientation du ROBOT dans l’espace. 34 Spécifications et analyse des besoins
  • 46. Robot à base d’Android  À gauche deux bulles qui permettent à l’utilisateur de savoir le niveau du signal et le niveau de la luminosité si elle est disponible, un Pad/Joystick principal de commande qui va permettre de déplacer le ROBOT.  Au milieu une grande interface qui représente un afficheur du streaming Vidéo reçu à partir du ROBOT.  À droite, deux éléments qui affichent les alertes qui correspondent à la faiblesse du signal Wifi ou à une erreur de connexion avec le ROBOT, un Widget qui donne une indication sur la vitesse du ROBOT.  En bas, un ensemble de commande pour activer/désactiver le Streaming vidéo, le déplacement de la caméra, le flux audio Pour donner un aspect familier à notre application de commande nous avons choisi d’adopter le « look and fée» d’une sorte d’interface de jeu ou d’un tableau de bord ou panneau de commande unique qui va contenir la quasi-totalité des fonctionnalités. Conclusion La spécification des besoins nous a permis d’avoir une vision plus claire du sujet et une compréhension plus profonde des tâches à réaliser. Elle mène également à prévoir les problèmes à rencontrer et chercher les solutions permettant de les contourner. Nous avons essayé tout au long de ce chapitre de bien présenter les besoins fonctionnels et non fonctionnels du sujet et les différents scenarios d’utilisation de l’application. Ces scenarios vont être la base sur laquelle nous allons concevoir et réaliser notre projet, ces deux phases seront détaillées dans les deux chapitres qui suivent. 35 Spécifications et analyse des besoins
  • 47. Robot à base d’Android 4. CONCEPTION Introduction Nous consacrons ce chapitre à la présentation de l’architecture et de la conception de notre projet. Nous commençons par décrire l’architecture de notre application principale à travers les différentes vues dynamiques à travers le diagramme de séquence objets, ainsi qu’un diagramme d’activités global et un diagramme de de classe qui va jeter un coup d’œil sur les différentes entités du projet. Ensuite, nous décrivons la conception de la structure technique du ROBOT, par plusieurs schémas explicatifs, représentant les différents composants matériels qui seront choisis et bien détaillés dans le chapitre suivant. I. Diagramme de séquence objets Pour avoir une vue séquentielle globale sur les principales fonctionnalités de notre système, on présente de diagramme de séquence système dans la figure 27 : Figure 27 - Diagramme de séquence objets 36 Conception
  • 48. Robot à base d’Android Ce diagramme montre l’interaction de façon séquentielle entre les 6 Objets principaux du scénario et l’acteur, ces objets représentent les classes principales de l’application de commande et les classes principales de l’application Daemon coté ROBOT. Une première connexion doit être établie entre les deux applications, pour que l’utilisateur puisse sélectionner une action à faire via l’interface qui sera affichée. II. Diagramme d’activités Dans cette partie nous présentons le diagramme d’activité lié à tout le système Figure 28 - Diagramme d'activités Selon ce diagramme on remarque que notre système est multitâche, il offre un ensemble de possibilités qui sont tous accessible via une seule interface principale de commande, qui est le moyen de communication entre l’utilisateur et le ROBOT. L’interface de commande est toujours en action que ce soit lors de réception des données ou lors d’envoi des commandes ou même lorsque elle est en écoute car à tout moment elle assure la connectivité au ROBOT et reste prête à n’importe quel action ou notification L’utilisateur sera capable de commander le ROBOT à l’aide d’un Joystick, le faite de bouger le Joystick va générer un ensemble de commandes suivant le sens, qui seront envoyées à l’application 2. 37 Conception
  • 49. Robot à base d’Android III. Diagramme de Classe On présente ici le diagramme de classe du système développé : Figure 29 - Diagramme de Classe Le diagramme de classes est un schéma statique. Il représente le point de vue statique d'une application, il est non seulement utilisée pour visualiser, décrire et documenter les différents aspects d'un système, mais aussi pour la construction de code exécutable de l'application logicielle. Il décrit les attributs et les opérations d'une classe et aussi les contraintes imposées au système. Le diagramme de classe de notre projet montre deux grandes parties qui représentent chacune une application séparée. La première application nommée application de commande est celle qui va être disponible pour l’utilisateur pour commander et gérer le ROBOT, une de ses classes importantes est la classe Client_Thread qui va se charger d’établir et de maintenir la connectivité avec sa correspondante dans la deuxième application Server_Thread. La deuxième application nommée Application Daemon pour dire qu’elle est résidente dans le ROBOT et elle fonctionne sans intervention humaine directe, elle fonctionne en 38 Conception
  • 50. Robot à base d’Android permanence dès que le ROBOT est mis sous tension. Elle se compose d’un nombre plus grand de classes parmi lesquelles on cite la classe IOIO_Thread_Connection qui se charge de la communication avec la carte IOIO en utilisant la bibliothèque IOIO Lib. Conclusion La conception détaillée nous a permis d’avoir une vision plus précise sur le sujet et une compréhension plus profonde des tâches à réaliser. Elle mène également à prévoir les besoins matérielles et logicielles nécessaires pour atteindre l’objectif. Nous avons essayé tout au long de ce chapitre de bien présenter les différents diagrammes conceptuels du projet. Ces diagrammes vont être la base sur laquelle nous allons réaliser notre projet, cette phase sera détaillée dans le chapitre suivant. 39 Conception
  • 51. Robot à base d’Android 5. REALISATION Introduction Ce chapitre constitue le dernier volet du rapport de notre projet de fin d'études. Il a pour objectif d'exposer le travail achevé. Pour ce faire, nous avons divisons la réalisation en deux grandes parties, la réalisation logicielle qui va contenir tous le travail effectué au niveau de développement des deux applications, la deuxième partie est la réalisation matérielle qui va décrire les différentes phases de construction du ROBOT. Enfin, nous clôturons ce chapitre par la présentation du chronogramme des taches réalisées et des défis relevés. I. Réalisation Logicielle Dans cette partie nous allons présenter l’environnement du travail, les différentes phases de développement des applications, et le résultat obtenu. 1. Environnement de travail Chaque développeur doit choisir un environnement de développement constitué généralement par un IDE, et quelques autres outils et logicielles. 1. Eclipse Eclipse est un environnement multi-langage de développement comprenant un environnement de développement intégré (IDE) et un plug-in extensible système. Il est écrit principalement en Java et peut être utilisé pour développer des applications en Java et, par le biais de divers plug-ins, autres langages de programmation, y compris Ada, C, C + +, COBOL, Perl, PHP, Python, Ruby. 2. SDK Android Android SDK est indispensable pour développer sous Android, c’est un kit de développement crée pour être intégré dans un IDE, il offre un ensemble d’outils nécessaire pour le développement et le test comme le ADT, le compilateur, l’émulateur, le DDSM … Figure 30 - Logo Eclipse 1. IOIO Lib IOIO Lib est une bibliothèque Android spéciale crée par le constructeur de la carte IOIO, qui permet à l’application Android de contrôler la carte IOIO. Elle expose un ensemble d'interfaces Java, couvrant les différentes fonctions de la carte. Elle offre un ensemble de 40 Réalisation
  • 52. Robot à base d’Android classes et méthodes qui servent à communiquer avec les différents pins de la carte, d’autres méthodes servent à changer la fréquence ou la pulsation d’un tel pin. Lorsqu’on génère l’application, IOIOLib s’intègre dans la cible .apk, afin que l’application soit autonome et ne nécessite aucune installation supplémentaire sur le Smartphone Android qui l'exécute. 2. Fritzing1 Fritzing est un logiciel libre d'édition de circuit électronique ou circuit imprimé. Il est possible de compléter sa bibliothèque de composants. Chaque composant est défini à l'aide de 3 éléments : l'image du composant, qui peut être réalisée à partir d'une image, le symbole du composant et la représentation du composant sur le circuit imprimé (nombre et position Figure 31 - Logo Fritzing des pistes). Tout en étant un logiciel d'apparence simpliste, il possède malgré tous des fonctions d'exportation vers Eagle et Gerber, ainsi que les typon au format PDF et SVG. On va l’utiliser pour schématiser les différents montages du projet, ainsi que le montage complet de tout le ROBOT. 3. Photoshop CS5 Photoshop est un logiciel de retouche, de traitement et de dessin assisté par ordinateur édité par Adobe. Il est principalement utilisé pour le traitement de photographies numériques, mais sert également à la création d’images et de design. On l’utilise énormément dans notre application de Figure 32 - Logo Photoshop commande, pour créer presque tous les éléments graphiques allant du Joystick, les Tab personnalisés, les éléments flottant jusqu’au design général de l’interface et des bordures ainsi les autres besoins comme le SplashScreen et l’icône. 4. EGit (plugin) 2 Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, et distribué selon les termes de la licence publique générale GNU version 2. EGit est une interface écrite en Java, puis une extension git pour Eclipse, elle permet toutes les opérations de SVN. 5. Dropbox 3 Figure 33 - Logo GIT Dropbox est un service, sécurisé, de stockage et de partage de fichiers dans le Cloud. 2. Développement Figure 34 - Dropbox logo On va diviser cette section en deux parties chacune corresponde à une application, on va 1 http://fritzing.org/ 2 http://www.eclipse.org/egit/ 3 http://www.dropbox.com/ 41 Réalisation
  • 53. Robot à base d’Android détailler les phases de développement de chacune élément par élément étape par étape. 1. Application de commande Cette Application représente l’interface de commande principale pour l’utilisateur, à travers elle il peut contrôler et gérer le ROBOT.  Phase 1 – Interface de connexion Cette interface représente le moyen avec lequel l’utilisateur peut insérer l’IP du ROBOT ainsi qu’un mot de passe en cas ou le ROBOT est sécurisé, une fois les paramètres sont insérer un clic sur le bouton OK va créer une socket réseaux de type TCP qui va tenter de trouver cette IP, une fois l’IP est trouvée et les trames sont envoyées l’autre application va traiter le mot de passe s’il Figure 35 - Interface de connexion est validé elle va ouvrir un canal de communication sur le port 81, et elle va répondre par un message de confirmation, ce message va permettre d’afficher l’interface de commande à l’utilisateur et le laisser contrôler le ROBOT. Dans l’autre cas la fenêtre de connexion s’affiche une autre fois pour signaler que les paramètres sont incorrects.  Phase 2 – Système de déplacement Cette fonctionnalité de base est assurée à l’aide d’un Joystick conçu spécialement pour cette tâche, il est composé d’un élément mobile qui sera sensible à la touche, cet élément peut varié dans un rayon limité par rapport au centre fixe, le centre de cet élément est repéré par un point, chaque point est caractérisé par un x et un y, ils représentent deux coordonnées par rapport au centre, selon leurs valeurs, une variable qui s’appelle commande Figure 36 - Joystick de déplacement initialisé à STOP va contenir une certaine chaine de caractères de cette liste : NORD, NORD-EST, EST, SUD-EST, SUD, SUD-OUEST, OUEST, NORD-OUEST et STOP. Une fois la variable change de valeur elle sera immédiatement envoyée via un canal UDP à l’application au côté ROBOT.  Phase 3 – Streaming de la caméra Dans l’interface principale au milieu on trouve une grande zone dédiée pour l’affichage du flux vidéo issu de la caméra du ROBOT, le principe est plutôt compliqué, l’application situé au niveau du ROBOT lance la caméra en mode visualisation et pas enregistrement, une fois la caméra est en fonction, l’application fais une capture successive d’images et Figure 37 - Zone d'affichage du streaming 42 Réalisation
  • 54. Robot à base d’Android enregistre cet ensemble d’images dans un "buffer" comme le cas d’une vidéo classique, pour envoyer tous ces images d’une manière fluide et pour ne pas encombré le canal déjà établie entre les deux partie, on a trouvé une solution qui se résume dans la création d’un petit serveur Web au niveau de l’application Daemon, ce serveur va fonctionner sur le port 80 pour ne pas augmenter le débit sur l’autre port déjà ouvert, il assure la disponibilité d’une page contenant une image pris chaque 0.2 sec à partir du buffer, et de l’autre part l’application de commande va récupérer cette image du serveur et rafraichir la zone d’affichage avec une fréquence supérieure à la fréquence d’envoi, avec cette méthode en gagne en bande passante , aussi on gagne au niveau de la rapidité d’exécution des commandes sans avoir penser à la taille du flux reçu.  Phase 4 – Mécanisme d’orientation de la caméra Cette fonctionnalité permet de tourner la caméra (Smartphone) à gauche ou à droite, l’incliner en haut ou en bas, l’application de commande comporte 2 SeekBars, une horizontale située en bas de la zone de streaming, et une verticale située à droite de la même zone, elles sont directement opérationnelles par l’utilisateur qui peut déplacer sont doit directement pour tourner la caméra dans la direction voulue, une fois la valeur de Figure 38 - SeekBars l’un des SeekBars change, une commande sera directement envoyée au ROBOT en indiquant la valeur de changement selon cette valeur le résultat sera un mouvement angulaire de la caméra.  Phase 5 – Niveau de Gaz Pour avoir le niveau de gaz actuel, nous avons développé cette interface qui reçoit d’une façon continue les valeurs depuis le capteur de gaz situé dans le ROBOT et à travers l’application Daemon et la carte IOIO, les valeurs sont comprises entre 0 et 700 ppi, un indicateur du niveau dangereux indique si la valeur actuelle Figure 39 - Interface de détection de Gaz est acceptable ou non.  Phase 6 – Distance à l’obstacle Pour avoir la distance qui sépare le ROBOT au premier obstacle, nous avons développé cette interface qui reçoit d’une façon continue les valeurs depuis le détecteur de proximité situé dans le ROBOT et à travers l’application Daemon et la carte IOIO, la distance est affichée en centimètre. Figure 40 - Interface de détection  Phase 7 – Pourcentage de la batterie de distance Cette fonctionnalité est réalisée à travers un circuit qui va calculer le pourcentage de la batterie restant ainsi que la valeur de la batterie du Smartphone situé dans le ROBOT, et ces valeurs sont reçues et affichées dans l’application de commande, on trouve aussi une estimation sur la durée restante. Figure 41 - Interface d'affichage d'état de Batterie 43 Réalisation
  • 55. Robot à base d’Android  Phase 8 – Notifications de connexion Une fois on récupère l’état du signal wifi du ROBOT, on peut juger est ce que ce signal est bien acceptable pour maintenir la connexion ou non, dans le cas où ce signal devient faible une notification d’alerte s’affiche en indiquant un Warning, dans le cas où l’application détecte que la connexion wifi avec le ROBOT est coupée, une nouvelle alerte s’affiche indiquant une erreur, ces fonctions sont réalisées à travers des Thread qui tourne en Background d’une façon continue. Figure 42 - Notification de connexion  Phase 9 – Orientation L’orientation du ROBOT est effectuée en recevant les 3 indicateurs de l’accéléromètre du Smartphone du ROBOT, un certain calcul se fait et on aura exactement ces valeurs, on peut juger sur la stabilité du ROBOT, ou l’inclinaison du terrain à travers ces indicateurs. Figure 43 - Tab d'orientation  Phase 10 – Caméra Move / ROBOT Speak Caméra Move est une fonctionnalité optionnelle qui permet une deuxième méthode pour orienter la caméra du ROBOT directement à travers les indicateurs accéléromètre du Smartphone de commande, elle est encore en phase bêta mais elle peut servir pour les tests. ROBOT Speak est une fonctionnalité optionnelle, elle est une sorte de Talkie-Walkie entre le Smartphone de l’utilisateur et le ROBOT, une fois activée l’utilisateur peut parler directement au Smartphone, ce dernier à l’aide du microphone va récupérer la parole et l’application va envoyer ce flux audio vers l’autre application, un Haut-parleur au niveau du ROBOT servira pour diffuser le son.  Phase finale – Application Complète Ci-dessous les interfaces finales de l’application de commande : Figure 44 - écran 1 - Interface de connexion 44 Réalisation
  • 56. Robot à base d’Android Figure 45 - écran 2 - Interface de commande 2. Application Daemon (démon) Cette Application représente la partie intelligente du ROBOT, elle offre tout un système autonome de contrôle, basée généralement sur des activités héritées de Thread, et d’autres hérités de Runnable, ce qui l’application prête à n’importe que action que ce soit provenant de la partie commande via des trame TCP ou UDP ou de la part des composants électroniques via la carte IOIO, nous détaillons ci-dessous les différentes phases de réalisation de cette application.  Phase 1 –connexion C’est la deuxième partie de la même fonctionnalité de l’application 1, dès la mise sous tension du ROBOT l’application affiche son adresse IP, et ouvre un canal réseau d’écoute pour attendre l’autre application. Une fois la requête de demande de connexion arrive, l’application vérifie le mot de passe, et répond par une requête de confirmation, et ouvre un nouveau canal de communication dédié à la réception des commandes sur le Port spécifique 81, toutes les commandes reçues sont envoyées à une unité qui valide, traite et achemine les actions.  Phase 2 – Streaming vidéo Nous avons déjà expliqué cette partie dans la première application, il reste à indiquer que cette application détecte les qualités disponible des images prises par la caméra, et affecte une qualité minimale mais pas inférieur à 320x480, pour que le traitement et le transfert sera un peu rapide et on aura un minimum de temps de latence sans avoir une différence niveau qualité d’affichage. Pour le serveur Web attribué dans l’application, il ouvre un canal de communication accessible depuis n’importe quel adresse du réseau, donc si on possède l’adresse IP du ROBOT, on peut suivre le streaming tout comme la personne qui commande le ROBOT. 45 Réalisation
  • 57. Robot à base d’Android Les images successives sauvegardées dans un Buffer auront une taille maximale de 1024 Ko soit à peu près 10 images compressées de type JPEG, une fois le Buffer est plein il y aura automatiquement un écrasement de l’image la plus ancienne et ainsi de suite.  Phase 3 – Déplacement du ROBOT Une fois l’utilisateur déplace le joystick dans une direction, l’application daemon reçoit une commande spécifique, cette commande est traitée pour distinguer est ce que il s’agit d’un mouvement vers l’avant (NORD) ou vers la droite (EST) ou autre … une fois la commande est identifiée, une suite d’action seront attribuées à chacun des 4 moteurs, suivant ce tableau : Moteur 1 Moteur 2 Moteur 3 Moteur 4 (avant -droit) (avant -gauche) (arrière -droit) (arrière - gauche) NORD Sens direct Sens direct Sens direct Sens direct NORD-EST STOP Sens direct STOP Sens direct EST Sens Inverse Sens direct Sens Inverse Sens direct SUD-EST STOP Sens Inverse STOP Sens Inverse SUD Sens Inverse Sens Inverse Sens Inverse Sens Inverse SUD-OUEST Sens Inverse STOP Sens Inverse STOP OUEST Sens Inverse Sens direct Sens Inverse Sens direct NORD-OUEST Sens direct STOP Sens direct STOP Tableau 11 – Commande des Moteurs Pour ce faire l’application passe ces nouvelles commandes à une unité qui va les transformer en des ordres compréhensibles par la carte IOIO, du genre : activer tel Pin avec tel courant etc... RQ : suivant le tableau résultant et suivant des tests effectués, on peut utiliser juste deux moteurs pour déplacer le ROBOT, le M1 et le M2, on aura le même résultat mais une petite baisse de vitesse, par contre on gagne dans la consommation d’énergie, ça reste un choix pour le client final d’utiliser tant de moteurs qu’il en a besoin.  Phase 4 –Orientation de la caméra Ce mécanisme est assuré par deux Servos Moteurs avec un bras constitué de deux ‘Braquets’ (supports métalliques), un pour assurer le PAN (panorama) et l’autre le TILT(inclinaison), une fois que l’application reçoit la commande elle traite la valeur, et la change en fréquence qu’elle l’envoi à la carte IOIO pour pouvoir commander le Servo Moteur voulu avec la valeur adéquate. Le premier Servo Moteur possède un angle d’action égale à 200° ce qui nous permet d’effectué une orientation de gauche à droite facilement, même on peut tourner avec un angle de 20° vers l’arrière. Le 2ème Servo Moteur possède un angle d’action plus limité de 120°, vu qu’il y aura des contraintes mécaniques dans son mouvement, il nous permet de s’orienter vers le Haut, vers l’avant (position par défaut) et une petite inclinaison vers le bas de 20°.  Phase 5 – Détection de gaz La détection du Gaz s’effectue à l’aide d’un module qu’on a développé spécialement pour ça, il s’occupe de l’écoute active du Pin de la carte IOIO attaché au détecteur de Gaz, aussi il se 46 Réalisation
  • 58. Robot à base d’Android charge de gérer la stabilité du capteur lors du démarrage, une fois le capteur détecte un niveau de gaz supérieur à la normale, il génère un signal électrique analogique, qu’il se passe par la carte IOIO, et selon sa puissance l’application traite cette information et donne directement les bonnes valeurs à la partie d’envoi qui se charge d’envoyer ces valeurs à l’application de commande où il seront directement visible dans la zone dédiée pour ça.  Phase 6 – Détection d’obstacles La détection d’un obstacle s’effectue aussi à l’aide d’un module développé spécialement pour ça, il fait de l’écoute active du Pin de la carte IOIO attaché au capteur de proximité, le capteur choisit est un capteur Ultra-son il envoi et reçoit un signal ultrasonique chaque période (de l’ordre de 20 ms), selon la rapidité de la réception il estime avec une précision de 1 cm la distance qu’il le sépare à l’obstacle, il génère un signal électrique analogique, qu’il l’envoi à la carte IOIO, l’application traite cette information et donne directement des valeurs compréhensibles à la partie d’envoi qui se charge d’envoyer ces valeurs à l’application de commande où il seront directement visible dans la zone dédiée pour ça. Une fois la distance détectée est inférieure à une valeur prédéfinie (10 cm), le ROBOT s’arrête et change de direction vers la droite/gauche, ce mécanisme intelligent permet d’éviter les obstacles proches. On peut bien entendu exécuter n’importe quel action de type lancer une alarme ou suivre un certain trajet etc…  Phase 7 – Récupération d’état de Batterie Pour récupérer l’état de la batterie du ROBOT, on a recourt à un circuit spécial qui détecte le pourcentage restant vis-à-vis la capacité totale, cette valeur est envoyé à la carte IOIO est sera lu à partir de l’application Daemon chaque intervalle de temps (5 min) on ajoute à cette valeur la valeur de la batterie du Smartphone, puis on envoie les deux à l’application de commande qui se charge de les afficher et d’estimer la durée restante.  Phase 8 – Orientation du ROBOT On récupère les valeurs données par l’accéléromètre et la boussole (si elle est disponible) puis l’application traite ces informations avant de les envoyées à l’application de commande  Phase 9 – Envoi d’alertes Dans le cas où on détecte un niveau de gaz élevé, l’application se charge de lancer une nouveau module, ce dernier il effectue une procédure pour lancer une alerte, il envoie un SMS spécial/Mail qui contient un message prédéfini alertant l’utilisateur qu’il y a une fuite de gaz, et il le propose d’appeler l’un des numéros d’urgence, une alerte SONORE sera aussi déclenchée.  Phase finale – Application Complète Après assemblage de tous ces fonctions nous aurons une application complète prête à opérer, cette application ne nécessite pas une interface conviviale avec des beau design vu qu’elle interagit avec un ROBOT est une autre application à distance, mais au minimum elle doit être compréhensible. 47 Réalisation
  • 59. Robot à base d’Android Figure 46 - Interface de l'application Daemon II. Réalisation Matérielle La réalisation matérielle du ROBOT comporte plusieurs phases, on va commencer par présenter un peu l’environnement, le matériel requis et les outils utilisés, puis on détaille tous les phases de construction jusqu’au aboutir à un résultat final. 1. Environnement de travail Pour construire un ROBOT on doit avoir un ensemble d’outils et on aura besoin d’un endroit adéquat pour le faire, pour ce faire on liste ci-dessous ces différents nécessités.  Atelier : nous avons utilisé pendant les premières phases le laboratoire d’électromécanique d’ESPRIT, où on a trouvé les équipements et les outils pour pouvoir commencer nos tests, après on a décidé de changer la stratégie et d’avoir nos propres outils et équipements et migrer vers le Labo ESPRIT-Mobile.  Outils & équipements : puisque notre ROBOT se compose d’une partie électronique donc on aura besoin des outils de base pour l’assemblage, soudure, la connexion filaire, les différentes tests électriques, voici une liste complète : Fer à souder, multimètre, Transformateur de courant, un cutter, des piles, des connecteurs (pin strip), des fils conducteurs, maquette de test, des diodes de test, des résistances, toile isolante, … 2. Composants matériels Notre ROBOT a besoin d’un ensemble de composants pour pouvoir voir le jour, on liste ici tous les composants principaux pour construire le ROBOT, leurs spécification technique: 48 Réalisation
  • 60. Robot à base d’Android  Un Smartphone Android (Huawei GAGA) La première chose indispensable à avoir pour construire ce ROBOT, est un Smartphone, sur lequel il y aura l’OS Android qui sera notre milieu d’exploitation et de développement de l’application qui va gérer tout le ROBOT, aussi on va exploiter tous les autres composants du Smartphone comme suit : o La carte WIFI jouera le rôle de connectivité sans fil du ROBOT o La connectique Bluetooth, sera un autre moyen exploitable pour se connecter au ROBOT o La carte d’acquisition GSM + puce : nous les exploitant en envoyant les SMS d’alerte à n’importe que numéro, on peut aussi avoir la possibilité d’appeler ou d’envoyer des commandes SMS pour commander le ROBOT o La carte 3G : on peut connecter le ROBOT à Internet directement, on doit ainsi penser au temps de latence, et la bande passante o L’écran : il servira d’interface pour afficher des notifications visuelles, ou autre informations o Microphone : Le ROBOT sera capable d’écouter son entourage, enregistrer est diffuser, on peut avoir un ROBOT détecteur de son, ou même un ROBOT qui réagit à des commandes vocales. o Haut-parleur : il servira comme une sortie sonore du ROBOT, un tas de possibilités existe o L’accéléromètre : nous l’utilisant dans la récupération de l’orientation du ROBOT dans l’espace o La Boussole : servira à indiquer l’orientation selon le Nord du ROBOT o GPS : est nécessaire pour avoir la localisation de notre ROBOT o La carte SD/le stockage interne : servira énormément pour la sauvegarde des données volumineuses comme les photos, vidéos, son et toute autre information générée ou traitée par le ROBOT Nous avons choisi d’utiliser le Huawei GAGA, il tourne sous Android 2.2, il comporte toutes les spécifications requises pour le projet ainsi qu’il possède deux avantages majeures, le poids et les dimensions sont les plus faibles, aussi le prix il est le moins cher du marché (environ 199 DT soit 130 $) – [voir annexe pour les spécifications techniques complètes] Figure 47 - Huawei Gaga 49 Réalisation
  • 61. Robot à base d’Android  Une carte IOIO La carte IOIO est notre grand secret, elle est la relation entre l’OS Android (SOFT) et l’électronique (HARD) (voir Chapitre 2.II) Figure 48 - Carte IOIO  Moteurs + Roues (ROVER5) Pour pouvoir se déplacer le ROBOT a besoin de 4 Moteurs + 4 Roues, après une recherche dans les constructeurs robotique nous avons trouvé ce modèle qui s’appelle ROVER5 c’est un châssis équipé de 4 moteur DC avec deux chaines en plastiques qui couvre les 4 bases de Roues, il servira comme base du ROBOT Figure 49 - Plateforme de déplacement CARACTÉRISTIQUES Tension nominale moteur: 7,2 V Blocage du moteur actuel: 2.5A Couple de sortie d'axe: 10Kg/cm Rapport Boîte de vitesse: 86.8:1 Type de codeur: Quadrature Résolution du codeur: 1000 changements d'état par 3 tours de roue Vitesse: 1Km/h  Motor Driver (TB6612FNG) C’est un petit circuit imprimé qui est nécessaire pour pouvoir commander les 4 Moteurs DC simultanément et via la même source d’alimentation Figure 50 - Motor Driver 50 Réalisation
  • 62. Robot à base d’Android CARACTERISTIQUES Tension d'alimentation: VM = 15V max, VCC = 2.7-5.5V Courant de sortie: Iout = 1,2 (en moyenne) / 3.2A (crête) Le contrôle Standby pour économiser l'énergie CW / CCW / court freinage / arrêt /modes de commande de moteur Built-in circuit de coupure thermique et le circuit de détection de basse tension Toutes les broches de la TB6612FNG espacées de 0,1 " Condensateurs de filtrage sur les lignes d'approvisionnement  Capteur Ultrason(SEN10737P) Comme capteur de proximité on a choisi d’utiliser le capteur ultrason SEN10737P, Ce capteur Grove-ultrasons est un module sans contact de mesure de distance qui est compatible avec le système Grove. Il est conçu pour une utilisation facile dans les projets modulaire avec la performance industrielle. Figure 51 - Détecteur Ultrason CARACTERISTIQUES Plage de détection: 3cm-4m, meilleur résultat en angle de 30 degrés. Interface Grove Précision : ~ 1 cm Alimentation 5V DC  Capteur de Gaz(SEN90512P) Le capteur de gaz choisi est le SEN90512P c’est un capteur de gaz (MQ2) ce module est utile pour détecter les fuites de gaz (dans la maison et de l'industrie). Il peut détecter GPL, l'i-butane, le méthane, l'alcool, l'hydrogène, la fumée et ainsi de suite. S'appuyant sur son temps de réponse rapide. Les mesures peuvent être prises dès que possible. Également la sensibilité peut être ajustée par le potentiomètre. Figure 52 - Capteur de gaz CARACTÉRISTIQUES Haute sensibilité au GPL, le gaz naturel, gaz de ville Faible sensibilité à l'alcool, la fumée. Réponse rapide Stable et durable Circuit de pilotage simple MQ-5: gaz de ville, l'hydrogène, 100 ppm à 3,000 ppm 51 Réalisation
  • 63. Robot à base d’Android  Servos Moteur + accessoires Pour pouvoir orienter la caméra et la faire tourner à gauche/droite et en haut/bas, nous avons choisi d’utiliser un mécanisme qui se compose de deux Servos Moteurs et les accessoires en relations comme les ‘Brackets’. Figure 53 - Servo Moteur Figure 54 - Brackets Un montage est requis pour avoir le résultat ci-dessous : CARACTERISTIQUES Nom de marque: EMax Item: ES08A Tension de fonctionnement: 4.2-6V Vitesse de fonctionnement: 0.10sec/60degree (4.8v) Couple de blocage: 1.8kg/cm Plage de température: -55 ℃ 0 ℃ Dimension: 32 (notamment l'oreille cas servo) x11.5x24mm Poids: 9g Kit comprend: Servos Horns x3 & Vis x3 Liste des éléments du Paquet 9g Servo Bracket: Support x2 Yoke x1 Rivet plastique (3X5.5) x4 Rivet plastique (2X5.6) x8 Rondelle plastique x2 Figure 55 - Montage du bras de la caméra Visses x8  Batterie Pour assurer une alimentation à tous les composants du ROBOT, nous avons choisi d’utiliser une alimentation centralisée par le biais d’une seule batterie 12 V, 2.2 AH /20HR, avec un prix de 27 $. Figure 56 - Batterie 52 Réalisation
  • 64. Robot à base d’Android 3. Construction matérielle Dans cette partie nous allons présenter tous les schémas et montages électroniques effectués afin d’avoir une vue détaillée et profonde sur chaque élément construit. 1. Smartphone et carte IOIO Figure 57 – Montage Carte IOIO - Smartphone Le Smartphone doit être connecté à la carte IOIO via le port USB comme le montre la figure ci-dessus, l’alimentation de la carte IOIO est séparée donc on doit connecter les pins Vin et GND à +VCC et GND de la batterie. Une fois connectée et alimentée la carte IOIO peut communique avec le Smartphone à travers notre application. Le mode débogage doit être activé dans le Smartphone. 2. Plateforme de déplacement Figure 58 – Montage électronique de la plateforme de déplacement 53 Réalisation
  • 65. Robot à base d’Android La figure montre le montage de deux Moteurs DC avec le Motor Driver cité avant, le Motor Driver doit être connecté à la carte IOIO du côté montré dans le schéma, les Pins attribués doivent être les mêmes utilisés dans l’application. Chaque Motor Driver peut faire fonctionner deux moteurs, donc on aura besoin de refaire ce montage en changeant bien évidement les pins de 4-11, le Motor Driver est alimenté avec 3.3 V via la carte IOIO, et il alimente les moteurs par 9v via la batterie. Chaque Moteur possède deux pins pour le commander, faire circuler le courant dans un sens ou un dans l’autre sens permet d’inverser le sens de rotation du Moteur. 3. Capteur de gaz Figure 59 – Montage Carte IOIO et capteur de gaz Le capteur de gaz comporte 3 pins, on connecte le pin Signal à la carte IOIO (fil bleu), par une entrée analogique, par exemple le PIN 34, ce même nombre va être utilisé dans l’application pour faire l’écoute du signal analogique généré lorsque il y aura une fuite de gaz. Les deux autres fils sont pour l’alimentation et la masse, ce capteur ne nécessite pas plus de 5 V donc on peut l’alimenter directement par le PIN 5v de la carte IOIO. 4. Capteur Ultrason Figure 60 – Montage Carte IOIO et capteur ultrason Le capteur Ultrasonique se connecte à la carte IOIO via une sortie analogique connecté ici au PIN 6(fil jaune) jouant le rôle du SIGNAL, elle génère un signal analogique au fur et à mesure qu’il détecte un obstacle, la deuxième sortie (fil orange) sert comme stabilisateur du 54 Réalisation
  • 66. Robot à base d’Android capteur, elle est toujours à 1, les deux autres fils sont pour l’alimentation el la masse, le capteur ultrason a besoin de moins de 5 v donc il peut prendre sa tension de la carte IOIO. 5. Servos Moteurs Figure 61 – Montage de la carte IOIO avec les servos moteurs Le mécanisme d’orientation de la caméra nécessite deux servos moteurs, ils sont branchés comme suit, la sortie en jaune représente le SIGNAL analogique (PWM) d’entrée qui va commander le servos moteur pour le faire tourner d’un tel angle. Ils sont liés ici aux pins 3 et 6, les autres sorties sont pour l’alimentation (5v) et la masse. 4. Estimation du coût On présente ici une estimation du coût du ROBOT : Produit Prix Smartphone Huawei Gaga 130 $ Carte IOIO 50 $ Rover5 55 $ Motor Driver 8.95 $ x 2 Capteur Ultrason 15 $ Capteur de Gaz 6.90 $ Servos Moteurs 9.90 $ x 2 Brackets 9.90 $ x2 Batterie 27 $ Autres 40 $ TOTAL 381 $ Figure 62 - Estimation du coût du ROBOT 55 Réalisation
  • 67. Robot à base d’Android 5. Produit final On présente ici le produit final réalisé, pendant la partie de mettre tous les composants ensemble nous avons la possibilité de changer quelques PINS suivant les contraintes techniques rencontrés. a. Montage électronique Fritzing Figure 63 - Schéma électronique global Ce montage Global montre presque tous les composants électroniques du ROBOT, on aura toujours la possibilité d’ajouter d’autres composants et d’avoir de nouvelles fonctionnalités tant qu’il reste des PINS vides dans la carte IOIO, nous parleront des nouvelles possibilités dans la section perspectives. 56 Réalisation
  • 68. Robot à base d’Android b. Album Photos On présente ici un ensemble de photos du ROBOT depuis les premières phases jusqu’à la phase finale. Figure 64 - Le Robot dans sa première phase Figure 65 - Le Robot dans la phase intermédiaire Ces Photos sont prises dans des dates différentes, elles montrent l’évolution du Robot pendant les 2 premiers mois, où le grand travail été sur le développement des applications et comment gérer la connectivité entre eux. 57 Réalisation
  • 69. Robot à base d’Android Figure 66 - Le Robot en phase finale Ces Photos présente un produit final et bien fonctionnel, avec lequel nous avons participé à plusieurs évènements (voir annexes) III. Défis relevés Après avoir achevé ce projet, nous pouvons citer les différents problèmes rencontrés que nous avons pu résoudre tout au long de son réalisation :  Problème de consommation en énergie, et l’effet auto-drain rencontré avec le Motor Driver.  Le temps énorme que nous avons pris pour nous documenter sur la carte IOIO et l’utilisation de matériel.  Le Problème du temps de latence du ROBOT.  Le problème de synchronisation entre deux applications Android distantes.  Le problème de la bande passante limité.  Les blocages techniques lors du montage de quelques circuits électroniques.  Le problème du non disponibilité de la quasi-totalité des composants électroniques en Tunisie. IV. Perspective & Evolution D’après les paragraphes qui précèdent nous pouvons dire qu’il reste des points à optimiser dans notre projet tel que l’optimisation de la réception du streaming vidéo, la gestion des cas d’urgence lors des incidents, l’amélioration de la partie traitement d’information, ce manque est dû à des contraintes techniques puisque ce projet est notre première 58 Réalisation
  • 70. Robot à base d’Android expérience avec le Matériel géré par Android. Comme perspective, nous pouvons rendre notre projet plus polyvalent en ajoutons des capteurs de température, d’humidité, de magnitude, de couleurs, de courant, de force, de pression, infrarouges, téléphonique, "de chocs", d’autres types de gaz, d'inclinaison, de niveau, Humidistances, Transducteurs à ultrasons etc… Ces composants nous ouvrent l’esprit à d’autres idées réalisables à travers un système embarqué basé sur Android, nous citant ci-dessous quelques idées de projets:  Robot suiveur de ligne  Robot détecteur de mines (métaux)  Robot autonome de surveillance  Robot spécialisé dans la détection des différents types de gaz (milieux industriels, plateformes pétrolières)  Robot explorateur de zones inaccessibles pour humains (catastrophes naturelles)  Système d’éclairage basé sur Android  Système d’alarme basé sur Android  Appareil de détection de niveau d’alcohol (Breath Analyser)  Système de notification pour boite aux lettres  Système de verrouillage intelligent  Système d’aide à la décision pour voiture  Système intégré pour réfrigérateur basé sur Android  Quadricoptère volante basée sur Android V. Chronogramme Figure 67 - Chronogramme général On remarque que la réalisation de ce projet été bien distribué au niveau de plusieurs environnements en parallèle et sur une période de 6 mois. 59 Réalisation
  • 71. Robot à base d’Android CONCLUSION GENERALE Ce projet de fin d’études, qui s’est déroulé à ESPRITEC, avait pour but la conception et la réalisation d’un ROBOT intelligent à Base du système Android pour des buts divers comme la sécurité, la surveillance, l’exploration etc... « Android Based ROBOT » offre une multitude de fonctionnalités dont, les essentielles sont :  Visualisation du Streaming Vidéo directement sur le Smartphone de l’utilisateur.  Déplacement avancé et exploration d’endroits inaccessibles.  Détection d’obstacles et réaction automatisée.  Détection de fuite de Gaz,...  La gestion des Alertes suite à des évènements précises. Notre projet a couvert au bout du compte la majeure partie des fonctionnalités qui nous ont été demandées au début, mais opportunités d’améliorations de ce projet sont multiples. D’une part, nous pourrons améliorer l’application pour rendre l’interactivité plus souple et complète avec l’utilisateur, aussi on peut évoluer même le ROBOT en lui intégrants de multiples nouveaux capteurs et détecteurs, et circuits diverses pour le rendre encore plus complet et automatisée. D’autre part, nous pourrons penser à lui ajouter des modules pour qu’il puisse gérer non seulement les situations déjà programmées mais aussi de nouvelles situations où il peut apprendre tout seul à l’aide d’algorithmes d’apprentissage et d’intelligence artificielle, qu’on peut modéliser facilement au niveau de l’application Android. D'un point de vue personnel, tout au long de ce projet, nous avons eu l’occasion de mettre en pratique nos connaissances acquises au sein de l’école ESPRIT, aussi bien en programmation et développement qu’en électronique, embarquées et en matières Télécom et nous avons également eu l’opportunité de travailler avec de nouveaux outils, matériels, et méthodologies. Cette expérience a été très enrichissante et importante car elle a marqué la fin de ce cycle d’ingénieur et nous a permis d’être confrontés aux responsabilités qui sont celles d’un ingénieur : faire face aux délais, au stress et aux contraintes du travail dans un milieu de recherche et d’innovation. 60 Conclusion
  • 72. Robot à base d’Android BIBLIOGRAPHIE 1. Mike Lockwood, Erik Gilling, Jeff Brown. Google I/O 2011: Android Open Accessory API and Development Kit (ADK). Youtube.com. [Online] 05 11, 2011. [Cited: 01 01, 2012.] http://www.youtube.com/watch?v=s7szcpXf2rE. 2. TSVI, Ytai Ben. Profil Google+. Plus.Google.com. [En ligne] [Citation : 15 04 2012.] https://plus.google.com/113760481226159480550/about. 3. FELLER, SAM. An Interview with Ytai Ben-Tsvi, Inventor of the IOIO. Engineer Blogs. [Online] 03 21, 2012. [Cited: 03 24, 2012.] http://engineerblogs.org/2012/03/an-interview- with-ytai-ben-tsvi-inventor-of-the-ioio/. 4. Site officiel ARDUINO. Arduino.cc. [En ligne] [Citation : 03 01 2012.] http://arduino.cc/. 5. Google. Android Open Accessory Development Kit. Developer.android.com. [En ligne] [Citation : 01 04 2012.] http://developer.android.com/guide/topics/connectivity/usb/adk.html. 6. First Sketch. Arduino.cc. [En ligne] [Citation : 15 02 2012.] http://arduino.cc/en/Tutorial/Sketch. 7. Two steps communication protocol. arduino.cc. [En ligne] [Citation : 19 02 2012.] http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1292733514. 8. Tsvi, Ytai Ben. Github ytai / ioio. Github.com. [En ligne] https://github.com/ytai/ioio. 9. —. The IOIO Manager ApplicationNew Page Edit Page Page History. Github.com. [En ligne] https://github.com/ytai/ioio/wiki/The-IOIO-Manager-Application. 10. Android Software and IOIO Application Firmware Images. github.com. [En ligne] https://github.com/ytai/ioio/wiki/Downloads. 11. Rota, Véronique Messager. Gestion de projet agile avec Scrum, Lean, eXtreme Programming... 3e édition. s.l. : Eyrolles. 61 Bibliographie
  • 73. Robot à base d’Android ANNEXE OpenAccessory et ADK OpenAccessory OpenAccessory est une nouvelle fonctionnalité pour Android, qui permet de connecter des périphériques externes à un appareil Android via une connexion USB. Cette fonctionnalité expose une interface standardisée sur le bus USB, ainsi que d'une API Java permettant une application Android à communiquer avec l'accessoire sur l'autre extrémité. Cette fonctionnalité est supportée sur Android 2.3.4 et supérieur. Le protocole OpenAccessory permet à l'appareil Android à agir comme un hôte ou d'un périphérique sur le bus USB (le mode hôte est pris en charge uniquement sur Android 3.x et supérieur, et seulement sur certains appareils). OpenAccessory est un protocole de bas niveau: il dispose d'un seul canal de communication full-duplex entre l'appareil Android et l'accessoire, sur laquelle des octets arbitraires peuvent être envoyés dans les deux sens - un peu comme une connexion UART. Il laisse au concepteur d'accessoires pour concevoir le protocole de niveau supérieur, c'est à dire quels sont les messages à envoyer et à ce que leur sens est de l'application Android et de l'accessoire. ADK Le kit de développement de l'accessoire (ADK) est une implémentation de référence des cartes OpenAccessory enabled, développé par Google et a annoncé conjointement avec OpenAccessory. Cette carte est essentiellement un Arduino Mega avec un Shield à bord d'hôte USB. Il est livré avec une bibliothèque C ++ de côté Arduino qui implémente le protocole. Suite à Google, Figure 68 USB Host and Accessory Modes plusieurs constructeurs ont publiés des cartes compatibles. 62 Annexe
  • 74. Robot à base d’Android Spécification Huawei Gaga U8180 General Information Memory Brand Huawei Internal Yes, Internal Memory : 256MB RAM + Memory 512MB Flash Model Gaga U8180 External Yes, Up to 16GB Weight 100 G Memory Form Factor Touch Bar Memory Slot Yes, Micro SD Card Dimensions 104x56x13 MM Message GSM 850 / 900 / 1800 / 1900 / UMTS SMS Yes Operating Freq 900 / 2100 MHz MMS Yes Touch Screen Yes, Capacitive Touch Screen Email Yes Display Color 2.8 inches QVGA, TFT Capacitive Touchscreen, 262K Colors Social Google Maps, Google Search, Gmail Networking Display Size Huawei Gaga U8180 has a display size Services of 240 x 30 px Music Sensors G-sensor for Auto-Rotate UI Ring Tone Vibration, Polyphonic, MP3 Camera Yes, 3.2 Mega Pixels Camera with Focus FM N/A Camera Res. 2048 x 1536 Pixels Music Yes, Music Formats : MP3, AAC+, eAAC Zoom Yes, Digital Zoom with 3.5mm Audio Jack Video Yes, QVGA (240x320 Pixels) at 24fps Speaker Yes Video Player Yes, Video Formats : MP4, H.263, H.264, Headset Yes 15fps VGA / 30fps WQVGA Data Software GPRS Yes Games Yes Bluetooth Yes, v2.1 with A2DP Browser Yes, WAP 2.0/HTML Wirless Yes, Wi-Fi 802.11 b/g/n Operating System Android OS, v2.2 (Froyo) Protocol Call Records Port Yes, Micro USB (High Speed USB) Phone Book Practically Unlimited Edge N/A Received Calls Practically unlimited Infra Red No Dialed Calls Practically unlimited 3G Yes Battery GPS Yes, with A-GPS support Stand-By Time N/A CPU Yes, Qualcomm MSM7225 528MHz Talk Time N/A Processor Li-ion 1200 mAH Salespack Handset, Battery, Charger, Earphone, USB Cable, User Manual, Warranty Card 63 Annexe
  • 75. Robot à base d’Android Capteur Ultrason – Dossier Technique Spécification Supply voltage 5V Global Current Consumption 15 mA Ultrasonic Frequency 40k Hz Maximal Range 400 cm Minimal Range 3 cm Resolution 1 cm Trigger Pulse Width 10 μs Outline Dimension 43x20x15 mm Dimensions Mécaniques M 64 Annexe
  • 76. Robot à base d’Android Utilisation Installation Matérielle Une brève impulsion ultrasonique est transmise à l'instant 0, réfléchie par un objet. Le seigneur reçoit ce signal et le convertit en un signal électrique. L'impulsion suivante peut être transmis lors de l'écho est disparu. Cette période est appelée période de cycle. La durée du cycle recommandent devrait pas être inférieur à 50ms. Si une impulsion largeur 10μs de déclenchement est envoyé à la broche de signal, le module à ultrasons se produire huit signal de 40 kHz à ultrasons et à détecter l'écho de retour. La distance mesurée est proportionnelle à la largeur d'impulsion d'écho et peut être calculée par la formule ci-dessus. Si aucun obstacle n'est détecté, la broche de sortie donne un signal de niveau haut 38ms. Programmation /* Ping))) Sensor This sketch reads a PING))) ultrasonic rangefinder and returns the distance to the closest object in range. To do this, it sends a pulse to the sensor to initiate a reading, then listens for a pulse to return. The length of the returning pulse is proportional to the distance of the object from the sensor. The circuit: * +V connection of the PING))) attached to +5V * GND connection of the PING))) attached to ground * SIG connection of the PING))) attached to digital pin 7 created 3 Nov 2011 by David A. Mellis modified 30 Jan 2012 by Tom Igoe This example code is in the public domain. */ 65 Annexe
  • 77. Robot à base d’Android // this constant won't change. It's the pin number // of the sensor's output: const int pingPin = 7; void setup() { // initialize serial communication: Serial.begin(9600); } void loop() { // establish variables for duration of the ping, // and the distance result in inches and centimeters: long duration, inches, cm; // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: pinMode(pingPin, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(5); digitalWrite(pingPin, LOW); // The same pin is used to read the signal from the PING))): a HIGH // pulse whose duration is the time (in microseconds) from the sending // of the ping to the reception of its echo off of an object. pinMode(pingPin, INPUT); duration = pulseIn(pingPin, HIGH); // convert the time into a distance inches = microsecondsToInches(duration); cm = microsecondsToCentimeters(duration); Serial.print(inches); Serial.print("in, "); Serial.print(cm); Serial.print("cm"); Serial.println(); delay(100); } long microsecondsToInches(long microseconds) { // According to Parallax's datasheet for the PING))), there are // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per // second). This gives the distance travelled by the ping, outbound 66 Annexe
  • 78. Robot à base d’Android // and return, so we divide by 2 to get the distance of the obstacle. // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf return microseconds / 74 / 2; } long microsecondsToCentimeters(long microseconds) { // The speed of sound is 340 m/s or 29 microseconds per centimeter. // The ping travels out and back, so to find the distance of the // object we take half of the distance travelled. return microseconds / 29 / 2; } 67 Annexe
  • 79. Robot à base d’Android Motor Driver TB6612FNG Block Diagram Fonctions des PINS 68 Annexe
  • 80. Robot à base d’Android Operation Range Fonction H-SW de contrôle Description Opérationnelle H-SW 69 Annexe
  • 81. Robot à base d’Android Caractéristiques visées Caractéristiques électriques 70 Annexe
  • 82. Robot à base d’Android Diagramme d’application Typique 71 Annexe
  • 83. Robot à base d’Android Capteur de Gaz (MQ5) Caractéristiques électroniques Parameter Items Min Type Max Unit name System Characteristics VCC Working Voltage 4.9 5 5.1 V Heating PH 0.5 - 800 mW consumption RL Load resistance can adjust RH Heater resistance - 33 - Ω Sensing Rs 3 - 30 kΩ Resistance Installation Matérielle Connectez ce module à la broche analogique de Grove. Vous pouvez gagner la tension présente à travers la broche SIG. Plus la concentration du gaz, plus la tension de sortie de la broche SIG. La sensibilité peut être réglée en tournant le potentiomètre. S'il vous plaît noter le meilleur temps de préchauffage de la sonde est d'environ 24 heures. Programmation Connectez le module avec l'aide Grove Bouclier A0 comme sur la photo ci-dessus. Utilisez le programme ci-dessous pour obtenir la tension. Vous pouvez voir la tension ira plus élevé si la concentration des incréments de gaz. void setup() { Serial.begin(9600); } void loop() { float vol; int sensorValue = analogRead(A0); vol=(float)sensorValue/1024*5.0; Serial.println(vol,1); } 72 Annexe
  • 84. Robot à base d’Android 1er Article sur Tunandroid.com TUNANDROID.COM La Communauté Android en Tunisie « Android Based ROBOT » – Un Robot Tunisien avec un cerveau Android1 PAR HO USSEM EDD INE L ASSO UED , LE 6 FÉVRIE R 2012 Avec ses premiers pas, le Robot à bien pris une forme et peut être déclaré comme une Version Alpha du projet de Réalisation d’un ROBOT Basée sur le OS Mobile ANDROID, dans le cadre d’un Projet de fin d’études à ESPRIT (Ecole Supérieure Privée d’Ingénierie et de Technologie) en TUNISIE. L’idée de base de ce projet été comment Transformer un smartphone Android en un Robot! Connecter le monde Android(Soft) au monde électronique(Hard) est bien évidement possible maintenant, quelques solutions de faire communiquer ces deux mondes existent, citant la carte IOIO(utilisé dans ce Robot),la carte Arduino, la Google ADK Board,… un choix est possible selon les besoins du projet et les caractéristiques de chaque plateforme, je vous propose quelques comparaisons entre ces solutions: Google ADK vs Arduino ADK vs Sparkfun IOIO vs ADK Shield IOIO over OpenAccessory (ADK) The IOIO and Android Based Hardware The Buzz at the Google I/O 2011 Android est devenu de plus en plus intéressant pour le développement de matériel. Maintenant, vous devriez bientôt pouvoir brancher manettes de jeu, matériel personnalisé, des capteurs et autres dispositifs et de faire une plate-forme Android-Anywhere. Les nouvelles API de gestion de matériel permettra à tout le monde de développer des accessoires matériels pour Android, à partir d’amateur individuels vers les grandes marques mondiales. Vous n’avez pas à signer un NDA, et vous n’avez pas besoin d’une licence de matériel spécial, les aspects qui concerne la politique d’Apple n’existera pas chez Android. N’importe qui peut le faire. Revenant à ce Robot, comme c’est une première expérience à ESPRIT, il sera destiné pour le Test, la sécurité et la recherche dans le domaine Android Embarqué, la domotique avec Android, la notion de Maison Intelligente etc… 1 Lien : http://www.tunandroid.com/content/2012/02/06/android-based-robot-un-robot-tunisien-avec-un- cerveau-android/ 73 Annexe
  • 85. Robot à base d’Android Il sera doté d’un ensemble de capacités et il assurera pas mal de fonctionnalités, je vous liste ici quelques-unes: -Déplacement dans les 4 directions (inclut les rotations) avec 2 niveaux de vitesses. -Commandé à distance via un Smartphone Android(wifi)/ via un Navigateur Web -Capture vidéo et envoi du Streaming en direct vers l’application de commande -Un système de détection d’obstacles/de distances -Un module de géolocalisation GPS (OUTDOOR) -Détection de mouvement (motion Detection)/d’obscurité -Détection de fuite de Gaz/Mesure de Température -Fonctionnalité d’Alarme en cas d’urgence -Notification Automatique par SMS / E-mail -Signalisation en cas de problèmes (Alimentation faible, déséquilibre, wifi hors portée) -Récupération des mesures sur l’alimentation du Robot et la qualité de signal -Module de Commandes Vocales -… (de nouvelles idées tous les jours) Le projet est encore dans sa première phase, en attendant l’avancement au fur et à mesure, nos encouragement pour toute l’équipe qui travaille dessus, on espère qu’on voit d’autres projets innovants en Tunisie, il faut juste avoir confiance en soi. “Trust yourself. You know more than you think you do.” Quelques Photos: FÉVRIER 6TH, 2012 | TAGS : AND RO ID , AND RO ID BASED RO BO T , DO MO TIQ UE , ESPRIT , ESPRIT MO BILE , IO IO , IO IO AND RO ID , MO BILE PHO NE , RO BO T , RO BO T AND RO ID , RO BO TIQ UE , TUNISIA ,TUNIS IE | CATÉGO RIE : D ÉVELO PPEMENT , NO UVEAUTÉS , SMARTPHO NES 74 Annexe
  • 86. Robot à base d’Android Participation à TUNIROBOTS2012 et premier prix TUNANDROID.COM La Communauté Android en Tunisie Un ROBOT Android élu comme Meilleur Exposition à TUNIROBOTS-20121 PAR HO USSEM EDD INE L ASSO UED , LE 22 AVRIL 2012 L’Institut National des Sciences Appliquées et de la Technologie (INSAT) a organisé le dimanche 22 avril 2012 à partir de 9 h la journée nationale de la robotique, baptisée Tunirobots’12. Une action menée en grande partie par les étudiants bénévoles de l’institut qui ont composés des équipes bien organisées afin d’assurer la réussite de cette journée. Les expositions des différents robots construits par les étudiants leur a permis de démontrer encore une fois l’ingéniosité des jeunes tunisiens en matière de robotique et de technologie, et seront le trait d’union entre eux et les différentes entreprises qui assisteront à cet évènement qui promet de belles réalisations. Android été bien évidement présent lors de cette journée, et oui... nos jeunes tunisiens ont bien pensé cette année d’entrer à Tunirobots avec des robots plus intelligents et moins classique, des robots avec un cerveau ANDROID ! C’est à ce propos que nous parlons de la participation d’un jeune élève ingénieur de l’école ESPRIT, Mr. Houssem Eddine Lassoued qui a participé avec son Projet de fin d’étude en cours de réalisation, un Robot à base d’Android, nous avons bel et bien parlé de ce projet avant, ici. Pour résumer la journée, « l’Android Based Robot » a eu beaucoup de succès auprès de l’audience présente tout au long de la journée, des étudiants de différentes institutions des amateurs, des professionnels, et des médias ont profité de l’occasion pour faire quelques interviews avec l’exposant du Robot, il y avait aussi un nombre de jurys indépendants appartenant à des différentes universités et « labos », leurs rôle était de visiter chaque exposant et juger son Robot sur différentes critères, dont les plus importantes sont l’originalité, les fonctionnalités, la réalisation et les perspectives du projet qui doivent être bien expliquées par l’exposant. 1 Lien : 75 Annexe
  • 87. Robot à base d’Android Le résultat est annoncé vers la fin de la journée, et une victoire pour le Robot à Base Android qui a remporté le prix de la meilleure exposition ) un grand Bravo pour Houssem Eddine, Félicitation pour toute l’équipe Mobile d’ESPRIT, et c’est une victoire aussi pour la Communauté Tunandroid;) le prix attribué au vainqueur est une Tablette ARCHOS 70 IT, une certification de participation, et une jolie médaille pour garder le souvenir. AVRIL 22ND , 2012 | T AGS : 12, AND RO ID , ESPRIT , EXPO SANT , HO USSEM ED INE LASSO U ED , INSAT ,IO IO AND RO ID , MO BILE , PRIX, RO BOT , TUNIRO BOTS , TUNISIE | CATÉGO RIE : ARCHO S, EMBARQ UÉ ,EVENTS , NATIO NAL , NO UVEAUTÉS 76 Annexe
  • 88. Robot à base d’Android Article Tekiano.com 1: Un peu plus loin, nous retrouvons cette fois le stand du Club Esprit. Houssem Eddine Lassoued, étudiant en 5ème année télécommunication nous présente un robot commandé à base du système d'exploitation Google Android. «Ce robot est constitué de quatre moteurs, d'une carte électronique IOIO, d'une webcam, d'un capteur à ultra-son et d'un détecteur de gaz. Il est capable s'introduire dans divers endroits restreints et effectuer des tâches variées comme la surveillance d'un domicile, ou d'un entrepôt » Souligne le concepteur qui au passage, précise que l'avantage de ce système embarqué est le fait de pouvoir contrôler ce robot directement depuis son Smartphone, grâce à une application qui renseignera l'utilisateur sur les distances d'un tel objet ou obstacle ou encore du taux de gaz présent dans une pièce... Participation à ComNet’2012 Supcom à Hammmet 2 On a participé avec le robot à la la troisième Conférence Internationale sur les Communications et Réseaux (ComNet'2012), qui se tiendra le 1er avril 2012, à Hammamet. Cette conférence internationale réunit des chercheurs des TIC des pays du Nord et du Sud dans le but de se rencontrer, d'échanger leurs idées et leur expertise, d'initier et de renforcer leur coopération sur des sujets liés aux communications réseaux. Il se positionne comme une plate-forme pour les chercheurs et les praticiens à la fois du milieu universitaire et de l'industrie pour se rencontrer et partager la recherche de pointe et le développement dans ces domaines. ComNet'2012 fournira une excellente tribune internationale pour le partage des connaissances et des résultats de recherche dans les théories, les méthodologies et les applications dans différents sujets liés à la communication et au réseau (filaires et sans fil). 1 http://www.tekiano.com/tek/science/5177-tunirobots-2012-bataille-de-robots-et-premiere-fusee-tunisienne- .html 2 http://www.supcom.mincom.tn/ComNet2012/ 77 Annexe
  • 89. Robot à base d’Android Participation à Droidcon Tunis 2012 (cité des sciences)1 La Cité des sciences de Tunis a accueilli pour la première fois en Tunisie, le 12 et 13 Mai 2012, «le Droidcon Tunis 2012 », un événement majeur tournant autour du système d’exploitation mobile Android. Ces deux jours sont constitués de conférences, de débats, d’ateliers d’initiation, d’un espace d’expositions gratuit, de démonstrations, d’un Barcamp et même d’un Hackathon, sorte de marathon pour développeurs. . Durant deux jours de Droidcon Tunis, plus de 350 participants ont pris part à une aventure à la fois originale et exceptionnellement enrichissante. Durant le premier jour, un barcamp a été organisé en parallèle à une succession de formations d’initiations donné par les membres de Tunandroid et une conférence donné par Tunisiana. Dans le grand auditorium, un challenge d’application a eu lieu, ou chaque participant, qui souhaite participer au challenge, a 3 minutes pour présenter son application. Le gagnant par vote à main levée, a eu un smartphone Alcatel One Touch. Parmi la participation d’ESPRIT, été notre projet le Robot à Base d’Android 1 droidcon.tn 78 Annexe
  • 90. Robot à base d’Android 79 Annexe
  • 91. Robot à base d’Android 80 Annexe
  • 92. Robot à base d’Android 81 Annexe
  • 93. Robot à base d’Android 82 Annexe
  • 94. Robot à base d’Android 83 Annexe
  • 95. Robot à base d’Android NOTES 84 Annexe