Le PONG version USB Un projet réalisé par GALAND Priscilia et DOMEY Dimitri. Années 2012-2013



Documents pareils
Education Delivery Intelligent Tool

Optimiser pour les appareils mobiles

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Poste virtuel. Installation du client CITRIX RECEIVER

Programmer en JAVA. par Tama

Mise en route de votre collier GPS Pet Tracker

Traitement de données

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

TP SIN Programmation sur androïde Support : eclipse

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

PIC EVAL Dev Board PIC18F97J60

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

GUIDE D INSTALLATION ET D UTILISATION PI AUTHENTICATOR

Sélection du contrôleur

Gestion des différentes tailles d écran

Manuel d utilisation NETexcom

Notice d Installation et d utilisation d une liaison Bluetooth avec un PDA ipaq.

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Mode d emploi pour lire des livres numériques

Programmation Objet Java Correction

Manuel d installation et d utilisation du logiciel GigaRunner

Fiche technique rue de Londres Paris Tél. : Mail : contact@omnikles.com

Environnement Zebra Link-OS version 2.0

TP1 : Initiation à Java et Eclipse

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Certificats Electronique d AE sur Clé USB

Les tablettes. Présentation tablettes Descriptif Fournisseurs Caractéristiques Comparatifs Conseils Perspectives Démonstration

PC, Tablette, Smartphone, comment choisir ce qui me convient le mieux?

Programmation des applications mobiles avec Android. 1 Inspiré du cours de Olivier Le Goaer

PHILA-Collector-USB-16Go Pour Windows & Android

LES TABLETTES : GÉNÉRALITÉS

BUREAU VIRTUEL. Utilisation de l application sur ipad. Guide utilisateur. Sciences Po Utilisation du bureau virtuel sur ipad 1 / 6

FlashWizard v4.5b PRO

Sommaire 1. Aperçu du Produit

Administration de Parc Informatique TP07 : Installation de Linux Debian

Environnement Zebra Link-OS version 2.0

Installation et prise en main

Initiation à JAVA et à la programmation objet.

5.5 Utiliser le WiFi depuis son domicile

Thunderbird est facilement téléchargeable depuis le site officiel

RECORD BANK RECORD BANK MOBILE

Guide d installation rapide

Manuel programmation QUESTOR

TP2 : Client d une BDD SqlServer

TP au menu «UI ANDROID»

!" #$$%& Disque dur 2.5 pouces Firewire Apple MacOS FR V2.4 - Page 1/17

TD/TP 1 Introduction au SDK d Android

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Notice de fonctionnement DVR H Méthode de Visionnage ESEENET

Guide Utilisateur. Les communications unifiées au service de la performance opérationnelle. sfrbusinessteam.fr. Faire équipe avec vous

Prise en main rapide

Un ordonnanceur stupide

Introduction à l informatique en BCPST

Contrôler un ordinateur à distance avec Google Chrome

Interfaces graphiques avec l API Swing

FANTEC HDD-Sneaker MANUEL D'UTILISATION. Comprend: Guide d'installation de materiel Disque dur Formatage manuel PCClone EX Guide d'installation

Etude d Exchange, Google Apps, Office 365 et Zimbra

Conservez la documentation à portée de main pour toute référence future. Le terme «pointeur» dans ce manuel désigne le pointeur interactif YA-P10.

TP1. Outils Java Eléments de correction

Comment se connecter au dossier partagé?

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Enseignement, Handicap et tablette tactile

PocketNet SNMP/Modbus

Travaux dirigés n 10

Partager sa connexion Internet via le WiFi avec Windows 8

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

as Architecture des Systèmes d Information

Sauvegarde des données d affaires de Bell Guide de démarrage. Vous effectuez le travail Nous le sauvegarderons. Automatiquement

Dans cette Unité, nous allons examiner

MODULES 3D TAG CLOUD. Par GENIUS AOM

BIBLIOTHÈQUE NUMÉRIQUE MODE D EMPLOI

Administration du site (Back Office)

ProCod. Manuel d utilisation. Software de programmation pour codeurs absolus TWK modèles CRF et DAF CRF DF 08 / 10

