Vous êtes sur la page 1sur 72

TOUZOULI Adrien

ESTIA 2007

Tutrice : Nadine COUTURE

Rapport de stage ESTIA 2° année:

Projet TactiMod

Mai, juin, juillet 2006


1 Remerciements

Tout d'abord merci à Nadine Couture pour premièrement nous avoir permis de continuer le
projet TactiMod en nous prenant comme stagiaire au LIPSI, ainsi que pour ses conseils et son
attention tout au long de ces trois mois de stage. Merci ensuite à Olivier Arrijuria pour avoir pris
sur son temps pour nous assister dans la conception de la partie électronique et grâce a qui ce
stage a été techniquement enrichissant, et à Octavian Curea pour nous avoir accueilli dans son
atelier et nous avoir aidé dans la réalisation des circuits électriques. Je tiens également à
remercier Olivier Zéphir pour ses conseils sur l'ergonomie et ces idées sur les applications du
projet. Merci à Julien Lantiat et David Estrailler également stagiaire au LIPSI qui nous on aidé à
réaliser le circuit imprimé. Enfin ce stage à été réalisé en parallèle avec le projet GyroMod
effectué par Frédéric Saout, avec qui j’ai collaboré bénéfiquement tout au long de ces trois mois
de stage.

p2/72
2 Sommaire
1 Remerciements....................................................................................................................................... ............2
2 Sommaire................................................................................................................................... .........................3
3 Présentation du Projet................................................................................................................................ .....5
3.1 Présentation du LIPSI..................................................................................................... ........................5
3.2 Nadine Couture................................................................................................................................... .......5
3.3 Le projet TactiMod'.............................................................................................................................. ...6
3.3.1 Contexte........................................................................................................................................ .....6
3.3.2 Projet 2° année ESTIA..................................................................................................... .............8
3.3.3 Le stage...................................................................................................................... .......................9
4 Etude du Projet............................................................................................................................... ..................9
4.1 Rappel du sujet de l’étude....................................................................................................... ................9
4.2 Etude du besoin...................................................................................................................... .................10
4.3 Analyse du problème..................................................................................................... .........................10
4.3.1 Schéma de fonctionnement........................................................................................................ ..10
4.3.2 La géolocalisation................................................................................................... ........................11
4.3.3 Les différentes parties ........................................................................................... ...................13
4.4 Etat de l’art.................................................................................................................................... ..........17
5 Conception de la solution.............................................................................................................. .................19
5.1 Electronique.............................................................................................................................. ................19
5.1.1 Micro Contrôleur.................................................................................................................. ...........19
5.1.2 Circuit électrique.................................................................................................... .......................21
5.2 Logiciels.................................................................................................................................. ..................22
5.2.1 Liés au ToothPIC......................................................................................................................... ...22
5.2.2 Lié au TM.................................................................................................................... ...................24
5.3 Le boîtier......................................................................................................................................... .........24
5.3.1 Fonctions .................................................................................................................. ......................24
5.3.2 Solutions ................................................................................................................... .....................25
5.3.3 Elément à prendre en compte :..................................................................................................25
5.3.4 L’enroulage.......................................................................................................................... ............26
6 Réalisation et résultats.......................................................................................................................... .......26
6.1 Electronique.............................................................................................................................................. 26
6.2 Logiciel..................................................................................................................................... .................30
6.2.1 Module 1 : recevoir les commandes d'un autre terminal......................................................30
6.2.2 Module 2 : activateur de la modalité tactile...........................................................................31
6.3 Boîtier................................................................................................................................... ....................34
6.4 Assemblage final................................................................................................................................. ....35
6.5 Le site Internet.............................................................................................................................. ........36
6.6 Manuels d'utilisateur....................................................................................................................... ......37
7 Gestion du Projet...................................................................................................................................... ......37
7.1 Planning........................................................................................................................................ ..............38
7.2 Aspect financier.................................................................................................................... .................40
7.3 Organisation................................................................................................................... .........................40
8 Conclusion............................................................................................................................................... ...........41
8.1 Rappel des objectifs, résultat....................................................................................................... .......41
8.2 Le cadre................................................................................................................................................. ....41
8.3 Le Prototypage..................................................................................................................................... ....41
8.4 Perspectives........................................................................................................................... ..................41

p3/72
9 Bibliographie.................................................................................................................................. ..................42
10 Annexes................................................................................................................................................... ........42
1 Introduction.................................................................................................................................... .................43
2 Déduire la position de l’antenne réceptrice.............................................................................................43
2.1 le WPS................................................................................................................................... ....................43
2.2 RSS : received signal strength...........................................................................................................43
2.3 TOA/TDOA............................................................................................................................................ ..44
3 Les applications................................................................................................................................ ...............44
3.1 Bibliothèque ............................................................................................................................................ .44
3.2 Hôpital.................................................................................................................................................. .....44
3.3 Sécurité........................................................................................................................................ ............44
4 Différentes sociétés :......................................................................................................................... ..........44
5 Conclusion..................................................................................................................................... ....................45
1 Protocole client/serveur............................................................................................................................ ....46
2 Protocole du niveau électronique................................................................................................................46
1 La norme USB............................................................................................................................................. ......47
1.1 Les mots clés...................................................................................................................... ......................47
1.2 Une transaction USB....................................................................................................................... .......48
1.3 Le Firmware........................................................................................................................................ ......48
1 Utiliser TactiMod'....................................................................................................................... ...................49
1.1 Utilisation normale............................................................................................................. .....................49
1.2 Programmation, communication avec le TactiMod'......................................................................49
2 Utilisation du ToothPIC depuis un ordinateur muni d’une clé Bluetooth PEABIRD........................50
2.1 Installation............................................................................................................................. ..................50
2.2 Implanter un programme dans le microcontrôleur à partir d’un " service pack "...................50
2.3 Création d’un programme................................................................................................................. ......51
2.4 Lancer un programme serveur............................................................................................................51
2.5 Mémoire corrompue........................................................................................................................ ........51
3 Description............................................................................................................................................ ...........55
4 Plans................................................................................................................................................... ................56
4.1 Boitier bas.......................................................................................................................... ......................56
4.2 Boitier haut...................................................................................................................................... ........58
4.3 Poulie.......................................................................................................................................................... 59
4.4 Axe poulie.......................................................................................................................................... .......59
4.5 Bloc Vibrant boitier Bas gauche......................................................................................................... .60
4.6 Rondelle bloquante x2..................................................................................................... ......................60
4.7 Bloc Vibrant boitier haut x2................................................................................................................61
5 Les contraintes............................................................................................................................... .................61
5.1 Le bloc principal................................................................................................................................... ....62
5.2 Les blocs vibrant........................................................................................................... .........................62
5.3 La ceinture.............................................................................................................................. .................63
5.4 Le ressort............................................................................................................................................. ....63
5.5 Matériaux isolant.................................................................................................................................... 63
10.1 Annexe1 : Localisation par Wi-Fi.............................................................................................. ...40
10.2 Annexe2 : Protocoles internes................................................................................................. ....43
10.3 Annexe3 : La norme USB..............................................................................................................44
10.4 Annexe4 : Manuel d'utilisation....................................................................................................46
10.5 Annexe5 : lettre APR2..................................................................................................................49
10.6 Annexe6 : Boîtier................................................................................................................. ...........50
10.6 Annexe7 : Code html du site Internet.......................................................................................60

p4/72
10.6 Annexe8 : Programme de test.....................................................................................................63
10.6 Annexe9 : Article BlueEyes................................................................................................... .......68

3 Présentation du Projet

3.1 Présentation du LIPSI


Le LIPSI est animé par Pascal Weil, Directeur de Recherche CNRS (membre du Labri). Il
accueille et stimule les activités de recherche menées dans l’ESTIA par près de 35 chercheurs,
dont la moitié sont de jeunes doctorants, sur les principales sciences de l’ingénieur qui
constituent l’ossature de la pédagogie de l’Ecole : les processus de Conception ; le Calcul
Mécanique ; l’Automatique ; la Robotique ; la Modélisation et la Simulation des processus
physiques, avec leur représentation visuelle réaliste.
Il s’agit pour eux de proposer des modèles, des méthodes, et des outils informatisés, pour
concevoir, pour décider, et pour entraîner les acteurs opérationnels.
Ces travaux associent d’autres équipes renommées ; pour l’instant de France, d’Espagne, ou de
Grande Bretagne. LIPSI est donc par construction une plateforme de coopération, soutenue par
un réseau d’équipes chevronnées.
Ses activités s’organisent sur 2 axes :
• Axe 1 : Ingénierie de la conception
• Axe 2 : Mécatronique

Penchons nous de plus près sur l'axe qui nous concerne ici, celui dans le cadre duquel s'est
effectué le stage : l'axe ingénierie de la conception. Il comprend plusieurs domaines :
• Transformation des organisations - conduite de projets en coopération.
Application : PDM et PLM (Product Data Management et Product Life Cycle Management) ;
conception collaborative ; support aux clients.
• Ingénierie numérique. Méthodes sans maillage.
Application : calcul de structure avion, calcul de réseaux énergie.
• Conception interactive. Conception intégrée inversée
Application : réduction des cycles de conception de produits, automatisation des choix techniques
en bureau d’études (donc : performance et sécurisation du bureau d’études)
• Interacteurs tangibles tridimensionnels - Visualisation et rendu réaliste
Applications : coupler le réel et le numérique (CAO, environnement de réalité virtuelle) pour les
concepteurs de produits mécaniques.
Application : simulateurs d'entraînement, maquettes industrielles de procédés, démonstrateurs
de grands projets.
N. Couture, JM Cieutat, P. Reuter, docteurs. A. Clay, G. Rivière doctorants. C. Paz, ingénieur
Coopération : Bordeaux 1, Inria, Université Joseph Fourier-Grenoble.
C’est précisément dans cette catégorie d’activité que se situe le projet TactiMod, bien qu’il ne
concerne pas les interacteurs tangible, mais plutôt les modalités d’interaction.

3.2 Nadine Couture


Le LIPSI étant composé d’enseignants chercheurs dans des domaines très variés, il est
nécessaire de s’intéresser plus particulièrement aux activités de notre tutrice Nadine Couture.
Son travail se positionne sur un plan scientifique clairement en Informatique, dans le domaine de
l'Interaction Homme Machine et plus précisément dans celui des Interfaces Utilisateurs

p5/72
Tangibles (TUI, Tangible User Interface). De manière générale, elle contribue à l’élaboration
d’outils d'interaction de type interface tangible. Nous nous plaçons donc dans le paradigme de
l’informatique ubiquitaire ou informatique ambiante : « Utiliser des systèmes informatiques sans
s’en apercevoir ! »
Citons notamment l’élaboration d’une interface tangible ESKUA [6] (acronyme d'Expérimentation
d'un Système Kinésique Utilisable pour l'Assemblage) qui ne remplace pas la souris et le clavier
mais les complète pour certaines activités du concepteur dans son usage des logiciels de CAO
(Conception Assistée par Ordinateur).

3.3 Le projet TactiMod'

3.3.1 Contexte
Nous désirons créer un périphérique augmenté de retours tactiles utilisable par un piéton pour
aller d'un point A à un point B tout en restant concentrer sur une tout autre activité que celle de
"trouver son chemin". L'intérêt de pouvoir guider un piéton pour l'aider à trouver son chemin
alors qu'il consacre une attention minimale à cette tâche, donc sans utiliser de carte, a été
illustré en 2005 par le système onTrack de Warren et al. [1]. Il s'agit ici d'un système musical
qui aide les personnes à naviguer. Elles utilisent un terminal de type iPod et la musique qu'elles
écoutent tourne autour de leur tête pour qu'elles restent sur la bonne voie.
Un domaine d'application pour illustrer l'utilité et l'utilisabilité de TactiMod et de cette
technique d'interaction est la visite d'un grand musée où il n'est pas possible de "tout voir". Le
visiteur choisit donc un parcours d'intérêt à son entrée dans le musée. Pour illustrer cette
situation, pensons au musée du Louvre à Paris (France) où à celui de Guggenheim à Bilbao
(Espagne). L'activité principale du visiteur est de regarder les œuvres d'art tout en suivant son
parcours d'intérêt indiqué en temps utile par le terminal mobile (nous utiliserons TM).
L'interaction tactile est couramment utilisée en tant que flux d'entrée. En revanche, l'utilisation
de retour tactile en tant que flux de sortie, ce qui sera le cas de TactiMod, est encore peut
développée. Les travaux [2] de Lecolinet et al. de 2005 qui ont largement inspiré le travail
présenté ici proposent également des retours tactiles pour "toucher du doigt les données" et
ainsi augmenter la compréhension de l'utilisateur sur les informations qu'il est en tain de
consulter sans surcharger sa vision.

Notre objectif est de proposer un périphérique augmenté qui permette d'assister une personne
pour la guider sur un parcours préalablement défini qu'elle effectue en marchant. Ce piéton,
pourra aller d'un point A à un point B tout en restant concentrer sur une tout autre activité que
celle de "trouver son chemin".
Nous proposons d'expliciter l'intérêt d'un tel système sur un exemple qui s'y prête bien : les
parcours de visite au musée du Louvre. Nous allons prendre un parcours de visite particulier :
L'art d'être à table. Rituel et symbolique du repas (figure 1). Ce parcours de visite, décrit dans
[3], se fait en 9 étapes.

