<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://peip-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aroussel</id>
		<title>Wiki de bureau d'études PeiP - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://peip-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aroussel"/>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php/Sp%C3%A9cial:Contributions/Aroussel"/>
		<updated>2026-09-20T14:56:34Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=12652</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=12652"/>
				<updated>2020-05-21T16:19:44Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Introduction &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Partie Réflexion &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Composants &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire faible capacité (64Mb) avec l'AT45DB641E-SHN2B-T ou une grande capacité mais plus difficile à souder (128Gb) avec l'MT29F128G8&lt;br /&gt;
&lt;br /&gt;
TUSB4041I Four-Port USB 2.0 Hub&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Test ReX 15/03/2020 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Test ReX 15/03/2020&lt;br /&gt;
Après quelques soudures le programme suivant passe sur l'ATtiny84 :&lt;br /&gt;
&lt;br /&gt;
 #define MAX_LED 7&lt;br /&gt;
 int leds[]={0,1,2,3,4,5,6};&lt;br /&gt;
 void setup() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) pinMode(leds[i], OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 void loop() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], HIGH);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], LOW);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Démonstration de l'exécution : [[media:binome2019-9-test1.mp4]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Projet Intermédiaire: Le dé électronique &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a permis de prendre en main le logiciel Fritzing et Arduino IDE, ce qui nous sera utile par la suite pour la conception de la clé USB.&lt;br /&gt;
&lt;br /&gt;
Tout d'abord nous avons élaboré les plans de notre dé en vue schématique, ce qui nous permet d'y voir plus clair et de mieux comprendre notre carte. &lt;br /&gt;
Après avoir effectué notre schématique (schéma1), celui-ci est indispensable car dès que l'on se retrouve avec beaucoup de composant, on s'y perd facilement, l'erreur est donc plus facilement détectable et il est conseiller d'utiliser des label pour facilité la compréhension.&lt;br /&gt;
&lt;br /&gt;
 Le schéma finit, il faut maintenant agencer les composants de sorte qu'aucunes pistes ne se croisent sur notre circuit imprimé (schéma 2).&lt;br /&gt;
