Google ADK et wearable computing

De Wiki d'activités IMA
Révision datée du 22 février 2012 à 16:10 par Nlefebvr (discussion | contributions) (Réalisation)

Présentation

Contexte: Développement d'extension pour Android

Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets http://developer.android.com/guide/topics/usb/adk.html A l'heure actuelle, il existe quelques kit de développement, mais peu d'extension existent. L'objectif du projet consiste à réaliser plusieurs cartes d'extensions. Ci-après la liste des premières cartes à réaliser, Les étudiants pourront ensuite proposer leurs propres extensions:

- Support XBee (comme pour les Arduino)

- Support RFID

- Support vêtement intelligent pour la danse (suite du projet IMA4SC)

-...

Résultats

En cas de question n'hésitez pas à contacter Catherine Desravine ( Catherine.Desravines [ at ] polytech-lille [dot] net ) ou Nicolas Lefebvre ( lef.nicolas [ at ] gmail [ dot ] com).

Application Android

L'application Coachoid v1.0 permet de lire les musiques sur le téléphone, détectes si les musiques sont taggées au format Coachoid ("Coachoid=[12.5,42.1,78.6]" par exemple), auquel cas elle envoie les informations recueillies à l'accessoire Arduino connecté.

Code Arduino

Detection de mouvement

Ce petit programme utilise la norme des vecteurs d'acceleration renvoyés par les acceleromètres Lilypad pour en déduire si un mouvement a été effectué ou non. Il permet de créer des tag pour l'application Coachoid ( informations renvoyées sur le port série ) contenant les temps auxquels des pas sont effectués. Code source : http://pastebin.com/e2bhiFV9


Réalisation

Séance 1 (5/10/2011)

Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.

Séance 2 (10/10/2011)

Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.

Séance 3 (11/10/2011)

Installation de Android SDK

-http://developer.android.com/sdk/installing.html
-http://developer.android.com/sdk/requirements.html
-installation de Eclipse Galileo
-installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html


Problèmes rencontrés et solutions apportées:

lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html => http forcé dans les paramètres du SDK Manager

Séance 4(18/10/2011)

Test de l'installation DemoKit de l'ADK.

Séance 5(2/11/2011)

Définition des tâches principales et répartition:

  • lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) => Nicolas
  • envoi des infos BPM à l'arduino (extraction des metadatas et envoi) => Nicolas
  • transmission des BPM via Zigbee au T-shirt => Catherine
  • Test liaison telephone <-> Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.
  • Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.

Problèmes rencontrés

  • Manque de certains fichiers qui permettent la communication USB sur les téléphones.
  • Incompatibilité du programme Arduino de démonstration => programmation en C

Séance 6 (04/11/2011)

Début des tâches séparées.

  • début création application android simple avec un seul bouton qui permet l'envoi d'un seul bit sur le port usb lorsqu'il est appuyé.
  • prise en main du makefile pour la compilation directe en C pour arduino

Séance 7 ( 07/11 )

  • App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.
  • led qui clignote
    Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.

Séance 8 ( 8/11 )

application de test avec un envoi à 124 BPM
  • Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.
  • headers et codes source C pour le connecteur usb de la carte trouvés il ne reste qu'à tranposer le header AndroidAccessory.cpp en .c et adapter le header.

Séance 9 (14/11)

  • Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.

Séance 10 (15/11)

  • L'application communique bien avec le circuit arduino. Début de mise en place d'un tâche périodique pour envoyer un bit régulièrement suivant le BPM.
  • Traduction en C des librairies.

Séance 11 (18/11)

Séance 12 (21/11)

  • Finalisation de l'application de test avec l'envoi periodique de Beat ( 1 binaire) en choisissant la fréquence grâce au slider. Création de l'apk associé DemoKit 0.3.1 (sources).
  • Poursuite de la traduction en C.

Séance 13 (22/11)

  • Test de l'application avec les XBee (configuration de ceux-ci), et test avec le T-shirt du projet de l'année dernière avec succès.
  • Début de l'application Coachoid v4.0 = application finale de lecture de musique & co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )
  • Les sources trouvées sur Internet se sont révélées être incomplètes et trop complexes à utiliser. Adaptation en C des sources C++ fournies avec l'ADK
    • codes source inchangés: ch9.h, Max3421e_constants.h
    • codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c
    • codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h

Il y aura la fonction digitalWrite à réécrire également.

Séance 14 (28/11)

  • Suite de l'adaptation des sources C++ en C:
    • codes sources adaptés: Max3421e.h, Max3421e.c
    • codes source en cours d'adaptation: Usb.h, Usb.c
    • codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring
  • Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.

Séance 15 (29/11)

  • Lecture basique de musique fonctionnel avec barre progression et selection de musique
  • Suite et fin de l'adaptation des sources C++ en C:
  • Déboggage des sources C

Séance 16 (30/11)

  • Suite du déboggage des sources C
  • Finitions de la liste (avec enchainement, bouton play-pause)