p6/72
Partez à la découverte du
repas et de sa représentation
à travers les collections du
Louvre, de l’Antiquité au
XVIIIe siècle. Bien que de
nature et d’époque
différentes, les œuvres
choisies ont en commun les
notions de convivialité et de
partage qui sont attachées au
repas, […]

fig 1 Un parcours de visite au Louvre (extrait de [3])

L'itinéraire est indiqué au visiteur (muni par ailleurs d'une carte s'il le désire) de la façon
suivante :
Point de départDepuis la pyramide, prenez la direction Sully. Traversez le Louvre médiéval,
puis, face au Sphinx, montez l’escalier à gauche. Allez jusqu’à la salle 3 puis tournez à
droite dans la salle 4.
Etape 1.Revenez sur vos pas, passez à nouveau devant le Sphinx et montez l’escalier en face
de vous. Passez devant la Vénus de Milo et continuez tout droit. Après la salle 5, tournez
à gauche et rendez-vous à l’entrée des collections des Antiquités étrusques.
Etape 2.En sortant de la salle, montez la première volée de l’escalier à gauche. Traversez la
salle B et, à gauche, prenez l’ascenseur L. Au 1er étage, tournez à gauche dans la salle 6.
Etape 3.Retournez sur vos pas, continuez à droite jusqu’à la Victoire de Samothrace. Tournez
à gauche, traversez les salles 34 et 74 pour prendre l’ascenseur C à droite. Au 2e étage,
allez tout droit de la salle 65 à la salle 19, tournez à gauche et continuez jusqu’à la salle
5. Allez à droite jusqu’à la salle 10. Tournez à gauche dans la salle 7 et rejoignez la salle
14.
Etape 4.Retournez sur vos pas jusqu’à la salle 9.
Etape 5.Traversez les salles 7 à 11 et continuez tout droit. Dans la salle 16, tournez à gauche
et rejoignez la salle 29.
Etape 6.Descendez dans la salle 32, traversez la salle 33, tournez à droite et allez jusqu’à la
salle 40.
Etape 7.Regardez sur le mur de droite.
Etape 8.Revenez sur vos pas jusqu’à la salle 38 et regardez sur le mur de droite.
Etape 9.Quittez la salle sur la droite. Traversez les salles 43 à 49. Suivez ensuite les
indications de sortie qui vous mènent à l’ascenseur C de la salle 64.

Suivre un tel parcours n'est pas simple et influence négativement le plaisir que l'on peut avoir à
déambuler au cœur des œuvres d'art présentées. Imaginons maintenant que le visiteur en
arrivant dans le musée indique son parcours de visite. Puis, que le parcours de visite est initialisé
dans un TM. Et enfin que le visiteur n'a plus qu'à s'adonner au plaisir de regarder les œuvres
d'art, sachant qu'il sera alerté au moment d'un changement d'orientation (c'est-à-dire tourner à
droite ou à gauche). Ainsi, le système permet au visiteur de pouvoir rester concentrer sur sa
tache principale et minimise le besoin d'attention du visiteur sur le terminal. C'est ce système
que nous voulons réaliser.
Notons, par ailleurs, que le fait d'utiliser un TM a pour conséquence qu'un tel système est non
invasif, léger et peu encombrant. Ces caractéristiques sont fondamentales pour un usage grand
public. De même le système ne doit pas non plus être invasif, voir dérangeant, pour les autres
visiteurs.

p7/72
Enfin, le TM offre également la possibilité intéressante de pouvoir proposer une multi-modalité
en sortie en couplant le signal d'alerte à une interface graphique présentant la photographie de
l'œuvre à découvrir par exemple.

3.3.2 Projet 2° année ESTIA


Le Projet TactiMod a commencé en tant que projet de seconde année ESTIA. Nous avons alors
réalisé un prototype, première version du TactiMod (fig. 2).

fig 2TactiMod version 1

Réalisé à partir d'une voiture téléguidée, il est composé d'une télécommande et d'un TM factice,
ayant la possibilité de faire vibrer son côté droit ou son côté gauche. Grâce à ce système nous
avons pu faire des expérimentations.
Il est courant de considérer la simplicité et l'aspect intuitif de l'utilisation d'un système au
regard de la connaissance, de l'expérience et du niveau de concentration de l'utilisateur. Notre
cas d'application concernait toutes les personnes venant visiter un musée. Le niveau de
connaissance de TactiMod et le niveau d'expérience de l'utilisateur par rapport à lui doivent
donc être considérés comme nuls. On se doit de considérer comme cas général la première fois
où l'utilisateur se rend dans ce musée. Le niveau de concentration quant à lui doit également être
considéré proche de zéro car, et c'est l'objectif premier de TactiMod, l'utilisateur est
concentré sur sa tache principale qui est de regarder les œuvres d'art. En conclusion, TactiMod
doit être particulièrement simple et intuitif pour répondre au cahier des charges. Fortes de
cette contrainte de conception, nous n'avons pas expliqué aux sujets qui ont participé à
l'expérimentation, l'utilisation du TactiMod. Ils ont du découvrir comment l'utiliser. Ils ont du
imaginer les règles d'interprétation des retours tactiles. On remarquera cependant que dans un
usage en situation réelle, on donnera à l'utilisateur les codes d'interprétation. On évitera ainsi
les hésitations constatées au début de chaque passage. Il était cependant important pour nous
de faire les tests dans le pire des cas. C'est-à-dire le cas où le sujet ne connait pas les modalités
d'interaction avec TactiMod. Soit parce qu'on a oublié de lui donner. Soit parce qu'il n'a pas
compris. Soit parce qu'il n'a pas pris la peine d'écouter.

fig 3A gauche début du parcours en extérieur, à droite entretien de fin de parcours

p8/72
Ces expérimentations nous ont permis de valider l'hypothèse suivante : "Il est possible de diriger
et d'orienter un utilisateur muni d'un périphérique possédant des retours tactiles de type
vibratoire pour le faire allé d'un point A à un point B".
Le nom "TactiMod" est un acronyme de Tactile Mobil Device. Ce nom que nous avons choisi pour
notre système, se veut d'ailleurs dans la logique de ceux présentés dans [2] : TactiBall, TactiPen
et TactiTab.

3.3.3 Le stage
Suite à la validation de l'hypothèse selon laquelle il était possible de diriger une personne grâce à
des retours tactiles, Nadine Couture a décidé de poursuivre le projet afin de pouvoir disposer
d'un périphérique fonctionnel et à l'aspect propre destiné à être présenté à des professionnels.
En effet la version 1 de TactiMod était seulement destinée à réaliser un magicien d'Oz. La
réalisation manquait de finition et était défectueuse au niveau de la localisation des vibrations.
TactiMod, dont la version 1 était un faux terminal mobile, prendra ici l'aspect d'un périphérique
afin de ne pas être intrusif sur un TM.

4 Etude du Projet

4.1 Rappel du sujet de l’étude


A terme TactiMod sera un système qui permettra de diriger et d'orienter l'utilisateur. Pour
parvenir à ce résultat nous devront disposer d'un périphérique de TM ainsi que d'un logiciel
embarqué communicant avec un système de géolocalisation.

Système de géolocalisation :
GPS, Wifi, Bluetooth

Information sur
la position

Commande des
retours

Périphérique à
TM + logiciel retour tactile

Utilisateur mobile

fig 4Schéma du fonctionnement final

Le stage consiste en la réalisation d'un périphérique ayant comme fonctionnalité de pouvoir être
contrôlé par un TM. En effet nous ne connaissons pas encore les applications ultérieures et donc

p9/72
le moyen de géolocalisation. Ceci seront étudiés pendant le stage. Nous portons un intérêt
particulier pour la localisation par Wifi qui fera l'objet d'un dossier : annexe 1.

4.2 Etude du besoin


Le projet est donc de réaliser un périphérique qui peut communiquer avec un TM. Ce périphérique
devra communiquer à l'utilisateur deux informations de base par voie tactile, afin de pouvoir le
diriger sur un parcours.
Après avoir réalisé une petite étude sur les moyens de communications tactile (p15), Nous
reprendrons le moyen d'interaction tactile utilisé dans la version 1 du TactiMod : la plus facile à
mettre en œuvre et la plus efficace : les vibrations. Voici les premières fonctions identifiées :
• FS1 : Pouvoir se fixer sur le PDA en permettant à l’utilisateur de garder la modalité
visuelle.
• FS2 : Pouvoir être utilisable sans accaparer les mains.
• FS3 : Permettre de différentier deux vibrations.
• FS4 : Pouvoir permettre à un logiciel sur TM d'activer et de désactiver les vibrations
• FC1 : Pouvoir être pris dans la main.
• FC2 : Protéger les composants électriques et électroniques.
• FC3 : Avoir un aspect présentable, fini.
Afin de pouvoir réaliser un magicien d'Oz il nous faudra disposer d'un logiciel, au moins sur pc,
nous permettant de tester le fonctionnement de TactiMod.

4.3 Analyse du problème

4.3.1 Schéma de fonctionnement


On veut pouvoir commander deux vibreurs situés sur un périphérique de terminal mobile à partir
d’un autre terminal. Voici les différents éléments à prendre en compte :
• Un terminal disposant d’un programme client
• Un terminal mobile disposant programme serveur
• Un micro contrôleur capable de communiquer avec le programme précédent
• Des interrupteurs (transistors), et des vibreurs
• Un boîtier présentable pour stocker les différents éléments

p10/72
Programme serveur

WIFI

Sortie USB

Programme client

Micro Contrôleur
Boîtier :
Support/physique
Système d’attache

Interrupteur

Alimentation
Vibreurs

fig 5Schéma de fonctionnement

On peut également envisager un magicien d’Oz utilisant un PDA muni d’un périphérique à
gyroscope cf. projet Gyrophérique de Frédéric Saout. Le programme client se situera alors sur
un autre PDA ce qui ne devrait pas poser de problème grâce à la portabilité de java.

4.3.2 La géolocalisation

4.3.2.1 Par GPS

Satellite

Terminal
vibreur vibreur
mobile

fig 6Schéma GPS

Dans ce cas il n’y a qu’un programme à réaliser prenant en compte les informations GPS. Le
problème pour les applications envisagées est la précision. Ceci peut s’arranger avec le DGPS.

p11/72
4.3.2.2 Le DGPS

Satellite

Balise
rectification Terminal
(Calcul de l’erreur) vibreur vibreur
mobile

fig 7Schéma DGPS

Le GPS différentiel. C’est une localisation par GPS. On calcule l’erreur grâce à une balise dont on
connaît la position. Il faudra chercher ou faire un programme pour la balise qui serait un autre
terminal mobile. Calcul de la position exacte, par moyenne de plusieurs mesures successives,
envoie des informations au TactiMod par WIFI par exemple.
Intérêt : le système peut difficilement être plus abouti.

Voici ensuite plus particulièrement les systèmes de localisation « indoor » :

4.3.2.3 Système de localisation par borne active


Ici le module est détecté grâce à des bornes, mais cela ne correspond à aucune norme utilisée
par les terminaux mobiles. La portée est de 20m en intérieur et 100m en extérieur.
http://www.icom-france.com/outrou/fiche.php?id=142

4.3.2.4 Par Wifi


Pour un positionnement au mètre près, il est nécessaire d'établir une triangulation entre
différentes antennes Wifi en analysant la puissance du signal radio reçu par l'appareil recherché.
La société ekahau est spécialisée dans cette utilisation de la technologie Wifi :
http://www.ekahau.com/,
son revendeur en france :
http://www.espace-mobilite.com/geolocalisation_materiel_interieur.asp
Cela nécessite deux logiciels ainsi que deux balises Wifi : tag T201.
Cette technique semble intéressante mais est encore peu utilisée. J'ai appelé (01 70 36 77 73)
pour connaître le prix. Celui-ci est trop élevé pour seulement effectuer des tests et des
démonstrations. Cela ne dispense pas de la création du programme qui activera les vibreurs
l’entrée sera toutefois différente. La localisation par Wifi fait le sujet d'un dossier en annexe 1.

4.3.2.5 Conclusion
On choisira un système « magicien d’Oz » en transmettant les informations à partir d’un terminal.
Un dossier sur la localisation par wifi sera également réaliser pour rendre compte des
possibilités offertes par cette technologie.

p12/72
4.3.3 Les différentes parties
Voici les différentes parties du projet telle qu'elles ont été identifiées au début du stage.
Certaines de ces étapes changerons de dénomination en cours de stage.

fig 8Les différentes étapes du projet

p13/72
4.3.3.1 Programme du PC

Programme client devant communiquer des informations au programme serveur. On prévoit sans
tenir compte des limitations électroniques pouvoir envoyer :
• L’information sur la direction (droite/gauche)
• L’intensité de la vibration
• La durée de la vibration
• Trois alertes différentes (séquence particulière ou droite/gauche simultanément)
Il faut donc définir un protocole interne de communication cf. annexe 2 : protocoles internes.
Pour la programmation on considère les deux terminaux comme faisant partie d’un même réseau :
on ne s’occupe pas des couches plus basses que TCP/IP donc le fait que les informations soient
transmises par Wifi n’influe pas sur le code.