&lt;br /&gt;
Voici une photo de la vue schématique et du circuit imprimé&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:schéma1_de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier:schéma 2 de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier:schéma 3 de.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par la suite nos avons soudé sur notre circuit les 7 leds et 7 résistances, un travail minutieux et assez compliqué, surtout pour les premières soudures.&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a coder notre microcontroleur, pour ce faire on utilise l'Arduino IDE.&lt;br /&gt;
Le code ci-dessous va nous permettre d'afficher un nombre aléatoire entre 1 et 6.&lt;br /&gt;
Lorsque l'on va venir presser le bouton, un roulement de tambour va s'effectuer en affichant aléatoirement des chiffres à la suite et pour finir le nombre aléatoire choisi va se figer.&lt;br /&gt;
&lt;br /&gt;
Voici le code:&lt;br /&gt;
//========FONCTIONS PERSONALISEES - Il s'agit de fonctions créées sur mesure pour nos besoins&lt;br /&gt;
&lt;br /&gt;
void toutEteindre() { //Cette fonction permet d'éteindre toutes les leds. Elle est de type &amp;quot;void&amp;quot; car elle ne revoit aucune valeur: elle se content d'exécuter les instructions.&lt;br /&gt;
  digitalWrite(0, LOW); //Eteindre la led 1&lt;br /&gt;
  digitalWrite(1, LOW); //Eteindre la led 2&lt;br /&gt;
  digitalWrite(2, LOW); //Eteindre la led 3&lt;br /&gt;
  digitalWrite(3, LOW); //Eteindre la led 4&lt;br /&gt;
  digitalWrite(4, LOW); //Eteindre la led 5&lt;br /&gt;
  digitalWrite(5, LOW); //Eteindre la led 6&lt;br /&gt;
  digitalWrite(6, LOW); //Eteindre la led 7&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void afficher(int nb) { //Cette fonction permet d'allumer les bonnes leds en fonction du nombre choisi.&lt;br /&gt;
  //Elle prend en paramètre le nombre que l'on veut afficher.&lt;br /&gt;
  switch (nb) { //C'est pareil qu'un if sauf que le if prend que des valeurs booléennes&lt;br /&gt;
    case 1: &lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break; &lt;br /&gt;
    case 2: &lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 6:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(2, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(5, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int chercher() {  &lt;br /&gt;
  return random(1, 7);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//=================================================&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(0, OUTPUT); &lt;br /&gt;
  pinMode(1, OUTPUT);&lt;br /&gt;
  pinMode(2, OUTPUT);&lt;br /&gt;
  pinMode(3, OUTPUT);&lt;br /&gt;
  pinMode(4, OUTPUT);&lt;br /&gt;
  pinMode(5, OUTPUT);&lt;br /&gt;
  pinMode(6, OUTPUT);&lt;br /&gt;
  pinMode(9,INPUT_PULLUP);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (digitalRead(9) ==   LOW) { &lt;br /&gt;
 &lt;br /&gt;
    for (int i = 1; i &amp;lt;= random(8, 15); i++) { // On fait defiler plusieurs nombre pour le suspens&lt;br /&gt;
      afficher(chercher()); &lt;br /&gt;
      delay(200); &lt;br /&gt;
      toutEteindre(); &lt;br /&gt;
    }&lt;br /&gt;
    afficher(chercher()); //On affiche le &amp;quot;vrai&amp;quot; chiffre.&lt;br /&gt;
    delay(3000); &lt;br /&gt;
    toutEteindre(); &lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le résultat final en vidéo et quelques photos de notre circuit imprimé final: [[Fichier: 20200328_165241.mp4|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Photo1 de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier: photo2 de.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
voici le Fritzing de notre dé: [[File:Circuit_de_1.zip]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Clé USB &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Afin de concevoir notre clé usb nous sommes avons choisi comme base de travail cette clé usb: [[File:cle_usb_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour l'amélioration de notre clé usb nous avons décider de faire un vu mètre avec des leds. Apres avoir discuté de cela avec nos professeurs ce qui nous a été conseillé est un registre à décalage.&lt;br /&gt;
&lt;br /&gt;
--description du fonctionnement à faire--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Principe du registre à décalage :&lt;br /&gt;
Pour notre clé, on utilise un registre à décalage 75HC595 (8 bits). Il permet de convertir une information série en parallèle. Mais on l'utilise aussi pour économiser le nombre de broche utilisée en sortie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Les différentes étapes sont : -1- On place la valeur sur la broche DS&lt;br /&gt;
                               -2- La broche SH_CP est mise à 1 (la valeur de la broche DS avance donc dans le registre)&lt;br /&gt;
                               -3- Remise à 0 de la broche SH_CP (on place la valeur du bit suivant sur la broche DS)&lt;br /&gt;
                               -4- La broche SH_CP est mise à nouveau à 1&lt;br /&gt;
                               -5- Les étapes 3 / 4 sont répétées autant de fois que nécessaire pour remplir le registre&lt;br /&gt;
                               -6- La broche ST_CP est mise à 1 (les valeurs présentent dans le registre sont copiées &lt;br /&gt;
                                   sur les sortie Qn)&lt;br /&gt;
&lt;br /&gt;
Comme on peut le voir, il y a 2 grandes phases : La première on place les données que l'on veut, la deuxième est la validation des données.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici notre registre à décalage: [[Fichier:Registre a decalage.png|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant réussir à faire fonctionner tout ça via un code&lt;br /&gt;
Voici un début de code permettant de faire fonctionner ce registre à décalage :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    int DS_pin = 8;   // broche de donnée&lt;br /&gt;
    int STCP_pin = 9; // broche de validation de la donnée&lt;br /&gt;
    int SHCP_pin = 10; // broche de validation compléte (latch)&lt;br /&gt;
&lt;br /&gt;
    boolean registre[8]; //c'est un tableau de 8 bit correspondant aux sorties du 74HC595 à l'état voulu&lt;br /&gt;
&lt;br /&gt;
    //configure les broches en sortie&lt;br /&gt;
    pinMode(DS_pin,OUTPUT);&lt;br /&gt;
    pinMode(STCP_pin,OUTPUT);&lt;br /&gt;
    pinMode(SHCP_pin,OUTPUT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Cette fonction &amp;quot;écrit&amp;quot; le contenu du tableau dans le registre&lt;br /&gt;
//pour chaque bit, on met la brohe de validation du bit à 0, on place la broche de donnée à l'état contenu dans le tableau et ensuite on valide le bit&lt;br /&gt;
//à la fin on valide le tout&lt;br /&gt;
void EcrireRegistre()&lt;br /&gt;
{&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(STCP_pin, LOW);&lt;br /&gt;
  &lt;br /&gt;
  for (int i = 7; i&amp;gt;=0; i--)&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(SHCP_pin, LOW);&lt;br /&gt;
    digitalWrite(DS_pin, registre[i] );&lt;br /&gt;
    digitalWrite(SHCP_pin, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(STCP_pin, HIGH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Dans la boucle du programme plusieurs séquences différentes sont jouées&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
   //Allume successivement les sorties&lt;br /&gt;
   for(int i = 0; i&amp;lt;8; i++)&lt;br /&gt;
   {&lt;br /&gt;
    registre[i] = HIGH;&lt;br /&gt;
    delay(300);&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //éteint successivement les sorties&lt;br /&gt;
   for(int i = 7; i&amp;gt;=0; i--)&lt;br /&gt;
   {&lt;br /&gt;
    registre[i] = LOW;&lt;br /&gt;
    delay(300);&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
  &lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //séquence qui allume une LED sur 2 alternativement&lt;br /&gt;
    bool b = 0;&lt;br /&gt;
    for(int i = 0; i&amp;lt;4; i++)&lt;br /&gt;
    {&lt;br /&gt;
        &lt;br /&gt;
      for(int j = 0; j&amp;lt;8; j++)&lt;br /&gt;
      {&lt;br /&gt;
        registre[j] = j%2 xor b;&lt;br /&gt;
      }&lt;br /&gt;
      EcrireRegistre();&lt;br /&gt;
      b = not b;&lt;br /&gt;
      delay(300);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //remise à zéro de toutes les LED&lt;br /&gt;
    for(int j = 0; j&amp;lt;8; j++)&lt;br /&gt;
    {&lt;br /&gt;
      registre[j] = 0;&lt;br /&gt;
    }&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fichier Fritzing ( je n'arrive pas à importer les composants de la parties mémoire ): [[Fichier:Cle usb black roussel.zip]]&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=12651</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=12651"/>
				<updated>2020-05-21T16:17:26Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Introduction &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Partie Réflexion &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Composants &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire faible capacité (64Mb) avec l'AT45DB641E-SHN2B-T ou une grande capacité mais plus difficile à souder (128Gb) avec l'MT29F128G8&lt;br /&gt;
&lt;br /&gt;
TUSB4041I Four-Port USB 2.0 Hub&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Test ReX 15/03/2020 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Test ReX 15/03/2020&lt;br /&gt;
Après quelques soudures le programme suivant passe sur l'ATtiny84 :&lt;br /&gt;
&lt;br /&gt;
 #define MAX_LED 7&lt;br /&gt;
 int leds[]={0,1,2,3,4,5,6};&lt;br /&gt;
 void setup() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) pinMode(leds[i], OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 void loop() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], HIGH);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], LOW);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Démonstration de l'exécution : [[media:binome2019-9-test1.mp4]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Projet Intermédiaire: Le dé électronique &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a permis de prendre en main le logiciel Fritzing et Arduino IDE, ce qui nous sera utile par la suite pour la conception de la clé USB.&lt;br /&gt;
&lt;br /&gt;
Tout d'abord nous avons élaboré les plans de notre dé en vue schématique, ce qui nous permet d'y voir plus clair et de mieux comprendre notre carte. &lt;br /&gt;
Après avoir effectué notre schématique (schéma1), celui-ci est indispensable car dès que l'on se retrouve avec beaucoup de composant, on s'y perd facilement, l'erreur est donc plus facilement détectable et il est conseiller d'utiliser des label pour facilité la compréhension.&lt;br /&gt;
&lt;br /&gt;
 Le schéma finit, il faut maintenant agencer les composants de sorte qu'aucunes pistes ne se croisent sur notre circuit imprimé (schéma 2).&lt;br /&gt;
&lt;br /&gt;
Voici une photo de la vue schématique et du circuit imprimé&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:schéma1_de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier:schéma 2 de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier:schéma 3 de.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par la suite nos avons soudé sur notre circuit les 7 leds et 7 résistances, un travail minutieux et assez compliqué, surtout pour les premières soudures.&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a coder notre microcontroleur, pour ce faire on utilise l'Arduino IDE.&lt;br /&gt;
Le code ci-dessous va nous permettre d'afficher un nombre aléatoire entre 1 et 6.&lt;br /&gt;
Lorsque l'on va venir presser le bouton, un roulement de tambour va s'effectuer en affichant aléatoirement des chiffres à la suite et pour finir le nombre aléatoire choisi va se figer.&lt;br /&gt;
&lt;br /&gt;
Voici le code:&lt;br /&gt;
//========FONCTIONS PERSONALISEES - Il s'agit de fonctions créées sur mesure pour nos besoins&lt;br /&gt;
&lt;br /&gt;
void toutEteindre() { //Cette fonction permet d'éteindre toutes les leds. Elle est de type &amp;quot;void&amp;quot; car elle ne revoit aucune valeur: elle se content d'exécuter les instructions.&lt;br /&gt;
  digitalWrite(0, LOW); //Eteindre la led 1&lt;br /&gt;
  digitalWrite(1, LOW); //Eteindre la led 2&lt;br /&gt;
  digitalWrite(2, LOW); //Eteindre la led 3&lt;br /&gt;
  digitalWrite(3, LOW); //Eteindre la led 4&lt;br /&gt;
  digitalWrite(4, LOW); //Eteindre la led 5&lt;br /&gt;
  digitalWrite(5, LOW); //Eteindre la led 6&lt;br /&gt;
  digitalWrite(6, LOW); //Eteindre la led 7&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void afficher(int nb) { //Cette fonction permet d'allumer les bonnes leds en fonction du nombre choisi.&lt;br /&gt;
  //Elle prend en paramètre le nombre que l'on veut afficher.&lt;br /&gt;
  switch (nb) { //C'est pareil qu'un if sauf que le if prend que des valeurs booléennes&lt;br /&gt;
    case 1: &lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break; &lt;br /&gt;
    case 2: &lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 6:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(2, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(5, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int chercher() {  &lt;br /&gt;
  return random(1, 7);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//=================================================&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(0, OUTPUT); &lt;br /&gt;
  pinMode(1, OUTPUT);&lt;br /&gt;
  pinMode(2, OUTPUT);&lt;br /&gt;
  pinMode(3, OUTPUT);&lt;br /&gt;
  pinMode(4, OUTPUT);&lt;br /&gt;
  pinMode(5, OUTPUT);&lt;br /&gt;
  pinMode(6, OUTPUT);&lt;br /&gt;
  pinMode(9,INPUT_PULLUP);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (digitalRead(9) ==   LOW) { &lt;br /&gt;
 &lt;br /&gt;
    for (int i = 1; i &amp;lt;= random(8, 15); i++) { // On fait defiler plusieurs nombre pour le suspens&lt;br /&gt;
      afficher(chercher()); &lt;br /&gt;
      delay(200); &lt;br /&gt;
      toutEteindre(); &lt;br /&gt;
    }&lt;br /&gt;
    afficher(chercher()); //On affiche le &amp;quot;vrai&amp;quot; chiffre.&lt;br /&gt;
    delay(3000); &lt;br /&gt;
    toutEteindre(); &lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le résultat final en vidéo et quelques photos de notre circuit imprimé final: [[Fichier: 20200328_165241.mp4|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Photo1 de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier: photo2 de.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
voici le Fritzing de notre dé: [[File:Circuit_de_1.zip]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Clé USB &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Afin de concevoir notre clé usb nous sommes avons choisi comme base de travail cette clé usb: [[File:cle_usb_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour l'amélioration de notre clé usb nous avons décider de faire un vu mètre avec des leds. Apres avoir discuté de cela avec nos professeurs ce qui nous a été conseillé est un registre à décalage.&lt;br /&gt;
&lt;br /&gt;
--description du fonctionnement à faire--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Principe du registre à décalage :&lt;br /&gt;
Pour notre clé, on utilise un registre à décalage 75HC595 (8 bits). Il permet de convertir une information série en parallèle. Mais on l'utilise aussi pour économiser le nombre de broche utilisée en sortie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les différentes étapes sont : -1- On place la valeur sur la broche DS&lt;br /&gt;
                              -2- La broche SH_CP est mise à 1 (la valeur de la broche DS avance donc dans le registre)&lt;br /&gt;
                              -3- Remise à 0 de la broche SH_CP (on place la valeur du bit suivant sur la broche DS)&lt;br /&gt;
                              -4- La broche SH_CP est mise à nouveau à 1&lt;br /&gt;
                              -5- Les étapes 3 et 4 sont répétées autant de fois que nécessaire pour remplir le registre&lt;br /&gt;
                              -6- La broche ST_CP est mise à 1 (les valeurs présentent dans le registre sont copiées sur &lt;br /&gt;
                                 les sortie Qn)&lt;br /&gt;
&lt;br /&gt;
Comme on peut le voir, il y a 2 grandes phases : La première on place les données que l'on veut, la deuxième est la validation des données.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici notre registre à décalage: [[Fichier:Registre a decalage.png|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant réussir à faire fonctionner tout ça via un code&lt;br /&gt;
Voici un début de code permettant de faire fonctionner ce registre à décalage :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    int DS_pin = 8;   // broche de donnée&lt;br /&gt;
    int STCP_pin = 9; // broche de validation de la donnée&lt;br /&gt;
    int SHCP_pin = 10; // broche de validation compléte (latch)&lt;br /&gt;
&lt;br /&gt;
    boolean registre[8]; //c'est un tableau de 8 bit correspondant aux sorties du 74HC595 à l'état voulu&lt;br /&gt;
&lt;br /&gt;
    //configure les broches en sortie&lt;br /&gt;
    pinMode(DS_pin,OUTPUT);&lt;br /&gt;
    pinMode(STCP_pin,OUTPUT);&lt;br /&gt;
    pinMode(SHCP_pin,OUTPUT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Cette fonction &amp;quot;écrit&amp;quot; le contenu du tableau dans le registre&lt;br /&gt;
//pour chaque bit, on met la brohe de validation du bit à 0, on place la broche de donnée à l'état contenu dans le tableau et ensuite on valide le bit&lt;br /&gt;
//à la fin on valide le tout&lt;br /&gt;
void EcrireRegistre()&lt;br /&gt;
{&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(STCP_pin, LOW);&lt;br /&gt;
  &lt;br /&gt;
  for (int i = 7; i&amp;gt;=0; i--)&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(SHCP_pin, LOW);&lt;br /&gt;
    digitalWrite(DS_pin, registre[i] );&lt;br /&gt;
    digitalWrite(SHCP_pin, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(STCP_pin, HIGH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Dans la boucle du programme plusieurs séquences différentes sont jouées&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
   //Allume successivement les sorties&lt;br /&gt;
   for(int i = 0; i&amp;lt;8; i++)&lt;br /&gt;
   {&lt;br /&gt;
    registre[i] = HIGH;&lt;br /&gt;
    delay(300);&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //éteint successivement les sorties&lt;br /&gt;
   for(int i = 7; i&amp;gt;=0; i--)&lt;br /&gt;
   {&lt;br /&gt;
    registre[i] = LOW;&lt;br /&gt;
    delay(300);&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
  &lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //séquence qui allume une LED sur 2 alternativement&lt;br /&gt;
    bool b = 0;&lt;br /&gt;
    for(int i = 0; i&amp;lt;4; i++)&lt;br /&gt;
    {&lt;br /&gt;
        &lt;br /&gt;
      for(int j = 0; j&amp;lt;8; j++)&lt;br /&gt;
      {&lt;br /&gt;
        registre[j] = j%2 xor b;&lt;br /&gt;
      }&lt;br /&gt;
      EcrireRegistre();&lt;br /&gt;
      b = not b;&lt;br /&gt;
      delay(300);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //remise à zéro de toutes les LED&lt;br /&gt;
    for(int j = 0; j&amp;lt;8; j++)&lt;br /&gt;
    {&lt;br /&gt;
      registre[j] = 0;&lt;br /&gt;
    }&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fichier Fritzing ( je n'arrive pas à importer les composants de la parties mémoire ): [[Fichier:Cle usb black roussel.zip]]&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=12650</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=12650"/>
				<updated>2020-05-21T16:14:58Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Introduction &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Partie Réflexion &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Composants &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire faible capacité (64Mb) avec l'AT45DB641E-SHN2B-T ou une grande capacité mais plus difficile à souder (128Gb) avec l'MT29F128G8&lt;br /&gt;
&lt;br /&gt;
TUSB4041I Four-Port USB 2.0 Hub&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Test ReX 15/03/2020 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Test ReX 15/03/2020&lt;br /&gt;
Après quelques soudures le programme suivant passe sur l'ATtiny84 :&lt;br /&gt;
&lt;br /&gt;
 #define MAX_LED 7&lt;br /&gt;
 int leds[]={0,1,2,3,4,5,6};&lt;br /&gt;
 void setup() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) pinMode(leds[i], OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 void loop() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], HIGH);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], LOW);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Démonstration de l'exécution : [[media:binome2019-9-test1.mp4]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Projet Intermédiaire: Le dé électronique &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a permis de prendre en main le logiciel Fritzing et Arduino IDE, ce qui nous sera utile par la suite pour la conception de la clé USB.&lt;br /&gt;
&lt;br /&gt;
Tout d'abord nous avons élaboré les plans de notre dé en vue schématique, ce qui nous permet d'y voir plus clair et de mieux comprendre notre carte. &lt;br /&gt;
Après avoir effectué notre schématique (schéma1), celui-ci est indispensable car dès que l'on se retrouve avec beaucoup de composant, on s'y perd facilement, l'erreur est donc plus facilement détectable et il est conseiller d'utiliser des label pour facilité la compréhension.&lt;br /&gt;
&lt;br /&gt;
 Le schéma finit, il faut maintenant agencer les composants de sorte qu'aucunes pistes ne se croisent sur notre circuit imprimé (schéma 2).&lt;br /&gt;
&lt;br /&gt;
Voici une photo de la vue schématique et du circuit imprimé&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:schéma1_de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier:schéma 2 de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier:schéma 3 de.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par la suite nos avons soudé sur notre circuit les 7 leds et 7 résistances, un travail minutieux et assez compliqué, surtout pour les premières soudures.&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a coder notre microcontroleur, pour ce faire on utilise l'Arduino IDE.&lt;br /&gt;
Le code ci-dessous va nous permettre d'afficher un nombre aléatoire entre 1 et 6.&lt;br /&gt;
Lorsque l'on va venir presser le bouton, un roulement de tambour va s'effectuer en affichant aléatoirement des chiffres à la suite et pour finir le nombre aléatoire choisi va se figer.&lt;br /&gt;
&lt;br /&gt;
Voici le code:&lt;br /&gt;
//========FONCTIONS PERSONALISEES - Il s'agit de fonctions créées sur mesure pour nos besoins&lt;br /&gt;
&lt;br /&gt;
void toutEteindre() { //Cette fonction permet d'éteindre toutes les leds. Elle est de type &amp;quot;void&amp;quot; car elle ne revoit aucune valeur: elle se content d'exécuter les instructions.&lt;br /&gt;
  digitalWrite(0, LOW); //Eteindre la led 1&lt;br /&gt;
  digitalWrite(1, LOW); //Eteindre la led 2&lt;br /&gt;
  digitalWrite(2, LOW); //Eteindre la led 3&lt;br /&gt;
  digitalWrite(3, LOW); //Eteindre la led 4&lt;br /&gt;
  digitalWrite(4, LOW); //Eteindre la led 5&lt;br /&gt;
  digitalWrite(5, LOW); //Eteindre la led 6&lt;br /&gt;
  digitalWrite(6, LOW); //Eteindre la led 7&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void afficher(int nb) { //Cette fonction permet d'allumer les bonnes leds en fonction du nombre choisi.&lt;br /&gt;
  //Elle prend en paramètre le nombre que l'on veut afficher.&lt;br /&gt;
  switch (nb) { //C'est pareil qu'un if sauf que le if prend que des valeurs booléennes&lt;br /&gt;
    case 1: &lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break; &lt;br /&gt;
    case 2: &lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 6:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(2, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(5, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int chercher() {  &lt;br /&gt;
  return random(1, 7);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//=================================================&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(0, OUTPUT); &lt;br /&gt;
  pinMode(1, OUTPUT);&lt;br /&gt;
  pinMode(2, OUTPUT);&lt;br /&gt;
  pinMode(3, OUTPUT);&lt;br /&gt;
  pinMode(4, OUTPUT);&lt;br /&gt;
  pinMode(5, OUTPUT);&lt;br /&gt;
  pinMode(6, OUTPUT);&lt;br /&gt;
  pinMode(9,INPUT_PULLUP);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (digitalRead(9) ==   LOW) { &lt;br /&gt;
 &lt;br /&gt;
    for (int i = 1; i &amp;lt;= random(8, 15); i++) { // On fait defiler plusieurs nombre pour le suspens&lt;br /&gt;
      afficher(chercher()); &lt;br /&gt;
      delay(200); &lt;br /&gt;
      toutEteindre(); &lt;br /&gt;
    }&lt;br /&gt;
    afficher(chercher()); //On affiche le &amp;quot;vrai&amp;quot; chiffre.&lt;br /&gt;
    delay(3000); &lt;br /&gt;
    toutEteindre(); &lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le résultat final en vidéo et quelques photos de notre circuit imprimé final: [[Fichier: 20200328_165241.mp4|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Photo1 de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier: photo2 de.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
voici le Fritzing de notre dé: [[File:Circuit_de_1.zip]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Clé USB &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Afin de concevoir notre clé usb nous sommes avons choisi comme base de travail cette clé usb: [[File:cle_usb_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour l'amélioration de notre clé usb nous avons décider de faire un vu mètre avec des leds. Apres avoir discuté de cela avec nos professeurs ce qui nous a été conseillé est un registre à décalage.&lt;br /&gt;
&lt;br /&gt;
--description du fonctionnement à faire--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Principe du registre à décalage :&lt;br /&gt;
Pour notre clé, on utilise un registre à décalage 75HC595 (8 bits). Il permet de convertir une information série en parallèle. Mais on l'utilise aussi pour économiser le nombre de broche utilisée en sortie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les différentes étapes sont : -1- On place la valeur sur la broche DS&lt;br /&gt;
                              -2- La broche SH_CP est mise à 1 (la valeur de la broche DS avance donc dans le registre)&lt;br /&gt;
                              -3- Remise à 0 de la broche SH_CP (on place la valeur du bit suivant sur la broche DS)&lt;br /&gt;
                              -4- La broche SH_CP est mise à nouveau à 1&lt;br /&gt;
                              -5- Les étapes 3 et 4 sont répétées autant de fois que nécessaire pour remplir le registre&lt;br /&gt;
                              -6- La broche ST_CP est mise à 1 (les valeurs présentent dans le registre sont copiées sur &lt;br /&gt;
                                 les sortie Qn)&lt;br /&gt;
&lt;br /&gt;
Comme on peut le voir, il y a 2 grandes phases : La première on place les données que l'on veut, la deuxième est la validation des données.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici notre registre à décalage: [[Fichier:Registre a decalage.png|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant réussir à faire fonctionner tout ça via un code&lt;br /&gt;
Voici un début de code permettant de faire fonctionner ce registre à décalage :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int DS_pin = 8;   // broche de donnée&lt;br /&gt;
int STCP_pin = 9; // broche de validation de la donnée&lt;br /&gt;
int SHCP_pin = 10; // broche de validation compléte (latch)&lt;br /&gt;
&lt;br /&gt;
boolean registre[8]; //c'est un tableau de 8 bit correspondant aux sorties du 74HC595 à l'état voulu&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    //configure les broches en sortie&lt;br /&gt;
    pinMode(DS_pin,OUTPUT);&lt;br /&gt;
    pinMode(STCP_pin,OUTPUT);&lt;br /&gt;
    pinMode(SHCP_pin,OUTPUT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Cette fonction &amp;quot;écrit&amp;quot; le contenu du tableau dans le registre&lt;br /&gt;
//pour chaque bit, on met la brohe de validation du bit à 0, on place la broche de donnée à l'état contenu dans le tableau et ensuite on valide le bit&lt;br /&gt;
//à la fin on valide le tout&lt;br /&gt;
void EcrireRegistre()&lt;br /&gt;
{&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(STCP_pin, LOW);&lt;br /&gt;
  &lt;br /&gt;
  for (int i = 7; i&amp;gt;=0; i--)&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(SHCP_pin, LOW);&lt;br /&gt;
    digitalWrite(DS_pin, registre[i] );&lt;br /&gt;
    digitalWrite(SHCP_pin, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(STCP_pin, HIGH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Dans la boucle du programme plusieurs séquences différentes sont jouées&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
   //Allume successivement les sorties&lt;br /&gt;
   for(int i = 0; i&amp;lt;8; i++)&lt;br /&gt;
   {&lt;br /&gt;
    registre[i] = HIGH;&lt;br /&gt;
    delay(300);&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //éteint successivement les sorties&lt;br /&gt;
   for(int i = 7; i&amp;gt;=0; i--)&lt;br /&gt;
   {&lt;br /&gt;
    registre[i] = LOW;&lt;br /&gt;
    delay(300);&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
  &lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //séquence qui allume une LED sur 2 alternativement&lt;br /&gt;
    bool b = 0;&lt;br /&gt;
    for(int i = 0; i&amp;lt;4; i++)&lt;br /&gt;
    {&lt;br /&gt;
        &lt;br /&gt;
      for(int j = 0; j&amp;lt;8; j++)&lt;br /&gt;
      {&lt;br /&gt;
        registre[j] = j%2 xor b;&lt;br /&gt;
      }&lt;br /&gt;
      EcrireRegistre();&lt;br /&gt;
      b = not b;&lt;br /&gt;
      delay(300);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //remise à zéro de toutes les LED&lt;br /&gt;
    for(int j = 0; j&amp;lt;8; j++)&lt;br /&gt;
    {&lt;br /&gt;
      registre[j] = 0;&lt;br /&gt;
    }&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fichier Fritzing ( je n'arrive pas à importer les composants de la parties mémoire ): [[Fichier:Cle usb black roussel.zip]]&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=12649</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=12649"/>
				<updated>2020-05-21T16:13:38Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Introduction &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Partie Réflexion &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Composants &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire faible capacité (64Mb) avec l'AT45DB641E-SHN2B-T ou une grande capacité mais plus difficile à souder (128Gb) avec l'MT29F128G8&lt;br /&gt;
&lt;br /&gt;
TUSB4041I Four-Port USB 2.0 Hub&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Test ReX 15/03/2020 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Test ReX 15/03/2020&lt;br /&gt;
Après quelques soudures le programme suivant passe sur l'ATtiny84 :&lt;br /&gt;
&lt;br /&gt;
 #define MAX_LED 7&lt;br /&gt;
 int leds[]={0,1,2,3,4,5,6};&lt;br /&gt;
 void setup() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) pinMode(leds[i], OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 void loop() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], HIGH);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], LOW);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Démonstration de l'exécution : [[media:binome2019-9-test1.mp4]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Projet Intermédiaire: Le dé électronique &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a permis de prendre en main le logiciel Fritzing et Arduino IDE, ce qui nous sera utile par la suite pour la conception de la clé USB.&lt;br /&gt;
&lt;br /&gt;
Tout d'abord nous avons élaboré les plans de notre dé en vue schématique, ce qui nous permet d'y voir plus clair et de mieux comprendre notre carte. &lt;br /&gt;
Après avoir effectué notre schématique (schéma1), celui-ci est indispensable car dès que l'on se retrouve avec beaucoup de composant, on s'y perd facilement, l'erreur est donc plus facilement détectable et il est conseiller d'utiliser des label pour facilité la compréhension.&lt;br /&gt;
&lt;br /&gt;
 Le schéma finit, il faut maintenant agencer les composants de sorte qu'aucunes pistes ne se croisent sur notre circuit imprimé (schéma 2).&lt;br /&gt;
&lt;br /&gt;
Voici une photo de la vue schématique et du circuit imprimé&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:schéma1_de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier:schéma 2 de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier:schéma 3 de.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par la suite nos avons soudé sur notre circuit les 7 leds et 7 résistances, un travail minutieux et assez compliqué, surtout pour les premières soudures.&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a coder notre microcontroleur, pour ce faire on utilise l'Arduino IDE.&lt;br /&gt;
Le code ci-dessous va nous permettre d'afficher un nombre aléatoire entre 1 et 6.&lt;br /&gt;
Lorsque l'on va venir presser le bouton, un roulement de tambour va s'effectuer en affichant aléatoirement des chiffres à la suite et pour finir le nombre aléatoire choisi va se figer.&lt;br /&gt;
&lt;br /&gt;
Voici le code:&lt;br /&gt;
//========FONCTIONS PERSONALISEES - Il s'agit de fonctions créées sur mesure pour nos besoins&lt;br /&gt;
&lt;br /&gt;
void toutEteindre() { //Cette fonction permet d'éteindre toutes les leds. Elle est de type &amp;quot;void&amp;quot; car elle ne revoit aucune valeur: elle se content d'exécuter les instructions.&lt;br /&gt;
  digitalWrite(0, LOW); //Eteindre la led 1&lt;br /&gt;
  digitalWrite(1, LOW); //Eteindre la led 2&lt;br /&gt;
  digitalWrite(2, LOW); //Eteindre la led 3&lt;br /&gt;
  digitalWrite(3, LOW); //Eteindre la led 4&lt;br /&gt;
  digitalWrite(4, LOW); //Eteindre la led 5&lt;br /&gt;
  digitalWrite(5, LOW); //Eteindre la led 6&lt;br /&gt;
  digitalWrite(6, LOW); //Eteindre la led 7&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void afficher(int nb) { //Cette fonction permet d'allumer les bonnes leds en fonction du nombre choisi.&lt;br /&gt;
  //Elle prend en paramètre le nombre que l'on veut afficher.&lt;br /&gt;
  switch (nb) { //C'est pareil qu'un if sauf que le if prend que des valeurs booléennes&lt;br /&gt;
    case 1: &lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break; &lt;br /&gt;
    case 2: &lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 6:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(2, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(5, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int chercher() {  &lt;br /&gt;
  return random(1, 7);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//=================================================&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(0, OUTPUT); &lt;br /&gt;
  pinMode(1, OUTPUT);&lt;br /&gt;
  pinMode(2, OUTPUT);&lt;br /&gt;
  pinMode(3, OUTPUT);&lt;br /&gt;
  pinMode(4, OUTPUT);&lt;br /&gt;
  pinMode(5, OUTPUT);&lt;br /&gt;
  pinMode(6, OUTPUT);&lt;br /&gt;
  pinMode(9,INPUT_PULLUP);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (digitalRead(9) ==   LOW) { &lt;br /&gt;
 &lt;br /&gt;
    for (int i = 1; i &amp;lt;= random(8, 15); i++) { // On fait defiler plusieurs nombre pour le suspens&lt;br /&gt;
      afficher(chercher()); &lt;br /&gt;
      delay(200); &lt;br /&gt;
      toutEteindre(); &lt;br /&gt;
    }&lt;br /&gt;
    afficher(chercher()); //On affiche le &amp;quot;vrai&amp;quot; chiffre.&lt;br /&gt;
    delay(3000); &lt;br /&gt;
    toutEteindre(); &lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le résultat final en vidéo et quelques photos de notre circuit imprimé final: [[Fichier: 20200328_165241.mp4|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Photo1 de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier: photo2 de.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
voici le Fritzing de notre dé: [[File:Circuit_de_1.zip]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Clé USB &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Afin de concevoir notre clé usb nous sommes avons choisi comme base de travail cette clé usb: [[File:cle_usb_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour l'amélioration de notre clé usb nous avons décider de faire un vu mètre avec des leds. Apres avoir discuté de cela avec nos professeurs ce qui nous a été conseillé est un registre à décalage.&lt;br /&gt;
&lt;br /&gt;
--description du fonctionnement à faire--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Principe du registre à décalage :&lt;br /&gt;
Pour notre clé, on utilise un registre à décalage 75HC595 (8 bits). Il permet de convertir une information série en parallèle. Mais on l'utilise aussi pour économiser le nombre de broche utilisée en sortie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les différentes étapes sont : -1- On place la valeur sur la broche DS&lt;br /&gt;
                              -2- La broche SH_CP est mise à 1 (la valeur de la broche DS avance donc dans le registre)&lt;br /&gt;
                              -3- Remise à 0 de la broche SH_CP (on place la valeur du bit suivant sur la broche DS)&lt;br /&gt;
                              -4- La broche SH_CP est mise à nouveau à 1&lt;br /&gt;
                              -5- Les étapes 3 et 4 sont répétées autant de fois que nécessaire pour remplir le registre&lt;br /&gt;
                              -6- La broche ST_CP est mise à 1 (les valeurs présentent dans le registre sont copiées sur &lt;br /&gt;
                                 les sortie Qn)&lt;br /&gt;
&lt;br /&gt;
Comme on peut le voir, il y a 2 grandes phases : La première on place les données que l'on veut, la deuxième est la validation des données.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici notre registre à décalage: [[Fichier:Registre a decalage.png|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant réussir à faire fonctionner tout ça via un code&lt;br /&gt;
Voici un début de code permettant de faire fonctionner ce registre à décalage :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//constantes pour les broches de commande du 74HC595&lt;br /&gt;
&lt;br /&gt;
int DS_pin = 8;   // broche de donnée&lt;br /&gt;
int STCP_pin = 9; // broche de validation de la donnée&lt;br /&gt;
int SHCP_pin = 10;// broche de validation compléte (latch)&lt;br /&gt;
&lt;br /&gt;
boolean registre[8]; //c'est un tableau de 8 bit correspondant aux sorties du 74HC595 à l'état voulu&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    //configure les broches en sortie&lt;br /&gt;
    pinMode(DS_pin,OUTPUT);&lt;br /&gt;
    pinMode(STCP_pin,OUTPUT);&lt;br /&gt;
    pinMode(SHCP_pin,OUTPUT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Cette fonction &amp;quot;écrit&amp;quot; le contenu du tableau dans le registre&lt;br /&gt;
//pour chaque bit, on met la brohe de validation du bit à 0, on place la broche de donnée à l'état contenu dans le tableau et ensuite on valide le bit&lt;br /&gt;
//à la fin on valide le tout&lt;br /&gt;
void EcrireRegistre()&lt;br /&gt;
{&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(STCP_pin, LOW);&lt;br /&gt;
  &lt;br /&gt;
  for (int i = 7; i&amp;gt;=0; i--)&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(SHCP_pin, LOW);&lt;br /&gt;
    digitalWrite(DS_pin, registre[i] );&lt;br /&gt;
    digitalWrite(SHCP_pin, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(STCP_pin, HIGH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Dans la boucle du programme plusieurs séquences différentes sont jouées&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
   //Allume successivement les sorties&lt;br /&gt;
   for(int i = 0; i&amp;lt;8; i++)&lt;br /&gt;
   {&lt;br /&gt;
    registre[i] = HIGH;&lt;br /&gt;
    delay(300);&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //éteint successivement les sorties&lt;br /&gt;
   for(int i = 7; i&amp;gt;=0; i--)&lt;br /&gt;
   {&lt;br /&gt;
    registre[i] = LOW;&lt;br /&gt;
    delay(300);&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
  &lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //séquence qui allume une LED sur 2 alternativement&lt;br /&gt;
    bool b = 0;&lt;br /&gt;
    for(int i = 0; i&amp;lt;4; i++)&lt;br /&gt;
    {&lt;br /&gt;
        &lt;br /&gt;
      for(int j = 0; j&amp;lt;8; j++)&lt;br /&gt;
      {&lt;br /&gt;
        registre[j] = j%2 xor b;&lt;br /&gt;
      }&lt;br /&gt;
      EcrireRegistre();&lt;br /&gt;
      b = not b;&lt;br /&gt;
      delay(300);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //remise à zéro de toutes les LED&lt;br /&gt;
    for(int j = 0; j&amp;lt;8; j++)&lt;br /&gt;
    {&lt;br /&gt;
      registre[j] = 0;&lt;br /&gt;
    }&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fichier Fritzing ( je n'arrive pas à importer les composants de la parties mémoire ): [[Fichier:Cle usb black roussel.zip]]&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=12648</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=12648"/>
				<updated>2020-05-21T16:11:49Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Introduction &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Partie Réflexion &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Composants &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire faible capacité (64Mb) avec l'AT45DB641E-SHN2B-T ou une grande capacité mais plus difficile à souder (128Gb) avec l'MT29F128G8&lt;br /&gt;
&lt;br /&gt;
TUSB4041I Four-Port USB 2.0 Hub&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Test ReX 15/03/2020 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Test ReX 15/03/2020&lt;br /&gt;
Après quelques soudures le programme suivant passe sur l'ATtiny84 :&lt;br /&gt;
&lt;br /&gt;
 #define MAX_LED 7&lt;br /&gt;
 int leds[]={0,1,2,3,4,5,6};&lt;br /&gt;
 void setup() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) pinMode(leds[i], OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 void loop() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], HIGH);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], LOW);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Démonstration de l'exécution : [[media:binome2019-9-test1.mp4]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Projet Intermédiaire: Le dé électronique &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a permis de prendre en main le logiciel Fritzing et Arduino IDE, ce qui nous sera utile par la suite pour la conception de la clé USB.&lt;br /&gt;
&lt;br /&gt;
Tout d'abord nous avons élaboré les plans de notre dé en vue schématique, ce qui nous permet d'y voir plus clair et de mieux comprendre notre carte. &lt;br /&gt;
Après avoir effectué notre schématique (schéma1), celui-ci est indispensable car dès que l'on se retrouve avec beaucoup de composant, on s'y perd facilement, l'erreur est donc plus facilement détectable et il est conseiller d'utiliser des label pour facilité la compréhension.&lt;br /&gt;
&lt;br /&gt;
 Le schéma finit, il faut maintenant agencer les composants de sorte qu'aucunes pistes ne se croisent sur notre circuit imprimé (schéma 2).&lt;br /&gt;
&lt;br /&gt;
Voici une photo de la vue schématique et du circuit imprimé&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:schéma1_de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier:schéma 2 de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier:schéma 3 de.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par la suite nos avons soudé sur notre circuit les 7 leds et 7 résistances, un travail minutieux et assez compliqué, surtout pour les premières soudures.&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a coder notre microcontroleur, pour ce faire on utilise l'Arduino IDE.&lt;br /&gt;
Le code ci-dessous va nous permettre d'afficher un nombre aléatoire entre 1 et 6.&lt;br /&gt;
Lorsque l'on va venir presser le bouton, un roulement de tambour va s'effectuer en affichant aléatoirement des chiffres à la suite et pour finir le nombre aléatoire choisi va se figer.&lt;br /&gt;
&lt;br /&gt;
Voici le code:&lt;br /&gt;
//========FONCTIONS PERSONALISEES - Il s'agit de fonctions créées sur mesure pour nos besoins&lt;br /&gt;
&lt;br /&gt;
void toutEteindre() { //Cette fonction permet d'éteindre toutes les leds. Elle est de type &amp;quot;void&amp;quot; car elle ne revoit aucune valeur: elle se content d'exécuter les instructions.&lt;br /&gt;
  digitalWrite(0, LOW); //Eteindre la led 1&lt;br /&gt;
  digitalWrite(1, LOW); //Eteindre la led 2&lt;br /&gt;
  digitalWrite(2, LOW); //Eteindre la led 3&lt;br /&gt;
  digitalWrite(3, LOW); //Eteindre la led 4&lt;br /&gt;
  digitalWrite(4, LOW); //Eteindre la led 5&lt;br /&gt;
  digitalWrite(5, LOW); //Eteindre la led 6&lt;br /&gt;
  digitalWrite(6, LOW); //Eteindre la led 7&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void afficher(int nb) { //Cette fonction permet d'allumer les bonnes leds en fonction du nombre choisi.&lt;br /&gt;
  //Elle prend en paramètre le nombre que l'on veut afficher.&lt;br /&gt;
  switch (nb) { //C'est pareil qu'un if sauf que le if prend que des valeurs booléennes&lt;br /&gt;
    case 1: &lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break; &lt;br /&gt;
    case 2: &lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 6:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(2, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(5, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int chercher() {  &lt;br /&gt;
  return random(1, 7);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//=================================================&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(0, OUTPUT); &lt;br /&gt;
  pinMode(1, OUTPUT);&lt;br /&gt;
  pinMode(2, OUTPUT);&lt;br /&gt;
  pinMode(3, OUTPUT);&lt;br /&gt;
  pinMode(4, OUTPUT);&lt;br /&gt;
  pinMode(5, OUTPUT);&lt;br /&gt;
  pinMode(6, OUTPUT);&lt;br /&gt;
  pinMode(9,INPUT_PULLUP);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (digitalRead(9) ==   LOW) { &lt;br /&gt;
 &lt;br /&gt;
    for (int i = 1; i &amp;lt;= random(8, 15); i++) { // On fait defiler plusieurs nombre pour le suspens&lt;br /&gt;
      afficher(chercher()); &lt;br /&gt;
      delay(200); &lt;br /&gt;
      toutEteindre(); &lt;br /&gt;
    }&lt;br /&gt;
    afficher(chercher()); //On affiche le &amp;quot;vrai&amp;quot; chiffre.&lt;br /&gt;
    delay(3000); &lt;br /&gt;
    toutEteindre(); &lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le résultat final en vidéo et quelques photos de notre circuit imprimé final: [[Fichier: 20200328_165241.mp4|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Photo1 de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier: photo2 de.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
voici le Fritzing de notre dé: [[File:Circuit_de_1.zip]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Clé USB &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Afin de concevoir notre clé usb nous sommes avons choisi comme base de travail cette clé usb: [[File:cle_usb_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour l'amélioration de notre clé usb nous avons décider de faire un vu mètre avec des leds. Apres avoir discuté de cela avec nos professeurs ce qui nous a été conseillé est un registre à décalage.&lt;br /&gt;
&lt;br /&gt;
--description du fonctionnement à faire--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Principe du registre à décalage :&lt;br /&gt;
Pour notre clé, on utilise un registre à décalage 75HC595 (8 bits). Il permet de convertir une information série en parallèle. Mais on l'utilise aussi pour économiser le nombre de broche utilisée en sortie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les différentes étapes sont : -1- On place la valeur sur la broche DS&lt;br /&gt;
                              -2- La broche SH_CP est mise à 1 (la valeur de la broche DS avance donc dans le registre)&lt;br /&gt;
                              -3- Remise à 0 de la broche SH_CP (on place la valeur du bit suivant sur la broche DS)&lt;br /&gt;
                              -4- La broche SH_CP est mise à nouveau à 1&lt;br /&gt;
                              -5- Les étapes 3 et 4 sont répétées autant de fois que nécessaire pour remplir le registre&lt;br /&gt;
                              -6- La broche ST_CP est mise à 1 (les valeurs présentent dans le registre sont copiées sur &lt;br /&gt;
                                 les sortie Qn)&lt;br /&gt;
&lt;br /&gt;
Comme on peut le voir, il y a 2 grandes phases : La première on place les données que l'on veut, la deuxième est la validation des données.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici notre registre à décalage: [[Fichier:Registre a decalage.png|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant réussir à faire fonctionner tout ça via un code&lt;br /&gt;
Voici un début de code permettant de faire fonctionner ce registre à décalage :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//constantes pour les broches de commande du 74HC595&lt;br /&gt;
int DS_pin = 8;   // broche de donnée&lt;br /&gt;
int STCP_pin = 9; // broche de validation de la donnée&lt;br /&gt;
int SHCP_pin = 10;// broche de validation compléte (latch)&lt;br /&gt;
&lt;br /&gt;
boolean registre[8]; //c'est un tableau de 8 bit correspondant aux sorties du 74HC595 à l'état voulu&lt;br /&gt;
                      // pour se programme j'ai fait le choix du tableau car cela reste simple pour un tutoriel&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    //configure les broches en sortie&lt;br /&gt;
    pinMode(DS_pin,OUTPUT);&lt;br /&gt;
    pinMode(STCP_pin,OUTPUT);&lt;br /&gt;
    pinMode(SHCP_pin,OUTPUT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Cette fonction &amp;quot;écrit&amp;quot; le contenu du tableau dans le registre&lt;br /&gt;
//pour chaque bit, on met la brohe de validation du bit à 0, on place la broche de donnée à l'état contenu dans le tableau et ensuite on valide le bit&lt;br /&gt;
//à la fin on valide le tout&lt;br /&gt;
void EcrireRegistre()&lt;br /&gt;
{&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(STCP_pin, LOW);&lt;br /&gt;
  &lt;br /&gt;
  for (int i = 7; i&amp;gt;=0; i--)&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(SHCP_pin, LOW);&lt;br /&gt;
    digitalWrite(DS_pin, registre[i] );&lt;br /&gt;
    digitalWrite(SHCP_pin, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(STCP_pin, HIGH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Dans la boucle du programme plusieurs séquences différentes sont jouées&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
   //Allume successivement les sorties&lt;br /&gt;
   for(int i = 0; i&amp;lt;8; i++)&lt;br /&gt;
   {&lt;br /&gt;
    registre[i] = HIGH;&lt;br /&gt;
    delay(300);&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //éteint successivement les sorties&lt;br /&gt;
   for(int i = 7; i&amp;gt;=0; i--)&lt;br /&gt;
   {&lt;br /&gt;
    registre[i] = LOW;&lt;br /&gt;
    delay(300);&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
  &lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //séquence qui allume une LED sur 2 alternativement&lt;br /&gt;
    bool b = 0;&lt;br /&gt;
    for(int i = 0; i&amp;lt;4; i++)&lt;br /&gt;
    {&lt;br /&gt;
        &lt;br /&gt;
      for(int j = 0; j&amp;lt;8; j++)&lt;br /&gt;
      {&lt;br /&gt;
        registre[j] = j%2 xor b;&lt;br /&gt;
      }&lt;br /&gt;
      EcrireRegistre();&lt;br /&gt;
      b = not b;&lt;br /&gt;
      delay(300);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //remise à zéro de toutes les LED&lt;br /&gt;
    for(int j = 0; j&amp;lt;8; j++)&lt;br /&gt;
    {&lt;br /&gt;
      registre[j] = 0;&lt;br /&gt;
    }&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fichier Fritzing ( je n'arrive pas à importer les composants de la parties mémoire ): [[Fichier:Cle usb black roussel.zip]]&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=12647</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=12647"/>
				<updated>2020-05-21T16:10:00Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Introduction &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Partie Réflexion &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Composants &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire faible capacité (64Mb) avec l'AT45DB641E-SHN2B-T ou une grande capacité mais plus difficile à souder (128Gb) avec l'MT29F128G8&lt;br /&gt;
&lt;br /&gt;
TUSB4041I Four-Port USB 2.0 Hub&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Test ReX 15/03/2020 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Test ReX 15/03/2020&lt;br /&gt;
Après quelques soudures le programme suivant passe sur l'ATtiny84 :&lt;br /&gt;
&lt;br /&gt;
 #define MAX_LED 7&lt;br /&gt;
 int leds[]={0,1,2,3,4,5,6};&lt;br /&gt;
 void setup() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) pinMode(leds[i], OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 void loop() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], HIGH);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], LOW);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Démonstration de l'exécution : [[media:binome2019-9-test1.mp4]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Projet Intermédiaire: Le dé électronique &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a permis de prendre en main le logiciel Fritzing et Arduino IDE, ce qui nous sera utile par la suite pour la conception de la clé USB.&lt;br /&gt;
&lt;br /&gt;
Tout d'abord nous avons élaboré les plans de notre dé en vue schématique, ce qui nous permet d'y voir plus clair et de mieux comprendre notre carte. &lt;br /&gt;
Après avoir effectué notre schématique (schéma1), celui-ci est indispensable car dès que l'on se retrouve avec beaucoup de composant, on s'y perd facilement, l'erreur est donc plus facilement détectable et il est conseiller d'utiliser des label pour facilité la compréhension.&lt;br /&gt;
&lt;br /&gt;
 Le schéma finit, il faut maintenant agencer les composants de sorte qu'aucunes pistes ne se croisent sur notre circuit imprimé (schéma 2).&lt;br /&gt;
&lt;br /&gt;
Voici une photo de la vue schématique et du circuit imprimé&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:schéma1_de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier:schéma 2 de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier:schéma 3 de.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par la suite nos avons soudé sur notre circuit les 7 leds et 7 résistances, un travail minutieux et assez compliqué, surtout pour les premières soudures.&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a coder notre microcontroleur, pour ce faire on utilise l'Arduino IDE.&lt;br /&gt;
Le code ci-dessous va nous permettre d'afficher un nombre aléatoire entre 1 et 6.&lt;br /&gt;
Lorsque l'on va venir presser le bouton, un roulement de tambour va s'effectuer en affichant aléatoirement des chiffres à la suite et pour finir le nombre aléatoire choisi va se figer.&lt;br /&gt;
&lt;br /&gt;
Voici le code:&lt;br /&gt;
//========FONCTIONS PERSONALISEES - Il s'agit de fonctions créées sur mesure pour nos besoins&lt;br /&gt;
&lt;br /&gt;
void toutEteindre() { //Cette fonction permet d'éteindre toutes les leds. Elle est de type &amp;quot;void&amp;quot; car elle ne revoit aucune valeur: elle se content d'exécuter les instructions.&lt;br /&gt;
  digitalWrite(0, LOW); //Eteindre la led 1&lt;br /&gt;
  digitalWrite(1, LOW); //Eteindre la led 2&lt;br /&gt;
  digitalWrite(2, LOW); //Eteindre la led 3&lt;br /&gt;
  digitalWrite(3, LOW); //Eteindre la led 4&lt;br /&gt;
  digitalWrite(4, LOW); //Eteindre la led 5&lt;br /&gt;
  digitalWrite(5, LOW); //Eteindre la led 6&lt;br /&gt;
  digitalWrite(6, LOW); //Eteindre la led 7&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void afficher(int nb) { //Cette fonction permet d'allumer les bonnes leds en fonction du nombre choisi.&lt;br /&gt;
  //Elle prend en paramètre le nombre que l'on veut afficher.&lt;br /&gt;
  switch (nb) { //C'est pareil qu'un if sauf que le if prend que des valeurs booléennes&lt;br /&gt;
    case 1: &lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break; &lt;br /&gt;
    case 2: &lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 6:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(2, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(5, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int chercher() {  &lt;br /&gt;
  return random(1, 7);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//=================================================&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(0, OUTPUT); &lt;br /&gt;
  pinMode(1, OUTPUT);&lt;br /&gt;
  pinMode(2, OUTPUT);&lt;br /&gt;
  pinMode(3, OUTPUT);&lt;br /&gt;
  pinMode(4, OUTPUT);&lt;br /&gt;
  pinMode(5, OUTPUT);&lt;br /&gt;
  pinMode(6, OUTPUT);&lt;br /&gt;
  pinMode(9,INPUT_PULLUP);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (digitalRead(9) ==   LOW) { &lt;br /&gt;
 &lt;br /&gt;
    for (int i = 1; i &amp;lt;= random(8, 15); i++) { // On fait defiler plusieurs nombre pour le suspens&lt;br /&gt;
      afficher(chercher()); &lt;br /&gt;
      delay(200); &lt;br /&gt;
      toutEteindre(); &lt;br /&gt;
    }&lt;br /&gt;
    afficher(chercher()); //On affiche le &amp;quot;vrai&amp;quot; chiffre.&lt;br /&gt;
    delay(3000); &lt;br /&gt;
    toutEteindre(); &lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le résultat final en vidéo et quelques photos de notre circuit imprimé final: [[Fichier: 20200328_165241.mp4|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Photo1 de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier: photo2 de.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
voici le Fritzing de notre dé: [[File:Circuit_de_1.zip]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Clé USB &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Afin de concevoir notre clé usb nous sommes avons choisi comme base de travail cette clé usb: [[File:cle_usb_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour l'amélioration de notre clé usb nous avons décider de faire un vu mètre avec des leds. Apres avoir discuté de cela avec nos professeurs ce qui nous a été conseillé est un registre à décalage.&lt;br /&gt;
&lt;br /&gt;
--description du fonctionnement à faire--&lt;br /&gt;
&lt;br /&gt;
Principe du registre à décalage :&lt;br /&gt;
Pour notre clé, on utilise un registre à décalage 75HC595 (8 bits). il permet de convertir une information série en parallèle. Mais on l'utilise aussi pour économiser le nombre de broche utilisée en sortie.&lt;br /&gt;
&lt;br /&gt;
Les différentes étapes sont : -1- On place la valeur sur la broche DS&lt;br /&gt;
                              -2- La broche SH_CP est mise à 1 (la valeur de la broche DS avance donc dans le registre)&lt;br /&gt;
                              -3- Remise à 0 de la broche SH_CP (on place la valeur du bit suivant sur la broche DS)&lt;br /&gt;
                              -4- La broche SH_CP est mise à nouveau à 1&lt;br /&gt;
                              -5- Les étapes 3 et 4 sont répétées autant de fois que nécessaire pour remplir le registre&lt;br /&gt;
                              -6- La broche ST_CP est mise à 1 (les valeurs présentent dans le registre sont copiées sur &lt;br /&gt;
                                 les sortie Qn)&lt;br /&gt;
Comme on peut le voir, il y a 2 grandes phases : La première on place les données que l'on veut, la deuxième est la validation des données.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici notre registre à décalage: [[Fichier:Registre a decalage.png|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant réussir à faire fonctionner tout ça via un code&lt;br /&gt;
Voici un début de code permettant de faire fonctionner ce registre à décalage :&lt;br /&gt;
&lt;br /&gt;
//constantes pour les broches de commande du 74HC595&lt;br /&gt;
int DS_pin = 8;   // broche de donnée&lt;br /&gt;
int STCP_pin = 9; // broche de validation de la donnée&lt;br /&gt;
int SHCP_pin = 10;// broche de validation compléte (latch)&lt;br /&gt;
&lt;br /&gt;
boolean registre[8]; //c'est un tableau de 8 bit correspondant aux sorties du 74HC595 à l'état voulu&lt;br /&gt;
                      // pour se programme j'ai fait le choix du tableau car cela reste simple pour un tutoriel&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    //configure les broches en sortie&lt;br /&gt;
    pinMode(DS_pin,OUTPUT);&lt;br /&gt;
    pinMode(STCP_pin,OUTPUT);&lt;br /&gt;
    pinMode(SHCP_pin,OUTPUT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Cette fonction &amp;quot;écrit&amp;quot; le contenu du tableau dans le registre&lt;br /&gt;
//pour chaque bit, on met la brohe de validation du bit à 0, on place la broche de donnée à l'état contenu dans le tableau et ensuite on valide le bit&lt;br /&gt;
//à la fin on valide le tout&lt;br /&gt;
void EcrireRegistre()&lt;br /&gt;
{&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(STCP_pin, LOW);&lt;br /&gt;
  &lt;br /&gt;
  for (int i = 7; i&amp;gt;=0; i--)&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(SHCP_pin, LOW);&lt;br /&gt;
    digitalWrite(DS_pin, registre[i] );&lt;br /&gt;
    digitalWrite(SHCP_pin, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(STCP_pin, HIGH);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Dans la boucle du programme plusieurs séquences différentes sont jouées&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
   //Allume successivement les sorties&lt;br /&gt;
   for(int i = 0; i&amp;lt;8; i++)&lt;br /&gt;
   {&lt;br /&gt;
    registre[i] = HIGH;&lt;br /&gt;
    delay(300);&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //éteint successivement les sorties&lt;br /&gt;
   for(int i = 7; i&amp;gt;=0; i--)&lt;br /&gt;
   {&lt;br /&gt;
    registre[i] = LOW;&lt;br /&gt;
    delay(300);&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
  &lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //séquence qui allume une LED sur 2 alternativement&lt;br /&gt;
    bool b = 0;&lt;br /&gt;
    for(int i = 0; i&amp;lt;4; i++)&lt;br /&gt;
    {&lt;br /&gt;
        &lt;br /&gt;
      for(int j = 0; j&amp;lt;8; j++)&lt;br /&gt;
      {&lt;br /&gt;
        registre[j] = j%2 xor b;&lt;br /&gt;
      }&lt;br /&gt;
      EcrireRegistre();&lt;br /&gt;
      b = not b;&lt;br /&gt;
      delay(300);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //remise à zéro de toutes les LED&lt;br /&gt;
    for(int j = 0; j&amp;lt;8; j++)&lt;br /&gt;
    {&lt;br /&gt;
      registre[j] = 0;&lt;br /&gt;
    }&lt;br /&gt;
    EcrireRegistre();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Fichier Fritzing ( je n'arrive pas à importer les composants de la parties mémoire ): [[Fichier:Cle usb black roussel.zip]]&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=12208</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=12208"/>
				<updated>2020-05-04T08:13:43Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Introduction &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Partie Réflexion &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Composants &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire faible capacité (64Mb) avec l'AT45DB641E-SHN2B-T ou une grande capacité mais plus difficile à souder (128Gb) avec l'MT29F128G8&lt;br /&gt;
&lt;br /&gt;
TUSB4041I Four-Port USB 2.0 Hub&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Test ReX 15/03/2020 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Test ReX 15/03/2020&lt;br /&gt;
Après quelques soudures le programme suivant passe sur l'ATtiny84 :&lt;br /&gt;
&lt;br /&gt;
 #define MAX_LED 7&lt;br /&gt;
 int leds[]={0,1,2,3,4,5,6};&lt;br /&gt;
 void setup() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) pinMode(leds[i], OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 void loop() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], HIGH);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], LOW);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Démonstration de l'exécution : [[media:binome2019-9-test1.mp4]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Projet Intermédiaire: Le dé électronique &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a permis de prendre en main le logiciel Fritzing et Arduino IDE, ce qui nous sera utile par la suite pour la conception de la clé USB.&lt;br /&gt;
&lt;br /&gt;
Tout d'abord nous avons élaboré les plans de notre dé en vue schématique, ce qui nous permet d'y voir plus clair et de mieux comprendre notre carte. &lt;br /&gt;
Après avoir effectué notre schématique (schéma1), celui-ci est indispensable car dès que l'on se retrouve avec beaucoup de composant, on s'y perd facilement, l'erreur est donc plus facilement détectable et il est conseiller d'utiliser des label pour facilité la compréhension.&lt;br /&gt;
&lt;br /&gt;
 Le schéma finit, il faut maintenant agencer les composants de sorte qu'aucunes pistes ne se croisent sur notre circuit imprimé (schéma 2).&lt;br /&gt;
&lt;br /&gt;
Voici une photo de la vue schématique et du circuit imprimé&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:schéma1_de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier:schéma 2 de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier:schéma 3 de.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par la suite nos avons soudé sur notre circuit les 7 leds et 7 résistances, un travail minutieux et assez compliqué, surtout pour les premières soudures.&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a coder notre microcontroleur, pour ce faire on utilise l'Arduino IDE.&lt;br /&gt;
Le code ci-dessous va nous permettre d'afficher un nombre aléatoire entre 1 et 6.&lt;br /&gt;
Lorsque l'on va venir presser le bouton, un roulement de tambour va s'effectuer en affichant aléatoirement des chiffres à la suite et pour finir le nombre aléatoire choisi va se figer.&lt;br /&gt;
&lt;br /&gt;
Voici le code:&lt;br /&gt;
//========FONCTIONS PERSONALISEES - Il s'agit de fonctions créées sur mesure pour nos besoins&lt;br /&gt;
&lt;br /&gt;
void toutEteindre() { //Cette fonction permet d'éteindre toutes les leds. Elle est de type &amp;quot;void&amp;quot; car elle ne revoit aucune valeur: elle se content d'exécuter les instructions.&lt;br /&gt;
  digitalWrite(0, LOW); //Eteindre la led 1&lt;br /&gt;
  digitalWrite(1, LOW); //Eteindre la led 2&lt;br /&gt;
  digitalWrite(2, LOW); //Eteindre la led 3&lt;br /&gt;
  digitalWrite(3, LOW); //Eteindre la led 4&lt;br /&gt;
  digitalWrite(4, LOW); //Eteindre la led 5&lt;br /&gt;
  digitalWrite(5, LOW); //Eteindre la led 6&lt;br /&gt;
  digitalWrite(6, LOW); //Eteindre la led 7&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void afficher(int nb) { //Cette fonction permet d'allumer les bonnes leds en fonction du nombre choisi.&lt;br /&gt;
  //Elle prend en paramètre le nombre que l'on veut afficher.&lt;br /&gt;
  switch (nb) { //C'est pareil qu'un if sauf que le if prend que des valeurs booléennes&lt;br /&gt;
    case 1: &lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break; &lt;br /&gt;
    case 2: &lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 3:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 5:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      digitalWrite(4, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
    case 6:&lt;br /&gt;
      digitalWrite(0, HIGH);&lt;br /&gt;
      digitalWrite(1, HIGH);&lt;br /&gt;
      digitalWrite(2, HIGH);&lt;br /&gt;
      digitalWrite(3, HIGH);&lt;br /&gt;
      digitalWrite(5, HIGH);&lt;br /&gt;
      digitalWrite(6, HIGH);&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int chercher() {  &lt;br /&gt;
  return random(1, 7);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//=================================================&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(0, OUTPUT); &lt;br /&gt;
  pinMode(1, OUTPUT);&lt;br /&gt;
  pinMode(2, OUTPUT);&lt;br /&gt;
  pinMode(3, OUTPUT);&lt;br /&gt;
  pinMode(4, OUTPUT);&lt;br /&gt;
  pinMode(5, OUTPUT);&lt;br /&gt;
  pinMode(6, OUTPUT);&lt;br /&gt;
  pinMode(9,INPUT_PULLUP);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (digitalRead(9) ==   LOW) { &lt;br /&gt;
 &lt;br /&gt;
    for (int i = 1; i &amp;lt;= random(8, 15); i++) { // On fait defiler plusieurs nombre pour le suspens&lt;br /&gt;
      afficher(chercher()); &lt;br /&gt;
      delay(200); &lt;br /&gt;
      toutEteindre(); &lt;br /&gt;
    }&lt;br /&gt;
    afficher(chercher()); //On affiche le &amp;quot;vrai&amp;quot; chiffre.&lt;br /&gt;
    delay(3000); &lt;br /&gt;
    toutEteindre(); &lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le résultat final en vidéo et quelques photos de notre circuit imprimé final: [[Fichier: 20200328_165241.mp4|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Photo1 de.jpg|thumb|center|200px]]&lt;br /&gt;
[[Fichier: photo2 de.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
voici le Fritzing de notre dé: [[File:Circuit_de_1.zip]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 25px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #2E64FE; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Clé USB &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Afin de concevoir notre clé usb nous sommes avons choisi comme base de travail cette clé usb: [[File:cle_usb_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour l'amélioration de notre clé usb nous avons décider de faire un vu mètre avec des leds. Apres avoir discuté de cela avec nos professeurs ce qui nous a été conseillé est un registre à décalage.&lt;br /&gt;
&lt;br /&gt;
--description du fonctionnement à faire--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici notre registre à décalage: [[Fichier:Registre a decalage.png|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fichier Fritzing ( je n'arrive pas à importer les composants de la parties mémoire ): [[Fichier:Cle usb black roussel.zip]]&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=11338</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=11338"/>
				<updated>2020-03-26T17:31:22Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /* Projet Intermédiaire: Le dé électronique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Partie Réflexion=&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
=Composants=&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire faible capacité (64Mb) avec l'AT45DB641E-SHN2B-T ou une grande capacité mais plus difficile à souder (128Gb) avec l'MT29F128G8&lt;br /&gt;
&lt;br /&gt;
TUSB4041I Four-Port USB 2.0 Hub&lt;br /&gt;
&lt;br /&gt;
= Test ReX 15/03/2020 =&lt;br /&gt;
Après quelques soudures le programme suivant passe sur l'ATtiny84 :&lt;br /&gt;
&lt;br /&gt;
 #define MAX_LED 7&lt;br /&gt;
 int leds[]={0,1,2,3,4,5,6};&lt;br /&gt;
 void setup() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) pinMode(leds[i], OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 void loop() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], HIGH);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], LOW);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Démonstration de l'exécution : [[media:binome2019-9-test1.mp4]].&lt;br /&gt;
&lt;br /&gt;
== Projet Intermédiaire: Le dé électronique==&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a permis de prendre en main le logiciel Fritzing et Arduino IDE.&lt;br /&gt;
&lt;br /&gt;
Tout d'abord nous avons élaboré les plans de notre dé en vue schématique, ce qui nous permet d'y voir plus clair sur notre PCB. Il fallait agencer les composants de sorte qu'aucunes pistes ne se croisent.&lt;br /&gt;
&lt;br /&gt;
Voici une photo de la vue schématique:&lt;br /&gt;
&lt;br /&gt;
[[Fichier:schéma 1.png]] &lt;br /&gt;
[[Fichier:schéma 2.png]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par la suite nos avons soudé sur notre circuit les 7 leds et 7 résistances, un travail très minutieux et assez compliqué.&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a coder notre microcontroleur, pour ce faire on utilise l'Arduino IDE&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=11337</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=11337"/>
				<updated>2020-03-26T17:30:27Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /* Projet Intermédiaire: Le dé électronique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Partie Réflexion=&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
=Composants=&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire faible capacité (64Mb) avec l'AT45DB641E-SHN2B-T ou une grande capacité mais plus difficile à souder (128Gb) avec l'MT29F128G8&lt;br /&gt;
&lt;br /&gt;
TUSB4041I Four-Port USB 2.0 Hub&lt;br /&gt;
&lt;br /&gt;
= Test ReX 15/03/2020 =&lt;br /&gt;
Après quelques soudures le programme suivant passe sur l'ATtiny84 :&lt;br /&gt;
&lt;br /&gt;
 #define MAX_LED 7&lt;br /&gt;
 int leds[]={0,1,2,3,4,5,6};&lt;br /&gt;
 void setup() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) pinMode(leds[i], OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 void loop() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], HIGH);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], LOW);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Démonstration de l'exécution : [[media:binome2019-9-test1.mp4]].&lt;br /&gt;
&lt;br /&gt;
== Projet Intermédiaire: Le dé électronique==&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a permis de prendre en main le logiciel Fritzing et Arduino IDE.&lt;br /&gt;
&lt;br /&gt;
Tout d'abord nous avons élaboré les plans de notre dé en vue schématique, ce qui nous permet d'y voir plus clair sur notre PCB. Il fallait agencer les composants de sorte qu'aucunes pistes ne se croisent.&lt;br /&gt;
&lt;br /&gt;
Voici une photo de la vue schématique:&lt;br /&gt;
&lt;br /&gt;
[[Fichier:schéma 1.png]] &lt;br /&gt;
[[Fichier:schéma 2.png]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par la suite nos avons soudé sur notre circuit les 7 leds et 7 résistances, un travail très minutieux et assez compliqué.&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a coder notre microcontroleur, pour ce faire on utilise l'Arduino IDE&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi d'opter pour la clé USB déjà testée  par les encadrants. &lt;br /&gt;
Nous avons cherché un capteur thermique &amp;quot;de surface&amp;quot; pour pouvoir le souder plus facilement sur notre clé. Voici à quoi il ressemble :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MCP9808T-E/MC arduino [https://fr.farnell.com/microchip/mcp9804-e-ms/capteur-de-temperature-i2c-2-7v/dp/1825061/ Lien pour retrouver le capteur thermique]&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=11336</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=11336"/>
				<updated>2020-03-26T17:27:35Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /*  Séance du 10/02/2020 : organisation du wiki et recherche composants  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Partie Réflexion=&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
=Composants=&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire faible capacité (64Mb) avec l'AT45DB641E-SHN2B-T ou une grande capacité mais plus difficile à souder (128Gb) avec l'MT29F128G8&lt;br /&gt;
&lt;br /&gt;
TUSB4041I Four-Port USB 2.0 Hub&lt;br /&gt;
&lt;br /&gt;
= Test ReX 15/03/2020 =&lt;br /&gt;
Après quelques soudures le programme suivant passe sur l'ATtiny84 :&lt;br /&gt;
&lt;br /&gt;
 #define MAX_LED 7&lt;br /&gt;
 int leds[]={0,1,2,3,4,5,6};&lt;br /&gt;
 void setup() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) pinMode(leds[i], OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 void loop() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], HIGH);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], LOW);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Démonstration de l'exécution : [[media:binome2019-9-test1.mp4]].&lt;br /&gt;
&lt;br /&gt;
== Projet Intermédiaire: Le dé électronique==&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a permis de prendre en main le logiciel Fritzing et Arduino IDE.&lt;br /&gt;
&lt;br /&gt;
Tout d'abord nous avons élaboré les plans de notre dé en vue schématique, ce qui nous permet d'y voir plus clair sur notre PCB. Il fallait agencer les composants de sorte qu'aucunes pistes ne se croisent.&lt;br /&gt;
&lt;br /&gt;
Voici une photo de la vue schématique:&lt;br /&gt;
&lt;br /&gt;
[[Fichier:schéma 1.png|200px|thumb|rignt|schéma microcontroleur]] &lt;br /&gt;
[[Fichier:schéma 2.png|200px|thumb|rignt|schema leds]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par la suite nos avons soudé sur notre circuit les 7 leds et 7 résistances, un travail très minutieux et assez compliqué.&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a coder notre microcontroleur, pour ce faire on utilise l'Arduino IDE&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi d'opter pour la clé USB déjà testée  par les encadrants. &lt;br /&gt;
Nous avons cherché un capteur thermique &amp;quot;de surface&amp;quot; pour pouvoir le souder plus facilement sur notre clé. Voici à quoi il ressemble :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MCP9808T-E/MC arduino [https://fr.farnell.com/microchip/mcp9804-e-ms/capteur-de-temperature-i2c-2-7v/dp/1825061/ Lien pour retrouver le capteur thermique]&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=11335</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=11335"/>
				<updated>2020-03-26T17:26:20Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /* Projet Intermédiaire: Le dé électronique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Partie Réflexion=&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
=Composants=&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire faible capacité (64Mb) avec l'AT45DB641E-SHN2B-T ou une grande capacité mais plus difficile à souder (128Gb) avec l'MT29F128G8&lt;br /&gt;
&lt;br /&gt;
TUSB4041I Four-Port USB 2.0 Hub&lt;br /&gt;
&lt;br /&gt;
= Test ReX 15/03/2020 =&lt;br /&gt;
Après quelques soudures le programme suivant passe sur l'ATtiny84 :&lt;br /&gt;
&lt;br /&gt;
 #define MAX_LED 7&lt;br /&gt;
 int leds[]={0,1,2,3,4,5,6};&lt;br /&gt;
 void setup() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) pinMode(leds[i], OUTPUT);&lt;br /&gt;
 }&lt;br /&gt;
 void loop() {&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], HIGH);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
   for(i=0;i&amp;lt;MAX_LED;i++) digitalWrite(leds[i], LOW);&lt;br /&gt;
   delay(1000);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Démonstration de l'exécution : [[media:binome2019-9-test1.mp4]].&lt;br /&gt;
&lt;br /&gt;
== Projet Intermédiaire: Le dé électronique==&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a permis de prendre en main le logiciel Fritzing et Arduino IDE.&lt;br /&gt;
&lt;br /&gt;
Tout d'abord nous avons élaboré les plans de notre dé en vue schématique, ce qui nous permet d'y voir plus clair sur notre PCB. Il fallait agencer les composants de sorte qu'aucunes pistes ne se croisent.&lt;br /&gt;
&lt;br /&gt;
Voici une photo de la vue schématique:&lt;br /&gt;
&lt;br /&gt;
[[Fichier:schéma 1.png|200px|thumb|rignt|schéma microcontroleur]] &lt;br /&gt;
[[Fichier:schéma 2.png|200px|thumb|rignt|schema leds]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par la suite nos avons soudé sur notre circuit les 7 leds et 7 résistances, un travail très minutieux et assez compliqué.&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a coder notre microcontroleur, pour ce faire on utilise l'Arduino IDE&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #C2E5FF; vertical-align: top; width: 98%;&amp;quot;&amp;gt; '''Séance du 10/02/2020 : organisation du wiki et recherche composants''' &amp;lt;/div&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi d'opter pour la clé USB déjà testée  par les encadrants. &lt;br /&gt;
Nous avons cherché un capteur thermique &amp;quot;de surface&amp;quot; pour pouvoir le souder plus facilement sur notre clé. Voici à quoi il ressemble :&lt;br /&gt;
[[Fichier:Capteure.png]]&lt;br /&gt;
&lt;br /&gt;
MCP9808T-E/MC arduino [https://fr.farnell.com/microchip/mcp9804-e-ms/capteur-de-temperature-i2c-2-7v/dp/1825061/ Lien pour retrouver le capteur thermique]&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10871</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10871"/>
				<updated>2020-02-10T09:40:57Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /* Composants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Partie Réflexion==&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
==Composants==&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire faible capacité (64Mb) avec l'AT45DB641E-SHN2B-T ou une grande capacité mais plus difficile à souder (128Gb) avec l'MT29F128G8&lt;br /&gt;
&lt;br /&gt;
TUSB4041I Four-Port USB 2.0 Hub&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10850</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10850"/>
				<updated>2020-02-10T09:22:56Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /* Composants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Partie Réflexion==&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
==Composants==&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire faible capacité (64Mb) avec l'AT45DB641E-SHN2B-T ou une grande capacité mais plus difficile à souder (128Gb) avec l'MT29F128G8&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10847</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10847"/>
				<updated>2020-02-10T09:21:41Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /* Composants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Partie Réflexion==&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
==Composants==&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire faible capacité (64Mb)  MT29F128G8&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10845</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10845"/>
				<updated>2020-02-10T09:21:09Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /* Composants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Partie Réflexion==&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
==Composants==&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;br /&gt;
*une mémoire  MT29F128G8&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10844</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10844"/>
				<updated>2020-02-10T09:18:05Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /* Composants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Partie Réflexion==&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
==Composants==&lt;br /&gt;
&lt;br /&gt;
*Le coeur qui va être un micro-contrôleur AVR plus exactement l'ATMega16u2.&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10841</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10841"/>
				<updated>2020-02-10T09:16:42Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Partie Réflexion==&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
==Composants==&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10840</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10840"/>
				<updated>2020-02-10T09:15:37Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Dans ce BE, l'objectif est de réaliser une clé usb avoir une ou plusieurs fonctionnalités originales. La première partie est donc de réflechir à différentes idées de fonctions à introduire sur cette clé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Partie Réflexion==&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10793</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10793"/>
				<updated>2020-02-10T08:46:59Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /* Partie Réflexion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Partie Réflexion==&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2019-2020&amp;diff=10789</id>
		<title>BE 2019-2020</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2019-2020&amp;diff=10789"/>
				<updated>2020-02-10T08:44:12Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /* Réalisations des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation du bureau d'étude =&lt;br /&gt;
&lt;br /&gt;
Nous vous proposons de découvrir ce qu'est réellement cet objet devenu banal appelé clé USB (Universal Serial Bus).&lt;br /&gt;
&lt;br /&gt;
[[File:Firefly-serenity-usb-flash-drive.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
Le bureau d'étude consiste à construire de A à Z une clé USB :&lt;br /&gt;
* en créant un circuit électronique ou PCB (Printed Circuit Board) à l’aide d’un logiciel ;&lt;br /&gt;
* en soudant des composants électroniques (micro-contrôleur, mémoire FLASH, ...) ;&lt;br /&gt;
* en programmant le micro-contrôleur pour gérer la communication USB en utilisant la bibliothèque LUFA (Lightweight USB Framework for AVRs) ;&lt;br /&gt;
* en programmant le micro-contrôleur pour accéder à la mémoire ;&lt;br /&gt;
* en fabriquant un beau boitier pour votre clef.&lt;br /&gt;
&lt;br /&gt;
Pour personnaliser votre clé n'hésitez pas à ajouter des fonctionnalités :&lt;br /&gt;
* LED qui clignotent lors des accès en lecture ou écriture ;&lt;br /&gt;
* vumètre qui indique le remplissage de la clé ;&lt;br /&gt;
* micro-interrupteurs pour verrouiller la clé ;&lt;br /&gt;
* vibreur parce que c'est possible, vous trouverez bien une justification ;&lt;br /&gt;
* microphone permettant d’espionner les conversations ;&lt;br /&gt;
* toute autre fonction plus ou moins utile mais qui vous inspire ...&lt;br /&gt;
&lt;br /&gt;
Les supports de la présentation de ce bureau d'études : [[Media:BE_clef_USB.pdf]].&lt;br /&gt;
&lt;br /&gt;
= Survol d'USB =&lt;br /&gt;
&lt;br /&gt;
== Evolution des connexions USB ==&lt;br /&gt;
&lt;br /&gt;
L'acronyme USB signifie &amp;quot;Universal Serial Bus&amp;quot; et effectivement l'USB peut être défini comme un bus USB très verbeux. L'USB est géré par un consortium autonome &amp;quot;USB Implementers Forum&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:USB-2.png|thumb|left|300px]] Jusqu'à la version 2, l'acronyme est fidèle à la réalité. Pour ces périphériques, 3 vitesses de transfert sont possibles sur la paire différentielle :&lt;br /&gt;
* basse vitesse : 1,5 Mb/s ;&lt;br /&gt;
* pleine vitesse : 12 Mb/s ;&lt;br /&gt;
* haute vitesse : 480 Mb/s.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
[[File:USB-3.jpg|thumb|right|300px]] A partir de l'USB 3.0, la notion de bus série est un peu oubliée. La vitesse augmente en utilisant les deux nouvelles paires blindées : 5Gb/s (super vitesse).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
[[File:USB-4.png|thumb|left|500px]] Et maintenant USB (USB 3.1, USB 3.2, USB 4) se prend pour de l'Ethernet. En effet, le connecteur USB-C ajoute, à la paire historique, quatre paires blindées. USB 3.2 promet des vitesses jusqu'à 20G/s.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Un protocole verbeux ==&lt;br /&gt;
&lt;br /&gt;
[[File:USB-communication.gif|thumb|left|600px]]&lt;br /&gt;
L'initialisation d'un périphérique USB se fait comme suit :&lt;br /&gt;
* détection électrique de la connexion du périphérique ;&lt;br /&gt;
* alimentation électrique du périphérique ;&lt;br /&gt;
* utilisation de l'adresse temporaire 0 sur le bus ;&lt;br /&gt;
* récupération de la taille des messages pour le point d'accès 0 ;&lt;br /&gt;
* envoi de l'adresse au périphérique sur le point d'accès 0 ;&lt;br /&gt;
* envoi des descripteurs du périphérique au contrôleur USB via le point d'accès 0.&lt;br /&gt;
Pour un périphérique simple :&lt;br /&gt;
* souris : environ 100 octets pour le descripteur de configuration ;&lt;br /&gt;
* clavier : environ 150 octets pour le descripteur de configuration.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:USB-descripteurs.gif|thumb|right|700px]]&lt;br /&gt;
Les points d'accès (terminaison sur le schéma) :&lt;br /&gt;
* des identifiants sur 8 bits (numéro sur 4 bits) ;&lt;br /&gt;
* un point d'accès de contrôle de numéro 0 bidirectionnel ;&lt;br /&gt;
* les communications se font de ou vers les points d'accès ;&lt;br /&gt;
* un sens de communication (bit de poid fort) :&lt;br /&gt;
** IN =&amp;gt; du périphérique vers le contrôleur ;&lt;br /&gt;
** OUT =&amp;gt; du contrôleur vers le périphérique.&lt;br /&gt;
* la direction est IN ou OUT vis à vis de l’hôte.&lt;br /&gt;
Plusieurs types de points d'accès :&lt;br /&gt;
* isodromique (isochronous) : débit réservé (e.g. vidéo en temps réel) ;&lt;br /&gt;
* par interruption (interrupt) : latence garantie (e.g. souris) ;&lt;br /&gt;
* de volume (bulk) : débit maximal sans garantie (e.g. clef mémoire).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Logiciels =&lt;br /&gt;
&lt;br /&gt;
Pour la conception de circuits imprimés nous vous recommandons le logiciel [http://fritzing.org/home/ fritzing].&lt;br /&gt;
&lt;br /&gt;
Pour la découpe laser de nombreux utilisateurs utilisent [https://inkscape.org/fr/ inkscape].&lt;br /&gt;
&lt;br /&gt;
Pour la conception 3D vous pouvez tenter [http://www.freecadweb.org/?lang=fr_FR freeCAD]. Une solution en ligne existe : [https://www.onshape.com/ onshape].&lt;br /&gt;
&lt;br /&gt;
Pour la programmation du micro-contrôleur vous utiliserez le compilateur C &amp;lt;tt&amp;gt;avr-gcc&amp;lt;/tt&amp;gt; et le logiciel de téléversement &amp;lt;tt&amp;gt;dfu-programmer&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Les composants électroniques =&lt;br /&gt;
&lt;br /&gt;
[[File:atmega16u2.png|thumb|left|200px|ATMega16u2]]&lt;br /&gt;
Le coeur de votre clé va être un micro-contrôleur AVR plus exactement l'ATMega16u2. Ce micro-contrôleur possède l'électronique nécessaire pour la gestion d'un bus USB 2.0.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:adesto64Mb.jpg|thumb|left|200px|AT45DB641E-SHN2B-T]]&lt;br /&gt;
[[File:MT29F128G08.jpg|thumb|right|200px|MT29F128G8]]&lt;br /&gt;
Sans mémoire une clé n'est pas une clé. Vous utiliserez des mémoires faciles à gérer avec un ATMega16u2. Ces mémoires sont accessibles par un bus série SPI et facile à souder. Par contre elles sont de faible capacité (64Mb). Si vous êtes téméraire, vous pouvez utiliser une mémoire accessible par un bus de 8 bits, plus difficile à souder, plus difficile à programmer mais d'une capacité intéressante (128Gb). &lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il vous faudra aussi quelques autres composants comme un quartz, des résistances, des condensateurs, des diodes, des régulateurs de tension et bien sur des LED pour ajouter un peu de lumière. La carte de base peut être décrite comme suit.&lt;br /&gt;
* Le micro-contrôleur peut être accompagné d'un quartz à 8Mhz et de ses condensateurs et résistance.&lt;br /&gt;
* Le micro-contrôleur peut être alimenté par le connecteur USB en 5v (broche UVCC) mais avec ses lignes VCC et AVCC bouclées sur la sortie UCAP du régulateur 3.3v interne.&lt;br /&gt;
* Un convertisseur 5v vers 3.3v est nécessaire pour l'alimentation des mémoires.&lt;br /&gt;
* Le micro-contrôleur dialogue avec les mémoires par le bus SPI, une ligne de sélection est nécessaire par mémoire.&lt;br /&gt;
&lt;br /&gt;
Pour la conception de votre clé vous pouvez vous appuyer sur un prototype de clef réalisé pour ce bureau d'études.&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usb_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
Le schéma décrit le circuit électronique partie par partie.&lt;br /&gt;
A partir du circuit, il faut créer une carte sans croisement de pistes pour éviter les court-circuits.&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usb.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Une autre carte est disponible pour une mémoire parallèle de plus grande capacité. Attention cette carte n'a pas été testée.&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_bis_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usb_bis_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usb_bis.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= Test des cartes =&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_recto.jpg|thumb|left|400px|Recto des deux cartes]]&lt;br /&gt;
[[File:cle_usb_verso.jpg|thumb|right|400px|Verso des deux cartes]]&lt;br /&gt;
Vision recto et verso des deux circuits décrit dans la section précédente (ancienne version à gauche). A noter que dans l'ancienne version seule les deux puces mémoire se trouvent au recto. Pour la nouvelle version la carte a du être agrandie et le micro-contrôleur rejoint la mémoire au verso.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape de test consiste à insérer les PCB dans un port USB. Remarquez la sur-épaisseur réalisée à l'aide d'un papier un peu épais pour assurer le contact. Si l'ATMega16u2 est fonctionne correctement, en lançant l'utilitaire &amp;lt;tt&amp;gt;lsusb&amp;lt;/tt&amp;gt; vous devez voir apparaître un périphérique labellé &amp;lt;tt&amp;gt;Atmel DFU device&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour tester plus en avant, il est proposé d'envoyer sur le micro-contrôleur un programme permettant de faire clignoter la LED connectée au micro-contrôleur (la LED est contrôlée par PB6 sur l'ancienne version et sur PB0 sur la nouvelle).&lt;br /&gt;
&lt;br /&gt;
Vous pouvez trouver les programmes de test dans cette archive : [[Media:ClefUSB.zip]]. Pour compiler les programmes, il suffit de se placer dans le répertoire correspondant à la version de la clef et lancer le &amp;lt;tt&amp;gt;makefile&amp;lt;/tt&amp;gt; avec la commande &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;. Pour télécharger le programme un simple &amp;lt;tt&amp;gt;make upload&amp;lt;/tt&amp;gt; suffit. Pour remettre les micro-contrôleur en mode DFU pour les reprogrammer, il faut court-circuiter les broches &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; et de la masse (connecteur à deux broches sur les deux cartes).&lt;br /&gt;
&lt;br /&gt;
Voila le résultat de l'exécution du programme de test du micro-contrôleur sur la nouvelle version : [[Media:ClefUSBTestLed.mp4]].&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant souder le régulateur 3,3v pour alimenter les mémoires et aussi souder les-dites mémoires.&lt;br /&gt;
&lt;br /&gt;
Ensuite il faut tester si l'accès aux mémoires fonctionne. Les programmes sont différents suivant les types de mémoire.&lt;br /&gt;
&lt;br /&gt;
== Test des mémoires AT45DB641E ==&lt;br /&gt;
&lt;br /&gt;
Pour tester un des deux mémoires, il faut déjà sélectionner la mémoire sur le bus SPI. La première mémoire se sélectionne en passant la ligne &amp;lt;tt&amp;gt;PD0&amp;lt;/tt&amp;gt; à l'état bas. Pour la seconde mémoire, il faut utiliser la ligne &amp;lt;tt&amp;gt;PB5&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour tester la mémoire, il est possible de demander la valeur du registre d'état. Pour cela il faut envoyer l'octet &amp;lt;tt&amp;gt;0xD7&amp;lt;/tt&amp;gt; sur le bus SPI, une fois la mémoire sélectionnée. Ensuite, il faut lire les deux octets du registre d'état puis remonter la ligne de sélection à l'état haut.&lt;br /&gt;
&lt;br /&gt;
== Test de la mémoire MT29F128G8 ==&lt;br /&gt;
&lt;br /&gt;
Cette mémoire est sélectionnée par défaut. Il faut juste arriver à lui envoyer un ordre en utilisant les 8 lignes de contrôle.&lt;br /&gt;
&lt;br /&gt;
= Bibliothèque LUFA =&lt;br /&gt;
&lt;br /&gt;
Pour la gestion du bus USB par le micro-contrôleur nous allons nous appuyer au maximum sur la bibliothèque USB LUFA. Cette bibliothèque permet d'exploiter plus facilement les aspects USB des micro-contrôleurs AVR comme l'ATMega16u2.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez télécharger la dernière version de la bibliothèque [http://www.fourwalledcubicle.com/LUFA.php]. Il est ensuite conseillé d'effectuer quelques manipulations pour pouvoir développer dans de bonnes conditions.&lt;br /&gt;
* Créez un répertoire &amp;lt;tt&amp;gt;PolytechLille&amp;lt;/tt&amp;gt; au même niveau que les répertoires &amp;lt;tt&amp;gt;Demos&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;Projects&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Dans ce répertoire copiez la démonstration de périphérique USB bas niveau &amp;lt;tt&amp;gt;MassStorage&amp;lt;/tt&amp;gt;. Au niveau du &amp;lt;tt&amp;gt;makefile&amp;lt;/tt&amp;gt; indiquez &amp;lt;tt&amp;gt;atmega16u2&amp;lt;/tt&amp;gt; comme micro-contrôleur, &amp;lt;tt&amp;gt;UNO&amp;lt;/tt&amp;gt; comme platine et restez à 8Mhz.&lt;br /&gt;
* Il faut ensuite modifier la configuration de la mémoire et les fonctions d'accès à cette mémoire dans le sous-répertoire &amp;lt;tt&amp;gt;Lib&amp;lt;/tt&amp;gt; du répertoire &amp;lt;tt&amp;gt;PolytechLille/MassStorage&amp;lt;/tt&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
Pour téléverser votre programme sur l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt;, le paquetage Debian &amp;lt;tt&amp;gt;dfu-programmer&amp;lt;/tt&amp;gt; est nécessaire. Installez-le au besoin. La procédure à suivre pour charger votre programme sur l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt; est la suivante :&lt;br /&gt;
&lt;br /&gt;
* court-circuitez momentanément les lignes reset et masse de l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt;, l'utilitaire &amp;lt;tt&amp;gt;lsusb&amp;lt;/tt&amp;gt; doit lister la carte comme étant en mode DFU, vous pouvez alors exécuter les commandes suivantes :&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 erase&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 flash MassStorage.hex&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 reset&amp;lt;/tt&amp;gt;&lt;br /&gt;
* débranchez et rebranchez votre carte, votre programme doit être actif sur le micro-contrôleur.&lt;br /&gt;
&lt;br /&gt;
= Réalisations des binômes =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Numéro !! Elèves !! Fonctionnalité supplémentaire !! Page&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 1&lt;br /&gt;
| Nicolas DEBAISIEUX &amp;amp; Maxence FLAMENT&lt;br /&gt;
| Affichage température par leds&lt;br /&gt;
| [[Binome2019-1|Binôme 1 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| Eve POITEVIN &amp;amp; Alix DUFOUR&lt;br /&gt;
| Déverrouillage par haut volume sonore&lt;br /&gt;
| [[Binome2019-2|Binôme 2 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| Corentin GIELIN &amp;amp; Julien DUMON&lt;br /&gt;
| Afficheurs 7-seg en tant que vumètre numérique&lt;br /&gt;
| [[Binome2019-3|Binôme 3 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| Clément DELECOURT &amp;amp; Thomas MOSTOWFI&lt;br /&gt;
| Signal mauvaise orientation&lt;br /&gt;
| [[Binome2019-4|Binôme 4 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Gaëtan DELPLANQUE &amp;amp; Tristan PAYEN&lt;br /&gt;
| Verrouillage code &lt;br /&gt;
| [[Binome2019-5|Binôme 5 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| Louise MAES &amp;amp; Léo POUMAER &lt;br /&gt;
| Ecran LCD + vumètre + affichage nom fichier&lt;br /&gt;
| [[Binome2019-6|Binôme 6 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Martin SERGEANT &amp;amp; Quirin DECAUDIN&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-7|Binôme 7 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Mateo POURRIER &amp;amp; Martin PLAUD&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-8|Binôme 8 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Baptiste BLACK &amp;amp; Alexandre ROUSSEL&lt;br /&gt;
| Hub + Vumètre&lt;br /&gt;
| [[Binome2019-9|Binôme 9 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 10&lt;br /&gt;
| Theo DELAUNOIS &amp;amp; Antoine MALENGE&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-10|Binôme 10 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 11&lt;br /&gt;
| Florian DERLIQUE &amp;amp; Ahimen BENDIF&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-11|Binôme 11 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2019-2020&amp;diff=10788</id>
		<title>BE 2019-2020</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2019-2020&amp;diff=10788"/>
				<updated>2020-02-10T08:43:57Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /* Réalisations des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation du bureau d'étude =&lt;br /&gt;
&lt;br /&gt;
Nous vous proposons de découvrir ce qu'est réellement cet objet devenu banal appelé clé USB (Universal Serial Bus).&lt;br /&gt;
&lt;br /&gt;
[[File:Firefly-serenity-usb-flash-drive.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
Le bureau d'étude consiste à construire de A à Z une clé USB :&lt;br /&gt;
* en créant un circuit électronique ou PCB (Printed Circuit Board) à l’aide d’un logiciel ;&lt;br /&gt;
* en soudant des composants électroniques (micro-contrôleur, mémoire FLASH, ...) ;&lt;br /&gt;
* en programmant le micro-contrôleur pour gérer la communication USB en utilisant la bibliothèque LUFA (Lightweight USB Framework for AVRs) ;&lt;br /&gt;
* en programmant le micro-contrôleur pour accéder à la mémoire ;&lt;br /&gt;
* en fabriquant un beau boitier pour votre clef.&lt;br /&gt;
&lt;br /&gt;
Pour personnaliser votre clé n'hésitez pas à ajouter des fonctionnalités :&lt;br /&gt;
* LED qui clignotent lors des accès en lecture ou écriture ;&lt;br /&gt;
* vumètre qui indique le remplissage de la clé ;&lt;br /&gt;
* micro-interrupteurs pour verrouiller la clé ;&lt;br /&gt;
* vibreur parce que c'est possible, vous trouverez bien une justification ;&lt;br /&gt;
* microphone permettant d’espionner les conversations ;&lt;br /&gt;
* toute autre fonction plus ou moins utile mais qui vous inspire ...&lt;br /&gt;
&lt;br /&gt;
Les supports de la présentation de ce bureau d'études : [[Media:BE_clef_USB.pdf]].&lt;br /&gt;
&lt;br /&gt;
= Survol d'USB =&lt;br /&gt;
&lt;br /&gt;
== Evolution des connexions USB ==&lt;br /&gt;
&lt;br /&gt;
L'acronyme USB signifie &amp;quot;Universal Serial Bus&amp;quot; et effectivement l'USB peut être défini comme un bus USB très verbeux. L'USB est géré par un consortium autonome &amp;quot;USB Implementers Forum&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:USB-2.png|thumb|left|300px]] Jusqu'à la version 2, l'acronyme est fidèle à la réalité. Pour ces périphériques, 3 vitesses de transfert sont possibles sur la paire différentielle :&lt;br /&gt;
* basse vitesse : 1,5 Mb/s ;&lt;br /&gt;
* pleine vitesse : 12 Mb/s ;&lt;br /&gt;
* haute vitesse : 480 Mb/s.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
[[File:USB-3.jpg|thumb|right|300px]] A partir de l'USB 3.0, la notion de bus série est un peu oubliée. La vitesse augmente en utilisant les deux nouvelles paires blindées : 5Gb/s (super vitesse).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
[[File:USB-4.png|thumb|left|500px]] Et maintenant USB (USB 3.1, USB 3.2, USB 4) se prend pour de l'Ethernet. En effet, le connecteur USB-C ajoute, à la paire historique, quatre paires blindées. USB 3.2 promet des vitesses jusqu'à 20G/s.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Un protocole verbeux ==&lt;br /&gt;
&lt;br /&gt;
[[File:USB-communication.gif|thumb|left|600px]]&lt;br /&gt;
L'initialisation d'un périphérique USB se fait comme suit :&lt;br /&gt;
* détection électrique de la connexion du périphérique ;&lt;br /&gt;
* alimentation électrique du périphérique ;&lt;br /&gt;
* utilisation de l'adresse temporaire 0 sur le bus ;&lt;br /&gt;
* récupération de la taille des messages pour le point d'accès 0 ;&lt;br /&gt;
* envoi de l'adresse au périphérique sur le point d'accès 0 ;&lt;br /&gt;
* envoi des descripteurs du périphérique au contrôleur USB via le point d'accès 0.&lt;br /&gt;
Pour un périphérique simple :&lt;br /&gt;
* souris : environ 100 octets pour le descripteur de configuration ;&lt;br /&gt;
* clavier : environ 150 octets pour le descripteur de configuration.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:USB-descripteurs.gif|thumb|right|700px]]&lt;br /&gt;
Les points d'accès (terminaison sur le schéma) :&lt;br /&gt;
* des identifiants sur 8 bits (numéro sur 4 bits) ;&lt;br /&gt;
* un point d'accès de contrôle de numéro 0 bidirectionnel ;&lt;br /&gt;
* les communications se font de ou vers les points d'accès ;&lt;br /&gt;
* un sens de communication (bit de poid fort) :&lt;br /&gt;
** IN =&amp;gt; du périphérique vers le contrôleur ;&lt;br /&gt;
** OUT =&amp;gt; du contrôleur vers le périphérique.&lt;br /&gt;
* la direction est IN ou OUT vis à vis de l’hôte.&lt;br /&gt;
Plusieurs types de points d'accès :&lt;br /&gt;
* isodromique (isochronous) : débit réservé (e.g. vidéo en temps réel) ;&lt;br /&gt;
* par interruption (interrupt) : latence garantie (e.g. souris) ;&lt;br /&gt;
* de volume (bulk) : débit maximal sans garantie (e.g. clef mémoire).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Logiciels =&lt;br /&gt;
&lt;br /&gt;
Pour la conception de circuits imprimés nous vous recommandons le logiciel [http://fritzing.org/home/ fritzing].&lt;br /&gt;
&lt;br /&gt;
Pour la découpe laser de nombreux utilisateurs utilisent [https://inkscape.org/fr/ inkscape].&lt;br /&gt;
&lt;br /&gt;
Pour la conception 3D vous pouvez tenter [http://www.freecadweb.org/?lang=fr_FR freeCAD]. Une solution en ligne existe : [https://www.onshape.com/ onshape].&lt;br /&gt;
&lt;br /&gt;
Pour la programmation du micro-contrôleur vous utiliserez le compilateur C &amp;lt;tt&amp;gt;avr-gcc&amp;lt;/tt&amp;gt; et le logiciel de téléversement &amp;lt;tt&amp;gt;dfu-programmer&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Les composants électroniques =&lt;br /&gt;
&lt;br /&gt;
[[File:atmega16u2.png|thumb|left|200px|ATMega16u2]]&lt;br /&gt;
Le coeur de votre clé va être un micro-contrôleur AVR plus exactement l'ATMega16u2. Ce micro-contrôleur possède l'électronique nécessaire pour la gestion d'un bus USB 2.0.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:adesto64Mb.jpg|thumb|left|200px|AT45DB641E-SHN2B-T]]&lt;br /&gt;
[[File:MT29F128G08.jpg|thumb|right|200px|MT29F128G8]]&lt;br /&gt;
Sans mémoire une clé n'est pas une clé. Vous utiliserez des mémoires faciles à gérer avec un ATMega16u2. Ces mémoires sont accessibles par un bus série SPI et facile à souder. Par contre elles sont de faible capacité (64Mb). Si vous êtes téméraire, vous pouvez utiliser une mémoire accessible par un bus de 8 bits, plus difficile à souder, plus difficile à programmer mais d'une capacité intéressante (128Gb). &lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il vous faudra aussi quelques autres composants comme un quartz, des résistances, des condensateurs, des diodes, des régulateurs de tension et bien sur des LED pour ajouter un peu de lumière. La carte de base peut être décrite comme suit.&lt;br /&gt;
* Le micro-contrôleur peut être accompagné d'un quartz à 8Mhz et de ses condensateurs et résistance.&lt;br /&gt;
* Le micro-contrôleur peut être alimenté par le connecteur USB en 5v (broche UVCC) mais avec ses lignes VCC et AVCC bouclées sur la sortie UCAP du régulateur 3.3v interne.&lt;br /&gt;
* Un convertisseur 5v vers 3.3v est nécessaire pour l'alimentation des mémoires.&lt;br /&gt;
* Le micro-contrôleur dialogue avec les mémoires par le bus SPI, une ligne de sélection est nécessaire par mémoire.&lt;br /&gt;
&lt;br /&gt;
Pour la conception de votre clé vous pouvez vous appuyer sur un prototype de clef réalisé pour ce bureau d'études.&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usb_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
Le schéma décrit le circuit électronique partie par partie.&lt;br /&gt;
A partir du circuit, il faut créer une carte sans croisement de pistes pour éviter les court-circuits.&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usb.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Une autre carte est disponible pour une mémoire parallèle de plus grande capacité. Attention cette carte n'a pas été testée.&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_bis_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usb_bis_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usb_bis.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= Test des cartes =&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_recto.jpg|thumb|left|400px|Recto des deux cartes]]&lt;br /&gt;
[[File:cle_usb_verso.jpg|thumb|right|400px|Verso des deux cartes]]&lt;br /&gt;
Vision recto et verso des deux circuits décrit dans la section précédente (ancienne version à gauche). A noter que dans l'ancienne version seule les deux puces mémoire se trouvent au recto. Pour la nouvelle version la carte a du être agrandie et le micro-contrôleur rejoint la mémoire au verso.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape de test consiste à insérer les PCB dans un port USB. Remarquez la sur-épaisseur réalisée à l'aide d'un papier un peu épais pour assurer le contact. Si l'ATMega16u2 est fonctionne correctement, en lançant l'utilitaire &amp;lt;tt&amp;gt;lsusb&amp;lt;/tt&amp;gt; vous devez voir apparaître un périphérique labellé &amp;lt;tt&amp;gt;Atmel DFU device&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour tester plus en avant, il est proposé d'envoyer sur le micro-contrôleur un programme permettant de faire clignoter la LED connectée au micro-contrôleur (la LED est contrôlée par PB6 sur l'ancienne version et sur PB0 sur la nouvelle).&lt;br /&gt;
&lt;br /&gt;
Vous pouvez trouver les programmes de test dans cette archive : [[Media:ClefUSB.zip]]. Pour compiler les programmes, il suffit de se placer dans le répertoire correspondant à la version de la clef et lancer le &amp;lt;tt&amp;gt;makefile&amp;lt;/tt&amp;gt; avec la commande &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;. Pour télécharger le programme un simple &amp;lt;tt&amp;gt;make upload&amp;lt;/tt&amp;gt; suffit. Pour remettre les micro-contrôleur en mode DFU pour les reprogrammer, il faut court-circuiter les broches &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; et de la masse (connecteur à deux broches sur les deux cartes).&lt;br /&gt;
&lt;br /&gt;
Voila le résultat de l'exécution du programme de test du micro-contrôleur sur la nouvelle version : [[Media:ClefUSBTestLed.mp4]].&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant souder le régulateur 3,3v pour alimenter les mémoires et aussi souder les-dites mémoires.&lt;br /&gt;
&lt;br /&gt;
Ensuite il faut tester si l'accès aux mémoires fonctionne. Les programmes sont différents suivant les types de mémoire.&lt;br /&gt;
&lt;br /&gt;
== Test des mémoires AT45DB641E ==&lt;br /&gt;
&lt;br /&gt;
Pour tester un des deux mémoires, il faut déjà sélectionner la mémoire sur le bus SPI. La première mémoire se sélectionne en passant la ligne &amp;lt;tt&amp;gt;PD0&amp;lt;/tt&amp;gt; à l'état bas. Pour la seconde mémoire, il faut utiliser la ligne &amp;lt;tt&amp;gt;PB5&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour tester la mémoire, il est possible de demander la valeur du registre d'état. Pour cela il faut envoyer l'octet &amp;lt;tt&amp;gt;0xD7&amp;lt;/tt&amp;gt; sur le bus SPI, une fois la mémoire sélectionnée. Ensuite, il faut lire les deux octets du registre d'état puis remonter la ligne de sélection à l'état haut.&lt;br /&gt;
&lt;br /&gt;
== Test de la mémoire MT29F128G8 ==&lt;br /&gt;
&lt;br /&gt;
Cette mémoire est sélectionnée par défaut. Il faut juste arriver à lui envoyer un ordre en utilisant les 8 lignes de contrôle.&lt;br /&gt;
&lt;br /&gt;
= Bibliothèque LUFA =&lt;br /&gt;
&lt;br /&gt;
Pour la gestion du bus USB par le micro-contrôleur nous allons nous appuyer au maximum sur la bibliothèque USB LUFA. Cette bibliothèque permet d'exploiter plus facilement les aspects USB des micro-contrôleurs AVR comme l'ATMega16u2.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez télécharger la dernière version de la bibliothèque [http://www.fourwalledcubicle.com/LUFA.php]. Il est ensuite conseillé d'effectuer quelques manipulations pour pouvoir développer dans de bonnes conditions.&lt;br /&gt;
* Créez un répertoire &amp;lt;tt&amp;gt;PolytechLille&amp;lt;/tt&amp;gt; au même niveau que les répertoires &amp;lt;tt&amp;gt;Demos&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;Projects&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Dans ce répertoire copiez la démonstration de périphérique USB bas niveau &amp;lt;tt&amp;gt;MassStorage&amp;lt;/tt&amp;gt;. Au niveau du &amp;lt;tt&amp;gt;makefile&amp;lt;/tt&amp;gt; indiquez &amp;lt;tt&amp;gt;atmega16u2&amp;lt;/tt&amp;gt; comme micro-contrôleur, &amp;lt;tt&amp;gt;UNO&amp;lt;/tt&amp;gt; comme platine et restez à 8Mhz.&lt;br /&gt;
* Il faut ensuite modifier la configuration de la mémoire et les fonctions d'accès à cette mémoire dans le sous-répertoire &amp;lt;tt&amp;gt;Lib&amp;lt;/tt&amp;gt; du répertoire &amp;lt;tt&amp;gt;PolytechLille/MassStorage&amp;lt;/tt&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
Pour téléverser votre programme sur l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt;, le paquetage Debian &amp;lt;tt&amp;gt;dfu-programmer&amp;lt;/tt&amp;gt; est nécessaire. Installez-le au besoin. La procédure à suivre pour charger votre programme sur l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt; est la suivante :&lt;br /&gt;
&lt;br /&gt;
* court-circuitez momentanément les lignes reset et masse de l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt;, l'utilitaire &amp;lt;tt&amp;gt;lsusb&amp;lt;/tt&amp;gt; doit lister la carte comme étant en mode DFU, vous pouvez alors exécuter les commandes suivantes :&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 erase&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 flash MassStorage.hex&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 reset&amp;lt;/tt&amp;gt;&lt;br /&gt;
* débranchez et rebranchez votre carte, votre programme doit être actif sur le micro-contrôleur.&lt;br /&gt;
&lt;br /&gt;
= Réalisations des binômes =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Numéro !! Elèves !! Fonctionnalité supplémentaire !! Page&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 1&lt;br /&gt;
| Nicolas DEBAISIEUX &amp;amp; Maxence FLAMENT&lt;br /&gt;
| Affichage température par leds&lt;br /&gt;
| [[Binome2019-1|Binôme 1 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| Eve POITEVIN &amp;amp; Alix DUFOUR&lt;br /&gt;
| Déverrouillage par haut volume sonore&lt;br /&gt;
| [[Binome2019-2|Binôme 2 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| Corentin GIELIN &amp;amp; Julien DUMON&lt;br /&gt;
| Afficheurs 7-seg en tant que vumètre numérique&lt;br /&gt;
| [[Binome2019-3|Binôme 3 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| Clément DELECOURT &amp;amp; Thomas MOSTOWFI&lt;br /&gt;
| Signal mauvaise orientation&lt;br /&gt;
| [[Binome2019-4|Binôme 4 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Gaëtan DELPLANQUE &amp;amp; Tristan PAYEN&lt;br /&gt;
| Verrouillage code &lt;br /&gt;
| [[Binome2019-5|Binôme 5 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| Louise MAES &amp;amp; Léo POUMAER &lt;br /&gt;
| Ecran LCD + vumètre + affichage nom fichier&lt;br /&gt;
| [[Binome2019-6|Binôme 6 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Martin SERGEANT &amp;amp; Quirin DECAUDIN&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-7|Binôme 7 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Mateo POURRIER &amp;amp; Martin PLAUD&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-8|Binôme 8 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Baptiste BLACK &amp;amp; Alexandre ROUSSEL&lt;br /&gt;
| Hub+Vumètre&lt;br /&gt;
| [[Binome2019-9|Binôme 9 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 10&lt;br /&gt;
| Theo DELAUNOIS &amp;amp; Antoine MALENGE&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-10|Binôme 10 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 11&lt;br /&gt;
| Florian DERLIQUE &amp;amp; Ahimen BENDIF&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-11|Binôme 11 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2019-2020&amp;diff=10785</id>
		<title>BE 2019-2020</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2019-2020&amp;diff=10785"/>
				<updated>2020-02-10T08:29:40Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /* Réalisations des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation du bureau d'étude =&lt;br /&gt;
&lt;br /&gt;
Nous vous proposons de découvrir ce qu'est réellement cet objet devenu banal appelé clé USB (Universal Serial Bus).&lt;br /&gt;
&lt;br /&gt;
[[File:Firefly-serenity-usb-flash-drive.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
Le bureau d'étude consiste à construire de A à Z une clé USB :&lt;br /&gt;
* en créant un circuit électronique ou PCB (Printed Circuit Board) à l’aide d’un logiciel ;&lt;br /&gt;
* en soudant des composants électroniques (micro-contrôleur, mémoire FLASH, ...) ;&lt;br /&gt;
* en programmant le micro-contrôleur pour gérer la communication USB en utilisant la bibliothèque LUFA (Lightweight USB Framework for AVRs) ;&lt;br /&gt;
* en programmant le micro-contrôleur pour accéder à la mémoire ;&lt;br /&gt;
* en fabriquant un beau boitier pour votre clef.&lt;br /&gt;
&lt;br /&gt;
Pour personnaliser votre clé n'hésitez pas à ajouter des fonctionnalités :&lt;br /&gt;
* LED qui clignotent lors des accès en lecture ou écriture ;&lt;br /&gt;
* vumètre qui indique le remplissage de la clé ;&lt;br /&gt;
* micro-interrupteurs pour verrouiller la clé ;&lt;br /&gt;
* vibreur parce que c'est possible, vous trouverez bien une justification ;&lt;br /&gt;
* microphone permettant d’espionner les conversations ;&lt;br /&gt;
* toute autre fonction plus ou moins utile mais qui vous inspire ...&lt;br /&gt;
&lt;br /&gt;
Les supports de la présentation de ce bureau d'études : [[Media:BE_clef_USB.pdf]].&lt;br /&gt;
&lt;br /&gt;
= Survol d'USB =&lt;br /&gt;
&lt;br /&gt;
== Evolution des connexions USB ==&lt;br /&gt;
&lt;br /&gt;
L'acronyme USB signifie &amp;quot;Universal Serial Bus&amp;quot; et effectivement l'USB peut être défini comme un bus USB très verbeux. L'USB est géré par un consortium autonome &amp;quot;USB Implementers Forum&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:USB-2.png|thumb|left|300px]] Jusqu'à la version 2, l'acronyme est fidèle à la réalité. Pour ces périphériques, 3 vitesses de transfert sont possibles sur la paire différentielle :&lt;br /&gt;
* basse vitesse : 1,5 Mb/s ;&lt;br /&gt;
* pleine vitesse : 12 Mb/s ;&lt;br /&gt;
* haute vitesse : 480 Mb/s.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
[[File:USB-3.jpg|thumb|right|300px]] A partir de l'USB 3.0, la notion de bus série est un peu oubliée. La vitesse augmente en utilisant les deux nouvelles paires blindées : 5Gb/s (super vitesse).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
[[File:USB-4.png|thumb|left|500px]] Et maintenant USB (USB 3.1, USB 3.2, USB 4) se prend pour de l'Ethernet. En effet, le connecteur USB-C ajoute, à la paire historique, quatre paires blindées. USB 3.2 promet des vitesses jusqu'à 20G/s.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Un protocole verbeux ==&lt;br /&gt;
&lt;br /&gt;
[[File:USB-communication.gif|thumb|left|600px]]&lt;br /&gt;
L'initialisation d'un périphérique USB se fait comme suit :&lt;br /&gt;
* détection électrique de la connexion du périphérique ;&lt;br /&gt;
* alimentation électrique du périphérique ;&lt;br /&gt;
* utilisation de l'adresse temporaire 0 sur le bus ;&lt;br /&gt;
* récupération de la taille des messages pour le point d'accès 0 ;&lt;br /&gt;
* envoi de l'adresse au périphérique sur le point d'accès 0 ;&lt;br /&gt;
* envoi des descripteurs du périphérique au contrôleur USB via le point d'accès 0.&lt;br /&gt;
Pour un périphérique simple :&lt;br /&gt;
* souris : environ 100 octets pour le descripteur de configuration ;&lt;br /&gt;
* clavier : environ 150 octets pour le descripteur de configuration.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:USB-descripteurs.gif|thumb|right|700px]]&lt;br /&gt;
Les points d'accès (terminaison sur le schéma) :&lt;br /&gt;
* des identifiants sur 8 bits (numéro sur 4 bits) ;&lt;br /&gt;
* un point d'accès de contrôle de numéro 0 bidirectionnel ;&lt;br /&gt;
* les communications se font de ou vers les points d'accès ;&lt;br /&gt;
* un sens de communication (bit de poid fort) :&lt;br /&gt;
** IN =&amp;gt; du périphérique vers le contrôleur ;&lt;br /&gt;
** OUT =&amp;gt; du contrôleur vers le périphérique.&lt;br /&gt;
* la direction est IN ou OUT vis à vis de l’hôte.&lt;br /&gt;
Plusieurs types de points d'accès :&lt;br /&gt;
* isodromique (isochronous) : débit réservé (e.g. vidéo en temps réel) ;&lt;br /&gt;
* par interruption (interrupt) : latence garantie (e.g. souris) ;&lt;br /&gt;
* de volume (bulk) : débit maximal sans garantie (e.g. clef mémoire).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Logiciels =&lt;br /&gt;
&lt;br /&gt;
Pour la conception de circuits imprimés nous vous recommandons le logiciel [http://fritzing.org/home/ fritzing].&lt;br /&gt;
&lt;br /&gt;
Pour la découpe laser de nombreux utilisateurs utilisent [https://inkscape.org/fr/ inkscape].&lt;br /&gt;
&lt;br /&gt;
Pour la conception 3D vous pouvez tenter [http://www.freecadweb.org/?lang=fr_FR freeCAD]. Une solution en ligne existe : [https://www.onshape.com/ onshape].&lt;br /&gt;
&lt;br /&gt;
Pour la programmation du micro-contrôleur vous utiliserez le compilateur C &amp;lt;tt&amp;gt;avr-gcc&amp;lt;/tt&amp;gt; et le logiciel de téléversement &amp;lt;tt&amp;gt;dfu-programmer&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Les composants électroniques =&lt;br /&gt;
&lt;br /&gt;
[[File:atmega16u2.png|thumb|left|200px|ATMega16u2]]&lt;br /&gt;
Le coeur de votre clé va être un micro-contrôleur AVR plus exactement l'ATMega16u2. Ce micro-contrôleur possède l'électronique nécessaire pour la gestion d'un bus USB 2.0.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:adesto64Mb.jpg|thumb|left|200px|AT45DB641E-SHN2B-T]]&lt;br /&gt;
[[File:MT29F128G08.jpg|thumb|right|200px|MT29F128G8]]&lt;br /&gt;
Sans mémoire une clé n'est pas une clé. Vous utiliserez des mémoires faciles à gérer avec un ATMega16u2. Ces mémoires sont accessibles par un bus série SPI et facile à souder. Par contre elles sont de faible capacité (64Mb). Si vous êtes téméraire, vous pouvez utiliser une mémoire accessible par un bus de 8 bits, plus difficile à souder, plus difficile à programmer mais d'une capacité intéressante (128Gb). &lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il vous faudra aussi quelques autres composants comme un quartz, des résistances, des condensateurs, des diodes, des régulateurs de tension et bien sur des LED pour ajouter un peu de lumière. La carte de base peut être décrite comme suit.&lt;br /&gt;
* Le micro-contrôleur peut être accompagné d'un quartz à 8Mhz et de ses condensateurs et résistance.&lt;br /&gt;
* Le micro-contrôleur peut être alimenté par le connecteur USB en 5v (broche UVCC) mais avec ses lignes VCC et AVCC bouclées sur la sortie UCAP du régulateur 3.3v interne.&lt;br /&gt;
* Un convertisseur 5v vers 3.3v est nécessaire pour l'alimentation des mémoires.&lt;br /&gt;
* Le micro-contrôleur dialogue avec les mémoires par le bus SPI, une ligne de sélection est nécessaire par mémoire.&lt;br /&gt;
&lt;br /&gt;
Pour la conception de votre clé vous pouvez vous appuyer sur un prototype de clef réalisé pour ce bureau d'études.&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usb_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
Le schéma décrit le circuit électronique partie par partie.&lt;br /&gt;
A partir du circuit, il faut créer une carte sans croisement de pistes pour éviter les court-circuits.&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usb.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Une autre carte est disponible pour une mémoire parallèle de plus grande capacité. Attention cette carte n'a pas été testée.&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_bis_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usb_bis_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usb_bis.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= Test des cartes =&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_recto.jpg|thumb|left|400px|Recto des deux cartes]]&lt;br /&gt;
[[File:cle_usb_verso.jpg|thumb|right|400px|Verso des deux cartes]]&lt;br /&gt;
Vision recto et verso des deux circuits décrit dans la section précédente (ancienne version à gauche). A noter que dans l'ancienne version seule les deux puces mémoire se trouvent au recto. Pour la nouvelle version la carte a du être agrandie et le micro-contrôleur rejoint la mémoire au verso.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape de test consiste à insérer les PCB dans un port USB. Remarquez la sur-épaisseur réalisée à l'aide d'un papier un peu épais pour assurer le contact. Si l'ATMega16u2 est fonctionne correctement, en lançant l'utilitaire &amp;lt;tt&amp;gt;lsusb&amp;lt;/tt&amp;gt; vous devez voir apparaître un périphérique labellé &amp;lt;tt&amp;gt;Atmel DFU device&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour tester plus en avant, il est proposé d'envoyer sur le micro-contrôleur un programme permettant de faire clignoter la LED connectée au micro-contrôleur (la LED est contrôlée par PB6 sur l'ancienne version et sur PB0 sur la nouvelle).&lt;br /&gt;
&lt;br /&gt;
Vous pouvez trouver les programmes de test dans cette archive : [[Media:ClefUSB.zip]]. Pour compiler les programmes, il suffit de se placer dans le répertoire correspondant à la version de la clef et lancer le &amp;lt;tt&amp;gt;makefile&amp;lt;/tt&amp;gt; avec la commande &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;. Pour télécharger le programme un simple &amp;lt;tt&amp;gt;make upload&amp;lt;/tt&amp;gt; suffit. Pour remettre les micro-contrôleur en mode DFU pour les reprogrammer, il faut court-circuiter les broches &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; et de la masse (connecteur à deux broches sur les deux cartes).&lt;br /&gt;
&lt;br /&gt;
Voila le résultat de l'exécution du programme de test du micro-contrôleur sur la nouvelle version : [[Media:ClefUSBTestLed.mp4]].&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant souder le régulateur 3,3v pour alimenter les mémoires et aussi souder les-dites mémoires.&lt;br /&gt;
&lt;br /&gt;
Ensuite il faut tester si l'accès aux mémoires fonctionne. Les programmes sont différents suivant les types de mémoire.&lt;br /&gt;
&lt;br /&gt;
== Test des mémoires AT45DB641E ==&lt;br /&gt;
&lt;br /&gt;
Pour tester un des deux mémoires, il faut déjà sélectionner la mémoire sur le bus SPI. La première mémoire se sélectionne en passant la ligne &amp;lt;tt&amp;gt;PD0&amp;lt;/tt&amp;gt; à l'état bas. Pour la seconde mémoire, il faut utiliser la ligne &amp;lt;tt&amp;gt;PB5&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour tester la mémoire, il est possible de demander la valeur du registre d'état. Pour cela il faut envoyer l'octet &amp;lt;tt&amp;gt;0xD7&amp;lt;/tt&amp;gt; sur le bus SPI, une fois la mémoire sélectionnée. Ensuite, il faut lire les deux octets du registre d'état puis remonter la ligne de sélection à l'état haut.&lt;br /&gt;
&lt;br /&gt;
== Test de la mémoire MT29F128G8 ==&lt;br /&gt;
&lt;br /&gt;
Cette mémoire est sélectionnée par défaut. Il faut juste arriver à lui envoyer un ordre en utilisant les 8 lignes de contrôle.&lt;br /&gt;
&lt;br /&gt;
= Bibliothèque LUFA =&lt;br /&gt;
&lt;br /&gt;
Pour la gestion du bus USB par le micro-contrôleur nous allons nous appuyer au maximum sur la bibliothèque USB LUFA. Cette bibliothèque permet d'exploiter plus facilement les aspects USB des micro-contrôleurs AVR comme l'ATMega16u2.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez télécharger la dernière version de la bibliothèque [http://www.fourwalledcubicle.com/LUFA.php]. Il est ensuite conseillé d'effectuer quelques manipulations pour pouvoir développer dans de bonnes conditions.&lt;br /&gt;
* Créez un répertoire &amp;lt;tt&amp;gt;PolytechLille&amp;lt;/tt&amp;gt; au même niveau que les répertoires &amp;lt;tt&amp;gt;Demos&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;Projects&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Dans ce répertoire copiez la démonstration de périphérique USB bas niveau &amp;lt;tt&amp;gt;MassStorage&amp;lt;/tt&amp;gt;. Au niveau du &amp;lt;tt&amp;gt;makefile&amp;lt;/tt&amp;gt; indiquez &amp;lt;tt&amp;gt;atmega16u2&amp;lt;/tt&amp;gt; comme micro-contrôleur, &amp;lt;tt&amp;gt;UNO&amp;lt;/tt&amp;gt; comme platine et restez à 8Mhz.&lt;br /&gt;
* Il faut ensuite modifier la configuration de la mémoire et les fonctions d'accès à cette mémoire dans le sous-répertoire &amp;lt;tt&amp;gt;Lib&amp;lt;/tt&amp;gt; du répertoire &amp;lt;tt&amp;gt;PolytechLille/MassStorage&amp;lt;/tt&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
Pour téléverser votre programme sur l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt;, le paquetage Debian &amp;lt;tt&amp;gt;dfu-programmer&amp;lt;/tt&amp;gt; est nécessaire. Installez-le au besoin. La procédure à suivre pour charger votre programme sur l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt; est la suivante :&lt;br /&gt;
&lt;br /&gt;
* court-circuitez momentanément les lignes reset et masse de l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt;, l'utilitaire &amp;lt;tt&amp;gt;lsusb&amp;lt;/tt&amp;gt; doit lister la carte comme étant en mode DFU, vous pouvez alors exécuter les commandes suivantes :&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 erase&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 flash MassStorage.hex&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 reset&amp;lt;/tt&amp;gt;&lt;br /&gt;
* débranchez et rebranchez votre carte, votre programme doit être actif sur le micro-contrôleur.&lt;br /&gt;
&lt;br /&gt;
= Réalisations des binômes =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Numéro !! Elèves !! Fonctionnalité supplémentaire !! Page&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 1&lt;br /&gt;
| Nicolas DEBAISIEUX &amp;amp; Maxence FLAMENT&lt;br /&gt;
| Affichage température par leds&lt;br /&gt;
| [[Binome2019-1|Binôme 1 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| Eve POITEVIN &amp;amp; Alix DUFOUR&lt;br /&gt;
| Déverrouillage par haut volume sonore&lt;br /&gt;
| [[Binome2019-2|Binôme 2 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| Corentin GIELIN &amp;amp; Julien DUMON&lt;br /&gt;
| Afficheurs 7-seg en tant que vumètre numérique&lt;br /&gt;
| [[Binome2019-3|Binôme 3 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| Clément DELECOURT &amp;amp; Thomas MOSTOWFI&lt;br /&gt;
| Signal mauvaise orientation&lt;br /&gt;
| [[Binome2019-4|Binôme 4 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Gaëtan DELPLANQUE &amp;amp; Tristan PAYEN&lt;br /&gt;
| Verrouillage code &lt;br /&gt;
| [[Binome2019-5|Binôme 5 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| Louise MAES &amp;amp; Léo POUMAER &lt;br /&gt;
| Ecran LCD + vumètre + affichage nom fichier&lt;br /&gt;
| [[Binome2019-6|Binôme 6 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Martin SERGEANT &amp;amp; Quirin DECAUDIN&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-7|Binôme 7 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Mateo POURRIER &amp;amp; Martin PLAUD&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-8|Binôme 8 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Baptiste BLACK &amp;amp; Alexandre ROUSSEL&lt;br /&gt;
| Hub&lt;br /&gt;
| [[Binome2019-9|Binôme 9 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 10&lt;br /&gt;
| Theo DELAUNOIS &amp;amp; Antoine MALENGE&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-10|Binôme 10 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 11&lt;br /&gt;
| Florian DERLIQUE &amp;amp; Ahimen BENDIF&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-11|Binôme 11 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10784</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10784"/>
				<updated>2020-02-10T08:29:17Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Partie Réflexion==&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;br /&gt;
&lt;br /&gt;
Nous avons aussi plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;br /&gt;
&lt;br /&gt;
Le principal objectif est de tenter d'imbriquer des clés par le biais d'un hub.&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10782</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10782"/>
				<updated>2020-02-10T08:20:39Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Partie Réflexion==&lt;br /&gt;
&lt;br /&gt;
Nous avons plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10754</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10754"/>
				<updated>2020-02-10T08:00:27Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;nous avons plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
*un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
*vumètre à LED&lt;br /&gt;
*Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
*ajouter de la mémoire via un SHIELD&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10703</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10703"/>
				<updated>2020-01-27T09:36:01Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;nous avons plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
-un haut-parleur (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
-vumètre à LED&lt;br /&gt;
-Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
-ajouter de la mémoire via un SHIELD&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10699</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10699"/>
				<updated>2020-01-27T09:33:11Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;nous avons plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
-un haut-parleur à fonctionnalité de vumètre (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
-Dévérouillage de la clé via un mot de passe, on scinde la clé en 2 parties, la première ayant un stockage minimal servant à la demande du mot de passe, l'autre utile pour le stockage et l'échange d'informations. (bip d'erreur en cas d'échec du mot de passe)&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10688</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10688"/>
				<updated>2020-01-27T09:27:20Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;nous avons plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
-un haut-parleur à fonctionnalité de vumètre (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
-Dévérouillage de la clé via un mot de passe (bip d'erreur)&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2019-2020&amp;diff=10683</id>
		<title>BE 2019-2020</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2019-2020&amp;diff=10683"/>
				<updated>2020-01-27T09:24:33Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /* Réalisations des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation du bureau d'étude =&lt;br /&gt;
&lt;br /&gt;
Nous vous proposons de découvrir ce qu'est réellement cet objet devenu banal appelé clé USB (Universal Serial Bus).&lt;br /&gt;
&lt;br /&gt;
[[File:Firefly-serenity-usb-flash-drive.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
Le bureau d'étude consiste à construire de A à Z une clé USB :&lt;br /&gt;
* en créant un circuit électronique ou PCB (Printed Circuit Board) à l’aide d’un logiciel ;&lt;br /&gt;
* en soudant des composants électroniques (micro-contrôleur, mémoire FLASH, ...) ;&lt;br /&gt;
* en programmant le micro-contrôleur pour gérer la communication USB en utilisant la bibliothèque LUFA (Lightweight USB Framework for AVRs) ;&lt;br /&gt;
* en programmant le micro-contrôleur pour accéder à la mémoire ;&lt;br /&gt;
* en fabriquant un beau boitier pour votre clef.&lt;br /&gt;
&lt;br /&gt;
Pour personnaliser votre clé n'hésitez pas à ajouter des fonctionnalités :&lt;br /&gt;
* LED qui clignotent lors des accès en lecture ou écriture ;&lt;br /&gt;
* vumètre qui indique le remplissage de la clé ;&lt;br /&gt;
* micro-interrupteurs pour verrouiller la clé ;&lt;br /&gt;
* vibreur parce que c'est possible, vous trouverez bien une justification ;&lt;br /&gt;
* microphone permettant d’espionner les conversations ;&lt;br /&gt;
* toute autre fonction plus ou moins utile mais qui vous inspire ...&lt;br /&gt;
&lt;br /&gt;
Les supports de la présentation de ce bureau d'études : [[Media:BE_clef_USB.pdf]].&lt;br /&gt;
&lt;br /&gt;
= Survol d'USB =&lt;br /&gt;
&lt;br /&gt;
== Evolution des connexions USB ==&lt;br /&gt;
&lt;br /&gt;
L'acronyme USB signifie &amp;quot;Universal Serial Bus&amp;quot; et effectivement l'USB peut être défini comme un bus USB très verbeux. L'USB est géré par un consortium autonome &amp;quot;USB Implementers Forum&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:USB-2.png|thumb|left|300px]] Jusqu'à la version 2, l'acronyme est fidèle à la réalité. Pour ces périphériques, 3 vitesses de transfert sont possibles sur la paire différentielle :&lt;br /&gt;
* basse vitesse : 1,5 Mb/s ;&lt;br /&gt;
* pleine vitesse : 12 Mb/s ;&lt;br /&gt;
* haute vitesse : 480 Mb/s.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
[[File:USB-3.jpg|thumb|right|300px]] A partir de l'USB 3.0, la notion de bus série est un peu oubliée. La vitesse augmente en utilisant les deux nouvelles paires blindées : 5Gb/s (super vitesse).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
[[File:USB-4.png|thumb|left|500px]] Et maintenant USB (USB 3.1, USB 3.2, USB 4) se prend pour de l'Ethernet. En effet, le connecteur USB-C ajoute, à la paire historique, quatre paires blindées. USB 3.2 promet des vitesses jusqu'à 20G/s.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Un protocole verbeux ==&lt;br /&gt;
&lt;br /&gt;
[[File:USB-communication.gif|thumb|left|600px]]&lt;br /&gt;
L'initialisation d'un périphérique USB se fait comme suit :&lt;br /&gt;
* détection électrique de la connexion du périphérique ;&lt;br /&gt;
* alimentation électrique du périphérique ;&lt;br /&gt;
* utilisation de l'adresse temporaire 0 sur le bus ;&lt;br /&gt;
* récupération de la taille des messages pour le point d'accès 0 ;&lt;br /&gt;
* envoi de l'adresse au périphérique sur le point d'accès 0 ;&lt;br /&gt;
* envoi des descripteurs du périphérique au contrôleur USB via le point d'accès 0.&lt;br /&gt;
Pour un périphérique simple :&lt;br /&gt;
* souris : environ 100 octets pour le descripteur de configuration ;&lt;br /&gt;
* clavier : environ 150 octets pour le descripteur de configuration.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:USB-descripteurs.gif|thumb|right|700px]]&lt;br /&gt;
Les points d'accès (terminaison sur le schéma) :&lt;br /&gt;
* des identifiants sur 8 bits (numéro sur 4 bits) ;&lt;br /&gt;
* un point d'accès de contrôle de numéro 0 bidirectionnel ;&lt;br /&gt;
* les communications se font de ou vers les points d'accès ;&lt;br /&gt;
* un sens de communication (bit de poid fort) :&lt;br /&gt;
** IN =&amp;gt; du périphérique vers le contrôleur ;&lt;br /&gt;
** OUT =&amp;gt; du contrôleur vers le périphérique.&lt;br /&gt;
* la direction est IN ou OUT vis à vis de l’hôte.&lt;br /&gt;
Plusieurs types de points d'accès :&lt;br /&gt;
* isodromique (isochronous) : débit réservé (e.g. vidéo en temps réel) ;&lt;br /&gt;
* par interruption (interrupt) : latence garantie (e.g. souris) ;&lt;br /&gt;
* de volume (bulk) : débit maximal sans garantie (e.g. clef mémoire).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Les composants électroniques =&lt;br /&gt;
&lt;br /&gt;
[[File:atmega16u2.png|thumb|left|200px|ATMega16u2]]&lt;br /&gt;
Le coeur de votre clé va être un micro-contrôleur AVR plus exactement l'ATMega16u2. Ce micro-contrôleur possède l'électronique nécessaire pour la gestion d'un bus USB 2.0.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:adesto64Mb.jpg|thumb|left|200px|AT45DB641E-SHN2B-T]]&lt;br /&gt;
[[File:MT29F128G08.jpg|thumb|right|200px|MT29F128G8]]&lt;br /&gt;
Sans mémoire une clé n'est pas une clé. Vous utiliserez des mémoires faciles à gérer avec un ATMega16u2. Ces mémoires sont accessibles par un bus série SPI et facile à souder. Par contre elles sont de faible capacité (64Mb). Si vous êtes téméraire, vous pouvez utiliser une mémoire accessible par un bus de 8 bits, plus difficile à souder, plus difficile à programmer mais d'une capacité intéressante (128Gb). &lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il vous faudra aussi quelques autres composants comme un quartz, des résistances, des condensateurs, des diodes, des régulateurs de tension et bien sur des LED pour ajouter un peu de lumière. La carte de base peut être décrite comme suit.&lt;br /&gt;
* Le micro-contrôleur peut être accompagné d'un quartz à 8Mhz et de ses condensateurs et résistance.&lt;br /&gt;
* Le micro-contrôleur peut être alimenté par le connecteur USB en 5v (broche UVCC) mais avec ses lignes VCC et AVCC bouclées sur la sortie UCAP du régulateur 3.3v interne.&lt;br /&gt;
* Un convertisseur 5v vers 3.3v est nécessaire pour l'alimentation des mémoires.&lt;br /&gt;
* Le micro-contrôleur dialogue avec les mémoires par le bus SPI, une ligne de sélection est nécessaire par mémoire.&lt;br /&gt;
&lt;br /&gt;
Pour la conception de votre clé vous pouvez vous appuyer sur un prototype de clef réalisé pour ce bureau d'études.&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usb_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
Le schéma décrit le circuit électronique partie par partie.&lt;br /&gt;
A partir du circuit, il faut créer une carte sans croisement de pistes pour éviter les court-circuits.&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usb.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Une autre carte est disponible pour une mémoire parallèle de plus grande capacité. Attention cette carte n'a pas été testée.&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_bis_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usb_bis_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usb_bis.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= Logiciels =&lt;br /&gt;
&lt;br /&gt;
Pour la conception de circuits imprimés nous vous recommandons le logiciel [http://fritzing.org/home/ fritzing].&lt;br /&gt;
&lt;br /&gt;
Pour la découpe laser de nombreux utilisateurs utilisent [https://inkscape.org/fr/ inkscape].&lt;br /&gt;
&lt;br /&gt;
Pour la conception 3D vous pouvez tenter [http://www.freecadweb.org/?lang=fr_FR freeCAD]. Une solution en ligne existe : [https://www.onshape.com/ onshape].&lt;br /&gt;
&lt;br /&gt;
Pour la programmation du micro-contrôleur vous utiliserez le compilateur C &amp;lt;tt&amp;gt;avr-gcc&amp;lt;/tt&amp;gt; et le logiciel de téléversement &amp;lt;tt&amp;gt;dfu-programmer&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Bibliothèque LUFA =&lt;br /&gt;
&lt;br /&gt;
Pour la gestion du bus USB par le micro-contrôleur nous allons nous appuyer au maximum sur la bibliothèque USB LUFA. Cette bibliothèque permet d'exploiter plus facilement les aspects USB des micro-contrôleurs AVR comme l'ATMega16u2.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez télécharger la dernière version de la bibliothèque [http://www.fourwalledcubicle.com/LUFA.php]. Il est ensuite conseillé d'effectuer quelques manipulations pour pouvoir développer dans de bonnes conditions.&lt;br /&gt;
* Créez un répertoire &amp;lt;tt&amp;gt;PolytechLille&amp;lt;/tt&amp;gt; au même niveau que les répertoires &amp;lt;tt&amp;gt;Demos&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;Projects&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Dans ce répertoire copiez la démonstration de périphérique USB bas niveau &amp;lt;tt&amp;gt;MassStorage&amp;lt;/tt&amp;gt;. Au niveau du &amp;lt;tt&amp;gt;makefile&amp;lt;/tt&amp;gt; indiquez &amp;lt;tt&amp;gt;atmega16u2&amp;lt;/tt&amp;gt; comme micro-contrôleur, &amp;lt;tt&amp;gt;UNO&amp;lt;/tt&amp;gt; comme platine et restez à 8Mhz.&lt;br /&gt;
* Il faut ensuite modifier la configuration de la mémoire et les fonctions d'accès à cette mémoire dans le sous-répertoire &amp;lt;tt&amp;gt;Lib&amp;lt;/tt&amp;gt; du répertoire &amp;lt;tt&amp;gt;PolytechLille/MassStorage&amp;lt;/tt&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
Pour téléverser votre programme sur l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt;, le paquetage Debian &amp;lt;tt&amp;gt;dfu-programmer&amp;lt;/tt&amp;gt; est nécessaire. Installez-le au besoin. La procédure à suivre pour charger votre programme sur l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt; est la suivante :&lt;br /&gt;
&lt;br /&gt;
* court-circuitez momentanément les lignes reset et masse de l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt;, l'utilitaire &amp;lt;tt&amp;gt;lsusb&amp;lt;/tt&amp;gt; doit lister la carte comme étant en mode DFU, vous pouvez alors exécuter les commandes suivantes :&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 erase&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 flash MassStorage.hex&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 reset&amp;lt;/tt&amp;gt;&lt;br /&gt;
* débranchez et rebranchez votre carte, votre programme doit être actif sur le micro-contrôleur.&lt;br /&gt;
&lt;br /&gt;
= Réalisations des binômes =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Numéro !! Elèves !! Fonctionnalité supplémentaire !! Page&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 1&lt;br /&gt;
| Nicolas DEBAISIEUX &amp;amp; Maxence FLAMENT&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-1|Binôme 1 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| Eve POITEVIN &amp;amp; Alix DUFOUR&lt;br /&gt;
| Synthèse vocale&lt;br /&gt;
| [[Binome2019-2|Binôme 2 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| Corentin GIELIN &amp;amp; Julien DUMON&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-3|Binôme 3 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| Clément DELECOURT &amp;amp; Thomas MOSTOWFI&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-4|Binôme 4 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Gaêtan DELPLANQUE &amp;amp; Tristan PAYEN&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-5|Binôme 5 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| Louise MAES &amp;amp; Léo POUMAER &lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-6|Binôme 6 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Martin SERGEANT &amp;amp; Quirin DECAUDIN&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-7|Binôme 7 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Mateo POURRIER &amp;amp; Martin PLAUD&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-8|Binôme 8 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Baptiste BLACK &amp;amp; Alexandre ROUSSEL&lt;br /&gt;
| Haut-parleur&lt;br /&gt;
| [[Binome2019-9|Binôme 9 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 10&lt;br /&gt;
| Theo DELAUNOIS &amp;amp; Antoine MALENGE&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-10|Binôme 10 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 11&lt;br /&gt;
| Florian DERLIQUE &amp;amp; Ahimen BENDIF&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-11|Binôme 11 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 12&lt;br /&gt;
| Prénom Nom &amp;amp; Prénom Nom&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-12|Binôme 12 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10679</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10679"/>
				<updated>2020-01-27T09:22:25Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;nous avons plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
-un haut-parleur à fonctionnalité de vumètre (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
-Dévérouillage de la clé via un mot de passe&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10677</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10677"/>
				<updated>2020-01-27T09:20:30Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;nous avons plusieurs idées de fonctionnalités originales de la clé USB : &lt;br /&gt;
&lt;br /&gt;
-un haut-parleur à fonctionnalité de vumètre (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
-Dévérouillage de la clé via un mot de passe&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10671</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10671"/>
				<updated>2020-01-27T09:13:11Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fonctionnalité,idée 1 : haut-parleur à fonctionnalité de vumètre (bruitage lors du remplissage, de la connexion, etc)&lt;br /&gt;
               idée 2 :&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10666</id>
		<title>Binome2019-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2019-9&amp;diff=10666"/>
				<updated>2020-01-27T09:10:26Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : Page créée avec « Fonctionnalité,idée 1 : haut-parleur à fonctionnalité de vumètre »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fonctionnalité,idée 1 : haut-parleur à fonctionnalité de vumètre&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2019-2020&amp;diff=10663</id>
		<title>BE 2019-2020</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2019-2020&amp;diff=10663"/>
				<updated>2020-01-27T09:09:48Z</updated>
		
		<summary type="html">&lt;p&gt;Aroussel : /* Réalisations des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation du bureau d'étude =&lt;br /&gt;
&lt;br /&gt;
Nous vous proposons de découvrir ce qu'est réellement cet objet devenu banal appelé clé USB (Universal Serial Bus).&lt;br /&gt;
&lt;br /&gt;
[[File:Firefly-serenity-usb-flash-drive.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
Le bureau d'étude consiste à construire de A à Z une clé USB :&lt;br /&gt;
* en créant un circuit électronique ou PCB (Printed Circuit Board) à l’aide d’un logiciel ;&lt;br /&gt;
* en soudant des composants électroniques (micro-contrôleur, mémoire FLASH, ...) ;&lt;br /&gt;
* en programmant le micro-contrôleur pour gérer la communication USB en utilisant la bibliothèque LUFA (Lightweight USB Framework for AVRs) ;&lt;br /&gt;
* en programmant le micro-contrôleur pour accéder à la mémoire ;&lt;br /&gt;
* en fabriquant un beau boitier pour votre clef.&lt;br /&gt;
&lt;br /&gt;
Pour personnaliser votre clé n'hésitez pas à ajouter des fonctionnalités :&lt;br /&gt;
* LED qui clignotent lors des accès en lecture ou écriture ;&lt;br /&gt;
* vumètre qui indique le remplissage de la clé ;&lt;br /&gt;
* micro-interrupteurs pour verrouiller la clé ;&lt;br /&gt;
* vibreur parce que c'est possible, vous trouverez bien une justification ;&lt;br /&gt;
* microphone permettant d’espionner les conversations ;&lt;br /&gt;
* toute autre fonction plus ou moins utile mais qui vous inspire ...&lt;br /&gt;
&lt;br /&gt;
Les supports de la présentation de ce bureau d'études : [[Media:BE_clef_USB.pdf]].&lt;br /&gt;
&lt;br /&gt;
= Survol d'USB =&lt;br /&gt;
&lt;br /&gt;
== Evolution des connexions USB ==&lt;br /&gt;
&lt;br /&gt;
L'acronyme USB signifie &amp;quot;Universal Serial Bus&amp;quot; et effectivement l'USB peut être défini comme un bus USB très verbeux. L'USB est géré par un consortium autonome &amp;quot;USB Implementers Forum&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:USB-2.png|thumb|left|300px]] Jusqu'à la version 2, l'acronyme est fidèle à la réalité. Pour ces périphériques, 3 vitesses de transfert sont possibles sur la paire différentielle :&lt;br /&gt;
* basse vitesse : 1,5 Mb/s ;&lt;br /&gt;
* pleine vitesse : 12 Mb/s ;&lt;br /&gt;
* haute vitesse : 480 Mb/s.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
[[File:USB-3.jpg|thumb|right|300px]] A partir de l'USB 3.0, la notion de bus série est un peu oubliée. La vitesse augmente en utilisant les deux nouvelles paires blindées : 5Gb/s (super vitesse).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
[[File:USB-4.png|thumb|left|500px]] Et maintenant USB (USB 3.1, USB 3.2, USB 4) se prend pour de l'Ethernet. En effet, le connecteur USB-C ajoute, à la paire historique, quatre paires blindées. USB 3.2 promet des vitesses jusqu'à 20G/s.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Un protocole verbeux ==&lt;br /&gt;
&lt;br /&gt;
[[File:USB-communication.gif|thumb|left|600px]]&lt;br /&gt;
L'initialisation d'un périphérique USB se fait comme suit :&lt;br /&gt;
* détection électrique de la connexion du périphérique ;&lt;br /&gt;
* alimentation électrique du périphérique ;&lt;br /&gt;
* utilisation de l'adresse temporaire 0 sur le bus ;&lt;br /&gt;
* récupération de la taille des messages pour le point d'accès 0 ;&lt;br /&gt;
* envoi de l'adresse au périphérique sur le point d'accès 0 ;&lt;br /&gt;
* envoi des descripteurs du périphérique au contrôleur USB via le point d'accès 0.&lt;br /&gt;
Pour un périphérique simple :&lt;br /&gt;
* souris : environ 100 octets pour le descripteur de configuration ;&lt;br /&gt;
* clavier : environ 150 octets pour le descripteur de configuration.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:USB-descripteurs.gif|thumb|right|700px]]&lt;br /&gt;
Les points d'accès (terminaison sur le schéma) :&lt;br /&gt;
* des identifiants sur 8 bits (numéro sur 4 bits) ;&lt;br /&gt;
* un point d'accès de contrôle de numéro 0 bidirectionnel ;&lt;br /&gt;
* les communications se font de ou vers les points d'accès ;&lt;br /&gt;
* un sens de communication (bit de poid fort) :&lt;br /&gt;
** IN =&amp;gt; du périphérique vers le contrôleur ;&lt;br /&gt;
** OUT =&amp;gt; du contrôleur vers le périphérique.&lt;br /&gt;
* la direction est IN ou OUT vis à vis de l’hôte.&lt;br /&gt;
Plusieurs types de points d'accès :&lt;br /&gt;
* isodromique (isochronous) : débit réservé (e.g. vidéo en temps réel) ;&lt;br /&gt;
* par interruption (interrupt) : latence garantie (e.g. souris) ;&lt;br /&gt;
* de volume (bulk) : débit maximal sans garantie (e.g. clef mémoire).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Les composants électroniques =&lt;br /&gt;
&lt;br /&gt;
[[File:atmega16u2.png|thumb|left|200px|ATMega16u2]]&lt;br /&gt;
Le coeur de votre clé va être un micro-contrôleur AVR plus exactement l'ATMega16u2. Ce micro-contrôleur possède l'électronique nécessaire pour la gestion d'un bus USB 2.0.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:adesto64Mb.jpg|thumb|left|200px|AT45DB641E-SHN2B-T]]&lt;br /&gt;
[[File:MT29F128G08.jpg|thumb|right|200px|MT29F128G8]]&lt;br /&gt;
Sans mémoire une clé n'est pas une clé. Vous utiliserez des mémoires faciles à gérer avec un ATMega16u2. Ces mémoires sont accessibles par un bus série SPI et facile à souder. Par contre elles sont de faible capacité (64Mb). Si vous êtes téméraire, vous pouvez utiliser une mémoire accessible par un bus de 8 bits, plus difficile à souder, plus difficile à programmer mais d'une capacité intéressante (128Gb). &lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il vous faudra aussi quelques autres composants comme un quartz, des résistances, des condensateurs, des diodes, des régulateurs de tension et bien sur des LED pour ajouter un peu de lumière. La carte de base peut être décrite comme suit.&lt;br /&gt;
* Le micro-contrôleur peut être accompagné d'un quartz à 8Mhz et de ses condensateurs et résistance.&lt;br /&gt;
* Le micro-contrôleur peut être alimenté par le connecteur USB en 5v (broche UVCC) mais avec ses lignes VCC et AVCC bouclées sur la sortie UCAP du régulateur 3.3v interne.&lt;br /&gt;
* Un convertisseur 5v vers 3.3v est nécessaire pour l'alimentation des mémoires.&lt;br /&gt;
* Le micro-contrôleur dialogue avec les mémoires par le bus SPI, une ligne de sélection est nécessaire par mémoire.&lt;br /&gt;
&lt;br /&gt;
Pour la conception de votre clé vous pouvez vous appuyer sur un prototype de clef réalisé pour ce bureau d'études.&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usb_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
Le schéma décrit le circuit électronique partie par partie.&lt;br /&gt;
A partir du circuit, il faut créer une carte sans croisement de pistes pour éviter les court-circuits.&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usb.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Une autre carte est disponible pour une mémoire parallèle de plus grande capacité. Attention cette carte n'a pas été testée.&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_bis_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usb_bis_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usb_bis.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= Logiciels =&lt;br /&gt;
&lt;br /&gt;
Pour la conception de circuits imprimés nous vous recommandons le logiciel [http://fritzing.org/home/ fritzing].&lt;br /&gt;
&lt;br /&gt;
Pour la découpe laser de nombreux utilisateurs utilisent [https://inkscape.org/fr/ inkscape].&lt;br /&gt;
&lt;br /&gt;
Pour la conception 3D vous pouvez tenter [http://www.freecadweb.org/?lang=fr_FR freeCAD]. Une solution en ligne existe : [https://www.onshape.com/ onshape].&lt;br /&gt;
&lt;br /&gt;
Pour la programmation du micro-contrôleur vous utiliserez le compilateur C &amp;lt;tt&amp;gt;avr-gcc&amp;lt;/tt&amp;gt; et le logiciel de téléversement &amp;lt;tt&amp;gt;dfu-programmer&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Bibliothèque LUFA =&lt;br /&gt;
&lt;br /&gt;
Pour la gestion du bus USB par le micro-contrôleur nous allons nous appuyer au maximum sur la bibliothèque USB LUFA. Cette bibliothèque permet d'exploiter plus facilement les aspects USB des micro-contrôleurs AVR comme l'ATMega16u2.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez télécharger la dernière version de la bibliothèque [http://www.fourwalledcubicle.com/LUFA.php]. Il est ensuite conseillé d'effectuer quelques manipulations pour pouvoir développer dans de bonnes conditions.&lt;br /&gt;
* Créez un répertoire &amp;lt;tt&amp;gt;PolytechLille&amp;lt;/tt&amp;gt; au même niveau que les répertoires &amp;lt;tt&amp;gt;Demos&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;Projects&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Dans ce répertoire copiez la démonstration de périphérique USB bas niveau &amp;lt;tt&amp;gt;MassStorage&amp;lt;/tt&amp;gt;. Au niveau du &amp;lt;tt&amp;gt;makefile&amp;lt;/tt&amp;gt; indiquez &amp;lt;tt&amp;gt;atmega16u2&amp;lt;/tt&amp;gt; comme micro-contrôleur, &amp;lt;tt&amp;gt;UNO&amp;lt;/tt&amp;gt; comme platine et restez à 8Mhz.&lt;br /&gt;
* Il faut ensuite modifier la configuration de la mémoire et les fonctions d'accès à cette mémoire dans le sous-répertoire &amp;lt;tt&amp;gt;Lib&amp;lt;/tt&amp;gt; du répertoire &amp;lt;tt&amp;gt;PolytechLille/MassStorage&amp;lt;/tt&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
Pour téléverser votre programme sur l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt;, le paquetage Debian &amp;lt;tt&amp;gt;dfu-programmer&amp;lt;/tt&amp;gt; est nécessaire. Installez-le au besoin. La procédure à suivre pour charger votre programme sur l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt; est la suivante :&lt;br /&gt;
&lt;br /&gt;
* court-circuitez momentanément les lignes reset et masse de l’&amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt;, l'utilitaire &amp;lt;tt&amp;gt;lsusb&amp;lt;/tt&amp;gt; doit lister la carte comme étant en mode DFU, vous pouvez alors exécuter les commandes suivantes :&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 erase&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 flash MassStorage.hex&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer atmega16u2 reset&amp;lt;/tt&amp;gt;&lt;br /&gt;
* débranchez et rebranchez votre carte, votre programme doit être actif sur le micro-contrôleur.&lt;br /&gt;
&lt;br /&gt;
= Réalisations des binômes =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Numéro !! Elèves !! Fonctionnalité supplémentaire !! Page&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 1&lt;br /&gt;
| Nicolas DEBAISIEUX &amp;amp; Maxence FLAMENT&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-1|Binôme 1 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| Eve Poitevin &amp;amp; Alix Dufour&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-2|Binôme 2 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| Corentin Gielen &amp;amp; Julien Dumon&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-3|Binôme 3 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| Clément DELECOURT &amp;amp; Thomas MOSTOWFI&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-4|Binôme 4 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Gaêtan DELPLANQUE &amp;amp; Tristan PAYEN&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-5|Binôme 5 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| Louise MAES &amp;amp; Léo POUMAER &lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-6|Binôme 6 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Martin SERGEANT &amp;amp; Quirin DECAUDIN&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-7|Binôme 7 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Mateo POURRIER &amp;amp; Martin PLAUD&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-8|Binôme 8 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Baptiste BLACK &amp;amp; Alexandre ROUSSEL&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-9|Binôme 9 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 10&lt;br /&gt;
| Prénom Nom &amp;amp; Prénom Nom&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2019-10|Binôme 10 2019/2020]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aroussel</name></author>	</entry>

	</feed>