Google ADK et wearable computing
Sommaire
- 1 Présentation
- 2 Réalisation
- 2.1 Séance 1 (5/10/2011)
- 2.2 Séance 2 (10/10/2011)
- 2.3 Séance 3 (11/10/2011)
- 2.4 Séance 4(18/10/2011)
- 2.5 Séance 5(2/11/2011)
- 2.6 Séance 6 (04/11/2011)
- 2.7 Séance 7 ( 07/11 )
- 2.8 Séance 8 ( 8/11 )
- 2.9 Séance 9 (14/11)
- 2.10 Séance 10 (15/11)
- 2.11 Séance 11 (18/11)
- 2.12 Séance 12 (21/11)
- 2.13 Séance 13 (22/11)
- 2.14 Séance 14 (28/11)
- 2.15 Séance 15 (29/11)
- 2.16 Séance 16 (30/11)
- 2.17 Séance 17 (1/12)
- 2.18 Séance 18 (5/12)
- 2.19 Séance 19 (04/01)
- 2.20 Séance 20 (05/01)
- 2.21 Séance 21 (11/01)
- 2.22 Séance 22 (12/01)
- 2.23 Séance 23 (16/01)
- 2.24 Séance 24 (31/01)
- 3 Préparation téléphones
- 4 Arduino
- 5 Android
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é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
- -http://developer.android.com/sdk/requirements.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é.
- Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.
Séance 8 ( 8/11 )
- 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)
- Tâche périodique d'envoi de Beat mise en place. Mais soucis de prise en compte des modifications lors du slide ( trop de changements d'états en peu de temps...). ( aide : http://www.developpez.net/forums/d669466/c-cpp/outils-c-cpp/visual-cpp/mfc/interception-levt-mousedown-slider/ et http://stackoverflow.com/questions/937313/android-basic-gesture-detection )
- Traduction en C de la librairie AndroidAccessory.c
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)
- Test inclusion de l'information de BPM dans les tags de la musique. Tests Réussi
- Recherche de solution pour prendre le bpm de chaque musique ( http://stackoverflow.com/questions/79445/beats-per-minute-from-real-time-audio-input http://www.streamhead.com/easy-bpm-calculation-in-java/ http://bpmdj.yellowcouch.org/ & http://jorgenmodin.net/index_html/archive/2010/07/23/counting-bpm-beats-per-minute-on-linux/weblogentry_view#1315989621 )
- deboggage des sources terminé, développement d'un programme test
Séance 19 (04/01)
- Exploration du calcul du BPM instantanéement. Exploration de la solution http://www.streamhead.com/easy-bpm-calculation-in-java/ qui donne des résultats cohérents.
- Recherche d'autres outils de calcul pour avoir des référance de BPM.
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é
Préparation téléphones
Commun
- Suivre ce tuto pour pouvoir tester els applciations directement sur le telephone : http://developer.android.com/guide/developing/device.html j'ai utilisé celui ci : http://bzed.de/posts/2009/05/howto_set_android_developer_device_permissions_with_udev/
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
- Makefile de Mr Vantroys points à veririer : MCU, CFLAG et DUDE
- Makefile plus imposant
Divers
Connexion root pour lancer l'IDE arduino
ssh -X -lroot localhost
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.