4.3.3.2 Programme PDA

fig 9Etapes du programme PDA

Le programme sera constitué de plusieurs modules :


Un serveur sera en attente sur un port et devra recevoir l’information envoyée puis la décoder.
Celui-ci pourra être réalisé en java grâce à la machine virtuelle des Pocket PC.
En fonction de celle-ci, le second module devra envoyer une commande par USB au micro
Contrôleur, pour fermer ou ouvrir les interrupteurs. La mise en œuvre de cette partie nécessite
une vision précise de la partie hardware. Il faudra faire communiquer le programme java avec le
driver du composant choisi.
On peut également envisager des modules d’activation sonore ou visuelle.

p14/72
Nous avons également pensé étudier le fait de rajouter une modalité tactile qui se traduirait par
un changement de température. Ceci simplement au moyen d’une résistance.
Le problème est que le principal de fournisseur FTDI Chip ne fournit pas de driver pour Pocket
PC. Celui-ci sera donc à réaliser.
De plus il semble que l’API java ne comporte pas de package destiné à utiliser l’USB.
Un autre point délicat est le fait l’USB peut être actif ou passif sur un PDA la prise est passive
afin de la relier à un ordinateur (actif) or le fonctionnement que l’on souhaite en faire correspond
à un mode actif

4.3.3.3 Carte micro Contrôleur

fig 10Etapes de la carte micro contrôleur

Elle fait le lien entre la prise USB du terminal mobile et les interrupteurs du circuit des vibreurs,
ainsi qu’avec un potentiomètre qui commandera l’intensité. Cette carte sera composée d’un micro
contrôleur programmable. Une fonction de ce programme en C :
Prendre en entrée une durée et activer le bit voulu en conséquence.
Une autre fonction sera constituée de séquences correspondant aux alertes. Un point délicat se
situe dans la connectivité du contrôleur et de la sortie USB.

La norme USB : http://grandzebu.net/electronique/usb/usb_resume.htm


Document sur l’USB : http://abcelectronique.com/acquier/USB.html
Fournisseur : http://www.ftdichip.com/Products/FTEvaluationKits.htm
www.dontronics.com

On s’est toutefois aperçu qu’il existait un module BlueTooth qui au moyen d’un soft fournit par le
constructeur pouvait contrôler un micro contrôleur PIC :
Société FlexiPanel : http://www.flexipanel.com/BluetoothModules.htm

p15/72
Les différentes parties ne s'en trouvent pas modifiée, on remplace la trame USB par une trame
Bluetooth. Le fait que ce micro contrôleur possède des programmes tout fait, téléchargeable et
implantable dans le micro contrôleur par bluetooth facilitera la conception du périphérique, en
effet le choix de cette solution a été fortement incité par le fait qu'on pouvait ignorer les
couches trop basses par rapport à nos compétences.

4.3.3.4 Circuit Electrique : Vibreurs alimentation


Les vibreurs sont des moteurs électriques continus faisant tourner un axe muni d'un balourd. Il
sait donc dans cette partie de contrôler l'alimentation de moteurs à partir de deux sorties du
micro contrôleur. Il faudra également pourvoir à l'alimentation des composants.

La perception des vibrations par la main [5]:


Les corpuscules de Pacini sont des récepteurs phasiques, qui ne répondent ni à la vitesse ni à la
durée de la stimulation. Ils sont sensibles uniquement aux variations rapides d'intensité et donc,
à l'accélération de la déformation cutanée. Ils sont localisés dans le tissu adipeux sous-cutané
mais aussi dans les tendons, les articulations, le périoste et les muscles de la face. Ils sont mis
en jeu dans les salles de concert par les basses fréquences et donnent la sensation de "vibrer" à
la musique, d'"entendre par le ventre".

• Un moteur qui tourne à 5000tr/min génère des vibrations de 80Hz. La sensibilité à la


vibration répond à des variations de pression dans une gamme de fréquence de 30 à 1500
Hz. Soit de 1800tr/min à 90000tr/min. La sensibilité de ces récepteurs est optimale
pour des fréquences de vibration cutanée de 300 Hz soit 18000tr/min. Comme nous
n’arriverons pas jusqu’à cette valeur avec les moteurs disponibles sur le marché, nous
considèrerons que plus la fréquence est élevée plus l’utilisateur sera sensible aux
vibrations. On fait varier cette fréquence de vibration en modifiant la vitesse de rotation
qui dépend de la tension appliquée.
• On ne peut pas faire varier l’amplitude des vibrations en agissant sur le plan électrique.
On peut envisager d’actionner un certain nombre de vibreurs ou de modifier la masse du
balourd fixé sur l’axe du moteur.
• Il y a néanmoins une différence de densité de récepteur entre la paume de la main et
l’extrémité des doigts. Des tests nous indiqueraient s’il faut augmenter la fréquence,
l’amplitude ou si cela n’a pas d’importance.

D’après le site internet cité on distingue au moins 5 types de récepteurs cutanés mécaniques. Ce
qui pourrait aboutir sur d’autres modalités de retour tactile, autre que la vibration :

• Les disques de Merkel (superficiels) et les corpuscules de Ruffini (profonds) sont des
récepteurs à adaptation lente, qui codent l'intensité de la stimulation (indentation
cutanée) par la fréquence de leurs potentiels d'action. Ils sont actifs dès le début de la
pression exercée sur le revêtement cutané et ne cessent de l'être qu'à la fin de celle-ci.
Ils codent donc l'intensité et la durée de la pression. Grâce à leur structure (ancrage
mécanique dans le derme), les corpuscules de Ruffini répondent également à des
étirements de la peau. Cette sensibilité à l'étirement est directionnelle, ce qui permet à
ces récepteurs d'informer le système nerveux central sur les forces et les directions
des cisaillements cutanés accompagnant un mouvement articulaire.
• Si l'on incline doucement les poils du dos de la main, sans toucher à la peau elle-même, et
que l'on maintient les poils dans cette nouvelle position, la sensation n'apparaît que
durant le mouvement d'inclinaison des poils. Les récepteurs des follicules pileux sont

p16/72
donc à adaptation relativement rapide et la fréquence des potentiels d'action émis est
proportionnelle à la vitesse d'inclinaison des poils. Les corpuscules de Meissner, localisés
dans la peau glabre, détectent les variations de contact léger des objets avec la peau et
sont sensibles aux vibrations pour des fréquences comprises entre 5 et 200 Hz.
L'adaptation rapide de ces récepteurs, qui en fait des détecteurs de vitesse, explique
que nous ne sentions plus nos vêtements quelques secondes après les avoir mis.
• Nous avons également pensé à la température comme moyen d’interaction.

4.3.3.5 Architecture physique du boîtier

fig 11Etapes du boîtier

Le but est de déterminer le principe de solution et de réaliser les premières esquisses. Il semble
évident que la réalisation d’un périphérique indépendant et simplement relié par un fil au PDA
sera plus facile en raison de l’encombrement. Les différents éléments seront :
• Le boîtier, support de la carte micro Contrôleur, prévoir une sortie USB et une sortie
série pour programmer le micro contrôleur.
• Un support des vibreurs permettant l’isolation des vibrations
• Des surfaces permettant l’application d’un matériau à picots
• Un support démontable pour l’alimentation.
Ces éléments seront conçus en gardant toujours en mémoire les contraintes telles que "tenir
dans la main", "permettre de différentier les vibration", "ne pas dégrader le PDA.. "
On peut toutefois envisager de prévoir un système d’attache au PDA afin de garder la possibilité
d’interaction graphique.

Recherche et choix des différents matériaux


Il faudra rechercher :
Un matériau muni de picots pour améliorer la stimulation de la peau par les vibrations.
Une société réalisant des pièces plastique sur mesure ou des boîtiers tout fait qui conviendraient
à notre application.

4.4 Etat de l’art

• L’AFIL est un dispositif présent sur l’automobile Citroën C4. C’est une alerte de
franchissement involontaire de ligne blanche, jaune ou discontinue. Ce système détecte le
franchissement des lignes sur le sol si le clignotant n’est pas activé. En cas d’oubli ou
d’erreur, le conducteur est averti par le déclenchement d’un vibreur situé dans l’assise du
siège, du côté correspondant au franchissement de la ligne.

p17/72
fig 12Schéma de fonctionnement de l’AFIL

• Department of Computer Science University of British Columbia, Vancouver et Center


for intelligent Machines McGill University, Montréal: "A Role for Haptics in Mobile
Interaction : Initial Design Using a Handheld Tactile Display Prototype" [4]. Cet article
rend compte de la création d’un terminal mobile muni d’un retour tactile ne jouant pas sur
le mode vibratoire. Ceci grâce à la technologie piézoélectrique "skin-stretch",
l'information est communiquée à l'utilisateur en étirant la peau de différentes façon [5].
Grâce à ce système il est possible de diriger une personne comme nous cherchons à le
faire.

fig 13Sénarii des applications initiales. (a) Sélection dans une liste, (b) Déroulement, (c)
Signalement de direction, (d) Retour d'information

www.cim.mcgill.ca/~vleves/homepage/publications/JL-JP-SL-KM-VL-VH-CHI06.pdf

• Y. Bellik en collaboration avec R. Farcy : Le LAC a développé un dispositif laser adapté à


la perception de l'espace pour des personnes aveugles : le Teletact. Celui-ci est composé
d'un télémètre laser servant à la détection des distances aux obstacles et d'une
interface chargée de présenter ces informations à la personne non voyante par la
modalité sonore. Les nouvelles interfaces tactiles développées utilisent des petits
moteurs vibrants localisés sous les doigts de l'utilisateur aveugle. L'information sur la
distance et la hauteur des obstacles est alors codée en fonction du doigt et de la
fréquence de la vibration.
http://www.limsi.fr/RS2002FF/CHM2002FF/AMI2002FF/ami3.html

p18/72
5 Conception de la solution

5.1 Electronique

5.1.1 Micro Contrôleur


Le but de cette partie est d'obtenir la couche physique permettant à un TM de communiquer
avec le périphérique. Les PDA possèdent différents moyens de communiquer avec un
périphérique:
• Par USB
• Par Wifi
• Par Infrarouge
• Par bluetooth
A première vue la solution USB nous est apparue comme la moins coûteuse et la plus facile des
solutions à mettre en œuvre. Nous sommes donc partis sur cette piste, voir annexe 3. Nous nous
sommes rendu compte que la norme USB est complexe et que notre niveau de compétence était
insuffisant pour réaliser toutes les couches. Nous avons alors cherché un produit permettant une
mise en place plus facile. La technologie ToothPIC de FlexiPanel nous est apparue comme idéale.

fig 14ToothPIC
Il s'agit D'une carte micro contrôleur muni d'un micro contrôleur PIC et d'une antenne
Bluetooth.

p19/72
fig 15Pins et dimensions

fig 16 Nom des sorties et description

p20/72
Les Pins CCP peuvent être des sorties PWM (pulse with modulation) ce qui permettra de réaliser
un hacheur série afin de commander les moteurs.

5.1.2 Circuit électrique

Le circuit imprimé aura en entrée deux sorties du ToothPIC et il devra activer ou désactiver les
vibreurs grâce à une alimentation de 9v (accumulateur PP3 : piles carrées).

Nous utiliserons les sorties CCP2 et 3 que l'on peut régler sur PWM output (Pulse with
modulation) Afin de pouvoir réaliser un hacheur série. Nous pourrons ainsi commander la
fréquence des vibrations en réglant le rapport cyclique de la sortie.
Les moteurs doivent être alimentés avec une tension 1,3V, ils consomment alors 100mA. Il faut
mettre une résistance entre la pile et les moteurs vibreurs :
fig 17

R U

9v

100mA
1.3V

fig 18Fig 1000

U=7,7V donc R=77Ω, nous prendrons deux résistances de 150Ω en parallèle.


Afin de protéger le transistor contre les fcem générées par le moteur lorsque l'on coupe le
courant dans un enroulement. Nous avons placerons une diode de roue libre en parallèle du
moteur.

5.1.2.1 L'interrupteur :
Nous utiliserons des transistors MOS car ils sont commandés en tension et qu'il n'y a pas de
courant sur une sortie de microcontrôleur.
On distingue deux types de transistor MOS : Le MOS canal N et le MOS canal P

p21/72
D : Drain
G : Grille
S : Source

La commande se fait en tension : On agit


sur Vgs pour saturer ou bloquer le transistor.
Le courant Ig en entrée est pratiquement nul
(en régime continu).

Mos canal N Mos Canal P


(flèche entrante) (flèche sortante)
fig 19Canaux des transistors MOS

Principe de fonctionnement en commutation du MOS on étudie le cas du transistor Mos canal N :

fig 20Schéma transistor

Pour Vgs = 0 , le transistor est bloqué (interrupteur ouvert) et donc Id = 0


Pour Vgs>0 , le transistor est saturé (interrupteur fermé) et donc Id > 0
Pour un canal P , La saturation se fait pour Vgs<0, nous utiliserons donc un canal N dont la
tension de commande sera inférieure à 5v.

5.2 Logiciels

5.2.1 Liés au ToothPIC


