<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://projets-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cdesravi</id>
		<title>Wiki de Projets IMA - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://projets-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cdesravi"/>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php/Sp%C3%A9cial:Contributions/Cdesravi"/>
		<updated>2026-05-13T19:11:25Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1671</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1671"/>
				<updated>2012-02-22T17:14:38Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Code Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Résultats=&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Les codes sources sont aussi disponible en E306 sur tutur02 (partie Android + detection de mouvement) dans le dossier /home/pifou/IMA5sc/PFEADKAndroid/ ou sur tutur01 ( reste de la partie Arduino) dans le dossier /home/pifou/Documents/Coachoid/&lt;br /&gt;
&lt;br /&gt;
== Application Android ==&lt;br /&gt;
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 (&amp;quot;Coachoid=[12.5,42.1,78.6]&amp;quot; par exemple), auquel cas elle envoie les informations recueillies à l'accessoire Arduino connecté.&lt;br /&gt;
&lt;br /&gt;
* Telecharger Coachoid v1.0 : http://www.mirorii.com/fichier/44/507446/Coachoid_1-0-apk.html&lt;br /&gt;
* Code source : http://www.mirorii.com/fichier/26/507454/Coachoid_1-0-zip.html&lt;br /&gt;
&lt;br /&gt;
== Code Arduino ==&lt;br /&gt;
=== Detection de mouvement ===&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Code source : http://pastebin.com/e2bhiFV9&lt;br /&gt;
=== Accessoire pour Android et programme pour le Tshirt===&lt;br /&gt;
====Accessoire Android====&lt;br /&gt;
Ce programme détecte la connexion d'un téléphone Android et interagit avec l'application Coachoid. Il envoie les informations sur le sexe de l'utilisateur , le style de musique (salsa ou rock 6 temps) ainsi que les beats d'une chanson en fonction des informations qu'il reçoit du téléphone.&lt;br /&gt;
====Programme pour le T-shirt====&lt;br /&gt;
Ce programme gère l'activation des vibreurs en fonction du genre de l'utilisateur ainsi que de la musique selon les informations de beat reçue par la liaison sans fil Zigbee.&lt;br /&gt;
&lt;br /&gt;
Le code source de l'accessoire Android à compiler et uploader sur la MegaADK board se trouve dans le dossier ADKFinal de l'archive. Le code source pour le Lilypad sur le T-shirt se trouve dans le dossier TShirtFinal.&lt;br /&gt;
* Code source : http://www.mirorii.com/fichier/74/507486/Sources-tar-gz.html&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tshirt.png|300px|thumb|center|Prototype Final]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 16 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite du déboggage des sources C&lt;br /&gt;
* Finitions de la liste (avec enchainement, bouton play-pause)&lt;br /&gt;
&lt;br /&gt;
== Séance 17 (1/12) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en avant de la musique joué&lt;br /&gt;
* Lecture des tag des mp3 grâce à http://www.jthink.net/jaudiotagger/&lt;br /&gt;
* Fin du déboggage des sources&lt;br /&gt;
* Début du développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 18 (5/12) ==&lt;br /&gt;
* Test inclusion de l'information de BPM dans les tags de la musique. Tests Réussi&lt;br /&gt;
* 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/ &amp;amp; http://jorgenmodin.net/index_html/archive/2010/07/23/counting-bpm-beats-per-minute-on-linux/weblogentry_view#1315989621 )&lt;br /&gt;
* deboggage des sources terminé, développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 19 (04/01) ==&lt;br /&gt;
* 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.&lt;br /&gt;
* Recherche d'autres outils de calcul pour avoir des référance de BPM.&lt;br /&gt;
&lt;br /&gt;
== Séance 20 (05/01) ==&lt;br /&gt;
* Débuggage des sources C pour Arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 21 (11/01) ==&lt;br /&gt;
* Premier programme de test de connexion d'un téléphone à la plateforme Arduino&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Séance 22 (12/01) ==&lt;br /&gt;
Arduino&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Séance 23 (16/01) ==&lt;br /&gt;
*Début d'intégration de la bibliothèque de calcul de BPM dans l'application&lt;br /&gt;
&lt;br /&gt;
Arduino:&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
== Séance 24 (31/01) ==&lt;br /&gt;
* Ecriture des BPMs dans le champs &amp;quot;encoder&amp;quot; des fichiers. Sous la forme : &amp;quot;CDD|Nombre_de_BPMs|[Liste des BPMs]&amp;quot; exemple : &amp;quot;CDD|6|[95, 119, 119, 131, 107, 143]&amp;quot;&lt;br /&gt;
Arduino: &lt;br /&gt;
bugs du programme de base=&amp;gt; &lt;br /&gt;
* 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.&lt;br /&gt;
* La fonction isConnected renvoie toujours 1 même quand le téléphone n'est pas connecté&lt;br /&gt;
&lt;br /&gt;
== 07/02 ==&lt;br /&gt;
&lt;br /&gt;
* création du circuit permettant de detecter le mouvement d'un accelerometre pour tagger automatiquement les musiques.&lt;br /&gt;
http://web.media.mit.edu/~leah/LilyPad/build/accelero_shirt.html et http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1245357699&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== 10/02 ==&lt;br /&gt;
* L’accéléromètre permet uniquement de détecter les angles : http://bildr.org/2011/04/sensing-orientation-with-the-adxl335-arduino/&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [[Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml|android.hardware.usb.accessory.xml]]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
=Arduino=&lt;br /&gt;
*[http://www.mirorii.com/fichier/84/492503/code_arduinoV1-tar-gz.html code arduino v1.0]: Version de code qui fonctionne &lt;br /&gt;
**envoie d'un octet '1' par appli android, récupération par arduino sur le port usb, envoi d'un 1 par liaison Zigbee&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Version App Coachoid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html DemoKit 0.3.1] : Appli de test d'envoi d'1 bit avec un BPM voulu. ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources])&lt;br /&gt;
* [http://www.mirorii.com/fichier/45/460974/Coachoid_0-4-apk.html Coachoid 0.4] : Application présentation pre-soutenance.&lt;br /&gt;
**Lecture musiques&lt;br /&gt;
**Lecture d'un BPM dans les tags de la musique&lt;br /&gt;
**Envoi des BPMs à l'accessoire.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1670</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1670"/>
				<updated>2012-02-22T17:13:26Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Code Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Résultats=&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Les codes sources sont aussi disponible en E306 sur tutur02 (partie Android + detection de mouvement) dans le dossier /home/pifou/IMA5sc/PFEADKAndroid/ ou sur tutur01 ( reste de la partie Arduino) dans le dossier /home/pifou/Documents/Coachoid/&lt;br /&gt;
&lt;br /&gt;
== Application Android ==&lt;br /&gt;
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 (&amp;quot;Coachoid=[12.5,42.1,78.6]&amp;quot; par exemple), auquel cas elle envoie les informations recueillies à l'accessoire Arduino connecté.&lt;br /&gt;
&lt;br /&gt;
* Telecharger Coachoid v1.0 : http://www.mirorii.com/fichier/44/507446/Coachoid_1-0-apk.html&lt;br /&gt;
* Code source : http://www.mirorii.com/fichier/26/507454/Coachoid_1-0-zip.html&lt;br /&gt;
&lt;br /&gt;
== Code Arduino ==&lt;br /&gt;
=== Detection de mouvement ===&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Code source : http://pastebin.com/e2bhiFV9&lt;br /&gt;
=== Accessoire pour Android et programme pour le Tshirt===&lt;br /&gt;
====Accessoire Android====&lt;br /&gt;
Ce programme détecte la connexion d'un téléphone Android et interagit avec l'application Coachoid. Il envoie les informations sur le sexe de l'utilisateur , le style de musique (salsa ou rock 6 temps) ainsi que les beats d'une chanson en fonction des informations qu'il reçoit du téléphone.&lt;br /&gt;
====Programme pour le T-shirt====&lt;br /&gt;
Ce programme gère l'activation des vibreurs en fonction du genre de l'utilisateur ainsi que de la musique selon les informations de beat reçue par la liaison sans fil Zigbee.&lt;br /&gt;
&lt;br /&gt;
Le code source de l'accessoire Android à compiler et uploader sur la MegaADK board se trouve dans le dossier ADKFinal de l'archive. Le code source pour le Lilypad sur le T-shirt se trouve dans le dossier TShirtFinal.&lt;br /&gt;
* Code source : http://www.mirorii.com/fichier/74/507486/Sources-tar-gz.html&lt;br /&gt;
&lt;br /&gt;
Fichier:Tshirt.png&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 16 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite du déboggage des sources C&lt;br /&gt;
* Finitions de la liste (avec enchainement, bouton play-pause)&lt;br /&gt;
&lt;br /&gt;
== Séance 17 (1/12) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en avant de la musique joué&lt;br /&gt;
* Lecture des tag des mp3 grâce à http://www.jthink.net/jaudiotagger/&lt;br /&gt;
* Fin du déboggage des sources&lt;br /&gt;
* Début du développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 18 (5/12) ==&lt;br /&gt;
* Test inclusion de l'information de BPM dans les tags de la musique. Tests Réussi&lt;br /&gt;
* 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/ &amp;amp; http://jorgenmodin.net/index_html/archive/2010/07/23/counting-bpm-beats-per-minute-on-linux/weblogentry_view#1315989621 )&lt;br /&gt;
* deboggage des sources terminé, développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 19 (04/01) ==&lt;br /&gt;
* 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.&lt;br /&gt;
* Recherche d'autres outils de calcul pour avoir des référance de BPM.&lt;br /&gt;
&lt;br /&gt;
== Séance 20 (05/01) ==&lt;br /&gt;
* Débuggage des sources C pour Arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 21 (11/01) ==&lt;br /&gt;
* Premier programme de test de connexion d'un téléphone à la plateforme Arduino&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Séance 22 (12/01) ==&lt;br /&gt;
Arduino&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Séance 23 (16/01) ==&lt;br /&gt;
*Début d'intégration de la bibliothèque de calcul de BPM dans l'application&lt;br /&gt;
&lt;br /&gt;
Arduino:&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
== Séance 24 (31/01) ==&lt;br /&gt;
* Ecriture des BPMs dans le champs &amp;quot;encoder&amp;quot; des fichiers. Sous la forme : &amp;quot;CDD|Nombre_de_BPMs|[Liste des BPMs]&amp;quot; exemple : &amp;quot;CDD|6|[95, 119, 119, 131, 107, 143]&amp;quot;&lt;br /&gt;
Arduino: &lt;br /&gt;
bugs du programme de base=&amp;gt; &lt;br /&gt;
* 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.&lt;br /&gt;
* La fonction isConnected renvoie toujours 1 même quand le téléphone n'est pas connecté&lt;br /&gt;
&lt;br /&gt;
== 07/02 ==&lt;br /&gt;
&lt;br /&gt;
* création du circuit permettant de detecter le mouvement d'un accelerometre pour tagger automatiquement les musiques.&lt;br /&gt;
http://web.media.mit.edu/~leah/LilyPad/build/accelero_shirt.html et http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1245357699&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== 10/02 ==&lt;br /&gt;
* L’accéléromètre permet uniquement de détecter les angles : http://bildr.org/2011/04/sensing-orientation-with-the-adxl335-arduino/&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [[Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml|android.hardware.usb.accessory.xml]]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
=Arduino=&lt;br /&gt;
*[http://www.mirorii.com/fichier/84/492503/code_arduinoV1-tar-gz.html code arduino v1.0]: Version de code qui fonctionne &lt;br /&gt;
**envoie d'un octet '1' par appli android, récupération par arduino sur le port usb, envoi d'un 1 par liaison Zigbee&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Version App Coachoid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html DemoKit 0.3.1] : Appli de test d'envoi d'1 bit avec un BPM voulu. ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources])&lt;br /&gt;
* [http://www.mirorii.com/fichier/45/460974/Coachoid_0-4-apk.html Coachoid 0.4] : Application présentation pre-soutenance.&lt;br /&gt;
**Lecture musiques&lt;br /&gt;
**Lecture d'un BPM dans les tags de la musique&lt;br /&gt;
**Envoi des BPMs à l'accessoire.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Tshirt.png&amp;diff=1669</id>
		<title>Fichier:Tshirt.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Tshirt.png&amp;diff=1669"/>
				<updated>2012-02-22T17:12:28Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : Projet final&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Projet final&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1668</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1668"/>
				<updated>2012-02-22T17:02:25Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Résultats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Résultats=&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Les codes sources sont aussi disponible en E306 sur tutur02 (partie Android + detection de mouvement) dans le dossier /home/pifou/IMA5sc/PFEADKAndroid/ ou sur tutur01 ( reste de la partie Arduino) dans le dossier /home/pifou/Documents/Coachoid/&lt;br /&gt;
&lt;br /&gt;
== Application Android ==&lt;br /&gt;
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 (&amp;quot;Coachoid=[12.5,42.1,78.6]&amp;quot; par exemple), auquel cas elle envoie les informations recueillies à l'accessoire Arduino connecté.&lt;br /&gt;
&lt;br /&gt;
* Telecharger Coachoid v1.0 : http://www.mirorii.com/fichier/44/507446/Coachoid_1-0-apk.html&lt;br /&gt;
* Code source : http://www.mirorii.com/fichier/26/507454/Coachoid_1-0-zip.html&lt;br /&gt;
&lt;br /&gt;
== Code Arduino ==&lt;br /&gt;
=== Detection de mouvement ===&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Code source : http://pastebin.com/e2bhiFV9&lt;br /&gt;
=== Accessoire pour Android et programme pour le Tshirt===&lt;br /&gt;
====Accessoire Android====&lt;br /&gt;
Ce programme détecte la connexion d'un téléphone Android et interagit avec l'application Coachoid. Il envoie les informations sur le sexe de l'utilisateur , le style de musique (salsa ou rock 6 temps) ainsi que les beats d'une chanson en fonction des informations qu'il reçoit du téléphone.&lt;br /&gt;
====Programme pour le T-shirt====&lt;br /&gt;
Ce programme gère l'activation des vibreurs en fonction du genre de l'utilisateur ainsi que de la musique selon les informations de beat reçue par la liaison sans fil Zigbee.&lt;br /&gt;
&lt;br /&gt;
Le code source de l'accessoire Android à compiler et uploader sur la MegaADK board se trouve dans le dossier ADKFinal de l'archive. Le code source pour le Lilypad sur le T-shirt se trouve dans le dossier TShirtFinal.&lt;br /&gt;
* Code source : http://www.mirorii.com/fichier/74/507486/Sources-tar-gz.html&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 16 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite du déboggage des sources C&lt;br /&gt;
* Finitions de la liste (avec enchainement, bouton play-pause)&lt;br /&gt;
&lt;br /&gt;
== Séance 17 (1/12) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en avant de la musique joué&lt;br /&gt;
* Lecture des tag des mp3 grâce à http://www.jthink.net/jaudiotagger/&lt;br /&gt;
* Fin du déboggage des sources&lt;br /&gt;
* Début du développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 18 (5/12) ==&lt;br /&gt;
* Test inclusion de l'information de BPM dans les tags de la musique. Tests Réussi&lt;br /&gt;
* 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/ &amp;amp; http://jorgenmodin.net/index_html/archive/2010/07/23/counting-bpm-beats-per-minute-on-linux/weblogentry_view#1315989621 )&lt;br /&gt;
* deboggage des sources terminé, développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 19 (04/01) ==&lt;br /&gt;
* 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.&lt;br /&gt;
* Recherche d'autres outils de calcul pour avoir des référance de BPM.&lt;br /&gt;
&lt;br /&gt;
== Séance 20 (05/01) ==&lt;br /&gt;
* Débuggage des sources C pour Arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 21 (11/01) ==&lt;br /&gt;
* Premier programme de test de connexion d'un téléphone à la plateforme Arduino&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Séance 22 (12/01) ==&lt;br /&gt;
Arduino&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Séance 23 (16/01) ==&lt;br /&gt;
*Début d'intégration de la bibliothèque de calcul de BPM dans l'application&lt;br /&gt;
&lt;br /&gt;
Arduino:&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
== Séance 24 (31/01) ==&lt;br /&gt;
* Ecriture des BPMs dans le champs &amp;quot;encoder&amp;quot; des fichiers. Sous la forme : &amp;quot;CDD|Nombre_de_BPMs|[Liste des BPMs]&amp;quot; exemple : &amp;quot;CDD|6|[95, 119, 119, 131, 107, 143]&amp;quot;&lt;br /&gt;
Arduino: &lt;br /&gt;
bugs du programme de base=&amp;gt; &lt;br /&gt;
* 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.&lt;br /&gt;
* La fonction isConnected renvoie toujours 1 même quand le téléphone n'est pas connecté&lt;br /&gt;
&lt;br /&gt;
== 07/02 ==&lt;br /&gt;
&lt;br /&gt;
* création du circuit permettant de detecter le mouvement d'un accelerometre pour tagger automatiquement les musiques.&lt;br /&gt;
http://web.media.mit.edu/~leah/LilyPad/build/accelero_shirt.html et http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1245357699&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== 10/02 ==&lt;br /&gt;
* L’accéléromètre permet uniquement de détecter les angles : http://bildr.org/2011/04/sensing-orientation-with-the-adxl335-arduino/&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [[Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml|android.hardware.usb.accessory.xml]]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
=Arduino=&lt;br /&gt;
*[http://www.mirorii.com/fichier/84/492503/code_arduinoV1-tar-gz.html code arduino v1.0]: Version de code qui fonctionne &lt;br /&gt;
**envoie d'un octet '1' par appli android, récupération par arduino sur le port usb, envoi d'un 1 par liaison Zigbee&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Version App Coachoid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html DemoKit 0.3.1] : Appli de test d'envoi d'1 bit avec un BPM voulu. ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources])&lt;br /&gt;
* [http://www.mirorii.com/fichier/45/460974/Coachoid_0-4-apk.html Coachoid 0.4] : Application présentation pre-soutenance.&lt;br /&gt;
**Lecture musiques&lt;br /&gt;
**Lecture d'un BPM dans les tags de la musique&lt;br /&gt;
**Envoi des BPMs à l'accessoire.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1603</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1603"/>
				<updated>2012-02-09T14:38:26Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Android */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 16 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite du déboggage des sources C&lt;br /&gt;
* Finitions de la liste (avec enchainement, bouton play-pause)&lt;br /&gt;
&lt;br /&gt;
== Séance 17 (1/12) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en avant de la musique joué&lt;br /&gt;
* Lecture des tag des mp3 grâce à http://www.jthink.net/jaudiotagger/&lt;br /&gt;
* Fin du déboggage des sources&lt;br /&gt;
* Début du développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 18 (5/12) ==&lt;br /&gt;
* Test inclusion de l'information de BPM dans les tags de la musique. Tests Réussi&lt;br /&gt;
* 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/ &amp;amp; http://jorgenmodin.net/index_html/archive/2010/07/23/counting-bpm-beats-per-minute-on-linux/weblogentry_view#1315989621 )&lt;br /&gt;
* deboggage des sources terminé, développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 19 (04/01) ==&lt;br /&gt;
* 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.&lt;br /&gt;
* Recherche d'autres outils de calcul pour avoir des référance de BPM.&lt;br /&gt;
&lt;br /&gt;
== Séance 20 (05/01) ==&lt;br /&gt;
* Débuggage des sources C pour Arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 21 (11/01) ==&lt;br /&gt;
* Premier programme de test de connexion d'un téléphone à la plateforme Arduino&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Séance 22 (12/01) ==&lt;br /&gt;
Arduino&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Séance 23 (16/01) ==&lt;br /&gt;
*Début d'intégration de la bibliothèque de calcul de BPM dans l'application&lt;br /&gt;
&lt;br /&gt;
Arduino:&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
== Séance 24 (31/01) ==&lt;br /&gt;
* Ecriture des BPMs dans le champs &amp;quot;encoder&amp;quot; des fichiers. Sous la forme : &amp;quot;CDD|Nombre_de_BPMs|[Liste des BPMs]&amp;quot; exemple : &amp;quot;CDD|6|[95, 119, 119, 131, 107, 143]&amp;quot;&lt;br /&gt;
Arduino: &lt;br /&gt;
bugs du programme de base=&amp;gt; &lt;br /&gt;
* 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.&lt;br /&gt;
* La fonction isConnected renvoie toujours 1 même quand le téléphone n'est pas connecté&lt;br /&gt;
&lt;br /&gt;
== 07/02 ==&lt;br /&gt;
&lt;br /&gt;
* création du circuit permettant de detecter le mouvement d'un accelerometre pour tagger automatiquement les musiques.&lt;br /&gt;
http://web.media.mit.edu/~leah/LilyPad/build/accelero_shirt.html et http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1245357699&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [[Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml|android.hardware.usb.accessory.xml]]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
=Arduino=&lt;br /&gt;
*[http://www.mirorii.com/fichier/84/492503/code_arduinoV1-tar-gz.html code arduino v1.0]: Version de code qui fonctionne &lt;br /&gt;
**envoie d'un octet '1' par appli android, récupération par arduino sur le port usb, envoi d'un 1 par liaison Zigbee&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Version App Coachoid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html DemoKit 0.3.1] : Appli de test d'envoi d'1 bit avec un BPM voulu. ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources])&lt;br /&gt;
* [http://www.mirorii.com/fichier/45/460974/Coachoid_0-4-apk.html Coachoid 0.4] : Application présentation pre-soutenance.&lt;br /&gt;
**Lecture musiques&lt;br /&gt;
**Lecture d'un BPM dans les tags de la musique&lt;br /&gt;
**Envoi des BPMs à l'accessoire.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1602</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1602"/>
				<updated>2012-02-09T14:32:40Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* 07/02 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 16 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite du déboggage des sources C&lt;br /&gt;
* Finitions de la liste (avec enchainement, bouton play-pause)&lt;br /&gt;
&lt;br /&gt;
== Séance 17 (1/12) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en avant de la musique joué&lt;br /&gt;
* Lecture des tag des mp3 grâce à http://www.jthink.net/jaudiotagger/&lt;br /&gt;
* Fin du déboggage des sources&lt;br /&gt;
* Début du développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 18 (5/12) ==&lt;br /&gt;
* Test inclusion de l'information de BPM dans les tags de la musique. Tests Réussi&lt;br /&gt;
* 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/ &amp;amp; http://jorgenmodin.net/index_html/archive/2010/07/23/counting-bpm-beats-per-minute-on-linux/weblogentry_view#1315989621 )&lt;br /&gt;
* deboggage des sources terminé, développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 19 (04/01) ==&lt;br /&gt;
* 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.&lt;br /&gt;
* Recherche d'autres outils de calcul pour avoir des référance de BPM.&lt;br /&gt;
&lt;br /&gt;
== Séance 20 (05/01) ==&lt;br /&gt;
* Débuggage des sources C pour Arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 21 (11/01) ==&lt;br /&gt;
* Premier programme de test de connexion d'un téléphone à la plateforme Arduino&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Séance 22 (12/01) ==&lt;br /&gt;
Arduino&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Séance 23 (16/01) ==&lt;br /&gt;
*Début d'intégration de la bibliothèque de calcul de BPM dans l'application&lt;br /&gt;
&lt;br /&gt;
Arduino:&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
== Séance 24 (31/01) ==&lt;br /&gt;
* Ecriture des BPMs dans le champs &amp;quot;encoder&amp;quot; des fichiers. Sous la forme : &amp;quot;CDD|Nombre_de_BPMs|[Liste des BPMs]&amp;quot; exemple : &amp;quot;CDD|6|[95, 119, 119, 131, 107, 143]&amp;quot;&lt;br /&gt;
Arduino: &lt;br /&gt;
bugs du programme de base=&amp;gt; &lt;br /&gt;
* 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.&lt;br /&gt;
* La fonction isConnected renvoie toujours 1 même quand le téléphone n'est pas connecté&lt;br /&gt;
&lt;br /&gt;
== 07/02 ==&lt;br /&gt;
&lt;br /&gt;
* création du circuit permettant de detecter le mouvement d'un accelerometre pour tagger automatiquement les musiques.&lt;br /&gt;
http://web.media.mit.edu/~leah/LilyPad/build/accelero_shirt.html et http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1245357699&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [[Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml|android.hardware.usb.accessory.xml]]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Version App Coachoid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html DemoKit 0.3.1] : Appli de test d'envoi d'1 bit avec un BPM voulu. ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources])&lt;br /&gt;
* [http://www.mirorii.com/fichier/45/460974/Coachoid_0-4-apk.html Coachoid 0.4] : Application présentation pre-soutenance.&lt;br /&gt;
**Lecture musiques&lt;br /&gt;
**Lecture d'un BPM dans les tags de la musique&lt;br /&gt;
**Envoi des BPMs à l'accessoire.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1511</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1511"/>
				<updated>2012-02-01T15:13:52Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 24 (31/01) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 16 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite du déboggage des sources C&lt;br /&gt;
* Finitions de la liste (avec enchainement, bouton play-pause)&lt;br /&gt;
&lt;br /&gt;
== Séance 17 (1/12) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en avant de la musique joué&lt;br /&gt;
* Lecture des tag des mp3 grâce à http://www.jthink.net/jaudiotagger/&lt;br /&gt;
* Fin du déboggage des sources&lt;br /&gt;
* Début du développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 18 (5/12) ==&lt;br /&gt;
* Test inclusion de l'information de BPM dans les tags de la musique. Tests Réussi&lt;br /&gt;
* 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/ &amp;amp; http://jorgenmodin.net/index_html/archive/2010/07/23/counting-bpm-beats-per-minute-on-linux/weblogentry_view#1315989621 )&lt;br /&gt;
* deboggage des sources terminé, développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 19 (04/01) ==&lt;br /&gt;
* 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.&lt;br /&gt;
* Recherche d'autres outils de calcul pour avoir des référance de BPM.&lt;br /&gt;
&lt;br /&gt;
== Séance 20 (05/01) ==&lt;br /&gt;
* Débuggage des sources C pour Arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 21 (11/01) ==&lt;br /&gt;
* Premier programme de test de connexion d'un téléphone à la plateforme Arduino&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Séance 22 (12/01) ==&lt;br /&gt;
Arduino&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Séance 23 (16/01) ==&lt;br /&gt;
*Début d'intégration de la bibliothèque de calcul de BPM dans l'application&lt;br /&gt;
&lt;br /&gt;
Arduino:&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
== Séance 24 (31/01) ==&lt;br /&gt;
* Ecriture des BPMs dans le champs &amp;quot;encoder&amp;quot; des fichiers. Sous la forme : &amp;quot;CDD|Nombre_de_BPMs|[Liste des BPMs]&amp;quot; exemple : &amp;quot;CDD|6|[95, 119, 119, 131, 107, 143]&amp;quot;&lt;br /&gt;
Arduino: &lt;br /&gt;
bugs du programme de base=&amp;gt; &lt;br /&gt;
* 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.&lt;br /&gt;
* La fonction isConnected renvoie toujours 1 même quand le téléphone n'est pas connecté&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Version App Coachoid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html DemoKit 0.3.1] : Appli de test d'envoi d'1 bit avec un BPM voulu. ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources])&lt;br /&gt;
* [http://www.mirorii.com/fichier/45/460974/Coachoid_0-4-apk.html Coachoid 0.4] : Application présentation pre-soutenance.&lt;br /&gt;
**Lecture musiques&lt;br /&gt;
**Lecture d'un BPM dans les tags de la musique&lt;br /&gt;
**Envoi des BPMs à l'accessoire.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1508</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1508"/>
				<updated>2012-01-16T16:26:20Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 22 (12/01) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 16 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite du déboggage des sources C&lt;br /&gt;
* Finitions de la liste (avec enchainement, bouton play-pause)&lt;br /&gt;
&lt;br /&gt;
== Séance 17 (1/12) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en avant de la musique joué&lt;br /&gt;
* Lecture des tag des mp3 grâce à http://www.jthink.net/jaudiotagger/&lt;br /&gt;
* Fin du déboggage des sources&lt;br /&gt;
* Début du développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 18 (5/12) ==&lt;br /&gt;
* Test inclusion de l'information de BPM dans les tags de la musique. Tests Réussi&lt;br /&gt;
* 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/ &amp;amp; http://jorgenmodin.net/index_html/archive/2010/07/23/counting-bpm-beats-per-minute-on-linux/weblogentry_view#1315989621 )&lt;br /&gt;
* deboggage des sources terminé, développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 19 (04/01) ==&lt;br /&gt;
* 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.&lt;br /&gt;
* Recherche d'autres outils de calcul pour avoir des référance de BPM.&lt;br /&gt;
&lt;br /&gt;
== Séance 20 (05/01) ==&lt;br /&gt;
* Débuggage des sources C pour Arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 21 (11/01) ==&lt;br /&gt;
* Premier programme de test de connexion d'un téléphone à la plateforme Arduino&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Séance 22 (12/01) ==&lt;br /&gt;
Arduino&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Séance 23 (16/01) ==&lt;br /&gt;
Arduino:&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Version App Coachoid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html DemoKit 0.3.1] : Appli de test d'envoi d'1 bit avec un BPM voulu. ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources])&lt;br /&gt;
* [http://www.mirorii.com/fichier/45/460974/Coachoid_0-4-apk.html Coachoid 0.4] : Application présentation pre-soutenance.&lt;br /&gt;
**Lecture musiques&lt;br /&gt;
**Lecture d'un BPM dans les tags de la musique&lt;br /&gt;
**Envoi des BPMs à l'accessoire.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1507</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1507"/>
				<updated>2012-01-16T14:42:46Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 21 (11/01) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 16 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite du déboggage des sources C&lt;br /&gt;
* Finitions de la liste (avec enchainement, bouton play-pause)&lt;br /&gt;
&lt;br /&gt;
== Séance 17 (1/12) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en avant de la musique joué&lt;br /&gt;
* Lecture des tag des mp3 grâce à http://www.jthink.net/jaudiotagger/&lt;br /&gt;
* Fin du déboggage des sources&lt;br /&gt;
* Début du développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 18 (5/12) ==&lt;br /&gt;
* Test inclusion de l'information de BPM dans les tags de la musique. Tests Réussi&lt;br /&gt;
* 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/ &amp;amp; http://jorgenmodin.net/index_html/archive/2010/07/23/counting-bpm-beats-per-minute-on-linux/weblogentry_view#1315989621 )&lt;br /&gt;
* deboggage des sources terminé, développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 19 (04/01) ==&lt;br /&gt;
* 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.&lt;br /&gt;
* Recherche d'autres outils de calcul pour avoir des référance de BPM.&lt;br /&gt;
&lt;br /&gt;
== Séance 20 (05/01) ==&lt;br /&gt;
* Débuggage des sources C pour Arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 21 (11/01) ==&lt;br /&gt;
* Premier programme de test de connexion d'un téléphone à la plateforme Arduino&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Séance 22 (12/01) ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Version App Coachoid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html DemoKit 0.3.1] : Appli de test d'envoi d'1 bit avec un BPM voulu. ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources])&lt;br /&gt;
* [http://www.mirorii.com/fichier/45/460974/Coachoid_0-4-apk.html Coachoid 0.4] : Application présentation pre-soutenance.&lt;br /&gt;
**Lecture musiques&lt;br /&gt;
**Lecture d'un BPM dans les tags de la musique&lt;br /&gt;
**Envoi des BPMs à l'accessoire.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1506</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1506"/>
				<updated>2012-01-11T16:37:05Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 20 (05/01) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 16 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite du déboggage des sources C&lt;br /&gt;
* Finitions de la liste (avec enchainement, bouton play-pause)&lt;br /&gt;
&lt;br /&gt;
== Séance 17 (1/12) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en avant de la musique joué&lt;br /&gt;
* Lecture des tag des mp3 grâce à http://www.jthink.net/jaudiotagger/&lt;br /&gt;
* Fin du déboggage des sources&lt;br /&gt;
* Début du développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 18 (5/12) ==&lt;br /&gt;
* Test inclusion de l'information de BPM dans les tags de la musique. Tests Réussi&lt;br /&gt;
* 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/ &amp;amp; http://jorgenmodin.net/index_html/archive/2010/07/23/counting-bpm-beats-per-minute-on-linux/weblogentry_view#1315989621 )&lt;br /&gt;
* deboggage des sources terminé, développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 19 (04/01) ==&lt;br /&gt;
* 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.&lt;br /&gt;
* Recherche d'autres outils de calcul pour avoir des référance de BPM.&lt;br /&gt;
&lt;br /&gt;
== Séance 20 (05/01) ==&lt;br /&gt;
* Débuggage des sources C pour Arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 21 (11/01) ==&lt;br /&gt;
* Premier programme de test de connexion d'un téléphone à la plateforme Arduino&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Version App Coachoid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html DemoKit 0.3.1] : Appli de test d'envoi d'1 bit avec un BPM voulu. ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources])&lt;br /&gt;
* [http://www.mirorii.com/fichier/45/460974/Coachoid_0-4-apk.html Coachoid 0.4] : Application présentation pre-soutenance.&lt;br /&gt;
**Lecture musiques&lt;br /&gt;
**Lecture d'un BPM dans les tags de la musique&lt;br /&gt;
**Envoi des BPMs à l'accessoire.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1505</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1505"/>
				<updated>2012-01-11T16:31:26Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 19 (04/01) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 16 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite du déboggage des sources C&lt;br /&gt;
* Finitions de la liste (avec enchainement, bouton play-pause)&lt;br /&gt;
&lt;br /&gt;
== Séance 17 (1/12) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en avant de la musique joué&lt;br /&gt;
* Lecture des tag des mp3 grâce à http://www.jthink.net/jaudiotagger/&lt;br /&gt;
* Fin du déboggage des sources&lt;br /&gt;
* Début du développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 18 (5/12) ==&lt;br /&gt;
* Test inclusion de l'information de BPM dans les tags de la musique. Tests Réussi&lt;br /&gt;
* 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/ &amp;amp; http://jorgenmodin.net/index_html/archive/2010/07/23/counting-bpm-beats-per-minute-on-linux/weblogentry_view#1315989621 )&lt;br /&gt;
* deboggage des sources terminé, développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 19 (04/01) ==&lt;br /&gt;
* 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.&lt;br /&gt;
* Recherche d'autres outils de calcul pour avoir des référance de BPM.&lt;br /&gt;
&lt;br /&gt;
== Séance 20 (05/01) ==&lt;br /&gt;
* Débuggage des sources C pour Arduino&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Version App Coachoid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html DemoKit 0.3.1] : Appli de test d'envoi d'1 bit avec un BPM voulu. ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources])&lt;br /&gt;
* [http://www.mirorii.com/fichier/45/460974/Coachoid_0-4-apk.html Coachoid 0.4] : Application présentation pre-soutenance.&lt;br /&gt;
**Lecture musiques&lt;br /&gt;
**Lecture d'un BPM dans les tags de la musique&lt;br /&gt;
**Envoi des BPMs à l'accessoire.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1496</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1496"/>
				<updated>2011-12-05T10:49:52Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 17 (1/12) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 16 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite du déboggage des sources C&lt;br /&gt;
* Finitions de la liste (avec enchainement, bouton play-pause)&lt;br /&gt;
&lt;br /&gt;
== Séance 17 (1/12) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en avant de la musique joué&lt;br /&gt;
* Lecture des tag des mp3 grâce à http://www.jthink.net/jaudiotagger/&lt;br /&gt;
* Fin du déboggage des sources&lt;br /&gt;
* Début du développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
== Séance 18 (5/12) ==&lt;br /&gt;
* Test inclusion de l'information de BPM dans les tags de la musique. Tests Réussi&lt;br /&gt;
* 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/ &amp;amp; http://jorgenmodin.net/index_html/archive/2010/07/23/counting-bpm-beats-per-minute-on-linux/weblogentry_view#1315989621 )&lt;br /&gt;
* deboggage des sources terminé, développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1495</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1495"/>
				<updated>2011-12-05T10:49:38Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 18 (5/12) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 16 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite du déboggage des sources C&lt;br /&gt;
* Finitions de la liste (avec enchainement, bouton play-pause)&lt;br /&gt;
&lt;br /&gt;
== Séance 17 (1/12) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en avant de la musique joué&lt;br /&gt;
* Lecture des tag des mp3 grâce à http://www.jthink.net/jaudiotagger/&lt;br /&gt;
* Fin du déboggage des sources&lt;br /&gt;
* Début du développement de programme principal&lt;br /&gt;
&lt;br /&gt;
== Séance 18 (5/12) ==&lt;br /&gt;
* Test inclusion de l'information de BPM dans les tags de la musique. Tests Réussi&lt;br /&gt;
* 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/ &amp;amp; http://jorgenmodin.net/index_html/archive/2010/07/23/counting-bpm-beats-per-minute-on-linux/weblogentry_view#1315989621 )&lt;br /&gt;
* deboggage des sources terminé, développement d'un programme test&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1492</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1492"/>
				<updated>2011-12-01T10:42:17Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 17 (1/12) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 16 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite du déboggage des sources C&lt;br /&gt;
* Finitions de la liste (avec enchainement, bouton play-pause)&lt;br /&gt;
&lt;br /&gt;
== Séance 17 (1/12) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en avant de la musique joué&lt;br /&gt;
* Lecture des tag des mp3 grâce à http://www.jthink.net/jaudiotagger/&lt;br /&gt;
* Fin du déboggage des sources&lt;br /&gt;
* Début du développement de programme principal&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1490</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1490"/>
				<updated>2011-11-30T15:51:31Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 15 (30/11) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite du déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1489</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1489"/>
				<updated>2011-11-30T15:51:10Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 15 (29/11) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (30/11) ==&lt;br /&gt;
&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1488</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1488"/>
				<updated>2011-11-30T15:36:58Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 15 (29/11) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
* Mise en place de la recherche des musiques du telephone, affichage en list et début d'implementation des intéractions avec les musiques.&lt;br /&gt;
&lt;br /&gt;
== Séance 15 (29/11) ==&lt;br /&gt;
&lt;br /&gt;
* Lecture basique de musique fonctionnel avec barre progression et selection de musique&lt;br /&gt;
* Suite et fin de l'adaptation des sources C++ en C:&lt;br /&gt;
* Déboggage des sources C&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1485</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1485"/>
				<updated>2011-11-28T10:41:30Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 13 (22/11) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangés: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
== Séance 14 (28/11) ==&lt;br /&gt;
&lt;br /&gt;
* Suite de l'adaptation des sources C++ en C:&lt;br /&gt;
** codes sources adaptés: Max3421e.h, Max3421e.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h, fonction digitalWrite de la librairie Wiring&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1484</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1484"/>
				<updated>2011-11-28T09:55:07Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 13 (22/11) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangées: ch9.h,  Max3421e_constants.h &lt;br /&gt;
** codes source en cours d'adaptation: Usb.h,Max3421e.h, Max3421e.c, Usb.c&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1483</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1483"/>
				<updated>2011-11-22T16:32:56Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 13 (22/11) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Séance 9 (14/11) ==&lt;br /&gt;
&lt;br /&gt;
* Mise en place de la connectivité avec les accessoires sur l'application de test. Reste à tester sur l'arduino.&lt;br /&gt;
&lt;br /&gt;
== Séance 10 (15/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Traduction en C des librairies.&lt;br /&gt;
&lt;br /&gt;
== Séance 11 (18/11) ==&lt;br /&gt;
* 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 )&lt;br /&gt;
* Traduction en C de la librairie AndroidAccessory.c&lt;br /&gt;
&lt;br /&gt;
== Séance 12 (21/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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'[http://www.mirorii.com/fichier/91/456089/DemoKit_0-3-1-apk.html apk associé DemoKit 0.3.1] ([http://www.mirorii.com/fichier/46/456090/DemoKit_0-3-1-zip.html sources]).&lt;br /&gt;
* Poursuite de la traduction en C.&lt;br /&gt;
&lt;br /&gt;
== Séance 13 (22/11) ==&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* Début de l'application Coachoid v4.0 = application finale de lecture de musique &amp;amp; co. ( http://developer.android.com/guide/topics/media/mediaplayer.html )&lt;br /&gt;
* 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&lt;br /&gt;
** codes source inchangées: ch9.h,  Max3421e_constants.h, Max3421e.h&lt;br /&gt;
** codes source adaptés: Max3421e.c, Usb.c&lt;br /&gt;
** codes source en cours d'adaptation: Usb.h&lt;br /&gt;
** codes source restant à adapter: AndroidAccessory.cpp, AndroidAccessory.h&lt;br /&gt;
&lt;br /&gt;
Il y aura la fonction digitalWrite à réécrire également.&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== Xbee ==&lt;br /&gt;
&lt;br /&gt;
Utilisation du channel 15 ( sous minicom -s &amp;quot;+++&amp;quot; -&amp;gt; &amp;quot;ATCH15&amp;quot; -&amp;gt; &amp;quot;ATCH&amp;quot; pour verifier -&amp;gt; &amp;quot;ATWR&amp;quot; pour sauvegarder -&amp;gt; ATCN pour quitter la modif &lt;br /&gt;
=== Configuration===&lt;br /&gt;
&lt;br /&gt;
*http://arduino.cc/en/Guide/ArduinoXbeeShield&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
== Création apk ==&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1473</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1473"/>
				<updated>2011-11-08T16:08:26Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 7 ( 07/11 ) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:C360 2011-11-0816-01-14.jpg|200px|thumb|right|led qui clignote]] Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:C360_2011-11-0816-01-14.jpg&amp;diff=1472</id>
		<title>Fichier:C360 2011-11-0816-01-14.jpg</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:C360_2011-11-0816-01-14.jpg&amp;diff=1472"/>
				<updated>2011-11-08T16:04:58Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : led qui clignote&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;led qui clignote&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1471</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1471"/>
				<updated>2011-11-08T15:59:09Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 8 ( 8/11 ) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1470</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1470"/>
				<updated>2011-11-08T15:11:25Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*liste des pins pour le microprocesseur ATmega2560&amp;lt;br&amp;gt;&lt;br /&gt;
http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*exemple de programmation avec AVR&amp;lt;br&amp;gt;&lt;br /&gt;
http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*exemple de code arduino en C pour communiquer via le port série&amp;lt;br&amp;gt;&lt;br /&gt;
http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*présentation arduinoboardADK&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*code source led qui clignote pour Atmega328p (commande pour compiler avec avr-gcc et uploader avecavrdude)&amp;lt;br&amp;gt;&lt;br /&gt;
http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*code source led qui clignote  atmega168&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&amp;lt;br&amp;gt;&lt;br /&gt;
http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1469</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1469"/>
				<updated>2011-11-08T14:32:55Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
== Séance 6 (04/11/2011) ==&lt;br /&gt;
Début des tâches séparées.&lt;br /&gt;
&lt;br /&gt;
* 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é.&lt;br /&gt;
* prise en main du makefile pour la compilation directe en C pour arduino&lt;br /&gt;
&lt;br /&gt;
== Séance 7 ( 07/11 ) ==&lt;br /&gt;
* App: Mise en place bouton d'envoi de bit et Slider de selection de BPM pour simulation : interface ok, mais pas connecté.&lt;br /&gt;
&lt;br /&gt;
* Arduino : Finalisation clignotage de LED en C, et mise en place d'AVR pour eclipse.&lt;br /&gt;
&lt;br /&gt;
== Séance 8 ( 8/11 ) ==&lt;br /&gt;
[[Fichier:App01_test_bpm.png|200px|thumb|right|application de test avec un envoi à 124 BPM]]&lt;br /&gt;
* Finalisation interface de l'application de test et début d'intégration de l'ADK pour communiquer avec la board.&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*&lt;br /&gt;
**http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*&lt;br /&gt;
**http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*&lt;br /&gt;
**http://www.arduino.cc/en/Reference/PortManipulation&lt;br /&gt;
*&lt;br /&gt;
**http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*&lt;br /&gt;
**http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*&lt;br /&gt;
**http://www.wikihow.com/Write-Arduino-Software-in-C&lt;br /&gt;
*&lt;br /&gt;
**http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*&lt;br /&gt;
**http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
*code source pour USB Host: MAX3421E&lt;br /&gt;
**http://code.google.com/p/microbridge/source/browse/trunk/src/mcu/?r=20#mcu&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1463</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1463"/>
				<updated>2011-11-02T16:33:02Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
*lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
*envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
*transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
*Test liaison telephone &amp;lt;-&amp;gt; Arduino : affichage message sur terminal serie (arduino) lors de l'appui sur un interrupteur sur le telephone.&lt;br /&gt;
* Exploration des datasheet du Arduino pour trouver la correspondance des Port en C avec les broches.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
*Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
*Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Hardware==&lt;br /&gt;
*http://arduino.cc/en/Hacking/PinMapping2560&lt;br /&gt;
*http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.AVRProgrammingAdvanced&lt;br /&gt;
*http://www.arduino.cc/en/Reference/PortManipulation&lt;br /&gt;
*http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
*http://www.arduino.cc/en/Main/ArduinoBoardADK&lt;br /&gt;
*http://www.wikihow.com/Write-Arduino-Software-in-C&lt;br /&gt;
*http://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/&lt;br /&gt;
*http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
===Compilation ===&lt;br /&gt;
*[[:Fichier:Makefile.jpg|Makefile de Mr Vantroys]] points à veririer : MCU, CFLAG et DUDE&lt;br /&gt;
*[http://www.robgray.com/temp/makefile Makefile plus imposant]&lt;br /&gt;
&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1457</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1457"/>
				<updated>2011-11-02T15:24:06Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 5(2/11/2011) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
-lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
&lt;br /&gt;
-envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
&lt;br /&gt;
-transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
-Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
-Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1456</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1456"/>
				<updated>2011-11-02T15:23:50Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 4(18/10/2011) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
== Séance 5(2/11/2011)==&lt;br /&gt;
Définition des tâches principales et répartition:&lt;br /&gt;
&lt;br /&gt;
-lecture de la musique par le téléphone (application Android), détection des BPM (Matlab) =&amp;gt; Nicolas&lt;br /&gt;
-envoi des infos BPM à l'arduino (extraction des metadatas et envoi) =&amp;gt; Nicolas&lt;br /&gt;
-transmission des BPM via Zigbee au T-shirt =&amp;gt; Catherine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
-Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
-Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1455</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1455"/>
				<updated>2011-11-02T15:12:33Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Problèmes rencontrés */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
-Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
-Incompatibilité du programme Arduino de démonstration =&amp;gt; programmation en C&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1454</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1454"/>
				<updated>2011-10-18T12:32:15Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Soucis de com.android.future.usb.accessory.jar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
   mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
   chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
   ---------&amp;gt; reboot pour que la librairie soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1453</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1453"/>
				<updated>2011-10-18T12:30:41Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Soucis de com.android.future.usb.accessory.jar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
== Séance 4(18/10/2011)==&lt;br /&gt;
Test de l'installation DemoKit de l'ADK.&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés===&lt;br /&gt;
Manque de certains fichiers qui permettent la communication USB sur les téléphones.&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
== Commun ==&lt;br /&gt;
* 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/&lt;br /&gt;
&lt;br /&gt;
=== Soucis de com.android.future.usb.accessory.jar ===&lt;br /&gt;
xml : [https://projets-imasc.polytech-lille.net:40000/mediawiki/index.php?title=Google_ADK_et_wearable_computing/android.hardware.usb.accessory.xml android.hardware.usb.accessory.xml]&lt;br /&gt;
&lt;br /&gt;
jar : [http://www.mirorii.com/fichier/8/444186/com-android-future-usb-accessory-jar.html com.android.future.usb.accessory.jar]&lt;br /&gt;
&lt;br /&gt;
   su&lt;br /&gt;
   mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
   cp /sdcard/com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
   chmod 655 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
   vi /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   chmod 655 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
   mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system&lt;br /&gt;
&lt;br /&gt;
manipulation légèrement différente pour le motorola defy:&lt;br /&gt;
&lt;br /&gt;
mount -o remount,rw -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
cp com.android.future.usb.accessory.jar /system/framework&lt;br /&gt;
chmod 644 /system/framework/com.android.future.usb.accessory.jar&lt;br /&gt;
cp android.hardware.usb.accessory.xml /etc/permissions&lt;br /&gt;
chmod 644 /etc/permissions/android.hardware.usb.accessory.xml&lt;br /&gt;
mount -o ro,remount -t ext3 /dev/block/mmsblk1p21 /system&lt;br /&gt;
&lt;br /&gt;
reboot pour que la librairie soient prises en compte.&lt;br /&gt;
&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Arduino =&lt;br /&gt;
==Divers==&lt;br /&gt;
=== Connexion root pour lancer l'IDE arduino===&lt;br /&gt;
   ssh -X -lroot localhost&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1442</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1442"/>
				<updated>2011-10-12T14:55:24Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Réalisation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
==Séance 3 (11/10/2011)==&lt;br /&gt;
&amp;lt;u&amp;gt;Installation de Android SDK&amp;lt;/u&amp;gt; &lt;br /&gt;
: -http://developer.android.com/sdk/installing.html&lt;br /&gt;
:: -http://developer.android.com/sdk/requirements.html &lt;br /&gt;
::: -installation de Eclipse Galileo&lt;br /&gt;
::: -installation du plugin ADT http://developer.android.com/sdk/eclipse-adt.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Problèmes rencontrés et solutions apportées:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lien https de dl-ssl.google.com ne fonctionne pas: remplacement du https en http &lt;br /&gt;
NB: pour le STEP 4 de http://developer.android.com/sdk/installing.html =&amp;gt; http forcé dans les paramètres du SDK Manager&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1441</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1441"/>
				<updated>2011-10-12T14:39:01Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Motorola Defy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Prise en main des téléphones et du sujet, mis à jour des téléphones vers 2.3.4.&lt;br /&gt;
&lt;br /&gt;
==Séance 2 (10/10/2011)==&lt;br /&gt;
&lt;br /&gt;
Fin de mise à jour des téléphones vers 2.3.4 et 2.3.5.&lt;br /&gt;
&lt;br /&gt;
=Préparation téléphones=&lt;br /&gt;
==Milestone 2 (droid2)==&lt;br /&gt;
Passage en 2.3.4 : http://forum.xda-developers.com/showthread.php?t=1169038&lt;br /&gt;
Compte google : imapolytech@gmail.com (mot de passe = mot de passe habituel &amp;quot;root&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Motorola Defy==&lt;br /&gt;
Passage en 2.3.4 : http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root =&amp;gt; failed, nécessite un passage à froyo via Windows avec le logiciel Motorola Software Update)&lt;br /&gt;
Compte google : defypolytechima@gmail.com&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1438</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1438"/>
				<updated>2011-10-05T16:07:24Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 1 (5/10/2012) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2012)==&lt;br /&gt;
&lt;br /&gt;
Installation d'une version Android &amp;gt;= 2.3.4 sur le Motorola Defy http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root)&lt;br /&gt;
&lt;br /&gt;
Création d'un compte Google pour le Motorola Defy: defypolytechima@gmail.com&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1437</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1437"/>
				<updated>2011-10-05T16:01:15Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 1 (5/10/2012) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2012)==&lt;br /&gt;
&lt;br /&gt;
Installation d'une version Android &amp;gt;= 2.3.4 sur le Motorola Defy http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/  (gingerbreak incompatible avec android 2.1 : utilisation de z4root&lt;br /&gt;
&lt;br /&gt;
Création d'un compte Google pour le Motorola Defy: defypolytechima@gmail.com&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1436</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1436"/>
				<updated>2011-10-05T15:18:05Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séance 1 (5/10/2012) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2012)==&lt;br /&gt;
&lt;br /&gt;
Installation d'une version Android &amp;gt;= 2.3.4 sur le Motorola Defy http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/&lt;br /&gt;
&lt;br /&gt;
Création d'un compte Google pour le Motorola Defy: defypolytechima@gmail.com&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1435</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1435"/>
				<updated>2011-10-05T15:17:51Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Présentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Séance 1 (5/10/2012)==&lt;br /&gt;
&lt;br /&gt;
Installation d'une version Android &amp;gt;= 2.3.4 sur le Motorola Defy http://forum.frandroid.com/topic/51780-rom-cyanogen-7-rc15/&lt;br /&gt;
Création d'un compte Google pour le Motorola Defy: defypolytechima@gmail.com&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1434</id>
		<title>Google ADK et wearable computing</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Google_ADK_et_wearable_computing&amp;diff=1434"/>
				<updated>2011-10-05T11:40:42Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : Page créée avec « =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 le... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
&lt;br /&gt;
'''Contexte:''' Développement d'extension pour Android&lt;br /&gt;
&lt;br /&gt;
Android dispose d'un protocole facilitant la connexion de périphériques sur les téléphones et les tablets &lt;br /&gt;
http://developer.android.com/guide/topics/usb/adk.html &lt;br /&gt;
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,&lt;br /&gt;
Les étudiants pourront ensuite proposer leurs propres extensions: &lt;br /&gt;
&lt;br /&gt;
- Support XBee (comme pour les Arduino) &lt;br /&gt;
&lt;br /&gt;
- Support RFID &lt;br /&gt;
&lt;br /&gt;
- Support vêtement intelligent pour la danse (suite du projet IMA4SC)&lt;br /&gt;
&lt;br /&gt;
-...&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=969</id>
		<title>Coach Dance</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=969"/>
				<updated>2011-05-12T16:34:31Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séances Bonus  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:salsa.jpg|right|thumb]]&lt;br /&gt;
