<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://air.imag.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ChristopheH</id>
	<title>air - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://air.imag.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ChristopheH"/>
	<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php/Special:Contributions/ChristopheH"/>
	<updated>2026-06-18T22:12:26Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://air.imag.fr/index.php?title=Table_interactive_de_restaurant&amp;diff=10718</id>
		<title>Table interactive de restaurant</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Table_interactive_de_restaurant&amp;diff=10718"/>
		<updated>2013-04-09T13:30:32Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* UE/Module: Projet Multimédia RICM4 option CM&lt;br /&gt;
* Enseignant RICM : Renaud Blanch&lt;br /&gt;
* Élèves RICM5 : ???&lt;br /&gt;
&lt;br /&gt;
en 500-1000 mots&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Pour le projet Multimédia de l’année 2010-2011, nous avons conçu une table interactive pour restaurant, nous avons tout d’abord décidé le sujet en partant sur différentes solutions d’aide à la prise de commande en restaurant (carte interactive sur tablette, …), nous nous sommes finalement mis d’accord sur une idée de table de restaurant tactile offrant aux clients diverses fonctionnalités tout au long de leur repas.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ce projet s&#039;appuie sur la table tactile &amp;quot;[[Tabletop]]&amp;quot; conçu également dans la salle AIR.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Démarche/Déroulement ...==&lt;br /&gt;
Nous avons alors effectué deux interviews ex-situ dans deux restaurants différents (le Metropolis en face de Polytech’Grenoble et l’Ontario sur les quais de Grenoble). A cours de ces dernières, nous avons appris les principales actions que doit faire le serveur tout au long de son travail, ils nous ont aussi conseillé sur quelles fonctionnalités seront acceptées facilement par les restaurants et celles qui seront automatiquement refusées. &amp;lt;br&amp;gt;A la suite de ces interviews, nous avons écrit les scenarii de travail puis nous avons effectué un brainstorming afin de mettre en commun toutes les idées auxquelles nous pouvions penser comme fonctionnalités de notre table, nous avons ensuite gardé celles qui avaient été acceptées à plus de quatre voix contre une. Les idées qui sont restées sont :&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
•	Gestion de plusieurs menus par table et leur affichage (un menu est disponible pour chacun des clients déjeunant à une table)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Affichage de précisions sur les plats (des renseignements supplémentaires sur la composition des plats sont disponibles)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Suggestions de vins/plats(en fonction du plat choisi, un vin s’accordant avec celui-ci est proposé ; le plat du jour est proposé)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Création d’une commande (un client peut commander son menu en autonomie sur la table)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Personnalisation d’une commande/d’un plat (un client peut demander le retrait d’un ingrédient particulier dans la fabrication d’un plat s’il le désire)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Affichage du total de la commande (chaque fois qu’un plat est ajouté dans une commande, le montant de celle-ci se met à jour automatiquement)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Envoi direct des commandes en cuisine lors de leur validation (la transmission d’une commande à la cuisine se fait sans l’intervention d’un serveur)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité de demande du débarrassage d’un plat (lorsqu’un client a terminé son plat, il peut accélérer le processus du service en demandant que l’on débarrasse son assiette)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Demander à faire une pause (un client peut demander une pause entre deux plats : la réalisation du plat suivant ne sera pas lancée tout de suite en cuisine)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Personnalisation par le serveur des fonctionnalités (le serveur a la possibilité d’ajouter/retirer des fonctionnalités d’utilisation de la table)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité de laisser une remarque au cuisinier (un client peut exprimer son ressenti sur le plat qu’il vient de manger ; son message est envoyé immédiatement en cuisine)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Gestion des ambiances (un « fond de table » peut être affiché sur la table au choix du client)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité de communiquer avec des appareils mobiles (un appareil photo, une caméra, etc. peuvent être pluggées sur la table de façon à y afficher des documents)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Manipulation directe (les éléments affichés sur la table peuvent être agrandis, rétrécis, déplacés…)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Reconnaissance de la forme des objets posés pour rendre l’affichage joli et fonctionnel (selon le type d’objet déposé sur la table, une animation sera « jouée » autour de celui-ci)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Mise à disposition d’un livre d’or (un client peut s’il le souhaite déposer un message témoignant de son appréciation du restaurant ou repas)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Personnalisation de l’affichage, mini-jeux… (un certain nombre de mini-jeux sont proposés au client pour se divertir)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité d’appel d’un serveur (le client peut appeler le serveur en cas de problème)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Suggestions dynamiques (les plats suggérés sont influencés par des paramètres de stocks, …)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité de compte client (un compte client permet de garder en mémoire les plats précédemment consommés, les ambiances affichés sur la table, …)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Gestion de la fidélité (un client revenant souvent bénéficiera de réductions et promotions)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons alors conçu les scenarii de conception. Puis nous avons créé un prototype papier des différentes fonctionnalités de notre table. Nous avons créé une vidéo en Stop-Motion pour chaque scenario de conception. Ces vidéos sont disponibles auprès de Mr Blanch. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons vraiment apprécié de travailler sur ce projet malgré nos réticences en début de projet. En effet, nous craignions de ne trouver que peu d’intérêt au projet étant donné qu’il n’y avait pas de phase de développement dans ce dernier. Cependant, nous avons vite compris que la phase de conception est plus importante que le développement en lui-même car, le prototype que nous avons conçu est la base sur laquelle le logiciel à construire sera développé. Finalement, nous avons appris au cours de ce projet qu’il fallait prendre le temps de définir les fonctionnalités de ce dernier avant de le concevoir tête baissée.&lt;br /&gt;
&lt;br /&gt;
==Supports==&lt;br /&gt;
* Présentation (PPT,ODP, ...)&lt;br /&gt;
* [http:// site complet du projet]&lt;br /&gt;
* Photos&lt;br /&gt;
* Vidéo&lt;br /&gt;
* Flyer&lt;br /&gt;
* Poster&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Table_interactive_de_restaurant&amp;diff=10717</id>
		<title>Table interactive de restaurant</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Table_interactive_de_restaurant&amp;diff=10717"/>
		<updated>2013-04-09T13:30:14Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* UE/Module: Projet Multimédia RICM4 option CM&lt;br /&gt;
* Enseignant RICM : Renaud Blanch&lt;br /&gt;
* Élèves RICM5 : ???&lt;br /&gt;
&lt;br /&gt;
en 500-1000 mots&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Pour le projet Multimédia de l’année 2010-2011, nous avons conçu une table interactive pour restaurant, nous avons tout d’abord décidé le sujet en partant sur différentes solutions d’aide à la prise de commande en restaurant (carte interactive sur tablette, …), nous nous sommes finalement mis d’accord sur une idée de table de restaurant tactile offrant aux clients diverses fonctionnalités tout au long de leur repas.&lt;br /&gt;
&lt;br /&gt;
Ce projet s&#039;appuie sur la table tactile &amp;quot;[[Tabletop]]&amp;quot; conçu également dans la salle AIR.&lt;br /&gt;
&lt;br /&gt;
==Démarche/Déroulement ...==&lt;br /&gt;
Nous avons alors effectué deux interviews ex-situ dans deux restaurants différents (le Metropolis en face de Polytech’Grenoble et l’Ontario sur les quais de Grenoble). A cours de ces dernières, nous avons appris les principales actions que doit faire le serveur tout au long de son travail, ils nous ont aussi conseillé sur quelles fonctionnalités seront acceptées facilement par les restaurants et celles qui seront automatiquement refusées. &amp;lt;br&amp;gt;A la suite de ces interviews, nous avons écrit les scenarii de travail puis nous avons effectué un brainstorming afin de mettre en commun toutes les idées auxquelles nous pouvions penser comme fonctionnalités de notre table, nous avons ensuite gardé celles qui avaient été acceptées à plus de quatre voix contre une. Les idées qui sont restées sont :&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
•	Gestion de plusieurs menus par table et leur affichage (un menu est disponible pour chacun des clients déjeunant à une table)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Affichage de précisions sur les plats (des renseignements supplémentaires sur la composition des plats sont disponibles)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Suggestions de vins/plats(en fonction du plat choisi, un vin s’accordant avec celui-ci est proposé ; le plat du jour est proposé)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Création d’une commande (un client peut commander son menu en autonomie sur la table)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Personnalisation d’une commande/d’un plat (un client peut demander le retrait d’un ingrédient particulier dans la fabrication d’un plat s’il le désire)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Affichage du total de la commande (chaque fois qu’un plat est ajouté dans une commande, le montant de celle-ci se met à jour automatiquement)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Envoi direct des commandes en cuisine lors de leur validation (la transmission d’une commande à la cuisine se fait sans l’intervention d’un serveur)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité de demande du débarrassage d’un plat (lorsqu’un client a terminé son plat, il peut accélérer le processus du service en demandant que l’on débarrasse son assiette)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Demander à faire une pause (un client peut demander une pause entre deux plats : la réalisation du plat suivant ne sera pas lancée tout de suite en cuisine)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Personnalisation par le serveur des fonctionnalités (le serveur a la possibilité d’ajouter/retirer des fonctionnalités d’utilisation de la table)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité de laisser une remarque au cuisinier (un client peut exprimer son ressenti sur le plat qu’il vient de manger ; son message est envoyé immédiatement en cuisine)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Gestion des ambiances (un « fond de table » peut être affiché sur la table au choix du client)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité de communiquer avec des appareils mobiles (un appareil photo, une caméra, etc. peuvent être pluggées sur la table de façon à y afficher des documents)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Manipulation directe (les éléments affichés sur la table peuvent être agrandis, rétrécis, déplacés…)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Reconnaissance de la forme des objets posés pour rendre l’affichage joli et fonctionnel (selon le type d’objet déposé sur la table, une animation sera « jouée » autour de celui-ci)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Mise à disposition d’un livre d’or (un client peut s’il le souhaite déposer un message témoignant de son appréciation du restaurant ou repas)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Personnalisation de l’affichage, mini-jeux… (un certain nombre de mini-jeux sont proposés au client pour se divertir)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité d’appel d’un serveur (le client peut appeler le serveur en cas de problème)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Suggestions dynamiques (les plats suggérés sont influencés par des paramètres de stocks, …)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité de compte client (un compte client permet de garder en mémoire les plats précédemment consommés, les ambiances affichés sur la table, …)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Gestion de la fidélité (un client revenant souvent bénéficiera de réductions et promotions)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons alors conçu les scenarii de conception. Puis nous avons créé un prototype papier des différentes fonctionnalités de notre table. Nous avons créé une vidéo en Stop-Motion pour chaque scenario de conception. Ces vidéos sont disponibles auprès de Mr Blanch. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons vraiment apprécié de travailler sur ce projet malgré nos réticences en début de projet. En effet, nous craignions de ne trouver que peu d’intérêt au projet étant donné qu’il n’y avait pas de phase de développement dans ce dernier. Cependant, nous avons vite compris que la phase de conception est plus importante que le développement en lui-même car, le prototype que nous avons conçu est la base sur laquelle le logiciel à construire sera développé. Finalement, nous avons appris au cours de ce projet qu’il fallait prendre le temps de définir les fonctionnalités de ce dernier avant de le concevoir tête baissée.&lt;br /&gt;
&lt;br /&gt;
==Supports==&lt;br /&gt;
* Présentation (PPT,ODP, ...)&lt;br /&gt;
* [http:// site complet du projet]&lt;br /&gt;
* Photos&lt;br /&gt;
* Vidéo&lt;br /&gt;
* Flyer&lt;br /&gt;
* Poster&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Table_interactive_de_restaurant&amp;diff=10716</id>
		<title>Table interactive de restaurant</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Table_interactive_de_restaurant&amp;diff=10716"/>
		<updated>2013-04-09T13:28:58Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Description */  ajout d&amp;#039;un lien vers la Tabletop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* UE/Module: Projet Multimédia RICM4 option CM&lt;br /&gt;
* Enseignant RICM : Renaud Blanch&lt;br /&gt;
* Élèves RICM5 : ???&lt;br /&gt;
&lt;br /&gt;
en 500-1000 mots&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Pour le projet Multimédia de l’année 2010-2011, nous avons conçu une table interactive pour restaurant, nous avons tout d’abord décidé le sujet en partant sur différentes solutions d’aide à la prise de commande en restaurant (carte interactive sur tablette, …), nous nous sommes finalement mis d’accord sur une idée de table de restaurant tactile offrant aux clients diverses fonctionnalités tout au long de leur repas.&lt;br /&gt;
&lt;br /&gt;
Ce projet s&#039;appuie sur la table tactile &amp;quot;AIR NFC Tabletop&amp;quot; conçu également dans la salle AIR.&lt;br /&gt;
&lt;br /&gt;
==Démarche/Déroulement ...==&lt;br /&gt;
Nous avons alors effectué deux interviews ex-situ dans deux restaurants différents (le Metropolis en face de Polytech’Grenoble et l’Ontario sur les quais de Grenoble). A cours de ces dernières, nous avons appris les principales actions que doit faire le serveur tout au long de son travail, ils nous ont aussi conseillé sur quelles fonctionnalités seront acceptées facilement par les restaurants et celles qui seront automatiquement refusées. &amp;lt;br&amp;gt;A la suite de ces interviews, nous avons écrit les scenarii de travail puis nous avons effectué un brainstorming afin de mettre en commun toutes les idées auxquelles nous pouvions penser comme fonctionnalités de notre table, nous avons ensuite gardé celles qui avaient été acceptées à plus de quatre voix contre une. Les idées qui sont restées sont :&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
•	Gestion de plusieurs menus par table et leur affichage (un menu est disponible pour chacun des clients déjeunant à une table)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Affichage de précisions sur les plats (des renseignements supplémentaires sur la composition des plats sont disponibles)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Suggestions de vins/plats(en fonction du plat choisi, un vin s’accordant avec celui-ci est proposé ; le plat du jour est proposé)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Création d’une commande (un client peut commander son menu en autonomie sur la table)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Personnalisation d’une commande/d’un plat (un client peut demander le retrait d’un ingrédient particulier dans la fabrication d’un plat s’il le désire)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Affichage du total de la commande (chaque fois qu’un plat est ajouté dans une commande, le montant de celle-ci se met à jour automatiquement)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Envoi direct des commandes en cuisine lors de leur validation (la transmission d’une commande à la cuisine se fait sans l’intervention d’un serveur)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité de demande du débarrassage d’un plat (lorsqu’un client a terminé son plat, il peut accélérer le processus du service en demandant que l’on débarrasse son assiette)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Demander à faire une pause (un client peut demander une pause entre deux plats : la réalisation du plat suivant ne sera pas lancée tout de suite en cuisine)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Personnalisation par le serveur des fonctionnalités (le serveur a la possibilité d’ajouter/retirer des fonctionnalités d’utilisation de la table)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité de laisser une remarque au cuisinier (un client peut exprimer son ressenti sur le plat qu’il vient de manger ; son message est envoyé immédiatement en cuisine)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Gestion des ambiances (un « fond de table » peut être affiché sur la table au choix du client)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité de communiquer avec des appareils mobiles (un appareil photo, une caméra, etc. peuvent être pluggées sur la table de façon à y afficher des documents)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Manipulation directe (les éléments affichés sur la table peuvent être agrandis, rétrécis, déplacés…)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Reconnaissance de la forme des objets posés pour rendre l’affichage joli et fonctionnel (selon le type d’objet déposé sur la table, une animation sera « jouée » autour de celui-ci)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Mise à disposition d’un livre d’or (un client peut s’il le souhaite déposer un message témoignant de son appréciation du restaurant ou repas)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Personnalisation de l’affichage, mini-jeux… (un certain nombre de mini-jeux sont proposés au client pour se divertir)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité d’appel d’un serveur (le client peut appeler le serveur en cas de problème)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Suggestions dynamiques (les plats suggérés sont influencés par des paramètres de stocks, …)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Possibilité de compte client (un compte client permet de garder en mémoire les plats précédemment consommés, les ambiances affichés sur la table, …)&amp;lt;br&amp;gt;&lt;br /&gt;
•	Gestion de la fidélité (un client revenant souvent bénéficiera de réductions et promotions)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons alors conçu les scenarii de conception. Puis nous avons créé un prototype papier des différentes fonctionnalités de notre table. Nous avons créé une vidéo en Stop-Motion pour chaque scenario de conception. Ces vidéos sont disponibles auprès de Mr Blanch. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons vraiment apprécié de travailler sur ce projet malgré nos réticences en début de projet. En effet, nous craignions de ne trouver que peu d’intérêt au projet étant donné qu’il n’y avait pas de phase de développement dans ce dernier. Cependant, nous avons vite compris que la phase de conception est plus importante que le développement en lui-même car, le prototype que nous avons conçu est la base sur laquelle le logiciel à construire sera développé. Finalement, nous avons appris au cours de ce projet qu’il fallait prendre le temps de définir les fonctionnalités de ce dernier avant de le concevoir tête baissée.&lt;br /&gt;
&lt;br /&gt;
==Supports==&lt;br /&gt;
* Présentation (PPT,ODP, ...)&lt;br /&gt;
* [http:// site complet du projet]&lt;br /&gt;
* Photos&lt;br /&gt;
* Vidéo&lt;br /&gt;
* Flyer&lt;br /&gt;
* Poster&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Fusion_multi-capteurs_pour_table_tactile&amp;diff=6389</id>
		<title>Fusion multi-capteurs pour table tactile</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Fusion_multi-capteurs_pour_table_tactile&amp;diff=6389"/>
		<updated>2012-10-26T08:07:22Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: correction orthographique &amp;quot;des&amp;quot; &amp;gt; &amp;quot;de&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Enseignants : Didier Donsez, DIGITALE&lt;br /&gt;
&lt;br /&gt;
Eleves RICM4 : ???&lt;br /&gt;
&lt;br /&gt;
Les objectifs de ce projet sont d’expérimenter différents capteurs pour améliorer l&#039;interaction de plusieurs utilisateurs avec une table tactile.&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Pr%C3%AAt&amp;diff=5690</id>
		<title>Prêt</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Pr%C3%AAt&amp;diff=5690"/>
		<updated>2012-07-10T08:34:12Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Christophe Havard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Liste du matériel prêté=&lt;br /&gt;
Cette page ne doit être éditée que par les enseignants.&lt;br /&gt;
&lt;br /&gt;
==Projet M2PGI==&lt;br /&gt;
===Projet DronePRI===&lt;br /&gt;
* 1 ARDrone, avec 1 batterie et 1 chargeur (prété le 21/01/2011 par Didier Donsez à Thomas Calmant et François-Karim Laben, rendu le à)&lt;br /&gt;
* 1 Wiimote bleu + Nunchuck (made in China) (prété le 21/01/2011 par Didier Donsez à Thomas Calmant, rendu le à)&lt;br /&gt;
* 1 AVRStick (prété le 28/01/2011 par Didier Donsez à François-Karim Laben, rendu le à)&lt;br /&gt;
* 1 Compteur Geiger&lt;br /&gt;
* 1 Capteur de fumée&lt;br /&gt;
* 1 Capteur de méthane&lt;br /&gt;
* 1 Buzzer&lt;br /&gt;
* 1 émetteur ultrason&lt;br /&gt;
* 1 clé Inforad&lt;br /&gt;
* 2 dongles Bluetooth USB&lt;br /&gt;
* 1 routeur Linksys NSLU 2&lt;br /&gt;
* 1 plaque de montage&lt;br /&gt;
* des connecteurs divers et variés...&lt;br /&gt;
&lt;br /&gt;
En consommable :&lt;br /&gt;
* de la gaine&lt;br /&gt;
* du cablâge&lt;br /&gt;
* 3 micro prises type IDE&lt;br /&gt;
&lt;br /&gt;
===Projet Smartcard===&lt;br /&gt;
* 1 lecteur Touchatag&lt;br /&gt;
* 1 lecteur ASK RDR 237&lt;br /&gt;
* 1 lecteur Gemplus GCR410 + convertisseur US Serie + Adapteur PS2 USB&lt;br /&gt;
* JavaCard&lt;br /&gt;
* Tags&lt;br /&gt;
&lt;br /&gt;
===Projet Réseaux Sociaux Physiques===&lt;br /&gt;
* 1 kit ez430 Chronos  (prété le 4/2/2011 par Didier Donsez à Yann Diocet , rendu le à)&lt;br /&gt;
* 1 kit ez430 RF2480  (prété le 4/2/2011 par Didier Donsez à Yann Diocet , rendu le à)&lt;br /&gt;
* 1 STM32 Discovery (prété le 4/2/2011 par Didier Donsez à Yann Diocet , rendu le à)&lt;br /&gt;
* 1 Lauchpad 430  (prété le 4/2/2011 par Didier Donsez à Yann Diocet , rendu le à)&lt;br /&gt;
&lt;br /&gt;
==Projet PEIP ST Sport==&lt;br /&gt;
* 1 Arduino Uno + 5 DS1820 + Alimentation 4 piles + cable USB : Loic Boiton-Margant et Stefan Chitoraga (2/12/2012)&lt;br /&gt;
* 1 Multimetre USB Velleman DVM 1200 (prété le 16/01/2012)&lt;br /&gt;
* 1 relai 5V - 220 V [http://www.sparkfun.com/products/100 Relay SPDT Sealed] (prété le 16/01/2012)&lt;br /&gt;
&lt;br /&gt;
==Projet 3I4==&lt;br /&gt;
===Projet Drone===&lt;br /&gt;
* 1 ARDrone (prété le ??/01/2011 par Alina Voda à ???, rendu le à)&lt;br /&gt;
&lt;br /&gt;
===Mesure temperatureOne Wire===&lt;br /&gt;
*  USB Serial convertor [[Prolific PL 2303]] Deal Extreme (prété a Victorien Besse le 2/4/2012).&lt;br /&gt;
&lt;br /&gt;
==Projet 3I5==&lt;br /&gt;
===Projet Bille===&lt;br /&gt;
* 2 Servo moteurs&lt;br /&gt;
&lt;br /&gt;
==Projet RICM3==&lt;br /&gt;
&lt;br /&gt;
===Alexandre Corso (station méteo)===&lt;br /&gt;
* 1 [[Arduino]] UNO&lt;br /&gt;
* 1 [http://www.seeedstudio.com/depot/bees-shield-p-672.html?cPath=109 XBees shield] [http://www.seeedstudio.com/wiki/index.php?title=Bees_Shield wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Projets RICM4==&lt;br /&gt;
&lt;br /&gt;
===Projet [[GroundCTRL]]===&lt;br /&gt;
* 1 lecteur Tikitag + tags&lt;br /&gt;
* 1 Mac Mini (prété le 30/01/2012)&lt;br /&gt;
* 2 Servo moteurs (noir)&lt;br /&gt;
* 1 Arduino UNO&lt;br /&gt;
* 1 cable&lt;br /&gt;
* 1 plaque d&#039;essai&lt;br /&gt;
* 1 miroir rond&lt;br /&gt;
* 1 laser&lt;br /&gt;
* 1 cadenas a chiffre&lt;br /&gt;
&lt;br /&gt;
===Projet [[Proj-2011-2012-Home Security Sweet Home|HSSH]]===&lt;br /&gt;
* Supports de circuits - 2&lt;br /&gt;
* Arduino UNO + cable USB - 1&lt;br /&gt;
* Arduino FIO - 1&lt;br /&gt;
* XBEE - 2&lt;br /&gt;
* Buzzer - 1&lt;br /&gt;
* Ventilo - 2&lt;br /&gt;
* Capteur de smoke - 1&lt;br /&gt;
* Lecteur iButton - 1&lt;br /&gt;
* Carte iButton - 1&lt;br /&gt;
* Micro Servo moteur - 1&lt;br /&gt;
* Capteur de présence - 1&lt;br /&gt;
* Capteur de contact de porte - 1&lt;br /&gt;
* 433 MHz RF - 1&lt;br /&gt;
* Antenne wifi - 1&lt;br /&gt;
* Capteur de mouvement domotique - 1&lt;br /&gt;
Xbee&lt;br /&gt;
* 1 xbee pro S1&lt;br /&gt;
* 2 xbee pro S2&lt;br /&gt;
* 1 bees shield&lt;br /&gt;
* 1 FTDI-USB&lt;br /&gt;
* 1 Arduino Uno&lt;br /&gt;
&lt;br /&gt;
===Projet ArduiGrid===&lt;br /&gt;
* 4 Arduino Uno (prêtés le 7/02/2010 à  Thibault Jurado-Leduc par Didier Donsez)&lt;br /&gt;
* 1 Arduino Mega (prêtés le 7/02/2010 à Thibault Jurado-Leduc par Didier Donsez)&lt;br /&gt;
* 4 breadboards (grande) (prêtés le 7/02/2010 à  Thibault Jurado-Leduc par Didier Donsez)&lt;br /&gt;
* 5 cables USB (prêtés le 7/02/2010 à  Thibault Jurado-Leduc par Didier Donsez)&lt;br /&gt;
&lt;br /&gt;
===Projet AMO===&lt;br /&gt;
&#039;&#039;&#039;RICM4&#039;&#039;&#039;&lt;br /&gt;
* HTC Hero (prété le par Didier Donsez à  ??? , rendu le à)&lt;br /&gt;
* Archos Internet Tablet 101 (prété le par Didier Donsez à  ??? , rendu le à)&lt;br /&gt;
&#039;&#039;&#039;3I5&#039;&#039;&#039;&lt;br /&gt;
* 1 montre cardio + ceinture Kalenji 100 (prété le 7/02/2011 par Didier Donsez à Jonathan Odul , rendu le à Didier)&lt;br /&gt;
* 1 Arduino Uno (prété le 7/02/2011 par Didier Donsez à Jonathan Odul , rendu le à)&lt;br /&gt;
* 1 Arduino Uno (prété le ??? par Sophie Chareyson à ??? , rendu le à)&lt;br /&gt;
* 1 compteur de tour de roue cycliste&lt;br /&gt;
* 2 Arduino Lilypad (prété le ??? par Sophie Chareyson à ??? , rendu le à)&lt;br /&gt;
* 1 Shield Lilypad XBee (prété le 14/02 par Sophie Chareyson à ??? , rendu le à)&lt;br /&gt;
* 2 [http://www.sparkfun.com/products/8462 Lilypad accelerometer ADXL335] (prété le ??? par Sophie Chareyson à ??? , rendu le à)&lt;br /&gt;
* 2 USB FTDI 3.3V (prété le ??? par Sophie Chareyson à ??? , rendu le à)&lt;br /&gt;
* 1 Module XBee Pro antenne integré&lt;br /&gt;
* 2 Module XBee Pro + antenne externe&lt;br /&gt;
* 2 supports pile CR2032&lt;br /&gt;
* 1 support pile 1,5V AAA&lt;br /&gt;
* 1 Shield XBee Arduino Uno&lt;br /&gt;
* 1 capteur FSR  square&lt;br /&gt;
* 1 boutons pression Lilypad&lt;br /&gt;
* 5 lilypad LED&lt;br /&gt;
* 4 Lilypad bouton&lt;br /&gt;
* 1 emetteur/recepteur 433MHz (voir chapitre 9 du livre &amp;quot;Making things talk&amp;quot;)&lt;br /&gt;
* 1 livre &amp;quot;Making things talk&amp;quot;.&lt;br /&gt;
* 2 [http://www.seeedstudio.com/depot/bluetooth-bee-p-598.html?cPath=139_142 XBee Bluetooth]&lt;br /&gt;
* 2 [http://www.seeedstudio.com/depot/bees-shield-p-672.html?cPath=109 Xbee module sockets board]&lt;br /&gt;
* 1 Seeeduino Mega (prété semaine du 21/03 a Yakub)&lt;br /&gt;
* 1 Arduino UNO (preté le 29/03 a Yakub)&lt;br /&gt;
&lt;br /&gt;
* 2 Arduino FIO + 1 FTDI 3.3V  + 1 XBeeExplorer + 3 XBee Pro antenne intégrée prétés a Marielle AMANS, 10/10/11&lt;br /&gt;
&lt;br /&gt;
===Projet Tabletop===&lt;br /&gt;
* 1 table IKEA + 4 chaises paille&lt;br /&gt;
* 1 projecteur Optoma&lt;br /&gt;
* 1 web cam PS3&lt;br /&gt;
* illusminateur IR&lt;br /&gt;
&lt;br /&gt;
===Projet KiCTRL===&lt;br /&gt;
* 1 XBox 360 250GB + Kinect&lt;br /&gt;
* 1 mac mini&lt;br /&gt;
&lt;br /&gt;
===Home Security Sweet Home===&lt;br /&gt;
* 1 launchpad 430&lt;br /&gt;
* 1 Netduino&lt;br /&gt;
* 2 Arduino Uno&lt;br /&gt;
* 2 cables USB&lt;br /&gt;
* 2 trans/recepteur RF 433&lt;br /&gt;
* 1 contacteur de porte&lt;br /&gt;
* 1 miniPC Norhtec&lt;br /&gt;
* 1 mini haut parleur PC&lt;br /&gt;
* 1 buzzer 110 dB 12V&lt;br /&gt;
* 1 servo moteur&lt;br /&gt;
&lt;br /&gt;
===Projet Camera Basse Altitude===&lt;br /&gt;
* 1 [[STM32 Discovery#STM32F4-DISCOVERY|STM32F4 Discovery]]&lt;br /&gt;
* 1 Kit STM32F4 Camera&lt;br /&gt;
* 1 Ballon latex 1 mètre 3&lt;br /&gt;
&lt;br /&gt;
==Projet RICM5==&lt;br /&gt;
===Projet Biometrie===&lt;br /&gt;
* 2 cartes Arduino Uno (prété le par Laurent Besacier, rendu le à) (prété le 22/02 par Frederic Coudurier, rendu le à)&lt;br /&gt;
* 3 DS touch screens  (prété le par Laurent Besacier, rendu le à)&lt;br /&gt;
* 3 [http://www.sparkfun.com/products/9105 connecteurs DS touch screens]  (prété le par Laurent Besacier, rendu le à)&lt;br /&gt;
* 3 [http://www.sparkfun.com/products/9170 breakout DS touch screens]  (prété le par Laurent Besacier, rendu le à)&lt;br /&gt;
* ??? breadboards&lt;br /&gt;
* 1 MSP430 Launchpad&lt;br /&gt;
* 1 connecteur USB femelle type B&lt;br /&gt;
* 1 casque Sennheiser&lt;br /&gt;
&lt;br /&gt;
===Projet Biometrie 2012 Serrure Vocale (Jonathan Odul)===&lt;br /&gt;
* 1 Olimexino 328 + cable usb mini&lt;br /&gt;
* 1 Gache electrique&lt;br /&gt;
* 1 plaque d&#039;essai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projet SmartGrid===&lt;br /&gt;
* 1 Carte Arduino Uno (prété le par Didier Donsez, rendu le à)&lt;br /&gt;
* 2 Carte Arduino Fio + 2 batteries LiPO (prété le par Didier Donsez, rendu le à)&lt;br /&gt;
* 1 XBee Explorer USB&lt;br /&gt;
* 3 modules XBee + une antenne intégrée)&lt;br /&gt;
* 2 kits AVR Raven&lt;br /&gt;
* 1 programmateur AVR ISP STK500&lt;br /&gt;
* 1 programmateur JTAG Atmel AVR&lt;br /&gt;
* 1 station meteo WMR 200 (rendue a Didier Donsez)&lt;br /&gt;
* 2 ou 3? pinces aperometriques&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Christophe Havard===&lt;br /&gt;
(emprunté le 12/12/11 + rendu Avril 2012&lt;br /&gt;
* 2 modules XBee serie 2 Pro SMA&lt;br /&gt;
* 2 antennes 2.4 GHz&lt;br /&gt;
* 1 module XBee serie 2 Pro (antenne intégré)&lt;br /&gt;
* XBee USB explorer&lt;br /&gt;
* 1 grande plaque d&#039;essai&lt;br /&gt;
* 1 adaptateur de socket XBee&lt;br /&gt;
&lt;br /&gt;
===Projet GreenIT===&lt;br /&gt;
* 1 MSP430 Launchpad&lt;br /&gt;
* 1 Arduino Uno + cable USB&lt;br /&gt;
* 1 consometre &lt;br /&gt;
* 1 pince aperometrique&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projet Erasmus (Cesar Vicente, Jaume)===&lt;br /&gt;
* 1 ARDrone&lt;br /&gt;
* 1 tablette Archos&lt;br /&gt;
* 1 Wiimote + Nunchuck&lt;br /&gt;
&lt;br /&gt;
==Enseignants==&lt;br /&gt;
===Didier Donsez===&lt;br /&gt;
* 1 Arduino Uno (emprunté le 7/02/2011)&lt;br /&gt;
* 1 STM32 Discovery&lt;br /&gt;
&lt;br /&gt;
===Nicolas Palix===&lt;br /&gt;
* 1 STM32L Discovery + cable (emprunté le 23/01/2012)&lt;br /&gt;
&lt;br /&gt;
===Wassim Mansour (TIMA PhD student)===&lt;br /&gt;
* [[Papilio]] One 500K rendu&lt;br /&gt;
* [[Papilio]] Arcade Megawing  rendu&lt;br /&gt;
* 2 Joysticks  rendu&lt;br /&gt;
* Alim DC 12V  rendu&lt;br /&gt;
&lt;br /&gt;
Prété le 26/01/2012 &lt;br /&gt;
* 2 [[Arduino]] UNO (dont un avec le [http://www.sparkfun.com/products/9175 ZIF Socket 28-Pin 0.3&amp;quot; ]&lt;br /&gt;
* 2 Cables&lt;br /&gt;
* 4 ATMega 328 with Arduno bootloader&lt;br /&gt;
* 4 sockets 40 pins for ATMega 328&lt;br /&gt;
* 1 plaque d&#039;essai grand modele&lt;br /&gt;
* 3 quartz 16Mhz&lt;br /&gt;
* 2 protoboards &lt;br /&gt;
* 4 [[DS1820]] (capteur numérique de température communicant vers le protocole [[OneWire]])&lt;br /&gt;
* leds de couleur&lt;br /&gt;
* bouton poussoir pour le reset&lt;br /&gt;
* DC barrel&lt;br /&gt;
&lt;br /&gt;
===Pierre-Louis Aublin===&lt;br /&gt;
&lt;br /&gt;
===Olivier Richard===&lt;br /&gt;
* 1x Bus Pirate + 2 connectiques (base et à crochet): emprunté le  21/03/11&lt;br /&gt;
* 2x STM32-VL-Discovery: empruntés le 02/01/11&lt;br /&gt;
&lt;br /&gt;
===Laurent Besacier===&lt;br /&gt;
* XBox Kinect (emprunté le 18/04/2012) --&amp;gt; Stage Matthieu Moy&lt;br /&gt;
&lt;br /&gt;
===Sophie Chareyron===&lt;br /&gt;
* 1 Arduino Uno + cable + breadboard (emprunté le 14/02/2011)&lt;br /&gt;
* [[Magician Chassis]] sans Arduino&lt;br /&gt;
&lt;br /&gt;
===David Eon===&lt;br /&gt;
* 1 Arduino Uno (emprunté le 21/03/2011 a Didier)&lt;br /&gt;
&lt;br /&gt;
===Sacha Krokowiak===&lt;br /&gt;
* 1 Arduino Uno (cadeau)&lt;br /&gt;
&lt;br /&gt;
===Gilles Virone===&lt;br /&gt;
* 1 Arduino Uno + cable USB (17/07)&lt;br /&gt;
* 1 plaque de prototypage&lt;br /&gt;
* 1 potentiomêtre&lt;br /&gt;
&lt;br /&gt;
===Jean-Francois Monin===&lt;br /&gt;
* 1 STM32L Discovery  (2/1/12)&lt;br /&gt;
* 1 Arduino Uno + cable USB (2/1/12)&lt;br /&gt;
* 1 plaque de prototypage&lt;br /&gt;
* 1 potentiomêtre&lt;br /&gt;
* 1 photoresistance&lt;br /&gt;
* 1 servomoteur (petit modèle)&lt;br /&gt;
&lt;br /&gt;
===Pierre-Yves Gumery===&lt;br /&gt;
* 1 Arduino Uno + cable USB  (11/07)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Bruno Bzeznik===&lt;br /&gt;
* [[Melexis MLX90614]] Infrared Thermometer : 3 x AAA&lt;br /&gt;
&lt;br /&gt;
===Vincent Danjean===&lt;br /&gt;
* [[SEN-08630 PIR Motion Sensor]]&lt;br /&gt;
&lt;br /&gt;
===Thomas Leveque (LIG Adele)===&lt;br /&gt;
* 1 kit [[TI&#039;_Ez430-RF2480]] (29/08/2011)&lt;br /&gt;
&lt;br /&gt;
===Karel Heurtefeux (Verimag)===&lt;br /&gt;
emprunté le 1/3/2012&lt;br /&gt;
* 2 [[TI&#039; MSP430 Launchpad]]&lt;br /&gt;
* 1 [https://estore.ti.com/430BOOST-CC110L-CC110L-RF-Module-BoosterPack-P2734.aspx CC110L RF Module BoosterPack] pour l&#039;évaluation des communications sans fil du CC110L&lt;br /&gt;
&lt;br /&gt;
===Cedric Chauvenet (LIG DRAKKAR)===&lt;br /&gt;
Emprunté fin fevrier 2012&lt;br /&gt;
* 2 [[TI&#039; MSP430 Launchpad]]&lt;br /&gt;
* 1 [https://estore.ti.com/430BOOST-CC110L-CC110L-RF-Module-BoosterPack-P2734.aspx CC110L RF Module BoosterPack] pour l&#039;évaluation des communications sans fil du CC110L&lt;br /&gt;
* 1 programmateur Olimex AVR ATMega (USB?)&lt;br /&gt;
* 1 programmateur Olimex MSP430 (Parallele?)&lt;br /&gt;
&lt;br /&gt;
===Laurence Pierre===&lt;br /&gt;
* carte [[Papilio]] + carte MegaWing (preté le 25/5/2012)&lt;br /&gt;
&lt;br /&gt;
===Jean-Francois Bianco===&lt;br /&gt;
* Mac Mini (Juin 2012 rendu 21/06/2012)&lt;br /&gt;
&lt;br /&gt;
===Pierre Tchounikine===&lt;br /&gt;
* 1 Tablette Intel sous [[MeeGo]] (rendue sous Android 4.0 21/06/2012)&lt;br /&gt;
&lt;br /&gt;
===Christophe Havard===&lt;br /&gt;
* 2 Tablettes Intel sous [[MeeGo]]&lt;br /&gt;
* 3 multiprises&lt;br /&gt;
* 1 caisse à outils&lt;br /&gt;
* 1 visseuse électrique&lt;br /&gt;
* 1 perçeuse + forêts&lt;br /&gt;
* 2 écrans plats tactiles Iiyama ProLite T2250 MTS&lt;br /&gt;
* 1 mini-étau&lt;br /&gt;
* 1 scie à métaux&lt;br /&gt;
* 1 scie à bois&lt;br /&gt;
* 1 mac mini&lt;br /&gt;
&lt;br /&gt;
==Par équipement==&lt;br /&gt;
===Kit pédagogique Arduino===&lt;br /&gt;
(1 UNO + 1 Breadboard + jumper + ....)&lt;br /&gt;
* Sylvain Bouveret (ENSIMAG + LIG Steamer) emprunté le 9/07&lt;br /&gt;
* Etienne Gandrille (LIG ADELE) emprunté le 9/07&lt;br /&gt;
&lt;br /&gt;
===[[NFC Shield for Arduino]]===&lt;br /&gt;
* Etienne Gandrille (LIG ADELE) emprunté le 9/07&lt;br /&gt;
&lt;br /&gt;
===Ecran tactile multitouch IIYAMA ProLite T2250MTS===&lt;br /&gt;
* Brice Duhamel (rendu)&lt;br /&gt;
* Didier Donsez (rendu)&lt;br /&gt;
* Christophe Havard &amp;amp; Renaud Colin (2 ecrans)&lt;br /&gt;
&lt;br /&gt;
===[[STM3240G-EVAL]]===&lt;br /&gt;
* Salem Harrache (prété le 7 mai 2012)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Clavier sans fil Logitech K400===&lt;br /&gt;
* Christophe Havard prêté le 17/11/2012&lt;br /&gt;
* Brice Duhamel prêté le 17/11/2012&lt;br /&gt;
&lt;br /&gt;
===[[INEMO2|iNEMO2]] (5 unités)===&lt;br /&gt;
* Amin Cherbal (prêté le 22/04/2011)&lt;br /&gt;
* Issac Noé Garcia (prêté le 22/04/2011, rendu le 21/09/2011)&lt;br /&gt;
* David Eon (prêté le 21/04/2011)&lt;br /&gt;
* Sophie Chareyron (prêté le 21/04/2011)&lt;br /&gt;
* Olivier Richard (en réservation)&lt;br /&gt;
&lt;br /&gt;
===[[MuSA]]===&lt;br /&gt;
* Abdelkader Kersani (prêté le 20/04/2011)&lt;br /&gt;
* Romain Clément (prêté le 21/04/2011)&lt;br /&gt;
* Alban Fichet (prêté le 21/04/2011)&lt;br /&gt;
* Alina Voda (prêté le 21/04/2011)&lt;br /&gt;
* Sophie Chareyron (prêté le 21/04/2011)&lt;br /&gt;
* Olivier Richard (prêté le 22/04/2011)&lt;br /&gt;
* Florian Fourure (RICM4) (prété le 19/09/2011)&lt;br /&gt;
* Vincent Danjean (prété le 22/11/2011)&lt;br /&gt;
&lt;br /&gt;
===[[STM32 Discovery|STM32L-Discovery]]===&lt;br /&gt;
* David Eon (1 exemplaire)&lt;br /&gt;
* Olivier Richard (1 exemplaire)&lt;br /&gt;
* Fabien le Mentec (1 exemplaire)&lt;br /&gt;
* Sophie Chareyron (1 exemplaire)&lt;br /&gt;
* Pierre Corbineau ?&lt;br /&gt;
* Pascal Sicard (1 exemplaire)&lt;br /&gt;
* Olivier Gruber (1 exemplaire prêté le 21/09/2011)&lt;br /&gt;
* Alban Moreau (1 exemplaire prêté le 10/10/11)&lt;br /&gt;
* Didier Donsez (1 exemplaire)&lt;br /&gt;
&lt;br /&gt;
===[[STM32_Discovery#STM32F4-DISCOVERY|STM32F4-DISCOVERY]]===&lt;br /&gt;
5 exemplaires donnés par ST&lt;br /&gt;
* Olivier Richard (1 exemplaire)&lt;br /&gt;
* Fabien le Mentec (1 exemplaire)&lt;br /&gt;
&lt;br /&gt;
===[[Snowball PDK]]===&lt;br /&gt;
2 exemplaires donnés par ST Ericsson&lt;br /&gt;
* Olivier Richard (emprunté le 10/05/2012)&lt;br /&gt;
* Thomas Calment (emprunté le 10/05/2012)&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Pr%C3%AAt&amp;diff=5689</id>
		<title>Prêt</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Pr%C3%AAt&amp;diff=5689"/>
		<updated>2012-07-10T08:33:48Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Christophe Havard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Liste du matériel prêté=&lt;br /&gt;
Cette page ne doit être éditée que par les enseignants.&lt;br /&gt;
&lt;br /&gt;
==Projet M2PGI==&lt;br /&gt;
===Projet DronePRI===&lt;br /&gt;
* 1 ARDrone, avec 1 batterie et 1 chargeur (prété le 21/01/2011 par Didier Donsez à Thomas Calmant et François-Karim Laben, rendu le à)&lt;br /&gt;
* 1 Wiimote bleu + Nunchuck (made in China) (prété le 21/01/2011 par Didier Donsez à Thomas Calmant, rendu le à)&lt;br /&gt;
* 1 AVRStick (prété le 28/01/2011 par Didier Donsez à François-Karim Laben, rendu le à)&lt;br /&gt;
* 1 Compteur Geiger&lt;br /&gt;
* 1 Capteur de fumée&lt;br /&gt;
* 1 Capteur de méthane&lt;br /&gt;
* 1 Buzzer&lt;br /&gt;
* 1 émetteur ultrason&lt;br /&gt;
* 1 clé Inforad&lt;br /&gt;
* 2 dongles Bluetooth USB&lt;br /&gt;
* 1 routeur Linksys NSLU 2&lt;br /&gt;
* 1 plaque de montage&lt;br /&gt;
* des connecteurs divers et variés...&lt;br /&gt;
&lt;br /&gt;
En consommable :&lt;br /&gt;
* de la gaine&lt;br /&gt;
* du cablâge&lt;br /&gt;
* 3 micro prises type IDE&lt;br /&gt;
&lt;br /&gt;
===Projet Smartcard===&lt;br /&gt;
* 1 lecteur Touchatag&lt;br /&gt;
* 1 lecteur ASK RDR 237&lt;br /&gt;
* 1 lecteur Gemplus GCR410 + convertisseur US Serie + Adapteur PS2 USB&lt;br /&gt;
* JavaCard&lt;br /&gt;
* Tags&lt;br /&gt;
&lt;br /&gt;
===Projet Réseaux Sociaux Physiques===&lt;br /&gt;
* 1 kit ez430 Chronos  (prété le 4/2/2011 par Didier Donsez à Yann Diocet , rendu le à)&lt;br /&gt;
* 1 kit ez430 RF2480  (prété le 4/2/2011 par Didier Donsez à Yann Diocet , rendu le à)&lt;br /&gt;
* 1 STM32 Discovery (prété le 4/2/2011 par Didier Donsez à Yann Diocet , rendu le à)&lt;br /&gt;
* 1 Lauchpad 430  (prété le 4/2/2011 par Didier Donsez à Yann Diocet , rendu le à)&lt;br /&gt;
&lt;br /&gt;
==Projet PEIP ST Sport==&lt;br /&gt;
* 1 Arduino Uno + 5 DS1820 + Alimentation 4 piles + cable USB : Loic Boiton-Margant et Stefan Chitoraga (2/12/2012)&lt;br /&gt;
* 1 Multimetre USB Velleman DVM 1200 (prété le 16/01/2012)&lt;br /&gt;
* 1 relai 5V - 220 V [http://www.sparkfun.com/products/100 Relay SPDT Sealed] (prété le 16/01/2012)&lt;br /&gt;
&lt;br /&gt;
==Projet 3I4==&lt;br /&gt;
===Projet Drone===&lt;br /&gt;
* 1 ARDrone (prété le ??/01/2011 par Alina Voda à ???, rendu le à)&lt;br /&gt;
&lt;br /&gt;
===Mesure temperatureOne Wire===&lt;br /&gt;
*  USB Serial convertor [[Prolific PL 2303]] Deal Extreme (prété a Victorien Besse le 2/4/2012).&lt;br /&gt;
&lt;br /&gt;
==Projet 3I5==&lt;br /&gt;
===Projet Bille===&lt;br /&gt;
* 2 Servo moteurs&lt;br /&gt;
&lt;br /&gt;
==Projet RICM3==&lt;br /&gt;
&lt;br /&gt;
===Alexandre Corso (station méteo)===&lt;br /&gt;
* 1 [[Arduino]] UNO&lt;br /&gt;
* 1 [http://www.seeedstudio.com/depot/bees-shield-p-672.html?cPath=109 XBees shield] [http://www.seeedstudio.com/wiki/index.php?title=Bees_Shield wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Projets RICM4==&lt;br /&gt;
&lt;br /&gt;
===Projet [[GroundCTRL]]===&lt;br /&gt;
* 1 lecteur Tikitag + tags&lt;br /&gt;
* 1 Mac Mini (prété le 30/01/2012)&lt;br /&gt;
* 2 Servo moteurs (noir)&lt;br /&gt;
* 1 Arduino UNO&lt;br /&gt;
* 1 cable&lt;br /&gt;
* 1 plaque d&#039;essai&lt;br /&gt;
* 1 miroir rond&lt;br /&gt;
* 1 laser&lt;br /&gt;
* 1 cadenas a chiffre&lt;br /&gt;
&lt;br /&gt;
===Projet [[Proj-2011-2012-Home Security Sweet Home|HSSH]]===&lt;br /&gt;
* Supports de circuits - 2&lt;br /&gt;
* Arduino UNO + cable USB - 1&lt;br /&gt;
* Arduino FIO - 1&lt;br /&gt;
* XBEE - 2&lt;br /&gt;
* Buzzer - 1&lt;br /&gt;
* Ventilo - 2&lt;br /&gt;
* Capteur de smoke - 1&lt;br /&gt;
* Lecteur iButton - 1&lt;br /&gt;
* Carte iButton - 1&lt;br /&gt;
* Micro Servo moteur - 1&lt;br /&gt;
* Capteur de présence - 1&lt;br /&gt;
* Capteur de contact de porte - 1&lt;br /&gt;
* 433 MHz RF - 1&lt;br /&gt;
* Antenne wifi - 1&lt;br /&gt;
* Capteur de mouvement domotique - 1&lt;br /&gt;
Xbee&lt;br /&gt;
* 1 xbee pro S1&lt;br /&gt;
* 2 xbee pro S2&lt;br /&gt;
* 1 bees shield&lt;br /&gt;
* 1 FTDI-USB&lt;br /&gt;
* 1 Arduino Uno&lt;br /&gt;
&lt;br /&gt;
===Projet ArduiGrid===&lt;br /&gt;
* 4 Arduino Uno (prêtés le 7/02/2010 à  Thibault Jurado-Leduc par Didier Donsez)&lt;br /&gt;
* 1 Arduino Mega (prêtés le 7/02/2010 à Thibault Jurado-Leduc par Didier Donsez)&lt;br /&gt;
* 4 breadboards (grande) (prêtés le 7/02/2010 à  Thibault Jurado-Leduc par Didier Donsez)&lt;br /&gt;
* 5 cables USB (prêtés le 7/02/2010 à  Thibault Jurado-Leduc par Didier Donsez)&lt;br /&gt;
&lt;br /&gt;
===Projet AMO===&lt;br /&gt;
&#039;&#039;&#039;RICM4&#039;&#039;&#039;&lt;br /&gt;
* HTC Hero (prété le par Didier Donsez à  ??? , rendu le à)&lt;br /&gt;
* Archos Internet Tablet 101 (prété le par Didier Donsez à  ??? , rendu le à)&lt;br /&gt;
&#039;&#039;&#039;3I5&#039;&#039;&#039;&lt;br /&gt;
* 1 montre cardio + ceinture Kalenji 100 (prété le 7/02/2011 par Didier Donsez à Jonathan Odul , rendu le à Didier)&lt;br /&gt;
* 1 Arduino Uno (prété le 7/02/2011 par Didier Donsez à Jonathan Odul , rendu le à)&lt;br /&gt;
* 1 Arduino Uno (prété le ??? par Sophie Chareyson à ??? , rendu le à)&lt;br /&gt;
* 1 compteur de tour de roue cycliste&lt;br /&gt;
* 2 Arduino Lilypad (prété le ??? par Sophie Chareyson à ??? , rendu le à)&lt;br /&gt;
* 1 Shield Lilypad XBee (prété le 14/02 par Sophie Chareyson à ??? , rendu le à)&lt;br /&gt;
* 2 [http://www.sparkfun.com/products/8462 Lilypad accelerometer ADXL335] (prété le ??? par Sophie Chareyson à ??? , rendu le à)&lt;br /&gt;
* 2 USB FTDI 3.3V (prété le ??? par Sophie Chareyson à ??? , rendu le à)&lt;br /&gt;
* 1 Module XBee Pro antenne integré&lt;br /&gt;
* 2 Module XBee Pro + antenne externe&lt;br /&gt;
* 2 supports pile CR2032&lt;br /&gt;
* 1 support pile 1,5V AAA&lt;br /&gt;
* 1 Shield XBee Arduino Uno&lt;br /&gt;
* 1 capteur FSR  square&lt;br /&gt;
* 1 boutons pression Lilypad&lt;br /&gt;
* 5 lilypad LED&lt;br /&gt;
* 4 Lilypad bouton&lt;br /&gt;
* 1 emetteur/recepteur 433MHz (voir chapitre 9 du livre &amp;quot;Making things talk&amp;quot;)&lt;br /&gt;
* 1 livre &amp;quot;Making things talk&amp;quot;.&lt;br /&gt;
* 2 [http://www.seeedstudio.com/depot/bluetooth-bee-p-598.html?cPath=139_142 XBee Bluetooth]&lt;br /&gt;
* 2 [http://www.seeedstudio.com/depot/bees-shield-p-672.html?cPath=109 Xbee module sockets board]&lt;br /&gt;
* 1 Seeeduino Mega (prété semaine du 21/03 a Yakub)&lt;br /&gt;
* 1 Arduino UNO (preté le 29/03 a Yakub)&lt;br /&gt;
&lt;br /&gt;
* 2 Arduino FIO + 1 FTDI 3.3V  + 1 XBeeExplorer + 3 XBee Pro antenne intégrée prétés a Marielle AMANS, 10/10/11&lt;br /&gt;
&lt;br /&gt;
===Projet Tabletop===&lt;br /&gt;
* 1 table IKEA + 4 chaises paille&lt;br /&gt;
* 1 projecteur Optoma&lt;br /&gt;
* 1 web cam PS3&lt;br /&gt;
* illusminateur IR&lt;br /&gt;
&lt;br /&gt;
===Projet KiCTRL===&lt;br /&gt;
* 1 XBox 360 250GB + Kinect&lt;br /&gt;
* 1 mac mini&lt;br /&gt;
&lt;br /&gt;
===Home Security Sweet Home===&lt;br /&gt;
* 1 launchpad 430&lt;br /&gt;
* 1 Netduino&lt;br /&gt;
* 2 Arduino Uno&lt;br /&gt;
* 2 cables USB&lt;br /&gt;
* 2 trans/recepteur RF 433&lt;br /&gt;
* 1 contacteur de porte&lt;br /&gt;
* 1 miniPC Norhtec&lt;br /&gt;
* 1 mini haut parleur PC&lt;br /&gt;
* 1 buzzer 110 dB 12V&lt;br /&gt;
* 1 servo moteur&lt;br /&gt;
&lt;br /&gt;
===Projet Camera Basse Altitude===&lt;br /&gt;
* 1 [[STM32 Discovery#STM32F4-DISCOVERY|STM32F4 Discovery]]&lt;br /&gt;
* 1 Kit STM32F4 Camera&lt;br /&gt;
* 1 Ballon latex 1 mètre 3&lt;br /&gt;
&lt;br /&gt;
==Projet RICM5==&lt;br /&gt;
===Projet Biometrie===&lt;br /&gt;
* 2 cartes Arduino Uno (prété le par Laurent Besacier, rendu le à) (prété le 22/02 par Frederic Coudurier, rendu le à)&lt;br /&gt;
* 3 DS touch screens  (prété le par Laurent Besacier, rendu le à)&lt;br /&gt;
* 3 [http://www.sparkfun.com/products/9105 connecteurs DS touch screens]  (prété le par Laurent Besacier, rendu le à)&lt;br /&gt;
* 3 [http://www.sparkfun.com/products/9170 breakout DS touch screens]  (prété le par Laurent Besacier, rendu le à)&lt;br /&gt;
* ??? breadboards&lt;br /&gt;
* 1 MSP430 Launchpad&lt;br /&gt;
* 1 connecteur USB femelle type B&lt;br /&gt;
* 1 casque Sennheiser&lt;br /&gt;
&lt;br /&gt;
===Projet Biometrie 2012 Serrure Vocale (Jonathan Odul)===&lt;br /&gt;
* 1 Olimexino 328 + cable usb mini&lt;br /&gt;
* 1 Gache electrique&lt;br /&gt;
* 1 plaque d&#039;essai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projet SmartGrid===&lt;br /&gt;
* 1 Carte Arduino Uno (prété le par Didier Donsez, rendu le à)&lt;br /&gt;
* 2 Carte Arduino Fio + 2 batteries LiPO (prété le par Didier Donsez, rendu le à)&lt;br /&gt;
* 1 XBee Explorer USB&lt;br /&gt;
* 3 modules XBee + une antenne intégrée)&lt;br /&gt;
* 2 kits AVR Raven&lt;br /&gt;
* 1 programmateur AVR ISP STK500&lt;br /&gt;
* 1 programmateur JTAG Atmel AVR&lt;br /&gt;
* 1 station meteo WMR 200 (rendue a Didier Donsez)&lt;br /&gt;
* 2 ou 3? pinces aperometriques&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Christophe Havard===&lt;br /&gt;
(emprunté le 12/12/11)&lt;br /&gt;
* 2 modules XBee serie 2 Pro SMA&lt;br /&gt;
* 2 antennes 2.4 GHz&lt;br /&gt;
* 1 module XBee serie 2 Pro (antenne intégré)&lt;br /&gt;
* XBee USB explorer&lt;br /&gt;
* 1 grande plaque d&#039;essai&lt;br /&gt;
* 1 adaptateur de socket XBee&lt;br /&gt;
&lt;br /&gt;
===Projet GreenIT===&lt;br /&gt;
* 1 MSP430 Launchpad&lt;br /&gt;
* 1 Arduino Uno + cable USB&lt;br /&gt;
* 1 consometre &lt;br /&gt;
* 1 pince aperometrique&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projet Erasmus (Cesar Vicente, Jaume)===&lt;br /&gt;
* 1 ARDrone&lt;br /&gt;
* 1 tablette Archos&lt;br /&gt;
* 1 Wiimote + Nunchuck&lt;br /&gt;
&lt;br /&gt;
==Enseignants==&lt;br /&gt;
===Didier Donsez===&lt;br /&gt;
* 1 Arduino Uno (emprunté le 7/02/2011)&lt;br /&gt;
* 1 STM32 Discovery&lt;br /&gt;
&lt;br /&gt;
===Nicolas Palix===&lt;br /&gt;
* 1 STM32L Discovery + cable (emprunté le 23/01/2012)&lt;br /&gt;
&lt;br /&gt;
===Wassim Mansour (TIMA PhD student)===&lt;br /&gt;
* [[Papilio]] One 500K rendu&lt;br /&gt;
* [[Papilio]] Arcade Megawing  rendu&lt;br /&gt;
* 2 Joysticks  rendu&lt;br /&gt;
* Alim DC 12V  rendu&lt;br /&gt;
&lt;br /&gt;
Prété le 26/01/2012 &lt;br /&gt;
* 2 [[Arduino]] UNO (dont un avec le [http://www.sparkfun.com/products/9175 ZIF Socket 28-Pin 0.3&amp;quot; ]&lt;br /&gt;
* 2 Cables&lt;br /&gt;
* 4 ATMega 328 with Arduno bootloader&lt;br /&gt;
* 4 sockets 40 pins for ATMega 328&lt;br /&gt;
* 1 plaque d&#039;essai grand modele&lt;br /&gt;
* 3 quartz 16Mhz&lt;br /&gt;
* 2 protoboards &lt;br /&gt;
* 4 [[DS1820]] (capteur numérique de température communicant vers le protocole [[OneWire]])&lt;br /&gt;
* leds de couleur&lt;br /&gt;
* bouton poussoir pour le reset&lt;br /&gt;
* DC barrel&lt;br /&gt;
&lt;br /&gt;
===Pierre-Louis Aublin===&lt;br /&gt;
&lt;br /&gt;
===Olivier Richard===&lt;br /&gt;
* 1x Bus Pirate + 2 connectiques (base et à crochet): emprunté le  21/03/11&lt;br /&gt;
* 2x STM32-VL-Discovery: empruntés le 02/01/11&lt;br /&gt;
&lt;br /&gt;
===Laurent Besacier===&lt;br /&gt;
* XBox Kinect (emprunté le 18/04/2012) --&amp;gt; Stage Matthieu Moy&lt;br /&gt;
&lt;br /&gt;
===Sophie Chareyron===&lt;br /&gt;
* 1 Arduino Uno + cable + breadboard (emprunté le 14/02/2011)&lt;br /&gt;
* [[Magician Chassis]] sans Arduino&lt;br /&gt;
&lt;br /&gt;
===David Eon===&lt;br /&gt;
* 1 Arduino Uno (emprunté le 21/03/2011 a Didier)&lt;br /&gt;
&lt;br /&gt;
===Sacha Krokowiak===&lt;br /&gt;
* 1 Arduino Uno (cadeau)&lt;br /&gt;
&lt;br /&gt;
===Gilles Virone===&lt;br /&gt;
* 1 Arduino Uno + cable USB (17/07)&lt;br /&gt;
* 1 plaque de prototypage&lt;br /&gt;
* 1 potentiomêtre&lt;br /&gt;
&lt;br /&gt;
===Jean-Francois Monin===&lt;br /&gt;
* 1 STM32L Discovery  (2/1/12)&lt;br /&gt;
* 1 Arduino Uno + cable USB (2/1/12)&lt;br /&gt;
* 1 plaque de prototypage&lt;br /&gt;
* 1 potentiomêtre&lt;br /&gt;
* 1 photoresistance&lt;br /&gt;
* 1 servomoteur (petit modèle)&lt;br /&gt;
&lt;br /&gt;
===Pierre-Yves Gumery===&lt;br /&gt;
* 1 Arduino Uno + cable USB  (11/07)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Bruno Bzeznik===&lt;br /&gt;
* [[Melexis MLX90614]] Infrared Thermometer : 3 x AAA&lt;br /&gt;
&lt;br /&gt;
===Vincent Danjean===&lt;br /&gt;
* [[SEN-08630 PIR Motion Sensor]]&lt;br /&gt;
&lt;br /&gt;
===Thomas Leveque (LIG Adele)===&lt;br /&gt;
* 1 kit [[TI&#039;_Ez430-RF2480]] (29/08/2011)&lt;br /&gt;
&lt;br /&gt;
===Karel Heurtefeux (Verimag)===&lt;br /&gt;
emprunté le 1/3/2012&lt;br /&gt;
* 2 [[TI&#039; MSP430 Launchpad]]&lt;br /&gt;
* 1 [https://estore.ti.com/430BOOST-CC110L-CC110L-RF-Module-BoosterPack-P2734.aspx CC110L RF Module BoosterPack] pour l&#039;évaluation des communications sans fil du CC110L&lt;br /&gt;
&lt;br /&gt;
===Cedric Chauvenet (LIG DRAKKAR)===&lt;br /&gt;
Emprunté fin fevrier 2012&lt;br /&gt;
* 2 [[TI&#039; MSP430 Launchpad]]&lt;br /&gt;
* 1 [https://estore.ti.com/430BOOST-CC110L-CC110L-RF-Module-BoosterPack-P2734.aspx CC110L RF Module BoosterPack] pour l&#039;évaluation des communications sans fil du CC110L&lt;br /&gt;
* 1 programmateur Olimex AVR ATMega (USB?)&lt;br /&gt;
* 1 programmateur Olimex MSP430 (Parallele?)&lt;br /&gt;
&lt;br /&gt;
===Laurence Pierre===&lt;br /&gt;
* carte [[Papilio]] + carte MegaWing (preté le 25/5/2012)&lt;br /&gt;
&lt;br /&gt;
===Jean-Francois Bianco===&lt;br /&gt;
* Mac Mini (Juin 2012 rendu 21/06/2012)&lt;br /&gt;
&lt;br /&gt;
===Pierre Tchounikine===&lt;br /&gt;
* 1 Tablette Intel sous [[MeeGo]] (rendue sous Android 4.0 21/06/2012)&lt;br /&gt;
&lt;br /&gt;
===Christophe Havard===&lt;br /&gt;
* 2 Tablettes Intel sous [[MeeGo]]&lt;br /&gt;
* 3 multiprises&lt;br /&gt;
* 1 caisse à outils&lt;br /&gt;
* 1 visseuse électrique&lt;br /&gt;
* 1 perçeuse + forêts&lt;br /&gt;
* 2 écrans plats tactiles Iiyama ProLite T2250 MTS&lt;br /&gt;
* 1 mini-étau&lt;br /&gt;
* 1 scie à métaux&lt;br /&gt;
* 1 scie à bois&lt;br /&gt;
* 1 mac mini&lt;br /&gt;
&lt;br /&gt;
==Par équipement==&lt;br /&gt;
===Kit pédagogique Arduino===&lt;br /&gt;
(1 UNO + 1 Breadboard + jumper + ....)&lt;br /&gt;
* Sylvain Bouveret (ENSIMAG + LIG Steamer) emprunté le 9/07&lt;br /&gt;
* Etienne Gandrille (LIG ADELE) emprunté le 9/07&lt;br /&gt;
&lt;br /&gt;
===[[NFC Shield for Arduino]]===&lt;br /&gt;
* Etienne Gandrille (LIG ADELE) emprunté le 9/07&lt;br /&gt;
&lt;br /&gt;
===Ecran tactile multitouch IIYAMA ProLite T2250MTS===&lt;br /&gt;
* Brice Duhamel (rendu)&lt;br /&gt;
* Didier Donsez (rendu)&lt;br /&gt;
* Christophe Havard &amp;amp; Renaud Colin (2 ecrans)&lt;br /&gt;
&lt;br /&gt;
===[[STM3240G-EVAL]]===&lt;br /&gt;
* Salem Harrache (prété le 7 mai 2012)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Clavier sans fil Logitech K400===&lt;br /&gt;
* Christophe Havard prêté le 17/11/2012&lt;br /&gt;
* Brice Duhamel prêté le 17/11/2012&lt;br /&gt;
&lt;br /&gt;
===[[INEMO2|iNEMO2]] (5 unités)===&lt;br /&gt;
* Amin Cherbal (prêté le 22/04/2011)&lt;br /&gt;
* Issac Noé Garcia (prêté le 22/04/2011, rendu le 21/09/2011)&lt;br /&gt;
* David Eon (prêté le 21/04/2011)&lt;br /&gt;
* Sophie Chareyron (prêté le 21/04/2011)&lt;br /&gt;
* Olivier Richard (en réservation)&lt;br /&gt;
&lt;br /&gt;
===[[MuSA]]===&lt;br /&gt;
* Abdelkader Kersani (prêté le 20/04/2011)&lt;br /&gt;
* Romain Clément (prêté le 21/04/2011)&lt;br /&gt;
* Alban Fichet (prêté le 21/04/2011)&lt;br /&gt;
* Alina Voda (prêté le 21/04/2011)&lt;br /&gt;
* Sophie Chareyron (prêté le 21/04/2011)&lt;br /&gt;
* Olivier Richard (prêté le 22/04/2011)&lt;br /&gt;
* Florian Fourure (RICM4) (prété le 19/09/2011)&lt;br /&gt;
* Vincent Danjean (prété le 22/11/2011)&lt;br /&gt;
&lt;br /&gt;
===[[STM32 Discovery|STM32L-Discovery]]===&lt;br /&gt;
* David Eon (1 exemplaire)&lt;br /&gt;
* Olivier Richard (1 exemplaire)&lt;br /&gt;
* Fabien le Mentec (1 exemplaire)&lt;br /&gt;
* Sophie Chareyron (1 exemplaire)&lt;br /&gt;
* Pierre Corbineau ?&lt;br /&gt;
* Pascal Sicard (1 exemplaire)&lt;br /&gt;
* Olivier Gruber (1 exemplaire prêté le 21/09/2011)&lt;br /&gt;
* Alban Moreau (1 exemplaire prêté le 10/10/11)&lt;br /&gt;
* Didier Donsez (1 exemplaire)&lt;br /&gt;
&lt;br /&gt;
===[[STM32_Discovery#STM32F4-DISCOVERY|STM32F4-DISCOVERY]]===&lt;br /&gt;
5 exemplaires donnés par ST&lt;br /&gt;
* Olivier Richard (1 exemplaire)&lt;br /&gt;
* Fabien le Mentec (1 exemplaire)&lt;br /&gt;
&lt;br /&gt;
===[[Snowball PDK]]===&lt;br /&gt;
2 exemplaires donnés par ST Ericsson&lt;br /&gt;
* Olivier Richard (emprunté le 10/05/2012)&lt;br /&gt;
* Thomas Calment (emprunté le 10/05/2012)&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=PAGE_WIKI_ETUDIANTS_2011-12_SIGNATURES&amp;diff=4902</id>
		<title>PAGE WIKI ETUDIANTS 2011-12 SIGNATURES</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=PAGE_WIKI_ETUDIANTS_2011-12_SIGNATURES&amp;diff=4902"/>
		<updated>2012-03-27T08:36:21Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* IHM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du projet=&lt;br /&gt;
&lt;br /&gt;
Le projet de Biométrie &amp;quot;Acquisition et reconnaissance de signatures&amp;quot; consiste à enregistrer une signature numérique d&#039;un client ou utilisateur afin de permettre ultérieurement une identification grâce à cette modalité biométrique.&lt;br /&gt;
&lt;br /&gt;
=Contexte=&lt;br /&gt;
===Etude de l&#039;existant===&lt;br /&gt;
&lt;br /&gt;
Ce projet d&#039;acquisition et de reconnaissance de signatures a déjà été traité par une équipe d&#039;étudiants en 2010-2011. Nous avons donc étudié ce qui avait été réalisé afin de ne pas perdre les efforts déjà fournis. De cette étude nous avons retenu les conseils et remarques faits sur la partie algorithmique de comparaison de signatures. De plus, nous allons reprendre quelques idées de leur IHM.&lt;br /&gt;
Pour plus de détails, consulter les parties &amp;quot;Algorithmes&amp;quot; et &amp;quot;IHM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Suites prévues===&lt;br /&gt;
L&#039;année prochaine, une nouvelle équipe reprendra surement ce projet de biométrie. Il est donc important de laisser une bonne documentation et des conseils.&lt;br /&gt;
&lt;br /&gt;
=Cadre de réponse=&lt;br /&gt;
&lt;br /&gt;
Nous réaliserons une IHM qui nous permettra, d&#039;une part, d&#039;enregistrer un nouvel utilisateur dans la base de données (acquisition de signature), et d&#039;autre part de tester l&#039;identification d&#039;un utilisateur. Pour cette identification, la signature sera comparée au modèle calculé et enregistré. Afin de pouvoir effectuer cette comparaison, nous récupèrerons, lors de l&#039;acquisition des signatures, différentes informations qui nous permettront d&#039;appliquer des algorithmes de comparaison de signatures (coordonnées de chaque point, pression du stylet, temps). Il faudra donc étudier les différentes méthodes possibles de comparaison de ces signatures et implémenter l&#039;algorithme conçu à partir de cette étude.&lt;br /&gt;
&lt;br /&gt;
=Organisation de l&#039;équipe=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Renaud Collin&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
*Chef de projet&lt;br /&gt;
*Responsable documents,&lt;br /&gt;
*Etude de l&#039;existant&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flavien Garcia &amp;amp; Corentin Foucault :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Etude de l&#039;existant,&lt;br /&gt;
*Construction et codage de l&#039;algorithme&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Christophe Havard :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Montage DS + Arduino,&lt;br /&gt;
*Conception et codage IHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thibaud Michel&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
*Acquisition des données (depuis le montage DS + Arduino et depuis la tablette),&lt;br /&gt;
*Mise en place de la base de données,&lt;br /&gt;
*Conception et codage IHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aurélie Moiroux :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Acquisition des données depuis la tablette,&lt;br /&gt;
*Conception et codage IHM&lt;br /&gt;
&lt;br /&gt;
=Diagramme de Gantt prévisionnel=&lt;br /&gt;
&lt;br /&gt;
[[File:Diagramme-de-Gantt-previsionnel.png]]&lt;br /&gt;
&lt;br /&gt;
=Diagramme de Gantt effectif=&lt;br /&gt;
&lt;br /&gt;
[[File:Diagramme-de-Gantt.png]]&lt;br /&gt;
&lt;br /&gt;
=Matériel=&lt;br /&gt;
===Tablette Bamboo CTH-460===&lt;br /&gt;
&lt;br /&gt;
Cette tablette est un ajout de matériel par rapport à l&#039;année précédente. Ainsi, nous avons pour notre projet deux interfaces pour l&#039;acquisition des signatures. Cela nous a donc amené à étudier la tablette graphique et les librairies Java permettant de nous en servir. &lt;br /&gt;
L&#039;IHM a également été modifiée pour permettre à l&#039;utilisateur de choisir quelle interface d&#039;acquisition il souhaite utiliser. &lt;br /&gt;
&lt;br /&gt;
*La librairie permettant d&#039;utiliser cette tablette est : Jpen [http://sourceforge.net/apps/mediawiki/jpen/index.php?title=Main_Page]&lt;br /&gt;
*Le driver de la tablette CTH-460 est disponible ici : [http://www.wacom-asia.com/download/download_index.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bamboo.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Montage Arduino + Ecran de DS===&lt;br /&gt;
[[File:Arduino_DS.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Arduino.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Arduino2.png]]&lt;br /&gt;
&lt;br /&gt;
=IHM=&lt;br /&gt;
&lt;br /&gt;
Lorsque l&#039;utilisateur démarre l&#039;application, celle-ci s&#039;ouvre sur l&#039;onglet &amp;quot;Nouvel utilisateur&amp;quot;. Si il n&#039;a pas encore de compte, il doit alors rentrer son nom, son prénom, et procéder à l&#039;acquisition de cinq signatures (la même) afin de pouvoir s&#039;enregistrer. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Onglet &amp;quot;Nouvel Utilisateur&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:ihm1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois que l&#039;utilisateur possède un compte, il peut se rendre sur l&#039;onglet &amp;quot;Identification&amp;quot;. Afin de s&#039;authentifier l’utilisateur doit sélectionner son nom, puis signer de la même signature que lors de l&#039;acquisition. &lt;br /&gt;
&lt;br /&gt;
Nous avons ajouté une option &amp;quot;faussaire&amp;quot; sur cette onglet. Lorsque l&#039;option est cochée, la signature du compte sur lequel l&#039;utilisateur essaie de s&#039;identifier est affiché sur l&#039;écran de signature. Cette option a été mise en place pour tester d&#039;avantage notre système. Ainsi nous pouvons voir si, avec le dessin de la signature, un imposteur peut réussir à s&#039;identifier. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Onglet &amp;quot;Identification&amp;quot;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
[[File:ihm2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système affiche alors la réponse de l&#039;authentification : la réussite ou l’échec. Une question apparaît également afin d&#039;établir des statistiques de performance du système. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ihm21.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Onglet &amp;quot;Infos&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lorsque l&#039;utilisateur a tenté de s&#039;identifier, il peut alors consulter différentes informations liées à sa tentative : &lt;br /&gt;
&lt;br /&gt;
[[File:ihm31.png]]&lt;br /&gt;
&#039;&#039;Le pourcentage de fausses acceptations et faux refus&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:ihm32.png]]&lt;br /&gt;
&#039;&#039;Un graphe qui affiche l&#039;évolution de la pression sur la signature référence de l&#039;utilisateur et sur sa dernière acquisition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:ihm33.png]][[File:ihm34.png]]&lt;br /&gt;
&#039;&#039;Les informations du traitement algorithmique comme l&#039;arbre de décision ou les résultats des différentes étapes de l&#039;algorithme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Algorithmes=&lt;br /&gt;
&lt;br /&gt;
Un système de reconnaissance par signature nécessite l&#039;application d&#039;algorithmes, que ce soit dans un premier temps pour obtenir des acquisitions de qualité, qu&#039;ensuite pour pouvoir les comparer de manière cohérente et enfin construire un modèle efficace de reconnaissance.&lt;br /&gt;
&lt;br /&gt;
==Prétraitement des acquisitions==&lt;br /&gt;
Les acquisitions obtenues par l&#039;intermédiaire de l&#039;interface, pour représenter la signature d&#039;un individu, sont des listes de points, auxquels sont rattachés une abscisse, une ordonnée, une valeur de pression et un temps d&#039;acquisition.&lt;br /&gt;
Cependant, il est nécessaire d&#039;appliquer un prétraitement à ces acquisitions afin d&#039;en augmenter le nombre de points, corriger les différences entre des signatures successives (décalage, orientation et taille) et également obtenir un nombre de points fixe pour toutes les acquisitions pour pouvoir les comparer.&lt;br /&gt;
&lt;br /&gt;
Voilà une image d&#039;une acquisition originale:&lt;br /&gt;
&lt;br /&gt;
[[File:0_origine_Aurélie_4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
===1. Ré-échantillonnage sur le temps===&lt;br /&gt;
La première étape est propre à l&#039;utilisation de la tablette Bamboo et consiste à ne conserver qu&#039;un seul point par temps d&#039;acquisition. En effet, le système d&#039;acquisition de la tablette renvoie la liste de points acquis durant chaque période de 16ms et attache à chaque point cette période d&#039;acquisition plutôt que le temps réel.&lt;br /&gt;
Par exemple les points acquis en réalité aux temps 11ms et 14,5ms seront enregistrés avec un temps d&#039;acquisition de 16ms alors qu&#039;un point acquis au temps 16,8ms sera enregistré avec un temps d&#039;acquisition de 32ms.&lt;br /&gt;
Nous avons considéré que ce temps de 16ms étant relativement court, on ne conserverait qu&#039;un seul point pour un même temps d&#039;acquisition (par défaut le premier de la liste).&lt;br /&gt;
&lt;br /&gt;
De plus, on a également considéré que deux points espacés d&#039;un temps d&#039;acquisition supérieur à 32ms correspondait à un lever de stylo.&lt;br /&gt;
&lt;br /&gt;
===2. Interpolation===&lt;br /&gt;
&lt;br /&gt;
On applique une interpolation cubique sur l&#039;acquisition dans le but d&#039;obtenir un rendu de signature plus continu et lisse, et mieux comprendre les courbures de la signature d&#039;un individu. De plus, il est nécessaire de travailler sur des données assez fournies notamment pour des algorithmes de recouvrement par exemple.&lt;br /&gt;
&lt;br /&gt;
[[File:0_interpolee_Aurélie_4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
===3. Analyse en composantes principales===&lt;br /&gt;
&lt;br /&gt;
[[File:PCA.png]]&lt;br /&gt;
&lt;br /&gt;
L&#039;ACP est utilisé pour trouver les informations mathématiques qui décrivent la position des points: {{rouge|l&#039;axe principal}} et {{bleu|l&#039;axe secondaire}} et le centre de gravité d&#039;une forme binaire.&lt;br /&gt;
&lt;br /&gt;
===4. Centrage et Rotation===&lt;br /&gt;
[[File:0_centree_Aurélie_4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:0_droite_Aurélie_4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Pour réduire les problèmes de décalage, entre l&#039;image à tester et le modèle, on utilise les informations fournies par l&#039;ACP.&lt;br /&gt;
&lt;br /&gt;
Le centre de gravité permet de centrer l&#039;image comme le modèle.&lt;br /&gt;
&lt;br /&gt;
Les deux axes qui décrivent l&#039;alignement des points permettent de faire la rotation. Cette rotation est calculée à partir de l&#039;angle entre l&#039;axe principal et l&#039;axe horizontal.&lt;br /&gt;
&lt;br /&gt;
===5. Normalisation (Zoom)===&lt;br /&gt;
[[File:0_normalisee_Aurélie_4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le zoom est calculé pour obtenir la taille la plus grande possible pour l&#039;image. &lt;br /&gt;
&lt;br /&gt;
La distance entre le centre et le point le plus proche du rebord de l&#039;image évaluée = (distance max). &lt;br /&gt;
&lt;br /&gt;
Chaque point subit alors une translation proportionnelle au rapport (distance du point/distance max)*(demi-largeur de l&#039;image).&lt;br /&gt;
&lt;br /&gt;
===6. Ré-échantillonnage sur le nombre de points===&lt;br /&gt;
&lt;br /&gt;
Suivant la durée totale d&#039;acquisition, le nombre de points acquis peut être plus ou moins important et les précédentes étapes de prétraitement peuvent en supprimer quelques-uns également. Il est donc essentiel d&#039;effectuer un ré-échantillonnage sur les acquisitions après normalisation pour obtenir un nombre de points fixe (2000 points choisis actuellement) pour que les différents algorithmes de comparaison soient cohérents.&lt;br /&gt;
On a choisi d&#039;interpoler des points de manière uniforme si le nombre de points était inférieur à 2000 et d&#039;en supprimer, également de manière uniforme, si ce nombre était supérieur.&lt;br /&gt;
&lt;br /&gt;
==Algorithmes de comparaison==&lt;br /&gt;
&lt;br /&gt;
Pour la création du modèle (voir plus loin), il est nécessaire d&#039;obtenir un ensemble de données de comparaisons. On a ainsi sélectionné les comparaisons suivantes&lt;br /&gt;
&lt;br /&gt;
===Comparaisons simplistes===&lt;br /&gt;
&lt;br /&gt;
*Différence de temps total d&#039;acquisition&lt;br /&gt;
*Différence de nombre de lever de stylos&lt;br /&gt;
*Différence de pression moyenne&lt;br /&gt;
*...&lt;br /&gt;
&lt;br /&gt;
===Coefficient de corrélation temporel===&lt;br /&gt;
&lt;br /&gt;
Cette méthode permet de calculer la ressemblance existante entre deux séries de données de même longueur, à savoir l&#039;évolution des coordonnées en fonction du temps.&lt;br /&gt;
&lt;br /&gt;
[[File:Equa.png]]&lt;br /&gt;
&lt;br /&gt;
Le Résultat varie entre 1 et -1. &lt;br /&gt;
&lt;br /&gt;
Plus le résultat est proche de 0, moins la relation est forte entre les deux listes de données.&lt;br /&gt;
&lt;br /&gt;
===Dynamic Time Warping===&lt;br /&gt;
&lt;br /&gt;
Les données des signatures sont converties en graphe temporel. Par exemple : x/temps ; y/temps ; etc.&lt;br /&gt;
&lt;br /&gt;
La méthode du DTW permet de calculer les dissimilarités entre les informations. &lt;br /&gt;
&lt;br /&gt;
Ici, les deux listes permettent de calculer une matrice dont le dernier élément contient la distance minimale entre les deux listes d&#039;informations.&lt;br /&gt;
&lt;br /&gt;
===Matrice de radiation===&lt;br /&gt;
&lt;br /&gt;
La matrice de radiation est une méthode de reconnaissance de forme.&lt;br /&gt;
&lt;br /&gt;
Il existe deux possibilités pour calculer la matrice modèle : &lt;br /&gt;
&lt;br /&gt;
1-  Les points de la signature sont placés avec une valeur de 100. Autour de ces points, les cellules subissent une radiation qui &lt;br /&gt;
modifie leur valeur suivant la distance entre la cellule mentionnée et les points originaux de la signature.&lt;br /&gt;
Chaque cellule de la matrice ne peut que subir le rayonnement du point original le plus proche.&lt;br /&gt;
&lt;br /&gt;
2- De même que précédemment sauf que chaque cellule de la matrice subie la somme des rayonnements des points originaux.&lt;br /&gt;
&lt;br /&gt;
Après l&#039;évaluation de cette matrice modèle, le calcul se fait de deux manières différentes :&lt;br /&gt;
&lt;br /&gt;
1- Le résultat est la somme des valeurs enregistrées, dans la matrice modèle, qui sont aux coordonnées des points de la signature à tester.&lt;br /&gt;
&lt;br /&gt;
2- Le résultat est le rapport du nombre de cellules non nulles communes entre la matrice modèle et la signature à tester et le nombre de cellules non nul total.&lt;br /&gt;
&lt;br /&gt;
===Somme des différences d&#039;angles entre vecteurs===&lt;br /&gt;
&lt;br /&gt;
Cette méthode permet une reconnaissance de forme simple. &lt;br /&gt;
&lt;br /&gt;
Elle permet d&#039;obtenir l&#039;angle d&#039;écart entre la signature à tester et le modèle.&lt;br /&gt;
&lt;br /&gt;
Le résultat est la somme des angles entre chaque vecteur et le vecteur horizontal. Chaque angle est compris entre -Pi et Pi.&lt;br /&gt;
&lt;br /&gt;
==Génération d&#039;un modèle classification==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser la tâche de vérification pour la reconnaissance de signature, nous avons opté pour le choix de [http://www.cs.waikato.ac.nz/ml/weka WEKA] pour la création du modèle par apprentissage et la décision finale.&lt;br /&gt;
&lt;br /&gt;
===Construction du fichier de comparaison (apprenstissage.arff)===&lt;br /&gt;
&lt;br /&gt;
WEka utilise des fichiers ARFF pour construire et tester son modèle. Dans ce fichier on retrouve dans l&#039;ordre:&lt;br /&gt;
&lt;br /&gt;
* Le nom de la relation (utile pour nommer le fichier d&#039;apprentissage aux fichiers d&#039;identification et de décision)&lt;br /&gt;
&lt;br /&gt;
@relation signature&lt;br /&gt;
&lt;br /&gt;
* La liste des attributs de comparaison utilisés et leur type&lt;br /&gt;
&lt;br /&gt;
@attribute totalTime numeric&lt;br /&gt;
&lt;br /&gt;
@attribute numberPenUp numeric&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
@attribute CORTX numeric&lt;br /&gt;
&lt;br /&gt;
@attribute CORTY numeric&lt;br /&gt;
&lt;br /&gt;
@attribute pourcentageRadiance numeric&lt;br /&gt;
&lt;br /&gt;
* L&#039;attribut contenant les différentes classes (2 dans notre cas: signatures équivalentes ou non)&lt;br /&gt;
&lt;br /&gt;
@attribute accepte {no,yes}&lt;br /&gt;
&lt;br /&gt;
* Les données de comparaisons entre différentes signatures&lt;br /&gt;
&lt;br /&gt;
@data&lt;br /&gt;
&lt;br /&gt;
1019.466796875,2.0,0.9912756661011811,0.9970564473307176,17.837034225463867,yes&lt;br /&gt;
&lt;br /&gt;
663.466796875,0.0,0.9837515744201278,0.996214642908734,15.106257438659668,yes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
1278.466796875,0.0,0.9729839482086351,0.9951841501724467,9.820034980773926,no&lt;br /&gt;
&lt;br /&gt;
1044.06640625,0.0,0.9859247460800329,0.9970413832907982,9.922861099243164,no&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour construire ces données, on doit donc comparer des signatures équivalentes (d&#039;une même personne) et des signatures différentes(de personnes différentes). Etant donné qu&#039;un utilisateur enregistre 5 acquisitions pour former sa &amp;quot;signature&amp;quot;, on peut donc réaliser 10 comparaisons entre signatures équivalentes par utilisateur. &lt;br /&gt;
Ainsi pour n utilisateurs, on aura 5*n comparaisons de signatures équivalentes.&lt;br /&gt;
Ensuite pour construire le modèle par apprentissage, il faut également comparer des signatures différentes. Pour cela, on effectue des comparaisons de manière aléatoire entre les signatures d&#039;utilisateurs différents sans jamais refaire la même comparaison. On se permet de réaliser deux fois plus de comparaisons inter-utilisateur qu&#039;intra-utilisateur (soit 10*n comparaisons).&lt;br /&gt;
&lt;br /&gt;
===Construction du modèle===&lt;br /&gt;
&lt;br /&gt;
Ensuite, on fournit ce jeu de données d&#039;apprentissage à Weka qui construit son modèle selon le classifier choisi. Pour cela, il construit un modèle à partir des 9/10 des données et teste sur le 1/10 restant. Il répète l&#039;opération 10 fois pour parcourir toutes les données et améliorer son modèle au fur et à mesure.&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un arbre de décision (plus précisément le J48) pour classer nos données parmi les nombreuses méthodes possibles car il nous permet à posteriori de voir quelles sont les paramètres discriminants et pour quelles raisons il a décidé que 2 signatures se ressemblaient ou non.&lt;br /&gt;
&lt;br /&gt;
===Classification par arbre de décision===&lt;br /&gt;
&lt;br /&gt;
Une fois le modèle construit, on peut via l&#039;interface tenter de s&#039;identifier en sélectionnant la personne que l&#039;on prétend être et en faisant une acquisition. Le programme va alors récupérer les cinq acquisitions représentant la signature de la personne supposée, effectuer le prétraitement de ces acquisitions ainsi que de la nouvelle et les comparer comme pour la création du modèle.&lt;br /&gt;
&lt;br /&gt;
On va ainsi créer un fichier ARFF &amp;quot;identification.arff&amp;quot; qui contiendra les données de comparaisons comme pour celui de l&#039;apprentissage à la différence que le dernier attribut, celui de la classe, sera rempli d&#039;un &amp;quot;?&amp;quot; pour signifier que c&#039;est au modèle de décider à quelle classe associer cette comparaison (si les deux signatures se ressemblent ou pas).&lt;br /&gt;
&lt;br /&gt;
Une fois que le modèle a rendu sa décision concernant ces cinq comparaisons, on a décidé que la personne avait réussie à s&#039;identifier si la nouvelle acquisition était désignée comme ressemblante à au moins trois des cinq acquisitions enregistrées dans la base de données.&lt;br /&gt;
&lt;br /&gt;
=Documents=&lt;br /&gt;
&lt;br /&gt;
[[Media:Cahier_des_charges.pdf|Cahier des charges]]&lt;br /&gt;
&lt;br /&gt;
[[Media:Rapport_des_seances.pdf|Rapport des séances]]&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Ihm31.png&amp;diff=4899</id>
		<title>File:Ihm31.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Ihm31.png&amp;diff=4899"/>
		<updated>2012-03-27T08:34:10Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Ihm34.png&amp;diff=4898</id>
		<title>File:Ihm34.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Ihm34.png&amp;diff=4898"/>
		<updated>2012-03-27T08:31:27Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Ihm33.png&amp;diff=4897</id>
		<title>File:Ihm33.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Ihm33.png&amp;diff=4897"/>
		<updated>2012-03-27T08:30:50Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=PAGE_WIKI_ETUDIANTS_2011-12_SIGNATURES&amp;diff=4896</id>
		<title>PAGE WIKI ETUDIANTS 2011-12 SIGNATURES</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=PAGE_WIKI_ETUDIANTS_2011-12_SIGNATURES&amp;diff=4896"/>
		<updated>2012-03-27T08:30:05Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* IHM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du projet=&lt;br /&gt;
&lt;br /&gt;
Le projet de Biométrie &amp;quot;Acquisition et reconnaissance de signatures&amp;quot; consiste à enregistrer une signature numérique d&#039;un client ou utilisateur afin de permettre ultérieurement une identification grâce à cette modalité biométrique.&lt;br /&gt;
&lt;br /&gt;
=Contexte=&lt;br /&gt;
===Etude de l&#039;existant===&lt;br /&gt;
&lt;br /&gt;
Ce projet d&#039;acquisition et de reconnaissance de signatures a déjà été traité par une équipe d&#039;étudiants en 2010-2011. Nous avons donc étudié ce qui avait été réalisé afin de ne pas perdre les efforts déjà fournis. De cette étude nous avons retenu les conseils et remarques faits sur la partie algorithmique de comparaison de signatures. De plus, nous allons reprendre quelques idées de leur IHM.&lt;br /&gt;
Pour plus de détails, consulter les parties &amp;quot;Algorithmes&amp;quot; et &amp;quot;IHM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Suites prévues===&lt;br /&gt;
L&#039;année prochaine, une nouvelle équipe reprendra surement ce projet de biométrie. Il est donc important de laisser une bonne documentation et des conseils.&lt;br /&gt;
&lt;br /&gt;
=Cadre de réponse=&lt;br /&gt;
&lt;br /&gt;
Nous réaliserons une IHM qui nous permettra, d&#039;une part, d&#039;enregistrer un nouvel utilisateur dans la base de données (acquisition de signature), et d&#039;autre part de tester l&#039;identification d&#039;un utilisateur. Pour cette identification, la signature sera comparée au modèle calculé et enregistré. Afin de pouvoir effectuer cette comparaison, nous récupèrerons, lors de l&#039;acquisition des signatures, différentes informations qui nous permettront d&#039;appliquer des algorithmes de comparaison de signatures (coordonnées de chaque point, pression du stylet, temps). Il faudra donc étudier les différentes méthodes possibles de comparaison de ces signatures et implémenter l&#039;algorithme conçu à partir de cette étude.&lt;br /&gt;
&lt;br /&gt;
=Organisation de l&#039;équipe=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Renaud Collin&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
*Chef de projet&lt;br /&gt;
*Responsable documents,&lt;br /&gt;
*Etude de l&#039;existant&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flavien Garcia &amp;amp; Corentin Foucault :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Etude de l&#039;existant,&lt;br /&gt;
*Construction et codage de l&#039;algorithme&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Christophe Havard :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Montage DS + Arduino,&lt;br /&gt;
*Conception et codage IHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thibaud Michel&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
*Acquisition des données (depuis le montage DS + Arduino et depuis la tablette),&lt;br /&gt;
*Mise en place de la base de données,&lt;br /&gt;
*Conception et codage IHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aurélie Moiroux :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Acquisition des données depuis la tablette,&lt;br /&gt;
*Conception et codage IHM&lt;br /&gt;
&lt;br /&gt;
=Diagramme de Gantt prévisionnel=&lt;br /&gt;
&lt;br /&gt;
[[File:Diagramme-de-Gantt-previsionnel.png]]&lt;br /&gt;
&lt;br /&gt;
=Diagramme de Gantt effectif=&lt;br /&gt;
&lt;br /&gt;
[[File:Diagramme-de-Gantt.png]]&lt;br /&gt;
&lt;br /&gt;
=Matériel=&lt;br /&gt;
===Tablette Bamboo CTH-460===&lt;br /&gt;
&lt;br /&gt;
Cette tablette est un ajout de matériel par rapport à l&#039;année précédente. Ainsi, nous avons pour notre projet deux interfaces pour l&#039;acquisition des signatures. Cela nous a donc amené à étudier la tablette graphique et les librairies Java permettant de nous en servir. &lt;br /&gt;
L&#039;IHM a également été modifiée pour permettre à l&#039;utilisateur de choisir quelle interface d&#039;acquisition il souhaite utiliser. &lt;br /&gt;
&lt;br /&gt;
*La librairie permettant d&#039;utiliser cette tablette est : Jpen [http://sourceforge.net/apps/mediawiki/jpen/index.php?title=Main_Page]&lt;br /&gt;
*Le driver de la tablette CTH-460 est disponible ici : [http://www.wacom-asia.com/download/download_index.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:bamboo.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Montage Arduino + Ecran de DS===&lt;br /&gt;
[[File:Arduino_DS.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Arduino.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Arduino2.png]]&lt;br /&gt;
&lt;br /&gt;
=IHM=&lt;br /&gt;
&lt;br /&gt;
Lorsque l&#039;utilisateur démarre l&#039;application, celle-ci s&#039;ouvre sur l&#039;onglet &amp;quot;Nouvel utilisateur&amp;quot;. Si il n&#039;a pas encore de compte, il doit alors rentrer son nom, son prénom, et procéder à l&#039;acquisition de cinq signatures (la même) afin de pouvoir s&#039;enregistrer. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Onglet &amp;quot;Nouvel Utilisateur&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:ihm1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois que l&#039;utilisateur possède un compte, il peut se rendre sur l&#039;onglet &amp;quot;Identification&amp;quot;. Afin de s&#039;authentifier l’utilisateur doit sélectionner son nom, puis signer de la même signature que lors de l&#039;acquisition. &lt;br /&gt;
&lt;br /&gt;
Nous avons ajouté une option &amp;quot;faussaire&amp;quot; sur cette onglet. Lorsque l&#039;option est cochée, la signature du compte sur lequel l&#039;utilisateur essaie de s&#039;identifier est affiché sur l&#039;écran de signature. Cette option a été mise en place pour tester d&#039;avantage notre système. Ainsi nous pouvons voir si, avec le dessin de la signature, un imposteur peut réussir à s&#039;identifier. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Onglet &amp;quot;Identification&amp;quot;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
[[File:ihm2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système affiche alors la réponse de l&#039;authentification : la réussite ou l’échec. Une question apparaît également afin d&#039;établir des statistiques de performance du système. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ihm21.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Onglet &amp;quot;Infos&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lorsque l&#039;utilisateur a tenté de s&#039;identifier, il peut alors consulter différentes informations liées à sa tentative : &lt;br /&gt;
&lt;br /&gt;
[[File:ihm31.jpg]]&lt;br /&gt;
&#039;&#039;Le pourcentage de fausses acceptations et faux refus&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:ihm32.jpg]]&lt;br /&gt;
&#039;&#039;Un graphe qui affiche l&#039;évolution de la pression sur la signature référence de l&#039;utilisateur et sur sa dernière acquisition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:ihm33.jpg]][[File:ihm34.jpg]]&lt;br /&gt;
&#039;&#039;Les informations du traitement algorithmique comme l&#039;arbre de décision ou les résultats des différentes étapes de l&#039;algorithme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Algorithmes=&lt;br /&gt;
&lt;br /&gt;
Un système de reconnaissance par signature nécessite l&#039;application d&#039;algorithmes, que ce soit dans un premier temps pour obtenir des acquisitions de qualité, qu&#039;ensuite pour pouvoir les comparer de manière cohérente et enfin construire un modèle efficace de reconnaissance.&lt;br /&gt;
&lt;br /&gt;
==Prétraitement des acquisitions==&lt;br /&gt;
Les acquisitions obtenues par l&#039;intermédiaire de l&#039;interface, pour représenter la signature d&#039;un individu, sont des listes de points, auxquels sont rattachés une abscisse, une ordonnée, une valeur de pression et un temps d&#039;acquisition.&lt;br /&gt;
Cependant, il est nécessaire d&#039;appliquer un prétraitement à ces acquisitions afin d&#039;en augmenter le nombre de points, corriger les différences entre des signatures successives (décalage, orientation et taille) et également obtenir un nombre de points fixe pour toutes les acquisitions pour pouvoir les comparer.&lt;br /&gt;
&lt;br /&gt;
Voilà une image d&#039;une acquisition originale:&lt;br /&gt;
&lt;br /&gt;
[[File:0_origine_Aurélie_4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
===1. Ré-échantillonnage sur le temps===&lt;br /&gt;
La première étape est propre à l&#039;utilisation de la tablette Bamboo et consiste à ne conserver qu&#039;un seul point par temps d&#039;acquisition. En effet, le système d&#039;acquisition de la tablette renvoie la liste de points acquis durant chaque période de 16ms et attache à chaque point cette période d&#039;acquisition plutôt que le temps réel.&lt;br /&gt;
Par exemple les points acquis en réalité aux temps 11ms et 14,5ms seront enregistrés avec un temps d&#039;acquisition de 16ms alors qu&#039;un point acquis au temps 16,8ms sera enregistré avec un temps d&#039;acquisition de 32ms.&lt;br /&gt;
Nous avons considéré que ce temps de 16ms étant relativement court, on ne conserverait qu&#039;un seul point pour un même temps d&#039;acquisition (par défaut le premier de la liste).&lt;br /&gt;
&lt;br /&gt;
De plus, on a également considéré que deux points espacés d&#039;un temps d&#039;acquisition supérieur à 32ms correspondait à un lever de stylo.&lt;br /&gt;
&lt;br /&gt;
===2. Interpolation===&lt;br /&gt;
&lt;br /&gt;
On applique une interpolation cubique sur l&#039;acquisition dans le but d&#039;obtenir un rendu de signature plus continu et lisse, et mieux comprendre les courbures de la signature d&#039;un individu. De plus, il est nécessaire de travailler sur des données assez fournies notamment pour des algorithmes de recouvrement par exemple.&lt;br /&gt;
&lt;br /&gt;
[[File:0_interpolee_Aurélie_4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
===3. Analyse en composantes principales===&lt;br /&gt;
&lt;br /&gt;
[[File:PCA.png]]&lt;br /&gt;
&lt;br /&gt;
L&#039;ACP est utilisé pour trouver les informations mathématiques qui décrivent la position des points: {{rouge|l&#039;axe principal}} et {{bleu|l&#039;axe secondaire}} et le centre de gravité d&#039;une forme binaire.&lt;br /&gt;
&lt;br /&gt;
===4. Centrage et Rotation===&lt;br /&gt;
[[File:0_centree_Aurélie_4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:0_droite_Aurélie_4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Pour réduire les problèmes de décalage, entre l&#039;image à tester et le modèle, on utilise les informations fournies par l&#039;ACP.&lt;br /&gt;
&lt;br /&gt;
Le centre de gravité permet de centrer l&#039;image comme le modèle.&lt;br /&gt;
&lt;br /&gt;
Les deux axes qui décrivent l&#039;alignement des points permettent de faire la rotation. Cette rotation est calculée à partir de l&#039;angle entre l&#039;axe principal et l&#039;axe horizontal.&lt;br /&gt;
&lt;br /&gt;
===5. Normalisation (Zoom)===&lt;br /&gt;
[[File:0_normalisee_Aurélie_4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le zoom est calculé pour obtenir la taille la plus grande possible pour l&#039;image. &lt;br /&gt;
&lt;br /&gt;
La distance entre le centre et le point le plus proche du rebord de l&#039;image évaluée = (distance max). &lt;br /&gt;
&lt;br /&gt;
Chaque point subit alors une translation proportionnelle au rapport (distance du point/distance max)*(demi-largeur de l&#039;image).&lt;br /&gt;
&lt;br /&gt;
===6. Ré-échantillonnage sur le nombre de points===&lt;br /&gt;
&lt;br /&gt;
Suivant la durée totale d&#039;acquisition, le nombre de points acquis peut être plus ou moins important et les précédentes étapes de prétraitement peuvent en supprimer quelques-uns également. Il est donc essentiel d&#039;effectuer un ré-échantillonnage sur les acquisitions après normalisation pour obtenir un nombre de points fixe (2000 points choisis actuellement) pour que les différents algorithmes de comparaison soient cohérents.&lt;br /&gt;
On a choisi d&#039;interpoler des points de manière uniforme si le nombre de points était inférieur à 2000 et d&#039;en supprimer, également de manière uniforme, si ce nombre était supérieur.&lt;br /&gt;
&lt;br /&gt;
==Algorithmes de comparaison==&lt;br /&gt;
&lt;br /&gt;
Pour la création du modèle (voir plus loin), il est nécessaire d&#039;obtenir un ensemble de données de comparaisons. On a ainsi sélectionné les comparaisons suivantes&lt;br /&gt;
&lt;br /&gt;
===Comparaisons simplistes===&lt;br /&gt;
&lt;br /&gt;
*Différence de temps total d&#039;acquisition&lt;br /&gt;
*Différence de nombre de lever de stylos&lt;br /&gt;
*Différence de pression moyenne&lt;br /&gt;
*...&lt;br /&gt;
&lt;br /&gt;
===Coefficient de corrélation temporel===&lt;br /&gt;
&lt;br /&gt;
Cette méthode permet de calculer la ressemblance existante entre deux séries de données de même longueur, à savoir l&#039;évolution des coordonnées en fonction du temps.&lt;br /&gt;
&lt;br /&gt;
[[File:Equa.png]]&lt;br /&gt;
&lt;br /&gt;
Le Résultat varie entre 1 et -1. &lt;br /&gt;
&lt;br /&gt;
Plus le résultat est proche de 0, moins la relation est forte entre les deux listes de données.&lt;br /&gt;
&lt;br /&gt;
===Dynamic Time Warping===&lt;br /&gt;
&lt;br /&gt;
Les données des signatures sont converties en graphe temporel. Par exemple : x/temps ; y/temps ; etc.&lt;br /&gt;
&lt;br /&gt;
La méthode du DTW permet de calculer les dissimilarités entre les informations. &lt;br /&gt;
&lt;br /&gt;
Ici, les deux listes permettent de calculer une matrice dont le dernier élément contient la distance minimale entre les deux listes d&#039;informations.&lt;br /&gt;
&lt;br /&gt;
===Matrice de radiation===&lt;br /&gt;
&lt;br /&gt;
La matrice de radiation est une méthode de reconnaissance de forme.&lt;br /&gt;
&lt;br /&gt;
Il existe deux possibilités pour calculer la matrice modèle : &lt;br /&gt;
&lt;br /&gt;
1-  Les points de la signature sont placés avec une valeur de 100. Autour de ces points, les cellules subissent une radiation qui &lt;br /&gt;
modifie leur valeur suivant la distance entre la cellule mentionnée et les points originaux de la signature.&lt;br /&gt;
Chaque cellule de la matrice ne peut que subir le rayonnement du point original le plus proche.&lt;br /&gt;
&lt;br /&gt;
2- De même que précédemment sauf que chaque cellule de la matrice subie la somme des rayonnements des points originaux.&lt;br /&gt;
&lt;br /&gt;
Après l&#039;évaluation de cette matrice modèle, le calcul se fait de deux manières différentes :&lt;br /&gt;
&lt;br /&gt;
1- Le résultat est la somme des valeurs enregistrées, dans la matrice modèle, qui sont aux coordonnées des points de la signature à tester.&lt;br /&gt;
&lt;br /&gt;
2- Le résultat est le rapport du nombre de cellules non nulles communes entre la matrice modèle et la signature à tester et le nombre de cellules non nul total.&lt;br /&gt;
&lt;br /&gt;
===Somme des différences d&#039;angles entre vecteurs===&lt;br /&gt;
&lt;br /&gt;
Cette méthode permet une reconnaissance de forme simple. &lt;br /&gt;
&lt;br /&gt;
Elle permet d&#039;obtenir l&#039;angle d&#039;écart entre la signature à tester et le modèle.&lt;br /&gt;
&lt;br /&gt;
Le résultat est la somme des angles entre chaque vecteur et le vecteur horizontal. Chaque angle est compris entre -Pi et Pi.&lt;br /&gt;
&lt;br /&gt;
==Génération d&#039;un modèle classification==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser la tâche de vérification pour la reconnaissance de signature, nous avons opté pour le choix de [http://www.cs.waikato.ac.nz/ml/weka WEKA] pour la création du modèle par apprentissage et la décision finale.&lt;br /&gt;
&lt;br /&gt;
===Construction du fichier de comparaison (apprenstissage.arff)===&lt;br /&gt;
&lt;br /&gt;
WEka utilise des fichiers ARFF pour construire et tester son modèle. Dans ce fichier on retrouve dans l&#039;ordre:&lt;br /&gt;
&lt;br /&gt;
* Le nom de la relation (utile pour nommer le fichier d&#039;apprentissage aux fichiers d&#039;identification et de décision)&lt;br /&gt;
&lt;br /&gt;
@relation signature&lt;br /&gt;
&lt;br /&gt;
* La liste des attributs de comparaison utilisés et leur type&lt;br /&gt;
&lt;br /&gt;
@attribute totalTime numeric&lt;br /&gt;
&lt;br /&gt;
@attribute numberPenUp numeric&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
@attribute CORTX numeric&lt;br /&gt;
&lt;br /&gt;
@attribute CORTY numeric&lt;br /&gt;
&lt;br /&gt;
@attribute pourcentageRadiance numeric&lt;br /&gt;
&lt;br /&gt;
* L&#039;attribut contenant les différentes classes (2 dans notre cas: signatures équivalentes ou non)&lt;br /&gt;
&lt;br /&gt;
@attribute accepte {no,yes}&lt;br /&gt;
&lt;br /&gt;
* Les données de comparaisons entre différentes signatures&lt;br /&gt;
&lt;br /&gt;
@data&lt;br /&gt;
&lt;br /&gt;
1019.466796875,2.0,0.9912756661011811,0.9970564473307176,17.837034225463867,yes&lt;br /&gt;
&lt;br /&gt;
663.466796875,0.0,0.9837515744201278,0.996214642908734,15.106257438659668,yes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
1278.466796875,0.0,0.9729839482086351,0.9951841501724467,9.820034980773926,no&lt;br /&gt;
&lt;br /&gt;
1044.06640625,0.0,0.9859247460800329,0.9970413832907982,9.922861099243164,no&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour construire ces données, on doit donc comparer des signatures équivalentes (d&#039;une même personne) et des signatures différentes(de personnes différentes). Etant donné qu&#039;un utilisateur enregistre 5 acquisitions pour former sa &amp;quot;signature&amp;quot;, on peut donc réaliser 10 comparaisons entre signatures équivalentes par utilisateur. &lt;br /&gt;
Ainsi pour n utilisateurs, on aura 5*n comparaisons de signatures équivalentes.&lt;br /&gt;
Ensuite pour construire le modèle par apprentissage, il faut également comparer des signatures différentes. Pour cela, on effectue des comparaisons de manière aléatoire entre les signatures d&#039;utilisateurs différents sans jamais refaire la même comparaison. On se permet de réaliser deux fois plus de comparaisons inter-utilisateur qu&#039;intra-utilisateur (soit 10*n comparaisons).&lt;br /&gt;
&lt;br /&gt;
===Construction du modèle===&lt;br /&gt;
&lt;br /&gt;
Ensuite, on fournit ce jeu de données d&#039;apprentissage à Weka qui construit son modèle selon le classifier choisi. Pour cela, il construit un modèle à partir des 9/10 des données et teste sur le 1/10 restant. Il répète l&#039;opération 10 fois pour parcourir toutes les données et améliorer son modèle au fur et à mesure.&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un arbre de décision (plus précisément le J48) pour classer nos données parmi les nombreuses méthodes possibles car il nous permet à posteriori de voir quelles sont les paramètres discriminants et pour quelles raisons il a décidé que 2 signatures se ressemblaient ou non.&lt;br /&gt;
&lt;br /&gt;
===Classification par arbre de décision===&lt;br /&gt;
&lt;br /&gt;
Une fois le modèle construit, on peut via l&#039;interface tenter de s&#039;identifier en sélectionnant la personne que l&#039;on prétend être et en faisant une acquisition. Le programme va alors récupérer les cinq acquisitions représentant la signature de la personne supposée, effectuer le prétraitement de ces acquisitions ainsi que de la nouvelle et les comparer comme pour la création du modèle.&lt;br /&gt;
&lt;br /&gt;
On va ainsi créer un fichier ARFF &amp;quot;identification.arff&amp;quot; qui contiendra les données de comparaisons comme pour celui de l&#039;apprentissage à la différence que le dernier attribut, celui de la classe, sera rempli d&#039;un &amp;quot;?&amp;quot; pour signifier que c&#039;est au modèle de décider à quelle classe associer cette comparaison (si les deux signatures se ressemblent ou pas).&lt;br /&gt;
&lt;br /&gt;
Une fois que le modèle a rendu sa décision concernant ces cinq comparaisons, on a décidé que la personne avait réussie à s&#039;identifier si la nouvelle acquisition était désignée comme ressemblante à au moins trois des cinq acquisitions enregistrées dans la base de données.&lt;br /&gt;
&lt;br /&gt;
=Documents=&lt;br /&gt;
&lt;br /&gt;
[[Media:Cahier_des_charges.pdf|Cahier des charges]]&lt;br /&gt;
&lt;br /&gt;
[[Media:Rapport_des_seances.pdf|Rapport des séances]]&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Projets_2011-2012&amp;diff=4390</id>
		<title>Projets 2011-2012</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Projets_2011-2012&amp;diff=4390"/>
		<updated>2012-01-30T09:48:54Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: rajout des liens vers les projets 2010-2011&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lien vers [http://air.imag.fr/mediawiki/index.php/Projets_2010-2011 les projets 2010-2011]&lt;br /&gt;
==RICM4==&lt;br /&gt;
&lt;br /&gt;
 {|class=&amp;quot;wikitable alternance&amp;quot;&lt;br /&gt;
 |+ Affectation des projets RICM4 2011-2012&lt;br /&gt;
 |-&lt;br /&gt;
 |&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Sujet&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Enseignant(s)&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Etudiants&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Fiche de suivi&lt;br /&gt;
 |- &lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
 | [[Qemu Cortex-M3 Boards | Qemu et carte ARM Cortex-M3]]&lt;br /&gt;
 | Olivier Richard&lt;br /&gt;
 | A.Claveling, T. Eid, M. Mercier &lt;br /&gt;
 | [[Proj-2011-2012-qemu | &#039;&#039;&#039;Fiche&#039;&#039;&#039; ]]&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
 | Risques Industriels:&lt;br /&gt;
 | Didier Donsez, Didier Mazet-Brachet, Hassan Saïbi&lt;br /&gt;
 | S. Vigier, F. Eloy&lt;br /&gt;
 | [[Proj-2011-2012-xxx | &#039;&#039;&#039;Fiche&#039;&#039;&#039;]]&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
 | [[Home Security Sweet Home 2012]] + [[iVLC|Ventilation efficace énergétiquement]]&lt;br /&gt;
 | Didier Donsez&lt;br /&gt;
 | N.-J. Caramelli, M. Ho&lt;br /&gt;
 | [[Proj-2011-2012-Home_Security_Sweet_Home | &#039;&#039;&#039;Fiche&#039;&#039;&#039;]]&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
 | [[Camera d&#039;observation à basse altitude]]:&lt;br /&gt;
 | Didier Donsez, David Eon, Didier Hantz&lt;br /&gt;
 | N. Tchounikine, T. Aufort&lt;br /&gt;
 | [[Proj-2011-2012-xxx | &#039;&#039;&#039;Fiche&#039;&#039;&#039;]]&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
 | [[Education à la respiration]]&lt;br /&gt;
 | Julie Fontecave, Pierre-Yves Gumery, Didier Donsez, Olivier Richard,&lt;br /&gt;
 | M. Raoux, J. Segala&lt;br /&gt;
 | [[Proj-2011-2012-ProjetAMO | &#039;&#039;&#039;Fiche&#039;&#039;&#039;]]&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
 | [[Bras Robotique Handicap | Bras robotique à commande gestuelle pour le handicap]]&lt;br /&gt;
 | Olivier Richard&lt;br /&gt;
 | L. Xiao, M. Nicolaccini, Y. Fall, S. Prak&lt;br /&gt;
 | [[Proj-2011-2012-BrasRobotiqueHandicap| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]] &lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
 | [[Robot de télé-présence]]&lt;br /&gt;
 | Didier Donsez&lt;br /&gt;
 | F. Fourure, S. Bisch&lt;br /&gt;
 | [[Pro-2011-2012-Telepresence | &#039;&#039;&#039;Fiche&#039;&#039;&#039;]]&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 8&lt;br /&gt;
 | [[Visualisation de données volcanologiques]]&lt;br /&gt;
 | Paule-Annick Davoine, Didier Donsez&lt;br /&gt;
 | M. Chevalier, C. Oswald, C. Gnatto&lt;br /&gt;
 | [[Proj-2011-2012-xxx | &#039;&#039;&#039;Fiche&#039;&#039;&#039;]]&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 9&lt;br /&gt;
 | [[elua arduino stm32F4 Discovery | eLua et approche Arduino sur STM32F4-DISCOVERY]]&lt;br /&gt;
 | Olivier Richard&lt;br /&gt;
 | S. Harrache, E. Paz&lt;br /&gt;
 | [[Proj-2011-2012-elua-arduino | &#039;&#039;&#039;Fiche&#039;&#039;&#039;]]&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 10&lt;br /&gt;
 | IHM mobile pour le visualisation et le contrôle d&#039;onduleurs&lt;br /&gt;
 | Didier Donsez&lt;br /&gt;
 | Q. Gu, C. Wirth&lt;br /&gt;
 | [[Proj-2011-2012-ihm_mobile_onduleurs| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]] &lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 11&lt;br /&gt;
 | [[GroundCTRL]]&lt;br /&gt;
 | Didier Donsez&lt;br /&gt;
 | L. Dauvergne, F. Levêque, R. Ngouala&lt;br /&gt;
 | [[Proj-2011-2012-GroundCTRL| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]] &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
# [[Qemu Cortex-M3 Boards | Qemu et carte ARM Cortex-M3]]: ((extension de l&#039;émulateur Qemu) (Olivier Richard) (2-3 RICM4-SR)&lt;br /&gt;
# Risques Industriels: (Didier Donsez, Didier Mazet-Brachet, RICM4 + PRI4 ?)&lt;br /&gt;
# [[Home Security Sweet Home 2012]] + [[iVLC|Ventilation efficace énergétiquement]]: (Didier Donsez, RICM4 SR + CM)&lt;br /&gt;
# [[Camera d&#039;observation à basse altitude]]:  (Didier Donsez, David Eon, Didier Hantz, RICM4, 3I4)&lt;br /&gt;
# [[Education à la respiration]]: (Projet AMO TIS4 2011-2012, Julie Fontecave, Pierre-Yves Gumery, TIS4, 3I4, RICM4 CM)&lt;br /&gt;
# [[Bras Robotique Handicap | Bras robotique à commande gestuelle pour le handicap]]:(Olivier Richard, RICM4 SR + CM)&lt;br /&gt;
# [[Robot de télé-présence]]:  (RICM4 SR et CM, 3I4, Didier Donsez)&lt;br /&gt;
# [[Visualisation de données volcanologiques]]: (RICM4 CM et Geotech4)&lt;br /&gt;
# [[ArduiLab]] avec STM32 (RICM4 SR + CM, Olivier Richard) &lt;br /&gt;
# [[elua arduino stm32F4 Discovery | eLua et approche Arduino sur STM32F4-DISCOVERY]]: (RICM4 SR, Olivier Richard) &lt;br /&gt;
# IHM mobile pour le visualisation et le contrôle d&#039;onduleurs: (RICM4 CM + SR, Didier Donsez)&lt;br /&gt;
# Shield Arduino pour pad gestuel 3D et bibliothèque Processing pour l&#039;IHM (Didier Donsez, 1 RICM4 + 1 3I4)&lt;br /&gt;
&lt;br /&gt;
Priorité 2&lt;br /&gt;
# [[3DWebCam]] (Didier Donsez, 1 à 2 RICM4)&lt;br /&gt;
# [[GroundCTRL]] (Didier Donsez, 2 RICM4)&lt;br /&gt;
# Projet AMO suite (Didier Donsez, RICM4 + 3I4 + TIS4)&lt;br /&gt;
&lt;br /&gt;
==RICM5==&lt;br /&gt;
* [[EA2011| Etudes d&#039;Approfondissement]] 2011 en RICM5&lt;br /&gt;
## [[Haptic Glove]] (Didier Donsez)&lt;br /&gt;
## [[FreeRTOS on STM32 Discovery]]&lt;br /&gt;
* [[SmartGrid Marketplace]]&lt;br /&gt;
* [[GreenIT Autonomic Manager]]&lt;br /&gt;
&lt;br /&gt;
==ERASMUS RICM5==&lt;br /&gt;
# [[FollowMe, CatchMe]] (un drone+webcam pour le suivi de personne) (Michaël Périn)&lt;br /&gt;
# [[KiFit]] Kinect + Wiifit for functional reeducation (Didier Donsez, Nicolas Vuillerme)&lt;br /&gt;
&lt;br /&gt;
==M2PGI PM2M==&lt;br /&gt;
Contact: Didier Donsez, Thomas Calmant&lt;br /&gt;
# [[Drone roulant de Prévention des Risques Industriels]] (Didier Donsez)&lt;br /&gt;
# [[Fiche de Présence Contactless JavaCard]] (Gérard Forestier, Didier Donsez)&lt;br /&gt;
# [[eCOM Warehouse Management System]] (Didier Donsez)&lt;br /&gt;
# [[Détection de trafic automobile et de d’attente aux feux]] (Didier Donsez, Thomas Calmant)&lt;br /&gt;
&lt;br /&gt;
==L3 Info==&lt;br /&gt;
Contact: Vincent Danjean&lt;br /&gt;
&lt;br /&gt;
==Réserve==&lt;br /&gt;
# [[Serrure à clé MIDI multifactorielle]] (Didier Donsez)&lt;br /&gt;
# [[Table interactive musicale]] (Didier Donsez)&lt;br /&gt;
# [[iMailbox]] (Didier Donsez)&lt;br /&gt;
# [[AmILight]] (eclairage d&#039;ambience intelligent) (Didier Donsez)&lt;br /&gt;
# [[PDAmeetPDA]] (synchronisation d&#039;agenda) (Michaël Périn)&lt;br /&gt;
# [[1 000 000 VMs]] (expérimentation d&#039;application distribuée à très grande échelle) (Olivier Richard) (2-3 RICM4)&lt;br /&gt;
# [[Multiple Kinect]] (utilisation simultanée de plusieurs Kinect) (Olivier Richard) (RICM ou 3I)&lt;br /&gt;
# [[Kinect musicale]] (Didier Donsez) (RICM)&lt;br /&gt;
# [[Ktechlab Simavr Arduino | Ktechlab et integration de Simavr(Arduino)]] (Olivier Richard) (2-3 RICM4-SR)&lt;br /&gt;
# Ocaml on AVR (Arduino)&lt;br /&gt;
# Ocaml on Cortex-M3&lt;br /&gt;
# [[Arduino on STM32 Discovery]]&lt;br /&gt;
# [[Reverse Geocache Puzzle Box]]&lt;br /&gt;
# [[OSGi ME]] (Didier Donsez)&lt;br /&gt;
# [[Affichage Etudiant à Polytech]]&lt;br /&gt;
# Synthèse 3D + motion capture Kinect&lt;br /&gt;
# Logiciel d&#039;[[apprentissage du calcul]] sur tablette Android (reconnaissance de chiffres manuscrits)&lt;br /&gt;
# Plancher de verre (saint gobain) à la [http://www.wat.tv/video/mickael-jackson-billie-jean-oewj_2ey2h_.html Mickael Jackson dans Billie Jean] ! woo&lt;br /&gt;
# [[Ktechlab Simavr Arduino | Ktechlab et integration de Simavr(Arduino)]] (Olivier Richard) (2-3 RICM4-SR)&lt;br /&gt;
# [[CNC]]&lt;br /&gt;
# [[Idées en Vrac]]&lt;br /&gt;
# STM32 Primer2 et communication (Olivier Richard) (2-3 RICM4-SR)&lt;br /&gt;
# Scheme Everywhere (Olivier Richard) (2-3 RICM4-SR)&lt;br /&gt;
# [[Projet Station Météo]]&lt;br /&gt;
# Ocaml on AVR (Arduino)&lt;br /&gt;
# Ocaml on Cortex-M3&lt;br /&gt;
# [[Table interactive musicale]] (Didier Donsez)&lt;br /&gt;
# [[AmILight]] (eclairage d&#039;amnbience intelligent) (Didier Donsez)&lt;br /&gt;
# [[Cube pointeur]] d&#039;activité ingénieur&lt;br /&gt;
# [http://www.instructables.com/id/Puppeteer-Motion-Capture-Costume/ Puppeteer Motion-Capture Costume]&lt;br /&gt;
# [[Musical Staircase]] @ Polytech (Didier Donsez, 1 RICM4 + 1 3I4)&lt;br /&gt;
# [[Total Recall]] (Didier Donsez)&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Haptic_Glove&amp;diff=3868</id>
		<title>Haptic Glove</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Haptic_Glove&amp;diff=3868"/>
		<updated>2011-11-28T23:15:09Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* UE/Module: Projet IHM Avancé de RICM5&lt;br /&gt;
* Enseignant: Didier Donsez&lt;br /&gt;
* Elèves RICM5: Christophe Havard (chef de projet), Renaud Collin&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
La [[Haptic perception|perception haptique]] est désormais présente dans la plupart des téléphones portables, les manettes de jeux vidéos, les consoles de jeu portables etc. Son intérêt premier est d&#039;augmenter les sensations de l&#039;utilisateur en stimulant, en plus de son sens de la vue, son sens du [http://fr.wikipedia.org/wiki/Toucher|&#039;&#039;&#039;toucher&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
La plupart des appareils nomades possèdent un vibreur qui permet d&#039;associer un stimuli visuel (action sur un objet virtuel) à un stimuli physique, en l&#039;occurence une vibration de l&#039;appareil.&lt;br /&gt;
Par exemple, sur la plupart des téléphones, il est possible de faire vibrer l&#039;appareil à chaque appui sur une lettre lors de l&#039;écriture d&#039;un SMS.&lt;br /&gt;
&lt;br /&gt;
Mais qu&#039;en est-il d&#039;une grande/très grande surface tactile type &amp;quot;table&amp;quot;? Il est impossible d&#039;y intégrer des vibreurs. Il faut donc trouver un autre moyen de faire &#039;&#039;&#039;ressentir&#039;&#039;&#039; à l&#039;utilisateur les actions qu&#039;il effectue sur la surface.&lt;br /&gt;
&lt;br /&gt;
Ce projet vise donc à réaliser un &#039;&#039;&#039;gant&#039;&#039;&#039; qui permet d&#039;associer à chaque action sur un objet virtuel, une vibration dans la main de l&#039;utilisateur.&lt;br /&gt;
Le cerveau de celui-ci fera naturellement le lien entre ce qu&#039;il voit et ce qu&#039;il ressent.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Dans le cadre des projets d&#039;approfondissement RICM5, nous avons proposé de concevoir et fabriquer un gant équipé de vibreurs à chaque doigt. De plus, nous fournirons l&#039;API permettant de contrôler les vibrations de chaque doigt.&lt;br /&gt;
&lt;br /&gt;
== Pour qui? ==&lt;br /&gt;
Ce concept de gant à retour haptique intéresse particulièrement les personnes mal-voyantes qui peuvent, malgré leur cécité, ressentir les actions qu&#039;elles effectuent sur la surface interactive. Cela leur permet de savoir par exemple, à quel moment elles sont entrain de toucher un bouton ou bien lorsqu&#039;elles déplacent un objet virtuel à l&#039;intérieur d&#039;une une zone particulière de l&#039;écran.&lt;br /&gt;
&lt;br /&gt;
Les joueurs sont également une cible particulière puisqu&#039;ils expérimentent ce genre de dispositifs depuis longtemps via les contrôleurs de jeu vibrant. A chaque action sur l&#039;écran est associé une vibration du dispositif (ex : dans un jeu de voiture, lorsque la voiture entre en collision).&lt;br /&gt;
&lt;br /&gt;
Enfin, ce gant peut-être adapté à de nombreuses applications diverses et variées, pour tout type de public. Les interactions possibles n&#039;ont de limites que celle de l&#039;imagination du développeur.&lt;br /&gt;
&lt;br /&gt;
== Réalisation ==&lt;br /&gt;
Comme vous pouvez le voir sur les photos ci-dessous, nous avons collé 5 vibreurs plats sur chaque emplacement de doigt du gant. L&#039;emplacement des doigt est optimal pour nous puisqu&#039;il répond à nos contraintes : &lt;br /&gt;
* La zone la plus sensible du doigt est le bout mais nous voulons pouvoir interagir avec une surface tactile. Il n&#039;est pas donc pratique de collé un vibreur au bout des doigts.&lt;br /&gt;
* Les vibreurs ne doivent pas être trop dans la paume afin que l&#039;on puisse distinguer la vibration sur chaque doigt efficacement.&lt;br /&gt;
* On place alors les vibreurs sur la première phalange : c&#039;est un endroit relativement sensible (ou en tout cas bien assez pour sentir une vibration) et qui laisse les doigts relativement libres de leur mouvement.&lt;br /&gt;
&lt;br /&gt;
[[Image:HapticGlove 3.png|500px|Haptic Glove v0.2]]&lt;br /&gt;
&lt;br /&gt;
== Fabrication ==&lt;br /&gt;
Pour réaliser ce gant, voici comment nous avons procéder : &lt;br /&gt;
* Nous avons commencer par coudre avec du fil conducteur deux brins par doigts. Ceux-ci nous permettront de relier le vibreur correspondant à la carte Arduino.&lt;br /&gt;
[[Image:HapticGlove_1.jpg|300px|Haptic Glove v0.2]]&lt;br /&gt;
* Puis nous avons cousu du tissu conducteur sur le pouce, l&#039;index et le majeur. Pour chacun de ces morceaux de tissus, on fera correspondre un brin de fil conducteur.&lt;br /&gt;
[[Image:HapticGlove_2.jpg|300px|Haptic Glove v0.2]]&lt;br /&gt;
* Nous fixons ensuite les vibreurs à l&#039;emplacement prévu. Ceux-ci sont autocollants donc pas besoin de colle spéciale. Nous laissons dépasser du fil électrique de chaque vibreur pour pouvoir les relier au fil conducteur.&lt;br /&gt;
* Nous effectuons ensuite la liaison entre le fil conducteur et les fil électriques de chaque coté du brin. Pour cela, nous enroulons le fil électrique sur lui-même pour former un petit cercle sur lequel nous rajoutons un bout de soudure, histoire que le cercle tienne bien. Nous faisons ensuite un noeud avec le fil conducteur dans ce cercle.&lt;br /&gt;
[[Image:HapticGlove_5.jpg|300px|Haptic Glove v0.2]]&lt;br /&gt;
* Voilà un aperçu du résultat final&lt;br /&gt;
[[Image:HapticGlove_6.JPG|300px|Haptic Glove v0.2]]&lt;br /&gt;
&lt;br /&gt;
==Matériel==&lt;br /&gt;
* 1 glove (cotton, leather)&lt;br /&gt;
* [[Arduino]] Uno or Lilypad or [[Arduino FIO]]&lt;br /&gt;
* 1 XBee module or Bluetooth module for wireless communication&lt;br /&gt;
* 5 [[Vibration motor]]s&lt;br /&gt;
&lt;br /&gt;
Optional&lt;br /&gt;
* 1 [http://ardx.org/src/guide/2/ARDX-EG-SPAR-FR-WEB.pdf#page=34 Flex sensor]&lt;br /&gt;
* 1 [http://www.sparkfun.com/products/9267 Accelerometer ADXL335]&lt;br /&gt;
* 1 gyroscope (WiiMotion)&lt;br /&gt;
For finger contacts&lt;br /&gt;
* Conductive textiles&lt;br /&gt;
** http://www.sparkfun.com/products/10055&lt;br /&gt;
** http://www.sparkfun.com/products/10056&lt;br /&gt;
* Conductive threads &lt;br /&gt;
** http://www.sparkfun.com/products/8549&lt;br /&gt;
** http://www.sparkfun.com/products/8544&lt;br /&gt;
&lt;br /&gt;
[[Image:HapticGlovev0.jpg|500px|Haptic Glove v0.1]]&lt;br /&gt;
[[Image:Arduino_breadboard.JPG|500px|Haptic Glove v0.2]]&lt;br /&gt;
[[Image:HapticGlove_1.jpg|500px|Haptic Glove v0.2]]&lt;br /&gt;
[[Image:HapticGlove 2.jpg|500px|Haptic Glove v0.2]]&lt;br /&gt;
&lt;br /&gt;
==Source code==&lt;br /&gt;
&lt;br /&gt;
Pour la programmation de ce gant, nous avons utiliser d&#039;un coté l&#039;IDE Arduino et le langage de programmation d&#039;Arduino, d&#039;un autre coté un programme Java qui utilise la librairie [http://rxtx.qbang.org/wiki/index.php/Download | RXTX] (permet la communication via le port série).&lt;br /&gt;
&lt;br /&gt;
Pour piloter le gant, il suffit de : &lt;br /&gt;
* Charger [[File:motors_drive_2.pde|ce programme]] Arduino dans l&#039;Arduino,&lt;br /&gt;
* Intégrer le jar contenue dans l&#039;archive [[File:Hapticglove.zip]]&lt;br /&gt;
* Essayer avec ce bout de code :&lt;br /&gt;
 IGlove glove = GloveFactory.getNewGlove(&amp;quot;COM3&amp;quot;);&lt;br /&gt;
* Vous instanciez un nouveau Gant &#039;&#039;&#039;physique&#039;&#039;&#039; (un gant &amp;quot;virtuel&amp;quot; est également disponible et permet de tester votre application sans nécessité de gant) sur le port &amp;quot;COM3&amp;quot; de votre ordinateur.&lt;br /&gt;
 glove.vibrate(FINGERS.THUMB, 200);&lt;br /&gt;
* La premiere valeur indique quel doigt faire vibrer. La seconde indique le temps de la vibration (en millisecond).&lt;br /&gt;
*Vous pouvez remplacer THUMB (le pouce) par l&#039;une de ces 5 autres valeurs : &lt;br /&gt;
** FOREFINGER (index)&lt;br /&gt;
** MIDDLEFINGER (majeur)&lt;br /&gt;
** RINGFINGER (annulaire)&lt;br /&gt;
** LITTLEFINGER (auriculaire)&lt;br /&gt;
** ALL (tous les doigt en même temps)&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Hapticglove.zip&amp;diff=3867</id>
		<title>File:Hapticglove.zip</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Hapticglove.zip&amp;diff=3867"/>
		<updated>2011-11-28T23:07:53Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Motors_drive_2.pde&amp;diff=3866</id>
		<title>File:Motors drive 2.pde</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Motors_drive_2.pde&amp;diff=3866"/>
		<updated>2011-11-28T23:04:39Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:HapticGlove_6.JPG&amp;diff=3865</id>
		<title>File:HapticGlove 6.JPG</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:HapticGlove_6.JPG&amp;diff=3865"/>
		<updated>2011-11-28T22:59:53Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Haptic_Glove&amp;diff=3864</id>
		<title>Haptic Glove</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Haptic_Glove&amp;diff=3864"/>
		<updated>2011-11-28T22:58:31Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* UE/Module: Projet IHM Avancé de RICM5&lt;br /&gt;
* Enseignant: Didier Donsez&lt;br /&gt;
* Elèves RICM5: Christophe Havard (chef de projet), Renaud Collin&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
La [[Haptic perception|perception haptique]] est désormais présente dans la plupart des téléphones portables, les manettes de jeux vidéos, les consoles de jeu portables etc. Son intérêt premier est d&#039;augmenter les sensations de l&#039;utilisateur en stimulant, en plus de son sens de la vue, son sens du [http://fr.wikipedia.org/wiki/Toucher|&#039;&#039;&#039;toucher&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
La plupart des appareils nomades possèdent un vibreur qui permet d&#039;associer un stimuli visuel (action sur un objet virtuel) à un stimuli physique, en l&#039;occurence une vibration de l&#039;appareil.&lt;br /&gt;
Par exemple, sur la plupart des téléphones, il est possible de faire vibrer l&#039;appareil à chaque appui sur une lettre lors de l&#039;écriture d&#039;un SMS.&lt;br /&gt;
&lt;br /&gt;
Mais qu&#039;en est-il d&#039;une grande/très grande surface tactile type &amp;quot;table&amp;quot;? Il est impossible d&#039;y intégrer des vibreurs. Il faut donc trouver un autre moyen de faire &#039;&#039;&#039;ressentir&#039;&#039;&#039; à l&#039;utilisateur les actions qu&#039;il effectue sur la surface.&lt;br /&gt;
&lt;br /&gt;
Ce projet vise donc à réaliser un &#039;&#039;&#039;gant&#039;&#039;&#039; qui permet d&#039;associer à chaque action sur un objet virtuel, une vibration dans la main de l&#039;utilisateur.&lt;br /&gt;
Le cerveau de celui-ci fera naturellement le lien entre ce qu&#039;il voit et ce qu&#039;il ressent.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Dans le cadre des projets d&#039;approfondissement RICM5, nous avons proposé de concevoir et fabriquer un gant équipé de vibreurs à chaque doigt. De plus, nous fournirons l&#039;API permettant de contrôler les vibrations de chaque doigt.&lt;br /&gt;
&lt;br /&gt;
== Pour qui? ==&lt;br /&gt;
Ce concept de gant à retour haptique intéresse particulièrement les personnes mal-voyantes qui peuvent, malgré leur cécité, ressentir les actions qu&#039;elles effectuent sur la surface interactive. Cela leur permet de savoir par exemple, à quel moment elles sont entrain de toucher un bouton ou bien lorsqu&#039;elles déplacent un objet virtuel à l&#039;intérieur d&#039;une une zone particulière de l&#039;écran.&lt;br /&gt;
&lt;br /&gt;
Les joueurs sont également une cible particulière puisqu&#039;ils expérimentent ce genre de dispositifs depuis longtemps via les contrôleurs de jeu vibrant. A chaque action sur l&#039;écran est associé une vibration du dispositif (ex : dans un jeu de voiture, lorsque la voiture entre en collision).&lt;br /&gt;
&lt;br /&gt;
Enfin, ce gant peut-être adapté à de nombreuses applications diverses et variées, pour tout type de public. Les interactions possibles n&#039;ont de limites que celle de l&#039;imagination du développeur.&lt;br /&gt;
&lt;br /&gt;
== Réalisation ==&lt;br /&gt;
Comme vous pouvez le voir sur les photos ci-dessous, nous avons collé 5 vibreurs plats sur chaque emplacement de doigt du gant. L&#039;emplacement des doigt est optimal pour nous puisqu&#039;il répond à nos contraintes : &lt;br /&gt;
* La zone la plus sensible du doigt est le bout mais nous voulons pouvoir interagir avec une surface tactile. Il n&#039;est pas donc pratique de collé un vibreur au bout des doigts.&lt;br /&gt;
* Les vibreurs ne doivent pas être trop dans la paume afin que l&#039;on puisse distinguer la vibration sur chaque doigt efficacement.&lt;br /&gt;
* On place alors les vibreurs sur la première phalange : c&#039;est un endroit relativement sensible (ou en tout cas bien assez pour sentir une vibration) et qui laisse les doigts relativement libres de leur mouvement.&lt;br /&gt;
&lt;br /&gt;
[[Image:HapticGlove 3.png|500px|Haptic Glove v0.2]]&lt;br /&gt;
&lt;br /&gt;
== Fabrication ==&lt;br /&gt;
Pour réaliser ce gant, voici comment nous avons procéder : &lt;br /&gt;
* Nous avons commencer par coudre avec du fil conducteur deux brins par doigts. Ceux-ci nous permettront de relier le vibreur correspondant à la carte Arduino.&lt;br /&gt;
[[Image:HapticGlove_1.jpg|300px|Haptic Glove v0.2]]&lt;br /&gt;
* Puis nous avons cousu du tissu conducteur sur le pouce, l&#039;index et le majeur. Pour chacun de ces morceaux de tissus, on fera correspondre un brin de fil conducteur.&lt;br /&gt;
[[Image:HapticGlove_2.jpg|300px|Haptic Glove v0.2]]&lt;br /&gt;
* Nous fixons ensuite les vibreurs à l&#039;emplacement prévu. Ceux-ci sont autocollants donc pas besoin de colle spéciale. Nous laissons dépasser du fil électrique de chaque vibreur pour pouvoir les relier au fil conducteur.&lt;br /&gt;
* Nous effectuons ensuite la liaison entre le fil conducteur et les fil électriques de chaque coté du brin. Pour cela, nous enroulons le fil électrique sur lui-même pour former un petit cercle sur lequel nous rajoutons un bout de soudure, histoire que le cercle tienne bien. Nous faisons ensuite un noeud avec le fil conducteur dans ce cercle.&lt;br /&gt;
[[Image:HapticGlove_5.jpg|300px|Haptic Glove v0.2]]&lt;br /&gt;
&lt;br /&gt;
==Matériel==&lt;br /&gt;
* 1 glove (cotton, leather)&lt;br /&gt;
* [[Arduino]] Uno or Lilypad or [[Arduino FIO]]&lt;br /&gt;
* 1 XBee module or Bluetooth module for wireless communication&lt;br /&gt;
* 5 [[Vibration motor]]s&lt;br /&gt;
&lt;br /&gt;
Optional&lt;br /&gt;
* 1 [http://ardx.org/src/guide/2/ARDX-EG-SPAR-FR-WEB.pdf#page=34 Flex sensor]&lt;br /&gt;
* 1 [http://www.sparkfun.com/products/9267 Accelerometer ADXL335]&lt;br /&gt;
* 1 gyroscope (WiiMotion)&lt;br /&gt;
For finger contacts&lt;br /&gt;
* Conductive textiles&lt;br /&gt;
** http://www.sparkfun.com/products/10055&lt;br /&gt;
** http://www.sparkfun.com/products/10056&lt;br /&gt;
* Conductive threads &lt;br /&gt;
** http://www.sparkfun.com/products/8549&lt;br /&gt;
** http://www.sparkfun.com/products/8544&lt;br /&gt;
&lt;br /&gt;
[[Image:HapticGlovev0.jpg|500px|Haptic Glove v0.1]]&lt;br /&gt;
[[Image:Arduino_breadboard.JPG|500px|Haptic Glove v0.2]]&lt;br /&gt;
[[Image:HapticGlove_1.jpg|500px|Haptic Glove v0.2]]&lt;br /&gt;
[[Image:HapticGlove 2.jpg|500px|Haptic Glove v0.2]]&lt;br /&gt;
&lt;br /&gt;
==Source code==&lt;br /&gt;
===Progam to drive the haptic glove===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Haptic Glove&lt;br /&gt;
 &lt;br /&gt;
 Reads 15 bytes-long command (encoding the level and the duration of the 5 vibration motors connected to the Arduino&#039; PWM pins) and vibrate during the duration the motors.&lt;br /&gt;
 &lt;br /&gt;
 Vibration Motor, sku: ROB-08449&lt;br /&gt;
 http://www.sparkfun.com/products/8449&lt;br /&gt;
 http://www.sparkfun.com/products/8468&lt;br /&gt;
 &amp;quot;With a 2-3.6V operating range, these units shake crazily at 3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Septembre 18, 2011 by Didier Donsez &lt;br /&gt;
 &lt;br /&gt;
 This example code is in the public domain.&lt;br /&gt;
&lt;br /&gt;
 Input format is 5 groups of 3 hexadecimal characters&lt;br /&gt;
  one group per motor&lt;br /&gt;
  first char is the vibration level (F is Max)&lt;br /&gt;
  second char is the vibration level setted after the duration (0 to stop vibration)&lt;br /&gt;
  third char is the duration of the vibration (value is  char * 16 * COEF milliseconds)&lt;br /&gt;
 &lt;br /&gt;
 Test by sending the following inputs with the serial monitor&lt;br /&gt;
&lt;br /&gt;
 F09000000000000&lt;br /&gt;
 000F09000000000&lt;br /&gt;
 000000F09000000&lt;br /&gt;
 000000000F09000&lt;br /&gt;
 000000000000F09&lt;br /&gt;
 F09F09F09F09F09&lt;br /&gt;
 F01F03F05F07F09&lt;br /&gt;
&lt;br /&gt;
 F51F53F55F57F59 // continue vib after duration&lt;br /&gt;
 000000000000000 // stop all vibrations&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
const int MAXVIB=180; // 180 is 3.6V if Vin is 5V (Arduino Uno)&lt;br /&gt;
const int COEF=10; // Coeficient for duration (Max duration is 256 * COEF milliseconds&lt;br /&gt;
&lt;br /&gt;
const int NUMVIB=5; // Number of vibration motors (one per finger)&lt;br /&gt;
&lt;br /&gt;
byte levelVib[NUMVIB]; // Level for vibration&lt;br /&gt;
byte levelEndVib[NUMVIB]; // Level for vibration after the delay&lt;br /&gt;
byte durationVib[NUMVIB]; // Duration for vibration&lt;br /&gt;
byte pinVib[NUMVIB] = {3, 5, 6, 10, 11 }; // Analog output pins that the vibration motors are attached to&lt;br /&gt;
&lt;br /&gt;
const byte FLEX_SENSOR_PIN=A0; // pin number of the flex sensor&lt;br /&gt;
&lt;br /&gt;
const int NUMCONTACTPOINTS=4; // number of electric contacts points (contacts are made with conductive textiles and conductive threads)&lt;br /&gt;
byte pinContactPoints[NUMCONTACTPOINTS] = {2, 4, 7, 8 }; // Digital input pins that the contacts are attached to (the thumb finger is on the Vin). Use pull-down.&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // initialize serial communications at 9600 bps:&lt;br /&gt;
  Serial.begin(9600); &lt;br /&gt;
  &lt;br /&gt;
  for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
    pinMode(pinVib[i], OUTPUT);     &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
    pinMode(pinContactPoints[i], INPUT);     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  &lt;br /&gt;
    sendInputs();&lt;br /&gt;
    &lt;br /&gt;
    // TODO eliminate LF and CR&lt;br /&gt;
    if (Serial.available() &amp;gt;=(NUMVIB*3)) {&lt;br /&gt;
      for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
        levelVib[i]=convertLevel(Serial.read());&lt;br /&gt;
        if(levelVib[i]&amp;gt;MAXVIB) {&lt;br /&gt;
          levelVib[i]=MAXVIB; // protect the motor&lt;br /&gt;
        }&lt;br /&gt;
        levelEndVib[i]=convertLevel(Serial.read());&lt;br /&gt;
        if(levelEndVib[i]&amp;gt;MAXVIB) {&lt;br /&gt;
          levelEndVib[i]=MAXVIB; // protect the motor&lt;br /&gt;
        }&lt;br /&gt;
        durationVib[i]= convertDuration(Serial.read());&lt;br /&gt;
        if(durationVib[i]==0) {&lt;br /&gt;
          durationVib[i]=0;     &lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
 &lt;br /&gt;
      for (int j=0; j&amp;lt;NUMVIB; j++) {&lt;br /&gt;
        // calculate next duration&lt;br /&gt;
        byte minDuration=0xFF;&lt;br /&gt;
        byte cpt=0;&lt;br /&gt;
        for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
          if(durationVib[i]&amp;gt;0 &amp;amp;&amp;amp; durationVib[i]&amp;lt;minDuration) {&lt;br /&gt;
            minDuration=durationVib[i];&lt;br /&gt;
            cpt++;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        if(cpt==0) {&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if(j==0){      &lt;br /&gt;
          for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
            // if levelVib[i]==0, the vibration is stopped&lt;br /&gt;
            analogWrite(pinVib[i], levelVib[i]);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // sendInputs();&lt;br /&gt;
        delay(minDuration*COEF);&lt;br /&gt;
        &lt;br /&gt;
        for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
          if(durationVib[i]!=0) {&lt;br /&gt;
            durationVib[i]-=minDuration;&lt;br /&gt;
          }&lt;br /&gt;
          if(durationVib[i]==0 &amp;amp;&amp;amp; levelVib[i]&amp;gt;0) {&lt;br /&gt;
            analogWrite(pinVib[i], levelEndVib[i]);&lt;br /&gt;
          }&lt;br /&gt;
        }    &lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sendInputs(){   &lt;br /&gt;
    // send the flex sensor value on TX&lt;br /&gt;
    Serial.print(map(analogRead(FLEX_SENSOR_PIN), 0, 1023, 0, 255));&lt;br /&gt;
    // send the contacts states flags on TX&lt;br /&gt;
    for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
      if (digitalRead(pinContactPoints[i]) == HIGH) {&lt;br /&gt;
        Serial.print(&amp;quot;1&amp;quot;);&lt;br /&gt;
      } else {  &lt;br /&gt;
        Serial.print(&amp;quot;0&amp;quot;);        &lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte parse(byte b) {&lt;br /&gt;
  if(b&amp;gt;=&#039;0&#039; &amp;amp;&amp;amp; b&amp;lt;=&#039;9&#039;) {&lt;br /&gt;
    return (b-&#039;0&#039;);&lt;br /&gt;
  } else if(b&amp;gt;=&#039;A&#039; &amp;amp;&amp;amp; b&amp;lt;=&#039;F&#039;) {&lt;br /&gt;
    return (b-&#039;A&#039;+10);&lt;br /&gt;
  } else return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte convertLevel(byte b) {&lt;br /&gt;
  return map(parse(b), 0, 0x0F, 0, MAXVIB);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte convertDuration(byte b) {&lt;br /&gt;
  return parse(b)&amp;lt;&amp;lt;4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Program to test contacts and motors===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Haptic Glove Test&lt;br /&gt;
 &lt;br /&gt;
 This program tests the finger contacts of the haptic glove. The vibration motor associated with a finger vibrates when the finger and the thumb are in contact.&lt;br /&gt;
 &lt;br /&gt;
 Vibration Motor, sku: ROB-08449&lt;br /&gt;
 http://www.sparkfun.com/products/8449&lt;br /&gt;
 http://www.sparkfun.com/products/8468&lt;br /&gt;
 &amp;quot;With a 2-3.6V operating range, these units shake crazily at 3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Septembre 30, 2011 by Didier Donsez &lt;br /&gt;
 &lt;br /&gt;
 This example code is in the public domain.&lt;br /&gt;
&lt;br /&gt;
 */&lt;br /&gt;
const int MAXVIB=180; // 180 is 3.6V if Vin is 5V (Arduino Uno)&lt;br /&gt;
&lt;br /&gt;
const int NUMCONTACTPOINTS=4; // number of electric contacts points (contacts are made with conductive textiles and conductive threads)&lt;br /&gt;
&lt;br /&gt;
boolean state[NUMCONTACTPOINTS];&lt;br /&gt;
byte pinVib[NUMCONTACTPOINTS] = {5, 6, 10, 11 }; // Analog output pins that the vibration motors are attached to&lt;br /&gt;
byte pinContactPoints[NUMCONTACTPOINTS] = {2, 4, 7, 8 }; // Digital input pins that the contacts are attached to (the thumb finger is on the Vin). Use pull-down.&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // initialize serial communications at 9600 bps:&lt;br /&gt;
  // Serial.begin(9600); &lt;br /&gt;
  &lt;br /&gt;
  for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
    pinMode(pinVib[i], OUTPUT);     &lt;br /&gt;
    pinMode(pinContactPoints[i], INPUT);     &lt;br /&gt;
    state[i]=false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
    boolean change=false;&lt;br /&gt;
    for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
      if (digitalRead(pinContactPoints[i]) == HIGH) {&lt;br /&gt;
        if(!state[i]) {&lt;br /&gt;
         analogWrite(pinVib[i], MAXVIB);&lt;br /&gt;
         state[i]=true;&lt;br /&gt;
         change=true;&lt;br /&gt;
        }&lt;br /&gt;
      } else {  &lt;br /&gt;
        if(state[i]) {&lt;br /&gt;
         analogWrite(pinVib[i], MAXVIB);&lt;br /&gt;
         state[i]=false;&lt;br /&gt;
         change=true;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if(change) {&lt;br /&gt;
      delay(250);&lt;br /&gt;
    } else {&lt;br /&gt;
      delay(100);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:HapticGlove_5.jpg&amp;diff=3863</id>
		<title>File:HapticGlove 5.jpg</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:HapticGlove_5.jpg&amp;diff=3863"/>
		<updated>2011-11-28T22:52:01Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:HapticGlove_3.png&amp;diff=3862</id>
		<title>File:HapticGlove 3.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:HapticGlove_3.png&amp;diff=3862"/>
		<updated>2011-11-28T22:43:33Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: uploaded a new version of &amp;quot;File:HapticGlove 3.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Description du dispositif placé sur le gant.&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:HapticGlove_4.jpg&amp;diff=3861</id>
		<title>File:HapticGlove 4.jpg</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:HapticGlove_4.jpg&amp;diff=3861"/>
		<updated>2011-11-28T22:39:31Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:HapticGlove_3.png&amp;diff=3860</id>
		<title>File:HapticGlove 3.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:HapticGlove_3.png&amp;diff=3860"/>
		<updated>2011-11-28T22:38:49Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: Description du dispositif placé sur le gant.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Description du dispositif placé sur le gant.&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Haptic_Glove&amp;diff=3859</id>
		<title>Haptic Glove</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Haptic_Glove&amp;diff=3859"/>
		<updated>2011-11-28T21:37:17Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* UE/Module: Projet IHM Avancé de RICM5&lt;br /&gt;
* Enseignant: Didier Donsez&lt;br /&gt;
* Elèves RICM5: Christophe Havard (chef de projet), Renaud Collin&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
La [[Haptic perception|perception haptique]] est désormais présente dans la plupart des téléphones portables, les manettes de jeux vidéos, les consoles de jeu portables etc. Son intérêt premier est d&#039;augmenter les sensations de l&#039;utilisateur en stimulant, en plus de son sens de la vue, son sens du [http://fr.wikipedia.org/wiki/Toucher|&#039;&#039;&#039;toucher&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
La plupart des appareils nomades possèdent un vibreur qui permet d&#039;associer un stimuli visuel (action sur un objet virtuel) à un stimuli physique, en l&#039;occurence une vibration de l&#039;appareil.&lt;br /&gt;
Par exemple, sur la plupart des téléphones, il est possible de faire vibrer l&#039;appareil à chaque appui sur une lettre lors de l&#039;écriture d&#039;un SMS.&lt;br /&gt;
&lt;br /&gt;
Mais qu&#039;en est-il d&#039;une grande/très grande surface tactile type &amp;quot;table&amp;quot;? Il est impossible d&#039;y intégrer des vibreurs. Il faut donc trouver un autre moyen de faire &#039;&#039;&#039;ressentir&#039;&#039;&#039; à l&#039;utilisateur les actions qu&#039;il effectue sur la surface.&lt;br /&gt;
&lt;br /&gt;
Ce projet vise donc à réaliser un &#039;&#039;&#039;gant&#039;&#039;&#039; qui permet d&#039;associer à chaque action sur un objet virtuel, une vibration dans la main de l&#039;utilisateur.&lt;br /&gt;
LE cerveau de celui-ci fera naturellement le lien entre ce qu&#039;il voit et ce qu&#039;il ressent.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Dans le cadre des projets d&#039;approfondissement RICM5, nous avons proposé de concevoir et fabriquer un gant équipé de vibreurs à chaque doigt. De plus, nous fournirons l&#039;API permettant de contrôler les vibrations de chaque doigt.&lt;br /&gt;
&lt;br /&gt;
==Matériel==&lt;br /&gt;
* 1 glove (cotton, leather)&lt;br /&gt;
* [[Arduino]] Uno or Lilypad or [[Arduino FIO]]&lt;br /&gt;
* 1 XBee module or Bluetooth module for wireless communication&lt;br /&gt;
* 5 [[Vibration motor]]s&lt;br /&gt;
&lt;br /&gt;
Optional&lt;br /&gt;
* 1 [http://ardx.org/src/guide/2/ARDX-EG-SPAR-FR-WEB.pdf#page=34 Flex sensor]&lt;br /&gt;
* 1 [http://www.sparkfun.com/products/9267 Accelerometer ADXL335]&lt;br /&gt;
* 1 gyroscope (WiiMotion)&lt;br /&gt;
For finger contacts&lt;br /&gt;
* Conductive textiles&lt;br /&gt;
** http://www.sparkfun.com/products/10055&lt;br /&gt;
** http://www.sparkfun.com/products/10056&lt;br /&gt;
* Conductive threads &lt;br /&gt;
** http://www.sparkfun.com/products/8549&lt;br /&gt;
** http://www.sparkfun.com/products/8544&lt;br /&gt;
&lt;br /&gt;
[[Image:HapticGlovev0.jpg|500px|Haptic Glove v0.1]]&lt;br /&gt;
[[Image:Arduino_breadboard.JPG|500px|Haptic Glove v0.2]]&lt;br /&gt;
[[Image:HapticGlove_1.jpg|500px|Haptic Glove v0.2]]&lt;br /&gt;
[[Image:HapticGlove 2.jpg|500px|Haptic Glove v0.2]]&lt;br /&gt;
&lt;br /&gt;
==Source code==&lt;br /&gt;
===Progam to drive the haptic glove===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Haptic Glove&lt;br /&gt;
 &lt;br /&gt;
 Reads 15 bytes-long command (encoding the level and the duration of the 5 vibration motors connected to the Arduino&#039; PWM pins) and vibrate during the duration the motors.&lt;br /&gt;
 &lt;br /&gt;
 Vibration Motor, sku: ROB-08449&lt;br /&gt;
 http://www.sparkfun.com/products/8449&lt;br /&gt;
 http://www.sparkfun.com/products/8468&lt;br /&gt;
 &amp;quot;With a 2-3.6V operating range, these units shake crazily at 3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Septembre 18, 2011 by Didier Donsez &lt;br /&gt;
 &lt;br /&gt;
 This example code is in the public domain.&lt;br /&gt;
&lt;br /&gt;
 Input format is 5 groups of 3 hexadecimal characters&lt;br /&gt;
  one group per motor&lt;br /&gt;
  first char is the vibration level (F is Max)&lt;br /&gt;
  second char is the vibration level setted after the duration (0 to stop vibration)&lt;br /&gt;
  third char is the duration of the vibration (value is  char * 16 * COEF milliseconds)&lt;br /&gt;
 &lt;br /&gt;
 Test by sending the following inputs with the serial monitor&lt;br /&gt;
&lt;br /&gt;
 F09000000000000&lt;br /&gt;
 000F09000000000&lt;br /&gt;
 000000F09000000&lt;br /&gt;
 000000000F09000&lt;br /&gt;
 000000000000F09&lt;br /&gt;
 F09F09F09F09F09&lt;br /&gt;
 F01F03F05F07F09&lt;br /&gt;
&lt;br /&gt;
 F51F53F55F57F59 // continue vib after duration&lt;br /&gt;
 000000000000000 // stop all vibrations&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
const int MAXVIB=180; // 180 is 3.6V if Vin is 5V (Arduino Uno)&lt;br /&gt;
const int COEF=10; // Coeficient for duration (Max duration is 256 * COEF milliseconds&lt;br /&gt;
&lt;br /&gt;
const int NUMVIB=5; // Number of vibration motors (one per finger)&lt;br /&gt;
&lt;br /&gt;
byte levelVib[NUMVIB]; // Level for vibration&lt;br /&gt;
byte levelEndVib[NUMVIB]; // Level for vibration after the delay&lt;br /&gt;
byte durationVib[NUMVIB]; // Duration for vibration&lt;br /&gt;
byte pinVib[NUMVIB] = {3, 5, 6, 10, 11 }; // Analog output pins that the vibration motors are attached to&lt;br /&gt;
&lt;br /&gt;
const byte FLEX_SENSOR_PIN=A0; // pin number of the flex sensor&lt;br /&gt;
&lt;br /&gt;
const int NUMCONTACTPOINTS=4; // number of electric contacts points (contacts are made with conductive textiles and conductive threads)&lt;br /&gt;
byte pinContactPoints[NUMCONTACTPOINTS] = {2, 4, 7, 8 }; // Digital input pins that the contacts are attached to (the thumb finger is on the Vin). Use pull-down.&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // initialize serial communications at 9600 bps:&lt;br /&gt;
  Serial.begin(9600); &lt;br /&gt;
  &lt;br /&gt;
  for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
    pinMode(pinVib[i], OUTPUT);     &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
    pinMode(pinContactPoints[i], INPUT);     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  &lt;br /&gt;
    sendInputs();&lt;br /&gt;
    &lt;br /&gt;
    // TODO eliminate LF and CR&lt;br /&gt;
    if (Serial.available() &amp;gt;=(NUMVIB*3)) {&lt;br /&gt;
      for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
        levelVib[i]=convertLevel(Serial.read());&lt;br /&gt;
        if(levelVib[i]&amp;gt;MAXVIB) {&lt;br /&gt;
          levelVib[i]=MAXVIB; // protect the motor&lt;br /&gt;
        }&lt;br /&gt;
        levelEndVib[i]=convertLevel(Serial.read());&lt;br /&gt;
        if(levelEndVib[i]&amp;gt;MAXVIB) {&lt;br /&gt;
          levelEndVib[i]=MAXVIB; // protect the motor&lt;br /&gt;
        }&lt;br /&gt;
        durationVib[i]= convertDuration(Serial.read());&lt;br /&gt;
        if(durationVib[i]==0) {&lt;br /&gt;
          durationVib[i]=0;     &lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
 &lt;br /&gt;
      for (int j=0; j&amp;lt;NUMVIB; j++) {&lt;br /&gt;
        // calculate next duration&lt;br /&gt;
        byte minDuration=0xFF;&lt;br /&gt;
        byte cpt=0;&lt;br /&gt;
        for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
          if(durationVib[i]&amp;gt;0 &amp;amp;&amp;amp; durationVib[i]&amp;lt;minDuration) {&lt;br /&gt;
            minDuration=durationVib[i];&lt;br /&gt;
            cpt++;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        if(cpt==0) {&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if(j==0){      &lt;br /&gt;
          for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
            // if levelVib[i]==0, the vibration is stopped&lt;br /&gt;
            analogWrite(pinVib[i], levelVib[i]);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // sendInputs();&lt;br /&gt;
        delay(minDuration*COEF);&lt;br /&gt;
        &lt;br /&gt;
        for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
          if(durationVib[i]!=0) {&lt;br /&gt;
            durationVib[i]-=minDuration;&lt;br /&gt;
          }&lt;br /&gt;
          if(durationVib[i]==0 &amp;amp;&amp;amp; levelVib[i]&amp;gt;0) {&lt;br /&gt;
            analogWrite(pinVib[i], levelEndVib[i]);&lt;br /&gt;
          }&lt;br /&gt;
        }    &lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sendInputs(){   &lt;br /&gt;
    // send the flex sensor value on TX&lt;br /&gt;
    Serial.print(map(analogRead(FLEX_SENSOR_PIN), 0, 1023, 0, 255));&lt;br /&gt;
    // send the contacts states flags on TX&lt;br /&gt;
    for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
      if (digitalRead(pinContactPoints[i]) == HIGH) {&lt;br /&gt;
        Serial.print(&amp;quot;1&amp;quot;);&lt;br /&gt;
      } else {  &lt;br /&gt;
        Serial.print(&amp;quot;0&amp;quot;);        &lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte parse(byte b) {&lt;br /&gt;
  if(b&amp;gt;=&#039;0&#039; &amp;amp;&amp;amp; b&amp;lt;=&#039;9&#039;) {&lt;br /&gt;
    return (b-&#039;0&#039;);&lt;br /&gt;
  } else if(b&amp;gt;=&#039;A&#039; &amp;amp;&amp;amp; b&amp;lt;=&#039;F&#039;) {&lt;br /&gt;
    return (b-&#039;A&#039;+10);&lt;br /&gt;
  } else return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte convertLevel(byte b) {&lt;br /&gt;
  return map(parse(b), 0, 0x0F, 0, MAXVIB);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte convertDuration(byte b) {&lt;br /&gt;
  return parse(b)&amp;lt;&amp;lt;4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Program to test contacts and motors===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Haptic Glove Test&lt;br /&gt;
 &lt;br /&gt;
 This program tests the finger contacts of the haptic glove. The vibration motor associated with a finger vibrates when the finger and the thumb are in contact.&lt;br /&gt;
 &lt;br /&gt;
 Vibration Motor, sku: ROB-08449&lt;br /&gt;
 http://www.sparkfun.com/products/8449&lt;br /&gt;
 http://www.sparkfun.com/products/8468&lt;br /&gt;
 &amp;quot;With a 2-3.6V operating range, these units shake crazily at 3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Septembre 30, 2011 by Didier Donsez &lt;br /&gt;
 &lt;br /&gt;
 This example code is in the public domain.&lt;br /&gt;
&lt;br /&gt;
 */&lt;br /&gt;
const int MAXVIB=180; // 180 is 3.6V if Vin is 5V (Arduino Uno)&lt;br /&gt;
&lt;br /&gt;
const int NUMCONTACTPOINTS=4; // number of electric contacts points (contacts are made with conductive textiles and conductive threads)&lt;br /&gt;
&lt;br /&gt;
boolean state[NUMCONTACTPOINTS];&lt;br /&gt;
byte pinVib[NUMCONTACTPOINTS] = {5, 6, 10, 11 }; // Analog output pins that the vibration motors are attached to&lt;br /&gt;
byte pinContactPoints[NUMCONTACTPOINTS] = {2, 4, 7, 8 }; // Digital input pins that the contacts are attached to (the thumb finger is on the Vin). Use pull-down.&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // initialize serial communications at 9600 bps:&lt;br /&gt;
  // Serial.begin(9600); &lt;br /&gt;
  &lt;br /&gt;
  for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
    pinMode(pinVib[i], OUTPUT);     &lt;br /&gt;
    pinMode(pinContactPoints[i], INPUT);     &lt;br /&gt;
    state[i]=false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
    boolean change=false;&lt;br /&gt;
    for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
      if (digitalRead(pinContactPoints[i]) == HIGH) {&lt;br /&gt;
        if(!state[i]) {&lt;br /&gt;
         analogWrite(pinVib[i], MAXVIB);&lt;br /&gt;
         state[i]=true;&lt;br /&gt;
         change=true;&lt;br /&gt;
        }&lt;br /&gt;
      } else {  &lt;br /&gt;
        if(state[i]) {&lt;br /&gt;
         analogWrite(pinVib[i], MAXVIB);&lt;br /&gt;
         state[i]=false;&lt;br /&gt;
         change=true;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if(change) {&lt;br /&gt;
      delay(250);&lt;br /&gt;
    } else {&lt;br /&gt;
      delay(100);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Haptic_Glove&amp;diff=3858</id>
		<title>Haptic Glove</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Haptic_Glove&amp;diff=3858"/>
		<updated>2011-11-28T21:36:17Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* UE/Module: Projet IHM Avancé de RICM5&lt;br /&gt;
* Enseignant: Didier Donsez&lt;br /&gt;
* Elèves RICM5: Christophe Havard (chef de projet), Renaud Collin&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
La [[Haptic perception|perception haptique]] est désormais présente dans la plupart des téléphones portables, les manettes de jeux vidéos, les consoles de jeu portables etc. Son intérêt premier est d&#039;augmenter les sensations de l&#039;utilisateur en stimulant, en plus de son sens de la vue, son sens du [http://fr.wikipedia.org/wiki/Toucher|&#039;&#039;&#039;toucher&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
La plupart des appareils nomades possèdent un vibreur qui permet d&#039;associer un stimuli visuel (action sur un objet virtuel) à un stimuli physique, en l&#039;occurence une vibration de l&#039;appareil.&lt;br /&gt;
Par exemple, sur la plupart des téléphones, il est possible de faire vibrer l&#039;appareil à chaque appui sur une lettre lors de l&#039;écriture d&#039;un SMS.&lt;br /&gt;
&lt;br /&gt;
Mais qu&#039;en est-il d&#039;une grande/très grande surface tactile type &amp;quot;table&amp;quot;? Il est impossible d&#039;y intégrer des vibreurs. Il faut donc trouver un autre moyen de faire &#039;&#039;&#039;ressentir&#039;&#039;&#039; à l&#039;utilisateur les actions qu&#039;il effectue sur la surface.&lt;br /&gt;
&lt;br /&gt;
Ce projet vise donc à réaliser un &#039;&#039;&#039;gant&#039;&#039;&#039; qui permet d&#039;associer à chaque action sur un objet virtuel, une vibration dans la main de l&#039;utilisateur.&lt;br /&gt;
LE cerveau de celui-ci fera naturellement le lien entre ce qu&#039;il voit et ce qu&#039;il ressent.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Dans le cadre des projets d&#039;approfondissement RICM5, nous avons proposé de concevoir et fabriquer un gant équipé de vibreurs à chaque doigt. De plus, nous fournirons l&#039;API permettant de contrôler les vibrations de chaque doigt.&lt;br /&gt;
&lt;br /&gt;
==Matériel==&lt;br /&gt;
* 1 glove (cotton, leather)&lt;br /&gt;
* [[Arduino]] Uno or Lilypad or [[Arduino FIO]]&lt;br /&gt;
* 1 XBee module or Bluetooth module for wireless communication&lt;br /&gt;
* 5 [[Vibration motor]]s&lt;br /&gt;
&lt;br /&gt;
Optional&lt;br /&gt;
* 1 [http://ardx.org/src/guide/2/ARDX-EG-SPAR-FR-WEB.pdf#page=34 Flex sensor]&lt;br /&gt;
* 1 [http://www.sparkfun.com/products/9267 Accelerometer ADXL335]&lt;br /&gt;
* 1 gyroscope (WiiMotion)&lt;br /&gt;
For finger contacts&lt;br /&gt;
* Conductive textiles&lt;br /&gt;
** http://www.sparkfun.com/products/10055&lt;br /&gt;
** http://www.sparkfun.com/products/10056&lt;br /&gt;
* Conductive threads &lt;br /&gt;
** http://www.sparkfun.com/products/8549&lt;br /&gt;
** http://www.sparkfun.com/products/8544&lt;br /&gt;
&lt;br /&gt;
[[Image:HapticGlovev0.jpg|500px|Haptic Glove v0.1]]&lt;br /&gt;
[[Image:Arduino_breadboard.JPG|500px|Haptic Glove v0.2]]&lt;br /&gt;
[[Image:HapticGlove 1.JPG|500px|Haptic Glove v0.2]]&lt;br /&gt;
[[Image:HapticGlove 2.JPG|500px|Haptic Glove v0.2]]&lt;br /&gt;
&lt;br /&gt;
==Source code==&lt;br /&gt;
===Progam to drive the haptic glove===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Haptic Glove&lt;br /&gt;
 &lt;br /&gt;
 Reads 15 bytes-long command (encoding the level and the duration of the 5 vibration motors connected to the Arduino&#039; PWM pins) and vibrate during the duration the motors.&lt;br /&gt;
 &lt;br /&gt;
 Vibration Motor, sku: ROB-08449&lt;br /&gt;
 http://www.sparkfun.com/products/8449&lt;br /&gt;
 http://www.sparkfun.com/products/8468&lt;br /&gt;
 &amp;quot;With a 2-3.6V operating range, these units shake crazily at 3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Septembre 18, 2011 by Didier Donsez &lt;br /&gt;
 &lt;br /&gt;
 This example code is in the public domain.&lt;br /&gt;
&lt;br /&gt;
 Input format is 5 groups of 3 hexadecimal characters&lt;br /&gt;
  one group per motor&lt;br /&gt;
  first char is the vibration level (F is Max)&lt;br /&gt;
  second char is the vibration level setted after the duration (0 to stop vibration)&lt;br /&gt;
  third char is the duration of the vibration (value is  char * 16 * COEF milliseconds)&lt;br /&gt;
 &lt;br /&gt;
 Test by sending the following inputs with the serial monitor&lt;br /&gt;
&lt;br /&gt;
 F09000000000000&lt;br /&gt;
 000F09000000000&lt;br /&gt;
 000000F09000000&lt;br /&gt;
 000000000F09000&lt;br /&gt;
 000000000000F09&lt;br /&gt;
 F09F09F09F09F09&lt;br /&gt;
 F01F03F05F07F09&lt;br /&gt;
&lt;br /&gt;
 F51F53F55F57F59 // continue vib after duration&lt;br /&gt;
 000000000000000 // stop all vibrations&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
const int MAXVIB=180; // 180 is 3.6V if Vin is 5V (Arduino Uno)&lt;br /&gt;
const int COEF=10; // Coeficient for duration (Max duration is 256 * COEF milliseconds&lt;br /&gt;
&lt;br /&gt;
const int NUMVIB=5; // Number of vibration motors (one per finger)&lt;br /&gt;
&lt;br /&gt;
byte levelVib[NUMVIB]; // Level for vibration&lt;br /&gt;
byte levelEndVib[NUMVIB]; // Level for vibration after the delay&lt;br /&gt;
byte durationVib[NUMVIB]; // Duration for vibration&lt;br /&gt;
byte pinVib[NUMVIB] = {3, 5, 6, 10, 11 }; // Analog output pins that the vibration motors are attached to&lt;br /&gt;
&lt;br /&gt;
const byte FLEX_SENSOR_PIN=A0; // pin number of the flex sensor&lt;br /&gt;
&lt;br /&gt;
const int NUMCONTACTPOINTS=4; // number of electric contacts points (contacts are made with conductive textiles and conductive threads)&lt;br /&gt;
byte pinContactPoints[NUMCONTACTPOINTS] = {2, 4, 7, 8 }; // Digital input pins that the contacts are attached to (the thumb finger is on the Vin). Use pull-down.&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // initialize serial communications at 9600 bps:&lt;br /&gt;
  Serial.begin(9600); &lt;br /&gt;
  &lt;br /&gt;
  for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
    pinMode(pinVib[i], OUTPUT);     &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
    pinMode(pinContactPoints[i], INPUT);     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  &lt;br /&gt;
    sendInputs();&lt;br /&gt;
    &lt;br /&gt;
    // TODO eliminate LF and CR&lt;br /&gt;
    if (Serial.available() &amp;gt;=(NUMVIB*3)) {&lt;br /&gt;
      for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
        levelVib[i]=convertLevel(Serial.read());&lt;br /&gt;
        if(levelVib[i]&amp;gt;MAXVIB) {&lt;br /&gt;
          levelVib[i]=MAXVIB; // protect the motor&lt;br /&gt;
        }&lt;br /&gt;
        levelEndVib[i]=convertLevel(Serial.read());&lt;br /&gt;
        if(levelEndVib[i]&amp;gt;MAXVIB) {&lt;br /&gt;
          levelEndVib[i]=MAXVIB; // protect the motor&lt;br /&gt;
        }&lt;br /&gt;
        durationVib[i]= convertDuration(Serial.read());&lt;br /&gt;
        if(durationVib[i]==0) {&lt;br /&gt;
          durationVib[i]=0;     &lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
 &lt;br /&gt;
      for (int j=0; j&amp;lt;NUMVIB; j++) {&lt;br /&gt;
        // calculate next duration&lt;br /&gt;
        byte minDuration=0xFF;&lt;br /&gt;
        byte cpt=0;&lt;br /&gt;
        for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
          if(durationVib[i]&amp;gt;0 &amp;amp;&amp;amp; durationVib[i]&amp;lt;minDuration) {&lt;br /&gt;
            minDuration=durationVib[i];&lt;br /&gt;
            cpt++;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        if(cpt==0) {&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if(j==0){      &lt;br /&gt;
          for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
            // if levelVib[i]==0, the vibration is stopped&lt;br /&gt;
            analogWrite(pinVib[i], levelVib[i]);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // sendInputs();&lt;br /&gt;
        delay(minDuration*COEF);&lt;br /&gt;
        &lt;br /&gt;
        for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
          if(durationVib[i]!=0) {&lt;br /&gt;
            durationVib[i]-=minDuration;&lt;br /&gt;
          }&lt;br /&gt;
          if(durationVib[i]==0 &amp;amp;&amp;amp; levelVib[i]&amp;gt;0) {&lt;br /&gt;
            analogWrite(pinVib[i], levelEndVib[i]);&lt;br /&gt;
          }&lt;br /&gt;
        }    &lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sendInputs(){   &lt;br /&gt;
    // send the flex sensor value on TX&lt;br /&gt;
    Serial.print(map(analogRead(FLEX_SENSOR_PIN), 0, 1023, 0, 255));&lt;br /&gt;
    // send the contacts states flags on TX&lt;br /&gt;
    for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
      if (digitalRead(pinContactPoints[i]) == HIGH) {&lt;br /&gt;
        Serial.print(&amp;quot;1&amp;quot;);&lt;br /&gt;
      } else {  &lt;br /&gt;
        Serial.print(&amp;quot;0&amp;quot;);        &lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte parse(byte b) {&lt;br /&gt;
  if(b&amp;gt;=&#039;0&#039; &amp;amp;&amp;amp; b&amp;lt;=&#039;9&#039;) {&lt;br /&gt;
    return (b-&#039;0&#039;);&lt;br /&gt;
  } else if(b&amp;gt;=&#039;A&#039; &amp;amp;&amp;amp; b&amp;lt;=&#039;F&#039;) {&lt;br /&gt;
    return (b-&#039;A&#039;+10);&lt;br /&gt;
  } else return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte convertLevel(byte b) {&lt;br /&gt;
  return map(parse(b), 0, 0x0F, 0, MAXVIB);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte convertDuration(byte b) {&lt;br /&gt;
  return parse(b)&amp;lt;&amp;lt;4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Program to test contacts and motors===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Haptic Glove Test&lt;br /&gt;
 &lt;br /&gt;
 This program tests the finger contacts of the haptic glove. The vibration motor associated with a finger vibrates when the finger and the thumb are in contact.&lt;br /&gt;
 &lt;br /&gt;
 Vibration Motor, sku: ROB-08449&lt;br /&gt;
 http://www.sparkfun.com/products/8449&lt;br /&gt;
 http://www.sparkfun.com/products/8468&lt;br /&gt;
 &amp;quot;With a 2-3.6V operating range, these units shake crazily at 3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Septembre 30, 2011 by Didier Donsez &lt;br /&gt;
 &lt;br /&gt;
 This example code is in the public domain.&lt;br /&gt;
&lt;br /&gt;
 */&lt;br /&gt;
const int MAXVIB=180; // 180 is 3.6V if Vin is 5V (Arduino Uno)&lt;br /&gt;
&lt;br /&gt;
const int NUMCONTACTPOINTS=4; // number of electric contacts points (contacts are made with conductive textiles and conductive threads)&lt;br /&gt;
&lt;br /&gt;
boolean state[NUMCONTACTPOINTS];&lt;br /&gt;
byte pinVib[NUMCONTACTPOINTS] = {5, 6, 10, 11 }; // Analog output pins that the vibration motors are attached to&lt;br /&gt;
byte pinContactPoints[NUMCONTACTPOINTS] = {2, 4, 7, 8 }; // Digital input pins that the contacts are attached to (the thumb finger is on the Vin). Use pull-down.&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // initialize serial communications at 9600 bps:&lt;br /&gt;
  // Serial.begin(9600); &lt;br /&gt;
  &lt;br /&gt;
  for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
    pinMode(pinVib[i], OUTPUT);     &lt;br /&gt;
    pinMode(pinContactPoints[i], INPUT);     &lt;br /&gt;
    state[i]=false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
    boolean change=false;&lt;br /&gt;
    for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
      if (digitalRead(pinContactPoints[i]) == HIGH) {&lt;br /&gt;
        if(!state[i]) {&lt;br /&gt;
         analogWrite(pinVib[i], MAXVIB);&lt;br /&gt;
         state[i]=true;&lt;br /&gt;
         change=true;&lt;br /&gt;
        }&lt;br /&gt;
      } else {  &lt;br /&gt;
        if(state[i]) {&lt;br /&gt;
         analogWrite(pinVib[i], MAXVIB);&lt;br /&gt;
         state[i]=false;&lt;br /&gt;
         change=true;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if(change) {&lt;br /&gt;
      delay(250);&lt;br /&gt;
    } else {&lt;br /&gt;
      delay(100);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Haptic_Glove&amp;diff=3857</id>
		<title>Haptic Glove</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Haptic_Glove&amp;diff=3857"/>
		<updated>2011-11-28T21:35:49Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* UE/Module: Projet IHM Avancé de RICM5&lt;br /&gt;
* Enseignant: Didier Donsez&lt;br /&gt;
* Elèves RICM5: Christophe Havard (chef de projet), Renaud Collin&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
La [[Haptic perception|perception haptique]] est désormais présente dans la plupart des téléphones portables, les manettes de jeux vidéos, les consoles de jeu portables etc. Son intérêt premier est d&#039;augmenter les sensations de l&#039;utilisateur en stimulant, en plus de son sens de la vue, son sens du [http://fr.wikipedia.org/wiki/Toucher|&#039;&#039;&#039;toucher&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
La plupart des appareils nomades possèdent un vibreur qui permet d&#039;associer un stimuli visuel (action sur un objet virtuel) à un stimuli physique, en l&#039;occurence une vibration de l&#039;appareil.&lt;br /&gt;
Par exemple, sur la plupart des téléphones, il est possible de faire vibrer l&#039;appareil à chaque appui sur une lettre lors de l&#039;écriture d&#039;un SMS.&lt;br /&gt;
&lt;br /&gt;
Mais qu&#039;en est-il d&#039;une grande/très grande surface tactile type &amp;quot;table&amp;quot;? Il est impossible d&#039;y intégrer des vibreurs. Il faut donc trouver un autre moyen de faire &#039;&#039;&#039;ressentir&#039;&#039;&#039; à l&#039;utilisateur les actions qu&#039;il effectue sur la surface.&lt;br /&gt;
&lt;br /&gt;
Ce projet vise donc à réaliser un &#039;&#039;&#039;gant&#039;&#039;&#039; qui permet d&#039;associer à chaque action sur un objet virtuel, une vibration dans la main de l&#039;utilisateur.&lt;br /&gt;
LE cerveau de celui-ci fera naturellement le lien entre ce qu&#039;il voit et ce qu&#039;il ressent.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Dans le cadre des projets d&#039;approfondissement RICM5, nous avons proposé de concevoir et fabriquer un gant équipé de vibreurs à chaque doigt. De plus, nous fournirons l&#039;API permettant de contrôler les vibrations de chaque doigt.&lt;br /&gt;
&lt;br /&gt;
==Matériel==&lt;br /&gt;
* 1 glove (cotton, leather)&lt;br /&gt;
* [[Arduino]] Uno or Lilypad or [[Arduino FIO]]&lt;br /&gt;
* 1 XBee module or Bluetooth module for wireless communication&lt;br /&gt;
* 5 [[Vibration motor]]s&lt;br /&gt;
&lt;br /&gt;
Optional&lt;br /&gt;
* 1 [http://ardx.org/src/guide/2/ARDX-EG-SPAR-FR-WEB.pdf#page=34 Flex sensor]&lt;br /&gt;
* 1 [http://www.sparkfun.com/products/9267 Accelerometer ADXL335]&lt;br /&gt;
* 1 gyroscope (WiiMotion)&lt;br /&gt;
For finger contacts&lt;br /&gt;
* Conductive textiles&lt;br /&gt;
** http://www.sparkfun.com/products/10055&lt;br /&gt;
** http://www.sparkfun.com/products/10056&lt;br /&gt;
* Conductive threads &lt;br /&gt;
** http://www.sparkfun.com/products/8549&lt;br /&gt;
** http://www.sparkfun.com/products/8544&lt;br /&gt;
&lt;br /&gt;
[[Image:HapticGlovev0.jpg|500px|Haptic Glove v0.1]]&lt;br /&gt;
[[Image:Arduino_breadboard.JPG|500px|Haptic Glove v0.2]]&lt;br /&gt;
[[Image:HapticGlove_1.JPG|500px|Haptic Glove v0.2]]&lt;br /&gt;
[[Image:HapticGlove_2.JPG|500px|Haptic Glove v0.2]]&lt;br /&gt;
&lt;br /&gt;
==Source code==&lt;br /&gt;
===Progam to drive the haptic glove===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Haptic Glove&lt;br /&gt;
 &lt;br /&gt;
 Reads 15 bytes-long command (encoding the level and the duration of the 5 vibration motors connected to the Arduino&#039; PWM pins) and vibrate during the duration the motors.&lt;br /&gt;
 &lt;br /&gt;
 Vibration Motor, sku: ROB-08449&lt;br /&gt;
 http://www.sparkfun.com/products/8449&lt;br /&gt;
 http://www.sparkfun.com/products/8468&lt;br /&gt;
 &amp;quot;With a 2-3.6V operating range, these units shake crazily at 3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Septembre 18, 2011 by Didier Donsez &lt;br /&gt;
 &lt;br /&gt;
 This example code is in the public domain.&lt;br /&gt;
&lt;br /&gt;
 Input format is 5 groups of 3 hexadecimal characters&lt;br /&gt;
  one group per motor&lt;br /&gt;
  first char is the vibration level (F is Max)&lt;br /&gt;
  second char is the vibration level setted after the duration (0 to stop vibration)&lt;br /&gt;
  third char is the duration of the vibration (value is  char * 16 * COEF milliseconds)&lt;br /&gt;
 &lt;br /&gt;
 Test by sending the following inputs with the serial monitor&lt;br /&gt;
&lt;br /&gt;
 F09000000000000&lt;br /&gt;
 000F09000000000&lt;br /&gt;
 000000F09000000&lt;br /&gt;
 000000000F09000&lt;br /&gt;
 000000000000F09&lt;br /&gt;
 F09F09F09F09F09&lt;br /&gt;
 F01F03F05F07F09&lt;br /&gt;
&lt;br /&gt;
 F51F53F55F57F59 // continue vib after duration&lt;br /&gt;
 000000000000000 // stop all vibrations&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
const int MAXVIB=180; // 180 is 3.6V if Vin is 5V (Arduino Uno)&lt;br /&gt;
const int COEF=10; // Coeficient for duration (Max duration is 256 * COEF milliseconds&lt;br /&gt;
&lt;br /&gt;
const int NUMVIB=5; // Number of vibration motors (one per finger)&lt;br /&gt;
&lt;br /&gt;
byte levelVib[NUMVIB]; // Level for vibration&lt;br /&gt;
byte levelEndVib[NUMVIB]; // Level for vibration after the delay&lt;br /&gt;
byte durationVib[NUMVIB]; // Duration for vibration&lt;br /&gt;
byte pinVib[NUMVIB] = {3, 5, 6, 10, 11 }; // Analog output pins that the vibration motors are attached to&lt;br /&gt;
&lt;br /&gt;
const byte FLEX_SENSOR_PIN=A0; // pin number of the flex sensor&lt;br /&gt;
&lt;br /&gt;
const int NUMCONTACTPOINTS=4; // number of electric contacts points (contacts are made with conductive textiles and conductive threads)&lt;br /&gt;
byte pinContactPoints[NUMCONTACTPOINTS] = {2, 4, 7, 8 }; // Digital input pins that the contacts are attached to (the thumb finger is on the Vin). Use pull-down.&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // initialize serial communications at 9600 bps:&lt;br /&gt;
  Serial.begin(9600); &lt;br /&gt;
  &lt;br /&gt;
  for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
    pinMode(pinVib[i], OUTPUT);     &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
    pinMode(pinContactPoints[i], INPUT);     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  &lt;br /&gt;
    sendInputs();&lt;br /&gt;
    &lt;br /&gt;
    // TODO eliminate LF and CR&lt;br /&gt;
    if (Serial.available() &amp;gt;=(NUMVIB*3)) {&lt;br /&gt;
      for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
        levelVib[i]=convertLevel(Serial.read());&lt;br /&gt;
        if(levelVib[i]&amp;gt;MAXVIB) {&lt;br /&gt;
          levelVib[i]=MAXVIB; // protect the motor&lt;br /&gt;
        }&lt;br /&gt;
        levelEndVib[i]=convertLevel(Serial.read());&lt;br /&gt;
        if(levelEndVib[i]&amp;gt;MAXVIB) {&lt;br /&gt;
          levelEndVib[i]=MAXVIB; // protect the motor&lt;br /&gt;
        }&lt;br /&gt;
        durationVib[i]= convertDuration(Serial.read());&lt;br /&gt;
        if(durationVib[i]==0) {&lt;br /&gt;
          durationVib[i]=0;     &lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
 &lt;br /&gt;
      for (int j=0; j&amp;lt;NUMVIB; j++) {&lt;br /&gt;
        // calculate next duration&lt;br /&gt;
        byte minDuration=0xFF;&lt;br /&gt;
        byte cpt=0;&lt;br /&gt;
        for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
          if(durationVib[i]&amp;gt;0 &amp;amp;&amp;amp; durationVib[i]&amp;lt;minDuration) {&lt;br /&gt;
            minDuration=durationVib[i];&lt;br /&gt;
            cpt++;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        if(cpt==0) {&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if(j==0){      &lt;br /&gt;
          for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
            // if levelVib[i]==0, the vibration is stopped&lt;br /&gt;
            analogWrite(pinVib[i], levelVib[i]);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // sendInputs();&lt;br /&gt;
        delay(minDuration*COEF);&lt;br /&gt;
        &lt;br /&gt;
        for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
          if(durationVib[i]!=0) {&lt;br /&gt;
            durationVib[i]-=minDuration;&lt;br /&gt;
          }&lt;br /&gt;
          if(durationVib[i]==0 &amp;amp;&amp;amp; levelVib[i]&amp;gt;0) {&lt;br /&gt;
            analogWrite(pinVib[i], levelEndVib[i]);&lt;br /&gt;
          }&lt;br /&gt;
        }    &lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sendInputs(){   &lt;br /&gt;
    // send the flex sensor value on TX&lt;br /&gt;
    Serial.print(map(analogRead(FLEX_SENSOR_PIN), 0, 1023, 0, 255));&lt;br /&gt;
    // send the contacts states flags on TX&lt;br /&gt;
    for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
      if (digitalRead(pinContactPoints[i]) == HIGH) {&lt;br /&gt;
        Serial.print(&amp;quot;1&amp;quot;);&lt;br /&gt;
      } else {  &lt;br /&gt;
        Serial.print(&amp;quot;0&amp;quot;);        &lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte parse(byte b) {&lt;br /&gt;
  if(b&amp;gt;=&#039;0&#039; &amp;amp;&amp;amp; b&amp;lt;=&#039;9&#039;) {&lt;br /&gt;
    return (b-&#039;0&#039;);&lt;br /&gt;
  } else if(b&amp;gt;=&#039;A&#039; &amp;amp;&amp;amp; b&amp;lt;=&#039;F&#039;) {&lt;br /&gt;
    return (b-&#039;A&#039;+10);&lt;br /&gt;
  } else return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte convertLevel(byte b) {&lt;br /&gt;
  return map(parse(b), 0, 0x0F, 0, MAXVIB);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte convertDuration(byte b) {&lt;br /&gt;
  return parse(b)&amp;lt;&amp;lt;4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Program to test contacts and motors===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Haptic Glove Test&lt;br /&gt;
 &lt;br /&gt;
 This program tests the finger contacts of the haptic glove. The vibration motor associated with a finger vibrates when the finger and the thumb are in contact.&lt;br /&gt;
 &lt;br /&gt;
 Vibration Motor, sku: ROB-08449&lt;br /&gt;
 http://www.sparkfun.com/products/8449&lt;br /&gt;
 http://www.sparkfun.com/products/8468&lt;br /&gt;
 &amp;quot;With a 2-3.6V operating range, these units shake crazily at 3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Septembre 30, 2011 by Didier Donsez &lt;br /&gt;
 &lt;br /&gt;
 This example code is in the public domain.&lt;br /&gt;
&lt;br /&gt;
 */&lt;br /&gt;
const int MAXVIB=180; // 180 is 3.6V if Vin is 5V (Arduino Uno)&lt;br /&gt;
&lt;br /&gt;
const int NUMCONTACTPOINTS=4; // number of electric contacts points (contacts are made with conductive textiles and conductive threads)&lt;br /&gt;
&lt;br /&gt;
boolean state[NUMCONTACTPOINTS];&lt;br /&gt;
byte pinVib[NUMCONTACTPOINTS] = {5, 6, 10, 11 }; // Analog output pins that the vibration motors are attached to&lt;br /&gt;
byte pinContactPoints[NUMCONTACTPOINTS] = {2, 4, 7, 8 }; // Digital input pins that the contacts are attached to (the thumb finger is on the Vin). Use pull-down.&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // initialize serial communications at 9600 bps:&lt;br /&gt;
  // Serial.begin(9600); &lt;br /&gt;
  &lt;br /&gt;
  for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
    pinMode(pinVib[i], OUTPUT);     &lt;br /&gt;
    pinMode(pinContactPoints[i], INPUT);     &lt;br /&gt;
    state[i]=false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
    boolean change=false;&lt;br /&gt;
    for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
      if (digitalRead(pinContactPoints[i]) == HIGH) {&lt;br /&gt;
        if(!state[i]) {&lt;br /&gt;
         analogWrite(pinVib[i], MAXVIB);&lt;br /&gt;
         state[i]=true;&lt;br /&gt;
         change=true;&lt;br /&gt;
        }&lt;br /&gt;
      } else {  &lt;br /&gt;
        if(state[i]) {&lt;br /&gt;
         analogWrite(pinVib[i], MAXVIB);&lt;br /&gt;
         state[i]=false;&lt;br /&gt;
         change=true;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if(change) {&lt;br /&gt;
      delay(250);&lt;br /&gt;
    } else {&lt;br /&gt;
      delay(100);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:HapticGlove_2.jpg&amp;diff=3855</id>
		<title>File:HapticGlove 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:HapticGlove_2.jpg&amp;diff=3855"/>
		<updated>2011-11-28T21:35:20Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: Tissu conducteur cousu sur l&amp;#039;index le majeur et le pouce&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tissu conducteur cousu sur l&#039;index le majeur et le pouce&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:HapticGlove_1.jpg&amp;diff=3854</id>
		<title>File:HapticGlove 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:HapticGlove_1.jpg&amp;diff=3854"/>
		<updated>2011-11-28T21:34:02Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: Couture de tissu conducteur sur le dessus du gant afin de relier chaque vibreur à l&amp;#039;Arduino.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Couture de tissu conducteur sur le dessus du gant afin de relier chaque vibreur à l&#039;Arduino.&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Arduino_breadboard.JPG&amp;diff=3853</id>
		<title>File:Arduino breadboard.JPG</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Arduino_breadboard.JPG&amp;diff=3853"/>
		<updated>2011-11-28T21:29:33Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Haptic_Glove&amp;diff=3852</id>
		<title>Haptic Glove</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Haptic_Glove&amp;diff=3852"/>
		<updated>2011-11-28T21:27:15Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Objectifs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* UE/Module: Projet IHM Avancé de RICM5&lt;br /&gt;
* Enseignant: Didier Donsez&lt;br /&gt;
* Elèves RICM5: Christophe Havard (chef de projet), Renaud Collin&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
La [[Haptic perception|perception haptique]] est désormais présente dans la plupart des téléphones portables, les manettes de jeux vidéos, les consoles de jeu portables etc. Son intérêt premier est d&#039;augmenter les sensations de l&#039;utilisateur en stimulant, en plus de son sens de la vue, son sens du [http://fr.wikipedia.org/wiki/Toucher|&#039;&#039;&#039;toucher&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
La plupart des appareils nomades possèdent un vibreur qui permet d&#039;associer un stimuli visuel (action sur un objet virtuel) à un stimuli physique, en l&#039;occurence une vibration de l&#039;appareil.&lt;br /&gt;
Par exemple, sur la plupart des téléphones, il est possible de faire vibrer l&#039;appareil à chaque appui sur une lettre lors de l&#039;écriture d&#039;un SMS.&lt;br /&gt;
&lt;br /&gt;
Mais qu&#039;en est-il d&#039;une grande/très grande surface tactile type &amp;quot;table&amp;quot;? Il est impossible d&#039;y intégrer des vibreurs. Il faut donc trouver un autre moyen de faire &#039;&#039;&#039;ressentir&#039;&#039;&#039; à l&#039;utilisateur les actions qu&#039;il effectue sur la surface.&lt;br /&gt;
&lt;br /&gt;
Ce projet vise donc à réaliser un &#039;&#039;&#039;gant&#039;&#039;&#039; qui permet d&#039;associer à chaque action sur un objet virtuel, une vibration dans la main de l&#039;utilisateur.&lt;br /&gt;
LE cerveau de celui-ci fera naturellement le lien entre ce qu&#039;il voit et ce qu&#039;il ressent.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Dans le cadre des projets d&#039;approfondissement RICM5, nous avons proposé de concevoir et fabriquer un gant équipé de vibreurs à chaque doigt. De plus, nous fournirons l&#039;API permettant de contrôler les vibrations de chaque doigt.&lt;br /&gt;
&lt;br /&gt;
==Matériel==&lt;br /&gt;
* 1 glove (cotton, leather)&lt;br /&gt;
* [[Arduino]] Uno or Lilypad or [[Arduino FIO]]&lt;br /&gt;
* 1 XBee module or Bluetooth module for wireless communication&lt;br /&gt;
* 5 [[Vibration motor]]s&lt;br /&gt;
&lt;br /&gt;
Optional&lt;br /&gt;
* 1 [http://ardx.org/src/guide/2/ARDX-EG-SPAR-FR-WEB.pdf#page=34 Flex sensor]&lt;br /&gt;
* 1 [http://www.sparkfun.com/products/9267 Accelerometer ADXL335]&lt;br /&gt;
* 1 gyroscope (WiiMotion)&lt;br /&gt;
For finger contacts&lt;br /&gt;
* Conductive textiles&lt;br /&gt;
** http://www.sparkfun.com/products/10055&lt;br /&gt;
** http://www.sparkfun.com/products/10056&lt;br /&gt;
* Conductive threads &lt;br /&gt;
** http://www.sparkfun.com/products/8549&lt;br /&gt;
** http://www.sparkfun.com/products/8544&lt;br /&gt;
&lt;br /&gt;
[[Image:HapticGlovev0.jpg|500px|Haptic Glove v0.1]]&lt;br /&gt;
&lt;br /&gt;
==Source code==&lt;br /&gt;
===Progam to drive the haptic glove===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Haptic Glove&lt;br /&gt;
 &lt;br /&gt;
 Reads 15 bytes-long command (encoding the level and the duration of the 5 vibration motors connected to the Arduino&#039; PWM pins) and vibrate during the duration the motors.&lt;br /&gt;
 &lt;br /&gt;
 Vibration Motor, sku: ROB-08449&lt;br /&gt;
 http://www.sparkfun.com/products/8449&lt;br /&gt;
 http://www.sparkfun.com/products/8468&lt;br /&gt;
 &amp;quot;With a 2-3.6V operating range, these units shake crazily at 3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Septembre 18, 2011 by Didier Donsez &lt;br /&gt;
 &lt;br /&gt;
 This example code is in the public domain.&lt;br /&gt;
&lt;br /&gt;
 Input format is 5 groups of 3 hexadecimal characters&lt;br /&gt;
  one group per motor&lt;br /&gt;
  first char is the vibration level (F is Max)&lt;br /&gt;
  second char is the vibration level setted after the duration (0 to stop vibration)&lt;br /&gt;
  third char is the duration of the vibration (value is  char * 16 * COEF milliseconds)&lt;br /&gt;
 &lt;br /&gt;
 Test by sending the following inputs with the serial monitor&lt;br /&gt;
&lt;br /&gt;
 F09000000000000&lt;br /&gt;
 000F09000000000&lt;br /&gt;
 000000F09000000&lt;br /&gt;
 000000000F09000&lt;br /&gt;
 000000000000F09&lt;br /&gt;
 F09F09F09F09F09&lt;br /&gt;
 F01F03F05F07F09&lt;br /&gt;
&lt;br /&gt;
 F51F53F55F57F59 // continue vib after duration&lt;br /&gt;
 000000000000000 // stop all vibrations&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
const int MAXVIB=180; // 180 is 3.6V if Vin is 5V (Arduino Uno)&lt;br /&gt;
const int COEF=10; // Coeficient for duration (Max duration is 256 * COEF milliseconds&lt;br /&gt;
&lt;br /&gt;
const int NUMVIB=5; // Number of vibration motors (one per finger)&lt;br /&gt;
&lt;br /&gt;
byte levelVib[NUMVIB]; // Level for vibration&lt;br /&gt;
byte levelEndVib[NUMVIB]; // Level for vibration after the delay&lt;br /&gt;
byte durationVib[NUMVIB]; // Duration for vibration&lt;br /&gt;
byte pinVib[NUMVIB] = {3, 5, 6, 10, 11 }; // Analog output pins that the vibration motors are attached to&lt;br /&gt;
&lt;br /&gt;
const byte FLEX_SENSOR_PIN=A0; // pin number of the flex sensor&lt;br /&gt;
&lt;br /&gt;
const int NUMCONTACTPOINTS=4; // number of electric contacts points (contacts are made with conductive textiles and conductive threads)&lt;br /&gt;
byte pinContactPoints[NUMCONTACTPOINTS] = {2, 4, 7, 8 }; // Digital input pins that the contacts are attached to (the thumb finger is on the Vin). Use pull-down.&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // initialize serial communications at 9600 bps:&lt;br /&gt;
  Serial.begin(9600); &lt;br /&gt;
  &lt;br /&gt;
  for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
    pinMode(pinVib[i], OUTPUT);     &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
    pinMode(pinContactPoints[i], INPUT);     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  &lt;br /&gt;
    sendInputs();&lt;br /&gt;
    &lt;br /&gt;
    // TODO eliminate LF and CR&lt;br /&gt;
    if (Serial.available() &amp;gt;=(NUMVIB*3)) {&lt;br /&gt;
      for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
        levelVib[i]=convertLevel(Serial.read());&lt;br /&gt;
        if(levelVib[i]&amp;gt;MAXVIB) {&lt;br /&gt;
          levelVib[i]=MAXVIB; // protect the motor&lt;br /&gt;
        }&lt;br /&gt;
        levelEndVib[i]=convertLevel(Serial.read());&lt;br /&gt;
        if(levelEndVib[i]&amp;gt;MAXVIB) {&lt;br /&gt;
          levelEndVib[i]=MAXVIB; // protect the motor&lt;br /&gt;
        }&lt;br /&gt;
        durationVib[i]= convertDuration(Serial.read());&lt;br /&gt;
        if(durationVib[i]==0) {&lt;br /&gt;
          durationVib[i]=0;     &lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
 &lt;br /&gt;
      for (int j=0; j&amp;lt;NUMVIB; j++) {&lt;br /&gt;
        // calculate next duration&lt;br /&gt;
        byte minDuration=0xFF;&lt;br /&gt;
        byte cpt=0;&lt;br /&gt;
        for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
          if(durationVib[i]&amp;gt;0 &amp;amp;&amp;amp; durationVib[i]&amp;lt;minDuration) {&lt;br /&gt;
            minDuration=durationVib[i];&lt;br /&gt;
            cpt++;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        if(cpt==0) {&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if(j==0){      &lt;br /&gt;
          for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
            // if levelVib[i]==0, the vibration is stopped&lt;br /&gt;
            analogWrite(pinVib[i], levelVib[i]);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // sendInputs();&lt;br /&gt;
        delay(minDuration*COEF);&lt;br /&gt;
        &lt;br /&gt;
        for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
          if(durationVib[i]!=0) {&lt;br /&gt;
            durationVib[i]-=minDuration;&lt;br /&gt;
          }&lt;br /&gt;
          if(durationVib[i]==0 &amp;amp;&amp;amp; levelVib[i]&amp;gt;0) {&lt;br /&gt;
            analogWrite(pinVib[i], levelEndVib[i]);&lt;br /&gt;
          }&lt;br /&gt;
        }    &lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sendInputs(){   &lt;br /&gt;
    // send the flex sensor value on TX&lt;br /&gt;
    Serial.print(map(analogRead(FLEX_SENSOR_PIN), 0, 1023, 0, 255));&lt;br /&gt;
    // send the contacts states flags on TX&lt;br /&gt;
    for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
      if (digitalRead(pinContactPoints[i]) == HIGH) {&lt;br /&gt;
        Serial.print(&amp;quot;1&amp;quot;);&lt;br /&gt;
      } else {  &lt;br /&gt;
        Serial.print(&amp;quot;0&amp;quot;);        &lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte parse(byte b) {&lt;br /&gt;
  if(b&amp;gt;=&#039;0&#039; &amp;amp;&amp;amp; b&amp;lt;=&#039;9&#039;) {&lt;br /&gt;
    return (b-&#039;0&#039;);&lt;br /&gt;
  } else if(b&amp;gt;=&#039;A&#039; &amp;amp;&amp;amp; b&amp;lt;=&#039;F&#039;) {&lt;br /&gt;
    return (b-&#039;A&#039;+10);&lt;br /&gt;
  } else return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte convertLevel(byte b) {&lt;br /&gt;
  return map(parse(b), 0, 0x0F, 0, MAXVIB);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte convertDuration(byte b) {&lt;br /&gt;
  return parse(b)&amp;lt;&amp;lt;4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Program to test contacts and motors===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Haptic Glove Test&lt;br /&gt;
 &lt;br /&gt;
 This program tests the finger contacts of the haptic glove. The vibration motor associated with a finger vibrates when the finger and the thumb are in contact.&lt;br /&gt;
 &lt;br /&gt;
 Vibration Motor, sku: ROB-08449&lt;br /&gt;
 http://www.sparkfun.com/products/8449&lt;br /&gt;
 http://www.sparkfun.com/products/8468&lt;br /&gt;
 &amp;quot;With a 2-3.6V operating range, these units shake crazily at 3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Septembre 30, 2011 by Didier Donsez &lt;br /&gt;
 &lt;br /&gt;
 This example code is in the public domain.&lt;br /&gt;
&lt;br /&gt;
 */&lt;br /&gt;
const int MAXVIB=180; // 180 is 3.6V if Vin is 5V (Arduino Uno)&lt;br /&gt;
&lt;br /&gt;
const int NUMCONTACTPOINTS=4; // number of electric contacts points (contacts are made with conductive textiles and conductive threads)&lt;br /&gt;
&lt;br /&gt;
boolean state[NUMCONTACTPOINTS];&lt;br /&gt;
byte pinVib[NUMCONTACTPOINTS] = {5, 6, 10, 11 }; // Analog output pins that the vibration motors are attached to&lt;br /&gt;
byte pinContactPoints[NUMCONTACTPOINTS] = {2, 4, 7, 8 }; // Digital input pins that the contacts are attached to (the thumb finger is on the Vin). Use pull-down.&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // initialize serial communications at 9600 bps:&lt;br /&gt;
  // Serial.begin(9600); &lt;br /&gt;
  &lt;br /&gt;
  for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
    pinMode(pinVib[i], OUTPUT);     &lt;br /&gt;
    pinMode(pinContactPoints[i], INPUT);     &lt;br /&gt;
    state[i]=false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
    boolean change=false;&lt;br /&gt;
    for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
      if (digitalRead(pinContactPoints[i]) == HIGH) {&lt;br /&gt;
        if(!state[i]) {&lt;br /&gt;
         analogWrite(pinVib[i], MAXVIB);&lt;br /&gt;
         state[i]=true;&lt;br /&gt;
         change=true;&lt;br /&gt;
        }&lt;br /&gt;
      } else {  &lt;br /&gt;
        if(state[i]) {&lt;br /&gt;
         analogWrite(pinVib[i], MAXVIB);&lt;br /&gt;
         state[i]=false;&lt;br /&gt;
         change=true;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if(change) {&lt;br /&gt;
      delay(250);&lt;br /&gt;
    } else {&lt;br /&gt;
      delay(100);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Haptic_Glove&amp;diff=3851</id>
		<title>Haptic Glove</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Haptic_Glove&amp;diff=3851"/>
		<updated>2011-11-28T21:23:03Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* UE/Module: Projet IHM Avancé de RICM5&lt;br /&gt;
* Enseignant: Didier Donsez&lt;br /&gt;
* Elèves RICM5: Christophe Havard (chef de projet), Renaud Collin&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
La [[Haptic perception|perception haptique]] est désormais présente dans la plupart des téléphones portables, les manettes de jeux vidéos, les consoles de jeu portables etc. Son intérêt premier est d&#039;augmenter les sensations de l&#039;utilisateur en stimulant, en plus de son sens de la vue, son sens du [http://fr.wikipedia.org/wiki/Toucher|&#039;&#039;&#039;toucher&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
La plupart des appareils nomades possèdent un vibreur qui permet d&#039;associer un stimuli visuel (action sur un objet virtuel) à un stimuli physique, en l&#039;occurence une vibration de l&#039;appareil.&lt;br /&gt;
Par exemple, sur la plupart des téléphones, il est possible de faire vibrer l&#039;appareil à chaque appui sur une lettre lors de l&#039;écriture d&#039;un SMS.&lt;br /&gt;
&lt;br /&gt;
Mais qu&#039;en est-il d&#039;une grande/très grande surface tactile type &amp;quot;table&amp;quot;? Il est impossible d&#039;y intégrer des vibreurs. Il faut donc trouver un autre moyen de faire &#039;&#039;&#039;ressentir&#039;&#039;&#039; à l&#039;utilisateur les actions qu&#039;il effectue sur la surface.&lt;br /&gt;
&lt;br /&gt;
Ce projet vise donc à réaliser un &#039;&#039;&#039;gant&#039;&#039;&#039; qui permet d&#039;associer à chaque action sur un objet virtuel, une vibration dans la main de l&#039;utilisateur.&lt;br /&gt;
LE cerveau de celui-ci fera naturellement le lien entre ce qu&#039;il voit et ce qu&#039;il ressent.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Matériel==&lt;br /&gt;
* 1 glove (cotton, leather)&lt;br /&gt;
* [[Arduino]] Uno or Lilypad or [[Arduino FIO]]&lt;br /&gt;
* 1 XBee module or Bluetooth module for wireless communication&lt;br /&gt;
* 5 [[Vibration motor]]s&lt;br /&gt;
&lt;br /&gt;
Optional&lt;br /&gt;
* 1 [http://ardx.org/src/guide/2/ARDX-EG-SPAR-FR-WEB.pdf#page=34 Flex sensor]&lt;br /&gt;
* 1 [http://www.sparkfun.com/products/9267 Accelerometer ADXL335]&lt;br /&gt;
* 1 gyroscope (WiiMotion)&lt;br /&gt;
For finger contacts&lt;br /&gt;
* Conductive textiles&lt;br /&gt;
** http://www.sparkfun.com/products/10055&lt;br /&gt;
** http://www.sparkfun.com/products/10056&lt;br /&gt;
* Conductive threads &lt;br /&gt;
** http://www.sparkfun.com/products/8549&lt;br /&gt;
** http://www.sparkfun.com/products/8544&lt;br /&gt;
&lt;br /&gt;
[[Image:HapticGlovev0.jpg|500px|Haptic Glove v0.1]]&lt;br /&gt;
&lt;br /&gt;
==Source code==&lt;br /&gt;
===Progam to drive the haptic glove===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Haptic Glove&lt;br /&gt;
 &lt;br /&gt;
 Reads 15 bytes-long command (encoding the level and the duration of the 5 vibration motors connected to the Arduino&#039; PWM pins) and vibrate during the duration the motors.&lt;br /&gt;
 &lt;br /&gt;
 Vibration Motor, sku: ROB-08449&lt;br /&gt;
 http://www.sparkfun.com/products/8449&lt;br /&gt;
 http://www.sparkfun.com/products/8468&lt;br /&gt;
 &amp;quot;With a 2-3.6V operating range, these units shake crazily at 3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Septembre 18, 2011 by Didier Donsez &lt;br /&gt;
 &lt;br /&gt;
 This example code is in the public domain.&lt;br /&gt;
&lt;br /&gt;
 Input format is 5 groups of 3 hexadecimal characters&lt;br /&gt;
  one group per motor&lt;br /&gt;
  first char is the vibration level (F is Max)&lt;br /&gt;
  second char is the vibration level setted after the duration (0 to stop vibration)&lt;br /&gt;
  third char is the duration of the vibration (value is  char * 16 * COEF milliseconds)&lt;br /&gt;
 &lt;br /&gt;
 Test by sending the following inputs with the serial monitor&lt;br /&gt;
&lt;br /&gt;
 F09000000000000&lt;br /&gt;
 000F09000000000&lt;br /&gt;
 000000F09000000&lt;br /&gt;
 000000000F09000&lt;br /&gt;
 000000000000F09&lt;br /&gt;
 F09F09F09F09F09&lt;br /&gt;
 F01F03F05F07F09&lt;br /&gt;
&lt;br /&gt;
 F51F53F55F57F59 // continue vib after duration&lt;br /&gt;
 000000000000000 // stop all vibrations&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
const int MAXVIB=180; // 180 is 3.6V if Vin is 5V (Arduino Uno)&lt;br /&gt;
const int COEF=10; // Coeficient for duration (Max duration is 256 * COEF milliseconds&lt;br /&gt;
&lt;br /&gt;
const int NUMVIB=5; // Number of vibration motors (one per finger)&lt;br /&gt;
&lt;br /&gt;
byte levelVib[NUMVIB]; // Level for vibration&lt;br /&gt;
byte levelEndVib[NUMVIB]; // Level for vibration after the delay&lt;br /&gt;
byte durationVib[NUMVIB]; // Duration for vibration&lt;br /&gt;
byte pinVib[NUMVIB] = {3, 5, 6, 10, 11 }; // Analog output pins that the vibration motors are attached to&lt;br /&gt;
&lt;br /&gt;
const byte FLEX_SENSOR_PIN=A0; // pin number of the flex sensor&lt;br /&gt;
&lt;br /&gt;
const int NUMCONTACTPOINTS=4; // number of electric contacts points (contacts are made with conductive textiles and conductive threads)&lt;br /&gt;
byte pinContactPoints[NUMCONTACTPOINTS] = {2, 4, 7, 8 }; // Digital input pins that the contacts are attached to (the thumb finger is on the Vin). Use pull-down.&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // initialize serial communications at 9600 bps:&lt;br /&gt;
  Serial.begin(9600); &lt;br /&gt;
  &lt;br /&gt;
  for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
    pinMode(pinVib[i], OUTPUT);     &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
    pinMode(pinContactPoints[i], INPUT);     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  &lt;br /&gt;
    sendInputs();&lt;br /&gt;
    &lt;br /&gt;
    // TODO eliminate LF and CR&lt;br /&gt;
    if (Serial.available() &amp;gt;=(NUMVIB*3)) {&lt;br /&gt;
      for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
        levelVib[i]=convertLevel(Serial.read());&lt;br /&gt;
        if(levelVib[i]&amp;gt;MAXVIB) {&lt;br /&gt;
          levelVib[i]=MAXVIB; // protect the motor&lt;br /&gt;
        }&lt;br /&gt;
        levelEndVib[i]=convertLevel(Serial.read());&lt;br /&gt;
        if(levelEndVib[i]&amp;gt;MAXVIB) {&lt;br /&gt;
          levelEndVib[i]=MAXVIB; // protect the motor&lt;br /&gt;
        }&lt;br /&gt;
        durationVib[i]= convertDuration(Serial.read());&lt;br /&gt;
        if(durationVib[i]==0) {&lt;br /&gt;
          durationVib[i]=0;     &lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
 &lt;br /&gt;
      for (int j=0; j&amp;lt;NUMVIB; j++) {&lt;br /&gt;
        // calculate next duration&lt;br /&gt;
        byte minDuration=0xFF;&lt;br /&gt;
        byte cpt=0;&lt;br /&gt;
        for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
          if(durationVib[i]&amp;gt;0 &amp;amp;&amp;amp; durationVib[i]&amp;lt;minDuration) {&lt;br /&gt;
            minDuration=durationVib[i];&lt;br /&gt;
            cpt++;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        if(cpt==0) {&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if(j==0){      &lt;br /&gt;
          for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
            // if levelVib[i]==0, the vibration is stopped&lt;br /&gt;
            analogWrite(pinVib[i], levelVib[i]);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // sendInputs();&lt;br /&gt;
        delay(minDuration*COEF);&lt;br /&gt;
        &lt;br /&gt;
        for (int i=0; i&amp;lt;NUMVIB; i++) {&lt;br /&gt;
          if(durationVib[i]!=0) {&lt;br /&gt;
            durationVib[i]-=minDuration;&lt;br /&gt;
          }&lt;br /&gt;
          if(durationVib[i]==0 &amp;amp;&amp;amp; levelVib[i]&amp;gt;0) {&lt;br /&gt;
            analogWrite(pinVib[i], levelEndVib[i]);&lt;br /&gt;
          }&lt;br /&gt;
        }    &lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sendInputs(){   &lt;br /&gt;
    // send the flex sensor value on TX&lt;br /&gt;
    Serial.print(map(analogRead(FLEX_SENSOR_PIN), 0, 1023, 0, 255));&lt;br /&gt;
    // send the contacts states flags on TX&lt;br /&gt;
    for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
      if (digitalRead(pinContactPoints[i]) == HIGH) {&lt;br /&gt;
        Serial.print(&amp;quot;1&amp;quot;);&lt;br /&gt;
      } else {  &lt;br /&gt;
        Serial.print(&amp;quot;0&amp;quot;);        &lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte parse(byte b) {&lt;br /&gt;
  if(b&amp;gt;=&#039;0&#039; &amp;amp;&amp;amp; b&amp;lt;=&#039;9&#039;) {&lt;br /&gt;
    return (b-&#039;0&#039;);&lt;br /&gt;
  } else if(b&amp;gt;=&#039;A&#039; &amp;amp;&amp;amp; b&amp;lt;=&#039;F&#039;) {&lt;br /&gt;
    return (b-&#039;A&#039;+10);&lt;br /&gt;
  } else return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte convertLevel(byte b) {&lt;br /&gt;
  return map(parse(b), 0, 0x0F, 0, MAXVIB);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
byte convertDuration(byte b) {&lt;br /&gt;
  return parse(b)&amp;lt;&amp;lt;4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Program to test contacts and motors===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Haptic Glove Test&lt;br /&gt;
 &lt;br /&gt;
 This program tests the finger contacts of the haptic glove. The vibration motor associated with a finger vibrates when the finger and the thumb are in contact.&lt;br /&gt;
 &lt;br /&gt;
 Vibration Motor, sku: ROB-08449&lt;br /&gt;
 http://www.sparkfun.com/products/8449&lt;br /&gt;
 http://www.sparkfun.com/products/8468&lt;br /&gt;
 &amp;quot;With a 2-3.6V operating range, these units shake crazily at 3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Septembre 30, 2011 by Didier Donsez &lt;br /&gt;
 &lt;br /&gt;
 This example code is in the public domain.&lt;br /&gt;
&lt;br /&gt;
 */&lt;br /&gt;
const int MAXVIB=180; // 180 is 3.6V if Vin is 5V (Arduino Uno)&lt;br /&gt;
&lt;br /&gt;
const int NUMCONTACTPOINTS=4; // number of electric contacts points (contacts are made with conductive textiles and conductive threads)&lt;br /&gt;
&lt;br /&gt;
boolean state[NUMCONTACTPOINTS];&lt;br /&gt;
byte pinVib[NUMCONTACTPOINTS] = {5, 6, 10, 11 }; // Analog output pins that the vibration motors are attached to&lt;br /&gt;
byte pinContactPoints[NUMCONTACTPOINTS] = {2, 4, 7, 8 }; // Digital input pins that the contacts are attached to (the thumb finger is on the Vin). Use pull-down.&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // initialize serial communications at 9600 bps:&lt;br /&gt;
  // Serial.begin(9600); &lt;br /&gt;
  &lt;br /&gt;
  for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
    pinMode(pinVib[i], OUTPUT);     &lt;br /&gt;
    pinMode(pinContactPoints[i], INPUT);     &lt;br /&gt;
    state[i]=false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
    boolean change=false;&lt;br /&gt;
    for (int i=0; i&amp;lt;NUMCONTACTPOINTS; i++) {&lt;br /&gt;
      if (digitalRead(pinContactPoints[i]) == HIGH) {&lt;br /&gt;
        if(!state[i]) {&lt;br /&gt;
         analogWrite(pinVib[i], MAXVIB);&lt;br /&gt;
         state[i]=true;&lt;br /&gt;
         change=true;&lt;br /&gt;
        }&lt;br /&gt;
      } else {  &lt;br /&gt;
        if(state[i]) {&lt;br /&gt;
         analogWrite(pinVib[i], MAXVIB);&lt;br /&gt;
         state[i]=false;&lt;br /&gt;
         change=true;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if(change) {&lt;br /&gt;
      delay(250);&lt;br /&gt;
    } else {&lt;br /&gt;
      delay(100);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Wii_Motion_Plus&amp;diff=3552</id>
		<title>Wii Motion Plus</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Wii_Motion_Plus&amp;diff=3552"/>
		<updated>2011-11-17T19:50:01Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gyroscope enfichable sur le port d&#039;extension (I2C) de la Wiimote&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Utilisation avec l&#039;Arduino:&lt;br /&gt;
* http://www.dealextreme.com/customerphotos/quarantined/201109/32506-007c11c3-8093-4feb-82fb-b65e7500ced9.jpg&lt;br /&gt;
* http://www.pobot.org/Gyroscope-Wii-Motion-Plus.html&lt;br /&gt;
* http://makeprojects.com/Project/Hacking-the-Wii-MotionPlus-to-Talk-to-the-Arduino/593/1&lt;br /&gt;
&lt;br /&gt;
== Démontage ==&lt;br /&gt;
Le Wii Motion Plus se démonte relativement facilement. Attention : il y a deux vis en &amp;quot;Y&amp;quot; à enlever avant de pouvoir démonter le tout.&lt;br /&gt;
J&#039;ai personnellement utilisé un tournevis T5 en étoile qui suffit amplement pour dévisser.&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=BTAPOG&amp;diff=3367</id>
		<title>BTAPOG</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=BTAPOG&amp;diff=3367"/>
		<updated>2011-10-28T12:08:55Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Conclusion &amp;amp; Perspectives pour 2012 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Article Bulletin Technique Septembre 2011 d&#039;APOG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auteurs:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Titre: Salle Intelligence Ambiante à Polytech&#039;Grenoble.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
L&#039;intelligence ambiante (Ambient Intelligence : AmI) fait désormais partie du quotidien des usagers. Elle se retrouve dans tous les domaines d’activité : bâtiment intelligent avec maîtrise de l’énergie et la maintenance, grille électrique intelligente (smart grid), santé avec l’hospitalisation à domicile, transport et chaîne d’approvisionnement, sécurité publique et privée (homeland sécurity), culture et divertissement (infotainment) avec les jeux sérieux (serious games), ... Le développement d’applications AmI fait principalement appel à l’intégration de très nombreuses technologies, langages, patrons, modèles qui sont enseignées de manière séparée dans les cursus universitaires et des écoles d’ingénieur. L&#039;enseignement AmI met l&#039;accent sur le développement d&#039;applications pour une gamme variée d&#039;objets intelligents (du serveur IT au terminal 3G de l&#039;usager puis au capteur Zigbee/6LoWPAN enfoui).&lt;br /&gt;
&lt;br /&gt;
L&#039;enseignement de l&#039;intelligence ambiante requière un cadre expérimental pour mettre en pratique les technologies nécessaires au travers de projets de groupe d’élèves dans le contexte de domaines d&#039;applications variés. Les expérimentations peuvent à réaliser à échelle réduite dans des salles spécialisées.&lt;br /&gt;
&lt;br /&gt;
Cette année, Polytech&#039;Grenoble a ouvert une salle spécialisée. La salle AIR (Ambient Intelligence Room ainsi baptisée par les élèves) est une &#039;&#039;fablab&#039;&#039; (Factory Laboratory) destinée aux élèves ingénieurs de Polytech&#039;Grenoble et plus largement aux étudiants de l&#039;Université Joseph Fourier - Grenoble 1, pour inventer et pour réaliser des projets d&#039;application d&#039;intelligence ambiante dans le cadre de leur formation d&#039;ingénieur. Cette salle met à disposition des élèves toute sorte d&#039;équipement. Ces équipements peuvent aller de cartes Arduino bradées de quelques capteurs jusqu&#039;à des équipements multimédia comme des téléphones et tablettes Android, videoprojecteurs, téléviseurs, consoles de jeux, ... Certains équipements (comme 2 ARDrones de Parrot, fauteuil roulant ...) ont été offerts par de généreux partenaires.&lt;br /&gt;
&lt;br /&gt;
Plusieurs projets ont été réalisés cette année 2011. Voici quelques uns d&#039;entre eux :&lt;br /&gt;
&lt;br /&gt;
== Projet [[Projet &amp;quot;AMO&amp;quot;|AMO]] ==&lt;br /&gt;
Ce projet est réalisé en commun par des élèves de TIS, 3I et RICM.&lt;br /&gt;
&lt;br /&gt;
Le projet AmiWheelchair concerne l’assistance et le suivi de la personne handicapée se déplaçant à l’aide d’un fauteuil roulant manuel ou à assistance électrique à la propulsion sur ses lieux de vie (logement, travail, site urbaine, transport en commun) au moyen des technologies de l’informatique ambiante.&lt;br /&gt;
&lt;br /&gt;
Ce projet vise à :&lt;br /&gt;
* instrumenter la personne pour monitorer son usage musculaire de son fauteuil au moyen d’EMG et d’accéléromètres ainsi que son effort au moyen de cardio-fréquencemêtre ;&lt;br /&gt;
* instrumenter le fauteuil  personne handicapée pour monitorer son usage musculaire de son fauteuil au moyen de gyroscopes, inclinomètre, compteurs de tour de roue, capteurs de vibration, …&lt;br /&gt;
* collecter les mesures acquises au moyen du téléphone 3G/Wifi de l’utilisateur. Le GPS intégré au téléphone fournit les positions géographiques pour le suivi spatial de l’utilisateur . Le téléphone sert également à dénoncer des obstacles explicitement par l’utilisateur. Les mesures et les dénonciations sont remontées via des liaisons 3G/Wifi vers un centre serveur qui les archive ;&lt;br /&gt;
*restituer aux médecins et aux urbanistes les mesures individuelles ou collectives concernant les usagers dans un objectif de support à la prise de décision (réglage du fauteuil, aménagement des accès handicapés sur les sites). &lt;br /&gt;
&lt;br /&gt;
La figure ci-dessous schématise les composants fonctionnels décrits ci-dessus, ainsi que les communications multimodales (ZigBee ou 6LoWPAN/RF, Bluetooth, 3G et Wifi) utilisés entre ceux-ci. Les composants doivent pouvoir supporter des intermitences dans les communications (perte de la 3G ou sortie d’un hotspot Wifi, ...)&lt;br /&gt;
&lt;br /&gt;
[[File:archiwheelchair.png]]&lt;br /&gt;
&lt;br /&gt;
Le projet participera aux concours :&lt;br /&gt;
* OpenWorld Contest par STMicroelectronics (http://www.stm32circle.com/hom/index.php)&lt;br /&gt;
* Défi H par Sogeti et LeMondeInformatique (http://www.miage.net/relevez-le-defi-h-le-1er-trophee-des-grandes-ecoles-et-universites-au-service-du-handicap.html)&lt;br /&gt;
* ImagineCup par Microsoft (http://www.imaginecup.com)&lt;br /&gt;
&lt;br /&gt;
== Projet [[Tabletop]] == &lt;br /&gt;
Auteurs : Christophe HAVARD &amp;amp; Renaud COLLIN&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique devenant de plus en plus omniprésent, le projet Tabletop a pour vocation de s&#039;inscrire dans le domaine de [http://fr.wikipedia.org/wiki/Internet_des_objets l&#039;Internet des objets]. Rendre des objets du quotidien interactifs permet d&#039;étendre les interfaces homme-machine habituelles. Ainsi la [[Tabletop]] permet de rendre une simple table à manger interactive en embarquant un système d&#039;identification de ses usagers ([http://fr.wikipedia.org/wiki/Near_Field_Communication NFC]) et un trio vidéoprojecteur/projecteurs infrarouge/webcam permettant d&#039;utiliser la table comme surface tactile.&lt;br /&gt;
&lt;br /&gt;
En associant un tag visuel (&amp;quot;&#039;&#039;fiducial&#039;&#039;&amp;quot;) à des objets ceux-ci deviennent identifiables par la table, et définissent alors un nouveau contexte d&#039;utilisation auquel la Tabletop s&#039;adapte. L&#039;intérêt de cette technologie réside dans le fait de pouvoir utiliser des grandes, voire très grandes surfaces interactives (la table actuelle possède une diagonale de 60&amp;quot;/150cm) et utilisables par plusieurs entités à la fois (personnes, objets).&lt;br /&gt;
&lt;br /&gt;
La [[Tabletop]] est un produit à forte valeur ajoutée destinée principalement aux professionnels afin de servir de support de communication dynamique et  convivial.&lt;br /&gt;
L&#039;utilisation de la Tabletop au sein d&#039;un restaurant pour passer ses commandes et tenir compte des préférences de l&#039;utilisateur est un exemple d&#039;application.&lt;br /&gt;
&lt;br /&gt;
D&#039;autres usages sont possibles tels que le travail collaboratif, la consultation d&#039;offres proposant un contenu multimédia dans les agences immobilières ou de voyages, ou encore comme système de contrôle général en domotique.&lt;br /&gt;
&lt;br /&gt;
== Projet [[KiCTRL]] ==&lt;br /&gt;
Les interfaces homme-machine actuelles sont majoritairement basées sur le couple &amp;quot;clavier-souris&amp;quot;. Ce couple offre de grandes possibilités dépassant souvent les besoins des utilisateurs dans les tâches les plus élémentaires (consultation de mail, de la météo, des flux RSS) et son maniement est loin d&#039;être intuitif pour un novice. Constatant cela, le projet [[KiCTRL]] se propose de balayer ce mode d&#039;interaction pour proposer une navigation basées sur des gestes. Grâce au dispositif Kinect de Microsft, il est dorénavant possible de capter les mouvements d&#039;un ou plusieurs utilisateurs. Jusqu&#039;alors réservé a l&#039;univers vidéo ludique, [[KiCTRL]] introduit un nouvel usage de cet outil.&lt;br /&gt;
&lt;br /&gt;
Ainsi, ce projet permet de rendre l&#039;informatique plus accessible à un publique réfractaire d&#039;un apprentissage long et fastidieux ainsi qu&#039;à un publique qui se voit marginalisé par l’impossibilité d&#039;utiliser le couple &amp;quot;clavier-souris&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Domaines d&#039;application possibles : handicap, rééducation fonctionnel, usager dans une foule, ...&lt;br /&gt;
&lt;br /&gt;
== Projet [[iSofa]] ==&lt;br /&gt;
A detailler en 10 lignes max + 1 photo&lt;br /&gt;
&lt;br /&gt;
== Conclusion &amp;amp; Perspectives pour 2012 ==&lt;br /&gt;
Trois projets ont d&#039;ores et déjà été présentés lors du Salon Expérimenta à Minatec début Octobre 2011 : &lt;br /&gt;
* iSofa (Flavien Garcia, Thibaud Michel)&lt;br /&gt;
* KiCtrl (Aurélie Moiroux)&lt;br /&gt;
* Air NFC Tabletop (Renaud Collin, Christophe Havard)&lt;br /&gt;
Ce salon avait pour vocation de promouvoir les sciences à travers les arts numériques.&lt;br /&gt;
&lt;br /&gt;
Pari réussi pour nos 5 étudiants pour lesquels les retours ont tous été très positifs, tant de la part des professionnels présents sur le salon, que du public venu en masse.&lt;br /&gt;
&lt;br /&gt;
Pour l&#039;année 2012, les perspectives sont encourageantes : des propositions pour présenter ces projets dans d&#039;autres salons régionaux et nationaux, des offres de stages qui pleuvent et la création d&#039;une start-up pour les deux étudiants du projet Tabletop.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:tabletop1.jpg|table interactive multipoint&lt;br /&gt;
Image:tabletop2.jpg|table interactive multipoint&lt;br /&gt;
Image:tabletop3.jpg|table interactive multipoint&lt;br /&gt;
Image:isofa1.jpg|i-Sofa&lt;br /&gt;
Image:isofa2.jpg|i-Sofa&lt;br /&gt;
Image:touchkey.jpg|Concours NFC Forum 2010 TouchKey&lt;br /&gt;
Image:mrpri.jpg|Monsieur Prévention des Risques Industriels&lt;br /&gt;
Image:arduigrid-v0.0.jpg|Déballage de l&#039;ArduiGrid&lt;br /&gt;
Image:arduigrid-v0.1.jpg|Déballage de l&#039;ArduiGrid&lt;br /&gt;
Image:Arduinos.jpg|Assortiments de cartes de type &amp;quot;Arduino&amp;quot;&lt;br /&gt;
Image:armoire.jpg|Armoire Projets&lt;br /&gt;
Image:Planv0.png|Plan de la salle&lt;br /&gt;
Image:Kinect3.jpg|KiCTRL&lt;br /&gt;
Image:Kinect1.png|KiCTRL&lt;br /&gt;
Image:Kinect2.png|KiCTRL&lt;br /&gt;
Image:Kinect4.png|KiCTRL&lt;br /&gt;
Image:AmoWheelChair.png|AMO&lt;br /&gt;
Image:amowheelchair01.jpg|AMO&lt;br /&gt;
Image:amowheelchair02.jpg|AMO&lt;br /&gt;
Image:amowheelchair03.jpg|AMO&lt;br /&gt;
Image:amowheelchair04-igoe.jpg|AMO&lt;br /&gt;
Image:amowheelchair05-emg.jpg|AMO&lt;br /&gt;
Image:amowheelchair06-emg.jpg|AMO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=BTAPOG&amp;diff=3344</id>
		<title>BTAPOG</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=BTAPOG&amp;diff=3344"/>
		<updated>2011-10-26T17:20:38Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Projet Tabletop */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Article Bulletin Technique Septembre 2011 d&#039;APOG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auteurs:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Titre: Salle Intelligence Ambiante à Polytech&#039;Grenoble.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
L&#039;intelligence ambiante (Ambient Intelligence : AmI) fait désormais partie du quotidien des usagers. Elle se retrouve dans tous les domaines d’activité : bâtiment intelligent avec maitrise de l’énergie et la maintenance, grille électrique intelligente (smart grid), santé avec l’hospitalisation à domicile, transport et chaine d’approvisionnement, sécurité publique et privée (homeland sécurity), culture et divertissement (infotainment) avec les jeux sérieux (serious games), ... Le développement d’applications AmI fait principalement appel à l’intégration de très nombreuses technologies, langages, patrons, modèles qui sont enseignées de manière séparée dans les cursus universitaires et des écoles d’ingénieur. L&#039;enseignement AmI met l&#039;accent sur le développement d&#039;applications pour une gamme variée d&#039;objets intelligents (du serveur IT au terminal 3G de l&#039;usager puis au capteur Zigbee/6LoWPAN enfoui).&lt;br /&gt;
&lt;br /&gt;
L&#039;enseignement de l&#039;intelligence ambiante requière un cadre expérimentale pour mettre en pratique les technologies nécessaires au travers de projets de groupe d’élèves dans le contexte de domaines d&#039;applications variés. Les expérimentations peuvent à réaliser à échelle réduite dans des salles spécialisées.&lt;br /&gt;
&lt;br /&gt;
Cette année, Polytech&#039;Grenoble a ouvert une salle spécialisée. La salle AIR (Ambient Intelligence Room ainsi baptisée par les élèves) est une &#039;&#039;fablab&#039;&#039; (Factory Laboratory) destinée aux élèves ingénieurs de Polytech&#039;Grenoble et plus largement aux étudiants de l&#039;Université Joseph Fourier - Grenoble 1, pour inventer et pour réaliser des projets d&#039;application d&#039;intelligence ambiante dans le cadre de leur formation d&#039;ingénieur. Cette salle met à disposition des équipements à disposition des élèves. Ces équipements peuvent aller de cartes Arduino bradées de quelques capteurs jusqu&#039;à des équipements multimedia comme des téléphones et tablettes Android, video projecteurs, televiseurs, consoles de jeux, ... Certains équipements (comme 2 ARDrones de Parrot, fauteuil roulant ...) ont été donnés par de généreux partenaires.&lt;br /&gt;
&lt;br /&gt;
Plusieurs projets ont été réalisés cette année 2011. Voici quelques uns d&#039;entre eux :&lt;br /&gt;
&lt;br /&gt;
== Projet [[Projet &amp;quot;AMO&amp;quot;|AMO]] ==&lt;br /&gt;
Ce projet est réalisé en commun par des élèves de TIS, 3I et RICM.&lt;br /&gt;
&lt;br /&gt;
Le projet AmiWheelchair concerne l’assistance et le suivi de la personne handicapée se déplaçant à l’aide d’un fauteuil roulant manuel ou à assistance électrique à la propulsion sur ses lieux de vie (logement, travail, site urbaine, transport en commun) au moyen des technologies de l’informatique ambiante.&lt;br /&gt;
&lt;br /&gt;
Ce projet vise à :&lt;br /&gt;
* instrumenter la personne pour monitorer son usage musculaire de son fauteuil au moyen d’EMG et d’accéléromètres ainsi que son effort au moyen de cardio-fréquencemêtre ;&lt;br /&gt;
* instrumenter le fauteuil  personne handicapée pour monitorer son usage musculaire de son fauteuil au moyen de gyroscopes, inclinomètre, compteurs de tour de roue, capteurs de vibration, …&lt;br /&gt;
* collecter les mesures acquises au moyen du téléphone 3G/Wifi de l’utilisateur. Le GPS intégré au téléphone fournit les positions géographiques pour le suivi spatial de l’utilisateur . Le téléphone sert également à dénoncer des obstacles explicitement par l’utilisateur. Les mesures et les dénonciations sont remontées via des liaisons 3G/Wifi vers un centre serveur qui les archive ;&lt;br /&gt;
*restituer aux médecins et aux urbanistes les mesures individuelles ou collectives concernant les usagers dans un objectif de support à la prise de décision (réglage du fauteuil, aménagement des accès handicapés sur les sites). &lt;br /&gt;
&lt;br /&gt;
La figure ci-dessous schématise les composants fonctionnels décrits ci-dessus, ainsi que les communications multimodales (ZigBee ou 6LoWPAN/RF, Bluetooth, 3G et Wifi) utilisés entre ceux-ci. Les composants doivent pouvoir supporter des intermitences dans les communications (perte de la 3G ou sortie d’un hotspot Wifi, ...)&lt;br /&gt;
&lt;br /&gt;
[[File:archiwheelchair.png]]&lt;br /&gt;
&lt;br /&gt;
Le projet participera aux concours :&lt;br /&gt;
* OpenWorld Contest par STMicroelectronics (http://www.stm32circle.com/hom/index.php)&lt;br /&gt;
* Défi H par Sogeti et LeMondeInformatique (http://www.miage.net/relevez-le-defi-h-le-1er-trophee-des-grandes-ecoles-et-universites-au-service-du-handicap.html)&lt;br /&gt;
* ImagineCup par Microsoft (http://www.imaginecup.com)&lt;br /&gt;
&lt;br /&gt;
== Projet [[Tabletop]] == &lt;br /&gt;
L&#039;informatique devenant de plus en plus omniprésent, le projet TableTop à pour vocation de s&#039;inscrire dans le domaine de [http://fr.wikipedia.org/wiki/Internet_des_objets l&#039;Internet des objets]. Rendre des objets du quotidien interractif permet d&#039;étendre les interfaces homme-machine habituelles. Ainsi la [[Tabletop]] permet de rendre une simple table à manger interactive en embarquant un système d&#039;identification de ses usagers ([http://fr.wikipedia.org/wiki/Near_Field_Communication NFC]) et un trio vidéoprojecteur/projecteurs infrarouge/webcam permettant d&#039;utiliser la table comme surface tactile.&lt;br /&gt;
&lt;br /&gt;
En associant un tag visuel (&amp;quot;&#039;&#039;fiducial&#039;&#039;&amp;quot;) à des objets ceux-ci deviennent identifiable par la table, et définissent alors un nouveau contexte d&#039;utilisation auquel la TableTop s&#039;adapte. L&#039;intérêt de cette technologie réside dans le fait de pouvoir utiliser des grandes voire très grandes surface interactive (la table actuelle possède une diagonale de 60&amp;quot;/150cm) et utilisable par plusieurs entités à la fois (personnes, objets).&lt;br /&gt;
&lt;br /&gt;
La [[Tabletop]] est un produit de forte valeur ajoutée destinée principalement aux professionnels  afin de servir de support de communication dynamique et  conviviale.&lt;br /&gt;
L&#039;utilisation de la TableTop au sein d&#039;un restaurant pour passer ses commandes et tenir compte des préférences de l&#039;utilisateur est un exemple d&#039;application.&lt;br /&gt;
&lt;br /&gt;
D&#039;autres usages sont possible tels que le travail collaboratif, la consultation d&#039;offres proposant un contenu multimédia dans les agences immobilières ou de voyages, ou encore comme système de contrôle général en domotique.&lt;br /&gt;
&lt;br /&gt;
== Projet [[KiCTRL]] ==&lt;br /&gt;
Les interfaces homme-machine actuelles sont majoritairement basées sur le couple &amp;quot;clavier-souris&amp;quot;. Ce couple offre de grandes possibilités dépassant souvent les besoins des utilisateurs dans les tâches les plus élémentaires (consultation de mail, de la météo, des flux RSS) et son maniement est loin d&#039;être intuitif pour un novice. Constatant cela, le projet [[KiCTRL]] se propose de balayer ce mode d&#039;interaction pour proposer une navigation basées sur des gestes. Grâce au dispositif Kinect de Microsft, il est dorénavant possible de capter les mouvements d&#039;un ou plusieurs utilisateurs. Jusqu&#039;alors réservé a l&#039;univers vidéo ludique, [[KiCTRL]] introduit un nouvel usage de cet outil.&lt;br /&gt;
&lt;br /&gt;
Ainsi, ce projet permet de rendre l&#039;informatique plus accessible à un publique réfractaire d&#039;un apprentissage long et fastidieux ainsi qu&#039;à un publique qui se voit marginalisé par l’impossibilité d&#039;utiliser le couple &amp;quot;clavier-souris&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Domaines d&#039;application possibles : handicap, rééducation fonctionnel, usager dans une foule, ...&lt;br /&gt;
&lt;br /&gt;
== Projet [[iSofa]] ==&lt;br /&gt;
A detailler en 10 lignes max + 1 photo&lt;br /&gt;
&lt;br /&gt;
== Conclusion &amp;amp; Perspectives pour 2012 ==&lt;br /&gt;
Favoriser les projets inter-départements dans Polytech&#039;Grenoble, recherche de partenariat avec des industriels pour des études avancés sur des projets d&#039;innovation.&lt;br /&gt;
&lt;br /&gt;
Mentionnez EXPERIMENTA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:tabletop1.jpg|table interactive multipoint&lt;br /&gt;
Image:tabletop2.jpg|table interactive multipoint&lt;br /&gt;
Image:tabletop3.jpg|table interactive multipoint&lt;br /&gt;
Image:isofa1.jpg|i-Sofa&lt;br /&gt;
Image:isofa2.jpg|i-Sofa&lt;br /&gt;
Image:touchkey.jpg|Concours NFC Forum 2010 TouchKey&lt;br /&gt;
Image:mrpri.jpg|Monsieur Prévention des Risques Industriels&lt;br /&gt;
Image:arduigrid-v0.0.jpg|Déballage de l&#039;ArduiGrid&lt;br /&gt;
Image:arduigrid-v0.1.jpg|Déballage de l&#039;ArduiGrid&lt;br /&gt;
Image:Arduinos.jpg|Assortiments de cartes de type &amp;quot;Arduino&amp;quot;&lt;br /&gt;
Image:armoire.jpg|Armoire Projets&lt;br /&gt;
Image:Planv0.png|Plan de la salle&lt;br /&gt;
Image:Kinect3.jpg|KiCTRL&lt;br /&gt;
Image:Kinect1.png|KiCTRL&lt;br /&gt;
Image:Kinect2.png|KiCTRL&lt;br /&gt;
Image:Kinect4.png|KiCTRL&lt;br /&gt;
Image:AmoWheelChair.png|AMO&lt;br /&gt;
Image:amowheelchair01.jpg|AMO&lt;br /&gt;
Image:amowheelchair02.jpg|AMO&lt;br /&gt;
Image:amowheelchair03.jpg|AMO&lt;br /&gt;
Image:amowheelchair04-igoe.jpg|AMO&lt;br /&gt;
Image:amowheelchair05-emg.jpg|AMO&lt;br /&gt;
Image:amowheelchair06-emg.jpg|AMO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=BTAPOG&amp;diff=3343</id>
		<title>BTAPOG</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=BTAPOG&amp;diff=3343"/>
		<updated>2011-10-26T17:19:48Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Projet Tabletop */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Article Bulletin Technique Septembre 2011 d&#039;APOG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auteurs:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Titre: Salle Intelligence Ambiante à Polytech&#039;Grenoble.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
L&#039;intelligence ambiante (Ambient Intelligence : AmI) fait désormais partie du quotidien des usagers. Elle se retrouve dans tous les domaines d’activité : bâtiment intelligent avec maitrise de l’énergie et la maintenance, grille électrique intelligente (smart grid), santé avec l’hospitalisation à domicile, transport et chaine d’approvisionnement, sécurité publique et privée (homeland sécurity), culture et divertissement (infotainment) avec les jeux sérieux (serious games), ... Le développement d’applications AmI fait principalement appel à l’intégration de très nombreuses technologies, langages, patrons, modèles qui sont enseignées de manière séparée dans les cursus universitaires et des écoles d’ingénieur. L&#039;enseignement AmI met l&#039;accent sur le développement d&#039;applications pour une gamme variée d&#039;objets intelligents (du serveur IT au terminal 3G de l&#039;usager puis au capteur Zigbee/6LoWPAN enfoui).&lt;br /&gt;
&lt;br /&gt;
L&#039;enseignement de l&#039;intelligence ambiante requière un cadre expérimentale pour mettre en pratique les technologies nécessaires au travers de projets de groupe d’élèves dans le contexte de domaines d&#039;applications variés. Les expérimentations peuvent à réaliser à échelle réduite dans des salles spécialisées.&lt;br /&gt;
&lt;br /&gt;
Cette année, Polytech&#039;Grenoble a ouvert une salle spécialisée. La salle AIR (Ambient Intelligence Room ainsi baptisée par les élèves) est une &#039;&#039;fablab&#039;&#039; (Factory Laboratory) destinée aux élèves ingénieurs de Polytech&#039;Grenoble et plus largement aux étudiants de l&#039;Université Joseph Fourier - Grenoble 1, pour inventer et pour réaliser des projets d&#039;application d&#039;intelligence ambiante dans le cadre de leur formation d&#039;ingénieur. Cette salle met à disposition des équipements à disposition des élèves. Ces équipements peuvent aller de cartes Arduino bradées de quelques capteurs jusqu&#039;à des équipements multimedia comme des téléphones et tablettes Android, video projecteurs, televiseurs, consoles de jeux, ... Certains équipements (comme 2 ARDrones de Parrot, fauteuil roulant ...) ont été donnés par de généreux partenaires.&lt;br /&gt;
&lt;br /&gt;
Plusieurs projets ont été réalisés cette année 2011. Voici quelques uns d&#039;entre eux :&lt;br /&gt;
&lt;br /&gt;
== Projet [[Projet &amp;quot;AMO&amp;quot;|AMO]] ==&lt;br /&gt;
Ce projet est réalisé en commun par des élèves de TIS, 3I et RICM.&lt;br /&gt;
&lt;br /&gt;
Le projet AmiWheelchair concerne l’assistance et le suivi de la personne handicapée se déplaçant à l’aide d’un fauteuil roulant manuel ou à assistance électrique à la propulsion sur ses lieux de vie (logement, travail, site urbaine, transport en commun) au moyen des technologies de l’informatique ambiante.&lt;br /&gt;
&lt;br /&gt;
Ce projet vise à :&lt;br /&gt;
* instrumenter la personne pour monitorer son usage musculaire de son fauteuil au moyen d’EMG et d’accéléromètres ainsi que son effort au moyen de cardio-fréquencemêtre ;&lt;br /&gt;
* instrumenter le fauteuil  personne handicapée pour monitorer son usage musculaire de son fauteuil au moyen de gyroscopes, inclinomètre, compteurs de tour de roue, capteurs de vibration, …&lt;br /&gt;
* collecter les mesures acquises au moyen du téléphone 3G/Wifi de l’utilisateur. Le GPS intégré au téléphone fournit les positions géographiques pour le suivi spatial de l’utilisateur . Le téléphone sert également à dénoncer des obstacles explicitement par l’utilisateur. Les mesures et les dénonciations sont remontées via des liaisons 3G/Wifi vers un centre serveur qui les archive ;&lt;br /&gt;
*restituer aux médecins et aux urbanistes les mesures individuelles ou collectives concernant les usagers dans un objectif de support à la prise de décision (réglage du fauteuil, aménagement des accès handicapés sur les sites). &lt;br /&gt;
&lt;br /&gt;
La figure ci-dessous schématise les composants fonctionnels décrits ci-dessus, ainsi que les communications multimodales (ZigBee ou 6LoWPAN/RF, Bluetooth, 3G et Wifi) utilisés entre ceux-ci. Les composants doivent pouvoir supporter des intermitences dans les communications (perte de la 3G ou sortie d’un hotspot Wifi, ...)&lt;br /&gt;
&lt;br /&gt;
[[File:archiwheelchair.png]]&lt;br /&gt;
&lt;br /&gt;
Le projet participera aux concours :&lt;br /&gt;
* OpenWorld Contest par STMicroelectronics (http://www.stm32circle.com/hom/index.php)&lt;br /&gt;
* Défi H par Sogeti et LeMondeInformatique (http://www.miage.net/relevez-le-defi-h-le-1er-trophee-des-grandes-ecoles-et-universites-au-service-du-handicap.html)&lt;br /&gt;
* ImagineCup par Microsoft (http://www.imaginecup.com)&lt;br /&gt;
&lt;br /&gt;
== Projet [[Tabletop]] == &lt;br /&gt;
L&#039;informatique devenant de plus en plus omniprésent, le projet TableTop à pour vocation de s&#039;inscrire dans le domaine de [http://fr.wikipedia.org/wiki/Internet_des_objets l&#039;Internet des objets]. Rendre des objets du quotidien interractif permet d&#039;étendre les interfaces homme-machine habituelles. Ainsi la [[Tabletop]] permet de rendre une simple table à manger interactive en embarquant un système d&#039;identification de ses usagers ([http://fr.wikipedia.org/wiki/Near_Field_Communication NFC]) et un trio vidéoprojecteur/projecteurs infrarouge/webcam permettant d&#039;utiliser la table comme surface tactile. En associant un tag visuel à des objets ceux-ci deviennent identifiable par la table, et définissent alors un nouveau contexte d&#039;utilisation auquel la TableTop s&#039;adapte. L&#039;intérêt de cette technologie réside dans le fait de pouvoir utiliser des grandes voire très grandes surface interactive (la table actuelle possède une diagonale de 60&amp;quot;/150cm) et utilisable par plusieurs entités à la fois (personnes, objets).&lt;br /&gt;
La [[Tabletop]] est un produit de forte valeur ajoutée destinée principalement aux professionnels  afin de servir de support de communication dynamique et  conviviale.&lt;br /&gt;
L&#039;utilisation de la TableTop au sein d&#039;un restaurant pour passer ses commandes et tenir compte des préférences de l&#039;utilisateur est un exemple d&#039;application. D&#039;autres usages sont possible tels que le travail collaboratif, la consultation d&#039;offres proposant un contenu multimédia dans les agences immobilières ou de voyages, ou encore comme système de contrôle général en domotique.&lt;br /&gt;
&lt;br /&gt;
== Projet [[KiCTRL]] ==&lt;br /&gt;
Les interfaces homme-machine actuelles sont majoritairement basées sur le couple &amp;quot;clavier-souris&amp;quot;. Ce couple offre de grandes possibilités dépassant souvent les besoins des utilisateurs dans les tâches les plus élémentaires (consultation de mail, de la météo, des flux RSS) et son maniement est loin d&#039;être intuitif pour un novice. Constatant cela, le projet [[KiCTRL]] se propose de balayer ce mode d&#039;interaction pour proposer une navigation basées sur des gestes. Grâce au dispositif Kinect de Microsft, il est dorénavant possible de capter les mouvements d&#039;un ou plusieurs utilisateurs. Jusqu&#039;alors réservé a l&#039;univers vidéo ludique, [[KiCTRL]] introduit un nouvel usage de cet outil.&lt;br /&gt;
&lt;br /&gt;
Ainsi, ce projet permet de rendre l&#039;informatique plus accessible à un publique réfractaire d&#039;un apprentissage long et fastidieux ainsi qu&#039;à un publique qui se voit marginalisé par l’impossibilité d&#039;utiliser le couple &amp;quot;clavier-souris&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Domaines d&#039;application possibles : handicap, rééducation fonctionnel, usager dans une foule, ...&lt;br /&gt;
&lt;br /&gt;
== Projet [[iSofa]] ==&lt;br /&gt;
A detailler en 10 lignes max + 1 photo&lt;br /&gt;
&lt;br /&gt;
== Conclusion &amp;amp; Perspectives pour 2012 ==&lt;br /&gt;
Favoriser les projets inter-départements dans Polytech&#039;Grenoble, recherche de partenariat avec des industriels pour des études avancés sur des projets d&#039;innovation.&lt;br /&gt;
&lt;br /&gt;
Mentionnez EXPERIMENTA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:tabletop1.jpg|table interactive multipoint&lt;br /&gt;
Image:tabletop2.jpg|table interactive multipoint&lt;br /&gt;
Image:tabletop3.jpg|table interactive multipoint&lt;br /&gt;
Image:isofa1.jpg|i-Sofa&lt;br /&gt;
Image:isofa2.jpg|i-Sofa&lt;br /&gt;
Image:touchkey.jpg|Concours NFC Forum 2010 TouchKey&lt;br /&gt;
Image:mrpri.jpg|Monsieur Prévention des Risques Industriels&lt;br /&gt;
Image:arduigrid-v0.0.jpg|Déballage de l&#039;ArduiGrid&lt;br /&gt;
Image:arduigrid-v0.1.jpg|Déballage de l&#039;ArduiGrid&lt;br /&gt;
Image:Arduinos.jpg|Assortiments de cartes de type &amp;quot;Arduino&amp;quot;&lt;br /&gt;
Image:armoire.jpg|Armoire Projets&lt;br /&gt;
Image:Planv0.png|Plan de la salle&lt;br /&gt;
Image:Kinect3.jpg|KiCTRL&lt;br /&gt;
Image:Kinect1.png|KiCTRL&lt;br /&gt;
Image:Kinect2.png|KiCTRL&lt;br /&gt;
Image:Kinect4.png|KiCTRL&lt;br /&gt;
Image:AmoWheelChair.png|AMO&lt;br /&gt;
Image:amowheelchair01.jpg|AMO&lt;br /&gt;
Image:amowheelchair02.jpg|AMO&lt;br /&gt;
Image:amowheelchair03.jpg|AMO&lt;br /&gt;
Image:amowheelchair04-igoe.jpg|AMO&lt;br /&gt;
Image:amowheelchair05-emg.jpg|AMO&lt;br /&gt;
Image:amowheelchair06-emg.jpg|AMO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Windows8&amp;diff=3342</id>
		<title>Windows8</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Windows8&amp;diff=3342"/>
		<updated>2011-10-26T16:58:42Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: moved Windows8 to Triple boot Mac OSX-Windows7-Windows8:&amp;amp;#32;La page décrit uniquement l&amp;#039;installation d&amp;#039;un triple boot avec windows 8, pas d&amp;#039;info sur Windows 8 en soi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Triple boot Mac OSX-Windows7-Windows8]]&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Triple_boot_Mac_OSX-Windows7-Windows8&amp;diff=3341</id>
		<title>Triple boot Mac OSX-Windows7-Windows8</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Triple_boot_Mac_OSX-Windows7-Windows8&amp;diff=3341"/>
		<updated>2011-10-26T16:58:42Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: moved Windows8 to Triple boot Mac OSX-Windows7-Windows8:&amp;amp;#32;La page décrit uniquement l&amp;#039;installation d&amp;#039;un triple boot avec windows 8, pas d&amp;#039;info sur Windows 8 en soi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page vous présente les différentes étapes d&#039;installation de Windows 8 Developper Preview sur un Mac Mini, en cohabitation avec Mac OSX et Windows 7.&lt;br /&gt;
On considère ici que vous possédez déjà un Mac avec un double boot Mac OSX/Windows 7 et que vous connaissez Bootcamp et les procédures habituelles pour installer un double boot sur Mac OS.&lt;br /&gt;
&lt;br /&gt;
== Comment faire un triple boot Mac OSX - Windows 7 - Windows 8 sur votre Mac Mini? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Tout d&#039;abord, il vous faut créer une partition pour accueillir Windows 8 sur votre machine.&lt;br /&gt;
#: Le problème c&#039;est que Mac OS X et Windows 7 cohabitent déjà sur ma machine et que je ne veux pas avoir à formater l&#039;une d&#039;elle. Dès lors, comment faire?&lt;br /&gt;
#: Plusieurs solutions s&#039;offrent à nous : &lt;br /&gt;
#:* La virtualisation : installer un logiciel de virtualisation tel que VMWare, VirtualPC, Hyper-V, etc. -&amp;gt; solution qui peut fonctionner certes, mais qui présente de nombreux désavantages dont des performances complètement dégradées qui ne vous laisseront pas vraiment profiter de la puissance de votre machine, ainsi que de celle de l&#039;OS.&lt;br /&gt;
#:* L&#039;utilisation d&#039;un [http://en.wikipedia.org/wiki/VHD_(file_format) Virtual Hard Disk] (VHD). En gros, les disques virtuels sont gérés nativement par Windows 7 par exemple et permettent d&#039;émuler uniquement un système de fichier. L&#039;OS que vous installerez dessus utilisera donc toutes les ressources matérielles de votre machine. [http://www.hanselman.com/blog/LessVirtualMoreMachineWindows7AndTheMagicOfBootToVHD.aspx Cet article très intéressant] vous explique en quoi les VHD sont une solution optimale pour ce type d&#039;installation &amp;quot;test&amp;quot; que nous voulons effectuer.&lt;br /&gt;
#:Suivez donc [http://www.hanselman.com/blog/GuideToInstallingAndBootingWindows8DeveloperPreviewOffAVHDVirtualHardDisk.aspx ce tutorial] qui vous permettra (à la &amp;quot;Step 2&amp;quot;) de créer un VHD pour accueillir Windows 8.&lt;br /&gt;
#Maintenant que vous avez un espace pour installer Windows 8, suivez [http://www.hanselman.com/blog/GuideToInstallingAndBootingWindows8DeveloperPreviewOffAVHDVirtualHardDisk.aspx ce tutorial] qui vous montrera comment créer &#039;&#039;&#039;un DVD&#039;&#039;&#039; d&#039;installation de Windows 8. Je parle de DVD car il m&#039;est apparu que Mac OS X était incapable de booter ma clé avec Windows 8 dessus, alors que cela fonctionnait très bien avec un DVD.&lt;br /&gt;
#Prochaine étape : l&#039;installation&lt;br /&gt;
#:Vous pouvez suivre [http://processinginfinity.com/triple-boot-a-mac-with-os-x-lion-windows-7-windows-8-developer-preview ce tutorial] qui explique brièvement comment lancer l&#039;installation de Windows 8 depuis Mac OSX.&lt;br /&gt;
# &#039;&#039;&#039;Problèmes potentiels&#039;&#039;&#039; : &lt;br /&gt;
#:J&#039;en ai rencontré un particulièrement désagréable. Lors de l&#039;installation de Windows 8, au moment de choisir la partition de réception de l&#039;OS, la machine vous indique qu&#039;elle ne trouve pas de lecteur CD. Elle vous précise que si vous utilisez actuellement ce lecteur CD pour installer Windows (ce qui est le cas), vous pouvez retirer le CD pour l&#039;instant. &#039;&#039;&#039;Mais comment faire avec un mac mini qui ne possède pas de bouton &amp;quot;eject&amp;quot;?&#039;&#039;&#039;&lt;br /&gt;
#:* Vous pouvez trouver un script ou un petit programme tel que [http://www.download25.com/install/cd-eject.html CDEJECT.exe] qui permet d&#039;ejecter le cd. Après avoir placer le programme à la racine de votre disque dur (le volume qui s&#039;appelle &amp;quot;BOOTCAMP&amp;quot;), vous pouvez executer ce programme en ouvrant la console d&#039;administration durant l&#039;installation en faisant &#039;&#039;&#039;Shift + F10&#039;&#039;&#039;. &#039;&#039;&#039;JE N&#039;AI PAS ENCORE TESTER CETTE SOLUTION&#039;&#039;&#039;&lt;br /&gt;
#:* Vous réessayer de lancer l&#039;installation depuis Bootcamp et si vous avez de la chance, à un moment il ne vous embêtera pas avec le lecteur CD et vous pourrez continuer à suivre votre tutorial sans encombre.&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Triple_boot_Mac_OSX-Windows7-Windows8&amp;diff=3340</id>
		<title>Triple boot Mac OSX-Windows7-Windows8</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Triple_boot_Mac_OSX-Windows7-Windows8&amp;diff=3340"/>
		<updated>2011-10-26T16:57:55Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: Created page with &amp;quot;Cette page vous présente les différentes étapes d&amp;#039;installation de Windows 8 Developper Preview sur un Mac Mini, en cohabitation avec Mac OSX et Windows 7. On considère ici qu…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page vous présente les différentes étapes d&#039;installation de Windows 8 Developper Preview sur un Mac Mini, en cohabitation avec Mac OSX et Windows 7.&lt;br /&gt;
On considère ici que vous possédez déjà un Mac avec un double boot Mac OSX/Windows 7 et que vous connaissez Bootcamp et les procédures habituelles pour installer un double boot sur Mac OS.&lt;br /&gt;
&lt;br /&gt;
== Comment faire un triple boot Mac OSX - Windows 7 - Windows 8 sur votre Mac Mini? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Tout d&#039;abord, il vous faut créer une partition pour accueillir Windows 8 sur votre machine.&lt;br /&gt;
#: Le problème c&#039;est que Mac OS X et Windows 7 cohabitent déjà sur ma machine et que je ne veux pas avoir à formater l&#039;une d&#039;elle. Dès lors, comment faire?&lt;br /&gt;
#: Plusieurs solutions s&#039;offrent à nous : &lt;br /&gt;
#:* La virtualisation : installer un logiciel de virtualisation tel que VMWare, VirtualPC, Hyper-V, etc. -&amp;gt; solution qui peut fonctionner certes, mais qui présente de nombreux désavantages dont des performances complètement dégradées qui ne vous laisseront pas vraiment profiter de la puissance de votre machine, ainsi que de celle de l&#039;OS.&lt;br /&gt;
#:* L&#039;utilisation d&#039;un [http://en.wikipedia.org/wiki/VHD_(file_format) Virtual Hard Disk] (VHD). En gros, les disques virtuels sont gérés nativement par Windows 7 par exemple et permettent d&#039;émuler uniquement un système de fichier. L&#039;OS que vous installerez dessus utilisera donc toutes les ressources matérielles de votre machine. [http://www.hanselman.com/blog/LessVirtualMoreMachineWindows7AndTheMagicOfBootToVHD.aspx Cet article très intéressant] vous explique en quoi les VHD sont une solution optimale pour ce type d&#039;installation &amp;quot;test&amp;quot; que nous voulons effectuer.&lt;br /&gt;
#:Suivez donc [http://www.hanselman.com/blog/GuideToInstallingAndBootingWindows8DeveloperPreviewOffAVHDVirtualHardDisk.aspx ce tutorial] qui vous permettra (à la &amp;quot;Step 2&amp;quot;) de créer un VHD pour accueillir Windows 8.&lt;br /&gt;
#Maintenant que vous avez un espace pour installer Windows 8, suivez [http://www.hanselman.com/blog/GuideToInstallingAndBootingWindows8DeveloperPreviewOffAVHDVirtualHardDisk.aspx ce tutorial] qui vous montrera comment créer &#039;&#039;&#039;un DVD&#039;&#039;&#039; d&#039;installation de Windows 8. Je parle de DVD car il m&#039;est apparu que Mac OS X était incapable de booter ma clé avec Windows 8 dessus, alors que cela fonctionnait très bien avec un DVD.&lt;br /&gt;
#Prochaine étape : l&#039;installation&lt;br /&gt;
#:Vous pouvez suivre [http://processinginfinity.com/triple-boot-a-mac-with-os-x-lion-windows-7-windows-8-developer-preview ce tutorial] qui explique brièvement comment lancer l&#039;installation de Windows 8 depuis Mac OSX.&lt;br /&gt;
# &#039;&#039;&#039;Problèmes potentiels&#039;&#039;&#039; : &lt;br /&gt;
#:J&#039;en ai rencontré un particulièrement désagréable. Lors de l&#039;installation de Windows 8, au moment de choisir la partition de réception de l&#039;OS, la machine vous indique qu&#039;elle ne trouve pas de lecteur CD. Elle vous précise que si vous utilisez actuellement ce lecteur CD pour installer Windows (ce qui est le cas), vous pouvez retirer le CD pour l&#039;instant. &#039;&#039;&#039;Mais comment faire avec un mac mini qui ne possède pas de bouton &amp;quot;eject&amp;quot;?&#039;&#039;&#039;&lt;br /&gt;
#:* Vous pouvez trouver un script ou un petit programme tel que [http://www.download25.com/install/cd-eject.html CDEJECT.exe] qui permet d&#039;ejecter le cd. Après avoir placer le programme à la racine de votre disque dur (le volume qui s&#039;appelle &amp;quot;BOOTCAMP&amp;quot;), vous pouvez executer ce programme en ouvrant la console d&#039;administration durant l&#039;installation en faisant &#039;&#039;&#039;Shift + F10&#039;&#039;&#039;. &#039;&#039;&#039;JE N&#039;AI PAS ENCORE TESTER CETTE SOLUTION&#039;&#039;&#039;&lt;br /&gt;
#:* Vous réessayer de lancer l&#039;installation depuis Bootcamp et si vous avez de la chance, à un moment il ne vous embêtera pas avec le lecteur CD et vous pourrez continuer à suivre votre tutorial sans encombre.&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Arduino&amp;diff=3177</id>
		<title>Arduino</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Arduino&amp;diff=3177"/>
		<updated>2011-10-13T16:34:36Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Premiers pas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
Arduino est un ensemble de cartes à base d&#039;AVR ATMega pour le prototypage rapide d&#039;applications &#039;&#039;[[physical computing]]&#039;&#039; mêlant programmation simple et électronique de base. Elle s&#039;adresse aux artistes, hobbiistes, lycéens et enseignants.&lt;br /&gt;
&lt;br /&gt;
[[Image:arduinos.jpg|200px|thumb|Assortiments d&#039;Arduino et consors: Uno, Mega, Seeeduino, FEZ Panda]]&lt;br /&gt;
&lt;br /&gt;
Les points forts de cette carte sont:&lt;br /&gt;
* son caractère [[open-source]] (multi fournisseurs, ...)&lt;br /&gt;
* son environnement simplifié pour le développement (basé sur [[Processing]], langage Wiring, programmation vers l&#039;USB, ...)&lt;br /&gt;
* sa communauté d&#039;utilisateurs (millions, entraide, idées de projet, ...)&lt;br /&gt;
* sa connection avec l&#039;environnement [[Processing]] (sur un hôte PC, Mac, ...)&lt;br /&gt;
&lt;br /&gt;
Les points faible de cette carte sont:&lt;br /&gt;
* des capacités limitées en mémoire RAM et FLASH&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
===Windows===&lt;br /&gt;
Téléchargez l&#039;environnement de développement Arduino depuis http://www.arduino.cc/en/Main/Software&lt;br /&gt;
&lt;br /&gt;
Dézippez l&#039;environnement (qui requière un JRE)&lt;br /&gt;
&lt;br /&gt;
Installez les drivers de votre carte (Uno, Duemilanove ...) présents dans le répertoire arduino-0xyz\drivers en suivant les [http://arduino.cc/en/Guide/Windows#toc4 instructions].&lt;br /&gt;
&lt;br /&gt;
===MacOS X===&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Sous Linux [http://www.arduino.cc/playground/Learning/Linux http://www.arduino.cc/playground/Learning/Linux]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install arduino&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More for Ubuntu at &#039;&#039;http://arduino.cc/playground/Linux/Ubuntu&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Quote:&lt;br /&gt;
&#039;&#039;Is there any way I can &amp;quot;see&amp;quot; the avrdude command the Arduino IDE uses (since it works)?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Close the IDE if running and open the preferences.txt file for the IDE in a texteditor. Change  the keys :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
build.verbose=true&lt;br /&gt;
upload.verbose=true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then startup the IDE.  It should now print all the compiler and avrdude upload messages.&lt;br /&gt;
&lt;br /&gt;
Related info&lt;br /&gt;
&lt;br /&gt;
* For Arduino 22 on 64 bit [http://thenybble.de/projects/arduino-64-bit.html http://thenybble.de/projects/arduino-64-bit.html]&lt;br /&gt;
* Ecplise plugin [http://www.arduino.cc/playground/Code/Eclipse http://www.arduino.cc/playground/Code/Eclipse]&lt;br /&gt;
&lt;br /&gt;
==Premiers pas==&lt;br /&gt;
Pour tester que l&#039;installation est opérationnelle:&lt;br /&gt;
* connectez votre carte Arduino sur le port USB de votre machine&lt;br /&gt;
* lancez l&#039;environnement Arduino&lt;br /&gt;
* sélectionnez le modèle de votre carte Arduino : &#039;&#039;Menu Tools &amp;gt; Board&#039;&#039;&lt;br /&gt;
* sélectionnez le port série (ie port COM sous Windows) sur lequel se trouve brancher votre carte Arduino : &#039;&#039;Menu Tools &amp;gt; Serial Port&#039;&#039; &lt;br /&gt;
* ouvrez l&#039;exemple Blink &#039;&#039;Menu File &amp;gt; Examples &amp;gt; 1.Basics &amp;gt; Blink&#039;&#039;&lt;br /&gt;
* compilez et chargez le code sur la carte &#039;&#039;Menu File &amp;gt; Upload to IO Board&#039;&#039;&lt;br /&gt;
* normalement, la LED 13 de la carte clignote en continu ! (dès qu&#039;elle est alimentée, la carte boot et exécute ce programme qui est installé dans la FlashRAM.&lt;br /&gt;
&lt;br /&gt;
C&#039;est tout bon : à vous de jouer ...&lt;br /&gt;
&lt;br /&gt;
Vous pouvez tester les autres exemples &#039;&#039;Menu File &amp;gt; Examples&#039;&#039;&lt;br /&gt;
Notamment celui utilisant le port série &#039;&#039;Menu File &amp;gt; Examples &amp;gt; 4.Communication &amp;gt; ASCIITable&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Voici un aide mémoire Arduino [[Media:arduinocheatsheet.pdf]] ([http://sites.google.com/site/mechatronicsguy/arduinocheatsheet/Arduinocheatsheetv02c.pdf?attredirects=0&amp;amp;d=1 original])&lt;br /&gt;
&lt;br /&gt;
et d&#039;autres manipulations avec des capteurs et des actionneurs&lt;br /&gt;
* Sparkfun Inventor Kit (en VO)&lt;br /&gt;
** http://www.sparkfun.com/tutorial/AIK/ARDX-EG-SPAR-PRINT-85.pdf&lt;br /&gt;
** http://www.sparkfun.com/tutorial/AIK/CIRC00-sheet-SPAR.pdf&lt;br /&gt;
* Sparkfun Inventor Kit (en VF)&lt;br /&gt;
** http://ardx.org/src/guide/2/ARDX-EG-SPAR-FR-WEB.pdf&lt;br /&gt;
** http://www.sparkfun.com/news/636&lt;br /&gt;
&lt;br /&gt;
Des [[Travaux Pratiques Arduino]] plus conséquents sont disponibles pour les élèves de AIR.&lt;br /&gt;
&lt;br /&gt;
==Avancés==&lt;br /&gt;
[http://robotgroup.com.ar/duinos/wiki/index.php?title=Main_Page-FR DuinOS] un OS temps réel pour Arduino.&lt;br /&gt;
&lt;br /&gt;
==Arduino @ AIR==&lt;br /&gt;
Les cartes disponibles dans la salle AIR:&lt;br /&gt;
* [http://arduino.cc/en/Main/ArduinoBoardUno Arduino Uno]&lt;br /&gt;
* Arduino Duemilanove&lt;br /&gt;
* [http://arduino.cc/en/Main/ArduinoBoardMega2560 Arduino Mega2560]&lt;br /&gt;
* [http://www.arduino.cc/en/Main/ArduinoBoardLilyPad Arduino Lilypad]&lt;br /&gt;
* [http://www.sparkfun.com/products/9712 Arduino FIO] (included XBee socket)&lt;br /&gt;
* [http://www.seeedstudio.com/depot/seeeduino-stalker-p-600.html Seeeduino Stalker] (included ZigBee + SD Card)&lt;br /&gt;
* &amp;quot;[[Breaduino]]&amp;quot; (Arduino bootable ATMega328 standalone)&lt;br /&gt;
&lt;br /&gt;
Des cartes &#039;&#039;erzats&#039;&#039; utilisant des processeurs ARM7 sont compatibles avec les montages et les cartes filles développées pour les cartes Arduino. Pour certaines, le développement se fait par contre en C# .NET MicroFramework&lt;br /&gt;
* [[Arduino Due]]&lt;br /&gt;
* [[chipKIT Uno32]]&lt;br /&gt;
* [[Netduino]]&lt;br /&gt;
* [[FEZ]] Panda&lt;br /&gt;
&lt;br /&gt;
[[Image:arduinos.jpg|500px|Assortiments d&#039;Arduino et consors: Uno, Mega, Seeeduino, FEZ Panda]][[Image:arduigrid-v0.1.jpg|500px|ArduiGrid]][[Image:Breaduino1.jpg|300px|Breaduino]]&lt;br /&gt;
&lt;br /&gt;
==Ressources==&lt;br /&gt;
===Liens===&lt;br /&gt;
* [http://www.arduino.cc Arduino Website]&lt;br /&gt;
* [http://www.arduino.cc/en/Main/Hardware Arduino Hardware]&lt;br /&gt;
* [http://membres-liglab.imag.fr/donsez/cours/arduino.pdf Transparents du cours]&lt;br /&gt;
* Un aide mémoire sur Arduino [[Media:arduinocheatsheet.pdf]] ([http://sites.google.com/site/mechatronicsguy/arduinocheatsheet/Arduinocheatsheetv02c.pdf?attredirects=0&amp;amp;d=1 original])&lt;br /&gt;
&lt;br /&gt;
===Kits===&lt;br /&gt;
* Sparkfun Inventor Kit (un kit de base pour démarrer avec l&#039;Ardiuno en VO&lt;br /&gt;
** http://www.sparkfun.com/tutorial/AIK/ARDX-EG-SPAR-PRINT-85.pdf&lt;br /&gt;
** http://www.sparkfun.com/tutorial/AIK/CIRC00-sheet-SPAR.pdf&lt;br /&gt;
* Sparkfun Inventor Kit (en VF)&lt;br /&gt;
** http://ardx.org/src/guide/2/ARDX-EG-SPAR-FR-WEB.pdf&lt;br /&gt;
** http://www.sparkfun.com/news/636&lt;br /&gt;
&lt;br /&gt;
===Livres===&lt;br /&gt;
* Massimo Banzi, Getting Started with Arduino, Pub. Make; 1 edition (October 15, 2008) ISBN-10: 0596155514&lt;br /&gt;
* Tom Igoe, [http://oreilly.com/catalog/9780596510510 Making Things Talk: Practical Methods for Connecting Physical Objects],  Make; 1 edition (September 28, 2007), ISBN-10: 0596510519 ([http://examples.oreilly.com/9780596510510/ exemples de code]) un livre plein de recette de cuisine !&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Tabletop&amp;diff=3157</id>
		<title>Tabletop</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Tabletop&amp;diff=3157"/>
		<updated>2011-10-09T11:44:00Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Logo_AIR_TableTop.png|right|upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Suite à l&#039;exposition Experimenta, de nombreuses photos vont arriver!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* UE/Module: Projet innovant de RICM4 option CM&lt;br /&gt;
* Enseignant: Didier Donsez&lt;br /&gt;
* Elèves RICM 5: Christophe Havard (chef de projet) - havard.christophe[AT]gmail.com, Renaud Collin - ren.collin[AT]gmail.com, Sebastien Skorupski&lt;br /&gt;
* Intervenants externes : Elsa Neves ([http://fr.wikipedia.org/wiki/Institut_de_la_Communication_et_des_M%C3%A9dias ICM Grenoble])&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Le tabletop est une table &#039;&#039;&#039;tactile&#039;&#039;&#039; &#039;&#039;&#039;interactive&#039;&#039;&#039; d&#039;environ 60&amp;quot;. La technologie employée est dite &amp;quot;&#039;&#039;&#039;multipoint&#039;&#039;&#039;&amp;quot;, c&#039;est-à-dire qu&#039;elle permet à un nombre important d&#039;utilisateur d&#039;&#039;&#039;&#039;interagir en même temps&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Cette table fonctionne avec un Mac Mini et 2 systèmes d&#039;exploitation : Mac OSX et Windows 7.&lt;br /&gt;
Les applications clientes peuvent être développées sur plusieurs technologies dont : &lt;br /&gt;
* Java (MT4j)&lt;br /&gt;
* Flash AS3 (TUIO library)&lt;br /&gt;
* Python (PyMT)&lt;br /&gt;
* etc&lt;br /&gt;
&lt;br /&gt;
La table est également équipée d&#039;un&#039;&#039;&#039; lecteur NFC&#039;&#039;&#039; type ACR122.&lt;br /&gt;
&lt;br /&gt;
Présentation commerciale du projet : [http://air.imag.fr/mediawiki/images/6/60/AIR_NFC_TableTop.pdf AIR_NFC_TableTop]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Les objectifs du projet sont&lt;br /&gt;
# de réaliser la partie matériel d&#039;un tabletop à faible coût&lt;br /&gt;
# d&#039;évaluer les canevas de développement d&#039;IHM multipoint (Flash/Java/C#/.NET/Windows7)&lt;br /&gt;
# de réaliser une application pour une table de restaurant (affichage des plats, commande, addition, enquête de satisfaction ...)&lt;br /&gt;
# d&#039;utiliser la technologie NFC ([[Near Field Communication]]) pour permettre aux utilisateurs de s&#039;identifier et payer via leur téléphone mobile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Table Tactile==&lt;br /&gt;
===Matériel===&lt;br /&gt;
* Table en verre IKEA (60&amp;quot;)&lt;br /&gt;
* Miroir&lt;br /&gt;
* Mac Mini&lt;br /&gt;
* Videoprojecteur short-throw&lt;br /&gt;
* Illuminateur IR&lt;br /&gt;
* Webcam PS3 modifiée (IR filter removed &amp;amp; visible light bandpass filter added)&lt;br /&gt;
* Lentille grand angle (m12/0.5mm mount, 1.8mm, angle of view = 170°)&lt;br /&gt;
* RFID Reader ([[ACS ACR 122]] RFID reader)&lt;br /&gt;
&lt;br /&gt;
[[File:TableTop_schema.jpg|center|upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
===Installation matérielle===&lt;br /&gt;
* La surface vitrée de la table est recouverte de papier calque afin de capter l&#039;image du vidéo projecteur.&lt;br /&gt;
* Le bord supérieur de la table est percé afin de pouvoir fixer un support pour le vidéo-projecteur.&lt;br /&gt;
* Un miroir est placé de telle sorte à renvoyer l&#039;image du vidéo-projecteur vers la surface vitrée&lt;br /&gt;
* Des lampes infrarouges sont placés à l&#039;intérieur de la table afin d&#039;illuminer la surface vitrée par en-dessous.&lt;br /&gt;
* La webcam est pointée vers la surface vitrée.&lt;br /&gt;
* Des plaques en bois sont découpées et placées autour de la table afin de la protéger des perturbations extérieures (lumière notamment).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Interieur_table.jpg| AIR NFC Tabletop 5&lt;br /&gt;
Image:TableTop 02.jpg|AIR NFC TableTop 1&lt;br /&gt;
Image:TableTop 05.jpg|AIR NFC TableTop 2&lt;br /&gt;
Image:TableTop 03.jpg|AIR NFC TableTop 3&lt;br /&gt;
Image:TableTop 06.jpg|AIR NFC TableTop 4&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installation logicielle===&lt;br /&gt;
* Construction des interfaces logicielles : [http://www.mt4j.org/mediawiki/index.php/Main_Page MT4j].&lt;br /&gt;
MT4j est un framework Java fournissant des briques logicielles de base et permettant de construire des interfaces riches.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:MT4j MTShell.jpg|MT4j - Multitouch Shell&lt;br /&gt;
Image:MT4j_WaterScene.png|MT4j - Water scene&lt;br /&gt;
Image:MT4j_Touchtail.jpg|MT4 - Dessin&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Tracker : CCV 1.4 (Community Core Vision) [http://ccv.nuigroup.com CCV]&lt;br /&gt;
Le tracker permet de l&#039;image filmée par la caméra en points de contacts exploitables par l&#039;ordinateur.&lt;br /&gt;
Plus précisément, le tracker récupère les coordonnées des points de contacts par synthèse d&#039;image, convertit ces coordonnées au format [http://www.tuio.org/?specification TUIO] et les envoie sur un socket de l&#039;ordinateur.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Test1.png|Community Core Vision&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Videos de demos===&lt;br /&gt;
* [http://www.youtube.com/watch?v=X1zus6saCcM Application Puzzle]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobl_test-application-fire-air-nfc-tabletop_tech  Test Application &amp;quot;Fire&amp;quot;]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobm_test-application-water-air-nfc-tabletop_tech  Test Application &amp;quot;Water&amp;quot;]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobr_test-application-paint-air-nfc-tabletop_tech  Test Application &amp;quot;Paint&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Module NFC ==&lt;br /&gt;
=== Communautée ===&lt;br /&gt;
Information sur la librairie open-source [http://www.libnfc.org/ libnfc]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/libnfc/downloads/list Téléchargement de la librairie libnfc]&lt;br /&gt;
&lt;br /&gt;
[http://www.libnfc.org/api Documentation sur l&#039;API]&lt;br /&gt;
&lt;br /&gt;
[http://www.libnfc.org/community Forum de la librairie]&lt;br /&gt;
&lt;br /&gt;
[http://sberfini.developpez.com/ Tutoriel sur l&#039;utilisation de NFC sur Androïd]&lt;br /&gt;
&lt;br /&gt;
=== Matériel===&lt;br /&gt;
* ACR122 NFC reader : [http://www.nfc-reader.com/acr122-drivers.php drivers sur nfc-reader.com] ou [http://acs.com.hk/index.php?pid=drivers&amp;amp;id=ACR122U]&lt;br /&gt;
&lt;br /&gt;
* Nokia 6131 NFC : [http://www.nokia.fr/support/support-produits/nokia-6131-nfc Support en ligne]&lt;br /&gt;
&lt;br /&gt;
=== Environnement Matériel: Nokia 6131 NFC ===&lt;br /&gt;
[http://www.forum.nokia.com/info/sw.nokia.com/id/ef4e1bc9-d220-400c-a41d-b3d56349e984/Nokia_6131_NFC_SDK.html Nokia 6131 SDK]. Le SDK propose deux type d&#039;installation : sous forme d&#039;une plugin eclipse ou d&#039;un framework&lt;br /&gt;
&lt;br /&gt;
=== Environnement Logiciel : libnfc ===&lt;br /&gt;
Ce document est basé sur le fichier README-Windows.txt disponible dans l&#039;archive libnfc-1.4.2 [www.libnfc.org]&lt;br /&gt;
&lt;br /&gt;
====Prérequis====&lt;br /&gt;
Afin de pouvoir interagir avec l&#039;ACR122 les logiciels suivants doivent-être téléchargés:&lt;br /&gt;
* [http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm64-gcc-4.5.1.exe/download MinGW-w64 compiler toolchain] &lt;br /&gt;
* [http://sourceforge.net/projects/libusb-win32/ LibUsb-Win32 0.1.12.2]&lt;br /&gt;
* [http://www.cmake.org CMake 2.6 ]&lt;br /&gt;
* [http://code.google.com/p/libnfc/downloads/list libnfc]&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
Testée sous Windows XP/SP3 32 bit.&lt;br /&gt;
&lt;br /&gt;
* Installer MinGW .!!!Attention!!! La documentation officielle indique qu&#039;il faut sélectionner MinGW-w64 afin que MinGW puisse avoir accès aux librairie PCSC (Smart Card). &lt;br /&gt;
* Ajouter les répertoires suivant à votre PATH : c:\MinGW64\bin;c:\MinGW64\x86_64-w64-mingw32\lib32;c:\MinGW64\x86_64-w64-mingw32\include. pour ce faire :&lt;br /&gt;
- clic-droit sur le poste de travail/propriétés&lt;br /&gt;
- Dans l&#039;onglet avancé, cliquer sur Variables d&#039;environnements&lt;br /&gt;
- Modifier la variable PATH&lt;br /&gt;
* Décompresser l&#039;archive libusb-win32-bin dans c:\Program Files\LibUSB-Win32. C&#039;est dans ce répertoire que CMake cherchera LIBUSB lors de la compilation.&lt;br /&gt;
* Lire le libusb-win32-bin-README contenu dans le dossier bin afin de savoir où copier les deux fichiers .dll et .sys (dépend de votre architecture...)&lt;br /&gt;
* Installer CMake : Choisissez l&#039;option &amp;quot;Add Cmake to the system PATH&amp;quot; pendant l&#039;installation afin que CMake soi accessible depuis MinGW&lt;br /&gt;
* Extraire l&#039;archive libnfc archive versc:\NFC\libnfc-src&lt;br /&gt;
* Lancer un éditeur de texte et copier les instructions suivantes :&lt;br /&gt;
  cd c:\NFC\libnfc-build&lt;br /&gt;
  cmake -G &amp;quot;MinGW Makefiles&amp;quot; -DCMAKE_BUILD_TYPE=Release c:\NFC\libnfc-src&lt;br /&gt;
  mingw32-make&lt;br /&gt;
  cd ..&lt;br /&gt;
* Sauvegarder le fichier dans C:\NFC\make.bat&lt;br /&gt;
* Exécuter make.bat&lt;br /&gt;
* Copier le fichier c:\NFC\libnfc-build\libnfc\libnfc.dll vers c:\windows\system32&lt;br /&gt;
&lt;br /&gt;
===Créer son programme===&lt;br /&gt;
Il n&#039;est pas possible (à ma connaissance) de compiler directement un fichier utilisant la librairie nfc. &lt;br /&gt;
Pour compiler il faut éditer le fichier de configuration CMakeList.txt :&lt;br /&gt;
# Placer le fichier .c dans c:\NFC\libnfc-src\examples&lt;br /&gt;
# Editer examples\CMakeLists.txt et ajouter le nom du fichier .c dans la section SET &lt;br /&gt;
# Exécuter make.bat depuis c:\NFC\ &lt;br /&gt;
Le fichier exécutable se trouve dans libnfc-build\examples&lt;br /&gt;
&lt;br /&gt;
====Utiliser des librairies supplémentaires====&lt;br /&gt;
Prenons l&#039;exemple des sockets sous windows, afin de permettre la compilation d&#039;un programme les utilisant il faut (en plus de l&#039;inclusion de &amp;lt;winsock2.h&amp;gt;) utiliser la librairie ws2_32. Là encore il faudra éditer le fichier de configuration CMakeList.txt afin d&#039;expliciter les librairies à utiliser, de manière similaire à celle-ci:&lt;br /&gt;
    IF(WIN32)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme ws2_32)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme nfc)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme nfc-utils)&lt;br /&gt;
    ENDIF(WIN32)&lt;br /&gt;
Source complète : [[File:CMakeLists.txt]]&lt;br /&gt;
&lt;br /&gt;
== Blazeds ==&lt;br /&gt;
[http://opensource.adobe.com/wiki/display/blazeds/BlazeDS Blazeds] est un composant open source permettant d&#039;accéder à des objets distant via une application Flex. Pour son fonctionnement blazeds se base sur un serveur Tomcat côté client et côté serveur. &lt;br /&gt;
[http://www.adobe.com/devnet/livecycle/articles/blazeds_gettingstarted.html Getting start with Blazeds]&lt;br /&gt;
&lt;br /&gt;
== Liens externes ==&lt;br /&gt;
* (en) [http://www.nfc-forum.org/home/ NFC Forum]&lt;br /&gt;
* (en) [http://www.libnfc.org/ open source library for Near Field Communication (NFC)]&lt;br /&gt;
* (en) [http://nuigroup.com/ NUI Group(natural user interface group)]&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Tabletop&amp;diff=3152</id>
		<title>Tabletop</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Tabletop&amp;diff=3152"/>
		<updated>2011-10-07T16:48:49Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Environnement Logiciel : Nokia 6131 NFC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Logo_AIR_TableTop.png|right|upright=0.5]]&lt;br /&gt;
* UE/Module: Projet innovant de RICM4 option CM&lt;br /&gt;
* Enseignant: Didier Donsez&lt;br /&gt;
* Elèves RICM 5: Christophe Havard (chef de projet) - havard.christophe[AT]gmail.com, Renaud Collin - ren.collin[AT]gmail.com, Sebastien Skorupski&lt;br /&gt;
* Intervenants externes : Elsa Neves ([http://fr.wikipedia.org/wiki/Institut_de_la_Communication_et_des_M%C3%A9dias ICM Grenoble])&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Le tabletop est une table &#039;&#039;&#039;tactile&#039;&#039;&#039; &#039;&#039;&#039;interactive&#039;&#039;&#039; d&#039;environ 60&amp;quot;. La technologie employée est dite &amp;quot;&#039;&#039;&#039;multipoint&#039;&#039;&#039;&amp;quot;, c&#039;est-à-dire qu&#039;elle permet à un nombre important d&#039;utilisateur d&#039;&#039;&#039;&#039;interagir en même temps&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Cette table fonctionne avec un Mac Mini et 2 systèmes d&#039;exploitation : Mac OSX et Windows 7.&lt;br /&gt;
Les applications clientes peuvent être développées sur plusieurs technologies dont : &lt;br /&gt;
* Java (MT4j)&lt;br /&gt;
* Flash AS3 (TUIO library)&lt;br /&gt;
* Python (PyMT)&lt;br /&gt;
* etc&lt;br /&gt;
&lt;br /&gt;
La table est également équipée d&#039;un&#039;&#039;&#039; lecteur NFC&#039;&#039;&#039; type ACR122.&lt;br /&gt;
&lt;br /&gt;
Présentation commerciale du projet : [http://air.imag.fr/mediawiki/images/6/60/AIR_NFC_TableTop.pdf AIR_NFC_TableTop]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Les objectifs du projet sont&lt;br /&gt;
# de réaliser la partie matériel d&#039;un tabletop à faible coût&lt;br /&gt;
# d&#039;évaluer les canevas de développement d&#039;IHM multipoint (Flash/Java/C#/.NET/Windows7)&lt;br /&gt;
# de réaliser une application pour une table de restaurant (affichage des plats, commande, addition, enquête de satisfaction ...)&lt;br /&gt;
# d&#039;utiliser la technologie NFC ([[Near Field Communication]]) pour permettre aux utilisateurs de s&#039;identifier et payer via leur téléphone mobile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Table Tactile==&lt;br /&gt;
===Matériel===&lt;br /&gt;
* Table en verre IKEA (60&amp;quot;)&lt;br /&gt;
* Miroir&lt;br /&gt;
* Mac Mini&lt;br /&gt;
* Videoprojecteur short-throw&lt;br /&gt;
* Illuminateur IR&lt;br /&gt;
* Webcam PS3 modifiée (IR filter removed &amp;amp; visible light bandpass filter added)&lt;br /&gt;
* Lentille grand angle (m12/0.5mm mount, 1.8mm, angle of view = 170°)&lt;br /&gt;
* RFID Reader ([[ACS ACR 122]] RFID reader)&lt;br /&gt;
&lt;br /&gt;
[[File:TableTop_schema.jpg|center|upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
===Installation matérielle===&lt;br /&gt;
* La surface vitrée de la table est recouverte de papier calque afin de capter l&#039;image du vidéo projecteur.&lt;br /&gt;
* Le bord supérieur de la table est percé afin de pouvoir fixer un support pour le vidéo-projecteur.&lt;br /&gt;
* Un miroir est placé de telle sorte à renvoyer l&#039;image du vidéo-projecteur vers la surface vitrée&lt;br /&gt;
* Des lampes infrarouges sont placés à l&#039;intérieur de la table afin d&#039;illuminer la surface vitrée par en-dessous.&lt;br /&gt;
* La webcam est pointée vers la surface vitrée.&lt;br /&gt;
* Des plaques en bois sont découpées et placées autour de la table afin de la protéger des perturbations extérieures (lumière notamment).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Interieur_table.jpg| AIR NFC Tabletop 5&lt;br /&gt;
Image:TableTop 02.jpg|AIR NFC TableTop 1&lt;br /&gt;
Image:TableTop 05.jpg|AIR NFC TableTop 2&lt;br /&gt;
Image:TableTop 03.jpg|AIR NFC TableTop 3&lt;br /&gt;
Image:TableTop 06.jpg|AIR NFC TableTop 4&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installation logicielle===&lt;br /&gt;
* Construction des interfaces logicielles : [http://www.mt4j.org/mediawiki/index.php/Main_Page MT4j].&lt;br /&gt;
MT4j est un framework Java fournissant des briques logicielles de base et permettant de construire des interfaces riches.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:MT4j MTShell.jpg|MT4j - Multitouch Shell&lt;br /&gt;
Image:MT4j_WaterScene.png|MT4j - Water scene&lt;br /&gt;
Image:MT4j_Touchtail.jpg|MT4 - Dessin&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Tracker : CCV 1.4 (Community Core Vision) [http://ccv.nuigroup.com CCV]&lt;br /&gt;
Le tracker permet de l&#039;image filmée par la caméra en points de contacts exploitables par l&#039;ordinateur.&lt;br /&gt;
Plus précisément, le tracker récupère les coordonnées des points de contacts par synthèse d&#039;image, convertit ces coordonnées au format [http://www.tuio.org/?specification TUIO] et les envoie sur un socket de l&#039;ordinateur.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Test1.png|Community Core Vision&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Videos de demos===&lt;br /&gt;
* [http://www.youtube.com/watch?v=X1zus6saCcM Application Puzzle]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobl_test-application-fire-air-nfc-tabletop_tech  Test Application &amp;quot;Fire&amp;quot;]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobm_test-application-water-air-nfc-tabletop_tech  Test Application &amp;quot;Water&amp;quot;]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobr_test-application-paint-air-nfc-tabletop_tech  Test Application &amp;quot;Paint&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Module NFC ==&lt;br /&gt;
=== Communautée ===&lt;br /&gt;
Information sur la librairie open-source [http://www.libnfc.org/ libnfc]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/libnfc/downloads/list Téléchargement de la librairie libnfc]&lt;br /&gt;
&lt;br /&gt;
[http://www.libnfc.org/api Documentation sur l&#039;API]&lt;br /&gt;
&lt;br /&gt;
[http://www.libnfc.org/community Forum de la librairie]&lt;br /&gt;
&lt;br /&gt;
[http://sberfini.developpez.com/ Tutoriel sur l&#039;utilisation de NFC sur Androïd]&lt;br /&gt;
&lt;br /&gt;
=== Matériel===&lt;br /&gt;
* ACR122 NFC reader : [http://www.nfc-reader.com/acr122-drivers.php drivers sur nfc-reader.com] ou [http://acs.com.hk/index.php?pid=drivers&amp;amp;id=ACR122U]&lt;br /&gt;
&lt;br /&gt;
* Nokia 6131 NFC : [http://www.nokia.fr/support/support-produits/nokia-6131-nfc Support en ligne]&lt;br /&gt;
&lt;br /&gt;
=== Environnement Matériel: Nokia 6131 NFC ===&lt;br /&gt;
[http://www.forum.nokia.com/info/sw.nokia.com/id/ef4e1bc9-d220-400c-a41d-b3d56349e984/Nokia_6131_NFC_SDK.html Nokia 6131 SDK]. Le SDK propose deux type d&#039;installation : sous forme d&#039;une plugin eclipse ou d&#039;un framework&lt;br /&gt;
&lt;br /&gt;
=== Environnement Logiciel : libnfc ===&lt;br /&gt;
Ce document est basé sur le fichier README-Windows.txt disponible dans l&#039;archive libnfc-1.4.2 [www.libnfc.org]&lt;br /&gt;
&lt;br /&gt;
====Prérequis====&lt;br /&gt;
Afin de pouvoir interagir avec l&#039;ACR122 les logiciels suivants doivent-être téléchargés:&lt;br /&gt;
* [http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm64-gcc-4.5.1.exe/download MinGW-w64 compiler toolchain] &lt;br /&gt;
* [http://sourceforge.net/projects/libusb-win32/ LibUsb-Win32 0.1.12.2]&lt;br /&gt;
* [http://www.cmake.org CMake 2.6 ]&lt;br /&gt;
* [http://code.google.com/p/libnfc/downloads/list libnfc]&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
Testée sous Windows XP/SP3 32 bit.&lt;br /&gt;
&lt;br /&gt;
* Installer MinGW .!!!Attention!!! La documentation officielle indique qu&#039;il faut sélectionner MinGW-w64 afin que MinGW puisse avoir accès aux librairie PCSC (Smart Card). &lt;br /&gt;
* Ajouter les répertoires suivant à votre PATH : c:\MinGW64\bin;c:\MinGW64\x86_64-w64-mingw32\lib32;c:\MinGW64\x86_64-w64-mingw32\include. pour ce faire :&lt;br /&gt;
- clic-droit sur le poste de travail/propriétés&lt;br /&gt;
- Dans l&#039;onglet avancé, cliquer sur Variables d&#039;environnements&lt;br /&gt;
- Modifier la variable PATH&lt;br /&gt;
* Décompresser l&#039;archive libusb-win32-bin dans c:\Program Files\LibUSB-Win32. C&#039;est dans ce répertoire que CMake cherchera LIBUSB lors de la compilation.&lt;br /&gt;
* Lire le libusb-win32-bin-README contenu dans le dossier bin afin de savoir où copier les deux fichiers .dll et .sys (dépend de votre architecture...)&lt;br /&gt;
* Installer CMake : Choisissez l&#039;option &amp;quot;Add Cmake to the system PATH&amp;quot; pendant l&#039;installation afin que CMake soi accessible depuis MinGW&lt;br /&gt;
* Extraire l&#039;archive libnfc archive versc:\NFC\libnfc-src&lt;br /&gt;
* Lancer un éditeur de texte et copier les instructions suivantes :&lt;br /&gt;
  cd c:\NFC\libnfc-build&lt;br /&gt;
  cmake -G &amp;quot;MinGW Makefiles&amp;quot; -DCMAKE_BUILD_TYPE=Release c:\NFC\libnfc-src&lt;br /&gt;
  mingw32-make&lt;br /&gt;
  cd ..&lt;br /&gt;
* Sauvegarder le fichier dans C:\NFC\make.bat&lt;br /&gt;
* Exécuter make.bat&lt;br /&gt;
* Copier le fichier c:\NFC\libnfc-build\libnfc\libnfc.dll vers c:\windows\system32&lt;br /&gt;
&lt;br /&gt;
===Créer son programme===&lt;br /&gt;
Il n&#039;est pas possible (à ma connaissance) de compiler directement un fichier utilisant la librairie nfc. &lt;br /&gt;
Pour compiler il faut éditer le fichier de configuration CMakeList.txt :&lt;br /&gt;
# Placer le fichier .c dans c:\NFC\libnfc-src\examples&lt;br /&gt;
# Editer examples\CMakeLists.txt et ajouter le nom du fichier .c dans la section SET &lt;br /&gt;
# Exécuter make.bat depuis c:\NFC\ &lt;br /&gt;
Le fichier exécutable se trouve dans libnfc-build\examples&lt;br /&gt;
&lt;br /&gt;
====Utiliser des librairies supplémentaires====&lt;br /&gt;
Prenons l&#039;exemple des sockets sous windows, afin de permettre la compilation d&#039;un programme les utilisant il faut (en plus de l&#039;inclusion de &amp;lt;winsock2.h&amp;gt;) utiliser la librairie ws2_32. Là encore il faudra éditer le fichier de configuration CMakeList.txt afin d&#039;expliciter les librairies à utiliser, de manière similaire à celle-ci:&lt;br /&gt;
    IF(WIN32)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme ws2_32)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme nfc)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme nfc-utils)&lt;br /&gt;
    ENDIF(WIN32)&lt;br /&gt;
Source complète : [[File:CMakeLists.txt]]&lt;br /&gt;
&lt;br /&gt;
== Blazeds ==&lt;br /&gt;
[http://opensource.adobe.com/wiki/display/blazeds/BlazeDS Blazeds] est un composant open source permettant d&#039;accéder à des objets distant via une application Flex. Pour son fonctionnement blazeds se base sur un serveur Tomcat côté client et côté serveur. &lt;br /&gt;
[http://www.adobe.com/devnet/livecycle/articles/blazeds_gettingstarted.html Getting start with Blazeds]&lt;br /&gt;
&lt;br /&gt;
== Liens externes ==&lt;br /&gt;
* (en) [http://www.nfc-forum.org/home/ NFC Forum]&lt;br /&gt;
* (en) [http://www.libnfc.org/ open source library for Near Field Communication (NFC)]&lt;br /&gt;
* (en) [http://nuigroup.com/ NUI Group(natural user interface group)]&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Tabletop&amp;diff=3151</id>
		<title>Tabletop</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Tabletop&amp;diff=3151"/>
		<updated>2011-10-07T16:48:21Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Installation logicielle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Logo_AIR_TableTop.png|right|upright=0.5]]&lt;br /&gt;
* UE/Module: Projet innovant de RICM4 option CM&lt;br /&gt;
* Enseignant: Didier Donsez&lt;br /&gt;
* Elèves RICM 5: Christophe Havard (chef de projet) - havard.christophe[AT]gmail.com, Renaud Collin - ren.collin[AT]gmail.com, Sebastien Skorupski&lt;br /&gt;
* Intervenants externes : Elsa Neves ([http://fr.wikipedia.org/wiki/Institut_de_la_Communication_et_des_M%C3%A9dias ICM Grenoble])&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Le tabletop est une table &#039;&#039;&#039;tactile&#039;&#039;&#039; &#039;&#039;&#039;interactive&#039;&#039;&#039; d&#039;environ 60&amp;quot;. La technologie employée est dite &amp;quot;&#039;&#039;&#039;multipoint&#039;&#039;&#039;&amp;quot;, c&#039;est-à-dire qu&#039;elle permet à un nombre important d&#039;utilisateur d&#039;&#039;&#039;&#039;interagir en même temps&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Cette table fonctionne avec un Mac Mini et 2 systèmes d&#039;exploitation : Mac OSX et Windows 7.&lt;br /&gt;
Les applications clientes peuvent être développées sur plusieurs technologies dont : &lt;br /&gt;
* Java (MT4j)&lt;br /&gt;
* Flash AS3 (TUIO library)&lt;br /&gt;
* Python (PyMT)&lt;br /&gt;
* etc&lt;br /&gt;
&lt;br /&gt;
La table est également équipée d&#039;un&#039;&#039;&#039; lecteur NFC&#039;&#039;&#039; type ACR122.&lt;br /&gt;
&lt;br /&gt;
Présentation commerciale du projet : [http://air.imag.fr/mediawiki/images/6/60/AIR_NFC_TableTop.pdf AIR_NFC_TableTop]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Les objectifs du projet sont&lt;br /&gt;
# de réaliser la partie matériel d&#039;un tabletop à faible coût&lt;br /&gt;
# d&#039;évaluer les canevas de développement d&#039;IHM multipoint (Flash/Java/C#/.NET/Windows7)&lt;br /&gt;
# de réaliser une application pour une table de restaurant (affichage des plats, commande, addition, enquête de satisfaction ...)&lt;br /&gt;
# d&#039;utiliser la technologie NFC ([[Near Field Communication]]) pour permettre aux utilisateurs de s&#039;identifier et payer via leur téléphone mobile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Table Tactile==&lt;br /&gt;
===Matériel===&lt;br /&gt;
* Table en verre IKEA (60&amp;quot;)&lt;br /&gt;
* Miroir&lt;br /&gt;
* Mac Mini&lt;br /&gt;
* Videoprojecteur short-throw&lt;br /&gt;
* Illuminateur IR&lt;br /&gt;
* Webcam PS3 modifiée (IR filter removed &amp;amp; visible light bandpass filter added)&lt;br /&gt;
* Lentille grand angle (m12/0.5mm mount, 1.8mm, angle of view = 170°)&lt;br /&gt;
* RFID Reader ([[ACS ACR 122]] RFID reader)&lt;br /&gt;
&lt;br /&gt;
[[File:TableTop_schema.jpg|center|upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
===Installation matérielle===&lt;br /&gt;
* La surface vitrée de la table est recouverte de papier calque afin de capter l&#039;image du vidéo projecteur.&lt;br /&gt;
* Le bord supérieur de la table est percé afin de pouvoir fixer un support pour le vidéo-projecteur.&lt;br /&gt;
* Un miroir est placé de telle sorte à renvoyer l&#039;image du vidéo-projecteur vers la surface vitrée&lt;br /&gt;
* Des lampes infrarouges sont placés à l&#039;intérieur de la table afin d&#039;illuminer la surface vitrée par en-dessous.&lt;br /&gt;
* La webcam est pointée vers la surface vitrée.&lt;br /&gt;
* Des plaques en bois sont découpées et placées autour de la table afin de la protéger des perturbations extérieures (lumière notamment).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Interieur_table.jpg| AIR NFC Tabletop 5&lt;br /&gt;
Image:TableTop 02.jpg|AIR NFC TableTop 1&lt;br /&gt;
Image:TableTop 05.jpg|AIR NFC TableTop 2&lt;br /&gt;
Image:TableTop 03.jpg|AIR NFC TableTop 3&lt;br /&gt;
Image:TableTop 06.jpg|AIR NFC TableTop 4&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installation logicielle===&lt;br /&gt;
* Construction des interfaces logicielles : [http://www.mt4j.org/mediawiki/index.php/Main_Page MT4j].&lt;br /&gt;
MT4j est un framework Java fournissant des briques logicielles de base et permettant de construire des interfaces riches.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:MT4j MTShell.jpg|MT4j - Multitouch Shell&lt;br /&gt;
Image:MT4j_WaterScene.png|MT4j - Water scene&lt;br /&gt;
Image:MT4j_Touchtail.jpg|MT4 - Dessin&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Tracker : CCV 1.4 (Community Core Vision) [http://ccv.nuigroup.com CCV]&lt;br /&gt;
Le tracker permet de l&#039;image filmée par la caméra en points de contacts exploitables par l&#039;ordinateur.&lt;br /&gt;
Plus précisément, le tracker récupère les coordonnées des points de contacts par synthèse d&#039;image, convertit ces coordonnées au format [http://www.tuio.org/?specification TUIO] et les envoie sur un socket de l&#039;ordinateur.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Test1.png|Community Core Vision&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Videos de demos===&lt;br /&gt;
* [http://www.youtube.com/watch?v=X1zus6saCcM Application Puzzle]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobl_test-application-fire-air-nfc-tabletop_tech  Test Application &amp;quot;Fire&amp;quot;]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobm_test-application-water-air-nfc-tabletop_tech  Test Application &amp;quot;Water&amp;quot;]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobr_test-application-paint-air-nfc-tabletop_tech  Test Application &amp;quot;Paint&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Module NFC ==&lt;br /&gt;
=== Communautée ===&lt;br /&gt;
Information sur la librairie open-source [http://www.libnfc.org/ libnfc]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/libnfc/downloads/list Téléchargement de la librairie libnfc]&lt;br /&gt;
&lt;br /&gt;
[http://www.libnfc.org/api Documentation sur l&#039;API]&lt;br /&gt;
&lt;br /&gt;
[http://www.libnfc.org/community Forum de la librairie]&lt;br /&gt;
&lt;br /&gt;
[http://sberfini.developpez.com/ Tutoriel sur l&#039;utilisation de NFC sur Androïd]&lt;br /&gt;
&lt;br /&gt;
=== Matériel===&lt;br /&gt;
* ACR122 NFC reader : [http://www.nfc-reader.com/acr122-drivers.php drivers sur nfc-reader.com] ou [http://acs.com.hk/index.php?pid=drivers&amp;amp;id=ACR122U]&lt;br /&gt;
&lt;br /&gt;
* Nokia 6131 NFC : [http://www.nokia.fr/support/support-produits/nokia-6131-nfc Support en ligne]&lt;br /&gt;
&lt;br /&gt;
=== Environnement Logiciel : Nokia 6131 NFC ===&lt;br /&gt;
[http://www.forum.nokia.com/info/sw.nokia.com/id/ef4e1bc9-d220-400c-a41d-b3d56349e984/Nokia_6131_NFC_SDK.html Nokia 6131 SDK]. Le SDK propose deux type d&#039;installation : sous forme d&#039;une plugin eclipse ou d&#039;un framework&lt;br /&gt;
&lt;br /&gt;
=== Environnement Logiciel : libnfc ===&lt;br /&gt;
Ce document est basé sur le fichier README-Windows.txt disponible dans l&#039;archive libnfc-1.4.2 [www.libnfc.org]&lt;br /&gt;
&lt;br /&gt;
====Prérequis====&lt;br /&gt;
Afin de pouvoir interagir avec l&#039;ACR122 les logiciels suivants doivent-être téléchargés:&lt;br /&gt;
* [http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm64-gcc-4.5.1.exe/download MinGW-w64 compiler toolchain] &lt;br /&gt;
* [http://sourceforge.net/projects/libusb-win32/ LibUsb-Win32 0.1.12.2]&lt;br /&gt;
* [http://www.cmake.org CMake 2.6 ]&lt;br /&gt;
* [http://code.google.com/p/libnfc/downloads/list libnfc]&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
Testée sous Windows XP/SP3 32 bit.&lt;br /&gt;
&lt;br /&gt;
* Installer MinGW .!!!Attention!!! La documentation officielle indique qu&#039;il faut sélectionner MinGW-w64 afin que MinGW puisse avoir accès aux librairie PCSC (Smart Card). &lt;br /&gt;
* Ajouter les répertoires suivant à votre PATH : c:\MinGW64\bin;c:\MinGW64\x86_64-w64-mingw32\lib32;c:\MinGW64\x86_64-w64-mingw32\include. pour ce faire :&lt;br /&gt;
- clic-droit sur le poste de travail/propriétés&lt;br /&gt;
- Dans l&#039;onglet avancé, cliquer sur Variables d&#039;environnements&lt;br /&gt;
- Modifier la variable PATH&lt;br /&gt;
* Décompresser l&#039;archive libusb-win32-bin dans c:\Program Files\LibUSB-Win32. C&#039;est dans ce répertoire que CMake cherchera LIBUSB lors de la compilation.&lt;br /&gt;
* Lire le libusb-win32-bin-README contenu dans le dossier bin afin de savoir où copier les deux fichiers .dll et .sys (dépend de votre architecture...)&lt;br /&gt;
* Installer CMake : Choisissez l&#039;option &amp;quot;Add Cmake to the system PATH&amp;quot; pendant l&#039;installation afin que CMake soi accessible depuis MinGW&lt;br /&gt;
* Extraire l&#039;archive libnfc archive versc:\NFC\libnfc-src&lt;br /&gt;
* Lancer un éditeur de texte et copier les instructions suivantes :&lt;br /&gt;
  cd c:\NFC\libnfc-build&lt;br /&gt;
  cmake -G &amp;quot;MinGW Makefiles&amp;quot; -DCMAKE_BUILD_TYPE=Release c:\NFC\libnfc-src&lt;br /&gt;
  mingw32-make&lt;br /&gt;
  cd ..&lt;br /&gt;
* Sauvegarder le fichier dans C:\NFC\make.bat&lt;br /&gt;
* Exécuter make.bat&lt;br /&gt;
* Copier le fichier c:\NFC\libnfc-build\libnfc\libnfc.dll vers c:\windows\system32&lt;br /&gt;
&lt;br /&gt;
===Créer son programme===&lt;br /&gt;
Il n&#039;est pas possible (à ma connaissance) de compiler directement un fichier utilisant la librairie nfc. &lt;br /&gt;
Pour compiler il faut éditer le fichier de configuration CMakeList.txt :&lt;br /&gt;
# Placer le fichier .c dans c:\NFC\libnfc-src\examples&lt;br /&gt;
# Editer examples\CMakeLists.txt et ajouter le nom du fichier .c dans la section SET &lt;br /&gt;
# Exécuter make.bat depuis c:\NFC\ &lt;br /&gt;
Le fichier exécutable se trouve dans libnfc-build\examples&lt;br /&gt;
&lt;br /&gt;
====Utiliser des librairies supplémentaires====&lt;br /&gt;
Prenons l&#039;exemple des sockets sous windows, afin de permettre la compilation d&#039;un programme les utilisant il faut (en plus de l&#039;inclusion de &amp;lt;winsock2.h&amp;gt;) utiliser la librairie ws2_32. Là encore il faudra éditer le fichier de configuration CMakeList.txt afin d&#039;expliciter les librairies à utiliser, de manière similaire à celle-ci:&lt;br /&gt;
    IF(WIN32)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme ws2_32)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme nfc)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme nfc-utils)&lt;br /&gt;
    ENDIF(WIN32)&lt;br /&gt;
Source complète : [[File:CMakeLists.txt]]&lt;br /&gt;
&lt;br /&gt;
== Blazeds ==&lt;br /&gt;
[http://opensource.adobe.com/wiki/display/blazeds/BlazeDS Blazeds] est un composant open source permettant d&#039;accéder à des objets distant via une application Flex. Pour son fonctionnement blazeds se base sur un serveur Tomcat côté client et côté serveur. &lt;br /&gt;
[http://www.adobe.com/devnet/livecycle/articles/blazeds_gettingstarted.html Getting start with Blazeds]&lt;br /&gt;
&lt;br /&gt;
== Liens externes ==&lt;br /&gt;
* (en) [http://www.nfc-forum.org/home/ NFC Forum]&lt;br /&gt;
* (en) [http://www.libnfc.org/ open source library for Near Field Communication (NFC)]&lt;br /&gt;
* (en) [http://nuigroup.com/ NUI Group(natural user interface group)]&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Tabletop&amp;diff=3150</id>
		<title>Tabletop</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Tabletop&amp;diff=3150"/>
		<updated>2011-10-07T16:47:02Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Logo_AIR_TableTop.png|right|upright=0.5]]&lt;br /&gt;
* UE/Module: Projet innovant de RICM4 option CM&lt;br /&gt;
* Enseignant: Didier Donsez&lt;br /&gt;
* Elèves RICM 5: Christophe Havard (chef de projet) - havard.christophe[AT]gmail.com, Renaud Collin - ren.collin[AT]gmail.com, Sebastien Skorupski&lt;br /&gt;
* Intervenants externes : Elsa Neves ([http://fr.wikipedia.org/wiki/Institut_de_la_Communication_et_des_M%C3%A9dias ICM Grenoble])&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Le tabletop est une table &#039;&#039;&#039;tactile&#039;&#039;&#039; &#039;&#039;&#039;interactive&#039;&#039;&#039; d&#039;environ 60&amp;quot;. La technologie employée est dite &amp;quot;&#039;&#039;&#039;multipoint&#039;&#039;&#039;&amp;quot;, c&#039;est-à-dire qu&#039;elle permet à un nombre important d&#039;utilisateur d&#039;&#039;&#039;&#039;interagir en même temps&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Cette table fonctionne avec un Mac Mini et 2 systèmes d&#039;exploitation : Mac OSX et Windows 7.&lt;br /&gt;
Les applications clientes peuvent être développées sur plusieurs technologies dont : &lt;br /&gt;
* Java (MT4j)&lt;br /&gt;
* Flash AS3 (TUIO library)&lt;br /&gt;
* Python (PyMT)&lt;br /&gt;
* etc&lt;br /&gt;
&lt;br /&gt;
La table est également équipée d&#039;un&#039;&#039;&#039; lecteur NFC&#039;&#039;&#039; type ACR122.&lt;br /&gt;
&lt;br /&gt;
Présentation commerciale du projet : [http://air.imag.fr/mediawiki/images/6/60/AIR_NFC_TableTop.pdf AIR_NFC_TableTop]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Les objectifs du projet sont&lt;br /&gt;
# de réaliser la partie matériel d&#039;un tabletop à faible coût&lt;br /&gt;
# d&#039;évaluer les canevas de développement d&#039;IHM multipoint (Flash/Java/C#/.NET/Windows7)&lt;br /&gt;
# de réaliser une application pour une table de restaurant (affichage des plats, commande, addition, enquête de satisfaction ...)&lt;br /&gt;
# d&#039;utiliser la technologie NFC ([[Near Field Communication]]) pour permettre aux utilisateurs de s&#039;identifier et payer via leur téléphone mobile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Table Tactile==&lt;br /&gt;
===Matériel===&lt;br /&gt;
* Table en verre IKEA (60&amp;quot;)&lt;br /&gt;
* Miroir&lt;br /&gt;
* Mac Mini&lt;br /&gt;
* Videoprojecteur short-throw&lt;br /&gt;
* Illuminateur IR&lt;br /&gt;
* Webcam PS3 modifiée (IR filter removed &amp;amp; visible light bandpass filter added)&lt;br /&gt;
* Lentille grand angle (m12/0.5mm mount, 1.8mm, angle of view = 170°)&lt;br /&gt;
* RFID Reader ([[ACS ACR 122]] RFID reader)&lt;br /&gt;
&lt;br /&gt;
[[File:TableTop_schema.jpg|center|upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
===Installation matérielle===&lt;br /&gt;
* La surface vitrée de la table est recouverte de papier calque afin de capter l&#039;image du vidéo projecteur.&lt;br /&gt;
* Le bord supérieur de la table est percé afin de pouvoir fixer un support pour le vidéo-projecteur.&lt;br /&gt;
* Un miroir est placé de telle sorte à renvoyer l&#039;image du vidéo-projecteur vers la surface vitrée&lt;br /&gt;
* Des lampes infrarouges sont placés à l&#039;intérieur de la table afin d&#039;illuminer la surface vitrée par en-dessous.&lt;br /&gt;
* La webcam est pointée vers la surface vitrée.&lt;br /&gt;
* Des plaques en bois sont découpées et placées autour de la table afin de la protéger des perturbations extérieures (lumière notamment).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Interieur_table.jpg| AIR NFC Tabletop 5&lt;br /&gt;
Image:TableTop 02.jpg|AIR NFC TableTop 1&lt;br /&gt;
Image:TableTop 05.jpg|AIR NFC TableTop 2&lt;br /&gt;
Image:TableTop 03.jpg|AIR NFC TableTop 3&lt;br /&gt;
Image:TableTop 06.jpg|AIR NFC TableTop 4&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installation logicielle===&lt;br /&gt;
* Construction des interfaces logicielles : [http://www.mt4j.org/mediawiki/index.php/Main_Page MT4j].&lt;br /&gt;
MT4j est un framework Java fournissant des briques logicielles de base et permettant de construire des interfaces riches.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:MT4j_MTSchell.jpg|MT4j - Multitouch Shell&lt;br /&gt;
Image:MT4j_WaterScene.png|MT4j - Water scene&lt;br /&gt;
Image:MT4j_Touchtail.jpg|MT4 - Dessin&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Tracker : CCV 1.4 (Community Core Vision) [http://ccv.nuigroup.com CCV]&lt;br /&gt;
Le tracker permet de l&#039;image filmée par la caméra en points de contacts exploitables par l&#039;ordinateur.&lt;br /&gt;
Plus précisément, le tracker récupère les coordonnées des points de contacts par synthèse d&#039;image, convertit ces coordonnées au format [http://www.tuio.org/?specification TUIO] et les envoie sur un socket de l&#039;ordinateur.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Test1.png|Community Core Vision&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Videos de demos===&lt;br /&gt;
* [http://www.youtube.com/watch?v=X1zus6saCcM Application Puzzle]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobl_test-application-fire-air-nfc-tabletop_tech  Test Application &amp;quot;Fire&amp;quot;]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobm_test-application-water-air-nfc-tabletop_tech  Test Application &amp;quot;Water&amp;quot;]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobr_test-application-paint-air-nfc-tabletop_tech  Test Application &amp;quot;Paint&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Module NFC ==&lt;br /&gt;
=== Communautée ===&lt;br /&gt;
Information sur la librairie open-source [http://www.libnfc.org/ libnfc]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/libnfc/downloads/list Téléchargement de la librairie libnfc]&lt;br /&gt;
&lt;br /&gt;
[http://www.libnfc.org/api Documentation sur l&#039;API]&lt;br /&gt;
&lt;br /&gt;
[http://www.libnfc.org/community Forum de la librairie]&lt;br /&gt;
&lt;br /&gt;
[http://sberfini.developpez.com/ Tutoriel sur l&#039;utilisation de NFC sur Androïd]&lt;br /&gt;
&lt;br /&gt;
=== Matériel===&lt;br /&gt;
* ACR122 NFC reader : [http://www.nfc-reader.com/acr122-drivers.php drivers sur nfc-reader.com] ou [http://acs.com.hk/index.php?pid=drivers&amp;amp;id=ACR122U]&lt;br /&gt;
&lt;br /&gt;
* Nokia 6131 NFC : [http://www.nokia.fr/support/support-produits/nokia-6131-nfc Support en ligne]&lt;br /&gt;
&lt;br /&gt;
=== Environnement Logiciel : Nokia 6131 NFC ===&lt;br /&gt;
[http://www.forum.nokia.com/info/sw.nokia.com/id/ef4e1bc9-d220-400c-a41d-b3d56349e984/Nokia_6131_NFC_SDK.html Nokia 6131 SDK]. Le SDK propose deux type d&#039;installation : sous forme d&#039;une plugin eclipse ou d&#039;un framework&lt;br /&gt;
&lt;br /&gt;
=== Environnement Logiciel : libnfc ===&lt;br /&gt;
Ce document est basé sur le fichier README-Windows.txt disponible dans l&#039;archive libnfc-1.4.2 [www.libnfc.org]&lt;br /&gt;
&lt;br /&gt;
====Prérequis====&lt;br /&gt;
Afin de pouvoir interagir avec l&#039;ACR122 les logiciels suivants doivent-être téléchargés:&lt;br /&gt;
* [http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm64-gcc-4.5.1.exe/download MinGW-w64 compiler toolchain] &lt;br /&gt;
* [http://sourceforge.net/projects/libusb-win32/ LibUsb-Win32 0.1.12.2]&lt;br /&gt;
* [http://www.cmake.org CMake 2.6 ]&lt;br /&gt;
* [http://code.google.com/p/libnfc/downloads/list libnfc]&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
Testée sous Windows XP/SP3 32 bit.&lt;br /&gt;
&lt;br /&gt;
* Installer MinGW .!!!Attention!!! La documentation officielle indique qu&#039;il faut sélectionner MinGW-w64 afin que MinGW puisse avoir accès aux librairie PCSC (Smart Card). &lt;br /&gt;
* Ajouter les répertoires suivant à votre PATH : c:\MinGW64\bin;c:\MinGW64\x86_64-w64-mingw32\lib32;c:\MinGW64\x86_64-w64-mingw32\include. pour ce faire :&lt;br /&gt;
- clic-droit sur le poste de travail/propriétés&lt;br /&gt;
- Dans l&#039;onglet avancé, cliquer sur Variables d&#039;environnements&lt;br /&gt;
- Modifier la variable PATH&lt;br /&gt;
* Décompresser l&#039;archive libusb-win32-bin dans c:\Program Files\LibUSB-Win32. C&#039;est dans ce répertoire que CMake cherchera LIBUSB lors de la compilation.&lt;br /&gt;
* Lire le libusb-win32-bin-README contenu dans le dossier bin afin de savoir où copier les deux fichiers .dll et .sys (dépend de votre architecture...)&lt;br /&gt;
* Installer CMake : Choisissez l&#039;option &amp;quot;Add Cmake to the system PATH&amp;quot; pendant l&#039;installation afin que CMake soi accessible depuis MinGW&lt;br /&gt;
* Extraire l&#039;archive libnfc archive versc:\NFC\libnfc-src&lt;br /&gt;
* Lancer un éditeur de texte et copier les instructions suivantes :&lt;br /&gt;
  cd c:\NFC\libnfc-build&lt;br /&gt;
  cmake -G &amp;quot;MinGW Makefiles&amp;quot; -DCMAKE_BUILD_TYPE=Release c:\NFC\libnfc-src&lt;br /&gt;
  mingw32-make&lt;br /&gt;
  cd ..&lt;br /&gt;
* Sauvegarder le fichier dans C:\NFC\make.bat&lt;br /&gt;
* Exécuter make.bat&lt;br /&gt;
* Copier le fichier c:\NFC\libnfc-build\libnfc\libnfc.dll vers c:\windows\system32&lt;br /&gt;
&lt;br /&gt;
===Créer son programme===&lt;br /&gt;
Il n&#039;est pas possible (à ma connaissance) de compiler directement un fichier utilisant la librairie nfc. &lt;br /&gt;
Pour compiler il faut éditer le fichier de configuration CMakeList.txt :&lt;br /&gt;
# Placer le fichier .c dans c:\NFC\libnfc-src\examples&lt;br /&gt;
# Editer examples\CMakeLists.txt et ajouter le nom du fichier .c dans la section SET &lt;br /&gt;
# Exécuter make.bat depuis c:\NFC\ &lt;br /&gt;
Le fichier exécutable se trouve dans libnfc-build\examples&lt;br /&gt;
&lt;br /&gt;
====Utiliser des librairies supplémentaires====&lt;br /&gt;
Prenons l&#039;exemple des sockets sous windows, afin de permettre la compilation d&#039;un programme les utilisant il faut (en plus de l&#039;inclusion de &amp;lt;winsock2.h&amp;gt;) utiliser la librairie ws2_32. Là encore il faudra éditer le fichier de configuration CMakeList.txt afin d&#039;expliciter les librairies à utiliser, de manière similaire à celle-ci:&lt;br /&gt;
    IF(WIN32)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme ws2_32)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme nfc)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme nfc-utils)&lt;br /&gt;
    ENDIF(WIN32)&lt;br /&gt;
Source complète : [[File:CMakeLists.txt]]&lt;br /&gt;
&lt;br /&gt;
== Blazeds ==&lt;br /&gt;
[http://opensource.adobe.com/wiki/display/blazeds/BlazeDS Blazeds] est un composant open source permettant d&#039;accéder à des objets distant via une application Flex. Pour son fonctionnement blazeds se base sur un serveur Tomcat côté client et côté serveur. &lt;br /&gt;
[http://www.adobe.com/devnet/livecycle/articles/blazeds_gettingstarted.html Getting start with Blazeds]&lt;br /&gt;
&lt;br /&gt;
== Liens externes ==&lt;br /&gt;
* (en) [http://www.nfc-forum.org/home/ NFC Forum]&lt;br /&gt;
* (en) [http://www.libnfc.org/ open source library for Near Field Communication (NFC)]&lt;br /&gt;
* (en) [http://nuigroup.com/ NUI Group(natural user interface group)]&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:MT4j_Touchtail.jpg&amp;diff=3147</id>
		<title>File:MT4j Touchtail.jpg</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:MT4j_Touchtail.jpg&amp;diff=3147"/>
		<updated>2011-10-07T13:40:29Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:MT4j_MTShell.jpg&amp;diff=3146</id>
		<title>File:MT4j MTShell.jpg</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:MT4j_MTShell.jpg&amp;diff=3146"/>
		<updated>2011-10-07T13:39:20Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:MT4j_WaterScene.png&amp;diff=3145</id>
		<title>File:MT4j WaterScene.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:MT4j_WaterScene.png&amp;diff=3145"/>
		<updated>2011-10-07T13:37:52Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Tabletop&amp;diff=3144</id>
		<title>Tabletop</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Tabletop&amp;diff=3144"/>
		<updated>2011-10-07T13:36:32Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Installation logicielle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Logo_AIR_TableTop.png|right|upright=0.5]]&lt;br /&gt;
* UE/Module: Projet innovant de RICM4 option CM&lt;br /&gt;
* Enseignant: Didier Donsez&lt;br /&gt;
* Elèves RICM 5: Christophe Havard (chef de projet) - havard.christophe@gmail.com, Renaud Collin - ren.collin@gmail.com, Sebastien Skorupski&lt;br /&gt;
* Intervenants externes : Elsa Neves ([http://fr.wikipedia.org/wiki/Institut_de_la_Communication_et_des_M%C3%A9dias ICM Grenoble])&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Le tabletop est une table &#039;&#039;&#039;tactile&#039;&#039;&#039; &#039;&#039;&#039;interactive&#039;&#039;&#039; d&#039;environ 60&amp;quot;. La technologie employée est dite &amp;quot;&#039;&#039;&#039;multipoint&#039;&#039;&#039;&amp;quot;, c&#039;est-à-dire qu&#039;elle permet à un nombre important d&#039;utilisateur d&#039;&#039;&#039;&#039;interagir en même temps&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Cette table fonctionne avec un Mac Mini et 2 systèmes d&#039;exploitation : Mac OSX et Windows 7.&lt;br /&gt;
Les applications clientes peuvent être développées sur plusieurs technologies dont : &lt;br /&gt;
* Java (MT4j)&lt;br /&gt;
* Flash AS3 (TUIO library)&lt;br /&gt;
* Python (PyMT)&lt;br /&gt;
* etc&lt;br /&gt;
&lt;br /&gt;
La table est également équipée d&#039;un lecteur NFC type ACR122.&lt;br /&gt;
&lt;br /&gt;
Présentation commerciale du projet : [http://air.imag.fr/mediawiki/images/6/60/AIR_NFC_TableTop.pdf AIR_NFC_TableTop]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Les objectifs du projet sont&lt;br /&gt;
# de réaliser la partie matériel d&#039;un tabletop à faible coût&lt;br /&gt;
# d&#039;évaluer les canevas de développement d&#039;IHM multipoint (Flash/Java/C#/.NET/Windows7)&lt;br /&gt;
# de réaliser une application pour une table de restaurant (affichage des plats, commande, addition, enquête de satisfaction ...)&lt;br /&gt;
# d&#039;utiliser la technologie NFC ([[Near Field Communication]]) pour permettre aux utilisateurs de s&#039;identifier et payer via leur téléphone mobile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Table Tactile==&lt;br /&gt;
===Matériel===&lt;br /&gt;
* Table en verre IKEA (60&amp;quot;)&lt;br /&gt;
* Miroir&lt;br /&gt;
* Mac Mini&lt;br /&gt;
* Videoprojecteur short-throw&lt;br /&gt;
* Illuminateur IR&lt;br /&gt;
* Webcam PS3 modifiée (IR filter removed &amp;amp; visible light bandpass filter added)&lt;br /&gt;
* Lentille grand angle (m12/0.5mm mount, 1.8mm, angle of view = 170°)&lt;br /&gt;
* RFID Reader ([[ACS ACR 122]] RFID reader)&lt;br /&gt;
&lt;br /&gt;
[[File:TableTop_schema.jpg|center|upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
===Installation matérielle===&lt;br /&gt;
- La surface vitrée de la table est recouverte de papier calque afin de capter l&#039;image du vidéo projecteur.&lt;br /&gt;
- Le bord supérieur de la table est percé afin de pouvoir fixer un support pour le vidéo-projecteur.&lt;br /&gt;
- Un miroir est placé de telle sorte à renvoyer l&#039;image du vidéo-projecteur vers la surface vitrée&lt;br /&gt;
- Des lampes infrarouges sont placés à l&#039;intérieur de la table afin de diffuser des ondes infrarouge vers la surface vitrée.&lt;br /&gt;
- La webcam est pointée vers la surface vitrée.&lt;br /&gt;
- Des plaques en bois sont découpées et placées autour de la table afin de la protéger des perturbations extérieures (lumière notamment).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Interieur_table.jpg| AIR NFC Tabletop 5&lt;br /&gt;
Image:TableTop 02.jpg|AIR NFC TableTop 1&lt;br /&gt;
Image:TableTop 05.jpg|AIR NFC TableTop 2&lt;br /&gt;
Image:TableTop 03.jpg|AIR NFC TableTop 3&lt;br /&gt;
Image:TableTop 06.jpg|AIR NFC TableTop 4&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installation logicielle===&lt;br /&gt;
* Construction des interfaces logicielles : [http://www.mt4j.org/mediawiki/index.php/Main_Page MT4j].&lt;br /&gt;
MT4j est un framework Java fournissant des briques logicielles de base permettant de construire des interfaces riches.&lt;br /&gt;
&lt;br /&gt;
* Tracker : CCV 1.4 (Community Core Vision) [http://ccv.nuigroup.com CCV]&lt;br /&gt;
Le tracker permet de l&#039;image filmée par la caméra en points de contacts exploitables par l&#039;ordinateur.&lt;br /&gt;
Plus précisément, le tracker récupère les coordonnées des points de contacts par synthèse d&#039;image, convertit ces coordonnées au format [http://www.tuio.org/?specification TUIO] et les envoie sur un socket de l&#039;ordinateur.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Test1.png|Community Core Vision&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Videos de demos===&lt;br /&gt;
* [http://www.youtube.com/watch?v=X1zus6saCcM Application Puzzle]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobl_test-application-fire-air-nfc-tabletop_tech  Test Application &amp;quot;Fire&amp;quot;]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobm_test-application-water-air-nfc-tabletop_tech  Test Application &amp;quot;Water&amp;quot;]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobr_test-application-paint-air-nfc-tabletop_tech  Test Application &amp;quot;Paint&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Module NFC ==&lt;br /&gt;
=== Communautée ===&lt;br /&gt;
Information sur la librairie open-source [http://www.libnfc.org/ libnfc]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/libnfc/downloads/list Téléchargement de la librairie libnfc]&lt;br /&gt;
&lt;br /&gt;
[http://www.libnfc.org/api Documentation sur l&#039;API]&lt;br /&gt;
&lt;br /&gt;
[http://www.libnfc.org/community Forum de la librairie]&lt;br /&gt;
&lt;br /&gt;
[http://sberfini.developpez.com/ Tutoriel sur l&#039;utilisation de NFC sur Androïd]&lt;br /&gt;
&lt;br /&gt;
=== Matériel===&lt;br /&gt;
* ACR122 NFC reader : [http://www.nfc-reader.com/acr122-drivers.php drivers sur nfc-reader.com] ou [http://acs.com.hk/index.php?pid=drivers&amp;amp;id=ACR122U]&lt;br /&gt;
&lt;br /&gt;
* Nokia 6131 NFC : [http://www.nokia.fr/support/support-produits/nokia-6131-nfc Support en ligne]&lt;br /&gt;
&lt;br /&gt;
=== Environnement Logiciel : Nokia 6131 NFC ===&lt;br /&gt;
[http://www.forum.nokia.com/info/sw.nokia.com/id/ef4e1bc9-d220-400c-a41d-b3d56349e984/Nokia_6131_NFC_SDK.html Nokia 6131 SDK]. Le SDK propose deux type d&#039;installation : sous forme d&#039;une plugin eclipse ou d&#039;un framework&lt;br /&gt;
&lt;br /&gt;
=== Environnement Logiciel : libnfc ===&lt;br /&gt;
Ce document est basé sur le fichier README-Windows.txt disponible dans l&#039;archive libnfc-1.4.2 [www.libnfc.org]&lt;br /&gt;
&lt;br /&gt;
====Prérequis====&lt;br /&gt;
Afin de pouvoir interagir avec l&#039;ACR122 les logiciels suivants doivent-être téléchargés:&lt;br /&gt;
* [http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm64-gcc-4.5.1.exe/download MinGW-w64 compiler toolchain] &lt;br /&gt;
* [http://sourceforge.net/projects/libusb-win32/ LibUsb-Win32 0.1.12.2]&lt;br /&gt;
* [http://www.cmake.org CMake 2.6 ]&lt;br /&gt;
* [http://code.google.com/p/libnfc/downloads/list libnfc]&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
Testée sous Windows XP/SP3 32 bit.&lt;br /&gt;
&lt;br /&gt;
* Installer MinGW .!!!Attention!!! La documentation officielle indique qu&#039;il faut sélectionner MinGW-w64 afin que MinGW puisse avoir accès aux librairie PCSC (Smart Card). &lt;br /&gt;
* Ajouter les répertoires suivant à votre PATH : c:\MinGW64\bin;c:\MinGW64\x86_64-w64-mingw32\lib32;c:\MinGW64\x86_64-w64-mingw32\include. pour ce faire :&lt;br /&gt;
- clic-droit sur le poste de travail/propriétés&lt;br /&gt;
- Dans l&#039;onglet avancé, cliquer sur Variables d&#039;environnements&lt;br /&gt;
- Modifier la variable PATH&lt;br /&gt;
* Décompresser l&#039;archive libusb-win32-bin dans c:\Program Files\LibUSB-Win32. C&#039;est dans ce répertoire que CMake cherchera LIBUSB lors de la compilation.&lt;br /&gt;
* Lire le libusb-win32-bin-README contenu dans le dossier bin afin de savoir où copier les deux fichiers .dll et .sys (dépend de votre architecture...)&lt;br /&gt;
* Installer CMake : Choisissez l&#039;option &amp;quot;Add Cmake to the system PATH&amp;quot; pendant l&#039;installation afin que CMake soi accessible depuis MinGW&lt;br /&gt;
* Extraire l&#039;archive libnfc archive versc:\NFC\libnfc-src&lt;br /&gt;
* Lancer un éditeur de texte et copier les instructions suivantes :&lt;br /&gt;
  cd c:\NFC\libnfc-build&lt;br /&gt;
  cmake -G &amp;quot;MinGW Makefiles&amp;quot; -DCMAKE_BUILD_TYPE=Release c:\NFC\libnfc-src&lt;br /&gt;
  mingw32-make&lt;br /&gt;
  cd ..&lt;br /&gt;
* Sauvegarder le fichier dans C:\NFC\make.bat&lt;br /&gt;
* Exécuter make.bat&lt;br /&gt;
* Copier le fichier c:\NFC\libnfc-build\libnfc\libnfc.dll vers c:\windows\system32&lt;br /&gt;
&lt;br /&gt;
===Créer son programme===&lt;br /&gt;
Il n&#039;est pas possible (à ma connaissance) de compiler directement un fichier utilisant la librairie nfc. &lt;br /&gt;
Pour compiler il faut éditer le fichier de configuration CMakeList.txt :&lt;br /&gt;
# Placer le fichier .c dans c:\NFC\libnfc-src\examples&lt;br /&gt;
# Editer examples\CMakeLists.txt et ajouter le nom du fichier .c dans la section SET &lt;br /&gt;
# Exécuter make.bat depuis c:\NFC\ &lt;br /&gt;
Le fichier exécutable se trouve dans libnfc-build\examples&lt;br /&gt;
&lt;br /&gt;
====Utiliser des librairies supplémentaires====&lt;br /&gt;
Prenons l&#039;exemple des sockets sous windows, afin de permettre la compilation d&#039;un programme les utilisant il faut (en plus de l&#039;inclusion de &amp;lt;winsock2.h&amp;gt;) utiliser la librairie ws2_32. Là encore il faudra éditer le fichier de configuration CMakeList.txt afin d&#039;expliciter les librairies à utiliser, de manière similaire à celle-ci:&lt;br /&gt;
    IF(WIN32)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme ws2_32)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme nfc)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme nfc-utils)&lt;br /&gt;
    ENDIF(WIN32)&lt;br /&gt;
Source complète : [[File:CMakeLists.txt]]&lt;br /&gt;
&lt;br /&gt;
== Blazeds ==&lt;br /&gt;
[http://opensource.adobe.com/wiki/display/blazeds/BlazeDS Blazeds] est un composant open source permettant d&#039;accéder à des objets distant via une application Flex. Pour son fonctionnement blazeds se base sur un serveur Tomcat côté client et côté serveur. &lt;br /&gt;
[http://www.adobe.com/devnet/livecycle/articles/blazeds_gettingstarted.html Getting start with Blazeds]&lt;br /&gt;
&lt;br /&gt;
== Liens externes ==&lt;br /&gt;
* (en) [http://www.nfc-forum.org/home/ NFC Forum]&lt;br /&gt;
* (en) [http://www.libnfc.org/ open source library for Near Field Communication (NFC)]&lt;br /&gt;
* (en) [http://nuigroup.com/ NUI Group(natural user interface group)]&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Main_Page&amp;diff=3143</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Main_Page&amp;diff=3143"/>
		<updated>2011-10-07T13:22:40Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* AIR @ Experimenta */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;big&amp;gt;   &#039;&#039;&#039;Welcome to the AIR (Ambient Intelligence Room) Wiki&#039;&#039;&#039;  &amp;lt;/big&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AIR @ Experimenta&amp;lt;/span&amp;gt;==&lt;br /&gt;
Retrouvez les projets présentés au salon &lt;br /&gt;
[http://www.rencontres-i.eu/2011/salon-experimenta Experimenta]&lt;br /&gt;
* une table interactive + NFC (60 pouces) http://air.imag.fr/mediawiki/index.php/Tabletop&lt;br /&gt;
* un canapé interactif http://air.imag.fr/mediawiki/index.php/ISofa&lt;br /&gt;
* une IHM pour ordinateur personnel ou très grandes surfaces utilisant la Kinect http://air.imag.fr/mediawiki/index.php/KiCTRL&lt;br /&gt;
&lt;br /&gt;
== Qu&#039;est ce que l&#039;AIR ==&lt;br /&gt;
&#039;&#039;AIR is Ambient Intelligence Room&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;intelligence ambiante (&#039;&#039;Ambient Intelligence : AmI&#039;&#039;).fait désormais partie du quotidien des usagers. Elle se retrouve dans tous les domaines d’activité : bâtiment intelligent avec maitrise de l’énergie et la maintenance, grille électrique intelligente (&#039;&#039;smart grid&#039;&#039;), santé avec l’hospitalisation à domicile, transport et chaine d’approvisionnement, sécurité publique et privée, culture et divertissement (&#039;&#039;infotainment&#039;&#039;) avec les &#039;&#039;serious games&#039;&#039;, ... Le développement d’applications AmI fait principalement appel à l’intégration de très nombreuses technologies, langages, patrons, modèles qui sont enseignées de manière séparée dans les cursus universitaires et des écoles d’ingénieur. L&#039;enseignement AmI met l&#039;accent sur le développement d&#039;applications pour une gamme variée d&#039;objets intelligents (du serveur IT au terminal 3G de l&#039;usager puis au capteur Zigbee/6LoWPAN enfoui). Cet enseignement ne peut se faire correctement que dans le cadre d&#039;expérimentation pratique au travers de projets de groupe d’étudiants et de travaux pratiques pour des domaines d&#039;applications variés. Les expérimentations peuvent à réaliser à échelle réduite dans des salles spécialisées. &lt;br /&gt;
&lt;br /&gt;
La salle AIR est une &#039;&#039;fablab&#039;&#039; ([http://fr.wikipedia.org/wiki/Fab_lab Factory Laboratory]) destinée aux élèves ingénieurs et étudiants grenoblois pour inventer et réaliser des projets d&#039;application d&#039;intelligence ambiante dans le cadre de leur formation.&lt;br /&gt;
Cette plateforme de l&#039;[[Université Joseph Fourier - Grenoble 1]] est hébergée dans le bâtiment de [[Polytech&#039;Grenoble]], ([http://maps.google.fr/maps?ll=45.184363,5.753096&amp;amp;spn=0.000829,0.002064&amp;amp;z=20 28, avenue Benoît Frachon, 38400 St-Martin-d’Hères], Arrêt [http://www.sedeplacer-tag.fr/Lignes/PLAN_D.pdf Tram D Maison Communale]).&lt;br /&gt;
&lt;br /&gt;
Contact: Olivier Richard, Didier Donsez (X.Y@imag.fr where X=Firstname and Y=Lastname)&lt;br /&gt;
&lt;br /&gt;
[[Image:LogoUJF.jpg|100px|Université Joseph Fourier - Grenoble 1]]  [[Image:LogoPG.png|200px|Polytech&#039;Grenoble]]&lt;br /&gt;
&lt;br /&gt;
== Nouvelles ==&lt;br /&gt;
* 04/10/11: Abonnez aux [https://twitter.com/#!/FablabAIR tweets de la fablab AIR]&lt;br /&gt;
* 26/09/11: Les RICM5 présentent des projets d&#039;année 4 au salon [http://www.rencontres-i.eu/2011/salon-experimenta/ Experimenta] du 5 au 8 Octobre 2011.&lt;br /&gt;
* 12/09/11: Cycle d&#039;initiation au &#039;&#039;Physical Computing&#039;&#039; des étduiants de TIS4 autour des [[Travaux_Pratiques_Arduino]].&lt;br /&gt;
* 06/09/11: ST Microelectronics donne 120 cartes [[STM32VL-Discovery|STM32L-Discovery]] comme cadeau de bienvenu aux RICM3, 3I3, E2I3 et TIS4 à la réunion d&#039;accueil. &lt;br /&gt;
* 02/09/11: [[Linux Install Party]] le 28 septembre 2011 à Polytech&#039;Grenoble&lt;br /&gt;
* 30/06/11: Présentation de la salle AIR et démonstrations autour du Physical Compute à la journée [http://www.inria.fr/centre-de-recherche-inria/grenoble-rhone-alpes/innovation/in-tech-intelligence-ambiante In&#039;tech Intelligence Ambiante] à l&#039;Inria Grenoble - Rhône-Alpes .&lt;br /&gt;
* 25/06/11: La page [[Travaux_Pratiques_ETIA | Travaux Pratiques ETIA]] est crée.&lt;br /&gt;
* 17/06/11: Jérémie Francone (RICM2009, doctorant au LIG) fait la démo de [http://www.youtube.com/watch?v=bBQQEcfkHoE Head Tracking for iPad: Glasses-Free 3D Display] déjà vue par 1,9 million de personnes.&lt;br /&gt;
* 17/06/11: [http://bit.ly/10emePromoRICM Polytech&#039;Grenoble fête sa 10ème promotion RICM]. &lt;br /&gt;
* 6 au 8/06/11: [[Stage_PEIP|Stages PEIP]] &amp;quot;Physical Computing&amp;quot; à Polytech&#039;Grenoble &lt;br /&gt;
* 21/04/11: [[NAO]] rend visite à Polytech&#039;Grenoble &lt;br /&gt;
* 07/04/11: [[SoutenanceRICM4-2011|Soutenances des projets innovants de RICM4]]&lt;br /&gt;
* 05/04/11: Lancement du concours [[STMicroelectronics Innovation Cup]]&lt;br /&gt;
* 29/03/11: Annonce du concours INRIA [http://www.inria.fr/actualite/actualites-de-l-inria/boost-your-code Boost your code]&lt;br /&gt;
* 15/03/11: Annonce du concours [http://www.st.com/internet/com/press_release/t3141.jsp &amp;quot;OpenWorld Design Contest&amp;quot; pour le développement d’applications destinées à promouvoir les technologies d’aide à la personne] date limite le 15 mai&lt;br /&gt;
* 08/03/11: [http://www.inria.fr/centre-de-recherche-inria/grenoble-rhone-alpes/agenda/seminaire-in-tech-mobilite-et-realite-augmentee-urbaine Séminaire IN&#039;Tech - Mobilité et Réalité Augmentée Urbaine, 7 avril 2011, INRIA Montbonnot] &lt;br /&gt;
* 23/02/11: l&#039;[http://www.univ-valenciennes.fr/congres/etia11 école d&#039;été CNRS ETIA (École Thématique: Intelligence Ambiante)] aura lieu à Lille du 4 au 8 juillet 2011 : RICM y sera&lt;br /&gt;
* 08/02/11: AIR a reçu deux visiteurs de l&#039;[http://www.atelier-arts-sciences.eu Atelier Arts-Sciences].&lt;br /&gt;
* 04/02/11: AIR est polyglote grace à [http://service.aximag.fr//xwiki/bin/view/imag/airimagfr AXiMAG]&lt;br /&gt;
* 27/01/11: Un groupe d&#039;élèves RICM4 soumet son projet au concours [http://www.imaginecup.com/ Microsoft Imagine Cup 2011].&lt;br /&gt;
* 15/01/11: Un groupe d&#039;élèves RICM5 soumet son projet au concours [[SCORE 2011]].&lt;br /&gt;
* 13/01/11: AIR recherche sponsors et donateurs de &#039;&#039;choses&#039;&#039;.&lt;br /&gt;
* 13/01/11: [[Vitrages_intelligents|Séminaire &#039;&#039;Verres intelligents&#039;&#039; de Francois-Julien VERMERSCH (Saint Gobain) à Polytech]]&lt;br /&gt;
* 12/01/11: AIR vient d&#039;ouvrir&lt;br /&gt;
* 12/01/11: Appel à volontaires : concours Logo, modélisation SketchUp, ...&lt;br /&gt;
&lt;br /&gt;
== Salle ==&lt;br /&gt;
* [[Liste des équipements disponibles]]&lt;br /&gt;
* [[Plan de la Salle]]&lt;br /&gt;
* [[Diaporama]]&lt;br /&gt;
&lt;br /&gt;
== Projets ==&lt;br /&gt;
* [[Usagers AIR]]&lt;br /&gt;
* [[Projets]]&lt;br /&gt;
* [[Projets 2011-2012]]&lt;br /&gt;
* &#039;&#039;&#039;[[Projets 2010-2011]]&#039;&#039;&#039;&lt;br /&gt;
* [[Projets 2009-2010]]&lt;br /&gt;
* [[Projets 2008-2009]]&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039;[http://service.aximag.fr//xwiki/bin/view/imag/airimagfr  Other languages]&#039;&#039;&#039;&lt;br /&gt;
* [[Contributions FOSS]]&lt;br /&gt;
* [[Challenges et Compétitions]]&lt;br /&gt;
* [[Ressources]]&lt;br /&gt;
* [[Conventions de Rédaction]]&lt;br /&gt;
* [[Licences]]&lt;br /&gt;
* [[Logo]]&lt;br /&gt;
||&lt;br /&gt;
* [[Prêt]]&lt;br /&gt;
* [[Boite à idées]]&lt;br /&gt;
* [http://twitter.com/#!/FablabAIR Twitter]&lt;br /&gt;
* Facebook&lt;br /&gt;
* [[Liens utiles]]&lt;br /&gt;
* [[Credo]]&lt;br /&gt;
* [[Séminaires]]&lt;br /&gt;
* [[Services Pro]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sponsors, Donateurs et Soutiens ==&lt;br /&gt;
Cette salle est parrainée par [http://tigoe.net Tom Igoe]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous remercions les sociétés suivantes qui nous ont donné des équipements&lt;br /&gt;
* [http://ardrone.parrot.com/parrot-ar-drone: Parrot SA] (ARDrones)&lt;br /&gt;
* [http://www.violet.net/ Violet] (Nabaztag)&lt;br /&gt;
* [http://www.st.com STMicroelectronics] (kits STM32, iNEMO, MUSA)&lt;br /&gt;
* Protoclix pour la XBox 360 Kinect (gagné lors de la Nuit de l&#039;Info 2010)&lt;br /&gt;
* [http://www.invacare.fr Invacare] (fauteuil roulant)&lt;br /&gt;
&lt;br /&gt;
Cette salle est soutenue par plusieurs enseignants-chercheurs des laboratoires de recherche grenoblois: [http://www.liglab.fr/ LIG], [http://www-ljk.imag.fr/ LJK], [http://tima.imag.fr TIMA], [http://www-timc.imag.fr/ TIMC], [http://www-verimag.imag.fr/?lang=fr VERIMAG], [http://www.inria.fr/centre-de-recherche-inria/grenoble-rhone-alpes INRIA].&lt;br /&gt;
&lt;br /&gt;
N&#039;hésitez à nous contacter si vous souhaitez nous donner des objets AmI neufs ou usagés. Nos élèves seront heureux de les mettre en oeuvre et en scène dans leurs réalisations AmI.&lt;br /&gt;
&lt;br /&gt;
== Galerie ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:tabletop1.jpg|table interactive multipoint&lt;br /&gt;
Image:tabletop2.jpg|table interactive multipoint&lt;br /&gt;
Image:tabletop3.jpg|table interactive multipoint&lt;br /&gt;
Image:isofa1.jpg|i-Sofa&lt;br /&gt;
Image:isofa2.jpg|i-Sofa&lt;br /&gt;
Image:touchkey.jpg|Concours NFC Forum 2010 TouchKey&lt;br /&gt;
Image:mrpri.jpg|Monsieur Prévention des Risques Industriels&lt;br /&gt;
Image:arduigrid-v0.0.jpg|Déballage de l&#039;ArduiGrid&lt;br /&gt;
Image:arduigrid-v0.1.jpg|Déballage de l&#039;ArduiGrid&lt;br /&gt;
Image:Arduinos.jpg|Assortiments de cartes de type &amp;quot;Arduino&amp;quot;&lt;br /&gt;
Image:armoire.jpg|Armoire Projets&lt;br /&gt;
Image:Planv0.png|Plan de la salle&lt;br /&gt;
Image:Kinect3.jpg|KiCTRL&lt;br /&gt;
Image:Kinect1.png|KiCTRL&lt;br /&gt;
Image:Kinect2.png|KiCTRL&lt;br /&gt;
Image:Kinect4.png|KiCTRL&lt;br /&gt;
Image:protoclix1-stm32.jpg|Protoclix sur STM32&lt;br /&gt;
Image:protoclix2-stm32.jpg|Protoclix sur STM32&lt;br /&gt;
Image:AmoWheelChair.png|Fauteuil AMO intelligent et communicant&lt;br /&gt;
Image:Sunspots2.jpg|Grille de SunSPOTs&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Tabletop&amp;diff=3123</id>
		<title>Tabletop</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Tabletop&amp;diff=3123"/>
		<updated>2011-10-04T10:22:45Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: /* Premières Démos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Logo_AIR_TableTop.png|right|upright=0.5]]&lt;br /&gt;
* UE/Module: Projet innovant de RICM4 option CM&lt;br /&gt;
* Enseignant: Didier Donsez&lt;br /&gt;
* Elèves RICM 5: Christophe Havard (chef de projet), Renaud Collin, Sebastien Skorupski&lt;br /&gt;
* Intervenants externes : Elsa Neves ([http://fr.wikipedia.org/wiki/Institut_de_la_Communication_et_des_M%C3%A9dias ICM Grenoble])&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Le tabletop est une table &#039;&#039;&#039;tactile&#039;&#039;&#039; &#039;&#039;&#039;interactive&#039;&#039;&#039; d&#039;environ 60&amp;quot;. La technologie employée est dite &amp;quot;&#039;&#039;&#039;multipoint&#039;&#039;&#039;&amp;quot;, c&#039;est-à-dire qu&#039;elle permet à un nombre important d&#039;utilisateur d&#039;&#039;&#039;&#039;interagir en même temps&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Cette table fonctionne avec un Mac Mini et 2 systèmes d&#039;exploitation : Mac OSX et Windows 7.&lt;br /&gt;
Les applications clientes peuvent être développées sur plusieurs technologies dont : &lt;br /&gt;
* Java (MT4j)&lt;br /&gt;
* Flash AS3 (TUIO library)&lt;br /&gt;
* Python (PyMT)&lt;br /&gt;
* etc&lt;br /&gt;
&lt;br /&gt;
La table est également équipée d&#039;un lecteur NFC type ACR122.&lt;br /&gt;
&lt;br /&gt;
Présentation commerciale du projet : [http://air.imag.fr/mediawiki/images/6/60/AIR_NFC_TableTop.pdf AIR_NFC_TableTop]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Les objectifs du projet sont&lt;br /&gt;
# de réaliser la partie matériel d&#039;un tabletop à faible coût&lt;br /&gt;
# d&#039;évaluer les canevas de développement d&#039;IHM multipoint (Flash/Java/C#/.NET/Windows7)&lt;br /&gt;
# de réaliser une application pour une table de restaurant (affichage des plats, commande, addition, enquête de satisfaction ...)&lt;br /&gt;
# d&#039;utiliser la technologie NFC ([[Near Field Communication]]) pour permettre aux utilisateurs de s&#039;identifier et payer via leur téléphone mobile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Table Tactile==&lt;br /&gt;
===Matériel===&lt;br /&gt;
* Table en verre IKEA (60&amp;quot;)&lt;br /&gt;
* Miroir&lt;br /&gt;
* Mac Mini&lt;br /&gt;
* Videoprojecteur short-throw&lt;br /&gt;
* Illuminateur IR&lt;br /&gt;
* Webcam PS3 modifiée (IR filter removed &amp;amp; visible light bandpass filter added)&lt;br /&gt;
* Lentille grand angle (m12/0.5mm mount, 1.8mm, angle of view = 170°)&lt;br /&gt;
* RFID Reader ([[ACS ACR 122]] RFID reader)&lt;br /&gt;
&lt;br /&gt;
[[File:TableTop_schema.jpg|center|upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
===Installation matérielle===&lt;br /&gt;
- La surface vitrée de la table est recouverte de papier calque afin de capter l&#039;image du vidéo projecteur.&lt;br /&gt;
- Le bord supérieur de la table est percé afin de pouvoir fixer un support pour le vidéo-projecteur.&lt;br /&gt;
- Un miroir est placé de telle sorte à renvoyer l&#039;image du vidéo-projecteur vers la surface vitrée&lt;br /&gt;
- Des lampes infrarouges sont placés à l&#039;intérieur de la table afin de diffuser des ondes infrarouge vers la surface vitrée.&lt;br /&gt;
- La webcam est pointée vers la surface vitrée.&lt;br /&gt;
- Des plaques en bois sont découpées et placées autour de la table afin de la protéger des perturbations extérieures (lumière notamment).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Interieur_table.jpg| AIR NFC Tabletop 5&lt;br /&gt;
Image:TableTop 02.jpg|AIR NFC TableTop 1&lt;br /&gt;
Image:TableTop 05.jpg|AIR NFC TableTop 2&lt;br /&gt;
Image:TableTop 03.jpg|AIR NFC TableTop 3&lt;br /&gt;
Image:TableTop 06.jpg|AIR NFC TableTop 4&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installation logicielle===&lt;br /&gt;
* Tracker : CCV 1.4 (Community Core Vision) [http://ccv.nuigroup.com CCV]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Test1.png|Community Core Vision&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Videos de demos===&lt;br /&gt;
* [http://www.youtube.com/watch?v=X1zus6saCcM Application Puzzle]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobl_test-application-fire-air-nfc-tabletop_tech  Test Application &amp;quot;Fire&amp;quot;]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobm_test-application-water-air-nfc-tabletop_tech  Test Application &amp;quot;Water&amp;quot;]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobr_test-application-paint-air-nfc-tabletop_tech  Test Application &amp;quot;Paint&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Module NFC ==&lt;br /&gt;
=== Communautée ===&lt;br /&gt;
Information sur la librairie open-source [http://www.libnfc.org/ libnfc]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/libnfc/downloads/list Téléchargement de la librairie libnfc]&lt;br /&gt;
&lt;br /&gt;
[http://www.libnfc.org/api Documentation sur l&#039;API]&lt;br /&gt;
&lt;br /&gt;
[http://www.libnfc.org/community Forum de la librairie]&lt;br /&gt;
&lt;br /&gt;
[http://sberfini.developpez.com/ Tutoriel sur l&#039;utilisation de NFC sur Androïd]&lt;br /&gt;
&lt;br /&gt;
=== Matériel===&lt;br /&gt;
* ACR122 NFC reader : [http://www.nfc-reader.com/acr122-drivers.php drivers sur nfc-reader.com] ou [http://acs.com.hk/index.php?pid=drivers&amp;amp;id=ACR122U]&lt;br /&gt;
&lt;br /&gt;
* Nokia 6131 NFC : [http://www.nokia.fr/support/support-produits/nokia-6131-nfc Support en ligne]&lt;br /&gt;
&lt;br /&gt;
=== Environnement Logiciel : Nokia 6131 NFC ===&lt;br /&gt;
[http://www.forum.nokia.com/info/sw.nokia.com/id/ef4e1bc9-d220-400c-a41d-b3d56349e984/Nokia_6131_NFC_SDK.html Nokia 6131 SDK]. Le SDK propose deux type d&#039;installation : sous forme d&#039;une plugin eclipse ou d&#039;un framework&lt;br /&gt;
&lt;br /&gt;
=== Environnement Logiciel : libnfc ===&lt;br /&gt;
Ce document est basé sur le fichier README-Windows.txt disponible dans l&#039;archive libnfc-1.4.2 [www.libnfc.org]&lt;br /&gt;
&lt;br /&gt;
====Prérequis====&lt;br /&gt;
Afin de pouvoir interagir avec l&#039;ACR122 les logiciels suivants doivent-être téléchargés:&lt;br /&gt;
* [http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm64-gcc-4.5.1.exe/download MinGW-w64 compiler toolchain] &lt;br /&gt;
* [http://sourceforge.net/projects/libusb-win32/ LibUsb-Win32 0.1.12.2]&lt;br /&gt;
* [http://www.cmake.org CMake 2.6 ]&lt;br /&gt;
* [http://code.google.com/p/libnfc/downloads/list libnfc]&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
Testée sous Windows XP/SP3 32 bit.&lt;br /&gt;
&lt;br /&gt;
* Installer MinGW .!!!Attention!!! La documentation officielle indique qu&#039;il faut sélectionner MinGW-w64 afin que MinGW puisse avoir accès aux librairie PCSC (Smart Card). &lt;br /&gt;
* Ajouter les répertoires suivant à votre PATH : c:\MinGW64\bin;c:\MinGW64\x86_64-w64-mingw32\lib32;c:\MinGW64\x86_64-w64-mingw32\include. pour ce faire :&lt;br /&gt;
- clic-droit sur le poste de travail/propriétés&lt;br /&gt;
- Dans l&#039;onglet avancé, cliquer sur Variables d&#039;environnements&lt;br /&gt;
- Modifier la variable PATH&lt;br /&gt;
* Décompresser l&#039;archive libusb-win32-bin dans c:\Program Files\LibUSB-Win32. C&#039;est dans ce répertoire que CMake cherchera LIBUSB lors de la compilation.&lt;br /&gt;
* Lire le libusb-win32-bin-README contenu dans le dossier bin afin de savoir où copier les deux fichiers .dll et .sys (dépend de votre architecture...)&lt;br /&gt;
* Installer CMake : Choisissez l&#039;option &amp;quot;Add Cmake to the system PATH&amp;quot; pendant l&#039;installation afin que CMake soi accessible depuis MinGW&lt;br /&gt;
* Extraire l&#039;archive libnfc archive versc:\NFC\libnfc-src&lt;br /&gt;
* Lancer un éditeur de texte et copier les instructions suivantes :&lt;br /&gt;
  cd c:\NFC\libnfc-build&lt;br /&gt;
  cmake -G &amp;quot;MinGW Makefiles&amp;quot; -DCMAKE_BUILD_TYPE=Release c:\NFC\libnfc-src&lt;br /&gt;
  mingw32-make&lt;br /&gt;
  cd ..&lt;br /&gt;
* Sauvegarder le fichier dans C:\NFC\make.bat&lt;br /&gt;
* Exécuter make.bat&lt;br /&gt;
* Copier le fichier c:\NFC\libnfc-build\libnfc\libnfc.dll vers c:\windows\system32&lt;br /&gt;
&lt;br /&gt;
===Créer son programme===&lt;br /&gt;
Il n&#039;est pas possible (à ma connaissance) de compiler directement un fichier utilisant la librairie nfc. &lt;br /&gt;
Pour compiler il faut éditer le fichier de configuration CMakeList.txt :&lt;br /&gt;
# Placer le fichier .c dans c:\NFC\libnfc-src\examples&lt;br /&gt;
# Editer examples\CMakeLists.txt et ajouter le nom du fichier .c dans la section SET &lt;br /&gt;
# Exécuter make.bat depuis c:\NFC\ &lt;br /&gt;
Le fichier exécutable se trouve dans libnfc-build\examples&lt;br /&gt;
&lt;br /&gt;
====Utiliser des librairies supplémentaires====&lt;br /&gt;
Prenons l&#039;exemple des sockets sous windows, afin de permettre la compilation d&#039;un programme les utilisant il faut (en plus de l&#039;inclusion de &amp;lt;winsock2.h&amp;gt;) utiliser la librairie ws2_32. Là encore il faudra éditer le fichier de configuration CMakeList.txt afin d&#039;expliciter les librairies à utiliser, de manière similaire à celle-ci:&lt;br /&gt;
    IF(WIN32)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme ws2_32)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme nfc)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme nfc-utils)&lt;br /&gt;
    ENDIF(WIN32)&lt;br /&gt;
Source complète : [[File:CMakeLists.txt]]&lt;br /&gt;
&lt;br /&gt;
== Blazeds ==&lt;br /&gt;
[http://opensource.adobe.com/wiki/display/blazeds/BlazeDS Blazeds] est un composant open source permettant d&#039;accéder à des objets distant via une application Flex. Pour son fonctionnement blazeds se base sur un serveur Tomcat côté client et côté serveur. &lt;br /&gt;
[http://www.adobe.com/devnet/livecycle/articles/blazeds_gettingstarted.html Getting start with Blazeds]&lt;br /&gt;
&lt;br /&gt;
== Liens externes ==&lt;br /&gt;
* (en) [http://www.nfc-forum.org/home/ NFC Forum]&lt;br /&gt;
* (en) [http://www.libnfc.org/ open source library for Near Field Communication (NFC)]&lt;br /&gt;
* (en) [http://nuigroup.com/ NUI Group(natural user interface group)]&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Tabletop&amp;diff=3122</id>
		<title>Tabletop</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Tabletop&amp;diff=3122"/>
		<updated>2011-10-04T10:21:45Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Logo_AIR_TableTop.png|right|upright=0.5]]&lt;br /&gt;
* UE/Module: Projet innovant de RICM4 option CM&lt;br /&gt;
* Enseignant: Didier Donsez&lt;br /&gt;
* Elèves RICM 5: Christophe Havard (chef de projet), Renaud Collin, Sebastien Skorupski&lt;br /&gt;
* Intervenants externes : Elsa Neves ([http://fr.wikipedia.org/wiki/Institut_de_la_Communication_et_des_M%C3%A9dias ICM Grenoble])&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Le tabletop est une table &#039;&#039;&#039;tactile&#039;&#039;&#039; &#039;&#039;&#039;interactive&#039;&#039;&#039; d&#039;environ 60&amp;quot;. La technologie employée est dite &amp;quot;&#039;&#039;&#039;multipoint&#039;&#039;&#039;&amp;quot;, c&#039;est-à-dire qu&#039;elle permet à un nombre important d&#039;utilisateur d&#039;&#039;&#039;&#039;interagir en même temps&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Cette table fonctionne avec un Mac Mini et 2 systèmes d&#039;exploitation : Mac OSX et Windows 7.&lt;br /&gt;
Les applications clientes peuvent être développées sur plusieurs technologies dont : &lt;br /&gt;
* Java (MT4j)&lt;br /&gt;
* Flash AS3 (TUIO library)&lt;br /&gt;
* Python (PyMT)&lt;br /&gt;
* etc&lt;br /&gt;
&lt;br /&gt;
La table est également équipée d&#039;un lecteur NFC type ACR122.&lt;br /&gt;
&lt;br /&gt;
Présentation commerciale du projet : [http://air.imag.fr/mediawiki/images/6/60/AIR_NFC_TableTop.pdf AIR_NFC_TableTop]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Les objectifs du projet sont&lt;br /&gt;
# de réaliser la partie matériel d&#039;un tabletop à faible coût&lt;br /&gt;
# d&#039;évaluer les canevas de développement d&#039;IHM multipoint (Flash/Java/C#/.NET/Windows7)&lt;br /&gt;
# de réaliser une application pour une table de restaurant (affichage des plats, commande, addition, enquête de satisfaction ...)&lt;br /&gt;
# d&#039;utiliser la technologie NFC ([[Near Field Communication]]) pour permettre aux utilisateurs de s&#039;identifier et payer via leur téléphone mobile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Table Tactile==&lt;br /&gt;
===Matériel===&lt;br /&gt;
* Table en verre IKEA (60&amp;quot;)&lt;br /&gt;
* Miroir&lt;br /&gt;
* Mac Mini&lt;br /&gt;
* Videoprojecteur short-throw&lt;br /&gt;
* Illuminateur IR&lt;br /&gt;
* Webcam PS3 modifiée (IR filter removed &amp;amp; visible light bandpass filter added)&lt;br /&gt;
* Lentille grand angle (m12/0.5mm mount, 1.8mm, angle of view = 170°)&lt;br /&gt;
* RFID Reader ([[ACS ACR 122]] RFID reader)&lt;br /&gt;
&lt;br /&gt;
[[File:TableTop_schema.jpg|center|upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
===Installation matérielle===&lt;br /&gt;
- La surface vitrée de la table est recouverte de papier calque afin de capter l&#039;image du vidéo projecteur.&lt;br /&gt;
- Le bord supérieur de la table est percé afin de pouvoir fixer un support pour le vidéo-projecteur.&lt;br /&gt;
- Un miroir est placé de telle sorte à renvoyer l&#039;image du vidéo-projecteur vers la surface vitrée&lt;br /&gt;
- Des lampes infrarouges sont placés à l&#039;intérieur de la table afin de diffuser des ondes infrarouge vers la surface vitrée.&lt;br /&gt;
- La webcam est pointée vers la surface vitrée.&lt;br /&gt;
- Des plaques en bois sont découpées et placées autour de la table afin de la protéger des perturbations extérieures (lumière notamment).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Interieur_table.jpg| AIR NFC Tabletop 5&lt;br /&gt;
Image:TableTop 02.jpg|AIR NFC TableTop 1&lt;br /&gt;
Image:TableTop 05.jpg|AIR NFC TableTop 2&lt;br /&gt;
Image:TableTop 03.jpg|AIR NFC TableTop 3&lt;br /&gt;
Image:TableTop 06.jpg|AIR NFC TableTop 4&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installation logicielle===&lt;br /&gt;
* Tracker : CCV 1.4 (Community Core Vision) [http://ccv.nuigroup.com CCV]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Test1.png|Community Core Vision&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Premières Démos===&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobl_test-application-fire-air-nfc-tabletop_tech  Test Application &amp;quot;Fire&amp;quot;]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobm_test-application-water-air-nfc-tabletop_tech  Test Application &amp;quot;Water&amp;quot;]&lt;br /&gt;
* [http://www.dailymotion.com/video/xgpobr_test-application-paint-air-nfc-tabletop_tech  Test Application &amp;quot;Paint&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Module NFC ==&lt;br /&gt;
=== Communautée ===&lt;br /&gt;
Information sur la librairie open-source [http://www.libnfc.org/ libnfc]&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/libnfc/downloads/list Téléchargement de la librairie libnfc]&lt;br /&gt;
&lt;br /&gt;
[http://www.libnfc.org/api Documentation sur l&#039;API]&lt;br /&gt;
&lt;br /&gt;
[http://www.libnfc.org/community Forum de la librairie]&lt;br /&gt;
&lt;br /&gt;
[http://sberfini.developpez.com/ Tutoriel sur l&#039;utilisation de NFC sur Androïd]&lt;br /&gt;
&lt;br /&gt;
=== Matériel===&lt;br /&gt;
* ACR122 NFC reader : [http://www.nfc-reader.com/acr122-drivers.php drivers sur nfc-reader.com] ou [http://acs.com.hk/index.php?pid=drivers&amp;amp;id=ACR122U]&lt;br /&gt;
&lt;br /&gt;
* Nokia 6131 NFC : [http://www.nokia.fr/support/support-produits/nokia-6131-nfc Support en ligne]&lt;br /&gt;
&lt;br /&gt;
=== Environnement Logiciel : Nokia 6131 NFC ===&lt;br /&gt;
[http://www.forum.nokia.com/info/sw.nokia.com/id/ef4e1bc9-d220-400c-a41d-b3d56349e984/Nokia_6131_NFC_SDK.html Nokia 6131 SDK]. Le SDK propose deux type d&#039;installation : sous forme d&#039;une plugin eclipse ou d&#039;un framework&lt;br /&gt;
&lt;br /&gt;
=== Environnement Logiciel : libnfc ===&lt;br /&gt;
Ce document est basé sur le fichier README-Windows.txt disponible dans l&#039;archive libnfc-1.4.2 [www.libnfc.org]&lt;br /&gt;
&lt;br /&gt;
====Prérequis====&lt;br /&gt;
Afin de pouvoir interagir avec l&#039;ACR122 les logiciels suivants doivent-être téléchargés:&lt;br /&gt;
* [http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm64-gcc-4.5.1.exe/download MinGW-w64 compiler toolchain] &lt;br /&gt;
* [http://sourceforge.net/projects/libusb-win32/ LibUsb-Win32 0.1.12.2]&lt;br /&gt;
* [http://www.cmake.org CMake 2.6 ]&lt;br /&gt;
* [http://code.google.com/p/libnfc/downloads/list libnfc]&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
Testée sous Windows XP/SP3 32 bit.&lt;br /&gt;
&lt;br /&gt;
* Installer MinGW .!!!Attention!!! La documentation officielle indique qu&#039;il faut sélectionner MinGW-w64 afin que MinGW puisse avoir accès aux librairie PCSC (Smart Card). &lt;br /&gt;
* Ajouter les répertoires suivant à votre PATH : c:\MinGW64\bin;c:\MinGW64\x86_64-w64-mingw32\lib32;c:\MinGW64\x86_64-w64-mingw32\include. pour ce faire :&lt;br /&gt;
- clic-droit sur le poste de travail/propriétés&lt;br /&gt;
- Dans l&#039;onglet avancé, cliquer sur Variables d&#039;environnements&lt;br /&gt;
- Modifier la variable PATH&lt;br /&gt;
* Décompresser l&#039;archive libusb-win32-bin dans c:\Program Files\LibUSB-Win32. C&#039;est dans ce répertoire que CMake cherchera LIBUSB lors de la compilation.&lt;br /&gt;
* Lire le libusb-win32-bin-README contenu dans le dossier bin afin de savoir où copier les deux fichiers .dll et .sys (dépend de votre architecture...)&lt;br /&gt;
* Installer CMake : Choisissez l&#039;option &amp;quot;Add Cmake to the system PATH&amp;quot; pendant l&#039;installation afin que CMake soi accessible depuis MinGW&lt;br /&gt;
* Extraire l&#039;archive libnfc archive versc:\NFC\libnfc-src&lt;br /&gt;
* Lancer un éditeur de texte et copier les instructions suivantes :&lt;br /&gt;
  cd c:\NFC\libnfc-build&lt;br /&gt;
  cmake -G &amp;quot;MinGW Makefiles&amp;quot; -DCMAKE_BUILD_TYPE=Release c:\NFC\libnfc-src&lt;br /&gt;
  mingw32-make&lt;br /&gt;
  cd ..&lt;br /&gt;
* Sauvegarder le fichier dans C:\NFC\make.bat&lt;br /&gt;
* Exécuter make.bat&lt;br /&gt;
* Copier le fichier c:\NFC\libnfc-build\libnfc\libnfc.dll vers c:\windows\system32&lt;br /&gt;
&lt;br /&gt;
===Créer son programme===&lt;br /&gt;
Il n&#039;est pas possible (à ma connaissance) de compiler directement un fichier utilisant la librairie nfc. &lt;br /&gt;
Pour compiler il faut éditer le fichier de configuration CMakeList.txt :&lt;br /&gt;
# Placer le fichier .c dans c:\NFC\libnfc-src\examples&lt;br /&gt;
# Editer examples\CMakeLists.txt et ajouter le nom du fichier .c dans la section SET &lt;br /&gt;
# Exécuter make.bat depuis c:\NFC\ &lt;br /&gt;
Le fichier exécutable se trouve dans libnfc-build\examples&lt;br /&gt;
&lt;br /&gt;
====Utiliser des librairies supplémentaires====&lt;br /&gt;
Prenons l&#039;exemple des sockets sous windows, afin de permettre la compilation d&#039;un programme les utilisant il faut (en plus de l&#039;inclusion de &amp;lt;winsock2.h&amp;gt;) utiliser la librairie ws2_32. Là encore il faudra éditer le fichier de configuration CMakeList.txt afin d&#039;expliciter les librairies à utiliser, de manière similaire à celle-ci:&lt;br /&gt;
    IF(WIN32)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme ws2_32)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme nfc)&lt;br /&gt;
        TARGET_LINK_LIBRARIES(monProgramme nfc-utils)&lt;br /&gt;
    ENDIF(WIN32)&lt;br /&gt;
Source complète : [[File:CMakeLists.txt]]&lt;br /&gt;
&lt;br /&gt;
== Blazeds ==&lt;br /&gt;
[http://opensource.adobe.com/wiki/display/blazeds/BlazeDS Blazeds] est un composant open source permettant d&#039;accéder à des objets distant via une application Flex. Pour son fonctionnement blazeds se base sur un serveur Tomcat côté client et côté serveur. &lt;br /&gt;
[http://www.adobe.com/devnet/livecycle/articles/blazeds_gettingstarted.html Getting start with Blazeds]&lt;br /&gt;
&lt;br /&gt;
== Liens externes ==&lt;br /&gt;
* (en) [http://www.nfc-forum.org/home/ NFC Forum]&lt;br /&gt;
* (en) [http://www.libnfc.org/ open source library for Near Field Communication (NFC)]&lt;br /&gt;
* (en) [http://nuigroup.com/ NUI Group(natural user interface group)]&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Interieur_table.jpg&amp;diff=3121</id>
		<title>File:Interieur table.jpg</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Interieur_table.jpg&amp;diff=3121"/>
		<updated>2011-10-04T10:16:54Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Table_sans_calque.jpg&amp;diff=3120</id>
		<title>File:Table sans calque.jpg</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Table_sans_calque.jpg&amp;diff=3120"/>
		<updated>2011-10-04T10:14:03Z</updated>

		<summary type="html">&lt;p&gt;ChristopheH: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ChristopheH</name></author>
	</entry>
</feed>