Afin de pouvoir tester le module bluetooth, nous devions disposer d'un terminal pouvant
communiquer par bluetooth. Pour cela nous avons acheté une clé bluetooth PEABIRD. Celle-ci se
branche sur un port USB et permet d'ouvrir une connexion bluetooth. Ceci se fait en créant un
port série virtuel, considéré par les logiciels comme un port série (port COM) normal. La clé est
livrée avec les drivers un logiciel : blueSoleil, qui permet de visualiser les périphériques
disponibles ainsi que leur services. En effet un périphérique bluetooth dispose d'un ou plusieurs
services prédéfinis tels que transfert de donnée, de signal audio… Pour le ToothPIC, il sagit du
service "porte de communication".

p22/72
Plusieurs programmes destinés à faire fonctionner le toothPIC sont disponible sur le site
internet de la société. Voici une description de ceux-ci :
• FlexiPanel Designer : Possède une interface qui permet de facilement créer une interface
graphique à base de boutons et de monitoring pour contrôleur ToothPIC. Il permet
également de programmer celui-ci par BlueTooth.
• Hello World Bitstream firmware solution : C’est un simple tutoriel pour montrer comment
utiliser ToothPIC il échange simplement des caractères.
• MPLAB C’est un logiciel fournit gratuitement par Microchip. C’est un environnement de
développement pour programmer des micro contrôleurs.
• ToothPIC WFT Ce logiciel permet d’implanter des fichiers .hex créés avec MPLAB de
microchip dans notre micro contrôleur. Il permet aussi de créer des services pack : des
fichiers exécutable qui se connecte au périphérique et affiche l’interface graphique.
• Hello World FlexiPanel Firmware Solution : C’est un exemple d’application réalisable avec
Designer le programme comporte un interface qui se charge dans le ToothPIC
• FlexiPanel Client : Permet de se connecter à l’élément contrôlé. Une fois la communication
établie avec le serveur (périphérique) l’interface de commande s’affiche. Cette interface
est réalisée avec FlexiPanel Designer et est contenue dans un fichier .h.

Plusieurs possibilités s'offrent à nous pour programmer le micro controleur du TootPIC.


• Utiliser des logiciels autonomes déjà compilés et fournis par le constructeur
• OpenTooth permet de reconnaître un périphérique bluetooth et d'agir en
conséquence. Cette solution est par exemple utilisée pour déverrouiller une porte
quand l'utilisateur arrive à moins de 10 mètres.
• Happy terminal
• DARC I (Data acquisition and remote control) permet de commander le
périphérique en échangeant de octets grâce à un terminal tel que l'hyper terminal
de windows
• DARC II avec FlexiPanel Service permet de commander ToothPIC grâce à une
interface grafique
• Utiliser ToothPIC Slave et commander toothPIC par un micro controlleur.
• Développer des applications en utilisant la programmation C et MPLAB C18 de Microship.
• Développer des applications en utilisant d’autres systèmes adaptés tels que Hi-Tech ou
CCS

Le module ToothPIC est un produit aux multiples applications qui pourra être utilisé plus tard
pour de tout autres projets. C'est pourquoi nous avons réalisé une synthèse des différentes
étapes et possibilités pour se servir du ToothPIC : annexe 4, chapitre2.
La solution DARC II semblait la plus intéressante et la plus facile à mettre en œuvre. Toutefois
il y avait des problèmes d'affichages des interfaces. A près quelques mail et le renvoie d'un
ToothPIC à Richard Hoptroff, le responsable du service après vente. Nous avons identifié le
problème : c'est le driver de la clé bluetooth qui était défectueux. Nous avons alors emprunté le
PC portable de Jean-Marc Cieutat muni d'une bluetooth, il s'avérait qu'il n'y avait plus de
problème d'affichage. Un second défaut de cette solution est qu'elle n'est pas flexible. En effet
nous allons créer grâce au FlexiPanel Designer et au FlexiPanel WFP un fichier exécutable qui ne
sera plus modifiable, ceci pose un problème car il est impossible d'intégrer la création d'une
socket TCP/IP destinée à recevoir les informations de commande. C'est pourquoi nous
choisissons la solution DARC I, de plus celle-ci ne présente pas defaut de fonctionnement. Nous
pouvons ainsi configurer et commander ToothPIC en écrivant et en lisant des caractères dans le

p23/72
port COM. Ce qui requiert beaucoup moins de connaissance en programmation que de
programmer le micro contrôleur en lui-même.

5.2.2 Lié au TM

fig 21Schéma des modules du programme

Ce programme est destiné à permettre un magicien d’Oz sur le TactiMod’ à partir d’un PC
portable. Il sera réalisé en java afin d'avoir une bonne portabilité. Le programme sur PDA sera
considéré comme serveur : il se mettra en attente de commande sur un port. Il devra pouvoir
être recevoir les informations d'un autre terminal. D'autres modules devront pouvoir se greffer
afin d'activer les différentes modalités.

5.3 Le boîtier

5.3.1 Fonctions
Voici idéalement les fonctions que devra réaliser le boîtier:
• FS1 : Pouvoir se fixer sur le PDA en permettant à l’utilisateur de garder la modalité
visuelle.
• FS2 : Pouvoir être utilisable sans accaparer les mains.
• FS3 : Permettre de différentier les deux vibrations.
• FS4 : permettre à l’utilisateur allumer le ToothPIC

p24/72
• FS5 : permettre à l’utilisateur de voir la LED ToothPIC
• FC1 : Pouvoir être pris dans la main.
• FC2 : Protéger les composants électriques et électroniques.
• FC3 : Avoir un aspect présentable, fini.

5.3.2 Solutions
FS1 : Pouvoir se fixer sur le PDA en permettant à l’utilisateur de garder la modalité visuelle.
Un système de pince (ressort)
Grâce à la déformation plastique d’un crochet
Faire une attache amovible, puis un second système qui permettra de fixer le TactiMod au pda.

FS2 : Pouvoir être utilisable sans accaparer les mains


Il faudrait pouvoir séparer les deux blocs vibrants et les mettre éventuellement dans des poches
de pantalon. On peut également envisager de faire une ceinture et insérer les deux blocs vibrants
dans des poches. D'autres solutions consisteraient à mettre les vibreurs dans des bracelets ou
un collier.
Il faut que les vibrations puissent se transmettre en gardant un minimum de confort.

FS3 : Permettre de différentier les deux vibrations


Il faut différentier les blocs vibrants et les isoler entre eux en utilisant un matériaux adéquat :
mousse, caoutchouc… Nous essayerons également le velcro qui en plus de l'isolement aurait la
faculté de pouvoir rendre les blocs vibrants amovibles à moindre coût.

Nous réaliserons dans un premier temps le prototype en prenant compte le fait que les blocs
vibrants doivent pouvoir se séparer du bloc et nous aviserons ensuite sur le meilleur moyen de
transmettre les vibrations.

5.3.3 Elément à prendre en compte :

5.3.3.1 Bloc central


• Fixer la carte ToothPIC : 3 vis ou par butées
• Compartiment pour l’accumulateur
• Laisser voir le bouton et les LED
• Bobine ressorts pour les fils des blocs vibrants
• Pouvoir s’ouvrir afin d'insérer les différents éléments : le circuit imprimé,
l'accumulateur, l'interrupteur.
• Pouvoir recevoir les blocs vibrants
• S’isoler des vibrations

5.3.3.2 Blocs vibrants


• Pouvoir s'ouvrir pour fixer le vibreur
• Se fixer ou se détacher du bloc central
• Accueillir une surface à picots

Nous démarcherons en priorité la société APR2 qui s’était révélée très efficace au cours du
projet ESKUA.

p25/72
5.3.4 L’enroulage
L’enroulage des fils devra se faire au moyen d’une bobine et d’un ressort de torsion. Nous
comptons 50cm de fils de chaque coté, en prenant une bobine de plus grand diamètre possible :
4,5cm, nous devront faire 3 tours et demi soit ce qui semble raisonnable. Pour se procurer un tel
ressort nous pouvons soit démarcher une entreprise spécialisée soit le récupérer sur un produit
existant : boîtier d’écouteurs. Il faudra également prévoir de bloquer l’extrémité du fil qui part
vers la plaque.
Le système d'enroulement des rallonge USB parait convenir. Toutefois notre système devra
comprendre un contact tournant. Il est en effet impossible de déroulé le fil en gardant un coté
fixe. La difficulté est qu'il y a deux fois deux fils (deux par vibreurs) ce qui fait donc quatre
contacts.

6 Réalisation et résultats

6.1 Electronique
J'ai d'abord réalisé le schéma sous DXP en prenant soin d'utiliser des résistances standard:

fig 22 schéma sous DXP

Nous avons refais le choix des moteurs vibreurs Verdier, les même que pour le TactiMod Version
1. Ces moteurs alimentés avec 1,3 Volt consomment 100mA. A partir d'un accumulateur 9v et des
moteurs vibreurs Verdier et afin de dimensionner les composants, il nous a fallu faire un bilan
énergétique. Ainsi nous aurons au maximum 0,26Watt : 0,13 Watt par Moteur. Durant la
programmation du ToothPIC celui consomme 250mA ce qui fait 1,25Watt mais ceci n'influe pas
sur le reste de circuit.
Nous avons choisi le transistor ZVNL120A, un transistor MOS pour petits signaux dont les
caractéristiques convenaient. L’ESTIA possédait déjà les résistances et les diodes adéquates.
Nous avons donc commandé :
• Une pochette de 5 transistors
• Un accumulateur
• Un connecteur de piles
• Un interrupteur

p26/72
• Une plaque photosensible pour graver le circuit imprimé
Grâce à une plaquette test nous avons pu tester le fonctionnement du circuit ci dessus :

fig 23Plaquette de test

Après avoir validé le circuit nous avons réalisé le circuit imprimé. Le PCB de la plaque a été
modélisé sous dxp. Nous avons du créer une empreinte du ToothPIC grâce au "wizard" de dxp
pour créer des librairies.
Nous avons pris soin de dimensionner les pistes de façon à ce qu'elles soient assez larges pour
laisser passer le courant nécessaire. Nous avons 100mA donc en théorie une largeur de 0,2mm
devrait suffire toutefois nous préférons prendre 0,4mm afin de diminuer les risques de coupure
des pistes. Nous élargissons également les pastilles ce qui facilitera le soudage des composants.
Afin d'éviter les ruptures d'impédance nous évitons les angles à 90°. La datasheet du toothPIC
précisait qu'il ne fallait de circuit sous l'antenne radio.

fig 24 PCB

p27/72
fig 25 PCB 3d

Nous avions prévu de réaliser le circuit imprimé grâce à la fraiseuse numérique possédée par
l'ESTIA. Pour cela nous avons, sous DXP généré un fichier GERBER. Les tâches à accomplir pour
réaliser un circuit imprimé en gravure mécanique sont les suivantes :
Importer un fichier GERBER au travers de PERCIVAL en vue de calculer les contours des pistes
ainsi que les divers perçages.

fig 26fichier Gerber

• Paramétrer la banque d’outils.


• Calculer les contours.
• Exporter vers GALAAD.
• Suppression éventuelle de tracé inutile.
• Fixation du PCB sur la machine
• Prise et enregistrement du point zéro de la carte.
• Lancement de l’usinage.

p28/72
fig 27fraiseuse numérique

A cause de problèmes d'emploie du temps d'Olivier Arrijuria et du fait que l'acquisition de la


fraiseuse est récente et qu'il n'y avait pas dans le bâtiment d'utilisateurs confirmés, nous avons
réalisé les circuits imprimés chimiquement. Nous avons toutefois eu l'occasion d'assister à la fin
du stage à la réalisation d'un circuit imprimé.
Pour réaliser chimiquement un circuit imprimé, nous avons suivi le processus suivant :
• Imprimer le schéma généré par DXP sur du plastique transparent
• Allumer le bac de perchlorure de fer

fig 28Bac de perchlorure de fer

• Couper la plaque aux dimensions adéquates


• Enlever la protection pour faire apparaître le verni photosensible
• Brancher l'insoleuse
• Positionner le transparent à l'envers car les composants seront implantés sur le coté
opposé au circuit
• Ajouter un film plastique