VOS RESSOURCES NUMÉRIQUES PAS À PAS

Manuel de l utilisateur

Dossier technique. Présentation du bus DMX et Utilisation des options EL13 / EL14 ERM AUTOMATISMES INDUSTRIELS 1 LE PROTOCOLE DMX 2

Manuel d utilisation du SC403

Mettre en place un accès sécurisé à travers Internet

Projet tablettes numériques Document de référence

Manipulations du laboratoire

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Certificats «CREDIT LYONNAIS Authentys Entreprise» Manuel utilisateur du support cryptographique

Master d'informatique 1ère année Réseaux et protocoles. Couche physique

Création d une application Android (APPInventor)

MOBILITE. Nomadio, le dialer d entreprise. Datasheet

SECURIDAY 2013 Cyber War

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

Édu-groupe - Version 4.3

Guide d installation rapide

06/11/2014 Hyperviseurs et. Infrastructure. Formation. Pierre Derouet

Cours 1 : Qu est-ce que la programmation?

Accéder à ZeCoffre via FTP

Remote Method Invocation (RMI)

Utiliser une tablette tactile Androïd

TRACcess ekey. Référence rapide

MB Led. Benjamin Bonny Cédric Le Ninivin Guillaume Normand

Transcription:

Le PONG version USB Un projet réalisé par GALAND Priscilia et DOMEY Dimitri Années 2012-2013

Table des matières I- Introduction... 1 II- Une partie Android... 2 a. Matériel... 2 b. Le fichier AndroidManifest.xml... 2 c. La surcouche Android au JAVA... 3 d. La surcouche Microchip... 3 III- Une partie Android graphique... 4 a. La partie XML... 4 b. La partie exploitation en JAVA... 5 1. Création du processus... 5 2. L interface... 6 IV- Une partie C sur le kit de développement Android... 7 a. La liaison USB... 7 b. La liaison RS232... 7 a. Configuration... 7 b. L initialisation... 7 c. La fonction d envoie... 8 a. Un cœur en VHDL... 8 b. Un programme en C... 8 VI- Une maquette physique... 9 a. Exploitation du kit Android... 9 b. Une maquette de d inter-connexion... 9 VII- Les apports de notre projet... 10 VIII- Bibliographie... 11

I- Introduction Notre projet consistait à faire communiquer une maquette équipé d un FPGA et une tablette sous le système d exploitation mobile Android. Pour cela, une maquette de chez Microchip a été utilisée pour faire la liaison entre les deux technologies en utilisant deux protocoles de communication, le protocole USB et le protocole RS-232, comme expliqué sur le schéma suivant. Notre travail consistait donc à programmer une application sur la tablette en JAVA à l aide de l application A-IDE et le programme gérant les deux protocoles sur le kit de développement Android de chez Microchip en utilisant MPLAB X. Page1

II- Une partie Android Android est un OS mobile développé depuis 2007 sur la base d un noyau Linux, mais qui utilise le JAVA pour la couche applicatif. Il occupe aujourd hui une part de marché de 75%, ce qui en fait une technologie d actualité, mais surtout d avenir. Premièrement créé pour le marché de la téléphonie mobile par Google en réponse à la montée en force de l iphone, le système Android s est déployé sur tablette avec une version d abord différente pour les deux technologies, 2.X pour smartphone, et 3.X pour tablette, l OS est aujourd hui commun aux deux à partir des numéros de version 4.X. (petite anecdote : Les noms de version d Android commencent tous par un nom de gâteau dont la première lettre est une lettre de l alphabet croissant au fil des versions) Le nom Android vient de l androïde qui se veut être une machine ressemblant à l humain, Android se veut donc intuitif et adapté à l utilisation pratique par l utilisateur. a. Matériel Nous avons développé toute l application à partir d une tablette ASUS TF201 à partir de l application AIDE (Android IDE) en langage JAVA et XML. b. Le fichier AndroidManifest.xml Ce fichier se situe à la racine du projet, c est lui qui informe Android sur le comportement à adopter avec l application, par exemple, un thème général ou la version minimale de Android qui sera nécessaire pour exécuter l application. Mais le principal intérêt de ce fichier, dans notre cas, est la présence des demandes de permissions, sans elle, notre programme ne serait pas autorisé à utiliser la liaison USB, car l utilisateur n aura pu le permettre. Voici la ligne de code à rajouter afin de pouvoir utiliser la liaison USB : <uses-feature android:name="android.hardware.usb.accessory" /> Cette ligne demande au noyau Linux de Android de lui autoriser l accès au matériel USB qui lui est raccordé. Ceci est une protection afin que les utilisateurs qui installent l application sachent quels risques ils encourent en l installant. Page2