= Présentation =&lt;br /&gt;
L'apprentissage de la danse peut poser certains problèmes aux débutants. Un des problèmes majeurs rencontré concerne la synchronisation des mouvements sur le rythme de la musique. De nombreux débutants n'entendent pas le rythme soit parce qu'ils ne connaissent pas bien le type de musique (e.g. salsa) soit parce que la coordination des mouvements (bras et jambes) leur demandent de gros efforts cognitifs.&lt;br /&gt;
&lt;br /&gt;
L'objectif du projet consiste à aider les danseurs débutants en donnant les indications de rythme et de mouvement. Pour cela, vous devez développer un système portable (type wearable computer) qui devra :&lt;br /&gt;
&lt;br /&gt;
* détecter de manière automatique le rythme de la musique. Dans un premier temps, nous ciblerons deux danses, la salsa et le rock 6 temps. Le type de danse sera indiqué au système afin de &amp;quot;simplifier&amp;quot; la reconnaissance&lt;br /&gt;
* en fonction du rythme et de la danse, activer un des vibreurs qui seront disposé sur le danseur. Dans un premier temps, un vibreur sera installé sur chacun des mollets afin d'indiquer quel est le pied à bouger. Si le temps le permet, il sera possible d'étendre le système au mouvement des bras ou à d'autres danses.&lt;br /&gt;
&lt;br /&gt;
= Préparation du projet =&lt;br /&gt;
&lt;br /&gt;
== Matériel ==&lt;br /&gt;
&lt;br /&gt;
* 1 arduino lilypad (disponible) ;&lt;br /&gt;
* 4 vibreurs (à commander) ;&lt;br /&gt;
* 1 micro portable (à commander) [http://www.selectronic.fr/article.asp?article_ref_entier=11.1142-9999];&lt;br /&gt;
* -&amp;gt; un cable jack par micro pour la connection à une plateforme Altium (disponibilité ?)&lt;br /&gt;
* pour la connection Altium/Zigbee : puce Zigbee/cable(adaptateur usb)&lt;br /&gt;
* Des morceaux de musique Salsa et Rock (à commander...XD);&lt;br /&gt;
&lt;br /&gt;
== Danses ==&lt;br /&gt;
&lt;br /&gt;
Les deux danses visées dans un premier temps sont la salsa (style cubain, http://fr.wikipedia.org/wiki/Salsa) et le rock 6 temps (http://fr.wikipedia.org/wiki/Rock_%C3%A0_six_temps).&lt;br /&gt;
Le système devra permettre de sélectionner la danse et le sexe de la personne (les pas de la fille sont inversés par rapport à ceux du garçon)&lt;br /&gt;
&lt;br /&gt;
= Avancement du projet =&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Première Séance (28/02/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
Nous avons trouvé un lien pour un montage de détection des beats par minute (d'une basse) dans une chanson. Ce montage devra sûrement être adapté pour la salsa car le rythme est repéré par le claquement des claves de fréquence plus hautes que les basses.&lt;br /&gt;
&lt;br /&gt;
;lien pour du montage de détection bpm: http://www.sonelec-musique.com/electronique_realisations_compteur_tempo_001.html&lt;br /&gt;
&lt;br /&gt;
idée à développer: filtre numérique passe bande à tester sur 2 sons wav différents... (fft sur un fichier wav avec matlab puis calcul du filtre)&lt;br /&gt;
&lt;br /&gt;
;lien pour le câblage d'un micro : http://www.sonelec-musique.com/electronique_bases_alim_micro_electret.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF8000;&amp;quot;&amp;gt;&amp;lt;big&amp;gt;'''Etapes prévues:'''&amp;lt;/big&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Test de la méthode de détection des beats par minute : Nous voulons trouver une façon de faire le traitement numérique avec le microcontrôleur du LilyPad (ATmega328V) pour éviter d'avoir à concevoir un circuit imprimé en parallèle avec un montage à amplificateur opérationnel.&lt;br /&gt;
;Phase de développement : Après avoir trouvé la méthode finale de détection des beats par minute nous devrons concevoir un programme permettant de traiter ces informations et surtout adaptable à plusieurs sortes de musique&lt;br /&gt;
;Partie pratique: Conception du vêtement intelligent&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Deuxième Séance (3/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Test de traitement FFT avec Matlab d'un fichier wav a résulté à un échec. Test avec un programme développé par un étudiant de Supelec a échoué également. Nous nous sommes donc décidé à effectuer un traitement avec une plateforme Altium et utilisation de arduino / lilypad pour la communication zigbee et la gestion des vibreurs.&lt;br /&gt;
&lt;br /&gt;
les micros dont nous avons besoin sont disponibles il nous manquera juste des composants type résistance condensateur etc...&lt;br /&gt;
&lt;br /&gt;
Prochaine séance:&lt;br /&gt;
Essai avec la plateforme Altium (Maxime)&lt;br /&gt;
recherche d'info sur Zigbee (Catherine)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Troisieme Séance (3/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Test sur la plateforme Altium : &amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li/&amp;gt;Mise en place du programme Altium : conception du schematic (indique quels composants de la nanoboard utiliser) et d'un code C simple.&lt;br /&gt;
  &amp;lt;li/&amp;gt;Un micro est connecté sur la plateforme Altium. On a essayé de récupérer le signal numérisé, pour pouvoir ensuite le traiter. Les résultats obtenus ne sont pas satisfaisants.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatrième Séance (7/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Pour communiquer via Zigbee il suffit de &lt;br /&gt;
:-pluger une plateforme zigbee sur arduino : cette manoeuvre permet d'utiliser zigbee comme un port série en la branchant en usb sur un pc&lt;br /&gt;
:-brancher une autre puce zigbee avec un câble miniusb-usb sur un autre port usb du pc&lt;br /&gt;
&lt;br /&gt;
On peut ensuite faire communiquer les puces entre elles en faisant des read() et write() sur les descripteurs de fichiers associés (test non encore effectué à faire à la prochaine séance)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je comprends comment faire pour enregistrer, notamment l'utilitée et le fonctionnement de la fonction get_audio() d'Altium. Celle-ci enregistre dans un buffer d'entiers les valeurs en sortie du CAN d'Altium. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je m'aide d'un programme exemple fourni avec le soft Altium Designer&lt;br /&gt;
&amp;lt;li/&amp;gt;Probleme : les valeurs retournées par l'enregistrement ne sont pas satisfaisantes.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Cinquième Séance (10/03/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programme arduino et zigbee.c développés et fonctionnnent. A la prochaine séance il faudra voir comment on peut envoyer le numéro du vibreur à actionner et le traitement qui sera fait par lilypad en fonction du numéro reçu par la puce zigbee sur le t-shirt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Identification du problème sur les valeurs retournées par l'enregistrement : l'enregistrement est réalisé sur 8 bit, mais le stockage est fait dans un int (integer) donc sur 4 octets (32 bits). Quand on cast les entiers enregistrés, les valeurs retournées sont plus probables. Il y a cependant des valeurs de 'bruit' ou en tout cas abérentes supérieures à 200. (les valeurs sont codées de 0 à 255)&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide d'utiliser directement l'exemple d'Altium et de le modifier pour mon projet&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Sixième Séance (14/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Méthode retenue pour l'envoi du numéro de vibreur: branchement de 4 pins de l'arduino sur la platine et la platine altium envoi un signal état haut pour l'activation d'un des 4 vibreurs (pin 1 à l'état haut : activation du vibreur 1, idem pour les 3 autres vibreurs), une fois le numéro de pin reçu on l'envoi via la puce Xbee présente sur arduino.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
Je travaille toujours sur la récupération des données que je recois sur le micro.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Septième Séance (17/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il va falloir brancher la puce Xbee réceptrice sur le Lilypad (câble mini-USB vers connectique Lilypad commandé). il faut d'abord faire les tests sur plateforme Arduino (câblage de Lilypad avec du fil à coudre fastidieux et long à modifier). &lt;br /&gt;
&lt;br /&gt;
Début de la programmation de commande des vibreurs: &lt;br /&gt;
Les rythmes du rock 6 temps sont les suivants: 1,2, 3 et 4,5 et 6. pour le garçon cela revient à faire gauche(1), droite (2),gauche(3)-droite(et)-gauche(4), droite(5)-gauche(et)-droite(6). Idem pour la fille mais en miroir. &lt;br /&gt;
On remarque qu'entre les temps 3 et 4, puis 5 et 6, il y a un demi-temps à marquer qui n'est pas indiqué par un beat. Il faut donc déterminer le temps qui sépare 2 beats et prévoir une vibration supplémentaire pour le demi-temps &amp;quot;et&amp;quot;. &lt;br /&gt;
La fonction millis() sous Arduino permet d'obtenir le temps qui s'est écoulé depuis le lancement du programme en millisecondes. Pour obtenir le demi-temps il suffit de stocker le temps lors du pas 1 et lors du pas 2 puis de diviser la différence par 2 pour obtenir la durée d'un demi-temps. Sachant que l'on actionne le vibreur pendant un certain temps il faudra déduire ce temps du demi-temps pour actionner le vibreur suivant.&lt;br /&gt;
&lt;br /&gt;
NB: trouver une solution pour sélectionner le mode femme ou le mode homme (platine Lilypad interrupteur? http://www.lextronic.eu/doc/produit/img1_18685.jpg)&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;strong&amp;gt;plateforme Altium : &amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'arrive à recevoir les données audio du micro et à les faire jouer par la nanoboard. Le résultat est plutôt satisfaisant, on discerne assez bien ce que l'on envoie sur le micro, bien que la qualité de retour soit médiocre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Dorénavant je travaillerais en insérant directement par câble Jack les données audio sur l'entrée casque de la nanoboard, pour limiter le bruit au maximum. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Huitième Séance (21/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fin de la programmation du code à implanter dans le Lilypad&lt;br /&gt;
idée trouvée pour sélectionner mode homme ou femme: un bouton poussoir et une LED RVB qui change de couleur en fonction du mode sélectionné (orange: aucun mode, bleu: homme, rose: femme)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|Affichage de 300 coefficients. Une 50aine est utile]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Implémentation d'un filtre à réponse impulsionnelle finie (RIF).&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour l'instant je filtre les fréquences entre 250 et 350Hz (fréquences de la caisse claire environ). &lt;br /&gt;
&amp;lt;li/&amp;gt;Pour cela, je regarde chez moi sur le logiciel de calcul scilab les coefficients d'un tel filtre :&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li/&amp;gt;Filtre passe bande,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure haute : 350Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure basse : 250Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Échantillonnage à 2000Hz (ça devrait suffire), sur 8 bits.&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Quand je trace la caractéristique d'un tel filtre pour un grand nombre de coefficients, je vois qu'il me faut une cinquantaine de coefficients pour avoir un filtre correct. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je peux donc en séance projet implémenter mon code avec 50 coefficients.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choix de l'algorithme : &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Le problème du filtrage temps réel se pose : je ne peux pas stocker en mémoire tout le morceau puis envoyer un signal à chaque fois que je détecte un beat par re-lecture. Il faut les détecter en temps réel.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je vais donc faire la conversion d'un temps très court de musique pour pouvoir le stocker en mémoire vive (je stocke 50 échantillons).&lt;br /&gt;
&amp;lt;li/&amp;gt;Puis je filtre ces 50 échantillons. (Note : pour cela j'ai besoin des 50 échantillons précédents; les 50 premières valeurs en sortie de filtre ne seront donc pas bonnes).&lt;br /&gt;
&amp;lt;li/&amp;gt;Je recommence avec 50 nouveaux échantillons, ad infinitum.&lt;br /&gt;
&amp;lt;li/&amp;gt;Étant donné que la fréquence de l'horloge est de 50MHz et que les beats arrivent au maximum toutes les demies secondes, l'algorithme devrait être assez rapide. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Neuvième Séance (24/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Câblages et test de code Lilypad.&lt;br /&gt;
Problème rencontré: les puces zigbee semblent ne pas communiquer ensemble à cause d'un changement de canal de transmission: à vérifier à la prochaine séance. &lt;br /&gt;
&lt;br /&gt;
Prochaine séance: câblage des éléments Lilypad.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Je continue les tests sur le filtrage. J'essaie de localiser des endroits précis de musique où il y a des basses, qui devraient apparaître en sortie de filtre.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Dixième Séance (28/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème des puces zigbee résolu: cela venait bien d'un changement de canal de transmission. On a donc changé les paramètres grâce au logiciel X-CTU.&lt;br /&gt;
Amélioration du code&lt;br /&gt;
Câblage du Lilypad reporté à des séances ultérieures&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre ressemblent bien à des signaux mais ceux-ci restent tous du même ordre de grandeur.&amp;lt;br/&amp;gt;&lt;br /&gt;
Soit ils sont tous trop grand et mon filtre ne filtre rien, soit il sont tous faible et je ne détecte aucune basse. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui joue la sortie du filtre (on sait jamais, des fois qu'on puisse discerner une basse parmi le bruit), mais le résultat n'est pas satisfaisant.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je remet en question la bande passante de mon filtre, elle est peut être trop large et trop haute en fréquence.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Onzième Séance (31/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|150 coefficients pour coller au gabarit du filtre]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de changer mes coefficients pour qu'ils correspondent à un nouveau type de filtre :&lt;br /&gt;
   &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li/&amp;gt;Filtre passe bande toujours&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure haute 80Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure basse 50Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;Même échantillonnage à 2000Hz sur 8 bits&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Il me faut cette fois ci 150 échantillons environ.&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour déterminer ces nouveaux coefficients ne me suis aidé du logiciel audacity qui me permet de faire entre autre une alanyse spectrale de mon signal : sur un morceau de musique donné (celui que je test, avec des battements de grosse caisse évidents et réguliers), je remarque un pic (en puissance (dB)) à 75Hz.&lt;br /&gt;
&amp;lt;/ul&lt;br /&gt;
&amp;gt;Résultat :&lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre me laissent toujours perplexe : &lt;br /&gt;
&amp;lt;li/&amp;gt;Visiblement le filtrage fonctionne puisque d'une part plus mon signal est fort (donc plus de puissance), plus je reçois de puissance en moyenne en sortie de filtre, et d'autre part, les données en sortie de filtre sont plus faibles sur des morceaux sans basses (testé avec un caprice de Paganini au violon - fréquences variant autour de la corde de ''la''  à 440Hz) que sur des morceaux saturés de basses (double pédale sur du métal).&lt;br /&gt;
&amp;lt;li/&amp;gt;Mais sur mon morceau test avec ses basses claires et régulières, je ne vois pas de changement particulier lors de l'arrivée d'une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Douzième Séance (4/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations : ce problème était du au fait qu'après incrémentation de la variable nbStep jusqu'à 6, on la réinitialisait à 0 au lieu de 1. le switch de notre code ne proposant aucune action pour un nbStep=1 on passait la boucle sans rien faire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de ré-examiner mes valeurs reçues dès l'enregistrement audio.&lt;br /&gt;
&amp;lt;li/&amp;gt;En faisant plus attention aux valeurs de bruit que j'obtenais (valeurs supérieures à 190), je remarque qu'en fait ce sont des nombres négatifs complémentés à 2, envoyés par le CAN. En effet, plus le signal est puissant en entrée, plus la sortie du CAN varie autour de zéro et plus les valeurs hautes s'éloignent de 255. Ces valeurs hautes sont donc bien des valeurs négatives.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui me renvoie ces données sur des entiers non signés.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Treizième Séance (5/04/2011) -- 4h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il y avait une problème au niveau du changement de mode sur la platine Arduino: lorsque qu'on changeait de mode en plein milieu d'un cycle de vibration le cycle suivant ne faisait que trois vibrations puis s'arrêtait et recommençait quelques minutes après. Après divers tests, j'ai remarqué que ce problème apparaissait à cause d'une instruction delay() pour les pas 3-et-4 puis 5-et-6. Pour bien respecter les temps entre deux beats il fallait inclure la vibration pour le temps &amp;quot;et&amp;quot; qui n'est pas sur un beat marqué, de façon à ne pas râter les beats suivants (les beats 4 et 6). Or le délai que je calculais entre la fin d'activation des vibreurs pour les beats 3 et 5 et l'activation des vibreurs pour les temps &amp;quot;et&amp;quot; était parfois négatif. Le calcul que j'effectuais était le suivant: &lt;br /&gt;
&lt;br /&gt;
attente entre 3 et &amp;quot;et&amp;quot;=((delta/2) - temps d'activation vibreur).&lt;br /&gt;
[[Fichier:cycle_de_vibration.jpg|300px|thumb|right|cycle de vibration des vibreurs]]&lt;br /&gt;
Pour une raison qui m'est encore inconnue, lors d'un changement de mode, quelque soit le sens du changement (mode femme --&amp;gt; mode homme, mode homme --&amp;gt; mode femme), le temps delta/2 était inférieur à mon temps d'activation des vibreurs(delta est calculé à partir d'une mesure de t1 et t2 les temps relevés grâce à la fonction millis() lors des beats 1 et 2). La fonction delay() que j'utilisais prenait donc un argument entier signé négatif transformé en entier non signé (la fonction delay() prend un unsigned long en paramètre) ce qui donnait des chiffres incohérents (par exemple au lieu d'avoir un délai de 200ms j'avais un délai de 10000ms voire beaucoup plus) j'ai donc changé ma gestion des activations et désactivations des vibreurs en partant du principe qu'une pause est toujours égale à delta/4. Le temps &amp;quot;et&amp;quot; se trouvant à delta/2 il suffisait d'attendre à nouveau delta/4 pour activer les vibreurs pour les temps &amp;quot;et&amp;quot;. Grâce à cette technique le système s'adapte à n'importe quel tempo (initialement j'avais créé des temps de pauses particuliers pour des rythmes de 60bpm et 120bpm) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Illustration_wiki.jpg|300px|thumb|right|changement de l'échelle pour l'échantillonage]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Suite à la modification des entiers reçus en sortie du CAN, je n'ai plus ces valeurs excessivement hautes. Le signal en sortie devient du CAN devient beaucoup plus propre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Problème : maintenant lorsque je n'envoie rien, la valeur de mon signal en sortie du CAN est de 128 (le milieu entre 0 et 255). Pour ne pas que cela perturbe mes mesures ulétrieures (bien que en théorie cela ne devrait pas perturber le filtrage), je change ma fonction qui me renvoie un entier non signé pour qu'elle me renvoie cette fois-ci des entiers signés (mais cohérents : de -128 à 127, et pas de 0 à 127 puis 128 à 255 pour les entiers négatifs).&lt;br /&gt;
&amp;lt;li/&amp;gt;Poursuite des tests. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatorzième Séance (7/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Schéma_cablage_coach_danse.png|600px|center|Schéma de câblage des éléments Lilypad]]&lt;br /&gt;
&lt;br /&gt;
début de couture des éléments Lilypad sur le t-shirt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Filtre.jpg|300px|thumb|right|Apparition d'une basse au début ?]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'imprime sur le tableur d'open office les valeurs de mon signal filtré. Je fais quelques graphes avec plusieurs musiques différentes (avec basse, sans basses, plus fort, moins fort, ...). Les résultats semblent cohérents et j'ai même un graphe prometteur qui me renvoie une puissance de sortie 100 fois supérieure à la moyenne pour un temps assez court, ce qui me laisse penser que ça pourrait être une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quinzième Séance (11/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Réalisation de nouveaux tests. Le filtrage semble fonctionner (les valeurs retournées lorsqu'il n'y a pas de basses sont presque nulles, et augmentent lorsqu'il y en a - pour un volume sonore donné). Mais il reste très difficile de détecter les basses en soi lorsqu'elles arrivent&lt;br /&gt;
&amp;lt;li/&amp;gt;Mise en place de l'envoi d'un signal +5V ainsi que l'affichage des leds lors de la détection d'une basse. Reste à détecter la basse en question.... &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Seizième Séance (12/04/2011) -- 4h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
voici le t-shirt après quelques coutures:&lt;br /&gt;
[[Fichier:Couture_debut.jpg|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Poursuite des tests, toujours dans le but de déterminer une basse de manière explicite...&lt;br /&gt;
&amp;lt;li/&amp;gt;J'encode les informations binaires sur 32 bits au lieu de 8bits, mais cela n'apporte pas plus de résultats. Même la qualité lecture par la nanoboard n'en est pas grandement affectée.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je pense déterminer le principal problème : le temps de filtrage (calcul de 150 valeurs qui nécessitent chacune 150 multiplications =&amp;gt; au moins 22500 opérations) est trop long par rapport au temps de lecture, peut être que trop d'informations sont perdues entre deux filtrages&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Séances Bonus &amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fin des coutures, légère modification du programme pour l'adapter à certains éléments notamment la led RVB Lilypad et l'interrupteur 2 positions. Lors des tests le programme de fonctionnait pas correctement: une fois implanté dans le Lilypad parce qu'avec les coutures effectuées le module Xbee était sous alimenté (il recevait environ 2,2V alors que la tension d'alimentation minimale est de 2,8V) il faut donc alimenter le module sans passer par des protoboards intermédiaires pour éviter les chutes de tension.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:tshirt_final.jpg|400px|thumb|center|t-shirt final]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je change mon code, certaines valeurs n'étaient pas effacées après traitement, ce qui faussait le résultat après plusieurs secondes de filtrage. &lt;br /&gt;
&amp;lt;li/&amp;gt;Redéfinition du filtre : J'agrandi un peu la bande passante de 40 à 75Hz. J'ai à présent 100 coefficients.&lt;br /&gt;
&amp;lt;li/&amp;gt;J'envisage le multi thread  en espérant accélérer le processus de filtrage (les multiplications). Mais j'abandonne vite l'idée : dans tous les cas de figure j'aurai des ressources partagées entre les deux threads, et comme les deux threads ne peuvent accéder à la ressource en même temps, l'un attendra toujours pendant que l'autre s'exécute.&lt;br /&gt;
&amp;lt;li/&amp;gt;Une autre solution est de monter la fréquence d'horloge. Mais cette méthode ne fonctionne pas non plus, la nanoboard n'est pas en mesure d'établir de route assez courte dans le fpga pour permettre une fréquence plus rapide. D'après le rapport d'Altium Designer établi après le 'place and route' et la génération du bit file dans le fpga, il est sûr de fonctionner correctement à une fréquence maximale de 40MHz. Je test en descendant la fréquence d'horloge à 40Mhz des fois que mes données soient corrompues à 50Mhz mais je n'obtiens pas de changements. Je reste donc à 50Mhz. &lt;br /&gt;
&amp;lt;li/&amp;gt;Un problème qui peut intervenir aussi, mais qui n'est pas majeur, est un mauvais échantillonnage qui entrainerait des fausses données à basses fréquences, après l'échantillonnage : j'échantillonne à 2000Hz, ce qui est suffisant pour les basses fréquences. Mais pour les plus hautes fréquences, l'échantillonnage ne veut plus rien dire (pour une fréquence à 10kHz, on échantillonnerait une période sur 5). Cela peut en plus créer des faibles basses fréquences, qui n'en sont pas à la base (aliasing).&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour résoudre le problème d'aliasing, il faudrait échantillonner à au moins 44kHz, mais avec cela on augmenterai ne nombre de coefficients, donc le temps de calcul, et en plus on échantillonnerait moins de temps de musique à la fois. Je ne peux pas me le permettre vu que le calcul est déjà long avec les paramètres actuels &lt;br /&gt;
&amp;lt;li/&amp;gt;L'idéal serait de mettre au point une accélération matérielle pour les multiplications, ce qui augmenterait considérablement le temps de calcul pour le filtrage (bien que cela baisse probablement la fréquence d'horloge du processeur). L'accélération matérielle consiste à sous traiter certaines opération du processeur par le fpga même, qui peut lui les effectuer en parallèle. Malheureusement j'ai eu connaissance de cette option assez tard et je n'ai pas réussi à la mettre correctement au point sur la nanoboard. Cela m'aurait permis en plus d'augmenter ma fréquence d'échantillonnage pour limiter au maximum le phénomène d'aliasing.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Fichier:Signal.png|400px|thumb|right|signal filtré]]&lt;br /&gt;
Au final j'arrive à détecter des beats, mais il reste deux points noirs :&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Tous ne s'affichent pas, quelques uns ne doivent pas être enregistrés du fait du temps de filtrage&lt;br /&gt;
&amp;lt;li/&amp;gt;Ceux qui arrivent à s'afficher le font avec quelques dixièmes de seconde de latence.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Tshirt_final.jpg&amp;diff=968</id>
		<title>Fichier:Tshirt final.jpg</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Tshirt_final.jpg&amp;diff=968"/>
				<updated>2011-05-12T16:32:21Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=964</id>
		<title>Coach Dance</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=964"/>
				<updated>2011-05-11T22:55:27Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Treizième Séance (5/04/2011) -- 4h */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:salsa.jpg|right|thumb]]&lt;br /&gt;
= Présentation =&lt;br /&gt;
L'apprentissage de la danse peut poser certains problèmes aux débutants. Un des problèmes majeurs rencontré concerne la synchronisation des mouvements sur le rythme de la musique. De nombreux débutants n'entendent pas le rythme soit parce qu'ils ne connaissent pas bien le type de musique (e.g. salsa) soit parce que la coordination des mouvements (bras et jambes) leur demandent de gros efforts cognitifs.&lt;br /&gt;
&lt;br /&gt;
L'objectif du projet consiste à aider les danseurs débutants en donnant les indications de rythme et de mouvement. Pour cela, vous devez développer un système portable (type wearable computer) qui devra :&lt;br /&gt;
&lt;br /&gt;
* détecter de manière automatique le rythme de la musique. Dans un premier temps, nous ciblerons deux danses, la salsa et le rock 6 temps. Le type de danse sera indiqué au système afin de &amp;quot;simplifier&amp;quot; la reconnaissance&lt;br /&gt;
* en fonction du rythme et de la danse, activer un des vibreurs qui seront disposé sur le danseur. Dans un premier temps, un vibreur sera installé sur chacun des mollets afin d'indiquer quel est le pied à bouger. Si le temps le permet, il sera possible d'étendre le système au mouvement des bras ou à d'autres danses.&lt;br /&gt;
&lt;br /&gt;
= Préparation du projet =&lt;br /&gt;
&lt;br /&gt;
== Matériel ==&lt;br /&gt;
&lt;br /&gt;
* 1 arduino lilypad (disponible) ;&lt;br /&gt;
* 4 vibreurs (à commander) ;&lt;br /&gt;
* 1 micro portable (à commander) [http://www.selectronic.fr/article.asp?article_ref_entier=11.1142-9999];&lt;br /&gt;
* -&amp;gt; un cable jack par micro pour la connection à une plateforme Altium (disponibilité ?)&lt;br /&gt;
* pour la connection Altium/Zigbee : puce Zigbee/cable(adaptateur usb)&lt;br /&gt;
* Des morceaux de musique Salsa et Rock (à commander...XD);&lt;br /&gt;
&lt;br /&gt;
== Danses ==&lt;br /&gt;
&lt;br /&gt;
Les deux danses visées dans un premier temps sont la salsa (style cubain, http://fr.wikipedia.org/wiki/Salsa) et le rock 6 temps (http://fr.wikipedia.org/wiki/Rock_%C3%A0_six_temps).&lt;br /&gt;
Le système devra permettre de sélectionner la danse et le sexe de la personne (les pas de la fille sont inversés par rapport à ceux du garçon)&lt;br /&gt;
&lt;br /&gt;
= Avancement du projet =&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Première Séance (28/02/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
Nous avons trouvé un lien pour un montage de détection des beats par minute (d'une basse) dans une chanson. Ce montage devra sûrement être adapté pour la salsa car le rythme est repéré par le claquement des claves de fréquence plus hautes que les basses.&lt;br /&gt;
&lt;br /&gt;
;lien pour du montage de détection bpm: http://www.sonelec-musique.com/electronique_realisations_compteur_tempo_001.html&lt;br /&gt;
&lt;br /&gt;
idée à développer: filtre numérique passe bande à tester sur 2 sons wav différents... (fft sur un fichier wav avec matlab puis calcul du filtre)&lt;br /&gt;
&lt;br /&gt;
;lien pour le câblage d'un micro : http://www.sonelec-musique.com/electronique_bases_alim_micro_electret.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF8000;&amp;quot;&amp;gt;&amp;lt;big&amp;gt;'''Etapes prévues:'''&amp;lt;/big&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Test de la méthode de détection des beats par minute : Nous voulons trouver une façon de faire le traitement numérique avec le microcontrôleur du LilyPad (ATmega328V) pour éviter d'avoir à concevoir un circuit imprimé en parallèle avec un montage à amplificateur opérationnel.&lt;br /&gt;
;Phase de développement : Après avoir trouvé la méthode finale de détection des beats par minute nous devrons concevoir un programme permettant de traiter ces informations et surtout adaptable à plusieurs sortes de musique&lt;br /&gt;
;Partie pratique: Conception du vêtement intelligent&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Deuxième Séance (3/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Test de traitement FFT avec Matlab d'un fichier wav a résulté à un échec. Test avec un programme développé par un étudiant de Supelec a échoué également. Nous nous sommes donc décidé à effectuer un traitement avec une plateforme Altium et utilisation de arduino / lilypad pour la communication zigbee et la gestion des vibreurs.&lt;br /&gt;
&lt;br /&gt;
les micros dont nous avons besoin sont disponibles il nous manquera juste des composants type résistance condensateur etc...&lt;br /&gt;
&lt;br /&gt;
Prochaine séance:&lt;br /&gt;
Essai avec la plateforme Altium (Maxime)&lt;br /&gt;
recherche d'info sur Zigbee (Catherine)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Troisieme Séance (3/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Test sur la plateforme Altium : &amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li/&amp;gt;Mise en place du programme Altium : conception du schematic (indique quels composants de la nanoboard utiliser) et d'un code C simple.&lt;br /&gt;
  &amp;lt;li/&amp;gt;Un micro est connecté sur la plateforme Altium. On a essayé de récupérer le signal numérisé, pour pouvoir ensuite le traiter. Les résultats obtenus ne sont pas satisfaisants.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatrième Séance (7/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Pour communiquer via Zigbee il suffit de &lt;br /&gt;
:-pluger une plateforme zigbee sur arduino : cette manoeuvre permet d'utiliser zigbee comme un port série en la branchant en usb sur un pc&lt;br /&gt;
:-brancher une autre puce zigbee avec un câble miniusb-usb sur un autre port usb du pc&lt;br /&gt;
&lt;br /&gt;
On peut ensuite faire communiquer les puces entre elles en faisant des read() et write() sur les descripteurs de fichiers associés (test non encore effectué à faire à la prochaine séance)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je comprends comment faire pour enregistrer, notamment l'utilitée et le fonctionnement de la fonction get_audio() d'Altium. Celle-ci enregistre dans un buffer d'entiers les valeurs en sortie du CAN d'Altium. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je m'aide d'un programme exemple fourni avec le soft Altium Designer&lt;br /&gt;
&amp;lt;li/&amp;gt;Probleme : les valeurs retournées par l'enregistrement ne sont pas satisfaisantes.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Cinquième Séance (10/03/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programme arduino et zigbee.c développés et fonctionnnent. A la prochaine séance il faudra voir comment on peut envoyer le numéro du vibreur à actionner et le traitement qui sera fait par lilypad en fonction du numéro reçu par la puce zigbee sur le t-shirt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Identification du problème sur les valeurs retournées par l'enregistrement : l'enregistrement est réalisé sur 8 bit, mais le stockage est fait dans un int (integer) donc sur 4 octets (32 bits). Quand on cast les entiers enregistrés, les valeurs retournées sont plus probables. Il y a cependant des valeurs de 'bruit' ou en tout cas abérentes supérieures à 200. (les valeurs sont codées de 0 à 255)&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide d'utiliser directement l'exemple d'Altium et de le modifier pour mon projet&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Sixième Séance (14/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Méthode retenue pour l'envoi du numéro de vibreur: branchement de 4 pins de l'arduino sur la platine et la platine altium envoi un signal état haut pour l'activation d'un des 4 vibreurs (pin 1 à l'état haut : activation du vibreur 1, idem pour les 3 autres vibreurs), une fois le numéro de pin reçu on l'envoi via la puce Xbee présente sur arduino.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
Je travaille toujours sur la récupération des données que je recois sur le micro.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Septième Séance (17/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il va falloir brancher la puce Xbee réceptrice sur le Lilypad (câble mini-USB vers connectique Lilypad commandé). il faut d'abord faire les tests sur plateforme Arduino (câblage de Lilypad avec du fil à coudre fastidieux et long à modifier). &lt;br /&gt;
&lt;br /&gt;
Début de la programmation de commande des vibreurs: &lt;br /&gt;
Les rythmes du rock 6 temps sont les suivants: 1,2, 3 et 4,5 et 6. pour le garçon cela revient à faire gauche(1), droite (2),gauche(3)-droite(et)-gauche(4), droite(5)-gauche(et)-droite(6). Idem pour la fille mais en miroir. &lt;br /&gt;
On remarque qu'entre les temps 3 et 4, puis 5 et 6, il y a un demi-temps à marquer qui n'est pas indiqué par un beat. Il faut donc déterminer le temps qui sépare 2 beats et prévoir une vibration supplémentaire pour le demi-temps &amp;quot;et&amp;quot;. &lt;br /&gt;
La fonction millis() sous Arduino permet d'obtenir le temps qui s'est écoulé depuis le lancement du programme en millisecondes. Pour obtenir le demi-temps il suffit de stocker le temps lors du pas 1 et lors du pas 2 puis de diviser la différence par 2 pour obtenir la durée d'un demi-temps. Sachant que l'on actionne le vibreur pendant un certain temps il faudra déduire ce temps du demi-temps pour actionner le vibreur suivant.&lt;br /&gt;
&lt;br /&gt;
NB: trouver une solution pour sélectionner le mode femme ou le mode homme (platine Lilypad interrupteur? http://www.lextronic.eu/doc/produit/img1_18685.jpg)&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;strong&amp;gt;plateforme Altium : &amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'arrive à recevoir les données audio du micro et à les faire jouer par la nanoboard. Le résultat est plutôt satisfaisant, on discerne assez bien ce que l'on envoie sur le micro, bien que la qualité de retour soit médiocre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Dorénavant je travaillerais en insérant directement par câble Jack les données audio sur l'entrée casque de la nanoboard, pour limiter le bruit au maximum. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Huitième Séance (21/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fin de la programmation du code à implanter dans le Lilypad&lt;br /&gt;
idée trouvée pour sélectionner mode homme ou femme: un bouton poussoir et une LED RVB qui change de couleur en fonction du mode sélectionné (orange: aucun mode, bleu: homme, rose: femme)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|Affichage de 300 coefficients. Une 50aine est utile]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Implémentation d'un filtre à réponse impulsionnelle finie (RIF).&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour l'instant je filtre les fréquences entre 250 et 350Hz (fréquences de la caisse claire environ). &lt;br /&gt;
&amp;lt;li/&amp;gt;Pour cela, je regarde chez moi sur le logiciel de calcul scilab les coefficients d'un tel filtre :&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li/&amp;gt;Filtre passe bande,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure haute : 350Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure basse : 250Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Échantillonnage à 2000Hz (ça devrait suffire), sur 8 bits.&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Quand je trace la caractéristique d'un tel filtre pour un grand nombre de coefficients, je vois qu'il me faut une cinquantaine de coefficients pour avoir un filtre correct. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je peux donc en séance projet implémenter mon code avec 50 coefficients.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choix de l'algorithme : &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Le problème du filtrage temps réel se pose : je ne peux pas stocker en mémoire tout le morceau puis envoyer un signal à chaque fois que je détecte un beat par re-lecture. Il faut les détecter en temps réel.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je vais donc faire la conversion d'un temps très court de musique pour pouvoir le stocker en mémoire vive (je stocke 50 échantillons).&lt;br /&gt;
&amp;lt;li/&amp;gt;Puis je filtre ces 50 échantillons. (Note : pour cela j'ai besoin des 50 échantillons précédents; les 50 premières valeurs en sortie de filtre ne seront donc pas bonnes).&lt;br /&gt;
&amp;lt;li/&amp;gt;Je recommence avec 50 nouveaux échantillons, ad infinitum.&lt;br /&gt;
&amp;lt;li/&amp;gt;Étant donné que la fréquence de l'horloge est de 50MHz et que les beats arrivent au maximum toutes les demies secondes, l'algorithme devrait être assez rapide. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Neuvième Séance (24/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Câblages et test de code Lilypad.&lt;br /&gt;
Problème rencontré: les puces zigbee semblent ne pas communiquer ensemble à cause d'un changement de canal de transmission: à vérifier à la prochaine séance. &lt;br /&gt;
&lt;br /&gt;
Prochaine séance: câblage des éléments Lilypad.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Je continue les tests sur le filtrage. J'essaie de localiser des endroits précis de musique où il y a des basses, qui devraient apparaître en sortie de filtre.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Dixième Séance (28/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème des puces zigbee résolu: cela venait bien d'un changement de canal de transmission. On a donc changé les paramètres grâce au logiciel X-CTU.&lt;br /&gt;
Amélioration du code&lt;br /&gt;
Câblage du Lilypad reporté à des séances ultérieures&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre ressemblent bien à des signaux mais ceux-ci restent tous du même ordre de grandeur.&amp;lt;br/&amp;gt;&lt;br /&gt;
Soit ils sont tous trop grand et mon filtre ne filtre rien, soit il sont tous faible et je ne détecte aucune basse. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui joue la sortie du filtre (on sait jamais, des fois qu'on puisse discerner une basse parmi le bruit), mais le résultat n'est pas satisfaisant.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je remet en question la bande passante de mon filtre, elle est peut être trop large et trop haute en fréquence.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Onzième Séance (31/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|150 coefficients pour coller au gabarit du filtre]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de changer mes coefficients pour qu'ils correspondent à un nouveau type de filtre :&lt;br /&gt;
   &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li/&amp;gt;Filtre passe bande toujours&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure haute 80Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure basse 50Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;Même échantillonnage à 2000Hz sur 8 bits&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Il me faut cette fois ci 150 échantillons environ.&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour déterminer ces nouveaux coefficients ne me suis aidé du logiciel audacity qui me permet de faire entre autre une alanyse spectrale de mon signal : sur un morceau de musique donné (celui que je test, avec des battements de grosse caisse évidents et réguliers), je remarque un pic (en puissance (dB)) à 75Hz.&lt;br /&gt;
&amp;lt;/ul&lt;br /&gt;
&amp;gt;Résultat :&lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre me laissent toujours perplexe : &lt;br /&gt;
&amp;lt;li/&amp;gt;Visiblement le filtrage fonctionne puisque d'une part plus mon signal est fort (donc plus de puissance), plus je reçois de puissance en moyenne en sortie de filtre, et d'autre part, les données en sortie de filtre sont plus faibles sur des morceaux sans basses (testé avec un caprice de Paganini au violon - fréquences variant autour de la corde de ''la''  à 440Hz) que sur des morceaux saturés de basses (double pédale sur du métal).&lt;br /&gt;
&amp;lt;li/&amp;gt;Mais sur mon morceau test avec ses basses claires et régulières, je ne vois pas de changement particulier lors de l'arrivée d'une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Douzième Séance (4/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations : ce problème était du au fait qu'après incrémentation de la variable nbStep jusqu'à 6, on la réinitialisait à 0 au lieu de 1. le switch de notre code ne proposant aucune action pour un nbStep=1 on passait la boucle sans rien faire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de ré-examiner mes valeurs reçues dès l'enregistrement audio.&lt;br /&gt;
&amp;lt;li/&amp;gt;En faisant plus attention aux valeurs de bruit que j'obtenais (valeurs supérieures à 190), je remarque qu'en fait ce sont des nombres négatifs complémentés à 2, envoyés par le CAN. En effet, plus le signal est puissant en entrée, plus la sortie du CAN varie autour de zéro et plus les valeurs hautes s'éloignent de 255. Ces valeurs hautes sont donc bien des valeurs négatives.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui me renvoie ces données sur des entiers non signés.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Treizième Séance (5/04/2011) -- 4h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il y avait une problème au niveau du changement de mode sur la platine Arduino: lorsque qu'on changeait de mode en plein milieu d'un cycle de vibration le cycle suivant ne faisait que trois vibrations puis s'arrêtait et recommençait quelques minutes après. Après divers tests, j'ai remarqué que ce problème apparaissait à cause d'une instruction delay() pour les pas 3-et-4 puis 5-et-6. Pour bien respecter les temps entre deux beats il fallait inclure la vibration pour le temps &amp;quot;et&amp;quot; qui n'est pas sur un beat marqué, de façon à ne pas râter les beats suivants (les beats 4 et 6). Or le délai que je calculais entre la fin d'activation des vibreurs pour les beats 3 et 5 et l'activation des vibreurs pour les temps &amp;quot;et&amp;quot; était parfois négatif. Le calcul que j'effectuais était le suivant: &lt;br /&gt;
&lt;br /&gt;
attente entre 3 et &amp;quot;et&amp;quot;=((delta/2) - temps d'activation vibreur).&lt;br /&gt;
[[Fichier:cycle_de_vibration.jpg|300px|thumb|right|cycle de vibration des vibreurs]]&lt;br /&gt;
Pour une raison qui m'est encore inconnue, lors d'un changement de mode, quelque soit le sens du changement (mode femme --&amp;gt; mode homme, mode homme --&amp;gt; mode femme), le temps delta/2 était inférieur à mon temps d'activation des vibreurs(delta est calculé à partir d'une mesure de t1 et t2 les temps relevés grâce à la fonction millis() lors des beats 1 et 2). La fonction delay() que j'utilisais prenait donc un argument entier signé négatif transformé en entier non signé (la fonction delay() prend un unsigned long en paramètre) ce qui donnait des chiffres incohérents (par exemple au lieu d'avoir un délai de 200ms j'avais un délai de 10000ms voire beaucoup plus) j'ai donc changé ma gestion des activations et désactivations des vibreurs en partant du principe qu'une pause est toujours égale à delta/4. Le temps &amp;quot;et&amp;quot; se trouvant à delta/2 il suffisait d'attendre à nouveau delta/4 pour activer les vibreurs pour les temps &amp;quot;et&amp;quot;. Grâce à cette technique le système s'adapte à n'importe quel tempo (initialement j'avais créé des temps de pauses particuliers pour des rythmes de 60bpm et 120bpm) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Illustration_wiki.jpg|300px|thumb|right|changement de l'échelle pour l'échantillonage]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Suite à la modification des entiers reçus en sortie du CAN, je n'ai plus ces valeurs excessivement hautes. Le signal en sortie devient du CAN devient beaucoup plus propre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Problème : maintenant lorsque je n'envoie rien, la valeur de mon signal en sortie du CAN est de 128 (le milieu entre 0 et 255). Pour ne pas que cela perturbe mes mesures ulétrieures (bien que en théorie cela ne devrait pas perturber le filtrage), je change ma fonction qui me renvoie un entier non signé pour qu'elle me renvoie cette fois-ci des entiers signés (mais cohérents : de -128 à 127, et pas de 0 à 127 puis 128 à 255 pour les entiers négatifs).&lt;br /&gt;
&amp;lt;li/&amp;gt;Poursuite des tests. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatorzième Séance (7/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Schéma_cablage_coach_danse.png|600px|center|Schéma de câblage des éléments Lilypad]]&lt;br /&gt;
&lt;br /&gt;
début de couture des éléments Lilypad sur le t-shirt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Filtre.jpg|300px|thumb|right|Apparition d'une basse au début ?]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'imprime sur le tableur d'open office les valeurs de mon signal filtré. Je fais quelques graphes avec plusieurs musiques différentes (avec basse, sans basses, plus fort, moins fort, ...). Les résultats semblent cohérents et j'ai même un graphe prometteur qui me renvoie une puissance de sortie 100 fois supérieure à la moyenne pour un temps assez court, ce qui me laisse penser que ça pourrait être une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quinzième Séance (11/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Réalisation de nouveaux tests. Le filtrage semble fonctionner (les valeurs retournées lorsqu'il n'y a pas de basses sont presque nulles, et augmentent lorsqu'il y en a - pour un volume sonore donné). Mais il reste très difficile de détecter les basses en soi lorsqu'elles arrivent&lt;br /&gt;
&amp;lt;li/&amp;gt;Mise en place de l'envoi d'un signal +5V ainsi que l'affichage des leds lors de la détection d'une basse. Reste à détecter la basse en question.... &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Seizième Séance (12/04/2011) -- 4h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
voici le t-shirt après quelques coutures:&lt;br /&gt;
[[Fichier:Couture_debut.jpg|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Poursuite des tests, toujours dans le but de déterminer une basse de manière explicite...&lt;br /&gt;
&amp;lt;li/&amp;gt;J'encode les informations binaires sur 32 bits au lieu de 8bits, mais cela n'apporte pas plus de résultats. Même la qualité lecture par la nanoboard n'en est pas grandement affectée.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je pense déterminer le principal problème : le temps de filtrage (calcul de 150 valeurs qui nécessitent chacune 150 multiplications =&amp;gt; au moins 22500 opérations) est trop long par rapport au temps de lecture, peut être que trop d'informations sont perdues entre deux filtrages&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Séances Bonus &amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fin des coutures, légère modification du programme pour l'adapter à certains éléments notamment la led RVB Lilypad et l'interrupteur 2 positions. Lors des tests le programme de fonctionnait pas correctement: une fois implanté dans le Lilypad parce qu'avec les coutures effectuées le module Xbee était sous alimenté (il recevait environ 2,2V alors que la tension d'alimentation minimale est de 2,8V) il faut donc alimenter le module sans passer par des protoboards intermédiaires pour éviter les chutes de tension.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je change mon code, certaines valeurs n'étaient pas effacées après traitement, ce qui faussait le résultat après plusieurs secondes de filtrage. &lt;br /&gt;
&amp;lt;li/&amp;gt;Redéfinition du filtre : J'agrandi un peu la bande passante de 40 à 75Hz. J'ai à présent 100 coefficients.&lt;br /&gt;
&amp;lt;li/&amp;gt;J'envisage le multi thread  en espérant accélérer le processus de filtrage (les multiplications). Mais j'abandonne vite l'idée : dans tous les cas de figure j'aurai des ressources partagées entre les deux threads, et comme les deux threads ne peuvent accéder à la ressource en même temps, l'un attendra toujours pendant que l'autre s'exécute.&lt;br /&gt;
&amp;lt;li/&amp;gt;Une autre solution est de monter la fréquence d'horloge. Mais cette méthode ne fonctionne pas non plus, la nanoboard n'est pas en mesure d'établir de route assez courte dans le fpga pour permettre une fréquence plus rapide. D'après le rapport d'Altium Designer établi après le 'place and route' et la génération du bit file dans le fpga, il est sûr de fonctionner correctement à une fréquence maximale de 40MHz. Je test en descendant la fréquence d'horloge à 40Mhz des fois que mes données soient corrompues à 50Mhz mais je n'obtiens pas de changements. Je reste donc à 50Mhz. &lt;br /&gt;
&amp;lt;li/&amp;gt;Un problème qui peut intervenir aussi, mais qui n'est pas majeur, est un mauvais échantillonnage qui entrainerait des fausses données à basses fréquences, après l'échantillonnage : j'échantillonne à 2000Hz, ce qui est suffisant pour les basses fréquences. Mais pour les plus hautes fréquences, l'échantillonnage ne veut plus rien dire (pour une fréquence à 10kHz, on échantillonnerait une période sur 5). Cela peut en plus créer des faibles basses fréquences, qui n'en sont pas à la base (aliasing).&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour résoudre le problème d'aliasing, il faudrait échantillonner à au moins 44kHz, mais avec cela on augmenterai ne nombre de coefficients, donc le temps de calcul, et en plus on échantillonnerait moins de temps de musique à la fois. Je ne peux pas me le permettre vu que le calcul est déjà long avec les paramètres actuels &lt;br /&gt;
&amp;lt;li/&amp;gt;L'idéal serait de mettre au point une accélération matérielle pour les multiplications, ce qui augmenterait considérablement le temps de calcul pour le filtrage (bien que cela baisse probablement la fréquence d'horloge du processeur). L'accélération matérielle consiste à sous traiter certaines opération du processeur par le fpga même, qui peut lui les effectuer en parallèle. Malheureusement j'ai eu connaissance de cette option assez tard et je n'ai pas réussi à la mettre correctement au point sur la nanoboard. Cela m'aurait permis en plus d'augmenter ma fréquence d'échantillonnage pour limiter au maximum le phénomène d'aliasing.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Fichier:Signal.png|400px|thumb|right|signal filtré]]&lt;br /&gt;
Au final j'arrive à détecter des beats, mais il reste deux points noirs :&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Tous ne s'affichent pas, quelques uns ne doivent pas être enregistrés du fait du temps de filtrage&lt;br /&gt;
&amp;lt;li/&amp;gt;Ceux qui arrivent à s'afficher le font avec quelques dixièmes de seconde de latence.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=796</id>
		<title>Coach Dance</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=796"/>
				<updated>2011-05-04T22:30:44Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Seizième Séance (12/04/2011) -- 4h */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:salsa.jpg|right|thumb]]&lt;br /&gt;
= Présentation =&lt;br /&gt;
L'apprentissage de la danse peut poser certains problèmes aux débutants. Un des problèmes majeurs rencontré concerne la synchronisation des mouvements sur le rythme de la musique. De nombreux débutants n'entendent pas le rythme soit parce qu'ils ne connaissent pas bien le type de musique (e.g. salsa) soit parce que la coordination des mouvements (bras et jambes) leur demandent de gros efforts cognitifs.&lt;br /&gt;
&lt;br /&gt;
L'objectif du projet consiste à aider les danseurs débutants en donnant les indications de rythme et de mouvement. Pour cela, vous devez développer un système portable (type wearable computer) qui devra :&lt;br /&gt;
&lt;br /&gt;
* détecter de manière automatique le rythme de la musique. Dans un premier temps, nous ciblerons deux danses, la salsa et le rock 6 temps. Le type de danse sera indiqué au système afin de &amp;quot;simplifier&amp;quot; la reconnaissance&lt;br /&gt;
* en fonction du rythme et de la danse, activer un des vibreurs qui seront disposé sur le danseur. Dans un premier temps, un vibreur sera installé sur chacun des mollets afin d'indiquer quel est le pied à bouger. Si le temps le permet, il sera possible d'étendre le système au mouvement des bras ou à d'autres danses.&lt;br /&gt;
&lt;br /&gt;
= Préparation du projet =&lt;br /&gt;
&lt;br /&gt;
== Matériel ==&lt;br /&gt;
&lt;br /&gt;
* 1 arduino lilypad (disponible) ;&lt;br /&gt;
* 4 vibreurs (à commander) ;&lt;br /&gt;
* 1 micro portable (à commander) [http://www.selectronic.fr/article.asp?article_ref_entier=11.1142-9999];&lt;br /&gt;
* -&amp;gt; un cable jack par micro pour la connection à une plateforme Altium (disponibilité ?)&lt;br /&gt;
* pour la connection Altium/Zigbee : puce Zigbee/cable(adaptateur usb)&lt;br /&gt;
* Des morceaux de musique Salsa et Rock (à commander...XD);&lt;br /&gt;
&lt;br /&gt;
== Danses ==&lt;br /&gt;
&lt;br /&gt;
Les deux danses visées dans un premier temps sont la salsa (style cubain, http://fr.wikipedia.org/wiki/Salsa) et le rock 6 temps (http://fr.wikipedia.org/wiki/Rock_%C3%A0_six_temps).&lt;br /&gt;
Le système devra permettre de sélectionner la danse et le sexe de la personne (les pas de la fille sont inversés par rapport à ceux du garçon)&lt;br /&gt;
&lt;br /&gt;
= Avancement du projet =&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Première Séance (28/02/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
Nous avons trouvé un lien pour un montage de détection des beats par minute (d'une basse) dans une chanson. Ce montage devra sûrement être adapté pour la salsa car le rythme est repéré par le claquement des claves de fréquence plus hautes que les basses.&lt;br /&gt;
&lt;br /&gt;
;lien pour du montage de détection bpm: http://www.sonelec-musique.com/electronique_realisations_compteur_tempo_001.html&lt;br /&gt;
&lt;br /&gt;
idée à développer: filtre numérique passe bande à tester sur 2 sons wav différents... (fft sur un fichier wav avec matlab puis calcul du filtre)&lt;br /&gt;
&lt;br /&gt;
;lien pour le câblage d'un micro : http://www.sonelec-musique.com/electronique_bases_alim_micro_electret.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF8000;&amp;quot;&amp;gt;&amp;lt;big&amp;gt;'''Etapes prévues:'''&amp;lt;/big&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Test de la méthode de détection des beats par minute : Nous voulons trouver une façon de faire le traitement numérique avec le microcontrôleur du LilyPad (ATmega328V) pour éviter d'avoir à concevoir un circuit imprimé en parallèle avec un montage à amplificateur opérationnel.&lt;br /&gt;
;Phase de développement : Après avoir trouvé la méthode finale de détection des beats par minute nous devrons concevoir un programme permettant de traiter ces informations et surtout adaptable à plusieurs sortes de musique&lt;br /&gt;
;Partie pratique: Conception du vêtement intelligent&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Deuxième Séance (3/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Test de traitement FFT avec Matlab d'un fichier wav a résulté à un échec. Test avec un programme développé par un étudiant de Supelec a échoué également. Nous nous sommes donc décidé à effectuer un traitement avec une plateforme Altium et utilisation de arduino / lilypad pour la communication zigbee et la gestion des vibreurs.&lt;br /&gt;
&lt;br /&gt;
les micros dont nous avons besoin sont disponibles il nous manquera juste des composants type résistance condensateur etc...&lt;br /&gt;
&lt;br /&gt;
Prochaine séance:&lt;br /&gt;
Essai avec la plateforme Altium (Maxime)&lt;br /&gt;
recherche d'info sur Zigbee (Catherine)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Troisieme Séance (3/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Test sur la plateforme Altium : &amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li/&amp;gt;Mise en place du programme Altium : conception du schematic (indique quels composants de la nanoboard utiliser) et d'un code C simple.&lt;br /&gt;
  &amp;lt;li/&amp;gt;Un micro est connecté sur la plateforme Altium. On a essayé de récupérer le signal numérisé, pour pouvoir ensuite le traiter. Les résultats obtenus ne sont pas satisfaisants.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatrième Séance (7/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Pour communiquer via Zigbee il suffit de &lt;br /&gt;
:-pluger une plateforme zigbee sur arduino : cette manoeuvre permet d'utiliser zigbee comme un port série en la branchant en usb sur un pc&lt;br /&gt;
:-brancher une autre puce zigbee avec un câble miniusb-usb sur un autre port usb du pc&lt;br /&gt;
&lt;br /&gt;
On peut ensuite faire communiquer les puces entre elles en faisant des read() et write() sur les descripteurs de fichiers associés (test non encore effectué à faire à la prochaine séance)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je comprends comment faire pour enregistrer, notamment l'utilitée et le fonctionnement de la fonction get_audio() d'Altium. Celle-ci enregistre dans un buffer d'entiers les valeurs en sortie du CAN d'Altium. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je m'aide d'un programme exemple fourni avec le soft Altium Designer&lt;br /&gt;
&amp;lt;li/&amp;gt;Probleme : les valeurs retournées par l'enregistrement ne sont pas satisfaisantes.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Cinquième Séance (10/03/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programme arduino et zigbee.c développés et fonctionnnent. A la prochaine séance il faudra voir comment on peut envoyer le numéro du vibreur à actionner et le traitement qui sera fait par lilypad en fonction du numéro reçu par la puce zigbee sur le t-shirt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Identification du problème sur les valeurs retournées par l'enregistrement : l'enregistrement est réalisé sur 8 bit, mais le stockage est fait dans un int (integer) donc sur 4 octets (32 bits). Quand on cast les entiers enregistrés, les valeurs retournées sont plus probables. Il y a cependant des valeurs de 'bruit' ou en tout cas abérentes supérieures à 200. (les valeurs sont codées de 0 à 255)&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide d'utiliser directement l'exemple d'Altium et de le modifier pour mon projet&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Sixième Séance (14/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Méthode retenue pour l'envoi du numéro de vibreur: branchement de 4 pins de l'arduino sur la platine et la platine altium envoi un signal état haut pour l'activation d'un des 4 vibreurs (pin 1 à l'état haut : activation du vibreur 1, idem pour les 3 autres vibreurs), une fois le numéro de pin reçu on l'envoi via la puce Xbee présente sur arduino.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
Je travaille toujours sur la récupération des données que je recois sur le micro.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Septième Séance (17/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il va falloir brancher la puce Xbee réceptrice sur le Lilypad (câble mini-USB vers connectique Lilypad commandé). il faut d'abord faire les tests sur plateforme Arduino (câblage de Lilypad avec du fil à coudre fastidieux et long à modifier). &lt;br /&gt;
&lt;br /&gt;
Début de la programmation de commande des vibreurs: &lt;br /&gt;
Les rythmes du rock 6 temps sont les suivants: 1,2, 3 et 4,5 et 6. pour le garçon cela revient à faire gauche(1), droite (2),gauche(3)-droite(et)-gauche(4), droite(5)-gauche(et)-droite(6). Idem pour la fille mais en miroir. &lt;br /&gt;
On remarque qu'entre les temps 3 et 4, puis 5 et 6, il y a un demi-temps à marquer qui n'est pas indiqué par un beat. Il faut donc déterminer le temps qui sépare 2 beats et prévoir une vibration supplémentaire pour le demi-temps &amp;quot;et&amp;quot;. &lt;br /&gt;
La fonction millis() sous Arduino permet d'obtenir le temps qui s'est écoulé depuis le lancement du programme en millisecondes. Pour obtenir le demi-temps il suffit de stocker le temps lors du pas 1 et lors du pas 2 puis de diviser la différence par 2 pour obtenir la durée d'un demi-temps. Sachant que l'on actionne le vibreur pendant un certain temps il faudra déduire ce temps du demi-temps pour actionner le vibreur suivant.&lt;br /&gt;
&lt;br /&gt;
NB: trouver une solution pour sélectionner le mode femme ou le mode homme (platine Lilypad interrupteur? http://www.lextronic.eu/doc/produit/img1_18685.jpg)&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;strong&amp;gt;plateforme Altium : &amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'arrive à recevoir les données audio du micro et à les faire jouer par la nanoboard. Le résultat est plutôt satisfaisant, on discerne assez bien ce que l'on envoie sur le micro, bien que la qualité de retour soit médiocre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Dorénavant je travaillerais en insérant directement par câble Jack les données audio sur l'entrée casque de la nanoboard, pour limiter le bruit au maximum. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Huitième Séance (21/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fin de la programmation du code à implanter dans le Lilypad&lt;br /&gt;
idée trouvée pour sélectionner mode homme ou femme: un bouton poussoir et une LED RVB qui change de couleur en fonction du mode sélectionné (orange: aucun mode, bleu: homme, rose: femme)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|Affichage de 300 coefficients. Une 50aine est utile]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Implémentation d'un filtre à réponse impulsionnelle finie (RIF).&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour l'instant je filtre les fréquences entre 250 et 350Hz (fréquences de la caisse claire environ). &lt;br /&gt;
&amp;lt;li/&amp;gt;Pour cela, je regarde chez moi sur le logiciel de calcul scilab les coefficients d'un tel filtre :&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li/&amp;gt;Filtre passe bande,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure haute : 350Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure basse : 250Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Échantillonnage à 2000Hz (ça devrait suffire), sur 8 bits.&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Quand je trace la caractéristique d'un tel filtre pour un grand nombre de coefficients, je vois qu'il me faut une cinquantaine de coefficients pour avoir un filtre correct. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je peux donc en séance projet implémenter mon code avec 50 coefficients.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choix de l'algorithme : &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Le problème du filtrage temps réel se pose : je ne peux pas stocker en mémoire tout le morceau puis envoyer un signal à chaque fois que je détecte un beat par re-lecture. Il faut les détecter en temps réel.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je vais donc faire la conversion d'un temps très court de musique pour pouvoir le stocker en mémoire vive (je stocke 50 échantillons).&lt;br /&gt;
&amp;lt;li/&amp;gt;Puis je filtre ces 50 échantillons. (Note : pour cela j'ai besoin des 50 échantillons précédents; les 50 premières valeurs en sortie de filtre ne seront donc pas bonnes).&lt;br /&gt;
&amp;lt;li/&amp;gt;Je recommence avec 50 nouveaux échantillons, ad infinitum.&lt;br /&gt;
&amp;lt;li/&amp;gt;Étant donné que la fréquence de l'horloge est de 50MHz et que les beats arrivent au maximum toutes les demies secondes, l'algorithme devrait être assez rapide. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Neuvième Séance (24/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Câblages et test de code Lilypad.&lt;br /&gt;
Problème rencontré: les puces zigbee semblent ne pas communiquer ensemble à cause d'un changement de canal de transmission: à vérifier à la prochaine séance. &lt;br /&gt;
&lt;br /&gt;
Prochaine séance: câblage des éléments Lilypad.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Je continue les tests sur le filtrage. J'essaie de localiser des endroits précis de musique où il y a des basses, qui devraient apparaître en sortie de filtre.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Dixième Séance (28/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème des puces zigbee résolu: cela venait bien d'un changement de canal de transmission. On a donc changé les paramètres grâce au logiciel X-CTU.&lt;br /&gt;
Amélioration du code&lt;br /&gt;
Câblage du Lilypad reporté à des séances ultérieures&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre ressemblent bien à des signaux mais ceux-ci restent tous du même ordre de grandeur.&amp;lt;br/&amp;gt;&lt;br /&gt;
Soit ils sont tous trop grand et mon filtre ne filtre rien, soit il sont tous faible et je ne détecte aucune basse. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui joue la sortie du filtre (on sait jamais, des fois qu'on puisse discerner une basse parmi le bruit), mais le résultat n'est pas satisfaisant.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je remet en question la bande passante de mon filtre, elle est peut être trop large et trop haute en fréquence.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Onzième Séance (31/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|150 coefficients pour coller au gabarit du filtre]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de changer mes coefficients pour qu'ils correspondent à un nouveau type de filtre :&lt;br /&gt;
   &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li/&amp;gt;Filtre passe bande toujours&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure haute 80Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure basse 50Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;Même échantillonnage à 2000Hz sur 8 bits&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Il me faut cette fois ci 150 échantillons environ.&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour déterminer ces nouveaux coefficients ne me suis aidé du logiciel audacity qui me permet de faire entre autre une alanyse spectrale de mon signal : sur un morceau de musique donné (celui que je test, avec des battements de grosse caisse évidents et réguliers), je remarque un pic (en puissance (dB)) à 75Hz.&lt;br /&gt;
&amp;lt;/ul&lt;br /&gt;
&amp;gt;Résultat :&lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre me laissent toujours perplexe : &lt;br /&gt;
&amp;lt;li/&amp;gt;Visiblement le filtrage fonctionne puisque d'une part plus mon signal est fort (donc plus de puissance), plus je reçois de puissance en moyenne en sortie de filtre, et d'autre part, les données en sortie de filtre sont plus faibles sur des morceaux sans basses (testé avec un caprice de Paganini au violon - fréquences variant autour de la corde de ''la''  à 440Hz) que sur des morceaux saturés de basses (double pédale sur du métal).&lt;br /&gt;
&amp;lt;li/&amp;gt;Mais sur mon morceau test avec ses basses claires et régulières, je ne vois pas de changement particulier lors de l'arrivée d'une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Douzième Séance (4/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations : ce problème était du au fait qu'après incrémentation de la variable nbStep jusqu'à 6, on la réinitialisait à 0 au lieu de 1. le switch de notre code ne proposant aucune action pour un nbStep=1 on passait la boucle sans rien faire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de ré-examiner mes valeurs reçues dès l'enregistrement audio.&lt;br /&gt;
&amp;lt;li/&amp;gt;En faisant plus attention aux valeurs de bruit que j'obtenais (valeurs supérieures à 190), je remarque qu'en fait ce sont des nombres négatifs complémentés à 2, envoyés par le CAN. En effet, plus le signal est puissant en entrée, plus la sortie du CAN varie autour de zéro et plus les valeurs hautes s'éloignent de 255. Ces valeurs hautes sont donc bien des valeurs négatives.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui me renvoie ces données sur des entiers non signés.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Treizième Séance (5/04/2011) -- 4h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il y avait une problème au niveau du changement de mode sur la platine Arduino: lorsque qu'on changeait de mode en plein milieu d'un cycle de vibration le cycle suivant ne faisait que trois vibrations puis s'arrêtait et recommençait quelques minutes après. Après divers tests, j'ai remarqué que ce problème apparaissait à cause d'une instruction delay() pour les pas 3-et-4 puis 5-et-6. Pour bien respecter les temps entre deux beats il fallait inclure la vibration pour le temps &amp;quot;et&amp;quot; qui n'est pas sur un beat marqué, de façon à ne pas râter les beats suivants (les beats 4 et 6). Or le délai que je calculais entre la fin d'activation des vibreurs pour les beats 3 et 5 et l'activation des vibreurs pour les temps &amp;quot;et&amp;quot; était parfois négatif. Le calcul que j'effectuais était le suivant: &lt;br /&gt;
&lt;br /&gt;
attente entre 3 et &amp;quot;et&amp;quot;=((delta/2) - pause).&lt;br /&gt;
[[Fichier:cycle_de_vibration.jpg|300px|thumb|right|cycle de vibration des vibreurs]]&lt;br /&gt;
Pour une raison qui m'est encore inconnue, lors d'un changement de mode, quelque soit le sens du changement (mode femme --&amp;gt; mode homme, mode homme --&amp;gt; mode femme), le temps delta/2 était inférieur à mon temps de pause (delta est calculé à partir d'une mesure de t1 et t2 les temps relevés grâce à la fonction millis() lors des beats 1 et 2). La fonction delay() que j'utilisais prenait donc un argument entier signé négatif transformé en entier non signé (la fonction delay() prend un unsigned long en paramètre) ce qui donnait des chiffres incohérents (par exemple au lieu d'avoir un délai de 200ms j'avais un délai de 10000ms voire beaucoup plus) j'ai donc changé ma gestion des activations et désactivations des vibreurs en partant du principe qu'une pause est toujours égale à delta/4. Le temps &amp;quot;et&amp;quot; se trouvant à delta/2 il suffisait d'attendre à nouveau delta/4 pour activer les vibreurs pour les temps &amp;quot;et&amp;quot;. Grâce à cette technique le système s'adapte à n'importe quel tempo (initialement j'avais créé des temps de pauses particuliers pour des rythmes de 60bpm et 120bpm) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Illustration_wiki.jpg|300px|thumb|right|changement de l'échelle pour l'échantillonage]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Suite à la modification des entiers reçus en sortie du CAN, je n'ai plus ces valeurs excessivement hautes. Le signal en sortie devient du CAN devient beaucoup plus propre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Problème : maintenant lorsque je n'envoie rien, la valeur de mon signal en sortie du CAN est de 128 (le milieu entre 0 et 255). Pour ne pas que cela perturbe mes mesures ulétrieures (bien que en théorie cela ne devrait pas perturber le filtrage), je change ma fonction qui me renvoie un entier non signé pour qu'elle me renvoie cette fois-ci des entiers signés (mais cohérents : de -128 à 127, et pas de 0 à 127 puis 128 à 255 pour les entiers négatifs).&lt;br /&gt;
&amp;lt;li/&amp;gt;Poursuite des tests. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatorzième Séance (7/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Schéma_cablage_coach_danse.png|600px|center|Schéma de câblage des éléments Lilypad]]&lt;br /&gt;
&lt;br /&gt;
début de couture des éléments Lilypad sur le t-shirt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Filtre.jpg|300px|thumb|right|Apparition d'une basse au début ?]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'imprime sur le tableur d'open office les valeurs de mon signal filtré. Je fais quelques graphes avec plusieurs musiques différentes (avec basse, sans basses, plus fort, moins fort, ...). Les résultats semblent cohérents et j'ai même un graphe prometteur qui me renvoie une puissance de sortie 100 fois supérieure à la moyenne pour un temps assez court, ce qui me laisse penser que ça pourrait être une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quinzième Séance (11/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Réalisation de nouveaux tests. Le filtrage semble fonctionner (les valeurs retournées lorsqu'il n'y a pas de basses sont presque nulles, et augmentent lorsqu'il y en a - pour un volume sonore donné). Mais il reste très difficile de détecter les basses en soi lorsqu'elles arrivent&lt;br /&gt;
&amp;lt;li/&amp;gt;Mise en place de l'envoi d'un signal +5V ainsi que l'affichage des leds lors de la détection d'une basse. Reste à détecter la basse en question.... &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Seizième Séance (12/04/2011) -- 4h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
voici le t-shirt après quelques coutures:&lt;br /&gt;
[[Fichier:Couture_debut.jpg|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Poursuite des tests, toujours dans le but de déterminer une basse de manière explicite...&lt;br /&gt;
&amp;lt;li/&amp;gt;J'encode les informations binaires sur 32 bits au lieu de 8bits, mais cela n'apporte pas plus de résultats. Même la qualité lecture par la nanoboard n'en est pas grandement affectée.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je pense déterminer le principal problème : le temps de filtrage (calcul de 150 valeurs qui nécessitent chacune 150 multiplications =&amp;gt; au moins 22500 opérations) est trop long par rapport au temps de lecture, peut être que trop d'informations sont perdues entre deux filtrages&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Séances Bonus &amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fin des coutures, légère modification du programme pour l'adapter à certains éléments notamment la led RVB Lilypad et l'interrupteur 2 positions. Lors des tests le programme de fonctionnait pas correctement: une fois implanté dans le Lilypad parce qu'avec les coutures effectuées le module Xbee était sous alimenté (il recevait environ 2,2V alors que la tension d'alimentation minimale est de 2,8V) il faut donc alimenter le module sans passer par des protoboards intermédiaires pour éviter les chutes de tension.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je change mon code, certaines valeurs n'étaient pas effacées après traitement, ce qui faussait le résultat après plusieurs secondes de filtrage. &lt;br /&gt;
&amp;lt;li/&amp;gt;Redéfinition du filtre : J'agrandi un peu la bande passante de 40 à 75Hz. J'ai à présent 100 coefficients.&lt;br /&gt;
&amp;lt;li/&amp;gt;J'envisage le multi thread  en espérant accélérer le processus de filtrage (les multiplications). Mais j'abandonne vite l'idée : dans tous les cas de figure j'aurai des ressources partagées entre les deux threads, et comme les deux threads ne peuvent accéder à la ressource en même temps, l'un attendra toujours pendant que l'autre s'exécute.&lt;br /&gt;
&amp;lt;li/&amp;gt;Une autre solution est de monter la fréquence d'horloge. Mais cette méthode ne fonctionne pas non plus, la nanoboard n'est pas en mesure d'établir de route assez courte dans le fpga pour permettre une fréquence plus rapide. D'après le rapport d'Altium Designer établi après le 'place and route' et la génération du bit file dans le fpga, il est sûr de fonctionner correctement à une fréquence maximale de 40MHz. Je test en descendant la fréquence d'horloge à 40Mhz des fois que mes données soient corrompues à 50Mhz mais je n'obtiens pas de changements. Je reste donc à 50Mhz. &lt;br /&gt;
&amp;lt;li/&amp;gt;Un problème qui peut intervenir aussi, mais qui n'est pas majeur, est un mauvais échantillonnage qui entrainerait des fausses données à basses fréquences, après l'échantillonnage : j'échantillonne à 2000Hz, ce qui est suffisant pour les basses fréquences. Mais pour les plus hautes fréquences, l'échantillonnage ne veut plus rien dire (pour une fréquence à 10kHz, on échantillonnerait une période sur 5). Cela peut en plus créer des faibles basses fréquences, qui n'en sont pas à la base (aliasing).&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour résoudre le problème d'aliasing, il faudrait échantillonner à au moins 44kHz, mais avec cela on augmenterai ne nombre de coefficients, donc le temps de calcul, et en plus on échantillonnerait moins de temps de musique à la fois. Je ne peux pas me le permettre vu que le calcul est déjà long avec les paramètres actuels &lt;br /&gt;
&amp;lt;li/&amp;gt;L'idéal serait de mettre au point une accélération matérielle pour les multiplications, ce qui augmenterait considérablement le temps de calcul pour le filtrage (bien que cela baisse probablement la fréquence d'horloge du processeur). L'accélération matérielle consiste à sous traiter certaines opération du processeur par le fpga même, qui peut lui les effectuer en parallèle. Malheureusement j'ai eu connaissance de cette option assez tard et je n'ai pas réussi à la mettre correctement au point sur la nanoboard. Cela m'aurait permis en plus d'augmenter ma fréquence d'échantillonnage pour limiter au maximum le phénomène d'aliasing.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Fichier:Signal.png|400px|thumb|right|signal filtré]]&lt;br /&gt;
Au final j'arrive à détecter des beats, mais il reste deux points noirs :&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Tous ne s'affichent pas, quelques uns ne doivent pas être enregistrés du fait du temps de filtrage&lt;br /&gt;
&amp;lt;li/&amp;gt;Ceux qui arrivent à s'afficher le font avec quelques dixièmes de seconde de latence.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=795</id>
		<title>Coach Dance</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=795"/>
				<updated>2011-05-04T22:27:21Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Séances Bonus  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:salsa.jpg|right|thumb]]&lt;br /&gt;
= Présentation =&lt;br /&gt;
L'apprentissage de la danse peut poser certains problèmes aux débutants. Un des problèmes majeurs rencontré concerne la synchronisation des mouvements sur le rythme de la musique. De nombreux débutants n'entendent pas le rythme soit parce qu'ils ne connaissent pas bien le type de musique (e.g. salsa) soit parce que la coordination des mouvements (bras et jambes) leur demandent de gros efforts cognitifs.&lt;br /&gt;
&lt;br /&gt;
L'objectif du projet consiste à aider les danseurs débutants en donnant les indications de rythme et de mouvement. Pour cela, vous devez développer un système portable (type wearable computer) qui devra :&lt;br /&gt;
&lt;br /&gt;
* détecter de manière automatique le rythme de la musique. Dans un premier temps, nous ciblerons deux danses, la salsa et le rock 6 temps. Le type de danse sera indiqué au système afin de &amp;quot;simplifier&amp;quot; la reconnaissance&lt;br /&gt;
* en fonction du rythme et de la danse, activer un des vibreurs qui seront disposé sur le danseur. Dans un premier temps, un vibreur sera installé sur chacun des mollets afin d'indiquer quel est le pied à bouger. Si le temps le permet, il sera possible d'étendre le système au mouvement des bras ou à d'autres danses.&lt;br /&gt;
&lt;br /&gt;
= Préparation du projet =&lt;br /&gt;
&lt;br /&gt;
== Matériel ==&lt;br /&gt;
&lt;br /&gt;
* 1 arduino lilypad (disponible) ;&lt;br /&gt;
* 4 vibreurs (à commander) ;&lt;br /&gt;
* 1 micro portable (à commander) [http://www.selectronic.fr/article.asp?article_ref_entier=11.1142-9999];&lt;br /&gt;
* -&amp;gt; un cable jack par micro pour la connection à une plateforme Altium (disponibilité ?)&lt;br /&gt;
* pour la connection Altium/Zigbee : puce Zigbee/cable(adaptateur usb)&lt;br /&gt;
* Des morceaux de musique Salsa et Rock (à commander...XD);&lt;br /&gt;
&lt;br /&gt;
== Danses ==&lt;br /&gt;
&lt;br /&gt;
Les deux danses visées dans un premier temps sont la salsa (style cubain, http://fr.wikipedia.org/wiki/Salsa) et le rock 6 temps (http://fr.wikipedia.org/wiki/Rock_%C3%A0_six_temps).&lt;br /&gt;
Le système devra permettre de sélectionner la danse et le sexe de la personne (les pas de la fille sont inversés par rapport à ceux du garçon)&lt;br /&gt;
&lt;br /&gt;
= Avancement du projet =&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Première Séance (28/02/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
Nous avons trouvé un lien pour un montage de détection des beats par minute (d'une basse) dans une chanson. Ce montage devra sûrement être adapté pour la salsa car le rythme est repéré par le claquement des claves de fréquence plus hautes que les basses.&lt;br /&gt;
&lt;br /&gt;
;lien pour du montage de détection bpm: http://www.sonelec-musique.com/electronique_realisations_compteur_tempo_001.html&lt;br /&gt;
&lt;br /&gt;
idée à développer: filtre numérique passe bande à tester sur 2 sons wav différents... (fft sur un fichier wav avec matlab puis calcul du filtre)&lt;br /&gt;
&lt;br /&gt;
;lien pour le câblage d'un micro : http://www.sonelec-musique.com/electronique_bases_alim_micro_electret.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF8000;&amp;quot;&amp;gt;&amp;lt;big&amp;gt;'''Etapes prévues:'''&amp;lt;/big&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Test de la méthode de détection des beats par minute : Nous voulons trouver une façon de faire le traitement numérique avec le microcontrôleur du LilyPad (ATmega328V) pour éviter d'avoir à concevoir un circuit imprimé en parallèle avec un montage à amplificateur opérationnel.&lt;br /&gt;
;Phase de développement : Après avoir trouvé la méthode finale de détection des beats par minute nous devrons concevoir un programme permettant de traiter ces informations et surtout adaptable à plusieurs sortes de musique&lt;br /&gt;
;Partie pratique: Conception du vêtement intelligent&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Deuxième Séance (3/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Test de traitement FFT avec Matlab d'un fichier wav a résulté à un échec. Test avec un programme développé par un étudiant de Supelec a échoué également. Nous nous sommes donc décidé à effectuer un traitement avec une plateforme Altium et utilisation de arduino / lilypad pour la communication zigbee et la gestion des vibreurs.&lt;br /&gt;
&lt;br /&gt;
les micros dont nous avons besoin sont disponibles il nous manquera juste des composants type résistance condensateur etc...&lt;br /&gt;
&lt;br /&gt;
Prochaine séance:&lt;br /&gt;
Essai avec la plateforme Altium (Maxime)&lt;br /&gt;
recherche d'info sur Zigbee (Catherine)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Troisieme Séance (3/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Test sur la plateforme Altium : &amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li/&amp;gt;Mise en place du programme Altium : conception du schematic (indique quels composants de la nanoboard utiliser) et d'un code C simple.&lt;br /&gt;
  &amp;lt;li/&amp;gt;Un micro est connecté sur la plateforme Altium. On a essayé de récupérer le signal numérisé, pour pouvoir ensuite le traiter. Les résultats obtenus ne sont pas satisfaisants.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatrième Séance (7/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Pour communiquer via Zigbee il suffit de &lt;br /&gt;
:-pluger une plateforme zigbee sur arduino : cette manoeuvre permet d'utiliser zigbee comme un port série en la branchant en usb sur un pc&lt;br /&gt;
:-brancher une autre puce zigbee avec un câble miniusb-usb sur un autre port usb du pc&lt;br /&gt;
&lt;br /&gt;
On peut ensuite faire communiquer les puces entre elles en faisant des read() et write() sur les descripteurs de fichiers associés (test non encore effectué à faire à la prochaine séance)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je comprends comment faire pour enregistrer, notamment l'utilitée et le fonctionnement de la fonction get_audio() d'Altium. Celle-ci enregistre dans un buffer d'entiers les valeurs en sortie du CAN d'Altium. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je m'aide d'un programme exemple fourni avec le soft Altium Designer&lt;br /&gt;
&amp;lt;li/&amp;gt;Probleme : les valeurs retournées par l'enregistrement ne sont pas satisfaisantes.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Cinquième Séance (10/03/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programme arduino et zigbee.c développés et fonctionnnent. A la prochaine séance il faudra voir comment on peut envoyer le numéro du vibreur à actionner et le traitement qui sera fait par lilypad en fonction du numéro reçu par la puce zigbee sur le t-shirt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Identification du problème sur les valeurs retournées par l'enregistrement : l'enregistrement est réalisé sur 8 bit, mais le stockage est fait dans un int (integer) donc sur 4 octets (32 bits). Quand on cast les entiers enregistrés, les valeurs retournées sont plus probables. Il y a cependant des valeurs de 'bruit' ou en tout cas abérentes supérieures à 200. (les valeurs sont codées de 0 à 255)&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide d'utiliser directement l'exemple d'Altium et de le modifier pour mon projet&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Sixième Séance (14/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Méthode retenue pour l'envoi du numéro de vibreur: branchement de 4 pins de l'arduino sur la platine et la platine altium envoi un signal état haut pour l'activation d'un des 4 vibreurs (pin 1 à l'état haut : activation du vibreur 1, idem pour les 3 autres vibreurs), une fois le numéro de pin reçu on l'envoi via la puce Xbee présente sur arduino.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
Je travaille toujours sur la récupération des données que je recois sur le micro.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Septième Séance (17/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il va falloir brancher la puce Xbee réceptrice sur le Lilypad (câble mini-USB vers connectique Lilypad commandé). il faut d'abord faire les tests sur plateforme Arduino (câblage de Lilypad avec du fil à coudre fastidieux et long à modifier). &lt;br /&gt;
&lt;br /&gt;
Début de la programmation de commande des vibreurs: &lt;br /&gt;
Les rythmes du rock 6 temps sont les suivants: 1,2, 3 et 4,5 et 6. pour le garçon cela revient à faire gauche(1), droite (2),gauche(3)-droite(et)-gauche(4), droite(5)-gauche(et)-droite(6). Idem pour la fille mais en miroir. &lt;br /&gt;
On remarque qu'entre les temps 3 et 4, puis 5 et 6, il y a un demi-temps à marquer qui n'est pas indiqué par un beat. Il faut donc déterminer le temps qui sépare 2 beats et prévoir une vibration supplémentaire pour le demi-temps &amp;quot;et&amp;quot;. &lt;br /&gt;
La fonction millis() sous Arduino permet d'obtenir le temps qui s'est écoulé depuis le lancement du programme en millisecondes. Pour obtenir le demi-temps il suffit de stocker le temps lors du pas 1 et lors du pas 2 puis de diviser la différence par 2 pour obtenir la durée d'un demi-temps. Sachant que l'on actionne le vibreur pendant un certain temps il faudra déduire ce temps du demi-temps pour actionner le vibreur suivant.&lt;br /&gt;
&lt;br /&gt;
NB: trouver une solution pour sélectionner le mode femme ou le mode homme (platine Lilypad interrupteur? http://www.lextronic.eu/doc/produit/img1_18685.jpg)&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;strong&amp;gt;plateforme Altium : &amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'arrive à recevoir les données audio du micro et à les faire jouer par la nanoboard. Le résultat est plutôt satisfaisant, on discerne assez bien ce que l'on envoie sur le micro, bien que la qualité de retour soit médiocre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Dorénavant je travaillerais en insérant directement par câble Jack les données audio sur l'entrée casque de la nanoboard, pour limiter le bruit au maximum. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Huitième Séance (21/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fin de la programmation du code à implanter dans le Lilypad&lt;br /&gt;
idée trouvée pour sélectionner mode homme ou femme: un bouton poussoir et une LED RVB qui change de couleur en fonction du mode sélectionné (orange: aucun mode, bleu: homme, rose: femme)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|Affichage de 300 coefficients. Une 50aine est utile]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Implémentation d'un filtre à réponse impulsionnelle finie (RIF).&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour l'instant je filtre les fréquences entre 250 et 350Hz (fréquences de la caisse claire environ). &lt;br /&gt;
&amp;lt;li/&amp;gt;Pour cela, je regarde chez moi sur le logiciel de calcul scilab les coefficients d'un tel filtre :&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li/&amp;gt;Filtre passe bande,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure haute : 350Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure basse : 250Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Échantillonnage à 2000Hz (ça devrait suffire), sur 8 bits.&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Quand je trace la caractéristique d'un tel filtre pour un grand nombre de coefficients, je vois qu'il me faut une cinquantaine de coefficients pour avoir un filtre correct. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je peux donc en séance projet implémenter mon code avec 50 coefficients.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choix de l'algorithme : &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Le problème du filtrage temps réel se pose : je ne peux pas stocker en mémoire tout le morceau puis envoyer un signal à chaque fois que je détecte un beat par re-lecture. Il faut les détecter en temps réel.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je vais donc faire la conversion d'un temps très court de musique pour pouvoir le stocker en mémoire vive (je stocke 50 échantillons).&lt;br /&gt;
&amp;lt;li/&amp;gt;Puis je filtre ces 50 échantillons. (Note : pour cela j'ai besoin des 50 échantillons précédents; les 50 premières valeurs en sortie de filtre ne seront donc pas bonnes).&lt;br /&gt;
&amp;lt;li/&amp;gt;Je recommence avec 50 nouveaux échantillons, ad infinitum.&lt;br /&gt;
&amp;lt;li/&amp;gt;Étant donné que la fréquence de l'horloge est de 50MHz et que les beats arrivent au maximum toutes les demies secondes, l'algorithme devrait être assez rapide. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Neuvième Séance (24/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Câblages et test de code Lilypad.&lt;br /&gt;
Problème rencontré: les puces zigbee semblent ne pas communiquer ensemble à cause d'un changement de canal de transmission: à vérifier à la prochaine séance. &lt;br /&gt;
&lt;br /&gt;
Prochaine séance: câblage des éléments Lilypad.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Je continue les tests sur le filtrage. J'essaie de localiser des endroits précis de musique où il y a des basses, qui devraient apparaître en sortie de filtre.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Dixième Séance (28/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème des puces zigbee résolu: cela venait bien d'un changement de canal de transmission. On a donc changé les paramètres grâce au logiciel X-CTU.&lt;br /&gt;
Amélioration du code&lt;br /&gt;
Câblage du Lilypad reporté à des séances ultérieures&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre ressemblent bien à des signaux mais ceux-ci restent tous du même ordre de grandeur.&amp;lt;br/&amp;gt;&lt;br /&gt;
Soit ils sont tous trop grand et mon filtre ne filtre rien, soit il sont tous faible et je ne détecte aucune basse. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui joue la sortie du filtre (on sait jamais, des fois qu'on puisse discerner une basse parmi le bruit), mais le résultat n'est pas satisfaisant.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je remet en question la bande passante de mon filtre, elle est peut être trop large et trop haute en fréquence.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Onzième Séance (31/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|150 coefficients pour coller au gabarit du filtre]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de changer mes coefficients pour qu'ils correspondent à un nouveau type de filtre :&lt;br /&gt;
   &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li/&amp;gt;Filtre passe bande toujours&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure haute 80Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure basse 50Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;Même échantillonnage à 2000Hz sur 8 bits&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Il me faut cette fois ci 150 échantillons environ.&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour déterminer ces nouveaux coefficients ne me suis aidé du logiciel audacity qui me permet de faire entre autre une alanyse spectrale de mon signal : sur un morceau de musique donné (celui que je test, avec des battements de grosse caisse évidents et réguliers), je remarque un pic (en puissance (dB)) à 75Hz.&lt;br /&gt;
&amp;lt;/ul&lt;br /&gt;
&amp;gt;Résultat :&lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre me laissent toujours perplexe : &lt;br /&gt;
&amp;lt;li/&amp;gt;Visiblement le filtrage fonctionne puisque d'une part plus mon signal est fort (donc plus de puissance), plus je reçois de puissance en moyenne en sortie de filtre, et d'autre part, les données en sortie de filtre sont plus faibles sur des morceaux sans basses (testé avec un caprice de Paganini au violon - fréquences variant autour de la corde de ''la''  à 440Hz) que sur des morceaux saturés de basses (double pédale sur du métal).&lt;br /&gt;
&amp;lt;li/&amp;gt;Mais sur mon morceau test avec ses basses claires et régulières, je ne vois pas de changement particulier lors de l'arrivée d'une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Douzième Séance (4/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations : ce problème était du au fait qu'après incrémentation de la variable nbStep jusqu'à 6, on la réinitialisait à 0 au lieu de 1. le switch de notre code ne proposant aucune action pour un nbStep=1 on passait la boucle sans rien faire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de ré-examiner mes valeurs reçues dès l'enregistrement audio.&lt;br /&gt;
&amp;lt;li/&amp;gt;En faisant plus attention aux valeurs de bruit que j'obtenais (valeurs supérieures à 190), je remarque qu'en fait ce sont des nombres négatifs complémentés à 2, envoyés par le CAN. En effet, plus le signal est puissant en entrée, plus la sortie du CAN varie autour de zéro et plus les valeurs hautes s'éloignent de 255. Ces valeurs hautes sont donc bien des valeurs négatives.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui me renvoie ces données sur des entiers non signés.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Treizième Séance (5/04/2011) -- 4h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il y avait une problème au niveau du changement de mode sur la platine Arduino: lorsque qu'on changeait de mode en plein milieu d'un cycle de vibration le cycle suivant ne faisait que trois vibrations puis s'arrêtait et recommençait quelques minutes après. Après divers tests, j'ai remarqué que ce problème apparaissait à cause d'une instruction delay() pour les pas 3-et-4 puis 5-et-6. Pour bien respecter les temps entre deux beats il fallait inclure la vibration pour le temps &amp;quot;et&amp;quot; qui n'est pas sur un beat marqué, de façon à ne pas râter les beats suivants (les beats 4 et 6). Or le délai que je calculais entre la fin d'activation des vibreurs pour les beats 3 et 5 et l'activation des vibreurs pour les temps &amp;quot;et&amp;quot; était parfois négatif. Le calcul que j'effectuais était le suivant: &lt;br /&gt;
&lt;br /&gt;
attente entre 3 et &amp;quot;et&amp;quot;=((delta/2) - pause).&lt;br /&gt;
[[Fichier:cycle_de_vibration.jpg|300px|thumb|right|cycle de vibration des vibreurs]]&lt;br /&gt;
Pour une raison qui m'est encore inconnue, lors d'un changement de mode, quelque soit le sens du changement (mode femme --&amp;gt; mode homme, mode homme --&amp;gt; mode femme), le temps delta/2 était inférieur à mon temps de pause (delta est calculé à partir d'une mesure de t1 et t2 les temps relevés grâce à la fonction millis() lors des beats 1 et 2). La fonction delay() que j'utilisais prenait donc un argument entier signé négatif transformé en entier non signé (la fonction delay() prend un unsigned long en paramètre) ce qui donnait des chiffres incohérents (par exemple au lieu d'avoir un délai de 200ms j'avais un délai de 10000ms voire beaucoup plus) j'ai donc changé ma gestion des activations et désactivations des vibreurs en partant du principe qu'une pause est toujours égale à delta/4. Le temps &amp;quot;et&amp;quot; se trouvant à delta/2 il suffisait d'attendre à nouveau delta/4 pour activer les vibreurs pour les temps &amp;quot;et&amp;quot;. Grâce à cette technique le système s'adapte à n'importe quel tempo (initialement j'avais créé des temps de pauses particuliers pour des rythmes de 60bpm et 120bpm) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Illustration_wiki.jpg|300px|thumb|right|changement de l'échelle pour l'échantillonage]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Suite à la modification des entiers reçus en sortie du CAN, je n'ai plus ces valeurs excessivement hautes. Le signal en sortie devient du CAN devient beaucoup plus propre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Problème : maintenant lorsque je n'envoie rien, la valeur de mon signal en sortie du CAN est de 128 (le milieu entre 0 et 255). Pour ne pas que cela perturbe mes mesures ulétrieures (bien que en théorie cela ne devrait pas perturber le filtrage), je change ma fonction qui me renvoie un entier non signé pour qu'elle me renvoie cette fois-ci des entiers signés (mais cohérents : de -128 à 127, et pas de 0 à 127 puis 128 à 255 pour les entiers négatifs).&lt;br /&gt;
&amp;lt;li/&amp;gt;Poursuite des tests. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatorzième Séance (7/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Schéma_cablage_coach_danse.png|600px|center|Schéma de câblage des éléments Lilypad]]&lt;br /&gt;
&lt;br /&gt;
début de couture des éléments Lilypad sur le t-shirt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Filtre.jpg|300px|thumb|right|Apparition d'une basse au début ?]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'imprime sur le tableur d'open office les valeurs de mon signal filtré. Je fais quelques graphes avec plusieurs musiques différentes (avec basse, sans basses, plus fort, moins fort, ...). Les résultats semblent cohérents et j'ai même un graphe prometteur qui me renvoie une puissance de sortie 100 fois supérieure à la moyenne pour un temps assez court, ce qui me laisse penser que ça pourrait être une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quinzième Séance (11/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Réalisation de nouveaux tests. Le filtrage semble fonctionner (les valeurs retournées lorsqu'il n'y a pas de basses sont presque nulles, et augmentent lorsqu'il y en a - pour un volume sonore donné). Mais il reste très difficile de détecter les basses en soi lorsqu'elles arrivent&lt;br /&gt;
&amp;lt;li/&amp;gt;Mise en place de l'envoi d'un signal +5V ainsi que l'affichage des leds lors de la détection d'une basse. Reste à détecter la basse en question.... &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Seizième Séance (12/04/2011) -- 4h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Poursuite des tests, toujours dans le but de déterminer une basse de manière explicite...&lt;br /&gt;
&amp;lt;li/&amp;gt;J'encode les informations binaires sur 32 bits au lieu de 8bits, mais cela n'apporte pas plus de résultats. Même la qualité lecture par la nanoboard n'en est pas grandement affectée.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je pense déterminer le principal problème : le temps de filtrage (calcul de 150 valeurs qui nécessitent chacune 150 multiplications =&amp;gt; au moins 22500 opérations) est trop long par rapport au temps de lecture, peut être que trop d'informations sont perdues entre deux filtrages&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Séances Bonus &amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fin des coutures, légère modification du programme pour l'adapter à certains éléments notamment la led RVB Lilypad et l'interrupteur 2 positions. Lors des tests le programme de fonctionnait pas correctement: une fois implanté dans le Lilypad parce qu'avec les coutures effectuées le module Xbee était sous alimenté (il recevait environ 2,2V alors que la tension d'alimentation minimale est de 2,8V) il faut donc alimenter le module sans passer par des protoboards intermédiaires pour éviter les chutes de tension.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je change mon code, certaines valeurs n'étaient pas effacées après traitement, ce qui faussait le résultat après plusieurs secondes de filtrage. &lt;br /&gt;
&amp;lt;li/&amp;gt;Redéfinition du filtre : J'agrandi un peu la bande passante de 40 à 75Hz. J'ai à présent 100 coefficients.&lt;br /&gt;
&amp;lt;li/&amp;gt;J'envisage le multi thread  en espérant accélérer le processus de filtrage (les multiplications). Mais j'abandonne vite l'idée : dans tous les cas de figure j'aurai des ressources partagées entre les deux threads, et comme les deux threads ne peuvent accéder à la ressource en même temps, l'un attendra toujours pendant que l'autre s'exécute.&lt;br /&gt;
&amp;lt;li/&amp;gt;Une autre solution est de monter la fréquence d'horloge. Mais cette méthode ne fonctionne pas non plus, la nanoboard n'est pas en mesure d'établir de route assez courte dans le fpga pour permettre une fréquence plus rapide. D'après le rapport d'Altium Designer établi après le 'place and route' et la génération du bit file dans le fpga, il est sûr de fonctionner correctement à une fréquence maximale de 40MHz. Je test en descendant la fréquence d'horloge à 40Mhz des fois que mes données soient corrompues à 50Mhz mais je n'obtiens pas de changements. Je reste donc à 50Mhz. &lt;br /&gt;
&amp;lt;li/&amp;gt;Un problème qui peut intervenir aussi, mais qui n'est pas majeur, est un mauvais échantillonnage qui entrainerait des fausses données à basses fréquences, après l'échantillonnage : j'échantillonne à 2000Hz, ce qui est suffisant pour les basses fréquences. Mais pour les plus hautes fréquences, l'échantillonnage ne veut plus rien dire (pour une fréquence à 10kHz, on échantillonnerait une période sur 5). Cela peut en plus créer des faibles basses fréquences, qui n'en sont pas à la base (aliasing).&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour résoudre le problème d'aliasing, il faudrait échantillonner à au moins 44kHz, mais avec cela on augmenterai ne nombre de coefficients, donc le temps de calcul, et en plus on échantillonnerait moins de temps de musique à la fois. Je ne peux pas me le permettre vu que le calcul est déjà long avec les paramètres actuels &lt;br /&gt;
&amp;lt;li/&amp;gt;L'idéal serait de mettre au point une accélération matérielle pour les multiplications, ce qui augmenterait considérablement le temps de calcul pour le filtrage (bien que cela baisse probablement la fréquence d'horloge du processeur). L'accélération matérielle consiste à sous traiter certaines opération du processeur par le fpga même, qui peut lui les effectuer en parallèle. Malheureusement j'ai eu connaissance de cette option assez tard et je n'ai pas réussi à la mettre correctement au point sur la nanoboard. Cela m'aurait permis en plus d'augmenter ma fréquence d'échantillonnage pour limiter au maximum le phénomène d'aliasing.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Fichier:Signal.png|400px|thumb|right|signal filtré]]&lt;br /&gt;
Au final j'arrive à détecter des beats, mais il reste deux points noirs :&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Tous ne s'affichent pas, quelques uns ne doivent pas être enregistrés du fait du temps de filtrage&lt;br /&gt;
&amp;lt;li/&amp;gt;Ceux qui arrivent à s'afficher le font avec quelques dixièmes de seconde de latence.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Couture_debut.jpg&amp;diff=794</id>
		<title>Fichier:Couture debut.jpg</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Couture_debut.jpg&amp;diff=794"/>
				<updated>2011-05-04T22:21:13Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=793</id>
		<title>Coach Dance</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=793"/>
				<updated>2011-05-04T22:12:48Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Quatorzième Séance (7/04/2011) -- 2h */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:salsa.jpg|right|thumb]]&lt;br /&gt;
= Présentation =&lt;br /&gt;
L'apprentissage de la danse peut poser certains problèmes aux débutants. Un des problèmes majeurs rencontré concerne la synchronisation des mouvements sur le rythme de la musique. De nombreux débutants n'entendent pas le rythme soit parce qu'ils ne connaissent pas bien le type de musique (e.g. salsa) soit parce que la coordination des mouvements (bras et jambes) leur demandent de gros efforts cognitifs.&lt;br /&gt;
&lt;br /&gt;
L'objectif du projet consiste à aider les danseurs débutants en donnant les indications de rythme et de mouvement. Pour cela, vous devez développer un système portable (type wearable computer) qui devra :&lt;br /&gt;
&lt;br /&gt;
* détecter de manière automatique le rythme de la musique. Dans un premier temps, nous ciblerons deux danses, la salsa et le rock 6 temps. Le type de danse sera indiqué au système afin de &amp;quot;simplifier&amp;quot; la reconnaissance&lt;br /&gt;
* en fonction du rythme et de la danse, activer un des vibreurs qui seront disposé sur le danseur. Dans un premier temps, un vibreur sera installé sur chacun des mollets afin d'indiquer quel est le pied à bouger. Si le temps le permet, il sera possible d'étendre le système au mouvement des bras ou à d'autres danses.&lt;br /&gt;
&lt;br /&gt;
= Préparation du projet =&lt;br /&gt;
&lt;br /&gt;
== Matériel ==&lt;br /&gt;
&lt;br /&gt;
* 1 arduino lilypad (disponible) ;&lt;br /&gt;
* 4 vibreurs (à commander) ;&lt;br /&gt;
* 1 micro portable (à commander) [http://www.selectronic.fr/article.asp?article_ref_entier=11.1142-9999];&lt;br /&gt;
* -&amp;gt; un cable jack par micro pour la connection à une plateforme Altium (disponibilité ?)&lt;br /&gt;
* pour la connection Altium/Zigbee : puce Zigbee/cable(adaptateur usb)&lt;br /&gt;
* Des morceaux de musique Salsa et Rock (à commander...XD);&lt;br /&gt;
&lt;br /&gt;
== Danses ==&lt;br /&gt;
&lt;br /&gt;
Les deux danses visées dans un premier temps sont la salsa (style cubain, http://fr.wikipedia.org/wiki/Salsa) et le rock 6 temps (http://fr.wikipedia.org/wiki/Rock_%C3%A0_six_temps).&lt;br /&gt;
Le système devra permettre de sélectionner la danse et le sexe de la personne (les pas de la fille sont inversés par rapport à ceux du garçon)&lt;br /&gt;
&lt;br /&gt;
= Avancement du projet =&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Première Séance (28/02/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
Nous avons trouvé un lien pour un montage de détection des beats par minute (d'une basse) dans une chanson. Ce montage devra sûrement être adapté pour la salsa car le rythme est repéré par le claquement des claves de fréquence plus hautes que les basses.&lt;br /&gt;
&lt;br /&gt;
;lien pour du montage de détection bpm: http://www.sonelec-musique.com/electronique_realisations_compteur_tempo_001.html&lt;br /&gt;
&lt;br /&gt;
idée à développer: filtre numérique passe bande à tester sur 2 sons wav différents... (fft sur un fichier wav avec matlab puis calcul du filtre)&lt;br /&gt;
&lt;br /&gt;
;lien pour le câblage d'un micro : http://www.sonelec-musique.com/electronique_bases_alim_micro_electret.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF8000;&amp;quot;&amp;gt;&amp;lt;big&amp;gt;'''Etapes prévues:'''&amp;lt;/big&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Test de la méthode de détection des beats par minute : Nous voulons trouver une façon de faire le traitement numérique avec le microcontrôleur du LilyPad (ATmega328V) pour éviter d'avoir à concevoir un circuit imprimé en parallèle avec un montage à amplificateur opérationnel.&lt;br /&gt;
;Phase de développement : Après avoir trouvé la méthode finale de détection des beats par minute nous devrons concevoir un programme permettant de traiter ces informations et surtout adaptable à plusieurs sortes de musique&lt;br /&gt;
;Partie pratique: Conception du vêtement intelligent&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Deuxième Séance (3/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Test de traitement FFT avec Matlab d'un fichier wav a résulté à un échec. Test avec un programme développé par un étudiant de Supelec a échoué également. Nous nous sommes donc décidé à effectuer un traitement avec une plateforme Altium et utilisation de arduino / lilypad pour la communication zigbee et la gestion des vibreurs.&lt;br /&gt;
&lt;br /&gt;
les micros dont nous avons besoin sont disponibles il nous manquera juste des composants type résistance condensateur etc...&lt;br /&gt;
&lt;br /&gt;
Prochaine séance:&lt;br /&gt;
Essai avec la plateforme Altium (Maxime)&lt;br /&gt;
recherche d'info sur Zigbee (Catherine)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Troisieme Séance (3/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Test sur la plateforme Altium : &amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li/&amp;gt;Mise en place du programme Altium : conception du schematic (indique quels composants de la nanoboard utiliser) et d'un code C simple.&lt;br /&gt;
  &amp;lt;li/&amp;gt;Un micro est connecté sur la plateforme Altium. On a essayé de récupérer le signal numérisé, pour pouvoir ensuite le traiter. Les résultats obtenus ne sont pas satisfaisants.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatrième Séance (7/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Pour communiquer via Zigbee il suffit de &lt;br /&gt;
:-pluger une plateforme zigbee sur arduino : cette manoeuvre permet d'utiliser zigbee comme un port série en la branchant en usb sur un pc&lt;br /&gt;
:-brancher une autre puce zigbee avec un câble miniusb-usb sur un autre port usb du pc&lt;br /&gt;
&lt;br /&gt;
On peut ensuite faire communiquer les puces entre elles en faisant des read() et write() sur les descripteurs de fichiers associés (test non encore effectué à faire à la prochaine séance)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je comprends comment faire pour enregistrer, notamment l'utilitée et le fonctionnement de la fonction get_audio() d'Altium. Celle-ci enregistre dans un buffer d'entiers les valeurs en sortie du CAN d'Altium. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je m'aide d'un programme exemple fourni avec le soft Altium Designer&lt;br /&gt;
&amp;lt;li/&amp;gt;Probleme : les valeurs retournées par l'enregistrement ne sont pas satisfaisantes.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Cinquième Séance (10/03/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programme arduino et zigbee.c développés et fonctionnnent. A la prochaine séance il faudra voir comment on peut envoyer le numéro du vibreur à actionner et le traitement qui sera fait par lilypad en fonction du numéro reçu par la puce zigbee sur le t-shirt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Identification du problème sur les valeurs retournées par l'enregistrement : l'enregistrement est réalisé sur 8 bit, mais le stockage est fait dans un int (integer) donc sur 4 octets (32 bits). Quand on cast les entiers enregistrés, les valeurs retournées sont plus probables. Il y a cependant des valeurs de 'bruit' ou en tout cas abérentes supérieures à 200. (les valeurs sont codées de 0 à 255)&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide d'utiliser directement l'exemple d'Altium et de le modifier pour mon projet&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Sixième Séance (14/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Méthode retenue pour l'envoi du numéro de vibreur: branchement de 4 pins de l'arduino sur la platine et la platine altium envoi un signal état haut pour l'activation d'un des 4 vibreurs (pin 1 à l'état haut : activation du vibreur 1, idem pour les 3 autres vibreurs), une fois le numéro de pin reçu on l'envoi via la puce Xbee présente sur arduino.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
Je travaille toujours sur la récupération des données que je recois sur le micro.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Septième Séance (17/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il va falloir brancher la puce Xbee réceptrice sur le Lilypad (câble mini-USB vers connectique Lilypad commandé). il faut d'abord faire les tests sur plateforme Arduino (câblage de Lilypad avec du fil à coudre fastidieux et long à modifier). &lt;br /&gt;
&lt;br /&gt;
Début de la programmation de commande des vibreurs: &lt;br /&gt;
Les rythmes du rock 6 temps sont les suivants: 1,2, 3 et 4,5 et 6. pour le garçon cela revient à faire gauche(1), droite (2),gauche(3)-droite(et)-gauche(4), droite(5)-gauche(et)-droite(6). Idem pour la fille mais en miroir. &lt;br /&gt;
On remarque qu'entre les temps 3 et 4, puis 5 et 6, il y a un demi-temps à marquer qui n'est pas indiqué par un beat. Il faut donc déterminer le temps qui sépare 2 beats et prévoir une vibration supplémentaire pour le demi-temps &amp;quot;et&amp;quot;. &lt;br /&gt;
La fonction millis() sous Arduino permet d'obtenir le temps qui s'est écoulé depuis le lancement du programme en millisecondes. Pour obtenir le demi-temps il suffit de stocker le temps lors du pas 1 et lors du pas 2 puis de diviser la différence par 2 pour obtenir la durée d'un demi-temps. Sachant que l'on actionne le vibreur pendant un certain temps il faudra déduire ce temps du demi-temps pour actionner le vibreur suivant.&lt;br /&gt;
&lt;br /&gt;
NB: trouver une solution pour sélectionner le mode femme ou le mode homme (platine Lilypad interrupteur? http://www.lextronic.eu/doc/produit/img1_18685.jpg)&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;strong&amp;gt;plateforme Altium : &amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'arrive à recevoir les données audio du micro et à les faire jouer par la nanoboard. Le résultat est plutôt satisfaisant, on discerne assez bien ce que l'on envoie sur le micro, bien que la qualité de retour soit médiocre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Dorénavant je travaillerais en insérant directement par câble Jack les données audio sur l'entrée casque de la nanoboard, pour limiter le bruit au maximum. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Huitième Séance (21/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fin de la programmation du code à implanter dans le Lilypad&lt;br /&gt;
idée trouvée pour sélectionner mode homme ou femme: un bouton poussoir et une LED RVB qui change de couleur en fonction du mode sélectionné (orange: aucun mode, bleu: homme, rose: femme)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|Affichage de 300 coefficients. Une 50aine est utile]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Implémentation d'un filtre à réponse impulsionnelle finie (RIF).&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour l'instant je filtre les fréquences entre 250 et 350Hz (fréquences de la caisse claire environ). &lt;br /&gt;
&amp;lt;li/&amp;gt;Pour cela, je regarde chez moi sur le logiciel de calcul scilab les coefficients d'un tel filtre :&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li/&amp;gt;Filtre passe bande,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure haute : 350Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure basse : 250Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Échantillonnage à 2000Hz (ça devrait suffire), sur 8 bits.&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Quand je trace la caractéristique d'un tel filtre pour un grand nombre de coefficients, je vois qu'il me faut une cinquantaine de coefficients pour avoir un filtre correct. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je peux donc en séance projet implémenter mon code avec 50 coefficients.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choix de l'algorithme : &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Le problème du filtrage temps réel se pose : je ne peux pas stocker en mémoire tout le morceau puis envoyer un signal à chaque fois que je détecte un beat par re-lecture. Il faut les détecter en temps réel.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je vais donc faire la conversion d'un temps très court de musique pour pouvoir le stocker en mémoire vive (je stocke 50 échantillons).&lt;br /&gt;
&amp;lt;li/&amp;gt;Puis je filtre ces 50 échantillons. (Note : pour cela j'ai besoin des 50 échantillons précédents; les 50 premières valeurs en sortie de filtre ne seront donc pas bonnes).&lt;br /&gt;
&amp;lt;li/&amp;gt;Je recommence avec 50 nouveaux échantillons, ad infinitum.&lt;br /&gt;
&amp;lt;li/&amp;gt;Étant donné que la fréquence de l'horloge est de 50MHz et que les beats arrivent au maximum toutes les demies secondes, l'algorithme devrait être assez rapide. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Neuvième Séance (24/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Câblages et test de code Lilypad.&lt;br /&gt;
Problème rencontré: les puces zigbee semblent ne pas communiquer ensemble à cause d'un changement de canal de transmission: à vérifier à la prochaine séance. &lt;br /&gt;
&lt;br /&gt;
Prochaine séance: câblage des éléments Lilypad.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Je continue les tests sur le filtrage. J'essaie de localiser des endroits précis de musique où il y a des basses, qui devraient apparaître en sortie de filtre.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Dixième Séance (28/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème des puces zigbee résolu: cela venait bien d'un changement de canal de transmission. On a donc changé les paramètres grâce au logiciel X-CTU.&lt;br /&gt;
Amélioration du code&lt;br /&gt;
Câblage du Lilypad reporté à des séances ultérieures&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre ressemblent bien à des signaux mais ceux-ci restent tous du même ordre de grandeur.&amp;lt;br/&amp;gt;&lt;br /&gt;
Soit ils sont tous trop grand et mon filtre ne filtre rien, soit il sont tous faible et je ne détecte aucune basse. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui joue la sortie du filtre (on sait jamais, des fois qu'on puisse discerner une basse parmi le bruit), mais le résultat n'est pas satisfaisant.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je remet en question la bande passante de mon filtre, elle est peut être trop large et trop haute en fréquence.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Onzième Séance (31/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|150 coefficients pour coller au gabarit du filtre]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de changer mes coefficients pour qu'ils correspondent à un nouveau type de filtre :&lt;br /&gt;
   &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li/&amp;gt;Filtre passe bande toujours&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure haute 80Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure basse 50Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;Même échantillonnage à 2000Hz sur 8 bits&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Il me faut cette fois ci 150 échantillons environ.&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour déterminer ces nouveaux coefficients ne me suis aidé du logiciel audacity qui me permet de faire entre autre une alanyse spectrale de mon signal : sur un morceau de musique donné (celui que je test, avec des battements de grosse caisse évidents et réguliers), je remarque un pic (en puissance (dB)) à 75Hz.&lt;br /&gt;
&amp;lt;/ul&lt;br /&gt;
&amp;gt;Résultat :&lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre me laissent toujours perplexe : &lt;br /&gt;
&amp;lt;li/&amp;gt;Visiblement le filtrage fonctionne puisque d'une part plus mon signal est fort (donc plus de puissance), plus je reçois de puissance en moyenne en sortie de filtre, et d'autre part, les données en sortie de filtre sont plus faibles sur des morceaux sans basses (testé avec un caprice de Paganini au violon - fréquences variant autour de la corde de ''la''  à 440Hz) que sur des morceaux saturés de basses (double pédale sur du métal).&lt;br /&gt;
&amp;lt;li/&amp;gt;Mais sur mon morceau test avec ses basses claires et régulières, je ne vois pas de changement particulier lors de l'arrivée d'une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Douzième Séance (4/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations : ce problème était du au fait qu'après incrémentation de la variable nbStep jusqu'à 6, on la réinitialisait à 0 au lieu de 1. le switch de notre code ne proposant aucune action pour un nbStep=1 on passait la boucle sans rien faire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de ré-examiner mes valeurs reçues dès l'enregistrement audio.&lt;br /&gt;
&amp;lt;li/&amp;gt;En faisant plus attention aux valeurs de bruit que j'obtenais (valeurs supérieures à 190), je remarque qu'en fait ce sont des nombres négatifs complémentés à 2, envoyés par le CAN. En effet, plus le signal est puissant en entrée, plus la sortie du CAN varie autour de zéro et plus les valeurs hautes s'éloignent de 255. Ces valeurs hautes sont donc bien des valeurs négatives.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui me renvoie ces données sur des entiers non signés.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Treizième Séance (5/04/2011) -- 4h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il y avait une problème au niveau du changement de mode sur la platine Arduino: lorsque qu'on changeait de mode en plein milieu d'un cycle de vibration le cycle suivant ne faisait que trois vibrations puis s'arrêtait et recommençait quelques minutes après. Après divers tests, j'ai remarqué que ce problème apparaissait à cause d'une instruction delay() pour les pas 3-et-4 puis 5-et-6. Pour bien respecter les temps entre deux beats il fallait inclure la vibration pour le temps &amp;quot;et&amp;quot; qui n'est pas sur un beat marqué, de façon à ne pas râter les beats suivants (les beats 4 et 6). Or le délai que je calculais entre la fin d'activation des vibreurs pour les beats 3 et 5 et l'activation des vibreurs pour les temps &amp;quot;et&amp;quot; était parfois négatif. Le calcul que j'effectuais était le suivant: &lt;br /&gt;
&lt;br /&gt;
attente entre 3 et &amp;quot;et&amp;quot;=((delta/2) - pause).&lt;br /&gt;
[[Fichier:cycle_de_vibration.jpg|300px|thumb|right|cycle de vibration des vibreurs]]&lt;br /&gt;
Pour une raison qui m'est encore inconnue, lors d'un changement de mode, quelque soit le sens du changement (mode femme --&amp;gt; mode homme, mode homme --&amp;gt; mode femme), le temps delta/2 était inférieur à mon temps de pause (delta est calculé à partir d'une mesure de t1 et t2 les temps relevés grâce à la fonction millis() lors des beats 1 et 2). La fonction delay() que j'utilisais prenait donc un argument entier signé négatif transformé en entier non signé (la fonction delay() prend un unsigned long en paramètre) ce qui donnait des chiffres incohérents (par exemple au lieu d'avoir un délai de 200ms j'avais un délai de 10000ms voire beaucoup plus) j'ai donc changé ma gestion des activations et désactivations des vibreurs en partant du principe qu'une pause est toujours égale à delta/4. Le temps &amp;quot;et&amp;quot; se trouvant à delta/2 il suffisait d'attendre à nouveau delta/4 pour activer les vibreurs pour les temps &amp;quot;et&amp;quot;. Grâce à cette technique le système s'adapte à n'importe quel tempo (initialement j'avais créé des temps de pauses particuliers pour des rythmes de 60bpm et 120bpm) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Illustration_wiki.jpg|300px|thumb|right|changement de l'échelle pour l'échantillonage]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Suite à la modification des entiers reçus en sortie du CAN, je n'ai plus ces valeurs excessivement hautes. Le signal en sortie devient du CAN devient beaucoup plus propre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Problème : maintenant lorsque je n'envoie rien, la valeur de mon signal en sortie du CAN est de 128 (le milieu entre 0 et 255). Pour ne pas que cela perturbe mes mesures ulétrieures (bien que en théorie cela ne devrait pas perturber le filtrage), je change ma fonction qui me renvoie un entier non signé pour qu'elle me renvoie cette fois-ci des entiers signés (mais cohérents : de -128 à 127, et pas de 0 à 127 puis 128 à 255 pour les entiers négatifs).&lt;br /&gt;
&amp;lt;li/&amp;gt;Poursuite des tests. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatorzième Séance (7/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Schéma_cablage_coach_danse.png|600px|center|Schéma de câblage des éléments Lilypad]]&lt;br /&gt;
&lt;br /&gt;
début de couture des éléments Lilypad sur le t-shirt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Filtre.jpg|300px|thumb|right|Apparition d'une basse au début ?]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'imprime sur le tableur d'open office les valeurs de mon signal filtré. Je fais quelques graphes avec plusieurs musiques différentes (avec basse, sans basses, plus fort, moins fort, ...). Les résultats semblent cohérents et j'ai même un graphe prometteur qui me renvoie une puissance de sortie 100 fois supérieure à la moyenne pour un temps assez court, ce qui me laisse penser que ça pourrait être une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quinzième Séance (11/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Réalisation de nouveaux tests. Le filtrage semble fonctionner (les valeurs retournées lorsqu'il n'y a pas de basses sont presque nulles, et augmentent lorsqu'il y en a - pour un volume sonore donné). Mais il reste très difficile de détecter les basses en soi lorsqu'elles arrivent&lt;br /&gt;
&amp;lt;li/&amp;gt;Mise en place de l'envoi d'un signal +5V ainsi que l'affichage des leds lors de la détection d'une basse. Reste à détecter la basse en question.... &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Seizième Séance (12/04/2011) -- 4h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Poursuite des tests, toujours dans le but de déterminer une basse de manière explicite...&lt;br /&gt;
&amp;lt;li/&amp;gt;J'encode les informations binaires sur 32 bits au lieu de 8bits, mais cela n'apporte pas plus de résultats. Même la qualité lecture par la nanoboard n'en est pas grandement affectée.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je pense déterminer le principal problème : le temps de filtrage (calcul de 150 valeurs qui nécessitent chacune 150 multiplications =&amp;gt; au moins 22500 opérations) est trop long par rapport au temps de lecture, peut être que trop d'informations sont perdues entre deux filtrages&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Séances Bonus &amp;lt;/u&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je change mon code, certaines valeurs n'étaient pas effacées après traitement, ce qui faussait le résultat après plusieurs secondes de filtrage. &lt;br /&gt;
&amp;lt;li/&amp;gt;Redéfinition du filtre : J'agrandi un peu la bande passante de 40 à 75Hz. J'ai à présent 100 coefficients.&lt;br /&gt;
&amp;lt;li/&amp;gt;J'envisage le multi thread  en espérant accélérer le processus de filtrage (les multiplications). Mais j'abandonne vite l'idée : dans tous les cas de figure j'aurai des ressources partagées entre les deux threads, et comme les deux threads ne peuvent accéder à la ressource en même temps, l'un attendra toujours pendant que l'autre s'exécute.&lt;br /&gt;
&amp;lt;li/&amp;gt;Une autre solution est de monter la fréquence d'horloge. Mais cette méthode ne fonctionne pas non plus, la nanoboard n'est pas en mesure d'établir de route assez courte dans le fpga pour permettre une fréquence plus rapide. D'après le rapport d'Altium Designer établi après le 'place and route' et la génération du bit file dans le fpga, il est sûr de fonctionner correctement à une fréquence maximale de 40MHz. Je test en descendant la fréquence d'horloge à 40Mhz des fois que mes données soient corrompues à 50Mhz mais je n'obtiens pas de changements. Je reste donc à 50Mhz. &lt;br /&gt;
&amp;lt;li/&amp;gt;Un problème qui peut intervenir aussi, mais qui n'est pas majeur, est un mauvais échantillonnage qui entrainerait des fausses données à basses fréquences, après l'échantillonnage : j'échantillonne à 2000Hz, ce qui est suffisant pour les basses fréquences. Mais pour les plus hautes fréquences, l'échantillonnage ne veut plus rien dire (pour une fréquence à 10kHz, on échantillonnerait une période sur 5). Cela peut en plus créer des faibles basses fréquences, qui n'en sont pas à la base (aliasing).&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour résoudre le problème d'aliasing, il faudrait échantillonner à au moins 44kHz, mais avec cela on augmenterai ne nombre de coefficients, donc le temps de calcul, et en plus on échantillonnerait moins de temps de musique à la fois. Je ne peux pas me le permettre vu que le calcul est déjà long avec les paramètres actuels &lt;br /&gt;
&amp;lt;li/&amp;gt;L'idéal serait de mettre au point une accélération matérielle pour les multiplications, ce qui augmenterait considérablement le temps de calcul pour le filtrage (bien que cela baisse probablement la fréquence d'horloge du processeur). L'accélération matérielle consiste à sous traiter certaines opération du processeur par le fpga même, qui peut lui les effectuer en parallèle. Malheureusement j'ai eu connaissance de cette option assez tard et je n'ai pas réussi à la mettre correctement au point sur la nanoboard. Cela m'aurait permis en plus d'augmenter ma fréquence d'échantillonnage pour limiter au maximum le phénomène d'aliasing.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Fichier:Signal.png|400px|thumb|right|signal filtré]]&lt;br /&gt;
Au final j'arrive à détecter des beats, mais il reste deux points noirs :&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Tous ne s'affichent pas, quelques uns ne doivent pas être enregistrés du fait du temps de filtrage&lt;br /&gt;
&amp;lt;li/&amp;gt;Ceux qui arrivent à s'afficher le font avec quelques dixièmes de seconde de latence.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Sch%C3%A9ma_cablage_coach_danse.png&amp;diff=792</id>
		<title>Fichier:Schéma cablage coach danse.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Sch%C3%A9ma_cablage_coach_danse.png&amp;diff=792"/>
				<updated>2011-05-04T22:08:34Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=675</id>
		<title>Coach Dance</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=675"/>
				<updated>2011-04-17T20:25:47Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Treizième Séance (5/04/2011) -- 4h */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:salsa.jpg|right|thumb]]&lt;br /&gt;
= Présentation =&lt;br /&gt;
L'apprentissage de la danse peut poser certains problèmes aux débutants. Un des problèmes majeurs rencontré concerne la synchronisation des mouvements sur le rythme de la musique. De nombreux débutants n'entendent pas le rythme soit parce qu'ils ne connaissent pas bien le type de musique (e.g. salsa) soit parce que la coordination des mouvements (bras et jambes) leur demandent de gros efforts cognitifs.&lt;br /&gt;
&lt;br /&gt;
L'objectif du projet consiste à aider les danseurs débutants en donnant les indications de rythme et de mouvement. Pour cela, vous devez développer un système portable (type wearable computer) qui devra :&lt;br /&gt;
&lt;br /&gt;
* détecter de manière automatique le rythme de la musique. Dans un premier temps, nous ciblerons deux danses, la salsa et le rock 6 temps. Le type de danse sera indiqué au système afin de &amp;quot;simplifier&amp;quot; la reconnaissance&lt;br /&gt;
* en fonction du rythme et de la danse, activer un des vibreurs qui seront disposé sur le danseur. Dans un premier temps, un vibreur sera installé sur chacun des mollets afin d'indiquer quel est le pied à bouger. Si le temps le permet, il sera possible d'étendre le système au mouvement des bras ou à d'autres danses.&lt;br /&gt;
&lt;br /&gt;
= Préparation du projet =&lt;br /&gt;
&lt;br /&gt;
== Matériel ==&lt;br /&gt;
&lt;br /&gt;
* 1 arduino lilypad (disponible) ;&lt;br /&gt;
* 4 vibreurs (à commander) ;&lt;br /&gt;
* 1 micro portable (à commander) [http://www.selectronic.fr/article.asp?article_ref_entier=11.1142-9999];&lt;br /&gt;
* -&amp;gt; un cable jack par micro pour la connection à une plateforme Altium (disponibilité ?)&lt;br /&gt;
* pour la connection Altium/Zigbee : puce Zigbee/cable(adaptateur usb)&lt;br /&gt;
* Des morceaux de musique Salsa et Rock (à commander...XD);&lt;br /&gt;
&lt;br /&gt;
== Danses ==&lt;br /&gt;
&lt;br /&gt;
Les deux danses visées dans un premier temps sont la salsa (style cubain, http://fr.wikipedia.org/wiki/Salsa) et le rock 6 temps (http://fr.wikipedia.org/wiki/Rock_%C3%A0_six_temps).&lt;br /&gt;
Le système devra permettre de sélectionner la danse et le sexe de la personne (les pas de la fille sont inversés par rapport à ceux du garçon)&lt;br /&gt;
&lt;br /&gt;
= Avancement du projet =&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Première Séance (28/02/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
Nous avons trouvé un lien pour un montage de détection des beats par minute (d'une basse) dans une chanson. Ce montage devra sûrement être adapté pour la salsa car le rythme est repéré par le claquement des claves de fréquence plus hautes que les basses.&lt;br /&gt;
&lt;br /&gt;
;lien pour du montage de détection bpm: http://www.sonelec-musique.com/electronique_realisations_compteur_tempo_001.html&lt;br /&gt;
&lt;br /&gt;
idée à développer: filtre numérique passe bande à tester sur 2 sons wav différents... (fft sur un fichier wav avec matlab puis calcul du filtre)&lt;br /&gt;
&lt;br /&gt;
;lien pour le câblage d'un micro : http://www.sonelec-musique.com/electronique_bases_alim_micro_electret.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF8000;&amp;quot;&amp;gt;&amp;lt;big&amp;gt;'''Etapes prévues:'''&amp;lt;/big&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Test de la méthode de détection des beats par minute : Nous voulons trouver une façon de faire le traitement numérique avec le microcontrôleur du LilyPad (ATmega328V) pour éviter d'avoir à concevoir un circuit imprimé en parallèle avec un montage à amplificateur opérationnel.&lt;br /&gt;
;Phase de développement : Après avoir trouvé la méthode finale de détection des beats par minute nous devrons concevoir un programme permettant de traiter ces informations et surtout adaptable à plusieurs sortes de musique&lt;br /&gt;
;Partie pratique: Conception du vêtement intelligent&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Deuxième Séance (3/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Test de traitement FFT avec Matlab d'un fichier wav a résulté à un échec. Test avec un programme développé par un étudiant de Supelec a échoué également. Nous nous sommes donc décidé à effectuer un traitement avec une plateforme Altium et utilisation de arduino / lilypad pour la communication zigbee et la gestion des vibreurs.&lt;br /&gt;
&lt;br /&gt;
les micros dont nous avons besoin sont disponibles il nous manquera juste des composants type résistance condensateur etc...&lt;br /&gt;
&lt;br /&gt;
Prochaine séance:&lt;br /&gt;
Essai avec la plateforme Altium (Maxime)&lt;br /&gt;
recherche d'info sur Zigbee (Catherine)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Troisieme Séance (3/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Test sur la plateforme Altium : &amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li/&amp;gt;Mise en place du programme Altium : conception du schematic (indique quels composants de la nanoboard utiliser) et d'un code C simple.&lt;br /&gt;
  &amp;lt;li/&amp;gt;Un micro est connecté sur la plateforme Altium. On a essayé de récupérer le signal numérisé, pour pouvoir ensuite le traiter. Les résultats obtenus ne sont pas satisfaisants.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatrième Séance (7/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Pour communiquer via Zigbee il suffit de &lt;br /&gt;
:-pluger une plateforme zigbee sur arduino : cette manoeuvre permet d'utiliser zigbee comme un port série en la branchant en usb sur un pc&lt;br /&gt;
:-brancher une autre puce zigbee avec un câble miniusb-usb sur un autre port usb du pc&lt;br /&gt;
&lt;br /&gt;
On peut ensuite faire communiquer les puces entre elles en faisant des read() et write() sur les descripteurs de fichiers associés (test non encore effectué à faire à la prochaine séance)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je comprends comment faire pour enregistrer, notamment l'utilitée et le fonctionnement de la fonction get_audio() d'Altium. Celle-ci enregistre dans un buffer d'entiers les valeurs en sortie du CAN d'Altium. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je m'aide d'un programme exemple fourni avec le soft Altium Designer&lt;br /&gt;
&amp;lt;li/&amp;gt;Probleme : les valeurs retournées par l'enregistrement ne sont pas satisfaisantes.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Cinquième Séance (10/03/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programme arduino et zigbee.c développés et fonctionnnent. A la prochaine séance il faudra voir comment on peut envoyer le numéro du vibreur à actionner et le traitement qui sera fait par lilypad en fonction du numéro reçu par la puce zigbee sur le t-shirt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Identification du problème sur les valeurs retournées par l'enregistrement : l'enregistrement est réalisé sur 8 bit, mais le stockage est fait dans un int (integer) donc sur 4 octets (32 bits). Quand on cast les entiers enregistrés, les valeurs retournées sont plus probables. Il y a cependant des valeurs de 'bruit' ou en tout cas abérentes supérieures à 200. (les valeurs sont codées de 0 à 255)&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide d'utiliser directement l'exemple d'Altium et de le modifier pour mon projet&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Sixième Séance (14/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Méthode retenue pour l'envoi du numéro de vibreur: branchement de 4 pins de l'arduino sur la platine et la platine altium envoi un signal état haut pour l'activation d'un des 4 vibreurs (pin 1 à l'état haut : activation du vibreur 1, idem pour les 3 autres vibreurs), une fois le numéro de pin reçu on l'envoi via la puce Xbee présente sur arduino.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
Je travaille toujours sur la récupération des données que je recois sur le micro.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Septième Séance (17/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il va falloir brancher la puce Xbee réceptrice sur le Lilypad (câble mini-USB vers connectique Lilypad commandé). il faut d'abord faire les tests sur plateforme Arduino (câblage de Lilypad avec du fil à coudre fastidieux et long à modifier). &lt;br /&gt;
&lt;br /&gt;
Début de la programmation de commande des vibreurs: &lt;br /&gt;
Les rythmes du rock 6 temps sont les suivants: 1,2, 3 et 4,5 et 6. pour le garçon cela revient à faire gauche(1), droite (2),gauche(3)-droite(et)-gauche(4), droite(5)-gauche(et)-droite(6). Idem pour la fille mais en miroir. &lt;br /&gt;
On remarque qu'entre les temps 3 et 4, puis 5 et 6, il y a un demi-temps à marquer qui n'est pas indiqué par un beat. Il faut donc déterminer le temps qui sépare 2 beats et prévoir une vibration supplémentaire pour le demi-temps &amp;quot;et&amp;quot;. &lt;br /&gt;
La fonction millis() sous Arduino permet d'obtenir le temps qui s'est écoulé depuis le lancement du programme en millisecondes. Pour obtenir le demi-temps il suffit de stocker le temps lors du pas 1 et lors du pas 2 puis de diviser la différence par 2 pour obtenir la durée d'un demi-temps. Sachant que l'on actionne le vibreur pendant un certain temps il faudra déduire ce temps du demi-temps pour actionner le vibreur suivant.&lt;br /&gt;
&lt;br /&gt;
NB: trouver une solution pour sélectionner le mode femme ou le mode homme (platine Lilypad interrupteur? http://www.lextronic.eu/doc/produit/img1_18685.jpg)&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;strong&amp;gt;plateforme Altium : &amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'arrive à recevoir les données audio du micro et à les faire jouer par la nanoboard. Le résultat est plutôt satisfaisant, on discerne assez bien ce que l'on envoie sur le micro, bien que la qualité de retour soit médiocre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Dorénavant je travaillerais en insérant directement par câble Jack les données audio sur l'entrée casque de la nanoboard, pour limiter le bruit au maximum. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Huitième Séance (21/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fin de la programmation du code à implanter dans le Lilypad&lt;br /&gt;
idée trouvée pour sélectionner mode homme ou femme: un bouton poussoir et une LED RVB qui change de couleur en fonction du mode sélectionné (orange: aucun mode, bleu: homme, rose: femme)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|Affichage de 300 coefficients. Une 50aine est utile]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Implémentation d'un filtre à réponse impulsionnelle finie (RIF).&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour l'instant je filtre les fréquences entre 250 et 350Hz (fréquences de la caisse claire environ). &lt;br /&gt;
&amp;lt;li/&amp;gt;Pour cela, je regarde chez moi sur le logiciel de calcul scilab les coefficients d'un tel filtre :&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li/&amp;gt;Filtre passe bande,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure haute : 350Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure basse : 250Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Échantillonnage à 2000Hz (ça devrait suffire), sur 8 bits.&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Quand je trace la caractéristique d'un tel filtre pour un grand nombre de coefficients, je vois qu'il me faut une cinquantaine de coefficients pour avoir un filtre correct. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je peux donc en séance projet implémenter mon code avec 50 coefficients.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choix de l'algorithme : &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Le problème du filtrage temps réel se pose : je ne peux pas stocker en mémoire tout le morceau puis envoyer un signal à chaque fois que je détecte un beat par re-lecture. Il faut les détecter en temps réel.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je vais donc faire la conversion d'un temps très court de musique pour pouvoir le stocker en mémoire vive (je stocke 50 échantillons).&lt;br /&gt;
&amp;lt;li/&amp;gt;Puis je filtre ces 50 échantillons. (Note : pour cela j'ai besoin des 50 échantillons précédents; les 50 premières valeurs en sortie de filtre ne seront donc pas bonnes).&lt;br /&gt;
&amp;lt;li/&amp;gt;Je recommence avec 50 nouveaux échantillons, ad infinitum.&lt;br /&gt;
&amp;lt;li/&amp;gt;Étant donné que la fréquence de l'horloge est de 50MHz et que les beats arrivent au maximum toutes les demies secondes, l'algorithme devrait être assez rapide. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Neuvième Séance (24/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Câblages et test de code Lilypad.&lt;br /&gt;
Problème rencontré: les puces zigbee semblent ne pas communiquer ensemble à cause d'un changement de canal de transmission: à vérifier à la prochaine séance. &lt;br /&gt;
&lt;br /&gt;
Prochaine séance: câblage des éléments Lilypad.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Je continue les tests sur le filtrage. J'essaie de localiser des endroits précis de musique où il y a des basses, qui devraient apparaître en sortie de filtre.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Dixième Séance (28/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème des puces zigbee résolu: cela venait bien d'un changement de canal de transmission. On a donc changé les paramètres grâce au logiciel X-CTU.&lt;br /&gt;
Amélioration du code&lt;br /&gt;
Câblage du Lilypad reporté à des séances ultérieures&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre ressemblent bien à des signaux mais ceux-ci restent tous du même ordre de grandeur.&amp;lt;br/&amp;gt;&lt;br /&gt;
Soit ils sont tous trop grand et mon filtre ne filtre rien, soit il sont tous faible et je ne détecte aucune basse. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui joue la sortie du filtre (on sait jamais, des fois qu'on puisse discerner une basse parmi le bruit), mais le résultat n'est pas satisfaisant.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je remet en question la bande passante de mon filtre, elle est peut être trop large et trop haute en fréquence.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Onzième Séance (31/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|150 coefficients pour coller au gabarit du filtre]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de changer mes coefficients pour qu'ils correspondent à un nouveau type de filtre :&lt;br /&gt;
   &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li/&amp;gt;Filtre passe bande toujours&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure haute 80Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure basse 50Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;Même échantillonnage à 2000Hz sur 8 bits&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Il me faut cette fois ci 150 échantillons environ.&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour déterminer ces nouveaux coefficients ne me suis aidé du logiciel audacity qui me permet de faire entre autre une alanyse spectrale de mon signal : sur un morceau de musique donné (celui que je test, avec des battements de grosse caisse évidents et réguliers), je remarque un pic (en puissance (dB)) à 75Hz.&lt;br /&gt;
&amp;lt;/ul&lt;br /&gt;
&amp;gt;Résultat :&lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre me laissent toujours perplexe : &lt;br /&gt;
&amp;lt;li/&amp;gt;Visiblement le filtrage fonctionne puisque d'une part plus mon signal est fort (donc plus de puissance), plus je reçois de puissance en moyenne en sortie de filtre, et d'autre part, les données en sortie de filtre sont plus faibles sur des morceaux sans basses (testé avec un caprice de Paganini au violon - fréquences variant autour de la corde de ''la''  à 440Hz) que sur des morceaux saturés de basses (double pédale sur du métal).&lt;br /&gt;
&amp;lt;li/&amp;gt;Mais sur mon morceau test avec ses basses claires et régulières, je ne vois pas de changement particulier lors de l'arrivée d'une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Douzième Séance (4/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations : ce problème était du au fait qu'après incrémentation de la variable nbStep jusqu'à 6, on la réinitialisait à 0 au lieu de 1. le switch de notre code ne proposant aucune action pour un nbStep=1 on passait la boucle sans rien faire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de ré-examiner mes valeurs reçues dès l'enregistrement audio.&lt;br /&gt;
&amp;lt;li/&amp;gt;En faisant plus attention aux valeurs de bruit que j'obtenais (valeurs supérieures à 190), je remarque qu'en fait ce sont des nombres négatifs complémentés à 2, envoyés par le CAN. En effet, plus le signal est puissant en entrée, plus la sortie du CAN varie autour de zéro et plus les valeurs hautes s'éloignent de 255. Ces valeurs hautes sont donc bien des valeurs négatives.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui me renvoie ces données sur des entiers non signés.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Treizième Séance (5/04/2011) -- 4h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il y avait une problème au niveau du changement de mode sur la platine Arduino: lorsque qu'on changeait de mode en plein milieu d'un cycle de vibration le cycle suivant ne faisait que trois vibrations puis s'arrêtait et recommençait quelques minutes après. Après divers tests, j'ai remarqué que ce problème apparaissait à cause d'une instruction delay() pour les pas 3-et-4 puis 5-et-6. Pour bien respecter les temps entre deux beats il fallait inclure la vibration pour le temps &amp;quot;et&amp;quot; qui n'est pas sur un beat marqué, de façon à ne pas râter les beats suivants (les beats 4 et 6). Or le délai que je calculais entre la fin d'activation des vibreurs pour les beats 3 et 5 et l'activation des vibreurs pour les temps &amp;quot;et&amp;quot; était parfois négatif. Le calcul que j'effectuais était le suivant: &lt;br /&gt;
&lt;br /&gt;
attente entre 3 et &amp;quot;et&amp;quot;=((delta/2) - pause).&lt;br /&gt;
[[Fichier:cycle_de_vibration.jpg|300px|thumb|right|cycle de vibration des vibreurs]]&lt;br /&gt;
Pour une raison qui m'est encore inconnue, lors d'un changement de mode, quelque soit le sens du changement (mode femme --&amp;gt; mode homme, mode homme --&amp;gt; mode femme), le temps delta/2 était inférieur à mon temps de pause (delta est calculé à partir d'une mesure de t1 et t2 les temps relevés grâce à la fonction millis() lors des beats 1 et 2). La fonction delay() que j'utilisais prenait donc un argument entier signé négatif transformé en entier non signé (la fonction delay() prend un unsigned long en paramètre) ce qui donnait des chiffres incohérents (par exemple au lieu d'avoir un délai de 200ms j'avais un délai de 10000ms voire beaucoup plus) j'ai donc changé ma gestion des activations et désactivations des vibreurs en partant du principe qu'une pause est toujours égale à delta/4. Le temps &amp;quot;et&amp;quot; se trouvant à delta/2 il suffisait d'attendre à nouveau delta/4 pour activer les vibreurs pour les temps &amp;quot;et&amp;quot;. Grâce à cette technique le système s'adapte à n'importe quel tempo (initialement j'avais créé des temps de pauses particuliers pour des rythmes de 60bpm et 120bpm) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Illustration_wiki.jpg|300px|thumb|right|changement de l'échelle pour l'échantillonage]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Suite à la modification des entiers reçus en sortie du CAN, je n'ai plus ces valeurs excessivement hautes. Le signal en sortie devient du CAN devient beaucoup plus propre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Problème : maintenant lorsque je n'envoie rien, la valeur de mon signal en sortie du CAN est de 128 (le milieu entre 0 et 255). Pour ne pas que cela perturbe mes mesures ulétrieures (bien que en théorie cela ne devrait pas perturber le filtrage), je change ma fonction qui me renvoie un entier non signé pour qu'elle me renvoie cette fois-ci des entiers signés (mais cohérents : de -128 à 127, et pas de 0 à 127 puis 128 à 255 pour les entiers négatifs).&lt;br /&gt;
&amp;lt;li/&amp;gt;Poursuite des tests. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatorzième Séance (7/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
début de couture des éléments Lilypad sur le t-shirt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Filtre.jpg|300px|thumb|right|Apparition d'une basse au début ?]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'imprime sur le tableur d'open office les valeurs de mon signal filtré. Je fais quelques graphes avec plusieurs musiques différentes (avec basse, sans basses, plus fort, moins fort, ...). Les résultats semblent cohérents et j'ai même un graphe prometteur qui me renvoie une puissance de sortie 100 fois supérieure à la moyenne pour un temps assez court, ce qui me laisse penser que ça pourrait être une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quinzième Séance (11/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Réalisation de nouveaux tests. Le filtrage semble fonctionner (les valeurs retournées lorsqu'il n'y a pas de basses sont presque nulles, et augmentent lorsqu'il y en a - pour un volume sonore donné). Mais il reste très difficile de détecter les basses en soi lorsqu'elles arrivent&lt;br /&gt;
&amp;lt;li/&amp;gt;Mise en place de l'envoi d'un signal +5V ainsi que l'affichage des leds lors de la détection d'une basse. Reste à détecter la basse en question.... &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Seizième Séance (12/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Cycle_de_vibration.jpg&amp;diff=674</id>
		<title>Fichier:Cycle de vibration.jpg</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Cycle_de_vibration.jpg&amp;diff=674"/>
				<updated>2011-04-17T20:19:17Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=673</id>
		<title>Coach Dance</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=673"/>
				<updated>2011-04-17T20:18:08Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Avancement du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:salsa.jpg|right|thumb]]&lt;br /&gt;
= Présentation =&lt;br /&gt;
L'apprentissage de la danse peut poser certains problèmes aux débutants. Un des problèmes majeurs rencontré concerne la synchronisation des mouvements sur le rythme de la musique. De nombreux débutants n'entendent pas le rythme soit parce qu'ils ne connaissent pas bien le type de musique (e.g. salsa) soit parce que la coordination des mouvements (bras et jambes) leur demandent de gros efforts cognitifs.&lt;br /&gt;
&lt;br /&gt;
L'objectif du projet consiste à aider les danseurs débutants en donnant les indications de rythme et de mouvement. Pour cela, vous devez développer un système portable (type wearable computer) qui devra :&lt;br /&gt;
&lt;br /&gt;
* détecter de manière automatique le rythme de la musique. Dans un premier temps, nous ciblerons deux danses, la salsa et le rock 6 temps. Le type de danse sera indiqué au système afin de &amp;quot;simplifier&amp;quot; la reconnaissance&lt;br /&gt;
* en fonction du rythme et de la danse, activer un des vibreurs qui seront disposé sur le danseur. Dans un premier temps, un vibreur sera installé sur chacun des mollets afin d'indiquer quel est le pied à bouger. Si le temps le permet, il sera possible d'étendre le système au mouvement des bras ou à d'autres danses.&lt;br /&gt;
&lt;br /&gt;
= Préparation du projet =&lt;br /&gt;
&lt;br /&gt;
== Matériel ==&lt;br /&gt;
&lt;br /&gt;
* 1 arduino lilypad (disponible) ;&lt;br /&gt;
* 4 vibreurs (à commander) ;&lt;br /&gt;
* 1 micro portable (à commander) [http://www.selectronic.fr/article.asp?article_ref_entier=11.1142-9999];&lt;br /&gt;
* -&amp;gt; un cable jack par micro pour la connection à une plateforme Altium (disponibilité ?)&lt;br /&gt;
* pour la connection Altium/Zigbee : puce Zigbee/cable(adaptateur usb)&lt;br /&gt;
* Des morceaux de musique Salsa et Rock (à commander...XD);&lt;br /&gt;
&lt;br /&gt;
== Danses ==&lt;br /&gt;
&lt;br /&gt;
Les deux danses visées dans un premier temps sont la salsa (style cubain, http://fr.wikipedia.org/wiki/Salsa) et le rock 6 temps (http://fr.wikipedia.org/wiki/Rock_%C3%A0_six_temps).&lt;br /&gt;
Le système devra permettre de sélectionner la danse et le sexe de la personne (les pas de la fille sont inversés par rapport à ceux du garçon)&lt;br /&gt;
&lt;br /&gt;
= Avancement du projet =&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Première Séance (28/02/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
Nous avons trouvé un lien pour un montage de détection des beats par minute (d'une basse) dans une chanson. Ce montage devra sûrement être adapté pour la salsa car le rythme est repéré par le claquement des claves de fréquence plus hautes que les basses.&lt;br /&gt;
&lt;br /&gt;
;lien pour du montage de détection bpm: http://www.sonelec-musique.com/electronique_realisations_compteur_tempo_001.html&lt;br /&gt;
&lt;br /&gt;
idée à développer: filtre numérique passe bande à tester sur 2 sons wav différents... (fft sur un fichier wav avec matlab puis calcul du filtre)&lt;br /&gt;
&lt;br /&gt;
;lien pour le câblage d'un micro : http://www.sonelec-musique.com/electronique_bases_alim_micro_electret.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF8000;&amp;quot;&amp;gt;&amp;lt;big&amp;gt;'''Etapes prévues:'''&amp;lt;/big&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Test de la méthode de détection des beats par minute : Nous voulons trouver une façon de faire le traitement numérique avec le microcontrôleur du LilyPad (ATmega328V) pour éviter d'avoir à concevoir un circuit imprimé en parallèle avec un montage à amplificateur opérationnel.&lt;br /&gt;
;Phase de développement : Après avoir trouvé la méthode finale de détection des beats par minute nous devrons concevoir un programme permettant de traiter ces informations et surtout adaptable à plusieurs sortes de musique&lt;br /&gt;
;Partie pratique: Conception du vêtement intelligent&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Deuxième Séance (3/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Test de traitement FFT avec Matlab d'un fichier wav a résulté à un échec. Test avec un programme développé par un étudiant de Supelec a échoué également. Nous nous sommes donc décidé à effectuer un traitement avec une plateforme Altium et utilisation de arduino / lilypad pour la communication zigbee et la gestion des vibreurs.&lt;br /&gt;
&lt;br /&gt;
les micros dont nous avons besoin sont disponibles il nous manquera juste des composants type résistance condensateur etc...&lt;br /&gt;
&lt;br /&gt;
Prochaine séance:&lt;br /&gt;
Essai avec la plateforme Altium (Maxime)&lt;br /&gt;
recherche d'info sur Zigbee (Catherine)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Troisieme Séance (3/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Test sur la plateforme Altium : &amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li/&amp;gt;Mise en place du programme Altium : conception du schematic (indique quels composants de la nanoboard utiliser) et d'un code C simple.&lt;br /&gt;
  &amp;lt;li/&amp;gt;Un micro est connecté sur la plateforme Altium. On a essayé de récupérer le signal numérisé, pour pouvoir ensuite le traiter. Les résultats obtenus ne sont pas satisfaisants.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatrième Séance (7/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Pour communiquer via Zigbee il suffit de &lt;br /&gt;
:-pluger une plateforme zigbee sur arduino : cette manoeuvre permet d'utiliser zigbee comme un port série en la branchant en usb sur un pc&lt;br /&gt;
:-brancher une autre puce zigbee avec un câble miniusb-usb sur un autre port usb du pc&lt;br /&gt;
&lt;br /&gt;
On peut ensuite faire communiquer les puces entre elles en faisant des read() et write() sur les descripteurs de fichiers associés (test non encore effectué à faire à la prochaine séance)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je comprends comment faire pour enregistrer, notamment l'utilitée et le fonctionnement de la fonction get_audio() d'Altium. Celle-ci enregistre dans un buffer d'entiers les valeurs en sortie du CAN d'Altium. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je m'aide d'un programme exemple fourni avec le soft Altium Designer&lt;br /&gt;
&amp;lt;li/&amp;gt;Probleme : les valeurs retournées par l'enregistrement ne sont pas satisfaisantes.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Cinquième Séance (10/03/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programme arduino et zigbee.c développés et fonctionnnent. A la prochaine séance il faudra voir comment on peut envoyer le numéro du vibreur à actionner et le traitement qui sera fait par lilypad en fonction du numéro reçu par la puce zigbee sur le t-shirt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Identification du problème sur les valeurs retournées par l'enregistrement : l'enregistrement est réalisé sur 8 bit, mais le stockage est fait dans un int (integer) donc sur 4 octets (32 bits). Quand on cast les entiers enregistrés, les valeurs retournées sont plus probables. Il y a cependant des valeurs de 'bruit' ou en tout cas abérentes supérieures à 200. (les valeurs sont codées de 0 à 255)&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide d'utiliser directement l'exemple d'Altium et de le modifier pour mon projet&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Sixième Séance (14/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Méthode retenue pour l'envoi du numéro de vibreur: branchement de 4 pins de l'arduino sur la platine et la platine altium envoi un signal état haut pour l'activation d'un des 4 vibreurs (pin 1 à l'état haut : activation du vibreur 1, idem pour les 3 autres vibreurs), une fois le numéro de pin reçu on l'envoi via la puce Xbee présente sur arduino.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
Je travaille toujours sur la récupération des données que je recois sur le micro.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Septième Séance (17/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il va falloir brancher la puce Xbee réceptrice sur le Lilypad (câble mini-USB vers connectique Lilypad commandé). il faut d'abord faire les tests sur plateforme Arduino (câblage de Lilypad avec du fil à coudre fastidieux et long à modifier). &lt;br /&gt;
&lt;br /&gt;
Début de la programmation de commande des vibreurs: &lt;br /&gt;
Les rythmes du rock 6 temps sont les suivants: 1,2, 3 et 4,5 et 6. pour le garçon cela revient à faire gauche(1), droite (2),gauche(3)-droite(et)-gauche(4), droite(5)-gauche(et)-droite(6). Idem pour la fille mais en miroir. &lt;br /&gt;
On remarque qu'entre les temps 3 et 4, puis 5 et 6, il y a un demi-temps à marquer qui n'est pas indiqué par un beat. Il faut donc déterminer le temps qui sépare 2 beats et prévoir une vibration supplémentaire pour le demi-temps &amp;quot;et&amp;quot;. &lt;br /&gt;
La fonction millis() sous Arduino permet d'obtenir le temps qui s'est écoulé depuis le lancement du programme en millisecondes. Pour obtenir le demi-temps il suffit de stocker le temps lors du pas 1 et lors du pas 2 puis de diviser la différence par 2 pour obtenir la durée d'un demi-temps. Sachant que l'on actionne le vibreur pendant un certain temps il faudra déduire ce temps du demi-temps pour actionner le vibreur suivant.&lt;br /&gt;
&lt;br /&gt;
NB: trouver une solution pour sélectionner le mode femme ou le mode homme (platine Lilypad interrupteur? http://www.lextronic.eu/doc/produit/img1_18685.jpg)&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;strong&amp;gt;plateforme Altium : &amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'arrive à recevoir les données audio du micro et à les faire jouer par la nanoboard. Le résultat est plutôt satisfaisant, on discerne assez bien ce que l'on envoie sur le micro, bien que la qualité de retour soit médiocre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Dorénavant je travaillerais en insérant directement par câble Jack les données audio sur l'entrée casque de la nanoboard, pour limiter le bruit au maximum. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Huitième Séance (21/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fin de la programmation du code à implanter dans le Lilypad&lt;br /&gt;
idée trouvée pour sélectionner mode homme ou femme: un bouton poussoir et une LED RVB qui change de couleur en fonction du mode sélectionné (orange: aucun mode, bleu: homme, rose: femme)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|Affichage de 300 coefficients. Une 50aine est utile]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Implémentation d'un filtre à réponse impulsionnelle finie (RIF).&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour l'instant je filtre les fréquences entre 250 et 350Hz (fréquences de la caisse claire environ). &lt;br /&gt;
&amp;lt;li/&amp;gt;Pour cela, je regarde chez moi sur le logiciel de calcul scilab les coefficients d'un tel filtre :&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li/&amp;gt;Filtre passe bande,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure haute : 350Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure basse : 250Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Échantillonnage à 2000Hz (ça devrait suffire), sur 8 bits.&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Quand je trace la caractéristique d'un tel filtre pour un grand nombre de coefficients, je vois qu'il me faut une cinquantaine de coefficients pour avoir un filtre correct. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je peux donc en séance projet implémenter mon code avec 50 coefficients.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choix de l'algorithme : &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Le problème du filtrage temps réel se pose : je ne peux pas stocker en mémoire tout le morceau puis envoyer un signal à chaque fois que je détecte un beat par re-lecture. Il faut les détecter en temps réel.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je vais donc faire la conversion d'un temps très court de musique pour pouvoir le stocker en mémoire vive (je stocke 50 échantillons).&lt;br /&gt;
&amp;lt;li/&amp;gt;Puis je filtre ces 50 échantillons. (Note : pour cela j'ai besoin des 50 échantillons précédents; les 50 premières valeurs en sortie de filtre ne seront donc pas bonnes).&lt;br /&gt;
&amp;lt;li/&amp;gt;Je recommence avec 50 nouveaux échantillons, ad infinitum.&lt;br /&gt;
&amp;lt;li/&amp;gt;Étant donné que la fréquence de l'horloge est de 50MHz et que les beats arrivent au maximum toutes les demies secondes, l'algorithme devrait être assez rapide. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Neuvième Séance (24/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Câblages et test de code Lilypad.&lt;br /&gt;
Problème rencontré: les puces zigbee semblent ne pas communiquer ensemble à cause d'un changement de canal de transmission: à vérifier à la prochaine séance. &lt;br /&gt;
&lt;br /&gt;
Prochaine séance: câblage des éléments Lilypad.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Je continue les tests sur le filtrage. J'essaie de localiser des endroits précis de musique où il y a des basses, qui devraient apparaître en sortie de filtre.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Dixième Séance (28/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème des puces zigbee résolu: cela venait bien d'un changement de canal de transmission. On a donc changé les paramètres grâce au logiciel X-CTU.&lt;br /&gt;
Amélioration du code&lt;br /&gt;
Câblage du Lilypad reporté à des séances ultérieures&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre ressemblent bien à des signaux mais ceux-ci restent tous du même ordre de grandeur.&amp;lt;br/&amp;gt;&lt;br /&gt;
Soit ils sont tous trop grand et mon filtre ne filtre rien, soit il sont tous faible et je ne détecte aucune basse. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui joue la sortie du filtre (on sait jamais, des fois qu'on puisse discerner une basse parmi le bruit), mais le résultat n'est pas satisfaisant.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je remet en question la bande passante de mon filtre, elle est peut être trop large et trop haute en fréquence.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Onzième Séance (31/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|150 coefficients pour coller au gabarit du filtre]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de changer mes coefficients pour qu'ils correspondent à un nouveau type de filtre :&lt;br /&gt;
   &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li/&amp;gt;Filtre passe bande toujours&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure haute 80Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure basse 50Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;Même échantillonnage à 2000Hz sur 8 bits&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Il me faut cette fois ci 150 échantillons environ.&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour déterminer ces nouveaux coefficients ne me suis aidé du logiciel audacity qui me permet de faire entre autre une alanyse spectrale de mon signal : sur un morceau de musique donné (celui que je test, avec des battements de grosse caisse évidents et réguliers), je remarque un pic (en puissance (dB)) à 75Hz.&lt;br /&gt;
&amp;lt;/ul&lt;br /&gt;
&amp;gt;Résultat :&lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre me laissent toujours perplexe : &lt;br /&gt;
&amp;lt;li/&amp;gt;Visiblement le filtrage fonctionne puisque d'une part plus mon signal est fort (donc plus de puissance), plus je reçois de puissance en moyenne en sortie de filtre, et d'autre part, les données en sortie de filtre sont plus faibles sur des morceaux sans basses (testé avec un caprice de Paganini au violon - fréquences variant autour de la corde de ''la''  à 440Hz) que sur des morceaux saturés de basses (double pédale sur du métal).&lt;br /&gt;
&amp;lt;li/&amp;gt;Mais sur mon morceau test avec ses basses claires et régulières, je ne vois pas de changement particulier lors de l'arrivée d'une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Douzième Séance (4/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations : ce problème était du au fait qu'après incrémentation de la variable nbStep jusqu'à 6, on la réinitialisait à 0 au lieu de 1. le switch de notre code ne proposant aucune action pour un nbStep=1 on passait la boucle sans rien faire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de ré-examiner mes valeurs reçues dès l'enregistrement audio.&lt;br /&gt;
&amp;lt;li/&amp;gt;En faisant plus attention aux valeurs de bruit que j'obtenais (valeurs supérieures à 190), je remarque qu'en fait ce sont des nombres négatifs complémentés à 2, envoyés par le CAN. En effet, plus le signal est puissant en entrée, plus la sortie du CAN varie autour de zéro et plus les valeurs hautes s'éloignent de 255. Ces valeurs hautes sont donc bien des valeurs négatives.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui me renvoie ces données sur des entiers non signés.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Treizième Séance (5/04/2011) -- 4h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il y avait une problème au niveau du changement de mode sur la platine Arduino: lorsque qu'on changeait de mode en plein milieu d'un cycle de vibration le cycle suivant ne faisait que trois vibrations puis s'arrêtait et recommençait quelques minutes après. Après divers tests, j'ai remarqué que ce problème apparaissait à cause d'une instruction delay() pour les pas 3-et-4 puis 5-et-6. Pour bien respecter les temps entre deux beats il fallait inclure la vibration pour le temps &amp;quot;et&amp;quot; qui n'est pas sur un beat marqué, de façon à ne pas râter les beats suivants (les beats 4 et 6). Or le délai que je calculais entre la fin d'activation des vibreurs pour les beats 3 et 5 et l'activation des vibreurs pour les temps &amp;quot;et&amp;quot; était parfois négatif. Le calcul que j'effectuais était le suivant: &lt;br /&gt;
&lt;br /&gt;
attente entre 3 et &amp;quot;et&amp;quot;=((delta/2) - pause).&lt;br /&gt;
&lt;br /&gt;
Pour une raison qui m'est encore inconnue, lors d'un changement de mode, quelque soit le sens du changement (mode femme --&amp;gt; mode homme, mode homme --&amp;gt; mode femme), le temps delta/2 était inférieur à mon temps de pause (delta est calculé à partir d'une mesure de t1 et t2 les temps relevés grâce à la fonction millis() lors des beats 1 et 2). La fonction delay() que j'utilisais prenait donc un argument entier signé négatif transformé en entier non signé (la fonction delay() prend un unsigned long en paramètre) ce qui donnait des chiffres incohérents (par exemple au lieu d'avoir un délai de 200ms j'avais un délai de 10000ms voire beaucoup plus) j'ai donc changé ma gestion des activations et désactivations des vibreurs en partant du principe qu'une pause est toujours égale à delta/4. Le temps &amp;quot;et&amp;quot; se trouvant à delta/2 il suffisait d'attendre à nouveau delta/4 pour activer les vibreurs pour les temps &amp;quot;et&amp;quot;. Grâce à cette technique le système s'adapte à n'importe quel tempo (initialement j'avais créé des temps de pauses particuliers pour des rythmes de 60bpm et 120bpm) .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Illustration_wiki.jpg|300px|thumb|right|changement de l'échelle pour l'échantillonage]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Suite à la modification des entiers reçus en sortie du CAN, je n'ai plus ces valeurs excessivement hautes. Le signal en sortie devient du CAN devient beaucoup plus propre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Problème : maintenant lorsque je n'envoie rien, la valeur de mon signal en sortie du CAN est de 128 (le milieu entre 0 et 255). Pour ne pas que cela perturbe mes mesures ulétrieures (bien que en théorie cela ne devrait pas perturber le filtrage), je change ma fonction qui me renvoie un entier non signé pour qu'elle me renvoie cette fois-ci des entiers signés (mais cohérents : de -128 à 127, et pas de 0 à 127 puis 128 à 255 pour les entiers négatifs).&lt;br /&gt;
&amp;lt;li/&amp;gt;Poursuite des tests. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatorzième Séance (7/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Arduino&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
début de couture des éléments Lilypad sur le t-shirt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Filtre.jpg|300px|thumb|right|Apparition d'une basse au début ?]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'imprime sur le tableur d'open office les valeurs de mon signal filtré. Je fais quelques graphes avec plusieurs musiques différentes (avec basse, sans basses, plus fort, moins fort, ...). Les résultats semblent cohérents et j'ai même un graphe prometteur qui me renvoie une puissance de sortie 100 fois supérieure à la moyenne pour un temps assez court, ce qui me laisse penser que ça pourrait être une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quinzième Séance (11/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Réalisation de nouveaux tests. Le filtrage semble fonctionner (les valeurs retournées lorsqu'il n'y a pas de basses sont presque nulles, et augmentent lorsqu'il y en a - pour un volume sonore donné). Mais il reste très difficile de détecter les basses en soi lorsqu'elles arrivent&lt;br /&gt;
&amp;lt;li/&amp;gt;Mise en place de l'envoi d'un signal +5V ainsi que l'affichage des leds lors de la détection d'une basse. Reste à détecter la basse en question.... &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Seizième Séance (12/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=672</id>
		<title>Coach Dance</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Coach_Dance&amp;diff=672"/>
				<updated>2011-04-17T20:09:03Z</updated>
		
		<summary type="html">&lt;p&gt;Cdesravi : /* Treizième Séance (5/04/2011) -- 4h */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:salsa.jpg|right|thumb]]&lt;br /&gt;
= Présentation =&lt;br /&gt;
L'apprentissage de la danse peut poser certains problèmes aux débutants. Un des problèmes majeurs rencontré concerne la synchronisation des mouvements sur le rythme de la musique. De nombreux débutants n'entendent pas le rythme soit parce qu'ils ne connaissent pas bien le type de musique (e.g. salsa) soit parce que la coordination des mouvements (bras et jambes) leur demandent de gros efforts cognitifs.&lt;br /&gt;
&lt;br /&gt;
L'objectif du projet consiste à aider les danseurs débutants en donnant les indications de rythme et de mouvement. Pour cela, vous devez développer un système portable (type wearable computer) qui devra :&lt;br /&gt;
&lt;br /&gt;
* détecter de manière automatique le rythme de la musique. Dans un premier temps, nous ciblerons deux danses, la salsa et le rock 6 temps. Le type de danse sera indiqué au système afin de &amp;quot;simplifier&amp;quot; la reconnaissance&lt;br /&gt;
* en fonction du rythme et de la danse, activer un des vibreurs qui seront disposé sur le danseur. Dans un premier temps, un vibreur sera installé sur chacun des mollets afin d'indiquer quel est le pied à bouger. Si le temps le permet, il sera possible d'étendre le système au mouvement des bras ou à d'autres danses.&lt;br /&gt;
&lt;br /&gt;
= Préparation du projet =&lt;br /&gt;
&lt;br /&gt;
== Matériel ==&lt;br /&gt;
&lt;br /&gt;
* 1 arduino lilypad (disponible) ;&lt;br /&gt;
* 4 vibreurs (à commander) ;&lt;br /&gt;
* 1 micro portable (à commander) [http://www.selectronic.fr/article.asp?article_ref_entier=11.1142-9999];&lt;br /&gt;
* -&amp;gt; un cable jack par micro pour la connection à une plateforme Altium (disponibilité ?)&lt;br /&gt;
* pour la connection Altium/Zigbee : puce Zigbee/cable(adaptateur usb)&lt;br /&gt;
* Des morceaux de musique Salsa et Rock (à commander...XD);&lt;br /&gt;
&lt;br /&gt;
== Danses ==&lt;br /&gt;
&lt;br /&gt;
Les deux danses visées dans un premier temps sont la salsa (style cubain, http://fr.wikipedia.org/wiki/Salsa) et le rock 6 temps (http://fr.wikipedia.org/wiki/Rock_%C3%A0_six_temps).&lt;br /&gt;
Le système devra permettre de sélectionner la danse et le sexe de la personne (les pas de la fille sont inversés par rapport à ceux du garçon)&lt;br /&gt;
&lt;br /&gt;
= Avancement du projet =&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Première Séance (28/02/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
Nous avons trouvé un lien pour un montage de détection des beats par minute (d'une basse) dans une chanson. Ce montage devra sûrement être adapté pour la salsa car le rythme est repéré par le claquement des claves de fréquence plus hautes que les basses.&lt;br /&gt;
&lt;br /&gt;
;lien pour du montage de détection bpm: http://www.sonelec-musique.com/electronique_realisations_compteur_tempo_001.html&lt;br /&gt;
&lt;br /&gt;
idée à développer: filtre numérique passe bande à tester sur 2 sons wav différents... (fft sur un fichier wav avec matlab puis calcul du filtre)&lt;br /&gt;
&lt;br /&gt;
;lien pour le câblage d'un micro : http://www.sonelec-musique.com/electronique_bases_alim_micro_electret.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF8000;&amp;quot;&amp;gt;&amp;lt;big&amp;gt;'''Etapes prévues:'''&amp;lt;/big&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Test de la méthode de détection des beats par minute : Nous voulons trouver une façon de faire le traitement numérique avec le microcontrôleur du LilyPad (ATmega328V) pour éviter d'avoir à concevoir un circuit imprimé en parallèle avec un montage à amplificateur opérationnel.&lt;br /&gt;
;Phase de développement : Après avoir trouvé la méthode finale de détection des beats par minute nous devrons concevoir un programme permettant de traiter ces informations et surtout adaptable à plusieurs sortes de musique&lt;br /&gt;
;Partie pratique: Conception du vêtement intelligent&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Deuxième Séance (3/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Test de traitement FFT avec Matlab d'un fichier wav a résulté à un échec. Test avec un programme développé par un étudiant de Supelec a échoué également. Nous nous sommes donc décidé à effectuer un traitement avec une plateforme Altium et utilisation de arduino / lilypad pour la communication zigbee et la gestion des vibreurs.&lt;br /&gt;
&lt;br /&gt;
les micros dont nous avons besoin sont disponibles il nous manquera juste des composants type résistance condensateur etc...&lt;br /&gt;
&lt;br /&gt;
Prochaine séance:&lt;br /&gt;
Essai avec la plateforme Altium (Maxime)&lt;br /&gt;
recherche d'info sur Zigbee (Catherine)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Troisieme Séance (3/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&amp;lt;strong&amp;gt;Test sur la plateforme Altium : &amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li/&amp;gt;Mise en place du programme Altium : conception du schematic (indique quels composants de la nanoboard utiliser) et d'un code C simple.&lt;br /&gt;
  &amp;lt;li/&amp;gt;Un micro est connecté sur la plateforme Altium. On a essayé de récupérer le signal numérisé, pour pouvoir ensuite le traiter. Les résultats obtenus ne sont pas satisfaisants.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatrième Séance (7/03/2011)-- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
;Pour communiquer via Zigbee il suffit de &lt;br /&gt;
:-pluger une plateforme zigbee sur arduino : cette manoeuvre permet d'utiliser zigbee comme un port série en la branchant en usb sur un pc&lt;br /&gt;
:-brancher une autre puce zigbee avec un câble miniusb-usb sur un autre port usb du pc&lt;br /&gt;
&lt;br /&gt;
On peut ensuite faire communiquer les puces entre elles en faisant des read() et write() sur les descripteurs de fichiers associés (test non encore effectué à faire à la prochaine séance)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je comprends comment faire pour enregistrer, notamment l'utilitée et le fonctionnement de la fonction get_audio() d'Altium. Celle-ci enregistre dans un buffer d'entiers les valeurs en sortie du CAN d'Altium. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je m'aide d'un programme exemple fourni avec le soft Altium Designer&lt;br /&gt;
&amp;lt;li/&amp;gt;Probleme : les valeurs retournées par l'enregistrement ne sont pas satisfaisantes.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Cinquième Séance (10/03/2011) -- 2h &amp;lt;/u&amp;gt;===&lt;br /&gt;
Programme arduino et zigbee.c développés et fonctionnnent. A la prochaine séance il faudra voir comment on peut envoyer le numéro du vibreur à actionner et le traitement qui sera fait par lilypad en fonction du numéro reçu par la puce zigbee sur le t-shirt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Identification du problème sur les valeurs retournées par l'enregistrement : l'enregistrement est réalisé sur 8 bit, mais le stockage est fait dans un int (integer) donc sur 4 octets (32 bits). Quand on cast les entiers enregistrés, les valeurs retournées sont plus probables. Il y a cependant des valeurs de 'bruit' ou en tout cas abérentes supérieures à 200. (les valeurs sont codées de 0 à 255)&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide d'utiliser directement l'exemple d'Altium et de le modifier pour mon projet&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Sixième Séance (14/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Méthode retenue pour l'envoi du numéro de vibreur: branchement de 4 pins de l'arduino sur la platine et la platine altium envoi un signal état haut pour l'activation d'un des 4 vibreurs (pin 1 à l'état haut : activation du vibreur 1, idem pour les 3 autres vibreurs), une fois le numéro de pin reçu on l'envoi via la puce Xbee présente sur arduino.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
Je travaille toujours sur la récupération des données que je recois sur le micro.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Septième Séance (17/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Il va falloir brancher la puce Xbee réceptrice sur le Lilypad (câble mini-USB vers connectique Lilypad commandé). il faut d'abord faire les tests sur plateforme Arduino (câblage de Lilypad avec du fil à coudre fastidieux et long à modifier). &lt;br /&gt;
&lt;br /&gt;
Début de la programmation de commande des vibreurs: &lt;br /&gt;
Les rythmes du rock 6 temps sont les suivants: 1,2, 3 et 4,5 et 6. pour le garçon cela revient à faire gauche(1), droite (2),gauche(3)-droite(et)-gauche(4), droite(5)-gauche(et)-droite(6). Idem pour la fille mais en miroir. &lt;br /&gt;
On remarque qu'entre les temps 3 et 4, puis 5 et 6, il y a un demi-temps à marquer qui n'est pas indiqué par un beat. Il faut donc déterminer le temps qui sépare 2 beats et prévoir une vibration supplémentaire pour le demi-temps &amp;quot;et&amp;quot;. &lt;br /&gt;
La fonction millis() sous Arduino permet d'obtenir le temps qui s'est écoulé depuis le lancement du programme en millisecondes. Pour obtenir le demi-temps il suffit de stocker le temps lors du pas 1 et lors du pas 2 puis de diviser la différence par 2 pour obtenir la durée d'un demi-temps. Sachant que l'on actionne le vibreur pendant un certain temps il faudra déduire ce temps du demi-temps pour actionner le vibreur suivant.&lt;br /&gt;
&lt;br /&gt;
NB: trouver une solution pour sélectionner le mode femme ou le mode homme (platine Lilypad interrupteur? http://www.lextronic.eu/doc/produit/img1_18685.jpg)&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;strong&amp;gt;plateforme Altium : &amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'arrive à recevoir les données audio du micro et à les faire jouer par la nanoboard. Le résultat est plutôt satisfaisant, on discerne assez bien ce que l'on envoie sur le micro, bien que la qualité de retour soit médiocre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Dorénavant je travaillerais en insérant directement par câble Jack les données audio sur l'entrée casque de la nanoboard, pour limiter le bruit au maximum. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Huitième Séance (21/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Fin de la programmation du code à implanter dans le Lilypad&lt;br /&gt;
idée trouvée pour sélectionner mode homme ou femme: un bouton poussoir et une LED RVB qui change de couleur en fonction du mode sélectionné (orange: aucun mode, bleu: homme, rose: femme)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|Affichage de 300 coefficients. Une 50aine est utile]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Implémentation d'un filtre à réponse impulsionnelle finie (RIF).&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour l'instant je filtre les fréquences entre 250 et 350Hz (fréquences de la caisse claire environ). &lt;br /&gt;
&amp;lt;li/&amp;gt;Pour cela, je regarde chez moi sur le logiciel de calcul scilab les coefficients d'un tel filtre :&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li/&amp;gt;Filtre passe bande,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure haute : 350Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Fréquence de coupure basse : 250Hz,&lt;br /&gt;
    &amp;lt;li/&amp;gt;Échantillonnage à 2000Hz (ça devrait suffire), sur 8 bits.&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Quand je trace la caractéristique d'un tel filtre pour un grand nombre de coefficients, je vois qu'il me faut une cinquantaine de coefficients pour avoir un filtre correct. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je peux donc en séance projet implémenter mon code avec 50 coefficients.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choix de l'algorithme : &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Le problème du filtrage temps réel se pose : je ne peux pas stocker en mémoire tout le morceau puis envoyer un signal à chaque fois que je détecte un beat par re-lecture. Il faut les détecter en temps réel.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je vais donc faire la conversion d'un temps très court de musique pour pouvoir le stocker en mémoire vive (je stocke 50 échantillons).&lt;br /&gt;
&amp;lt;li/&amp;gt;Puis je filtre ces 50 échantillons. (Note : pour cela j'ai besoin des 50 échantillons précédents; les 50 premières valeurs en sortie de filtre ne seront donc pas bonnes).&lt;br /&gt;
&amp;lt;li/&amp;gt;Je recommence avec 50 nouveaux échantillons, ad infinitum.&lt;br /&gt;
&amp;lt;li/&amp;gt;Étant donné que la fréquence de l'horloge est de 50MHz et que les beats arrivent au maximum toutes les demies secondes, l'algorithme devrait être assez rapide. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Neuvième Séance (24/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Câblages et test de code Lilypad.&lt;br /&gt;
Problème rencontré: les puces zigbee semblent ne pas communiquer ensemble à cause d'un changement de canal de transmission: à vérifier à la prochaine séance. &lt;br /&gt;
&lt;br /&gt;
Prochaine séance: câblage Lilypad.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Je continue les tests sur le filtrage. J'essaie de localiser des endroits précis de musique où il y a des basses, qui devraient apparaître en sortie de filtre.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Dixième Séance (28/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Problème des puces zigbee résolu: cela venait bien d'un changement de canal de transmission. On a donc changé les paramètres grâce au logiciel X-CTU.&lt;br /&gt;
Amélioration du code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre ressemblent bien à des signaux mais ceux-ci restent tous du même ordre de grandeur.&amp;lt;br/&amp;gt;&lt;br /&gt;
Soit ils sont tous trop grand et mon filtre ne filtre rien, soit il sont tous faible et je ne détecte aucune basse. &lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui joue la sortie du filtre (on sait jamais, des fois qu'on puisse discerner une basse parmi le bruit), mais le résultat n'est pas satisfaisant.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je remet en question la bande passante de mon filtre, elle est peut être trop large et trop haute en fréquence.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Onzième Séance (31/03/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Coeff.jpg|200px|thumb|right|150 coefficients pour coller au gabarit du filtre]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de changer mes coefficients pour qu'ils correspondent à un nouveau type de filtre :&lt;br /&gt;
   &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li/&amp;gt;Filtre passe bande toujours&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure haute 80Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;fréquence de coupure basse 50Hz&lt;br /&gt;
   &amp;lt;li/&amp;gt;Même échantillonnage à 2000Hz sur 8 bits&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Il me faut cette fois ci 150 échantillons environ.&lt;br /&gt;
&amp;lt;li/&amp;gt;Pour déterminer ces nouveaux coefficients ne me suis aidé du logiciel audacity qui me permet de faire entre autre une alanyse spectrale de mon signal : sur un morceau de musique donné (celui que je test, avec des battements de grosse caisse évidents et réguliers), je remarque un pic (en puissance (dB)) à 75Hz.&lt;br /&gt;
&amp;lt;/ul&lt;br /&gt;
&amp;gt;Résultat :&lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li/&amp;gt;Les données reçues en sortie de filtre me laissent toujours perplexe : &lt;br /&gt;
&amp;lt;li/&amp;gt;Visiblement le filtrage fonctionne puisque d'une part plus mon signal est fort (donc plus de puissance), plus je reçois de puissance en moyenne en sortie de filtre, et d'autre part, les données en sortie de filtre sont plus faibles sur des morceaux sans basses (testé avec un caprice de Paganini au violon - fréquences variant autour de la corde de ''la''  à 440Hz) que sur des morceaux saturés de basses (double pédale sur du métal).&lt;br /&gt;
&amp;lt;li/&amp;gt;Mais sur mon morceau test avec ses basses claires et régulières, je ne vois pas de changement particulier lors de l'arrivée d'une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Douzième Séance (4/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Problème de pause entre chaque cycle de vibrations : ce problème était du au fait qu'après incrémentation de la variable nbStep jusqu'à 6, on la réinitialisait à 0 au lieu de 1. le switch de notre code ne proposant aucune action pour un nbStep=1 on passait la boucle sans rien faire.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt; &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Je décide de ré-examiner mes valeurs reçues dès l'enregistrement audio.&lt;br /&gt;
&amp;lt;li/&amp;gt;En faisant plus attention aux valeurs de bruit que j'obtenais (valeurs supérieures à 190), je remarque qu'en fait ce sont des nombres négatifs complémentés à 2, envoyés par le CAN. En effet, plus le signal est puissant en entrée, plus la sortie du CAN varie autour de zéro et plus les valeurs hautes s'éloignent de 255. Ces valeurs hautes sont donc bien des valeurs négatives.&lt;br /&gt;
&amp;lt;li/&amp;gt;Je met en place une fonction qui me renvoie ces données sur des entiers non signés.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Treizième Séance (5/04/2011) -- 4h&amp;lt;/u&amp;gt;===&lt;br /&gt;
Il y avait une problème au niveau du changement de mode sur la platine Arduino: lorsque qu'on changeait de mode en plein milieu d'un cycle de vibration le cycle suivant ne faisait que trois vibrations puis s'arrêtait et recommençait quelques minutes après. Après divers tests, j'ai remarqué que ce problème apparaissait à cause d'une instruction delay() pour les pas 3-et-4 puis 5-et-6. Pour bien respecter les temps entre deux beats il fallait inclure la vibration pour le temps &amp;quot;et&amp;quot; qui n'est pas sur un beat marqué, de façon à ne pas râter les beats suivants (les beats 4 et 6). Or le délai que je calculais entre la fin d'activation des vibreurs pour les beats 3 et 5 et l'activation des vibreurs pour les temps &amp;quot;et&amp;quot; était parfois négatif. Le calcul que j'effectuais était le suivant: &lt;br /&gt;
&lt;br /&gt;
attente entre 3 et &amp;quot;et&amp;quot;=((delta/2) - pause).&lt;br /&gt;
&lt;br /&gt;
Pour une raison qui m'est encore inconnue lors d'un changement de mode, quelque soit le sens du changement (mode femme --&amp;gt; mode homme, mode homme --&amp;gt; mode femme), le temps delta/2 était inférieur à mon temps de pause. La fonction delay() que j'utilisais prenait donc un argument entier signé négatif transformé en entier non signé (la fonction delay() prend un unsigned long en paramètre) ce qui donnait des chiffres incohérents (par exemple au lieu d'avoir un délai de 200ms j'avais un délai de 10000ms voire beaucoup plus) j'ai donc changé ma gestion des activations et désactivations des vibreurs en partant du principe qu'une pause est toujours égale à delta/4. Le temps &amp;quot;et&amp;quot; se trouvant à delta/2 il suffisait d'attendre à nouveau delta/4 pour activer les vibreurs pour les temps &amp;quot;et&amp;quot;. Grâce à cette technique le système s'adapte à n'importe quel tempo (initialement j'avais créé des temps de pauses particuliers pour des rythmes de 60bpm et 120bpm) .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Illustration_wiki.jpg|300px|thumb|right|changement de l'échelle pour l'échantillonage]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Suite à la modification des entiers reçus en sortie du CAN, je n'ai plus ces valeurs excessivement hautes. Le signal en sortie devient du CAN devient beaucoup plus propre.&lt;br /&gt;
&amp;lt;li/&amp;gt;Problème : maintenant lorsque je n'envoie rien, la valeur de mon signal en sortie du CAN est de 128 (le milieu entre 0 et 255). Pour ne pas que cela perturbe mes mesures ulétrieures (bien que en théorie cela ne devrait pas perturber le filtrage), je change ma fonction qui me renvoie un entier non signé pour qu'elle me renvoie cette fois-ci des entiers signés (mais cohérents : de -128 à 127, et pas de 0 à 127 puis 128 à 255 pour les entiers négatifs).&lt;br /&gt;
&amp;lt;li/&amp;gt;Poursuite des tests. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quatorzième Séance (7/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
[[Fichier:Filtre.jpg|300px|thumb|right|Apparition d'une basse au début ?]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;J'imprime sur le tableur d'open office les valeurs de mon signal filtré. Je fais quelques graphes avec plusieurs musiques différentes (avec basse, sans basses, plus fort, moins fort, ...). Les résultats semblent cohérents et j'ai même un graphe prometteur qui me renvoie une puissance de sortie 100 fois supérieure à la moyenne pour un temps assez court, ce qui me laisse penser que ça pourrait être une basse.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Quinzième Séance (11/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Plateforme Altium :&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li/&amp;gt;Réalisation de nouveaux tests. Le filtrage semble fonctionner (les valeurs retournées lorsqu'il n'y a pas de basses sont presque nulles, et augmentent lorsqu'il y en a - pour un volume sonore donné). Mais il reste très difficile de détecter les basses en soi lorsqu'elles arrivent&lt;br /&gt;
&amp;lt;li/&amp;gt;Mise en place de l'envoi d'un signal +5V ainsi que l'affichage des leds lors de la détection d'une basse. Reste à détecter la basse en question.... &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;u&amp;gt;Seizième Séance (12/04/2011) -- 2h&amp;lt;/u&amp;gt;===&lt;/div&gt;</summary>
		<author><name>Cdesravi</name></author>	</entry>

	</feed>