p29/72
• Fermer le couvercle de l'insoleuse allumer la pompe à vide (pour immobiliser la plaque et
l'imprimé) mettre la minuterie sur 1min45 et allumer les néons supérieurs (c'est du
simple face)
• Eteindre la pompe et les néons avant d'ouvrir, sortir la carte
• Immerger la carte dans un bain de soude en agitant (moins d'une minute) puis rincer. La
couleur cuivre doit apparaître
• Mettre la carte dans le bain de perchlorate de fer environ 15 min jusqu'à voir le circuit
et que la plaque soit de la même couleur que le dos.
• Essuyer le couvercle du bac (le perchlorure de fer est un produit très tachant).

Dans l'atelier d' Octavian Curea nous avons pu réaliser les perçages et les soudages nécessaires.
J'ai notamment utilisé un support pour connecter le ToothPIC afin que celui-ci puisse être enlevé
pour servir à réaliser un autre périphérique.

6.2 Logiciel

6.2.1 Module 1 : recevoir les commandes d'un autre terminal


Une source a été récupérée sur Internet : un programme comportant notamment une classe
Network qui permet de se mettre en attente sur un port, d’ouvrir une socket et d’échanger des
données. Ce programme comportait également une interface affichant les caractères tapés par
l’un ou l’autre des utilisateurs.
J’ai modifié l’interface de ce programme pour en obtenir deux :

fig 29Interface du programme

Pour pouvoir le tester, il faut lancer le programme serveur qui se met alors en attente. La
fenêtre ne s’affiche que quand la connexion est établie : après avoir rempli le cadre adresse IP.

Le programme serveur devra également pouvoir communiquer avec le TactiMod mais le problème
du port série est qu'il n'existe pas d'API fonctionnant sur tous les systèmes. Cela fait perdre le

p30/72
caractère multiplateforme de l'application en JAVA. De plus l'API javax.comm qui fonctionne
sous Windows nécessite l'installation d'une dll sur le poste.

6.2.2 Module 2 : activateur de la modalité tactile


Nous ne possédions pas au LIPSI de Pocket pc ou d'un terminal mobile muni de bluetooth dans
lequel implanter un programme. Si c'était le cas il existe des environnements de développement
pour créer des logiciels embarqués : visual basic embedde et c++ embedded. Il sera donc
possible, une fois tout les éléments en place, et le matériel à disposition, de développer le
programme adéquat.
Nous avions tout de même besoin de vérifier le fonctionnement de TactiMod et pour cela, il nous
fallait programmer un logiciel capable de communiquer avec lui. Les connexions bluetooths se font
sur des ports séries virtuels. Afin de réaliser ce programme j'ai utilisé visual basic express cf
annexe 8. Malgré le fait que ce langage ne soit pas aimé des informaticiens en raison de son
instabilité et de sa non portabilité, il est gratuit et très facile à utiliser et ceci notamment quand
au fait de créer une connexion série qui est considérée comme une classe, il suffit ensuite de
modifier les paramètres grâce à ses méthodes.
Le programme a été réalisé en utilisant la solution DARC-I, cf. manuel annexe 4. Pour
programmer il faut considérer le périphérique TactiMod comme branché sur un port série. Les
commandes et la configuration se font en envoyant des octets.
Nous utilisons les méthodes "write" et "read" pour lire et écrire dans le buffer associé au port
série.
Nous utilisons la programmation événementielle. A chaque fois que le programme détecte
l'arrivée d'octets dans le buffer du port série, il les met dans une variable appelée tampon, puis
l'affiche à la suite dans le cadre "terminal".
L'utilisateur entre le numéro du port COM utilisé, le programme ouvre alors une connexion (tout
en récupérant les exceptions).
Il faut à chaque utilisation configurer le ToothPIC c'est-à-dire mettre les pattes reliées aux
transistors (CCP2 et CCP3) en sortie. Pour cela j'utilise une variable "configuration". A près
ouverture de la connexion, la fonction configuration est lancée. Les octets commandants la
configuration d'une sortie sont envoyés. A chaque commande le ToothPIC informe sur le bon
déroulement de l'opération. Ainsi quand la variable tampon reçoit les caractères "0201" c'est-à-
dire "Ok" il faut savoir quelle est la prochaine étape. Ce qui est connu grâce à la variable "Config"
voir fig. 30.

p31/72
Connexion établie

Fonction Configuration
TactiMod

Configure CCP 2 en sortie

Ok

Configure CCP3 en sortie Variable "Config"


Config = 1
Config = 0

Config = 1
Configuration terminée
Config = 2 Config = 2

Utilisation normale

Données échangées par le port série

fig 30Organisation de l'étape de configuration

S'il y a une erreur la connexion se ferme.

De la même façon quand l'utilisateur clique sur un bouton il faut :