c. La surcouche Android au JAVA Les applications sous Android sont programmées en langage JAVA, mais avec une surcouche pour correspondre aux utilisations d un smartphone ou d une tablette. Le programme fonctionne en plusieurs phases : la création du processus (oncreate()), le processus en fonctionnement (onresume()), le processus en arrière-plan (onpause()) et la méthode permettant la suppression du processus (onstop()). Voici un schéma explicatif : Source : http://bit.ly/zejqiy d. La surcouche Microchip La maquette est fournie avec des exemples de programmes à aller récupérer à l adresse : http://bit.ly/zel9ry > Microchip Libraries for Applications v20xx-xx-xx [OS]. Le fichier ainsi téléchargé est une archive exécutable à installer, les sources JAVA se trouvent dans le dossier [Microchip Solutions v20xx-xx-xx] > Android Accessories > Basic Communication Demo - OpenAccessory Framework > App Source Code > v3.x. La méthode permettant l envoi de données à la maquette est «accessorymanager.write(byte[2]);» Avec le byte[0] est le caractère permettant de dire à la maquette le type de traitement qu elle doit effectuer, ici le nombre 4 est utilisé pour dire à la maquette qu elle doit effectuer une liaison RS232, et le byte[1] est utilisé comme bit de commande, ici, 1 ou 2 est envoyé pour dire d envoyer le caractère u ou le caractère d. Cette méthode ne doit être appelée que dans le cas où la maquette est réellement connectée ; on peut vérifier cet état par le biais de la méthode «accessorymanager.isconnected();». Page3

III- Une partie Android graphique La partie graphique sous Android peut se faire entièrement en XML, et en plaçant les boutons les uns par rapport aux autres, en leur donnant des idées et en les stylisant. a. La partie XML Le langage de programmation XML est un langage à balise, c est-à-dire que chaque balise correspond à un élément [un bouton par exemple] et peut se styliser avec des attributs qu on lui appose, ainsi le bouton flèche gauche ci-dessus ressemble à ceci : <Button android:id="@+id/gauche" android:layout_width="200sp" android:layout_height="200sp" android:layout_alignparentleft="true" android:layout_marginleft="5sp" android:layout_centervertical="true" android:background="@drawable/fleche3" android:onclick="appuiegauche" /> On voit donc que le bouton fera 200sp 1 de hauteur et de largeur, avec une marge à gauche de 5sp. Son nom sera gauche (@+id/ indiquant le format de la donnée). Son fond sera un drawable (une image, @drawable/) qui se trouve dans le dossier res/layout/drawable-xxpi du projet et ayant pour nom fleche3. Ce bouton est compris dans une balise <relativelayout />, ce qui nous permet de placer relativement ce bloc au centre gauche de l écran avec layout_centervertical et layout_alignparentleft. Enfin, le bouton possède un listener sur un évènement se déclenchant aux cliques sur ce bouton, et déclenche la fonction appuiegauche que l on verra dans le b. Page4 1 sp : Scale independent Pixel (Echelle de pixels indépendant) - Utilisé pour les tailles de polices. On pourrait comparé cette unité aux em du développement web. La police peut être plus ou moins grosse suivant les préférences utilisateurs