Séance 17 (1/12)

  • Mise en avant de la musique joué
  • Lecture des tag des mp3 grâce à http://www.jthink.net/jaudiotagger/
  • Fin du déboggage des sources
  • Début du développement d'un programme test

Séance 18 (5/12)

Séance 19 (04/01)

Séance 20 (05/01)

  • Débuggage des sources C pour Arduino

Séance 21 (11/01)

  • Premier programme de test de connexion d'un téléphone à la plateforme Arduino

Deux fonctions posent problème : celle d'initialisation du port usb (powerOn) de la plateforme ainsi que celle qui permet de détecter la connexion d'un téléphone (isConnected).

Séance 22 (12/01)

Arduino Le problème des fonction powerOn et isConnected a été résolu en réalité les soucis venaient du fait que le port usb n'était pas initialisé dans le programme test et il y avait également un délai trop long (200s) à la fin de la fonction powerOn.

Séance 23 (16/01)

  • Début d'intégration de la bibliothèque de calcul de BPM dans l'application

Arduino: La lecture de l'information sur le port usb pose problème il semblerait qu'un code retour soit égal à 0x65 au lieu de 0x00 (usb.c ligne 320)

Séance 24 (31/01)

  • Ecriture des BPMs dans le champs "encoder" des fichiers. Sous la forme : "CDD|Nombre_de_BPMs|[Liste des BPMs]" exemple : "CDD|6|[95, 119, 119, 131, 107, 143]"

Arduino: bugs du programme de base=>

  • il arrive que le programme s'arrête puis redémarre après qu'on ai connecté la borne MISO et la borne +5V du composant ICSP.
  • La fonction isConnected renvoie toujours 1 même quand le téléphone n'est pas connecté

07/02

  • création du circuit permettant de detecter le mouvement d'un accelerometre pour tagger automatiquement les musiques.

http://web.media.mit.edu/~leah/LilyPad/build/accelero_shirt.html et http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1245357699

  • Après correction des sources C par Mr. Vantroys, le code arduino de test a été amélioré. On peut maintenant brancher un téléphone sur la MegaADk, récupérer l'octet '1' envoyé par l'application demokit v0.3.1 et le renvoyer par commmunication zigbee.

10/02

Préparation téléphones

Commun

Soucis de com.android.future.usb.accessory.jar

xml : android.hardware.usb.accessory.xml

jar : com.android.future.usb.accessory.jar

  su
  mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system
  cp /sdcard/com.android.future.usb.accessory.jar /system/framework
  chmod 655 /system/framework/com.android.future.usb.accessory.jar
  vi /etc/permissions/android.hardware.usb.accessory.xml
  chmod 655 /etc/permissions/android.hardware.usb.accessory.xml
  mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system

manipulation légèrement différente pour le motorola defy:

  mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system
  cp com.android.future.usb.accessory.jar /system/framework
  chmod 644 /system/framework/com.android.future.usb.accessory.jar
  cp android.hardware.usb.accessory.xml /etc/permissions
  chmod 644 /etc/permissions/android.hardware.usb.accessory.xml
  mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system
  ---------> reboot pour que la librairie soit prise en compte.

Milestone 2 (droid2)

Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038 Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel "root")

Motorola Defy

Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/ (gingerbreak incompatible avec android 2.1 : utilisation de z4root => failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update) Compte google : defypolytechima@gmail.com

Arduino

Hardware

  • liste des pins pour le microprocesseur ATmega2560

http://arduino.cc/en/Hacking/PinMapping2560

  • exemple de programmation avec AVR

http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced

  • exemple de code arduino en C pour communiquer via le port série

http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/

  • présentation arduinoboardADK

http://www.arduino.cc/en/Main/ArduinoBoardADK

  • code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)

http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/

  • code source led qui clignote atmega168

http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC

  • code source pour USB Host: MAX3421E

http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu

Xbee

Utilisation du channel 15 ( sous minicom -s "+++" -> "ATCH15" -> "ATCH" pour verifier -> "ATWR" pour sauvegarder -> ATCN pour quitter la modif

Configuration

C

Compilation

Divers

Connexion root pour lancer l'IDE arduino

  ssh -X -lroot localhost

Arduino

  • code arduino v1.0: Version de code qui fonctionne
    • envoie d'un octet '1' par appli android, récupération par arduino sur le port usb, envoi d'un 1 par liaison Zigbee

Android

Création apk

Le certificat contenant les clef de cryptage des apk se situe dans le repertoire /home/pifou/.android/keystore_signature_apk de tutur02. Les mots de passe sont ceux les mots de passe root habituels.

Version App Coachoid

  • DemoKit 0.3.1 : Appli de test d'envoi d'1 bit avec un BPM voulu. (sources)
  • Coachoid 0.4 : Application présentation pre-soutenance.
    • Lecture musiques
    • Lecture d'un BPM dans les tags de la musique
    • Envoi des BPMs à l'accessoire.