• Activer la sortie concernée
• Recevoir la confirmation de l'activation
• Allumer un témoin (un carré vert en l'occurrence)
• Attendre un certain temps
• Désactiver la sortie
• Eteindre le témoin
Voici comment :

p32/72
Fonction "activer gauche"
TactiMod

Activer CCP2 en sortie

Ok
Rendre le témoin visible
Command = "left"
Variable "Command"
Attendre
Désactiver CCP2
Command = ""

Command = "left"

Rendre le témoin invisible


Command = "Right"
Command = ""

Données échangées par le port série

fig 31Organisation de l'activation/désactivation d'un vireur

Description des données envoyées par le port série voir le manuel DARC-I.pdf dans
ToothPICSDK sur http://www.flexipanel.com/BluetoothModules.htm :
• Envoyé par TactiMod' :
• 11444152432D4920332E302E3030303034 : TactiMod' connecté
• 0201 : commande ok
• 0302F1 : erreur
• Commandes :
• 04021D01 : configurer la sortie reliée au moteur gauche en output
• 04021E01 : configurer la sortie reliée au moteur droite en output
• 04031D01 : activer le moteur droit
• 04031E01 : activer le moteur gauche
• 04031D00 : activer le moteur droit
• 04031E00 : activer le moteur gauche

p33/72
fig 32Interface du programme de test

6.3 Boîtier
Rappel des fonctions :
• FS1 : Pouvoir se fixer sur le PDA en permettant à l’utilisateur de garder la modalité
visuelle.
• FS2 : Pouvoir être utilisable sans accaparer les mains.
• FS3 : Permettre de différentier les deux vibrations.
• FS4 : permettre à l’utilisateur allumer le ToothPIC
• FS5 : permettre à l’utilisateur de voir la LED ToothPIC
• FC1 : Pouvoir être pris dans la main.
• FC2 : Protéger les composants électriques et électroniques.
• FC3 : Avoir un aspect présentable, fini.

Le fait qu'il faille enrouler les fils automatiquement nous porte croire que cela nécessitera
l'intervention d'un professionnel. La société APR2 : Application Plastique Régionale s'est occupée
de la réalisation de la plateforme ESKUA deux ans auparavant. Ce projet était également
encadré par Nadine Couture, elle nous a donc orienté vers cette société. Nous avons envoyé un
courrier à cette entreprise que j'ai rédigée et signée par N. Couture cf. annexe 5, ainsi que les
plans CAO, bien qu'il aurait fallu les réaliser après l'entretien, ils pourront toutefois servir si le
projet est poursuivit vers la production en série cf. annexe 6. L'entretien que j'ai eu avec Xavier
Louvel, le directeur, nous a permis de comprendre que le fait faire réaliser un seul prototype par
un professionnel n'était pas approprié. En effet nous avions le choix entre réaliser le boîtier par
moulage ce qui inclus le prix de la fabrication du moule ou bien, l'usinage d'un bloc : meilleur

p34/72
marché mais plus contraignant. L'usinage requiert en effet de concevoir le boîtier de telle façon
qu'il puisse être usiné en limitant le nombre de phase.
A la suite de cet entretien, nous nous sommes posé la question de la pertinence de l'enroulage
automatique. Pour un produit fini il est évident que cela sera indispensable, mais pour notre
prototype, l'augmentation du prix, du temps de conception ainsi que de l'encombrement
(respecter FC1) de ce système ne justifie pas la prise en compte de cette fonction. Nous pouvons
alors commander de simples boîtiers sur radiospares :

fig 33boitier central

Afin que l’utilisateur puisse prendre TactiMod dans sa main nous avons choisi le boîtier le plus
petit pouvant contenir le circuit électrique et disposant d’un compartiment pour mettre
l’accumulateur. De même les blocs vibrants sont les boîtiers les plus petits qui existent sur
radiospares.

6.4 Assemblage final


J'ai eu des problèmes avec de nombreux faux contact sur le circuit imprimé que j'ai pu résoudre
grâce à un multimètre. Ces faux contacts étaient surtout dus à un manque d'expérience en
soudure de composants. Le circuit imprimé a été découpé à la dimension du boîtier, il tient donc
en place par frottement. Il a fallu réaliser des trous pour faire passer les fils d’un bloc à l’autre
ainsi que pour l’interrupteur.
Les vibreurs devaient avoir l’axe et le balourd libre de tourner. J’ai donc simplement utilisé de la
mousse qui sert à ne pas abîmer les composants électronique. En faisant un trou puis en la
comprimant pour fermer la boite nous obtenons un blocage rigide.

p35/72
fig 34TactiMod version 2

6.5 Le site Internet


J'ai également réalisé un site Internet, cf. annexe 6, afin de présenter le projet et pouvoir
retrouver les informations relatives à l'avancement du projet depuis Internet. Il pourra être
accueilli par le serveur de l'ESTIA, à condition qu'il soit conforme aux normes W3C. J'ai tout
d'abord cherché une présentation sur www.csszengarden.com, je l'ai arrangé à notre convenance
puis j'ai modifié le contenu. Il a été réalisé avec FrontPage, un l'éditeur de page html d'office.
Cet éditeur ne respecte pas les normes il a donc fallu modifier le code html afin que tout les
éléments configurant la mise en page se trouvent dans la feuille de style CSS. Grâce à The GIMP
j'ai également fait une première version d'un logo.

p36/72
fig 35ScreenShot du Site TactiMod'

6.6 Manuels d'utilisateur


Le fait que les utilisateurs de TactiMod ne seront pas les concepteurs fait que le périphérique
nécessite des manuels cf. annexe 4. Notamment, nous ne connaissons pas les futures applications
pour lesquelles il faudra coder un autre programme. Une partie de ce manuel est consacré à cet
aspect.
A l'intérieur du TactiMod il y'a un ToothPIC de l'entreprise FlexiPanel, c'est un module
électronique permettant de faire communiquer ses pattes avec un terminal bluetooth. Il peut
donc trouver de multiples applications surtout lors de l'expérimentation de nouveaux
périphériques. C'est pour cela qu'est inclus dans le manuel une synthèse de l'utilisation de ce
produit.

7 Gestion du Projet

p37/72
7.1 Planning

p38/72
p39/72
7.2 Aspect financier
Nous avons essayé de commander le plus possible à la société Radiospares car elle est sous
contrat avec l'ESTIA et que nous étions sur que les commandes sont livrées rapidement. Nous
avons toutefois dû commander les vibreurs et le ToothPIC dans d'autres sociétés. Pour passer
une commande il faut réaliser un bon pour accord à faire signer par le directeur de l'école JR.
Guiresse et le passer ensuite à la comptabilité.
Voici le bilan du projet TactiMod :

Désignation Quantité Prix TTC (frais de


port compris)
Boîtier de commande, ABS, noir, 105 x 61 x 28mm, Pactec. 1 3,10 €
Armoire, boîtier, ABS, 50 x 35 x 20mm, Hammond, 1551GBK. 2 1,89 €
Interrupteur, à bascule, panneau, unipolaire, Arcolectric, 1 0,91 €
H8800VAAAB.
Semiconducteur, discret, transistor, petits signaux, MOS pour 5 3,71 €
commutation, Zetex, ZVNL120A.
Plaque présensibilisée, simple face, 200 x 300mm, épaisseur 1 10,79€
carte 1.6mm, cuivre 35µm,
Batterie, accumulateur, rechargeable, Ni/MH, PP3 / 9V, 1 12,01€
250mAh, Ansmann, 503033202.
Coupleur, pile, accumulateur, PP3, 2 fils 165mm, Keystone,72 1 1,51€
Ruban, auto-amalgamant, auto-aggripant, type Velcro, 5m, noir, 1 7,87€
V11L20MM804R5.
TotthPIC société Bktronic* 1 174,93€
Moteurs vibreurs (10) (entreprise Verdier) 1 49,91€
Stagiaire (3mois) 902€
TOTAL 1165,63€

*Nous avons acheté le ToothPIC à la société BKTronic qui est le revendeur de FlexiPanel en
France.
Nous avons également acquis une clé bluetooth (11€) que je suis allé cherché à European
Computer à Anglet.

7.3 Organisation
Le stage était ponctué de réunion avec Frédéric Saout et Nadine Couture, durant lesquels nous
devions exposer l'avancement de nos projets respectifs et faire valider nos décisions. Leur
fréquence était d'environ une par semaine.
La prise des décisions se faisait après proposition de ma part et validation par N. Couture, ou si
elle concernait un domaine plus technique par un chercheur ou un thésard. J'avais pour rôle de
contacter les entreprises pour demander les devis ou de les relancer en particulier la société
APR2 mais aussi FlexiPanel en raison des disfonctionnement de leur produit.

p40/72
8 Conclusion

8.1 Rappel des objectifs, résultat


Durant un projet de seconde année ESTIA, nous avons validé l'hypothèse selon laquelle il était
possible de diriger un utilisateur dans le monde réel, grâce à un terminal muni de retours tactile.
Nous avons alors voulu disposer d'un vrai périphérique pouvant être commandé par un terminal
mobile et pouvant être présenté à des professionnels. Le fait que nous ne connaissons pas
exactement l'application finale, nous a fait envisager plusieurs fonctions supplémentaires comme
celle de pouvoir séparer les blocs vibrants. Même si la fonction d'enrouler automatiquement les
fils n'est pas disponible aujourd'hui car trop contraignante. Nous disposons du matériel ayant
les fonctionnalités principales désirées. Une prochaine étape serait l'acquisition d'un Pocket PC
et la réalisation d'un programme embarqué.
Un autre élément important pour le LIPSI est qu'il dispose désormais d'un module permettant
de communiquer avec un terminal par bluetooth. Ceci pourra servir pour la création d'un autre
périphérique.

8.2 Le cadre
Le thème de ce stage m'a fait découvrir l'activité des enseignants chercheurs de l'ESTIA, et
ceci dans leur globalité notamment en assistant aux réunions du groupe LIPSI durant lesquelles
les différents chercheurs et leurs thésards exposaient l'état de leurs travaux. J'ai notamment
assisté de près aux activités de guillaume Rivière qui réalise une thèse nommée GEOTUI [7] sur
une interface tangible pour manipuler des coupes géologiques. Il a en effet monté son matériel
dans le bureau ou j'étais et j'ai pu observer son travail et écouter ses commentaires. J'ai été
impressionné par le nombre de déplacement à l'étranger pouvait effectuer les chercheurs. Je
me suis aussi rendu compte que l'aspect administratif est une part importante de leur travail.

8.3 Le Prototypage
Durant ce stage, il fallait réaliser un prototype, c'est-à-dire un produit expérimental destiné à
tester le principe de solution de la modalité tactile. La démarche à adopter est différente de la
conception d'un produit destiné à la production en série car nous avions une idée assez vague du
produit final, de plus j'avais la charge de toute la conception, ce qui mélangeait plusieurs
domaines. La principale leçon que je retiens de ce stage, c'est le fait que la communication avec
les autres : chercheurs, thésards ou stagiaires faisait beaucoup plus avancé le projet que faire
des recherches tout seul. Il est également important de pouvoir déléguer des tâches. Ceci m'a
fait défaut au début du stage et m'aurait permis de gagner du temps.

8.4 Perspectives
Nous avons beaucoup réfléchis aux applications que pourrait prendre TactiMod : diriger des gens
dans des musées, parcs d'exposition ou bien même dans leur voiture pour que les utilisateurs ne
soient pas distraient par la modalité sonore ou visuelle. Nous avons également pensé à TactiMod
comme aide à l'apprentissage de la conduite d'un véhicule, ainsi, par exemple, pour tourner le
volant du bon angle au bon moment sur un parcours.
A la rentrée de septembre 2006 et suite à la lecture d'un article BlueEyes, cf. annexe 9, qui
évoque le projet de la RATP de pouvoir guider des non-voyants dans le métro, le LIPSI va
proposer le projet TactiMod à la RATP comme modalité de retour. La géolocalisation serait ici
faite par des balises bluetooth. Dans cet optique, je me tiendrais, durant l’année scolaire, à
disposition de Nadine Couture pour d’éventuelles modifications ou d’autres travaux.

p41/72
9 Bibliographie
[1] Warren N., Jones M., Jones S., Bainbridge D., Navigation via Continuously Adapted Music. In
Proceedings of the SIGCHI conference on Human factors in computing systems
(CHI ’05) (Portland, Oregon, USA April 2-7, 2005). ACM Press, New York, NY, 2005, 1849-1852.

[2] Lecolinet E., G. Mouret G., TACTIBALL, TACTIPEN, TACTITAB, ou comment "toucher du
doigt" les données de son ordinateur, Proc. of 12ème conférence Francophone sur l'Interaction
Homme-Machine (IHM'05) (Toulouse, France Sept 27-30, 2005). ACM Press, 2005, 227-230

[3] www.louvre.fr (ddc : 04 avril 2006)

[4] Joseph Luk, Jérôme Pasquero, Shannon Little1, Karon MacLean, Vincent Lévesque, and
Vincent Hayward Department of Computer Science University of British Columbia Vancouver, BC
Canada V6T 1Z4 Center for Intelligent Machines McGill University Montréal, QC Canada H3A
2A7

[5] La sensibilité mécanique cutanée :


http://neurobranches.chez-alice.fr/systnerv/systsens/somesthesie1.html

[6] ESKUA : Expérimentation d'un Système Kinesique Utilisable pour l'Assemblage


http://www.estia.fr/~eskua/

[7] GEOTUI d'une Interface Tangible pour la Validation d'Hypothèses en Géosciences


http://www.estia.fr/~geotui/

10 Annexes

Annexe1 : Localisation par Wi-Fi............................................................................................. .................40


Annexe2 : Protocoles internes............................................................................................... ...................43
Annexe3 : La norme USB.............................................................................................................. ..............44
Annexe4 : Manuel d'utilisation............................................................................................................ ......46
Annexe5 : lettre APR2................................................................................................................... .............49
Annexe6 : Boîtier.......................................................................................................................................... 50
Annexe7 : Code html du site Internet....................................................................................................60
Annexe8 : Programme de test........................................................................................................ ...........63
Annexe9 : Article BlueEyes................................................................................................. ......................68

p42/72
La Localisation par Wi-Fi

1 Introduction
Pour localiser un élément on a tendance à penser premièrement au GPS mais ce système rencontre des
problèmes en zone fortement urbanisée de plus il est difficile de rendre compte d’une information
concernant l’altitude : quel étage d’un bâtiment. On peut aussi penser au système RFID, toutefois une
étiquette RFID permet essentiellement d’identifier un objet, pour le localiser, il faut que celui-ci passe à
coté d’un lecteur.
La solution pour une localisation précise en ville ou dans un bâtiment réside dans les réseaux sans fil qui
sont en train de se développer dans les zones urbanisées. Il est possible moyennant certains points de
repères de retrouvé la position d’un élément d’un tel réseau.

Les trois moyens de géolocaliser par réseau Wifi :


• Repérer l’antenne réceptrice et donc connaitre une position approximative
• Par triangulation en prenant comme référence l’intensité du signal
• Par triangulation en prenant comme référence le temps de propagation du signal

2 Déduire la position de l’antenne réceptrice

2.1 le WPS
D'une technologie mise au point par Skyhook Wireless qui, utilise les hotspot Wi-Fi. Grâce à une base de
données contenant les localisations exactes des bornes Wi-Fi, un programme est capable de localiser
précisément l'endroit ou se trouve l’utilisateur.

Les avantages:
• Le programme est capable de fonctionner sur n'importe quel terminal doté d'un émetteur /
récepteur Wi-Fi.
• Très bonne performance et dans les zones à forte densité urbaine : complémentarité avec le
système GPS.

Pour le moment cette technologie n'est disponible qu'aux Etats-Unis et dans seulement 25 villes (qui
comptent tout de même 1.5 million de bornes Wi-Fi). Certaines antennes peuvent être déplacées ce qui
fausserait la position du terminal.

Source :http://www.generation-nt.com/actualites/8058/Le-WPS-ou-la-localisation-par-bornes-WiFi

2.2 RSS : received signal strength


Pour un positionnement au mètre près, il est nécessaire d'établir une triangulation entre différentes
antennes Wifi en analysant la puissance du signal reçu par l'appareil recherché.

Nécessite un logiciel serveur ainsi que des balises Wifi.

p43/72
Cette technique semble intéressante mais est encore peu utilisée. Pour une utilisation dans un bâtiment
de 900m2 il faut compter un investissement de 5000€.

2.3 TOA/TDOA
Time of arrival et time difference of arrival. Grace à ces techniques on peut mesurer les différentes
distances entre les balises Wi-Fi afin de déduire la position d’un élément du réseau toujours par
triangulation. Cette technique requiert une parfaite maitrise de l’électronique au niveau des temps de
traitement car l’ordre de grandeur des communications est la nano seconde. Pour plus de précision les
deux dernières technique peuvent être utilisées en même temps : www.merl.com

3 Les applications

3.1 Bibliothèque
Depuis 2003, la Finlande dispose du premier système de navigation interactif à la bibliothèque principale
de l’Université Oulu, en Finlande. Le système est appelé SmartLibrary et aide les usagers à trouver les
livres et le reste du matériel en affichant sur un PDA une carte indiquant le chemin à suivre pour se
rendre à l’étagère visée. Le logiciel de positionnement Ekahau est utilisé Pour repérer l’endroit où se
trouve le client mobile. Le système de guidage est intégré au catalogue en ligne de la bibliothèque, de
sorte qu’il est possible de retrouver sur la carte affichée sur le PDA les cotes que l’on trouve dans le
catalogue.

Source : http://www.altivis.fr/-La-geolocalisation-par-WiFi-.html

3.2 Hôpital
L’hôpital privé Richland, en Caroline du Sud, localise ainsi en permanence 13 000 équipements médicaux
coûteux, ce qui lui permet de réduire ses stocks, de mettre plus rapidement le bon équipement en place
au bon endroit et d’accélérer les opérations de maintenance.
Source : http://www.wifi-art.com/?p=16

3.3 Sécurité
Une raffinerie pétrolière suit ses salariés pour pouvoir les localiser en cas d’accident. Il existe
également un projet de suivi des prisonniers.
http://www.wifi-art.com/?p=16

4 Différentes sociétés :
http://www.aeroscout.com/content.asp?page=SystemOverview (fonctionnement hybride : RSS & TDOA )
http://www.ekahau.com/
http://pangonetworks.com
http://www.espace-mobilite.com/geolocalisation_materiel_interieur.asp (commercialisation de la solution
ekahau en France)

Discussion au sujet d’un projet de localisation par wifi :

p44/72
http://forum.hardware.fr/hardwarefr/OSAlternatifs/soft-Localiser-point-acces-wifi-sujet-50089-
1.htm

5 Conclusion

Cette nouvelle génération de localisation dans les réseaux sans fils va entrainer de multiples applications.
Les parents pourront par exemple connaitre grâce au terminal mobile de leurs enfants la position de
ceux-ci. On pourra à tout moment connaitre en ville la position d’une personne, ce qui pourra rendre de
grands services mais il faudra veillé toutefois à préserver les libertés individuelles.

p45/72
Protocole de commande des vibrations

1 Protocole client/serveur

Ce protocole servira à coder les trames envoyées par un ordinateur sur un PDA. L’information ainsi codée
servira activer les vibreurs droits ou gauches.

coté durée Puissance Alerte

« LEFT/RIGHT » « TIME:»+int « INTENSITY: »+ 1,2 or 3 AlLERT1,2 or 3

L’opérateur « , » sera utilisé pour séparer les champs


Exemple de trame :
LEFT,TIME:2 ,INTENSTY:1,NULL

2 Protocole du niveau électronique

Si on prend un convertisseur USB/parallèle nous disposerons de 8 bits de sortie. Par exemple le


composant PIC16C745

Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7


Interrupteur Interrupteur Intensité des Activation/désactivation Courant dans la résistance
droit gauche vibrations du système (entrée)

Ces bits commanderont les transistors et éventuellement la résistance chauffante. La commande de la


durée, de l'intensité et des alertes seront traité par un programme dans le micro contrôleur.

p46/72
Envoie de trame par USB

1 La norme USB

1.1 Les mots clés


• USB est une architecture centrée sur l’hôte qui est toujours le maitre. Seule la vitesse lente
nous intéresse (tout d même 1,5 Mb/s). Celle-ci supporte 2 types de protocoles transferts :
• Interruption : Pour communiquer avec le périphérique. Les données sont transférées à
intervalles réguliers
• Contrôle : Utilisé pour la configuration
• Une trame est composée de plusieurs transferts.
• Avec l’USB 5 volt sont disponibles sur le bus mais il y a une limite sur la puissance disponible, ceci
est géré par l’hôte.
• Chaque dispositif contrôle un ou plusieurs « points limites». On peut les considérer comme des
ports virtuels et on les utilise pour communiquer avec une fonction. Une direction In et Out est
associée a un point limite. Chaque terminal doit implémenter le point final 0 pour supporter le
transfert de contrôle pour la configuration. 6 points limites sont disponibles.
• Le processus d’énumération initialisé par l’hôte quand il détecte un nouveau périphérique. Il
permet à celui-ci de se présenter et de négocier les différents paramètres : vitesse
consommation…
• La norme USB requiert des descripteurs pour identifier un périphérique et spécifier ses points
limites et les fonctions correspondantes. Il existe 5 catégories de descripteurs :
• Périphérique :
• Configuration
• Interface
• Point limite
• String
• Les systèmes d’exploitation possèdent des drivers qui groupent les fonctions courantes en
classes. Pour des fonctions particulières il faudra créer un fichier .inf

Faut faire un périphérique USB host, USB On-The-Go, ou simplement USB client :
Les PDA sont soit USB client soit USB On-The-Go car ils se connectent a des prise USB host. Si la
norme USB OTG est rependue chez les PDA un système passif suffira sinon il faudra choisir entre host
et OTG.
Un appel a génération PDA (05 62 73 10 01) à Toulouse nous apprend que l’USB OTG n’est pas très
répandu chez les PDA il faudra donc faire un périphérique host ou OTG.
Micro controller (http://www.lvr.com/usbchips.htm)
http://www.transdimension.com/products/semiconductors/index.html
http://www.atmel.com/products/USB/
http://www.cypress.com/portal/server.pt?space=CommunityPage&control=SetCommunity&CommunityID=
209&PageID=215&gid=9&fid=10&category=All&showall=false

p47/72
1.2 Une transaction USB
Quand on veut transmettre ou recevoir des données, le SIE* vérifie d’abord le point limite et la
direction correspondante le bit UOWN du Buffer Description soit à 1. L’USB va transporter la donnée
de ou vers le registre correspondant.
Quand le TOKEN est complet, l’USB met à jour le statut du BD* et met UOWN à 0.

1.3 Le Firmware
Microchip fournit une couche de logiciel qui prend en main le plus bas niveau de l’interface. Cette
interface comprend 3 fonctions :
InitUSB, PutUSB and GetUSB.
• InitUSB : S’occupe de l’énumération immédiatement après le branchement. Toutefois du code
doit être ajouté pour définir les descripteurs ensuite l’énumération est automatique.
• PutUSB : arguments : (pointeur du Buffer, taille du Buffer, point limite). Le pointer du block de
données à transmettre est dans le FSR/IRP, et la taille du bloc et le point limite est passé dans
le registre W. If the IN buffer is available for that endpoint, PutUSB copies the buffer, flips
the Data 0/1 bit and sets the OWNS bit. A buffer not available would occur when it has been
previously loaded and the host has not requested that the USB peripheral transmit it. In this
case, a failure code would be returned so the application can try again later.
• GetUSB : arguments (pointer du Buffer, point limite) : retourne les données envoyé par l’hôte. Si
le out buffer pointé est prêt (bit OWNS), le buffer est copié du port dual RAM à l’endroit
indiqué par le pointeur et reset the endpoint for the next out transaction from the host. If no
data is available, it returns a failure code. Thus the functions of polling for buffer ready and
copying the data are combined into the one function.

Grâce a ces fonctions fournies par le constructeur le début du programme à incérer dans le micro
contrôleur sera par exemple :

; ******************************************************************
; Demo program that initializes the USB peripheral, allows the Host
; to Enumerate, then copies buffers from EP1OUT to EP1IN.
; ******************************************************************

main
call InitUSB ;  Set up everything so we can enumerate
ConfiguredUSB ; wait here until we have enumerated.

CheckEP1 ;  Check Endpoint 1 for an OUT transaction
bankisel buffer ; point to lower banks
movlw buffer
movwf FSR ;  point FSR to our buffer
movlw 1 ;  check end point 1
call GetUSB ;  If data is ready, it will be copied.
btfss STATUS,C ;  was there any data for us?
goto PutBuffer ;  Nope, check again.
; Code host to process out buffer from host

p48/72
Manuel d'utilisation
1 Utiliser TactiMod'

1.1 Utilisation normale


• Récupérer le programme TactiMod.exe et le lancer
• Allumer le TactiMod
• Regarder dans la partie Bluetooth du panneau de configuration sur quel port Com est
connecté le TactiMod
• Rentrer ce numéro dans la case "Com Port" appuyer sur Ok
• Cliquer sur les flèches droite ou gauche pour faire vibrer le coté correspondant.
• L'affichage "terminal" permet de visualiser les échanges de données entre le TactiMod
et le logiciel voir partie DARC-I.
• Si quelqu'un s'est servi du toothPIC : composant électronique à l'intérieur du TactiMod
(fig 1), il faut surement le reprogrammer. Pour cela il faut télécharger ToothPICSDK sur
http://www.flexipanel.com/BluetoothModules.htm (tool kit developer) et suivre les
instructions 2.2 avec le service pack DARC-I (lancer DARC-IWin.exe)

Fig 1

1.2 Programmation, communication avec le TactiMod'


Le programme a été réalisé en utilisant la solution DARC-I, cf. "DARC-I.pdf". Il a été réalisé en
Visual Basic.
Pour programmer il faut considérer le périphérique TactiMod' comme branché sur un port série.
Les commandes se font en envoyant des octets.
• Envoyé par TactiMod' :
• 11444152432D4920332E302E3030303034 : TactiMod' connecté
• 0201 : commande ok
• 0302F1 : erreur
• Commandes :
• 04021D01 : configurer la sortie reliée au moteur gauche en output
• 04021E01 : configurer la sortie reliée au moteur droite en output
• 04031D01 : activer le moteur droit
• 04031E01 : activer le moteur gauche
• 04031D00 : activer le moteur droit
• 04031E00 : activer le moteur gauche

p49/72
Pour réaliser un hacheur série :

• Régler les sorties en PWM (pulse with modulation)


04021E02
04021D02

• Régler la base de temps du PWM : 040204+


• 00 = Turn PWM off
• 01 = PWM on, base time unit is 0.2μs
• 02 = PWM on, base time unit is 0.8μs
• 03 = PWM on, base time unit is 3.2μs

• Régler la période:
040205+ de 00 à FF = la periode dans la base de temps choisie moins 1

• Régler le rapport de cycle :


0503+1D ou 1E (pour CCP2 ou CCP3) + xxxx (0000 à FFFF)
le rapport de cycle est xxxx.(base de temps/4) en μs.

2 Utilisation du ToothPIC depuis un ordinateur muni d’une


clé Bluetooth PEABIRD

2.1 Installation

• Installer les drivers de la clé bluetooth PEABIRD et le logiciel BlueSoleil.


• Télécharger ToothPICSDK sur http://www.flexipanel.com/BluetoothModules.htm (tool
kit developer)
• Télécharger FlexiPanel Client pour windows sur
http://www.flexipanel.com/ClientSoftware.htm

2.2 Implanter un programme dans le microcontrôleur à partir


d’un " service pack "

Les services packs sont des fichiers exécutables qui contiennent un certain programme. Grace à
une connexion bluetooth ils le téléchargent dans le toothPIC .

• Mettre le toothPIC sous tension en appuyant le bouton : les LED verte et rouge
clignotent simultanément.
• Lancer BlueSoleil et cliquer sur le soleil pour rechercher les périphériques présents
• Quand le toothPIC est détecté cliquer avec le bouton droit et sur " rafraichir les
services ".
• Se connecter au service trouvé : clic droit sur l’icône du toothPIC ou sur l’icône du
service activé en haut de la fenêtre.
• Clic droit sur l’icône du ToothPIC puis " Etat " pour connaitre le port COM de celui-ci.
• Déconnectez le service "porte de communication"

p50/72
• Lancer un service pack de flexipanel, rentrer le numéro du port vu précédemment
• Fermer la fenêtre à la fin du chargement, La LED verte clignote.

2.3 Création d’un programme

• Créer l’interface dans le Designer


• Générer les fichiers .h et .c
• Démarrer MPLAB
• Charger une solution et remplacer les fichiers modifier le propgramme
• Générer un fichier .hex
• Ouvrir toothPIC WFP sélectionner le fichier .hex
• 2 solutions :
• Créer un service pack (voir 2.)
• Programmer directement en cochant la case et en cliquant sur " program now "

2.4 Lancer un programme serveur

• Lancer Flexipanel Client setting>COM ports, rentrer le numéro du port cliquer sur
" connect "

2.5 Mémoire corrompue

Il peut arriver qu’après l’implantation d’un programme aucune LED ne clignote et le périphérique
n’est plus reconnu par BlueSoleil. Dans ce cas :
• Appuyer sur le bouton en mettant sous tension
• Lancer ToothPIC WFP
• Recherchez le périphérique avec BlueSoleil et connectez le service "porte de
communication"
• Chargez le fichier .hex d’une solution qui fonctionne
• Sélectionnez ” Entered programming mode by button down at power up and access key “
Dans la cadre “Key” entrez "BMSC"
Répétez l'opération plusieurs fois si nécessaire

p51/72
Lettre à APR2
COUTURE Nadine
LIPSI-ESTIA
Technopole Izarbel
64210 Bidart
05 59 43 84 67
n.couture@estia.fr

Monsieur Xavier LOUVEL


APR2
ZA Ambroise
Objet : demande de devis 40 390 St Martin de Seignanx

Monsieur Louvel,

Suite à un entretien téléphonique avec votre collaboratrice, je vous envoie par ce mail l'objet de
notre demande.
Il y deux ans vous avez collaboré de façon très bénéfique au projet ESKUA en réalisant une
plateforme de support de webcam. Nous vous proposons de renouveler l’expérience avec le
projet Tactimod.
Le Tactimod est un prototype destiné à explorer la modalité tactile. Nous comptons plus
particulièrement grâce à un retour tactile pouvoir diriger une personne, par exemple, dans un
musée.
Tactimod est composé de 3 blocs. Le principal contient une carte électronique, une pile et une
poulie munie d’un ressort destinée à enrouler un fil. Les deux autres blocs contiennent des
vibreurs. Il devra pouvoir être pris dans la main ou se loger dans une ceinture en séparant les
blocs vibrant dans deux poches situées sur les cotés. Nous souhaitons vous confier la réalisation
de ces blocs. Dans ce but nous souhaiterions recevoir un devis. Pour vous permettre de l’établir
nous joignons à ce courrier un cahier des charges. Adrien Touzouli en charge de la conception et
de la réalisation de ce projet se tient à votre disposition pour vous préciser nos besoins, soit par
téléphone, soit en venant vous rencontrer à APR2. Des plans (réalisés sous proIng) sont
également joints au cahier des charges, ainsi qu’un fichier zip contenant les fichiers dxf. Pour
nous contacter :
A Touzouli port. : 06 89 03 59 98
05 59 43 84 67 ou 26
[n.couture, a.touzouli]@estia.fr

En espérant réitérer notre fructueuse collaboration de 2004, veuillez croire, Monsieur Louvel à
ma parfaite considération.

p52/72
Couture Nadine

p53/72
ESTIA Téléphone 05 59 43 84 00
Technopole Izarbel Port A. Touzouli 06 89 03 59 98
64210 Bidart Télécopie : 05 59 43 84 05

Cahier des charges

TactiMod

Auteur, contact : Adrien Touzouli (a.touzouli@estia.fr)


Responsable : Nadine Couture (n.couture@estia.fr)

Le 6 juillet 2006

p54/72
Contexte

Nous avons dans un premier temps validé l’hypothèse suivante : "il est possible de diriger et
d'orienter une personne vers un point d'intérêt en utilisant un Terminal Mobile augmenté de
retours tactiles". La validation de cette hypothèse est essentielle en préalable de la conception
de TactiMod. TactiMod est un périphérique de terminal mobile, type PDA (assistant personnel
numérique) ou téléphone portable, tactile qui est utilisé par un piéton pour aller d'un point A à un
point B tout en restant concentrer sur une tout autre activité que celle de "trouver son chemin".
Nous montrons l'utilité et l'utilisabilité de TactiMod dans le contexte d'un grand musée, où il
n'est pas possible de "tout voir". Le visiteur choisit donc un parcours d'intérêt à son entrée dans
le musée. Son activité principale est alors de regarder les œuvres d'art tout en suivant son
parcours d'intérêt indiqué en temps utile par TactiMod.

3 Description

Le type de plastique reste à définir, vos avis et conseil seront utile pour modifier les plans.

Bloc vibrant

Bloc principal E2

Fig 1 : aspect général

p55/72
TactiMod se compose de trois blocs : un bloc principal et deux blocs vibrants. Les blocs vibrants
pourront se séparer du bloc principal pour se loger dans une ceinture. Dimension max : 113mm

4 Plans

Le bloc principal est composé des pièces


• boitier bas
• boitier haut
• poulie et axe poulie

Les blocs vibrants sont composés de


• bloc boitier vibrant bas droit et gauche
• rondelle bloquante (x2)
• bloc boitier vibrant haut (x2)

4.1 Boitier bas

Fig 2 : boitier bas

p56/72
D1

p57/72
4.2 Boitier haut

Fig 3 : boitier haut

p58/72
4.3 Poulie

Fig 4 : poulie

4.4 Axe poulie

Cet axe sera monté serré dans l'alésage borgne sur le boitier (cf. 3.1 D1) avec un jeu sur la
poulie.

p59/72
Bloc Vibrant boitier Bas droite

S1

Fig 5 : bloc vibrant boitier bas

4.5 Bloc Vibrant boitier Bas gauche


C’est le symétrique de cette pièce pour faire le deuxième bloc vibrant. Si les plans sont
nécessaire merci de nous contacter.

4.6 Rondelle bloquante x2


Cette pièce sera collée à l’intérieur du bloc vibrant boitier bas. Elle doit se déformer pour
pouvoir se fixer aux ergos du boitier principal ainsi que pour empêcher les vibrations de se
propager à celui-ci.

p60/72
Fig 6 : rondelle bloquante

4.7 Bloc Vibrant boitier haut x2

Fig 7 : bloc vibrant boitier haut

5 Les contraintes

p61/72
5.1 Le bloc principal
• Doit pouvoir s’ouvrir afin d’y intégrer :
• La poulie qui puisse tourner et son axe (cf 3.3)
• La carte électronique dont les dimensions sont données ci-dessous : fig 8.

Fig 8 : Carte électronique

On doit également pouvoir accéder au bouton et aux LEDs de la carte.

• Une pile 9v :

Fig 9 : pile 9v

• Doit pouvoir recevoir un interrupteur : trou sur la partie supérieure : 6.9mm x 19.2mm

5.2 Les blocs vibrant

• Les blocs vibrants doivent pouvoir se fixer et se détacher de la partie principale.


• Ils devront pouvoir s’ouvrir afin d’intégrer
• Un vibreur : fig 10

p62/72
Fig 10 : vibreur

• Les rondelles bloquantes : cf. 3.7

• Afin d’assurer une bonne transmission de la vibration à la main une surface munie de
picots (texture d’un ballon de basket en plus fin) sera collée sur la surface S1 (cf. 3.5)
des blocs vibrants.

Nous sommes conscients que les aspects suivants des spécifications ne rentrent pas totalement
dans le cadre de vos activités, toutefois vous aurez peut être des solutions à proposer et dans
tout les cas votre avis nous serait très utile.

5.3 La ceinture
Un ceinture devra être réalisée en néoprène composée de 2 poches intérieures sur les cotés et
d’une poche extérieure centrale. Ces poches seront destinées à recevoir les différents blocs,
l’utilisateur pourra ainsi recevoir l’information en ayant les mains libres.

5.4 Le ressort
Un ressort enrouleur capable d’effectuer 5 rotations sera fixé entre la poulie et le boitier afin
d’enrouler les fils.

5.5 Matériaux isolant


Les vibrations ne doivent pas se transmettre d’un bloc à l’autre c’est pour cela qu’il nous faut un
matériau isolant entre les blocs : mousse éponge (élément E2 cf. fig 1)

p63/72
Code html du Site internet de TactiMod

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- saved from url=(0048)http://www.csszengarden.com/?cssfile=061/061.css
-->
<html xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>TactiMod'</title>

<meta http-equiv="Content-Type" content="text/HTML; charset=iso-8859-1" />


<meta content="Touzouli Adrien" name="author" />
<meta content="mobilité,vibration, tactile, retour tactile, terminal
mobile, modalité d'interaction, ihm" name="keywords" />
<meta content="La page du projet TactiMod'" name="description" />

<link rel="stylesheet" type="text/css" href="style.css" />

</head>
<body>
<div id="container">
<a name="haut"></a>
<div id="intro">
<div id="pageheader" style="width: 700px; height: 54px">

</div>
<div id="quicksummary" style="width: 197px; height: 85px">
Responsable :&nbsp;&nbsp;&nbsp;&nbsp; Couture Nadine
Stagiaires :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Touzouli

Adrien<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb
sp;
Saout Frédéric
</p></div>
<div id="preamble" >
<h3>Le projet TactiMod'</h3>
<p class="p1">Ce projet, initialisé par le
laboratoire LIPSI (Bidart),
à pour but l'exploration du mode tactile et plus
particulièrement des vibrations comme moyen d'action sur les utilisateurs
de
terminaux mobile.</p>
<p class="p1">&nbsp;</p>
</div>
</div>
<div id="supportingtext">
<h3>Le concept de base<a name="1"></a></h3>
<p>Nous prenons l'exemple d'une personne dans un grand
musée. Celle-ci
doit suivre un itinéraire définit au préalable : par exemple
les &#339;uvres
du XVIII siècle. On souhaite un système lui permettant de
suivre son
parcours sans la distraire c'est à dire sans utiliser ni la
modalité
visuelle, ni la modalité sonore.</p>

p64/72
<p>Nous nous sommes orientés vers un avertisseur tactile
utilisant des
vibrations pour communiquer l'information.</p>
<p>Pour que le projet soit complètement aboutit il faudrait
bien sur un système
de géo localisation. Mais on sait que ceci est possible et a
été
réaliser dans une bibliothèque en Finlande.</p>
<p class="fleche">
<a href="#haut">
<img src="img/fleche%20haut.jpg" width="46" height="28"
alt="haut" /></a></p>
<h3>Hypothèse de départ : <a name="2"></a> </h3>

<p class="p1">Un projet de seconde année de l'école


d'ingénieur ESTIA a permis de valider
l'hypothèse suivante : &quot;Il est possible de
diriger une personne
grâce à un terminal muni de retours tactiles&quot;.
Partant de cette
constatation, nous avons&nbsp;
entrepris de réaliser ce périphérique afin qu'il
puisse être
commandé depuis un terminal, et réaliser ainsi un
magicien
d'Oz. Ceci nous rapproche du but
ultime : pouvoir grâce à une géo localisation
diriger un personne de
façon logicielle.</p>
<p class="fleche">
<a href="#haut">
<img src="img/fleche%20haut.jpg" width="46"
height="28" alt="haut" /></a></p>
<h3>Avancement du projet : <a name="4"></a></h3>
<ul>
<li>Le projet seconde année ESTIA :</li>
</ul>
<p>Il a débuté par des recherches sur des moyens
d'interaction
relativement peu exploré. Le mode tactile vibratoire
a été retenu.
Pour que le projet ait un sens il fallait d'abord
confirmer
l'hypothèse suivante : &quot;Il est possible de
diriger une personne
possédant un périphérique muni de retours
tactiles&quot;. Pour cela un
premier prototype a été réalisé :</p>
<p>
<img src="img/proto1.jpg" width="300" height="225"
alt="prototype 1" /></p>
<p>Grâce a une télécommande on actionne deux
vibrations différentes
. Ceci nous a permis de réaliser un magicien d'Oz
qui nous a permis de
valider l'hypothèse.</p>
<p><a href="NcSmUbiMobv2.doc">L'article </a>qui s'en
est suivi a été
accepté par UbiMob.</p>
<ul>
<li>Le stage</li>

p65/72
</ul>
<p>Nous sommes en train de réaliser un prototype qui sera présentable au
salon
UbiMob. La période du stage est de mai à fin juillet 2006.</p>
<p class="fleche">
<a href="#haut">
<img src="img/fleche%20haut.jpg" width="46"
height="28" alt="haut" /></a></p>
<p class="fleche">&nbsp;</p>
<h3>Principe de fonctionnement :<a
name="3"></a></h3>
<p>
<img src="img/schema_fonc.GIF" width="356"
height="286" alt="schema" /></p>

<p>
Un deuxième aspect du projet consiste à réaliser le
magicien d'Oz au
moyen d'un second périphérique celui-ci muni d'un
accéléromètre et
d'un gyroscope.</p>

<p class="fleche">
<a href="#haut">
<img src="img/fleche%20haut.jpg" width="46"
height="28" alt="haut" /></a></p>
<p class="fleche">
&nbsp;</p>
<p>
&nbsp;</p>
<p> <p>
<a href="http://validator.w3.org/check?uri=referer"><img
src="http://www.w3.org/Icons/valid-xhtml10"
alt="Valid XHTML 1.0 Strict" height="31" width="88" /></a>
</p>
</p>

</div>

<div id="linklist" >

<h3><a href="#1">Le concept de base</a></h3>


<h3><a href="#2">Hypothèse de départ</a></h3>
<h3><a href="#4">Avancement du projet</a></h3>
<h3><a href="#3">Principe de fonctionnement</a></h3>
</div>

<div id="footer">
</div>

</div>

</body>
</html>

p66/72
Programme de Test

Public Class Tactimod

Private Config As Integer


Private Command As String
Private tampon As String
Public Const delay = 90000000

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles comLabel.Click

End Sub
Private Sub terminal_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles okCom.Click
Try
SerialPort.PortName = "COM" & TextCom.Text
SerialPort.Open()
'Me.flag = 0
Me.Config = 0
If SerialPort.IsOpen Then
Call SetTextInfo("Connection inition.." & vbCrLf)
okCom.Visible = False
Disco.Visible = True

End If
Catch ex As Exception
Call SetTextInfo("error Com port" & vbCrLf)

End Try
TextCom.Text = ""

End Sub

Private Sub Form_Unload(ByVal Cancel As Integer)


SerialPort.Close() 'on ferme le port quand l'appli quitte
End Sub

Private Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As


System.IO.Ports.SerialDataReceivedEventArgs) Handles
SerialPort.DataReceived