b. La partie exploitation en JAVA 1. Création du processus à la création du processus, à l aide de la méthode «oncreate();», l application tente d établir une connexion avec la maquette. try { PackageManager manager = this.getpackagemanager(); PackageInfo info = manager.getpackageinfo(this.getpackagename(), 0); catch (NameNotFoundException e1) { e1.printstacktrace(); accessorymanager = new USBAccessoryManager(handler, 0); L application test si la récupération du PackageManager est possible et créée un accessorymanager qui contiendra toutes les méthodes liées à l utilisation du périphérique USB. En cas d échec de la connexion ou en l attente d une connexion, l application affiche un message d attente comme ceci : Page5

2. L interface La flèche de gauche est liée à une fonction appuiegauche(view); sc1 = (TextView) findviewbyid(r.id.sc1); try { score = Integer.parseInt(sc1.getText().toString()); score++; sc1.settext(string.valueof(score)); catch (NumberFormatException nfe) { sc1.settext(string.valueof(0)); System.out.println("Could not parse" + nfe); if (accessorymanager.isconnected() == true) { byte[] commandpacket = new byte[2]; commandpacket[0] = SET_RS232; commandpacket[1] = SET_RS232_UP; accessorymanager.write(commandpacket); Ce bout de code récupère premièrement la zone de texte identifiée par sc1 pour l incrémenter à chaque appui. Cette zone étant de type String, on s occupe de la convertir en INT pour l incrémenter de 1, puis on le retransforme en STRING pour le setter à sc1. On test ensuite si la maquette est bien connectée par le biais de la méthode «accessorymanager.isconnected()» pour ensuite lui envoyer le paquet qui se compose d un bit informant de quelle action la maquette doit effectuer et d un bit de commande. La fonction pour le bouton droit fait similairement la même chose à la différence près qu il envoie la commande pour descendre. 3. Quitter l application La méthode onpause(); définis les actions à effectuer si l utilisateur change de fenêtre. La connexion USB se trouve inutile, nous envoyons donc un commandpacket à la maquette lui demandant de fermer la connexion. À l issu de cette commande, nous effectuons une vérification de cette clôture de connexion pour finalement fermer toutes les connexions ouvertes sur la tablette. Voici le code : byte[] commandpacket = new byte[2]; commandpacket[0] = (byte) APP_DISCONNECT; commandpacket[1] = 0; accessorymanager.write(commandpacket); try { while(accessorymanager.isclosed() == false) { Thread.sleep(2000); catch (InterruptedException e) { e.printstacktrace(); accessorymanager.disable(this); disconnectaccessory(); Page6

IV- une partie C sur le kit de développement Android Notre travail sur le kit a été effectué sous MPlab X en langage C, et permet de programmer ou debugguer le Kit de développement Android via le PIC kit 3. a. La liaison USB Le protocole USB est déjà codé et présent dans l archive téléchargée plus haut, dans le dossier : Microchip Solutions v20xx-xx-xx > Android Accessories > Basic Communication Demo - OpenAccessory Framework > Firmware, l utilisation se fait en émission par la commande : command_packet = (ACCESSORY_APP_PACKET*)&read_buffer[0] Il ne reste plus qu à tester le contenu de command_packet->command pour déterminer quelle action le programme doit exécuter. b. La liaison RS232 a. Configuration Le protocole RS232 n était pas du tout codé, il nous a donc fallu le coder entièrement. Nos consignes étaient donc 38400 bauds sur 8 bits, sans parité et avec 2 bits de stop. Nous avons donc mis les paramètres suivant dans le programme : #define FPB 16000000L //Fosc = 32MHz donc Fcy = Fosc / 2 = 16MHz #define TRTS TRISFbits.TRISF13 #define BRATE (FPB/4/38400)-1 //baudrate 38400 #define U_ENABLE 0x8009 //8bits ; non-parity ; 2bits stop #define U_TX 0x0400 #define TXD _RD0 //Port servant à TXD L U_ENABLE est définie suivant le tableau de bits suivant les tableaux en Annexe 1. b. L initialisation L initialisation doit mettre en place les configurations précédentes, mais aussi, elle doit définir les PINs associés à la liaison RS232, ce qui nous donne le programme suivant : void initu2(void) { _TRISD0 = 0; PPSUnLock; ippsoutput(out_pin_pps_rp11,out_fn_pps_u1tx); // Assign U1TX To Pin RP2 PPSLock; U1BRG = BRATE; U1MODE = U_ENABLE; U1STA = U_TX; Le problème durant notre projet a été de justement trouver comment définir ces PINs, sans lesquels notre programme ne transmettait pas à la maquette. Page7

c. La fonction d envoi Il ne nous restait plus qu à faire la fonction permettant de copier le caractère à envoyer vers le RS232. Se fait par la fonction putu2(char) ; comme suivant : void putu2(int c) { while(u1stabits.utxbf); U1TXREG = c; V- La partie FPGA Même malgré notre faible participation sur cette partie du travail, nous avons suivi son évolution de près et pensons qu une partie se doit d être présente dans notre dossier, car le FPGA est la finalité de notre projet, la communication entre Android et FPGA se termine donc ici. a. Un cœur en VHDL Le cœur du FPGA se programme en VHDL afin de lui fournir la façon dont les circuits logiques qui la composent se doivent d opérer les actions à effectuer. En effet, le FPGA seul ne pourrait gérer le code C que nous lui injectons afin d afficher et de traiter le pong, l on passe donc par un processeur virtuel créé à parti des circuits logiques de la carte FPGA. De manière simpliste, un FPGA se rapporte à l image ci-dessus, des blocs logiques interconnectés suivant un programme. Donc l utilisation d une carte à FPGA se trouve être inutile pour quiconque ne sait utiliser un langage tel que le VHDL pour associer les blocs entre eux. Pourtant, en associant efficacement ces blocs, la maquette renferme des capacités cachées, telles que notre utilisation, un jeu simpliste de pong. b. Un programme en C La partie C s occupe donc de gérer le pong, depuis les déplacements jusqu à l interprétation de la réception des données via le protocole RS232. Cette partie est donc l interface entre l utilisateur et la maquette FPGA (on pourrait parler d interface Homme/Machine). Page8

VI- Une maquette physique a. Exploitation du kit Android D après le Schématics fournit en Annexe 2, les pins RXD et TXD sont sur le port J14, mais le constructeur Microchip n ayant pas prévu de point de repère pour identifier le sens de montage des broches, nous avons donc été forcés de tester les pins de la carte dans un sens puis dans l autre afin de déterminer ceux qui étaient vraiment les bons. Voici donc les ports utilisés : b. Une maquette d interconnexion Nos deux groupes de projet développant pour la même maquette, nous avons exceptionnellement collaboré afin de développer une maquette unique plus propre et économique en ressources de travail. Le kit Android étant trop haut en comparaison des ports permettant la liaison série RS232, nous avons donc effectué une maquette fille servant à la connexion plus pratique et avec un plus faible taux de risque d endommagement. La Maquette mère sert donc à connecter et alimenter électriquement le module Bluetooth en affichant l état de la connexion sur une LED rouge, et permet de relier les ports RXD et TXD, et l alimentation de la maquette Android. Page9

VII- Les apports de notre projet Notre projet étant basé sur une technologie plutôt nouvelle, et dans sa phase de succès avec 136 millions de téléphones l équipant, il pourra nous être un plus sur un CV grâce aux connaissances acquises par son biais. Ce type de programmation pourrait totalement convenir à un asservissement d un automate par le biais d un smartphone ou d une tablette, un opérateur pourrait tout à fais arriver auprès d un automate, se connecter, et en prendre son contrôle avec une interface intuitive et facilement évolutive. De plus, notre projet s étant effectué en quasi-totale autonomie, cela nous a permis d apprendre à prendre des initiatives, de faire des recherches afin de trouver les documentations sur la maquette, apprendre le langage JAVA-Android De plus, cela nous a, dans un même temps, donné un esprit de persévérance dans les recherches qui même si parfois étaient infructueuses pouvait nous servir pour rebondir et avancer. Page10

VIII- Bibliographie La documentation officielle de chez Microchip : http://www.microchip.com/android MPLab X et le compileur C [XC16] http://bit.ly/m8fmya Le site du zéro nous a permis d apprendre les bases du JAVA-Android : http://bit.ly/141ptu6 Le site ayant permis la résolution du problème avec les PIN http://bit.ly/wmf3eq Page11