tampon = tampon & SerialPort.ReadExisting


Call SetTextTerminal(tampon)

p67/72
'Call SetTextTerminal(tampon.Contains("0201" & vbCrLf))

If tampon.Contains("11444152432D4920332E302E3030303036") Then

Call SetTextInfo("Connection etablished" & vbCrLf)


Call Configuration()
tampon = "" 'init
Me.AcceptButton = terminalOk
'okCom.Enabled = False
ElseIf tampon.Contains("020") Then
If Config = 1 Then
Config = 2
Call Configuration()
ElseIf Config = 3 Then
Config = 4
Call Configuration()
ElseIf Me.Command.Contains("right") Or
Me.Command.Contains("left") Then
Call SetActive()
End If
tampon = "" 'init
ElseIf tampon.Contains("0302F1") Then

Call SetTextInfo("error" & vbCrLf)


tampon = "" 'init
'Else

'Call SetTextInfo("error bizarre..." & vbCrLf)


End If

End Sub

Delegate Sub SetTextTerminalCallback(ByVal [text] As String)

Private Sub SetTextTerminal(ByVal [text] As String)


If Me.terminal.InvokeRequired Then
Dim d As New SetTextTerminalCallback(AddressOf SetTextTerminal)
Me.Invoke(d, New Object() {[text]})
Else
Me.terminal.Text = Me.terminal.Text & [text]
End If
End Sub

Delegate Sub SetTextInfoCallback(ByVal [text] As String)

Private Sub SetTextInfo(ByVal [text] As String)


If Me.info.InvokeRequired Then
Dim d As New SetTextInfoCallback(AddressOf SetTextInfo)
Me.Invoke(d, New Object() {[text]})
Else
Me.info.Text = Me.info.Text & [text]
End If
End Sub

Delegate Sub ButtonPanelVisibleCallback()

Private Sub ButtonPanelVisible()


If Me.ButtonPanel.InvokeRequired Then
Dim d As New ButtonPanelVisibleCallback(AddressOf
ButtonPanelVisible)

p68/72
Me.Invoke(d, New Object() {})
Else
ButtonPanel.Visible = True
End If
End Sub

Private Sub Configuration()


Dim i As Integer

If Config = 0 Then
Call SetTextTerminal("04021D01" & vbCrLf)
SerialPort.Write("04021D01" & vbCrLf)
i = 0
Config = 1
While (Not (i = 90000000))
i = i + 1
End While

ElseIf Config = 2 Then


Call SetTextInfo("config 1 ok" & vbCrLf)
Call SetTextTerminal("04021E01" & vbCrLf)
SerialPort.Write("04021E01" & vbCrLf)
i = 0
While (Not (i = delay))
i = i + 1
End While
Config = 3
ElseIf Config = 4 Then

SetTextInfo("Config ok" & vbCrLf)


Config = 5
Call ButtonPanelVisible()

'flag = 0
End If

End Sub

Delegate Sub SetActiveCallback()

Private Sub SetActive()


If Me.rightActive.InvokeRequired Then
Dim d As New SetActiveCallback(AddressOf SetActive)
Me.Invoke(d, New Object() {})
Else
If Me.Command.Equals("right") Then

Me.Command = "rightOk"
Dim i As Integer
i = 0
While (i < delay)
i = i + 1
End While
Call SetTextTerminal("04031E00" & vbCrLf)
SerialPort.Write("04031E00" & vbCrLf)
ElseIf Me.Command.Equals("rightOk") Then

rightActive.Visible = False
Me.Command = ""

ElseIf Me.Command.Equals("left") Then

Me.Command = "leftOk"

p69/72
Dim i As Integer
i = 0
While (i < delay)
i = i + 1
End While
Call SetTextTerminal("04031D00" & vbCrLf)
SerialPort.Write("04031D00" & vbCrLf)
Me.Command = "leftOk"
ElseIf Me.Command.Equals("leftOk") Then
leftActive.Visible = False
Me.Command = ""
End If
End If

End Sub

Private Sub QuitterToolStripMenuItem_Click(ByVal sender As


System.Object, ByVal e As System.EventArgs) Handles
QuitterToolStripMenuItem.Click
SerialPort.Close()
Me.Close()
End Sub

Private Sub terminalOk_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles terminalOk.Click
Call SetTextTerminal(textTerminal.Text & vbCrLf)
SerialPort.Write(textTerminal.Text & vbCrLf)
textTerminal.Text = ""
Me.Command = "manual"

End Sub

Private Sub TerminalToolStripMenuItem_Click(ByVal sender As


System.Object, ByVal e As System.EventArgs) Handles
TerminalToolStripMenuItem.Click
If TerminalPanel.Visible Then

TerminalPanel.Visible = False
Else
TerminalPanel.Visible = True

End If
End Sub

Private Sub rightButton_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles rightButton.Click
'Dim i As Integer
Call SetTextTerminal("04031E01" & vbCrLf)
SerialPort.Write("04031E01" & vbCrLf)
rightActive.Visible = True
Me.Command = "right"
'While (Not (i = delay))
'i = i + 1
'End While
End Sub

Private Sub leftButton_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles leftButton.Click
Call SetTextTerminal("04031D01" & vbCrLf)
SerialPort.Write("04031D01" & vbCrLf)
leftActive.Visible = True
Me.Command = "left"

p70/72
End Sub

Private Sub AboutToolStripMenuItem_Click(ByVal sender As System.Object,


ByVal e As System.EventArgs) Handles AboutToolStripMenuItem.Click
MsgBox("LIPSI : TactiMod version 1.0", MsgBoxStyle.Information,
"TactiMod'")
End Sub

Private Sub FichierToolStripMenuItem_Click(ByVal sender As


System.Object, ByVal e As System.EventArgs) Handles
FichierToolStripMenuItem.Click

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Disco.Click
SerialPort.Close()
Disco.Visible = False
okCom.Visible = True
ButtonPanel.Visible = False
Call SetTextInfo("Disconnected")
End Sub
End Class

p71/72
Article BlueEyes

p72/72

Vous aimerez peut-être aussi