<?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=Aboe</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=Aboe"/>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php/Sp%C3%A9cial:Contributions/Aboe"/>
		<updated>2026-04-24T14:13:03Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Exemple_npn_audio.png&amp;diff=17927</id>
		<title>Fichier:Exemple npn audio.png</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Exemple_npn_audio.png&amp;diff=17927"/>
				<updated>2023-01-26T17:58:45Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2022-1&amp;diff=17926</id>
		<title>Binome2022-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2022-1&amp;diff=17926"/>
				<updated>2023-01-26T17:58:31Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Liste composants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
= Fonctionnalité supplémentaire = &lt;br /&gt;
&lt;br /&gt;
Clavier qui fait du bruit (parle ou joue de la musique) quand on appuie sur les touches. &amp;lt;br&amp;gt;&lt;br /&gt;
Le clavier aura une touche secrète espionne qui quand on appuie dessus, lance un enregistrement audio.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;PS:&amp;lt;/u&amp;gt; la touche enregistrement ne fait pas de bruit ;)&lt;br /&gt;
&lt;br /&gt;
= Liste composants =&lt;br /&gt;
&lt;br /&gt;
Pour la première carte :&lt;br /&gt;
* boutons poussoirs SW-MEC-5E ; '''OK'''&lt;br /&gt;
* LED empreinte CMS 0603 ;&lt;br /&gt;
* microphone MCKPCM-97H45P-40DB-4808 ; '''OK'''&lt;br /&gt;
* haut-parleur (buzzer, traversant, écartement 6mm) ; &lt;br /&gt;
* ATtiny84-20SSU. '''OK'''&lt;br /&gt;
&lt;br /&gt;
Prévoir un étage d'amplification, prendre exemple sur la page https://theorycircuit.com/simple-single-transistor-audio-amplifier-circuit/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:exemple_npn_audio.png|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
Autant le microphone peut être échantillonné par l'ADC (convertisseur analogique cers numérique) du microcontrôleur autant pour le haut-parleur il faut prévoir un DAC (convertisseur numérique vers analogique) externe. Il est possible de créer un DAC basique avec uniquement des résistances, lire la page https://www.electronics-tutorials.ws/combination/r-2r-dac.html.&lt;br /&gt;
&lt;br /&gt;
Ne pas oublier le connecteur ISP (2x3 broches, espacement 2,54mm) pour programmer l'ATtiny84 et le connecteur USB (https://www.sparkfun.com/products/587) pour alimenter la carte.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez commencer à concevoir le schéma du premier circuit.&lt;br /&gt;
&lt;br /&gt;
= Lien d'accès au photos et vidéo additionnels =&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2022-1&amp;diff=17925</id>
		<title>Binome2022-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2022-1&amp;diff=17925"/>
				<updated>2023-01-26T17:57:56Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Liste composants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
= Fonctionnalité supplémentaire = &lt;br /&gt;
&lt;br /&gt;
Clavier qui fait du bruit (parle ou joue de la musique) quand on appuie sur les touches. &amp;lt;br&amp;gt;&lt;br /&gt;
Le clavier aura une touche secrète espionne qui quand on appuie dessus, lance un enregistrement audio.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;PS:&amp;lt;/u&amp;gt; la touche enregistrement ne fait pas de bruit ;)&lt;br /&gt;
&lt;br /&gt;
= Liste composants =&lt;br /&gt;
&lt;br /&gt;
Pour la première carte :&lt;br /&gt;
* boutons poussoirs SW-MEC-5E ; '''OK'''&lt;br /&gt;
* LED empreinte CMS 0603 ;&lt;br /&gt;
* microphone MCKPCM-97H45P-40DB-4808 ; '''OK'''&lt;br /&gt;
* haut-parleur (buzzer, traversant, écartement 6mm) ; &lt;br /&gt;
* ATtiny84-20SSU. '''OK'''&lt;br /&gt;
&lt;br /&gt;
Prévoir un étage d'amplification, prendre exemple sur la page https://theorycircuit.com/simple-single-transistor-audio-amplifier-circuit/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:exemple_npn_audio.jpg|thumb|center|200px]]&lt;br /&gt;
&lt;br /&gt;
Autant le microphone peut être échantillonné par l'ADC (convertisseur analogique cers numérique) du microcontrôleur autant pour le haut-parleur il faut prévoir un DAC (convertisseur numérique vers analogique) externe. Il est possible de créer un DAC basique avec uniquement des résistances, lire la page https://www.electronics-tutorials.ws/combination/r-2r-dac.html.&lt;br /&gt;
&lt;br /&gt;
Ne pas oublier le connecteur ISP (2x3 broches, espacement 2,54mm) pour programmer l'ATtiny84 et le connecteur USB (https://www.sparkfun.com/products/587) pour alimenter la carte.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez commencer à concevoir le schéma du premier circuit.&lt;br /&gt;
&lt;br /&gt;
= Lien d'accès au photos et vidéo additionnels =&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2022-1&amp;diff=17924</id>
		<title>Binome2022-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2022-1&amp;diff=17924"/>
				<updated>2023-01-26T17:57:14Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Liste composants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
= Fonctionnalité supplémentaire = &lt;br /&gt;
&lt;br /&gt;
Clavier qui fait du bruit (parle ou joue de la musique) quand on appuie sur les touches. &amp;lt;br&amp;gt;&lt;br /&gt;
Le clavier aura une touche secrète espionne qui quand on appuie dessus, lance un enregistrement audio.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;PS:&amp;lt;/u&amp;gt; la touche enregistrement ne fait pas de bruit ;)&lt;br /&gt;
&lt;br /&gt;
= Liste composants =&lt;br /&gt;
&lt;br /&gt;
Pour la première carte :&lt;br /&gt;
* boutons poussoirs SW-MEC-5E ; '''OK'''&lt;br /&gt;
* LED empreinte CMS 0603 ;&lt;br /&gt;
* microphone MCKPCM-97H45P-40DB-4808 ; '''OK'''&lt;br /&gt;
* haut-parleur (buzzer, traversant, écartement 6mm) ; &lt;br /&gt;
* ATtiny84-20SSU. '''OK'''&lt;br /&gt;
&lt;br /&gt;
Prévoir un étage d'amplification, prendre exemple sur la page https://theorycircuit.com/simple-single-transistor-audio-amplifier-circuit/.&lt;br /&gt;
&lt;br /&gt;
Autant le microphone peut être échantillonné par l'ADC (convertisseur analogique cers numérique) du microcontrôleur autant pour le haut-parleur il faut prévoir un DAC (convertisseur numérique vers analogique) externe. Il est possible de créer un DAC basique avec uniquement des résistances, lire la page https://www.electronics-tutorials.ws/combination/r-2r-dac.html.&lt;br /&gt;
&lt;br /&gt;
Ne pas oublier le connecteur ISP (2x3 broches, espacement 2,54mm) pour programmer l'ATtiny84 et le connecteur USB (https://www.sparkfun.com/products/587) pour alimenter la carte.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez commencer à concevoir le schéma du premier circuit.&lt;br /&gt;
&lt;br /&gt;
= Lien d'accès au photos et vidéo additionnels =&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-7&amp;diff=17644</id>
		<title>Discussion:Binome2021-7</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-7&amp;diff=17644"/>
				<updated>2022-05-10T14:44:43Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carte USB non fonctionnelle et non personnelle mais soudée&lt;br /&gt;
&lt;br /&gt;
Carte Annexe fonctionnelle , quelques tests mais non documentés à ce jour.&lt;br /&gt;
&lt;br /&gt;
wiki moyen.&lt;br /&gt;
&lt;br /&gt;
note provisoire : 13/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-10&amp;diff=17595</id>
		<title>Discussion:Binome2021-10</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-10&amp;diff=17595"/>
				<updated>2022-05-05T18:25:08Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : Page créée avec « Carte USB fonctionnelle et personnelle  Carte Annexe fonctionnelle mais problème de communication SPI.  wiki moyen pour l'instant, manque la fin  note provisoire : 17/20 »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carte USB fonctionnelle et personnelle&lt;br /&gt;
&lt;br /&gt;
Carte Annexe fonctionnelle mais problème de communication SPI.&lt;br /&gt;
&lt;br /&gt;
wiki moyen pour l'instant, manque la fin&lt;br /&gt;
&lt;br /&gt;
note provisoire : 17/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-9&amp;diff=17594</id>
		<title>Discussion:Binome2021-9</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-9&amp;diff=17594"/>
				<updated>2022-05-05T18:22:19Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : Page créée avec « Carte USB fonctionnelle et personnelle  Carte Annexe fonctionnelle avec deux versions.  wiki correct, manque les codes SPI pour l'instant.  note provisoire : 18/20 »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carte USB fonctionnelle et personnelle&lt;br /&gt;
&lt;br /&gt;
Carte Annexe fonctionnelle avec deux versions.&lt;br /&gt;
&lt;br /&gt;
wiki correct, manque les codes SPI pour l'instant.&lt;br /&gt;
&lt;br /&gt;
note provisoire : 18/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-8&amp;diff=17593</id>
		<title>Discussion:Binome2021-8</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-8&amp;diff=17593"/>
				<updated>2022-05-05T18:20:43Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carte USB fonctionnelle et non personnelle&lt;br /&gt;
&lt;br /&gt;
Pas de carte Annexe (utilisation d'un carte BT).&lt;br /&gt;
&lt;br /&gt;
Une application Android testée avec succès.&lt;br /&gt;
&lt;br /&gt;
wiki peu rempli pour l'instant.&lt;br /&gt;
&lt;br /&gt;
note provisoire : 14/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-8&amp;diff=17592</id>
		<title>Discussion:Binome2021-8</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-8&amp;diff=17592"/>
				<updated>2022-05-05T18:20:03Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : Page créée avec « Carte USB fonctionnelle et non personnelle  Pas de carte Annexe (utilisation d'un carte BT).  Une application Android testée avec succès.  wiki peu rempli pour l'instant... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carte USB fonctionnelle et non personnelle&lt;br /&gt;
&lt;br /&gt;
Pas de carte Annexe (utilisation d'un carte BT).&lt;br /&gt;
&lt;br /&gt;
Une application Android testée avec succès.&lt;br /&gt;
&lt;br /&gt;
wiki peu rempli pour l'instant.&lt;br /&gt;
&lt;br /&gt;
note provisoire : 17/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-7&amp;diff=17591</id>
		<title>Discussion:Binome2021-7</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-7&amp;diff=17591"/>
				<updated>2022-05-05T18:19:33Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carte USB non fonctionnelle et non personnelle&lt;br /&gt;
&lt;br /&gt;
Carte Annexe fonctionnelle , quelques tests mais non documentés à ce jour.&lt;br /&gt;
&lt;br /&gt;
wiki indigent pour l'instant.&lt;br /&gt;
&lt;br /&gt;
note provisoire : 11/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-7&amp;diff=17584</id>
		<title>Discussion:Binome2021-7</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-7&amp;diff=17584"/>
				<updated>2022-05-05T18:16:23Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : Page créée avec « Carte USB non fonctionnelle et non personnelle  Carte Annexe fonctionnelle , quelques tests mais non documentés à ce jour.  wiki indigent  note provisoire : 11/20 »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carte USB non fonctionnelle et non personnelle&lt;br /&gt;
&lt;br /&gt;
Carte Annexe fonctionnelle , quelques tests mais non documentés à ce jour.&lt;br /&gt;
&lt;br /&gt;
wiki indigent&lt;br /&gt;
&lt;br /&gt;
note provisoire : 11/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-6&amp;diff=17581</id>
		<title>Discussion:Binome2021-6</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-6&amp;diff=17581"/>
				<updated>2022-05-05T18:14:49Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : Page créée avec « Carte USB non fonctionnelle et non personnelle, non programmée  Carte Annexe intéressante et fonctionnelle (recharge de batterie NiMH), beaucoup de tests.  wiki correct... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carte USB non fonctionnelle et non personnelle, non programmée&lt;br /&gt;
&lt;br /&gt;
Carte Annexe intéressante et fonctionnelle (recharge de batterie NiMH), beaucoup de tests.&lt;br /&gt;
&lt;br /&gt;
wiki correct&lt;br /&gt;
&lt;br /&gt;
note provisoire : 17/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-2&amp;diff=17576</id>
		<title>Discussion:Binome2021-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-2&amp;diff=17576"/>
				<updated>2022-05-05T18:09:17Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carte USB fonctionnelle et personnelle. Code LUFA personnel&lt;br /&gt;
&lt;br /&gt;
Carte Annexe fonctionnelle mais problème communication SPI entre les deux cartes&lt;br /&gt;
&lt;br /&gt;
Boîtier 3D conçu et réalisé&lt;br /&gt;
&lt;br /&gt;
wiki moyen pour l'instant&lt;br /&gt;
&lt;br /&gt;
note provisoire : 20/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-5&amp;diff=17574</id>
		<title>Discussion:Binome2021-5</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-5&amp;diff=17574"/>
				<updated>2022-05-05T18:08:43Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : Page créée avec « Carte USB fonctionnelle et personnelle, complétement routée sur KiCad par les étudiants.  Carte Annexe fonctionnelle, boîtier 3D réalisé  wiki très correct  note pr... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carte USB fonctionnelle et personnelle, complétement routée sur KiCad par les étudiants.&lt;br /&gt;
&lt;br /&gt;
Carte Annexe fonctionnelle, boîtier 3D réalisé&lt;br /&gt;
&lt;br /&gt;
wiki très correct&lt;br /&gt;
&lt;br /&gt;
note provisoire : 20/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-3&amp;diff=17572</id>
		<title>Discussion:Binome2021-3</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-3&amp;diff=17572"/>
				<updated>2022-05-05T18:04:34Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : Page créée avec « Carte USB fonctionnelle et personnelle. Code personnel avec de l'aide.  Carte Annexe presque fonctionnelle mais simple.  wiki correct pour l'instant.  note provisoire : 18/20 »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carte USB fonctionnelle et personnelle. Code personnel avec de l'aide.&lt;br /&gt;
&lt;br /&gt;
Carte Annexe presque fonctionnelle mais simple.&lt;br /&gt;
&lt;br /&gt;
wiki correct pour l'instant.&lt;br /&gt;
&lt;br /&gt;
note provisoire : 18/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-2&amp;diff=17567</id>
		<title>Discussion:Binome2021-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-2&amp;diff=17567"/>
				<updated>2022-05-05T17:58:28Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : Page créée avec « Carte USB fonctionnelle et personnelle. Code LUFA personnel  Carte Annexe fonctionnelle mais problème communication SPI entre les deux cartes  Boîtier 3D conçu et réal... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carte USB fonctionnelle et personnelle. Code LUFA personnel&lt;br /&gt;
&lt;br /&gt;
Carte Annexe fonctionnelle mais problème communication SPI entre les deux cartes&lt;br /&gt;
&lt;br /&gt;
Boîtier 3D conçu et réalisé&lt;br /&gt;
&lt;br /&gt;
wiki moyen pour l'instant&lt;br /&gt;
&lt;br /&gt;
note provisoire : 19,5/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-1&amp;diff=17566</id>
		<title>Discussion:Binome2021-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2021-1&amp;diff=17566"/>
				<updated>2022-05-05T17:56:32Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : Page créée avec « Carte USB fonctionnelle et personnelle  Carte Annexe non fonctionnelle mais pour cause de problème communication SPI avec DAC.  wiki moyen pour l'instant, alimenté à ch... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carte USB fonctionnelle et personnelle&lt;br /&gt;
&lt;br /&gt;
Carte Annexe non fonctionnelle mais pour cause de problème communication SPI avec DAC.&lt;br /&gt;
&lt;br /&gt;
wiki moyen pour l'instant, alimenté à chaque séance mais sans plus&lt;br /&gt;
&lt;br /&gt;
note provisoire : 17/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2021-2022&amp;diff=17316</id>
		<title>BE 2021-2022</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2021-2022&amp;diff=17316"/>
				<updated>2022-04-07T18:12:00Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Bibliothèque LUFA */&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;
Vous allez d'abord réaliser une carte gérant uniquement une des fonctionnalités annexes de votre carte. Cette carte comportera un micro-contrôleur facile à souder : un ATTiny84. Ainsi cette première carte sera un minimum autonome. Par la suite, vous vous attacherez à concevoir la carte complète avec un micro-contrôleur plus puissant possédant des capacités USB matérielle comme l'ATMega16u2. Pour la première carte n'hésitez pas à consulter les pages Wiki de vos prédécesseurs, ils se sont servis d'un ATTiny84 pour réaliser un dé électronique.&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;
= Cartes intermédiaires =&lt;br /&gt;
&lt;br /&gt;
Pour les élèves n'ayant jamais conçu de carte électronique il est conseillé de concevoir une première carte ne comportant que la partie spécifique de leur clef USB.&lt;br /&gt;
&lt;br /&gt;
Composant Fritzing SOIC-10 : [[File:SOIC-10.zip]] (à renommer en &amp;lt;code&amp;gt;SOIC-10.fzpz&amp;lt;/code&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. Un document très important pour comprendre le fonctionnement de ce micro-contrôleur est le document technique (datasheet en patoi) : [http://ww1.microchip.com/downloads/en/DeviceDoc/doc7799.pdf].&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é.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez utiliser des mémoires AT45DB641E 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). Le document technique [https://www.adestotech.com/wp-content/uploads/DS-45DB641E-027.pdf] de ces mémoires permet de connaître les commandes pour les configurer et y accéder en lecture et en écriture.&lt;br /&gt;
&lt;br /&gt;
Si vous êtes téméraire, vous pouvez utiliser une mémoire MT29F128G8 accessible par un bus de 8 bits, plus difficile à souder, plus difficile à programmer mais d'une capacité intéressante (128Gb). La documentation technique est plus difficile à trouver, il faut aller sur le site du fabricant (micron) et montrer patte blanche. Vous trouverez le document dans le répertoire éponyme des machines de projet.&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. Pour vous faciliter la vie il est cependant recommandé :&lt;br /&gt;
* de prévoir un vrai connecteur ISP (connecteur 2x3 broches) pour la programmation initiale du micro-contrôleur ;&lt;br /&gt;
* de prévoir un connecteur FTDI (comportant principalement la liaison série) pour la facilité de déverminage.&lt;br /&gt;
&lt;br /&gt;
== Cartes version beta ==&lt;br /&gt;
[[File:cle_usbv2_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usbv2_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
Une piste parasite entre masse et 3,3v a été supprimée, le &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; est en 3,3v et un mini-connecteur ICSP a été ajouté.&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usbv2.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_bisv2_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usb_bisv2_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
Le &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; est en 3,3v et un mini-connecteur ICSP a été ajouté.&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usb_bisv2.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il peut y avoir des problèmes lors du chargement des fichiers, des composants peuvent être déclarés absents. Essayez d'importer les composants suivants :&lt;br /&gt;
* mémoire MT29F128G8 : [[file:MT29F128G08.zip]]&lt;br /&gt;
* mémoire AT45DB641E : [[file:SO08-EIAJ.zip]]&lt;br /&gt;
* quartz FA238 : [[file:FA238.zip]]&lt;br /&gt;
&lt;br /&gt;
Renommez les fichiers de &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; en &amp;lt;tt&amp;gt;.fzpz&amp;lt;/tt&amp;gt; avant de les importer dans Fritzing.&lt;br /&gt;
&lt;br /&gt;
= Test des cartes =&lt;br /&gt;
&lt;br /&gt;
== Premier test, faire clignoter une LED par programmation DFU ==&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;
== Premier problème, correction par programmation SPI ==&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;
Force est de constater un problème, la LED clignote bien trop lentement. Quelques recherches apprennent que les &amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt; sont vendus configurés avec un diviseur d'horloge par 8 activé. Le micro-contrôleur fonctionne donc à 1MHz et pas à 8Mhz comme souhaité. Ce type de configuration passe par une reconfiguration des &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; du micro-contrôleur. Manque de chance ces &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; ne peuvent être changées que par programmation SPI : impossible de les modifier en mode DFU. Voir le paragraphe ci-après pour comprendre comment se fait une programmation par SPI.&lt;br /&gt;
&lt;br /&gt;
[[File:cle_mini_isp.jpg|thumb|left|300px|Ancienne clef, fils soudés au vol et programmateur SPI]]&lt;br /&gt;
[[File:cle_mini_icsp.jpg|thumb|right|300px|Nouvelle clef, fils soudés sur le micro-ICSP et programmateur SPI]]&lt;br /&gt;
Les premières version de PCB n'étaient pas prévues pour ce type de programmation. Le mode DFU semblait suffisant. Pour faciliter cette programmation, des via ont été placées de façon à implanter un mini connecteur ICSP. Une erreur a été corrigée en passant : la ligne &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; du micro-contrôleur était alimentée en 5v, elle a été passée à 3,3v. En attendant les nouvelles cartes, des fils ont été soudés sur les cartes pour avoir un accès au bus SPI et au &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt;. D'ailleurs, une malheureuse tentative de programmation en 5v ayant grillé les micro-contrôleur, d'autres cartes version alpha ont du être soudées.&lt;br /&gt;
&lt;br /&gt;
Une fois le dispositif de programmation SPI adéquat mis au point, une configuration est tentée pour désactiver la division de l'horloge (modification de la valeur de l'octet de configuration appelé &amp;lt;tt&amp;gt;lfuse&amp;lt;/tt&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
  avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette configuration échoue : le micro-contrôleur est passé, en usine, en état verrouillé. Vous pouvez vérifier cela avec la commande ci-dessous et en utilisant l'outil de calcul des &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; en ligne [http://eleccelerator.com/fusecalc/fusecalc.php?chip=atmega16u2].&lt;br /&gt;
&lt;br /&gt;
  avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -U lock:r:-:h&lt;br /&gt;
&lt;br /&gt;
Il faut donc totalement réinitialiser le micro-contrôleur :&lt;br /&gt;
&lt;br /&gt;
  avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -t&lt;br /&gt;
  avrdude&amp;gt; erase&lt;br /&gt;
  avrdude&amp;gt; quit&lt;br /&gt;
&lt;br /&gt;
Il est alors possible de modifier l'octet de configuration &amp;lt;tt&amp;gt;lfuse&amp;lt;/tt&amp;gt; comme indiqué ci-dessus. Sauf que maintenant le micro-contrôleur ne contient même plus l'amorçeur. Il n'est plus possible de le programmer en mode DFU. Il ne semble pas possible de mettre la main sur l'amorceur du fondeur pour &amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt;. Heureusement l'amorceur pour une précédente version de la puce est disponible : [[media:at90usb162-bl-usb-1_0_5.zip]]. Il est assez simple d'installer l'amorceur par programmation SPI :&lt;br /&gt;
&lt;br /&gt;
  avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -U flash:w:at90usb162-bl-usb-1_0_5.hex&lt;br /&gt;
&lt;br /&gt;
Après la modification de l'octet de configuration &amp;lt;tt&amp;gt;lfuse&amp;lt;/tt&amp;gt;, la LED clignote normalement : [[media:ClefUSBTestLedBis.mp4]]. A noter qu'il faut maintenant télécharger le programme en utilisant &amp;lt;tt&amp;gt;at90usb162&amp;lt;/tt&amp;gt; comme cible au lieu de &amp;lt;tt&amp;gt;atmega16u2&amp;lt;/tt&amp;gt; à cause de la différence d'amorceur.&lt;br /&gt;
&lt;br /&gt;
== Second test, accès aux mémoires ==&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;
[[File:cle_usb_verso_AT45DB641E.jpg|thumb|left|300px|Mémoires AT45DB641E]]&lt;br /&gt;
Pour tester une 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;PB4&amp;lt;/tt&amp;gt;. La broche &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; des deux mémoires est reliée à la ligne &amp;lt;tt&amp;gt;PB5&amp;lt;/tt&amp;gt; du micro-contrôleur. Il faut donc passer &amp;lt;tt&amp;gt;PB5&amp;lt;/tt&amp;gt; en sortie et la mettre à l'état haut.&lt;br /&gt;
&lt;br /&gt;
Pour tester une mémoire, il est possible de demander ses identifiants. Pour cela, il faut envoyer sur le bus SPI, une fois la mémoire sélectionnée, l'octet &amp;lt;tt&amp;gt;0x9F&amp;lt;/tt&amp;gt;. Ensuite, il faut lire les cinq octets des identifiants (ID fabricant, ID de la mémoire, ...) puis il faut remonter la ligne de sélection à l'état haut.&lt;br /&gt;
&lt;br /&gt;
Un programme de détection est disponible [[Media:ClefUSBTestMem.zip]]. Le test commence par 10 flashes rapides sur la LED de test. Pour simplifier la lecture du résultat, un test validé donne lieu à 5 flashes et un test en échec à un seul flash. Les deux mémoires sont testées tour à tour. Le prototype de clef USB avec des mémoires AT45DB641E passe avec succès ce test.&lt;br /&gt;
&lt;br /&gt;
Pour aller plus loin, il faut écrire dans les mémoires et vérifier, par une lecture, que les écritures ont été bien effectuées.&lt;br /&gt;
&lt;br /&gt;
Un premier programme de test des mémoires est disponible [[Media:ClefUSBTestMemRW.zip]]. Ce programme écrit cinq octets dans le premier bloc de la première mémoire, les lit, les multiplie par 2 et écrit les résultats dans le premier bloc de la seconde mémoire. Le test commence encore par 10 flashes rapides. Un test effectué avec succès donne lieu à 5 flashes, en cas d'échec un seul flash. Le prototype de clef USB avec des mémoires AT45DB641E passe avec succès ce test.&lt;br /&gt;
&lt;br /&gt;
Un second programme de test de la première mémoire est disponible [[Media:ClefUSBTestMemRW2.zip]]. Ce programme écrit des valeurs séquentielles dans tous les blocs puis vérifie par des lectures que les écritures étaient bien effectuées. Le test commence encore par 10 flashes rapides. Ensuite un flash de contrôle est effectué tous les 256 blocs en écriture comme en lecture. C'est l'occasion de voir que les écritures sont plus lentes que les lectures. Après test des 8M de la première mémoire le résultat est donné en boucle. Toujours 5 flashes pour un succès et 1 pour un échec. Le résultat est répété toutes les 5 minutes histoire de pouvoir laisser le test se dérouler tout seul (test assez long).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test de la mémoire MT29F128G8 ===&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_verso_MT29F128G8.jpg|thumb|left|150px|Mémoires MT29F128G8]]&lt;br /&gt;
L'accès à cette mémoire se fait par un bus de 8 bits. Le bus est utilisé à la fois pour envoyer des commandes et des données vers la mémoire mais aussi pour récupérer les données stockées&lt;br /&gt;
en mémoire.&lt;br /&gt;
&lt;br /&gt;
Les mémoires MT29F peut comporter plusieurs puces adressables séparémement, chaque puce pouvant comporter plusieurs unités logiques (LUN). La programmation commence par une réinitialisation des puces. Pour cela il suffit d'envoyer la commande &amp;lt;code&amp;gt;0xff&amp;lt;/code&amp;gt; à chaque puce et d'attendre que la ligne d'activité repasse au niveau &amp;quot;libre&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ensuite pour tester la mémoire, il est possible de lui demander divers identifiants. Pour cela, il faut envoyer la commande &amp;lt;code&amp;gt;0x90&amp;lt;/code&amp;gt; suivie des adresses &amp;lt;code&amp;gt;0x00&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x20&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;0x40&amp;lt;/code&amp;gt; suivant l'identifiant souhaité. Les octets d'identification peuvent alors être récupérés, un par un, sur le bus 8 bits.&lt;br /&gt;
&lt;br /&gt;
Le programme de récupération de l'identification est disponible [[Media:ClefUSBGoIDBasique.zip]]. Le test commence par 10 flashes rapides sur la LED de test. Les octets de l'identification sont ensuite &amp;quot;affichés&amp;quot; sur la LED de test. Cet affichage se fait bit par bit : un flashe pour un 0 et deux flashes pour un 1. Le programme se termine par 5 flashes rapides. Vérifiez avec la documentation de la mémoire que les octets donnés par le programme de test sont ceux attendus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Programmation de micro-contrôleur par SPI =&lt;br /&gt;
&lt;br /&gt;
Nativement les micro-contrôleurs AVR peuvent être programmés via le bus SPI. Généralement un amorceur (bootloader) est installé sur ces micro-contrôleurs pour qu'ils puissent être programmés plus facilement par une connexion série pure (cas de l'ATMega328p par exemple) ou par une connexion USB (cas de l'ATMega16u2). Malheureusement les amorceurs peuvent être effacés par une mauvaise manoeuvre ou ne permettent pas de configurer tous les aspects du micro-contrôleur.&lt;br /&gt;
&lt;br /&gt;
[[File:uno_as_isp.jpg|thumb|left|400px|Arduino Uno comme programmateur]]&lt;br /&gt;
Généralement pour une programmation de micro-contrôleur par bus SPI, un connecteur ICSP est utilisé. Ce connecteur regroupe les lignes du bus SPI, la masse, l'alimentation et le &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt;. Un simple Arduino UNO peut-être utilisé comme programmateur par bus SPI. Les lignes MISO, MOSI, SCK, GND, VCC du programmateur sont connectées sur les mêmes lignes de la cible. La ligne 10 du programmateur est connectée sur le &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; de la cible. Le programme ArduinoISP doit être téléversé sur le UNO jouant le rôle de programmateur. Ce programme fait partie des exemples fournis avec l'IDE Arduino.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un exemple d'utilisation d'un programmateur par bus SPI pour obtenir les &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; d'un &amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt; (les &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; sont des octets de configuration bas niveau du micro-contrôleur) :&lt;br /&gt;
  &lt;br /&gt;
 avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -v&lt;br /&gt;
&lt;br /&gt;
Un exemple pour télécharger un programme par SPI sur un &amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
 avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -U flash:w:programme.hex&lt;br /&gt;
&lt;br /&gt;
Dans ces exemples, il est supposé que le port série associé à l'UNO est &amp;lt;tt&amp;gt;/dev/ttyACMO&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:minipro_as_isp.jpg|thumb|left|400px|Arduino mini-pro comme programmateur]]&lt;br /&gt;
Si le micro-contrôleur est alimenté en 3,3v utiliser un Arduino Uno comme programmateur est une mauvaise idée : un UNO fonctionne à 5v et la communication SPI entre une plateforme à 5v et une autre à 3,3v ne fonctionne pas. Il existe assez peu de plateformes Arduino en 3,3v. Vous pouvez utiliser un Arduino Mini Pro 3,3v en conjonction avec un FTDI (convertisseur USB/série) lui aussi en 3,3v. Le Mini Pro ne dispose pas d'un connecteur ICSP. Il faut utiliser la ligne 11 pour connecter la ligne MOSI de la cible, la ligne 12 pour MISO et la ligne 13 pour SCK.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L'utilitaire &amp;lt;tt&amp;gt;avrdude&amp;lt;/tt&amp;gt; peut être utilisé pour programmer la cible comme avec le programmateur à base d'UNO. Attention le port série sera probablement &amp;lt;tt&amp;gt;/dev/ttyUSBO&amp;lt;/tt&amp;gt; cette fois.&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;NONE&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;. Pour vous aider une version modifiée de la démonstration &amp;lt;tt&amp;gt;MassStorage&amp;lt;/tt&amp;gt; est disponible [[media:MassStoragePeiP.zip]]. Dans cette version, vous n'avez à modifier que les fichiers &amp;lt;tt&amp;gt;Lib/DataflashManager.h&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;Lib/DataflashManager.c&amp;lt;/tt&amp;gt; en vous appuyant sur les programmes de test des mémoires.&lt;br /&gt;
&lt;br /&gt;
Une tendance naturelle est de créer un tableau pour stocker une page mémoire mais avec un ATMega16u2 il vaut mieux éviter : ce micro-contrôleur ne possède que 512 octets de mémoire vive. Même allouer un tableau pour une page de 256 octets n'est pas une évidence sachant que la bibliothèque LUFA consomme déjà de la mémoire. Vous écrirez donc les octets un à un dans le tampon d'écriture des mémoires et vous lirez les octets d'une page mémoire un à un.&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 at90usb162 erase&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer at90usb162 flash MassStorage.hex&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;dfu-programmer at90usb162 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;
= Test du programme avec la bibliothèque LUFA =&lt;br /&gt;
&lt;br /&gt;
Un premier test très simple à réaliser consiste à compiler le programme &amp;lt;tt&amp;gt;MassStoragePeiP&amp;lt;/tt&amp;gt; sans ajouter les accès à la mémoire puis à le télécharger sur le micro-contrôleur. Vous devriez déjà vous apercevoir que votre carte est reconnue comme une clef USB. Sur un système Linux, les deux utilitaires &amp;lt;tt&amp;gt;dmesg&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;lsblk&amp;lt;/tt&amp;gt; vous en convaincront.&lt;br /&gt;
&lt;br /&gt;
 # dmesg | tail&lt;br /&gt;
 [21942.134207] usb 1-1: new full-speed USB device number 4 using xhci_hcd&lt;br /&gt;
 [21942.333156] usb 1-1: New USB device found, idVendor=03eb, idProduct=2045, bcdDevice= 0.01&lt;br /&gt;
 [21942.333161] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=220&lt;br /&gt;
 [21942.333163] usb 1-1: Product: LUFA Mass Storage Demo&lt;br /&gt;
 [21942.333166] usb 1-1: Manufacturer: Dean Camera&lt;br /&gt;
 [21942.333168] usb 1-1: SerialNumber: 758303337383514140C1&lt;br /&gt;
 [21942.339211] usb-storage 1-1:1.0: USB Mass Storage device detected&lt;br /&gt;
 [21942.339407] scsi host6: usb-storage 1-1:1.0&lt;br /&gt;
 [21943.358141] scsi 6:0:0:0: Direct-Access     LUFA     Dataflash Disk   0.00 PQ: 0 ANSI: 0&lt;br /&gt;
 [21943.358778] sd 6:0:0:0: Attached scsi generic sg2 type 0&lt;br /&gt;
 [21943.359523] sd 6:0:0:0: [sdb] 2048 512-byte logical blocks: (1.05 MB/1.00 MiB)&lt;br /&gt;
 [21943.359910] sd 6:0:0:0: [sdb] Write Protect is off&lt;br /&gt;
 [21943.359915] sd 6:0:0:0: [sdb] Mode Sense: 00 00 00 00&lt;br /&gt;
 [21943.360221] sd 6:0:0:0: [sdb] Asking for cache data failed&lt;br /&gt;
 [21943.360241] sd 6:0:0:0: [sdb] Assuming drive cache: write through&lt;br /&gt;
 [21943.404925] sd 6:0:0:0: [sdb] Attached SCSI removable disk&lt;br /&gt;
&lt;br /&gt;
 # lsblk&lt;br /&gt;
 NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
 sda      8:0    0 119,2G  0 disk &lt;br /&gt;
 ├─sda1   8:1    0 114,4G  0 part /&lt;br /&gt;
 ├─sda2   8:2    0     1K  0 part &lt;br /&gt;
 └─sda5   8:5    0   4,9G  0 part [SWAP]&lt;br /&gt;
 sdb      8:16   1     1M  0 disk &lt;br /&gt;
 sr0     11:0    1  1024M  0 rom&lt;br /&gt;
&lt;br /&gt;
Pour vous familiariser avec le code, vous pouvez tenter de changer les noms du produit, du fabricant, le numéro de série et même la taille de la clef.&lt;br /&gt;
&lt;br /&gt;
Avant de faire un test de votre clef avec un système de fichier, vous pouvez tester si elle gère correctement ses blocs mémoires. Le programme [[media:TestBlock.zip]] permet d'effectuer une écriture dans les blocs et, dans un second temps, de vérifier que ces blocs contiennent bien les bonnes valeurs. Pour l'utiliser, insérez votre clef, trouvez le nom du périphérique avec la commande &amp;lt;tt&amp;gt;lsblk&amp;lt;/tt&amp;gt; et lancez la commande ci-dessous (ici il est supposé que le nom du périphérique est &amp;lt;tt&amp;gt;/dev/sdb&amp;lt;/tt&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
 ./testblock /dev/sdb W&lt;br /&gt;
&lt;br /&gt;
Une fois le programme terminé, enlevez la clef pour s'assurer que la lecture ne se fera pas dans les tampons, remettez la et envoyez la commande :&lt;br /&gt;
&lt;br /&gt;
 ./testblock /dev/sdb R&lt;br /&gt;
&lt;br /&gt;
Si le programme ne vous affiche pas de différence d'octet, c'est que votre clef fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez alors formater votre clef :&lt;br /&gt;
&lt;br /&gt;
  mkfs -t vfat /dev/sdb&lt;br /&gt;
&lt;br /&gt;
La monter :&lt;br /&gt;
&lt;br /&gt;
  mount /dev/sdb /mnt&lt;br /&gt;
&lt;br /&gt;
Mettre quelques fichiers dessus, la démonter (avec la commande &amp;lt;tt&amp;gt;umount&amp;lt;/tt&amp;gt;) et vérifier que vos fichiers sont encore là quand vous reconnectez la clef.&lt;br /&gt;
&lt;br /&gt;
= Calcul de l'espace occupée sur une clef USB =&lt;br /&gt;
&lt;br /&gt;
Certains binômes cherchent à afficher le pourcentage d'espace libre sur leur clef USB. C'est possible à réaliser avec quelques hypothèses. Dans un premier temps nous allons supposer que la clef n'est pas partionnée et que le système de fichiers est de type FAT.&lt;br /&gt;
&lt;br /&gt;
== Cas du système de fichiers FAT32 ==&lt;br /&gt;
&lt;br /&gt;
Le système de fichier FAT32 peut être utilisé à partir d'environ 260Mo disponible.&lt;br /&gt;
&lt;br /&gt;
Pour ce type de système de fichiers il est possible d'avoir une évalution de l'espace libre en utilisant deux champs de la structure &amp;quot;informations&amp;quot;. Cette structure se trouve généralement dans le second bloc du système de fichier et comporte deux champs pour donner le nombre de groupes alloués et de groupes libres. Ces champs ne sont qu'approximatifs et malheureusement pas toujours mis à jour par les systèmes d'exploitation. Cela dit Linux fait correctement le travail. Un fichier C de démonstration est disponible : [[File:fat32disp.zip]].&lt;br /&gt;
&lt;br /&gt;
== Cas du système de fichiers FAT12 ==&lt;br /&gt;
&lt;br /&gt;
Pour les très petites clef (en dessous de 260Mo), seul le système de fichiers FAT12 peut fonctionner dans la famille des systèmes de fichiers FAT.&lt;br /&gt;
&lt;br /&gt;
Pour ce système de fichiers la seule solution pour connaître la taille libre de la clef est de parcourir la table d'allocation des groupes de secteurs et de compter les groupes alloués.&lt;br /&gt;
&lt;br /&gt;
D'un coté c'est assez simple car les groupes sont listés exhaustivement dans la table d'allocation et d'un autre coté en FAT12 un groupe est géré sur 12 bits, il faut donc regarder les groupes par deux (3 octets utilisés pour deux groupes).&lt;br /&gt;
&lt;br /&gt;
Un programme C de démonstration est fourni : [[File:fatdisp.zip]].&lt;br /&gt;
&lt;br /&gt;
Le principe du programme est assez simple :&lt;br /&gt;
* le premier bloc est lu et quelques champs sont récupérés :&lt;br /&gt;
** taille, en nombre de blocs, des groupes ;&lt;br /&gt;
** nombre de blocs réservés ;&lt;br /&gt;
** taille, en nombre de blocs, des tables d'allocation ; &lt;br /&gt;
** nombre total de blocs.&lt;br /&gt;
* ensuite les blocs reservés sont passés ;&lt;br /&gt;
* enfin les chaînages des groupes sont lus deux par deux (en lisant 3 octets).&lt;br /&gt;
&lt;br /&gt;
La partie de lecture des chaînages est un peu complexe en deux points :&lt;br /&gt;
* un calcul doit être effectué pour séparer les trois octets en deux chaînages ;&lt;br /&gt;
* l'énumération se fait sur les octets et pas sur les blocs.&lt;br /&gt;
&lt;br /&gt;
Le dernier point fait que le programme de démonstration peut être assez facile à adapter sur la clef : au lieu de lire des blocs de 512 octets avec la primitive &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; il faut juste la fonction de lecture des pages avec la fonction &amp;lt;code&amp;gt;AT45DB641E_read_page&amp;lt;/code&amp;gt; présentée plus haut.&lt;br /&gt;
&lt;br /&gt;
== Implantation dans la clef ==&lt;br /&gt;
&lt;br /&gt;
Il ne faut surtout pas lancer le calcul de l'espace libre à chaque accès à la clef par le bus USB. Une façon efficace de faire est la suivante :&lt;br /&gt;
* lire les informations sur le premier bloc à l'initialisation et stocker les informations pertinentes en mémoire ;&lt;br /&gt;
* noter quand un bloc de la table d'allocation est modifié ;&lt;br /&gt;
* quand un bloc de données est accédé et que la table d'allocation a été modifiée lancer la fonction d'analyse de la table d'allocation.&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 !! Carte finale&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 1&lt;br /&gt;
| CRUCHET SIMON - JOLY MAXIME &lt;br /&gt;
| Clé USB plaisir&lt;br /&gt;
| [[Binome2021-1|Binôme 1 2021/2022]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| CHEVALIER Juliette - MENUGE Clément &lt;br /&gt;
| Clé USB avec manette + LED&lt;br /&gt;
| [[Binome2021-2|Binôme 2 2021/2022]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| ISMAIL Amine &amp;amp; ZAIDI Alissia&lt;br /&gt;
| Clé USB SanGoku qui diffuse de la fumée odorante + LED&lt;br /&gt;
| [[Binome2021-3|Binôme 3 2021/2022]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| NOM Prénom&lt;br /&gt;
| Description rapide de votre spécificité&lt;br /&gt;
| [[Binome2021-4|Binôme 4 2021/2022]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Louis BONNINGRE &amp;amp; Alexis NOEL&lt;br /&gt;
| Boutton écriture rapide + led multicolore&lt;br /&gt;
| [[Binome2021-5|Binôme 5 2021/2022]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| DELAUNOY Tanguy &amp;amp; DERYCKERE Louis&lt;br /&gt;
| Clé USB lampe torche&lt;br /&gt;
| [[Binome2021-6|Binôme 6 2021/2022]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Alexis JENBACK &amp;amp; DAHMANI Jibril&lt;br /&gt;
| Description rapide de votre spécificité&lt;br /&gt;
| [[Binome2021-7|Binôme 7 2021/2022]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Louis GAMBART &amp;amp; Martin CHAUVELIERE&lt;br /&gt;
| Bluetooth pour controle de souris via Application mobile&lt;br /&gt;
| [[Binome2021-8|Binôme 8 2021/2022]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Titouan CHACHIGNOT &amp;amp; Romain DUHR&lt;br /&gt;
| Possibilité de changer de profil sur la clé (mémoire divisée)&lt;br /&gt;
| [[Binome2021-9|Binôme 9 2021/2022]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Binôme 10&lt;br /&gt;
| Anaël POULET &amp;amp; Théophile CASTELAIN&lt;br /&gt;
| Clé USB avec code de déverrouillage &lt;br /&gt;
| [[Binome2021-10|Binôme 10 2021/2022]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Carteg1.zip&amp;diff=16972</id>
		<title>Fichier:Carteg1.zip</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Carteg1.zip&amp;diff=16972"/>
				<updated>2022-03-24T18:43:01Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : Aboe a téléversé une nouvelle version de Fichier:Carteg1.zip&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Carteg1.zip&amp;diff=16970</id>
		<title>Fichier:Carteg1.zip</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Carteg1.zip&amp;diff=16970"/>
				<updated>2022-03-24T18:42:28Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2021-1&amp;diff=16968</id>
		<title>Binome2021-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2021-1&amp;diff=16968"/>
				<updated>2022-03-24T18:42:06Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /*  COMPOSANTS  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; border-color: #080004; padding: 15px; font-weight: bold;color: #FFFFFF; text-align: center; font-size: 80%; background:#FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; INTRODUCTION &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durant ce BE, nous avons décidé de réaliser une clé qui possédé un haut parleur ainsi qu'un vibreur permettant de se satisfaire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Description : Ce projet est une clé USB ayant une spécialité qui ferra fureur. Elle permet de stocker des données comme des photos ou bien des vidéos mais peut tout aussi bien vibrer mais aussi compter une belle histoire d'amour. Le but de se projet est de remonter le moral des personnes faisant du télétravail avec un objet passe partout et tout à fait anodin qui permet de passer une bien meilleure journée. La clé de forme cylindrique est fourni avec un long câble USB pour plus de maniabilité et d'aisance lors de l'utilisation.&lt;br /&gt;
&lt;br /&gt;
https://azduino.com/bin/micronucleus/&lt;br /&gt;
&lt;br /&gt;
[[Fichier:cle.zip]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 1 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Création du binôme; choix de l'option ajouté à la clé&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 2 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Début des recherches des différents composants requis pour la construction de notre clé + début du projet sur Fritzing (première esquisse produite)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:fritzing1.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 3 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Vérification de la part des professeurs du bon fonctionnement électronique du projet: Modification au niveau du HP (mise en place d'un convertisseur num/anal pour mettre des fichiers audio pré-enregistré)&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 4 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Mise en place du convertisseur sur Fritzing et vérification par les professeurs. Possibilité d'avoir une clé Stéréo. Intégration d'un deuxieme HP sur le Fritzing mais possibilité d'en mettre qu'un seul&lt;br /&gt;
&lt;br /&gt;
[[Fichier:fritzing2.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background:#FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 5 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Routage de la carte externe&lt;br /&gt;
&lt;br /&gt;
[[Fichier:routagecarteexterne.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 6 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Modifications du routage pour la carte &lt;br /&gt;
&lt;br /&gt;
[[Fichier:routagecarteexternev2.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 7&amp;lt;/div&amp;gt;=&lt;br /&gt;
Soudures effectuées vérification du fonctionnement de la carte&lt;br /&gt;
&lt;br /&gt;
[[Fichier:photocarte1.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:photocarte2.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 8 &amp;lt;/div&amp;gt;=&lt;br /&gt;
CC enlevé et test de programmation sur l'attiny 84 avec l'arduino&lt;br /&gt;
&lt;br /&gt;
[[Fichier:photocarte3.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 9 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Programmation réussi test de vibration avec un vibreur piézo (vibration trop faible ==&amp;gt; On va partir sur un vibreur de telephone)&lt;br /&gt;
et test spi transfer&lt;br /&gt;
&lt;br /&gt;
[[Fichier:photopiezo.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Exemple45.png|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 10 &amp;lt;/div&amp;gt;=&lt;br /&gt;
programmation vibreur pwm et test encodage haut parleur&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 11 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Routage de la clé USB (ajout RX, TX et GND + ISP + Alimentation (+ , GND) de la carte fille directement sur la clé USB), carte fille refaite par le corps professoral.&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: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 12 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Début de la modélisation 3D du projet, début de la programmation en C de la clé USB &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=bj57xuQS7L8&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; border-color: #080004; padding: 15px; font-weight: bold;color: #FFFFFF; text-align: center; font-size: 80%; background:#FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; COMPOSANTS &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Haut parleur : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Convertiseur Numérique/analogique : MCP48FVBXX&lt;br /&gt;
          Cablage:&lt;br /&gt;
[[Fichier:MCP48FVBXX.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Micro-controleur : Attiny84&lt;br /&gt;
          Pinout: &lt;br /&gt;
[[Fichier:Att84.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Carte essai par Alexandre :&lt;br /&gt;
[[Fichier:carteg1.zip]]&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2021-1&amp;diff=16967</id>
		<title>Binome2021-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2021-1&amp;diff=16967"/>
				<updated>2022-03-24T18:41:11Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /*  COMPOSANTS  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; border-color: #080004; padding: 15px; font-weight: bold;color: #FFFFFF; text-align: center; font-size: 80%; background:#FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; INTRODUCTION &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durant ce BE, nous avons décidé de réaliser une clé qui possédé un haut parleur ainsi qu'un vibreur permettant de se satisfaire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Description : Ce projet est une clé USB ayant une spécialité qui ferra fureur. Elle permet de stocker des données comme des photos ou bien des vidéos mais peut tout aussi bien vibrer mais aussi compter une belle histoire d'amour. Le but de se projet est de remonter le moral des personnes faisant du télétravail avec un objet passe partout et tout à fait anodin qui permet de passer une bien meilleure journée. La clé de forme cylindrique est fourni avec un long câble USB pour plus de maniabilité et d'aisance lors de l'utilisation.&lt;br /&gt;
&lt;br /&gt;
https://azduino.com/bin/micronucleus/&lt;br /&gt;
&lt;br /&gt;
[[Fichier:cle.zip]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 1 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Création du binôme; choix de l'option ajouté à la clé&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 2 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Début des recherches des différents composants requis pour la construction de notre clé + début du projet sur Fritzing (première esquisse produite)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:fritzing1.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 3 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Vérification de la part des professeurs du bon fonctionnement électronique du projet: Modification au niveau du HP (mise en place d'un convertisseur num/anal pour mettre des fichiers audio pré-enregistré)&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 4 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Mise en place du convertisseur sur Fritzing et vérification par les professeurs. Possibilité d'avoir une clé Stéréo. Intégration d'un deuxieme HP sur le Fritzing mais possibilité d'en mettre qu'un seul&lt;br /&gt;
&lt;br /&gt;
[[Fichier:fritzing2.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background:#FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 5 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Routage de la carte externe&lt;br /&gt;
&lt;br /&gt;
[[Fichier:routagecarteexterne.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 6 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Modifications du routage pour la carte &lt;br /&gt;
&lt;br /&gt;
[[Fichier:routagecarteexternev2.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 7&amp;lt;/div&amp;gt;=&lt;br /&gt;
Soudures effectuées vérification du fonctionnement de la carte&lt;br /&gt;
&lt;br /&gt;
[[Fichier:photocarte1.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:photocarte2.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 8 &amp;lt;/div&amp;gt;=&lt;br /&gt;
CC enlevé et test de programmation sur l'attiny 84 avec l'arduino&lt;br /&gt;
&lt;br /&gt;
[[Fichier:photocarte3.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 9 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Programmation réussi test de vibration avec un vibreur piézo (vibration trop faible ==&amp;gt; On va partir sur un vibreur de telephone)&lt;br /&gt;
et test spi transfer&lt;br /&gt;
&lt;br /&gt;
[[Fichier:photopiezo.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Exemple45.png|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 10 &amp;lt;/div&amp;gt;=&lt;br /&gt;
programmation vibreur pwm et test encodage haut parleur&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 11 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Routage de la clé USB (ajout RX, TX et GND + ISP + Alimentation (+ , GND) de la carte fille directement sur la clé USB), carte fille refaite par le corps professoral.&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: 40px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Séance 12 &amp;lt;/div&amp;gt;=&lt;br /&gt;
Début de la modélisation 3D du projet, début de la programmation en C de la clé USB &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=bj57xuQS7L8&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; border-color: #080004; padding: 15px; font-weight: bold;color: #FFFFFF; text-align: center; font-size: 80%; background:#FF00C8; vertical-align: top; width: 98%;&amp;quot;&amp;gt; COMPOSANTS &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Haut parleur : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Convertiseur Numérique/analogique : MCP48FVBXX&lt;br /&gt;
          Cablage:&lt;br /&gt;
[[Fichier:MCP48FVBXX.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Micro-controleur : Attiny84&lt;br /&gt;
          Pinout: &lt;br /&gt;
[[Fichier:Att84.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Carte essai par Alexandre :&lt;br /&gt;
[[Fichier:]]&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2020-1&amp;diff=14046</id>
		<title>Discussion:Binome2020-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2020-1&amp;diff=14046"/>
				<updated>2021-03-09T11:52:36Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Travail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Commentaires sur le BE =&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
&lt;br /&gt;
Un bel effort avec les schéma des circuits. Vous pouvez ajouter une photo du circuit. Merci de corriger les coquilles, j'ai modifié ce qui me faisait le plus mal aux yeux mais relisez par vous-même. Très bonne idée d'inclure des simulations mais expliquez ce qu'il faut en conclure.&lt;br /&gt;
&lt;br /&gt;
== Travail ==&lt;br /&gt;
&lt;br /&gt;
Rien à redire au moment de la rédaction de ce commentaire. Carte intermédiaire conçue et réalisée. C'est dommage qu'elle soit non fonctionnelle (expliquez le problème dans le Wiki). Attendez le PCB industriel pour un second essai.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez vous inspirer de ce lien ... avec des capacités beaucoup plus petites, cela va sans dire : https://maker.pro/custom/projects/make-coil-gun-without-camera ou ici :http://pafgadget.free.fr/bidouillages/flash.htm ou ça : http://bxtronics.free.fr/how/appjetab/appjetab.htm&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2020-1&amp;diff=14045</id>
		<title>Discussion:Binome2020-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2020-1&amp;diff=14045"/>
				<updated>2021-03-09T11:47:26Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Travail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Commentaires sur le BE =&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
&lt;br /&gt;
Un bel effort avec les schéma des circuits. Vous pouvez ajouter une photo du circuit. Merci de corriger les coquilles, j'ai modifié ce qui me faisait le plus mal aux yeux mais relisez par vous-même. Très bonne idée d'inclure des simulations mais expliquez ce qu'il faut en conclure.&lt;br /&gt;
&lt;br /&gt;
== Travail ==&lt;br /&gt;
&lt;br /&gt;
Rien à redire au moment de la rédaction de ce commentaire. Carte intermédiaire conçue et réalisée. C'est dommage qu'elle soit non fonctionnelle (expliquez le problème dans le Wiki). Attendez le PCB industriel pour un second essai.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez vous inspirer de ce lien ... avec des capacités beaucoup plus petites, cela va sans dire : https://maker.pro/custom/projects/make-coil-gun-without-camera ou ici :http://pafgadget.free.fr/bidouillages/flash.htm&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2020-1&amp;diff=14044</id>
		<title>Discussion:Binome2020-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2020-1&amp;diff=14044"/>
				<updated>2021-03-09T11:42:07Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Travail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Commentaires sur le BE =&lt;br /&gt;
&lt;br /&gt;
== Wiki ==&lt;br /&gt;
&lt;br /&gt;
Un bel effort avec les schéma des circuits. Vous pouvez ajouter une photo du circuit. Merci de corriger les coquilles, j'ai modifié ce qui me faisait le plus mal aux yeux mais relisez par vous-même. Très bonne idée d'inclure des simulations mais expliquez ce qu'il faut en conclure.&lt;br /&gt;
&lt;br /&gt;
== Travail ==&lt;br /&gt;
&lt;br /&gt;
Rien à redire au moment de la rédaction de ce commentaire. Carte intermédiaire conçue et réalisée. C'est dommage qu'elle soit non fonctionnelle (expliquez le problème dans le Wiki). Attendez le PCB industriel pour un second essai.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez vous inspirer de ce lien ... avec des capacités beaucoup plus petites, cela va sans dire : https://maker.pro/custom/projects/make-coil-gun-without-camera&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2020-2021&amp;diff=12836</id>
		<title>BE 2020-2021</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2020-2021&amp;diff=12836"/>
				<updated>2021-01-18T10:12:47Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* 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;
Vous allez d'abord réaliser une carte gérant uniquement une des fonctionnalités annexes de votre carte. Cette carte comportera un micro-contrôleur facile à souder : un ATTiny84. Ainsi cette première carte sera un minimum autonome. Par la suite, vous vous attacherez à concevoir la carte complète avec un micro-contrôleur plus puissant possédant des capacités USB matérielle comme l'ATMega16u2. Pour la première carte n'hésitez pas à consulter les pages Wiki de vos prédécesseurs, ils se sont servis d'un ATTiny84 pour réaliser un dé électronique.&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. Un document très important pour comprendre le fonctionnement de ce micro-contrôleur est le document technique (datasheet en patoi) : [http://ww1.microchip.com/downloads/en/DeviceDoc/doc7799.pdf].&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é.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez utiliser des mémoires AT45DB641E 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). Le document technique [https://www.adestotech.com/wp-content/uploads/DS-45DB641E-027.pdf] de ces mémoires permet de connaître les commandes pour les configurer et y accéder en lecture et en écriture.&lt;br /&gt;
&lt;br /&gt;
Si vous êtes téméraire, vous pouvez utiliser une mémoire MT29F128G8 accessible par un bus de 8 bits, plus difficile à souder, plus difficile à programmer mais d'une capacité intéressante (128Gb). La documentation technique est plus difficile à trouver, il faut aller sur le site du fabricant (micron) et montrer patte blanche. Vous trouverez le document dans le répertoire éponyme des machines de projet.&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;
== Cartes version alpha ==&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;
== Cartes version beta ==&lt;br /&gt;
[[File:cle_usbv2_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usbv2_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
Une piste parasite entre masse et 3,3v a été supprimée, le &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; est en 3,3v et un mini-connecteur ICSP a été ajouté.&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usbv2.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_bisv2_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usb_bisv2_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
Le &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; est en 3,3v et un mini-connecteur ICSP a été ajouté.&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usb_bisv2.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il peut y avoir des problèmes lors du chargement des fichiers, des composants peuvent être déclarés absents. Essayez d'importer les composants suivants :&lt;br /&gt;
* mémoire MT29F128G8 : [[file:MT29F128G08.zip]]&lt;br /&gt;
* mémoire AT45DB641E : [[file:SO08-EIAJ.zip]]&lt;br /&gt;
* quartz FA238 : [[file:FA238.zip]]&lt;br /&gt;
&lt;br /&gt;
Renommez les fichiers de &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; en &amp;lt;tt&amp;gt;.fzpz&amp;lt;/tt&amp;gt; avant de les importer dans Fritzing.&lt;br /&gt;
&lt;br /&gt;
= Test des cartes =&lt;br /&gt;
&lt;br /&gt;
== Premier test, faire clignoter une LED par programmation DFU ==&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;
== Premier problème, correction par programmation SPI ==&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;
Force est de constater un problème, la LED clignote bien trop lentement. Quelques recherches apprennent que les &amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt; sont vendus configurés avec un diviseur d'horloge par 8 activé. Le micro-contrôleur fonctionne donc à 1MHz et pas à 8Mhz comme souhaité. Ce type de configuration passe par une reconfiguration des &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; du micro-contrôleur. Manque de chance ces &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; ne peuvent être changées que par programmation SPI : impossible de les modifier en mode DFU. Voir le paragraphe ci-après pour comprendre comment se fait une programmation par SPI.&lt;br /&gt;
&lt;br /&gt;
[[File:cle_mini_isp.jpg|thumb|left|300px|Ancienne clef, fils soudés au vol et programmateur SPI]]&lt;br /&gt;
[[File:cle_mini_icsp.jpg|thumb|right|300px|Nouvelle clef, fils soudés sur le micro-ICSP et programmateur SPI]]&lt;br /&gt;
Les premières version de PCB n'étaient pas prévues pour ce type de programmation. Le mode DFU semblait suffisant. Pour faciliter cette programmation, des via ont été placées de façon à implanter un mini connecteur ICSP. Une erreur a été corrigée en passant : la ligne &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; du micro-contrôleur était alimentée en 5v, elle a été passée à 3,3v. En attendant les nouvelles cartes, des fils ont été soudés sur les cartes pour avoir un accès au bus SPI et au &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt;. D'ailleurs, une malheureuse tentative de programmation en 5v ayant grillé les micro-contrôleur, d'autres cartes version alpha ont du être soudées.&lt;br /&gt;
&lt;br /&gt;
Une fois le dispositif de programmation SPI adéquat mis au point, une configuration est tentée pour désactiver la division de l'horloge (modification de la valeur de l'octet de configuration appelé &amp;lt;tt&amp;gt;lfuse&amp;lt;/tt&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
  avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette configuration échoue : le micro-contrôleur est passé, en usine, en état verrouillé. Vous pouvez vérifier cela avec la commande ci-dessous et en utilisant l'outil de calcul des &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; en ligne [http://eleccelerator.com/fusecalc/fusecalc.php?chip=atmega16u2].&lt;br /&gt;
&lt;br /&gt;
  avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -U lock:r:-:h&lt;br /&gt;
&lt;br /&gt;
Il faut donc totalement réinitialiser le micro-contrôleur :&lt;br /&gt;
&lt;br /&gt;
  avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -t&lt;br /&gt;
  avrdude&amp;gt; erase&lt;br /&gt;
  avrdude&amp;gt; quit&lt;br /&gt;
&lt;br /&gt;
Il est alors possible de modifier l'octet de configuration &amp;lt;tt&amp;gt;lfuse&amp;lt;/tt&amp;gt; comme indiqué ci-dessus. Sauf que maintenant le micro-contrôleur ne contient même plus l'amorçeur. Il n'est plus possible de le programmer en mode DFU. Il ne semble pas possible de mettre la main sur l'amorceur du fondeur pour &amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt;. Heureusement l'amorceur pour une précédente version de la puce est disponible : [[media:at90usb162-bl-usb-1_0_5.zip]]. Il est assez simple d'installer l'amorceur par programmation SPI :&lt;br /&gt;
&lt;br /&gt;
  avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -U flash:w:at90usb162-bl-usb-1_0_5.hex&lt;br /&gt;
&lt;br /&gt;
Après la modification de l'octet de configuration &amp;lt;tt&amp;gt;lfuse&amp;lt;/tt&amp;gt;, la LED clignote normalement : [[media:ClefUSBTestLedBis.mp4]]. A noter qu'il faut maintenant télécharger le programme en utilisant &amp;lt;tt&amp;gt;at90usb162&amp;lt;/tt&amp;gt; comme cible au lieu de &amp;lt;tt&amp;gt;atmega16u2&amp;lt;/tt&amp;gt; à cause de la différence d'amorceur.&lt;br /&gt;
&lt;br /&gt;
== Second test, accès aux mémoires ==&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;
[[File:cle_usb_verso_AT45DB641E.jpg|thumb|left|300px|Mémoires AT45DB641E]]&lt;br /&gt;
Pour tester une 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;PB4&amp;lt;/tt&amp;gt;. La broche &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; des deux mémoires est reliée à la ligne &amp;lt;tt&amp;gt;PB5&amp;lt;/tt&amp;gt; du micro-contrôleur. Il faut donc passer &amp;lt;tt&amp;gt;PB5&amp;lt;/tt&amp;gt; en sortie et la mettre à l'état haut.&lt;br /&gt;
&lt;br /&gt;
Pour tester une mémoire, il est possible de demander ses identifiants. Pour cela, il faut envoyer sur le bus SPI, une fois la mémoire sélectionnée, l'octet &amp;lt;tt&amp;gt;0x9F&amp;lt;/tt&amp;gt;. Ensuite, il faut lire les cinq octets des identifiants (ID fabricant, ID de la mémoire, ...) puis il faut remonter la ligne de sélection à l'état haut.&lt;br /&gt;
&lt;br /&gt;
Un programme de test est disponible [[Media:ClefUSBTestMem.zip]]. Pour communiquer la valeur des cinq octets d'identification, un système de clignotement de LED est implanté. Pour chaque bit un clignotement représente un 0 et deux clignotement représentent un 1. Le prototype de clef USB avec des mémoires AT45DB641E passe avec succès ce test.&lt;br /&gt;
&lt;br /&gt;
Pour aller plus loin, il faut écrire dans les mémoires et vérifier, par une lecture, que les écritures ont été bien effectuées. Un programme de test est disponible [[Media:ClefUSBTestMemRW.zip]]. Ce programme écrit cinq octets dans la première mémoire, les lit, les multiplie par 2 et écrit les résultats dans la seconde mémoire. Les cinq octets de la seconde mémoire sont lus et communiqués avec le système de clignotement de LED décrit ci-dessus.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&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;
= Programmation de micro-contrôleur par SPI =&lt;br /&gt;
&lt;br /&gt;
Nativement les micro-contrôleurs AVR peuvent être programmés via le bus SPI. Généralement un amorceur (bootloader) est installé sur ces micro-contrôleurs pour qu'ils puissent être programmés plus facilement par une connexion série pure (cas de l'ATMega328p par exemple) ou par une connexion USB (cas de l'ATMega16u2). Malheureusement les amorceurs peuvent être effacés par une mauvaise manoeuvre ou ne permettent pas de configurer tous les aspects du micro-contrôleur.&lt;br /&gt;
&lt;br /&gt;
[[File:uno_as_isp.jpg|thumb|left|400px|Arduino Uno comme programmateur]]&lt;br /&gt;
Généralement pour une programmation de micro-contrôleur par bus SPI, un connecteur ICSP est utilisé. Ce connecteur regroupe les lignes du bus SPI, la masse, l'alimentation et le &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt;. Un simple Arduino UNO peut-être utilisé comme programmateur par bus SPI. Les lignes MISO, MOSI, SCK, GND, VCC du programmateur sont connectées sur les mêmes lignes de la cible. La ligne 10 du programmateur est connectée sur le &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; de la cible. Le programme ArduinoISP doit être téléversé sur le UNO jouant le rôle de programmateur. Ce programme fait partie des exemples fournis avec l'IDE Arduino.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un exemple d'utilisation d'un programmateur par bus SPI pour obtenir les &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; d'un &amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt; (les &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; sont des octets de configuration bas niveau du micro-contrôleur) :&lt;br /&gt;
  &lt;br /&gt;
 avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -v&lt;br /&gt;
&lt;br /&gt;
Un exemple pour télécharger un programme par SPI sur un &amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
 avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -U flash:w:programme.hex&lt;br /&gt;
&lt;br /&gt;
Dans ces exemples, il est supposé que le port série associé à l'UNO est &amp;lt;tt&amp;gt;/dev/ttyACMO&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:minipro_as_isp.jpg|thumb|left|400px|Arduino mini-pro comme programmateur]]&lt;br /&gt;
Si le micro-contrôleur est alimenté en 3,3v utiliser un Arduino Uno comme programmateur est une mauvaise idée : un UNO fonctionne à 5v et la communication SPI entre une plateforme à 5v et une autre à 3,3v ne fonctionne pas. Il existe assez peu de plateformes Arduino en 3,3v. Vous pouvez utiliser un Arduino Mini Pro 3,3v en conjonction avec un FTDI (convertisseur USB/série) lui aussi en 3,3v. Le Mini Pro ne dispose pas d'un connecteur ICSP. Il faut utiliser la ligne 11 pour connecter la ligne MOSI de la cible, la ligne 12 pour MISO et la ligne 13 pour SCK.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L'utilitaire &amp;lt;tt&amp;gt;avrdude&amp;lt;/tt&amp;gt; peut être utilisé pour programmer la cible comme avec le programmateur à base d'UNO. Attention le port série sera probablement &amp;lt;tt&amp;gt;/dev/ttyUSBO&amp;lt;/tt&amp;gt; cette fois.&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;NONE&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;. Pour vous aider une version modifiée de la démonstration &amp;lt;tt&amp;gt;MassStorage&amp;lt;/tt&amp;gt; est disponible [[media:MassStoragePeiP.zip]]. Dans cette version, vous n'avez à modifier que les fichiers &amp;lt;tt&amp;gt;Lib/DataflashManager.h&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;Lib/DataflashManager.c&amp;lt;/tt&amp;gt; en vous appuyant sur les programmes de test des mémoires.&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;
= Test du programme avec la bibliothèque LUFA =&lt;br /&gt;
&lt;br /&gt;
Un premier test très simple à réaliser consiste à compiler le programme &amp;lt;tt&amp;gt;MassStoragePeiP&amp;lt;/tt&amp;gt; sans ajouter les accès à la mémoire puis à le télécharger sur le micro-contrôleur. Vous devriez déjà vous apercevoir que votre carte est reconnue comme une clef USB. Sur un système Linux, les deux utilitaires &amp;lt;tt&amp;gt;dmesg&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;lsblk&amp;lt;/tt&amp;gt; vous en convaincront.&lt;br /&gt;
&lt;br /&gt;
 # dmesg | tail&lt;br /&gt;
 [21942.134207] usb 1-1: new full-speed USB device number 4 using xhci_hcd&lt;br /&gt;
 [21942.333156] usb 1-1: New USB device found, idVendor=03eb, idProduct=2045, bcdDevice= 0.01&lt;br /&gt;
 [21942.333161] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=220&lt;br /&gt;
 [21942.333163] usb 1-1: Product: LUFA Mass Storage Demo&lt;br /&gt;
 [21942.333166] usb 1-1: Manufacturer: Dean Camera&lt;br /&gt;
 [21942.333168] usb 1-1: SerialNumber: 758303337383514140C1&lt;br /&gt;
 [21942.339211] usb-storage 1-1:1.0: USB Mass Storage device detected&lt;br /&gt;
 [21942.339407] scsi host6: usb-storage 1-1:1.0&lt;br /&gt;
 [21943.358141] scsi 6:0:0:0: Direct-Access     LUFA     Dataflash Disk   0.00 PQ: 0 ANSI: 0&lt;br /&gt;
 [21943.358778] sd 6:0:0:0: Attached scsi generic sg2 type 0&lt;br /&gt;
 [21943.359523] sd 6:0:0:0: [sdb] 2048 512-byte logical blocks: (1.05 MB/1.00 MiB)&lt;br /&gt;
 [21943.359910] sd 6:0:0:0: [sdb] Write Protect is off&lt;br /&gt;
 [21943.359915] sd 6:0:0:0: [sdb] Mode Sense: 00 00 00 00&lt;br /&gt;
 [21943.360221] sd 6:0:0:0: [sdb] Asking for cache data failed&lt;br /&gt;
 [21943.360241] sd 6:0:0:0: [sdb] Assuming drive cache: write through&lt;br /&gt;
 [21943.404925] sd 6:0:0:0: [sdb] Attached SCSI removable disk&lt;br /&gt;
&lt;br /&gt;
 # lsblk&lt;br /&gt;
 NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
 sda      8:0    0 119,2G  0 disk &lt;br /&gt;
 ├─sda1   8:1    0 114,4G  0 part /&lt;br /&gt;
 ├─sda2   8:2    0     1K  0 part &lt;br /&gt;
 └─sda5   8:5    0   4,9G  0 part [SWAP]&lt;br /&gt;
 sdb      8:16   1     1M  0 disk &lt;br /&gt;
 sr0     11:0    1  1024M  0 rom&lt;br /&gt;
&lt;br /&gt;
Pour vous familiariser avec le code, vous pouvez tenter de changer les noms du produit, du fabricant, le numéro de série et même la taille de la clef.&lt;br /&gt;
&lt;br /&gt;
Avant de faire un test de votre clef avec un système de fichier, vous pouvez tester si elle gère correctement ses blocs mémoires. Le programme [[media:TestBlock.zip]] permet d'effectuer une écriture dans les blocs et, dans un second temps, de vérifier que ces blocs contiennent bien les bonnes valeurs. Pour l'utiliser, insérez votre clef, trouvez le nom du périphérique avec la commande &amp;lt;tt&amp;gt;lsblk&amp;lt;/tt&amp;gt; et lancez la commande ci-dessous (ici il est supposé que le nom du périphérique est &amp;lt;tt&amp;gt;/dev/sdb&amp;lt;/tt&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
 ./testblock /dev/sdb W&lt;br /&gt;
&lt;br /&gt;
Une fois le programme terminé, enlevez la clef pour s'assurer que la lecture ne se fera pas dans les tampons, remettez la et envoyez la commande :&lt;br /&gt;
&lt;br /&gt;
 ./testblock /dev/sdb R&lt;br /&gt;
&lt;br /&gt;
Si le programme ne vous affiche pas de différence d'octet, c'est que votre clef fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez alors formater votre clef :&lt;br /&gt;
&lt;br /&gt;
  mkfs -t vfat /dev/sdb&lt;br /&gt;
&lt;br /&gt;
La monter :&lt;br /&gt;
&lt;br /&gt;
  mount /dev/sdb /mnt&lt;br /&gt;
&lt;br /&gt;
Mettre quelques fichiers dessus, la démonter (avec la commande &amp;lt;tt&amp;gt;umount&amp;lt;/tt&amp;gt;) et vérifier que vos fichiers sont encore là quand vous reconnectez la clef.&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;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2020-1|Binôme 1 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
|&lt;br /&gt;
| [[Binome2020-2|Binôme 2 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
|&lt;br /&gt;
| [[Binome2020-3|Binôme 3 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
|&lt;br /&gt;
| [[Binome2020-4|Binôme 4 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
|&lt;br /&gt;
| [[Binome2020-5|Binôme 5 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
|&lt;br /&gt;
| [[Binome2020-6|Binôme 6 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2020-7|Binôme 7 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2020-8|Binôme 8 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
|&lt;br /&gt;
| [[Binome2020-9|Binôme 9 2020/2021]]&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;
| [[Binome2020-10|Binôme 10 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 11&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
|&lt;br /&gt;
| [[Binome2020-11|Binôme 11 2020/2021]]&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;
| [[Binome2020-12|Binôme 12 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2020-2021&amp;diff=12835</id>
		<title>BE 2020-2021</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2020-2021&amp;diff=12835"/>
				<updated>2021-01-17T20:01:16Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Présentation du bureau d'étude */&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;
Vous allez d'abord réaliser une carte gérant uniquement une des fonctionnalités annexes de votre carte. Cette carte comportera un micro-contrôleur facile à souder : un ATTiny84. Ainsi cette première carte sera un minimum autonome. Par la suite, vous vous attacherez à concevoir la carte complète avec un micro-contrôleur plus puissant possédant des capacités USB matérielle comme l'ATMega16u2. Pour la première carte n'hésitez pas à consulter les pages Wiki de vos prédécesseurs, ils se sont servis d'un ATTiny84 pour réaliser un dé électronique.&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. Un document très important pour comprendre le fonctionnement de ce micro-contrôleur est le document technique (datasheet en patoi) : [http://ww1.microchip.com/downloads/en/DeviceDoc/doc7799.pdf].&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é.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez utiliser des mémoires AT45DB641E 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). Le document technique [https://www.adestotech.com/wp-content/uploads/DS-45DB641E-027.pdf] de ces mémoires permet de connaître les commandes pour les configurer et y accéder en lecture et en écriture.&lt;br /&gt;
&lt;br /&gt;
Si vous êtes téméraire, vous pouvez utiliser une mémoire MT29F128G8 accessible par un bus de 8 bits, plus difficile à souder, plus difficile à programmer mais d'une capacité intéressante (128Gb). La documentation technique est plus difficile à trouver, il faut aller sur le site du fabricant (micron) et montrer patte blanche. Vous trouverez le document dans le répertoire éponyme des machines de projet.&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;
== Cartes version alpha ==&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;
== Cartes version beta ==&lt;br /&gt;
[[File:cle_usbv2_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usbv2_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
Une piste parasite entre masse et 3,3v a été supprimée, le &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; est en 3,3v et un mini-connecteur ICSP a été ajouté.&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usbv2.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:cle_usb_bisv2_schema.png|thumb|left|400px|Schéma électronique]]&lt;br /&gt;
[[File:clef_usb_bisv2_pcb.png|thumb|right|400px|Carte électronique]]&lt;br /&gt;
Le &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; est en 3,3v et un mini-connecteur ICSP a été ajouté.&lt;br /&gt;
Le fichier source Fritzing est disponible : [[Media:cle_usb_bisv2.zip]] (renommer en &amp;lt;tt&amp;gt;.fzz&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il peut y avoir des problèmes lors du chargement des fichiers, des composants peuvent être déclarés absents. Essayez d'importer les composants suivants :&lt;br /&gt;
* mémoire MT29F128G8 : [[file:MT29F128G08.zip]]&lt;br /&gt;
* mémoire AT45DB641E : [[file:SO08-EIAJ.zip]]&lt;br /&gt;
* quartz FA238 : [[file:FA238.zip]]&lt;br /&gt;
&lt;br /&gt;
Renommez les fichiers de &amp;lt;tt&amp;gt;.zip&amp;lt;/tt&amp;gt; en &amp;lt;tt&amp;gt;.fzpz&amp;lt;/tt&amp;gt; avant de les importer dans Fritzing.&lt;br /&gt;
&lt;br /&gt;
= Test des cartes =&lt;br /&gt;
&lt;br /&gt;
== Premier test, faire clignoter une LED par programmation DFU ==&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;
== Premier problème, correction par programmation SPI ==&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;
Force est de constater un problème, la LED clignote bien trop lentement. Quelques recherches apprennent que les &amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt; sont vendus configurés avec un diviseur d'horloge par 8 activé. Le micro-contrôleur fonctionne donc à 1MHz et pas à 8Mhz comme souhaité. Ce type de configuration passe par une reconfiguration des &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; du micro-contrôleur. Manque de chance ces &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; ne peuvent être changées que par programmation SPI : impossible de les modifier en mode DFU. Voir le paragraphe ci-après pour comprendre comment se fait une programmation par SPI.&lt;br /&gt;
&lt;br /&gt;
[[File:cle_mini_isp.jpg|thumb|left|300px|Ancienne clef, fils soudés au vol et programmateur SPI]]&lt;br /&gt;
[[File:cle_mini_icsp.jpg|thumb|right|300px|Nouvelle clef, fils soudés sur le micro-ICSP et programmateur SPI]]&lt;br /&gt;
Les premières version de PCB n'étaient pas prévues pour ce type de programmation. Le mode DFU semblait suffisant. Pour faciliter cette programmation, des via ont été placées de façon à implanter un mini connecteur ICSP. Une erreur a été corrigée en passant : la ligne &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; du micro-contrôleur était alimentée en 5v, elle a été passée à 3,3v. En attendant les nouvelles cartes, des fils ont été soudés sur les cartes pour avoir un accès au bus SPI et au &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt;. D'ailleurs, une malheureuse tentative de programmation en 5v ayant grillé les micro-contrôleur, d'autres cartes version alpha ont du être soudées.&lt;br /&gt;
&lt;br /&gt;
Une fois le dispositif de programmation SPI adéquat mis au point, une configuration est tentée pour désactiver la division de l'horloge (modification de la valeur de l'octet de configuration appelé &amp;lt;tt&amp;gt;lfuse&amp;lt;/tt&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
  avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette configuration échoue : le micro-contrôleur est passé, en usine, en état verrouillé. Vous pouvez vérifier cela avec la commande ci-dessous et en utilisant l'outil de calcul des &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; en ligne [http://eleccelerator.com/fusecalc/fusecalc.php?chip=atmega16u2].&lt;br /&gt;
&lt;br /&gt;
  avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -U lock:r:-:h&lt;br /&gt;
&lt;br /&gt;
Il faut donc totalement réinitialiser le micro-contrôleur :&lt;br /&gt;
&lt;br /&gt;
  avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -t&lt;br /&gt;
  avrdude&amp;gt; erase&lt;br /&gt;
  avrdude&amp;gt; quit&lt;br /&gt;
&lt;br /&gt;
Il est alors possible de modifier l'octet de configuration &amp;lt;tt&amp;gt;lfuse&amp;lt;/tt&amp;gt; comme indiqué ci-dessus. Sauf que maintenant le micro-contrôleur ne contient même plus l'amorçeur. Il n'est plus possible de le programmer en mode DFU. Il ne semble pas possible de mettre la main sur l'amorceur du fondeur pour &amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt;. Heureusement l'amorceur pour une précédente version de la puce est disponible : [[media:at90usb162-bl-usb-1_0_5.zip]]. Il est assez simple d'installer l'amorceur par programmation SPI :&lt;br /&gt;
&lt;br /&gt;
  avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -U flash:w:at90usb162-bl-usb-1_0_5.hex&lt;br /&gt;
&lt;br /&gt;
Après la modification de l'octet de configuration &amp;lt;tt&amp;gt;lfuse&amp;lt;/tt&amp;gt;, la LED clignote normalement : [[media:ClefUSBTestLedBis.mp4]]. A noter qu'il faut maintenant télécharger le programme en utilisant &amp;lt;tt&amp;gt;at90usb162&amp;lt;/tt&amp;gt; comme cible au lieu de &amp;lt;tt&amp;gt;atmega16u2&amp;lt;/tt&amp;gt; à cause de la différence d'amorceur.&lt;br /&gt;
&lt;br /&gt;
== Second test, accès aux mémoires ==&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;
[[File:cle_usb_verso_AT45DB641E.jpg|thumb|left|300px|Mémoires AT45DB641E]]&lt;br /&gt;
Pour tester une 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;PB4&amp;lt;/tt&amp;gt;. La broche &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; des deux mémoires est reliée à la ligne &amp;lt;tt&amp;gt;PB5&amp;lt;/tt&amp;gt; du micro-contrôleur. Il faut donc passer &amp;lt;tt&amp;gt;PB5&amp;lt;/tt&amp;gt; en sortie et la mettre à l'état haut.&lt;br /&gt;
&lt;br /&gt;
Pour tester une mémoire, il est possible de demander ses identifiants. Pour cela, il faut envoyer sur le bus SPI, une fois la mémoire sélectionnée, l'octet &amp;lt;tt&amp;gt;0x9F&amp;lt;/tt&amp;gt;. Ensuite, il faut lire les cinq octets des identifiants (ID fabricant, ID de la mémoire, ...) puis il faut remonter la ligne de sélection à l'état haut.&lt;br /&gt;
&lt;br /&gt;
Un programme de test est disponible [[Media:ClefUSBTestMem.zip]]. Pour communiquer la valeur des cinq octets d'identification, un système de clignotement de LED est implanté. Pour chaque bit un clignotement représente un 0 et deux clignotement représentent un 1. Le prototype de clef USB avec des mémoires AT45DB641E passe avec succès ce test.&lt;br /&gt;
&lt;br /&gt;
Pour aller plus loin, il faut écrire dans les mémoires et vérifier, par une lecture, que les écritures ont été bien effectuées. Un programme de test est disponible [[Media:ClefUSBTestMemRW.zip]]. Ce programme écrit cinq octets dans la première mémoire, les lit, les multiplie par 2 et écrit les résultats dans la seconde mémoire. Les cinq octets de la seconde mémoire sont lus et communiqués avec le système de clignotement de LED décrit ci-dessus.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&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;
= Programmation de micro-contrôleur par SPI =&lt;br /&gt;
&lt;br /&gt;
Nativement les micro-contrôleurs AVR peuvent être programmés via le bus SPI. Généralement un amorceur (bootloader) est installé sur ces micro-contrôleurs pour qu'ils puissent être programmés plus facilement par une connexion série pure (cas de l'ATMega328p par exemple) ou par une connexion USB (cas de l'ATMega16u2). Malheureusement les amorceurs peuvent être effacés par une mauvaise manoeuvre ou ne permettent pas de configurer tous les aspects du micro-contrôleur.&lt;br /&gt;
&lt;br /&gt;
[[File:uno_as_isp.jpg|thumb|left|400px|Arduino Uno comme programmateur]]&lt;br /&gt;
Généralement pour une programmation de micro-contrôleur par bus SPI, un connecteur ICSP est utilisé. Ce connecteur regroupe les lignes du bus SPI, la masse, l'alimentation et le &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt;. Un simple Arduino UNO peut-être utilisé comme programmateur par bus SPI. Les lignes MISO, MOSI, SCK, GND, VCC du programmateur sont connectées sur les mêmes lignes de la cible. La ligne 10 du programmateur est connectée sur le &amp;lt;tt&amp;gt;reset&amp;lt;/tt&amp;gt; de la cible. Le programme ArduinoISP doit être téléversé sur le UNO jouant le rôle de programmateur. Ce programme fait partie des exemples fournis avec l'IDE Arduino.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un exemple d'utilisation d'un programmateur par bus SPI pour obtenir les &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; d'un &amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt; (les &amp;lt;tt&amp;gt;fuses&amp;lt;/tt&amp;gt; sont des octets de configuration bas niveau du micro-contrôleur) :&lt;br /&gt;
  &lt;br /&gt;
 avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -v&lt;br /&gt;
&lt;br /&gt;
Un exemple pour télécharger un programme par SPI sur un &amp;lt;tt&amp;gt;ATMega16u2&amp;lt;/tt&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
 avrdude -c arduino -p atmega16u2 -P /dev/ttyACM0 -b 19200 -U flash:w:programme.hex&lt;br /&gt;
&lt;br /&gt;
Dans ces exemples, il est supposé que le port série associé à l'UNO est &amp;lt;tt&amp;gt;/dev/ttyACMO&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:minipro_as_isp.jpg|thumb|left|400px|Arduino mini-pro comme programmateur]]&lt;br /&gt;
Si le micro-contrôleur est alimenté en 3,3v utiliser un Arduino Uno comme programmateur est une mauvaise idée : un UNO fonctionne à 5v et la communication SPI entre une plateforme à 5v et une autre à 3,3v ne fonctionne pas. Il existe assez peu de plateformes Arduino en 3,3v. Vous pouvez utiliser un Arduino Mini Pro 3,3v en conjonction avec un FTDI (convertisseur USB/série) lui aussi en 3,3v. Le Mini Pro ne dispose pas d'un connecteur ICSP. Il faut utiliser la ligne 11 pour connecter la ligne MOSI de la cible, la ligne 12 pour MISO et la ligne 13 pour SCK.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L'utilitaire &amp;lt;tt&amp;gt;avrdude&amp;lt;/tt&amp;gt; peut être utilisé pour programmer la cible comme avec le programmateur à base d'UNO. Attention le port série sera probablement &amp;lt;tt&amp;gt;/dev/ttyUSBO&amp;lt;/tt&amp;gt; cette fois.&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;NONE&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;. Pour vous aider une version modifiée de la démonstration &amp;lt;tt&amp;gt;MassStorage&amp;lt;/tt&amp;gt; est disponible [[media:MassStoragePeiP.zip]]. Dans cette version, vous n'avez à modifier que les fichiers &amp;lt;tt&amp;gt;Lib/DataflashManager.h&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;Lib/DataflashManager.c&amp;lt;/tt&amp;gt; en vous appuyant sur les programmes de test des mémoires.&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;
= Test du programme avec la bibliothèque LUFA =&lt;br /&gt;
&lt;br /&gt;
Un premier test très simple à réaliser consiste à compiler le programme &amp;lt;tt&amp;gt;MassStoragePeiP&amp;lt;/tt&amp;gt; sans ajouter les accès à la mémoire puis à le télécharger sur le micro-contrôleur. Vous devriez déjà vous apercevoir que votre carte est reconnue comme une clef USB. Sur un système Linux, les deux utilitaires &amp;lt;tt&amp;gt;dmesg&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;lsblk&amp;lt;/tt&amp;gt; vous en convaincront.&lt;br /&gt;
&lt;br /&gt;
 # dmesg | tail&lt;br /&gt;
 [21942.134207] usb 1-1: new full-speed USB device number 4 using xhci_hcd&lt;br /&gt;
 [21942.333156] usb 1-1: New USB device found, idVendor=03eb, idProduct=2045, bcdDevice= 0.01&lt;br /&gt;
 [21942.333161] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=220&lt;br /&gt;
 [21942.333163] usb 1-1: Product: LUFA Mass Storage Demo&lt;br /&gt;
 [21942.333166] usb 1-1: Manufacturer: Dean Camera&lt;br /&gt;
 [21942.333168] usb 1-1: SerialNumber: 758303337383514140C1&lt;br /&gt;
 [21942.339211] usb-storage 1-1:1.0: USB Mass Storage device detected&lt;br /&gt;
 [21942.339407] scsi host6: usb-storage 1-1:1.0&lt;br /&gt;
 [21943.358141] scsi 6:0:0:0: Direct-Access     LUFA     Dataflash Disk   0.00 PQ: 0 ANSI: 0&lt;br /&gt;
 [21943.358778] sd 6:0:0:0: Attached scsi generic sg2 type 0&lt;br /&gt;
 [21943.359523] sd 6:0:0:0: [sdb] 2048 512-byte logical blocks: (1.05 MB/1.00 MiB)&lt;br /&gt;
 [21943.359910] sd 6:0:0:0: [sdb] Write Protect is off&lt;br /&gt;
 [21943.359915] sd 6:0:0:0: [sdb] Mode Sense: 00 00 00 00&lt;br /&gt;
 [21943.360221] sd 6:0:0:0: [sdb] Asking for cache data failed&lt;br /&gt;
 [21943.360241] sd 6:0:0:0: [sdb] Assuming drive cache: write through&lt;br /&gt;
 [21943.404925] sd 6:0:0:0: [sdb] Attached SCSI removable disk&lt;br /&gt;
&lt;br /&gt;
 # lsblk&lt;br /&gt;
 NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
 sda      8:0    0 119,2G  0 disk &lt;br /&gt;
 ├─sda1   8:1    0 114,4G  0 part /&lt;br /&gt;
 ├─sda2   8:2    0     1K  0 part &lt;br /&gt;
 └─sda5   8:5    0   4,9G  0 part [SWAP]&lt;br /&gt;
 sdb      8:16   1     1M  0 disk &lt;br /&gt;
 sr0     11:0    1  1024M  0 rom&lt;br /&gt;
&lt;br /&gt;
Pour vous familiariser avec le code, vous pouvez tenter de changer les noms du produit, du fabricant, le numéro de série et même la taille de la clef.&lt;br /&gt;
&lt;br /&gt;
Avant de faire un test de votre clef avec un système de fichier, vous pouvez tester si elle gère correctement ses blocs mémoires. Le programme [[media:TestBlock.zip]] permet d'effectuer une écriture dans les blocs et, dans un second temps, de vérifier que ces blocs contiennent bien les bonnes valeurs. Pour l'utiliser, insérez votre clef, trouvez le nom du périphérique avec la commande &amp;lt;tt&amp;gt;lsblk&amp;lt;/tt&amp;gt; et lancez la commande ci-dessous (ici il est supposé que le nom du périphérique est &amp;lt;tt&amp;gt;/dev/sdb&amp;lt;/tt&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
 ./testblock /dev/sdb W&lt;br /&gt;
&lt;br /&gt;
Une fois le programme terminé, enlevez la clef pour s'assurer que la lecture ne se fera pas dans les tampons, remettez la et envoyez la commande :&lt;br /&gt;
&lt;br /&gt;
 ./testblock /dev/sdb R&lt;br /&gt;
&lt;br /&gt;
Si le programme ne vous affiche pas de différence d'octet, c'est que votre clef fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez alors formater votre clef :&lt;br /&gt;
&lt;br /&gt;
  mkfs -t vfat /dev/sdb&lt;br /&gt;
&lt;br /&gt;
La monter :&lt;br /&gt;
&lt;br /&gt;
  mount /dev/sdb /mnt&lt;br /&gt;
&lt;br /&gt;
Mettre quelques fichiers dessus, la démonter (avec la commande &amp;lt;tt&amp;gt;umount&amp;lt;/tt&amp;gt;) et vérifier que vos fichiers sont encore là quand vous reconnectez la clef.&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;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2020-1|Binôme 1 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
|&lt;br /&gt;
| [[Binome2020-2|Binôme 2 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
|&lt;br /&gt;
| [[Binome2020-3|Binôme 3 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
|&lt;br /&gt;
| [[Binome2020-4|Binôme 4 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
|&lt;br /&gt;
| [[Binome2020-5|Binôme 5 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
|&lt;br /&gt;
| [[Binome2020-6|Binôme 6 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2020-7|Binôme 7 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
| &lt;br /&gt;
| [[Binome2020-8|Binôme 8 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
|&lt;br /&gt;
| [[Binome2020-9|Binôme 9 2020/2021]]&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;
| [[Binome2020-10|Binôme 10 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 11&lt;br /&gt;
| Prénom NOM &amp;amp; Prénom NOM&lt;br /&gt;
|&lt;br /&gt;
| [[Binome2020-11|Binôme 11 2020/2021]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2019-3&amp;diff=11999</id>
		<title>Discussion:Binome2019-3</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2019-3&amp;diff=11999"/>
				<updated>2020-04-27T07:07:50Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OK pour la description du dé.&lt;br /&gt;
&lt;br /&gt;
Un très bon Wiki. Bon passage concernant la conception de la clef.&lt;br /&gt;
&lt;br /&gt;
Commentaires sur la carte supplémentaire à la clé USB :&lt;br /&gt;
#Schématique&lt;br /&gt;
** au niveau de J1 une connexion erronée entre masse et reset&lt;br /&gt;
** au niveau ATMega :&lt;br /&gt;
*** connexion erronée entre reset et AVCC&lt;br /&gt;
*** manque connexion de AGND vers GND&lt;br /&gt;
# PCB&lt;br /&gt;
** Placement des composants à revoir :&lt;br /&gt;
*** Le quartz (FA) doit être en CMS, à placer beaucoup plus proche du µP, sans changement de face (uniquement supérieure)&lt;br /&gt;
*** J1 est généralement un connecteur 3*2 broches (deux rangées)&lt;br /&gt;
*** il faut mettre les capacités de découplage proche de la broche à découpler&lt;br /&gt;
*** mettre les résistances des afficheurs proche de l'afficheur vaguement alignées ?&lt;br /&gt;
*** idem pour les transistors&lt;br /&gt;
** il faudra mettre un plan de masse&lt;br /&gt;
# Peut-être faire le placement et renvoyer pour vérification avant le routage. Si zones problématiques, il est possible d'échanger sur le schématique des connexions (par exemple, mettre A sur PD2 et C sur PD0,au hasard, juste pour expliquer) afin de rendre l'ensemble plus simplement routable&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2019-3&amp;diff=11997</id>
		<title>Discussion:Binome2019-3</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2019-3&amp;diff=11997"/>
				<updated>2020-04-27T07:03:59Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OK pour la description du dé.&lt;br /&gt;
&lt;br /&gt;
Un très bon Wiki. Bon passage concernant la conception de la clef.&lt;br /&gt;
&lt;br /&gt;
Commentaires sur la carte supplémentaire à la clé USB :&lt;br /&gt;
#Schématique&lt;br /&gt;
** au niveau de J1 une connexion erronée entre masse et reset&lt;br /&gt;
** au niveau ATMega :&lt;br /&gt;
*** connexion erronée entre reset et AVCC&lt;br /&gt;
*** manque connexion de AGND vers GND&lt;br /&gt;
# PCB&lt;br /&gt;
** Placement des composants à revoir :&lt;br /&gt;
*** Le quartz (FA) doit être en CMS, à placer beaucoup plus proche du µP, sans changement de face (uniquement supérieure)&lt;br /&gt;
*** J1 est généralement un connecteur 3*2 broches (deux rangées)&lt;br /&gt;
*** il faut mettre les capacités de découplage proche de la broche à découpler&lt;br /&gt;
*** mettre les résistances des afficheurs proche de l'afficheur vaguement alignées ?&lt;br /&gt;
*** idem pour les transistors&lt;br /&gt;
** il faudra mettre un plan de masse&lt;br /&gt;
# Peut-être faire le placement et renvoyer pour vérification avant le routage&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2019-2&amp;diff=11216</id>
		<title>Discussion:Binome2019-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2019-2&amp;diff=11216"/>
				<updated>2020-03-26T14:31:02Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : Page créée avec « Montage micro : il manque une liaison vers VCC ; le schéma peut être améliorer pour une meilleure lisibilité (liaisons directes à des symboles de masse) »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Montage micro : il manque une liaison vers VCC ; le schéma peut être améliorer pour une meilleure lisibilité (liaisons directes à des symboles de masse)&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-8&amp;diff=9905</id>
		<title>Discussion:Binome2017-8</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-8&amp;diff=9905"/>
				<updated>2018-05-25T17:14:06Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Commentaires sur le Wiki :&lt;br /&gt;
* Quelques coquilles.&lt;br /&gt;
* Une partie chronologique avec des descriptions très rapides du travail.&lt;br /&gt;
* Une partie plus synthètique sur le circuit électronique, le chassis et la programmation. Un peu court.&lt;br /&gt;
* Wiki illustré.&lt;br /&gt;
&lt;br /&gt;
Une démarche de conception intéressante mais un Wiki un peu rapide : 13/20.&lt;br /&gt;
&lt;br /&gt;
Vidéo :&lt;br /&gt;
* Très bonne description du robot.&lt;br /&gt;
* Une excellente démonstration du fonctionnment du robot y compris l'évitement d'autres robots grâce à l'infra-rouge (démonstration avec un autre robot).&lt;br /&gt;
&lt;br /&gt;
Vidéo très réussie : 19/20.&lt;br /&gt;
&lt;br /&gt;
Robot :&lt;br /&gt;
* chassis plexiglas et 3D.&lt;br /&gt;
* Carte électronique.&lt;br /&gt;
* Sonar, TSOP, effet Hall.&lt;br /&gt;
&lt;br /&gt;
Un robot très achevé ! Un très bon bureau d'études : 18/20 (effet monöme).&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-7&amp;diff=9904</id>
		<title>Discussion:Binome2017-7</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-7&amp;diff=9904"/>
				<updated>2018-05-25T17:09:55Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Commentaires sur le Wiki :&lt;br /&gt;
* Rédaction un peu en style télégraphique du moins pour les premières séances.&lt;br /&gt;
* Des coquilles.&lt;br /&gt;
* Bien illustré.&lt;br /&gt;
* Un code pas vraiment expliqué.&lt;br /&gt;
* Il manque un bilan des fonctionnalités du robot.&lt;br /&gt;
&lt;br /&gt;
Un Wiki correct mais qui aurait pu être plus soigné : 13/20.&lt;br /&gt;
&lt;br /&gt;
Vidéo :&lt;br /&gt;
* Description très correcte du robot BOB.&lt;br /&gt;
* Une démonstration réussie du mode télécommande de BOB. L'image de la caméra est visible.&lt;br /&gt;
&lt;br /&gt;
Une vidéo très correcte : 16/20.&lt;br /&gt;
&lt;br /&gt;
Robot : &lt;br /&gt;
* Raspberry Pi.&lt;br /&gt;
* Shield Arduino.&lt;br /&gt;
* Sonar.&lt;br /&gt;
* Caméra.&lt;br /&gt;
* Pièce 3D pour le sonar et la caméra.&lt;br /&gt;
&lt;br /&gt;
De la persévérence, un robot télécommandable en fin de bureau d'étude : 15/20 (effet monôme).&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-7&amp;diff=9903</id>
		<title>Discussion:Binome2017-7</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-7&amp;diff=9903"/>
				<updated>2018-05-25T17:09:43Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Commentaires sur le Wiki :&lt;br /&gt;
* Rédaction un peu en style télégraphique du moins pour les premières séances.&lt;br /&gt;
* Des coquilles.&lt;br /&gt;
* Bien illustré.&lt;br /&gt;
* Un code pas vraiment expliqué.&lt;br /&gt;
* Il manque un bilan des fonctionnalités du robot.&lt;br /&gt;
&lt;br /&gt;
Un Wiki correct mais qui aurait pu être plus soigné : 13/20.&lt;br /&gt;
&lt;br /&gt;
Vidéo :&lt;br /&gt;
* Description très correcte du robot BOB.&lt;br /&gt;
* Une démonstration réussie du mode télécommande de BOB. L'image de la caméra est visible.&lt;br /&gt;
&lt;br /&gt;
Une vidéo très correcte : 16/20.&lt;br /&gt;
&lt;br /&gt;
Robot : &lt;br /&gt;
* Raspberry Pi.&lt;br /&gt;
* Shield Arduino.&lt;br /&gt;
* Sonar.&lt;br /&gt;
* Caméra.&lt;br /&gt;
* Pièce 3D pour le sonar et la caméra.&lt;br /&gt;
&lt;br /&gt;
De la persévérence, un robot télécommandable en fin de bureau d'étude : 16/20 (effet monôme).&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-6&amp;diff=9902</id>
		<title>Discussion:Binome2017-6</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-6&amp;diff=9902"/>
				<updated>2018-05-25T17:02:26Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Commentaires sur le Wiki :&lt;br /&gt;
* Un effort pour constituer un cahier des charges et faire une analyse du robot.&lt;br /&gt;
* Bien rédigé, orthographe correcte, bien illustré.&lt;br /&gt;
* Assez peu d'explications sur le code.&lt;br /&gt;
* Un constat d'échec sur la Raspberry Pi.&lt;br /&gt;
* Pas vraiment d'idée sur ce qui marche sur le robot.&lt;br /&gt;
&lt;br /&gt;
Un Wiki soigné mais avec assez peu d'informations sur la réalisation : 13/20.&lt;br /&gt;
&lt;br /&gt;
Vidéo :&lt;br /&gt;
* Une description correcte du robot.&lt;br /&gt;
* Démonstration : robot fonctionnel avec le sonar mais pas d'IR.&lt;br /&gt;
&lt;br /&gt;
Dommage d'évoquer plusieurs fonctionnalités non implantées alors qu'accessibles : 14/20&lt;br /&gt;
&lt;br /&gt;
Robot :&lt;br /&gt;
* Chassis plexiglas basique.&lt;br /&gt;
* Capteurs sonar, IR (non démontré).&lt;br /&gt;
* Un shield Arduino.&lt;br /&gt;
&lt;br /&gt;
Un bon bureau d'études : 13/20.&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2017-5&amp;diff=9901</id>
		<title>Binome2017-5</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Binome2017-5&amp;diff=9901"/>
				<updated>2018-05-25T16:45:27Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Ce que ce BE nous a apporté */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BE IMA Proie et Chasseur&lt;br /&gt;
&lt;br /&gt;
Béchet Clémence / Gautreau Pierre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Faucon.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Re-Définition du Projet et Phase d'Idéation ==&lt;br /&gt;
&lt;br /&gt;
'''Le Projet :'''&lt;br /&gt;
&lt;br /&gt;
Le Bureau d’Etudes porte sur la réalisation de robots communicants sur le thème “Proies et Prédateurs”.&lt;br /&gt;
Il s’agit alors, dans le cas d’un Robot Prédateur, de concevoir un robot capable de détecter les proies et de les chasser ou bien, dans le cas de la proie, de produire un robot capable de détecter les chasseurs et de les semer.&lt;br /&gt;
La problématique du robot chasseur qui était “''Comment optimiser la détection de l’objectif et comment atteindre l’objectif lorsqu’il est en mouvement ?''” nous semblait plus intéressante et plus complexe dans le sens où chacun a son approche et stratégie de “Traque”.&lt;br /&gt;
&lt;br /&gt;
Le noyau principal du projet est la conception d’un automate qui se meut dans son environnement. Il ne doit pas mettre en danger son environnement ou se mettre en danger lui même (Merci M. Asimov). Pour cela, il doit être capable d’observer et de comprendre ce qui l’entoure.&lt;br /&gt;
Le Deuxième point important concerne la détection de l’objectif. L’automate doit être capable de détecter son objectif et déterminer sa position par rapport à celui-ci.&lt;br /&gt;
Il faut noter que dans le modèle naturel “Proie vs. Prédateur”, la traque se doit d’être méthodique et rapide. Il convient d’appliquer ces concepts dans la réalisation de notre robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Nos Choix :'''&lt;br /&gt;
&lt;br /&gt;
À la pensée de prédateurs, nous avons tout de suite pensé aux rapaces et cela nous a donc amené à parler de Faucons. Étant tout deux de grands fans de Star Wars, nous avons tout de suite imaginé un Faucon Millenium.&lt;br /&gt;
Il parait judicieux de concevoir le robot le plus rapide du groupe afin de faciliter la traque. Nous avons donc décider d’utiliser des moteurs continus contrôlés en tension. &lt;br /&gt;
La programmation du robot nous parait importante, c’est pourquoi nous comptons passer plus de temps dessus à défaut de faire la carte électronique. Nous utiliserons donc un shield optimisé pour notre robot en complément d’une carte Arduino.&lt;br /&gt;
Concernant la méthode de traque, nous souhaitons mettre au point une méthode de détection efficace. Nous avons considérer le système de vision de l’Homme et nous l’avons simplifié pour l’adapter à notre automate. Nous allons donc créé une tourelle rotative de détection. Elle sera composée de plusieurs détecteurs infra-rouge. Son mouvement sera indépendant de celui du châssis, ainsi nous réduisons les angles morts de détection.&lt;br /&gt;
Concernant le châssis, il doit être léger et fonctionnel.&lt;br /&gt;
&lt;br /&gt;
== Élaboration du bouclier ==&lt;br /&gt;
&lt;br /&gt;
Nous avons en premier lieu listé tous les composants dont nous aurons besoin pour l'élaboration de notre robot pour préciser leur disposition. Ainsi, nous avons pu concevoir notre bouclier de manière optimale en prenant en compte toutes ces informations. &lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons réfléchi à la manière dont on voulait que notre robot chasseur détecte la lumière LED de la proie. Nous avons alors imaginé mettre une tourelle composée de 3 capteurs infrarouge. Nous pensons que si nous ne prenons qu'un seul capteur, la détection de la proie sera moins précise. En effet, les 3 capteurs ne vont pas détecter la proie au même moment donc cela nous permettra de dire avec précision où se trouve la proie.&lt;br /&gt;
&lt;br /&gt;
Puis, nous avons finalisé le Schematic et le PCB de notre bouclier d'Arduino. Pour cela, nous avons réagencé la disposition des différents composants. Notamment les câbles que nous avons du déplacer pour minimiser les erreurs liées à la proximité de 2 câbles. Cependant, nous avons du faire face à un problème majeur : certains câbles en chevauchaient d'autres. Nous avons donc opté pour des ponts que nous relirons avec des fils après impression du bouclier. Nous avons enfin rajouter 2 LED à notre bouclier qui serviront au débogage du robot.&lt;br /&gt;
&lt;br /&gt;
Après avoir conçu le bouclier, nous sommes allés l'imprimer et nous avons ensuite souder des fils reliant les composants sur ce shield. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Decoupe du Shield.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Découpe du Shield.mp4]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Shield etat intermediaire1.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Shield etat intermediaire2.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:schematic.png|thumb|500px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A la suite de cela, nous nous sommes répartis les tâches à effectuer : l'un s'occupait de coder l'Arduino tandis que l'autre devait concevoir le châssis du robot.&lt;br /&gt;
&lt;br /&gt;
== Élaboration du châssis  ==&lt;br /&gt;
&lt;br /&gt;
Concernant la conception de la forme du châssis, nous avons décidé de faire un Faucon Millénium, vaisseau de Star Wars© et nous nous sommes donc inspiré de sa forme. Nous avons aussi voulu faire 2 plaques de plexiglas reliées entre elles par des entretoises pour placer des éléments entre comme la batterie, ou l'électro-aiment.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Chassis etat intermediaire2.jpeg|500px|center]]&lt;br /&gt;
&lt;br /&gt;
Pour concevoir ce châssis, nous avons utilisé Inkscape, ce qui nous permettait de le réaliser à la découpe laser. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Vidéo de la découpe laser''' : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Découpe Laser.mp4]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Decoupe Laser photo.jpeg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Ainsi après avoir créé la forme, nous avons du faire les trous : ceux qui allaient servir à relier les deux plaques entre elles, ceux qui allaient fixer l'Arduino ou encore ceux pour faire passer les fils d'une plaque à l'autre.&lt;br /&gt;
Pour ceux de l'Arduino, nous avons utilisé Fritzing qui propose des modèles d'Arduino avec les emplacements précis de leur trous. Malheureusement, en découvrant l'impression, nous avons remarqué que les trous effectués n'étaient pas bien placés (sauf 2). Ce problème est lié au modèle que Fritzing nous a donné, nous pensions qu'il s'agissait du bon en vue de l'Arduino que nous avions choisi mais nous nous sommes trompés.&lt;br /&gt;
Ainsi, pour palier à ce problème, nous sommes simplement allés au Fabricarium et nous avons percer des trous supplémentaires.&lt;br /&gt;
&lt;br /&gt;
Ensuite, pour fixer la batterie qui se situe sur la plaque inférieure, nous avons imaginer un système avec 4 fixations placés en carrés. C'est-à-dire 3 entretoises fixes et une pièce en plexiglas que nous pouvons enlever facilement si nous voulons retirer la batterie.&lt;br /&gt;
&lt;br /&gt;
Pour les roues, nous les avons fixées sur une 3ième petite plaque qui est reliée à la plaque inférieure pour soutenir les moteurs des roues. Nous avons fixé ces deux plaques à l'aide de 8 entretoises. Nous avons également mis une roue folle sur le devant du robot.&lt;br /&gt;
&lt;br /&gt;
Nous avions enfin une spécificité notable sur notre robot/vaisseau : il s'agit d'une tourelle, placée sur le servomoteur, pour y fixer les 3 T-sop. Nous avons choisi d'en mettre 3 pour couvrir un large champs de vision mais également pour plus de facilité à repérer la proie. En effet, lorsqu'un T-sop détectera un signal mais que son voisin ne le détectera pas, cela nous donnera la position exacte de la proie. Nous avons donc du coder cette spécificité.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tourelle.jpg|thumb|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Vidéo de l'élaboration de la tourelle''' : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tourelle.mp4]]&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
&lt;br /&gt;
Une fois l'électronique au point, il ne reste plus qu'a créer le meilleur code possible relatif à la configuration matériel.&lt;br /&gt;
La première phase à été une étape de découverte de l'Arduino. Nous avons aussi pas mal testé les différents composants, afin d'en avoir une compréhension suffisante pour la suite.&lt;br /&gt;
&lt;br /&gt;
Une fois les bases acquises, il faut se lancer et visualiser la finalité du code. J'ai séparé le code en différents modules (déplacement, détection, servomoteur) afin de faciliter chaque étape de programmation et surtout pour éviter de perdre trop de temps sur le débogage. Enfin, une fois les différents modules au point, il ne reste plus qu'à les imbriqués.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;IRremote.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;IRremoteInt.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 // TSOP&lt;br /&gt;
 &lt;br /&gt;
 char TSOP1 = A0;&lt;br /&gt;
 char TSOP2 = A1;&lt;br /&gt;
 char TSOP3 = A2;&lt;br /&gt;
 &lt;br /&gt;
 int cas = 0;&lt;br /&gt;
 &lt;br /&gt;
 IRrecv IR1(TSOP1); // créer les instances irrecv&lt;br /&gt;
 IRrecv IR2(TSOP2);&lt;br /&gt;
 IRrecv IR3(TSOP3);&lt;br /&gt;
 decode_results results;&lt;br /&gt;
 &lt;br /&gt;
 void detect()  &lt;br /&gt;
 {&lt;br /&gt;
   if (IR1.decode(&amp;amp;results)) &lt;br /&gt;
   { &lt;br /&gt;
     cas = 1;&lt;br /&gt;
     IR1.resume(); &lt;br /&gt;
   } &lt;br /&gt;
   else if (IR2.decode(&amp;amp;results)) &lt;br /&gt;
   { &lt;br /&gt;
     cas = 2;&lt;br /&gt;
     IR2.resume();&lt;br /&gt;
   }&lt;br /&gt;
   else if (IR3.decode(&amp;amp;results)) &lt;br /&gt;
 &lt;br /&gt;
   { &lt;br /&gt;
     cas = 3;&lt;br /&gt;
     IR3.resume();&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // ELECTO-AIMANT&lt;br /&gt;
 &lt;br /&gt;
 int EA = 53;&lt;br /&gt;
 &lt;br /&gt;
 // SONAR&lt;br /&gt;
 &lt;br /&gt;
 int TRIG=41;&lt;br /&gt;
 int ECHO=43;&lt;br /&gt;
 const unsigned long MEASURE_TIMEOUT = 25000UL;&lt;br /&gt;
 const float SOUND_SPEED = 340.0 / 1000;&lt;br /&gt;
 &lt;br /&gt;
 float sonar()&lt;br /&gt;
 {&lt;br /&gt;
   digitalWrite(TRIG, HIGH);&lt;br /&gt;
   delayMicroseconds(10);&lt;br /&gt;
   digitalWrite(TRIG, LOW);&lt;br /&gt;
   &lt;br /&gt;
   /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */&lt;br /&gt;
   long measure = pulseIn(ECHO, HIGH, MEASURE_TIMEOUT);  &lt;br /&gt;
   &lt;br /&gt;
   /* 3. Calcul la distance à partir du temps mesuré */&lt;br /&gt;
   float distance_mm = measure / 2.0 * SOUND_SPEED;   &lt;br /&gt;
  &lt;br /&gt;
   return distance_mm;&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 //MOTEURS&lt;br /&gt;
 &lt;br /&gt;
 int PWM_motorA=10;&lt;br /&gt;
 int PWM_motorB=9;&lt;br /&gt;
 int AIN1=50;&lt;br /&gt;
 int AIN2=48;&lt;br /&gt;
 int BIN1=44;&lt;br /&gt;
 int BIN2=42;&lt;br /&gt;
 int STDY=46;&lt;br /&gt;
 unsigned long previous = millis();&lt;br /&gt;
 &lt;br /&gt;
 // SERVO&lt;br /&gt;
 &lt;br /&gt;
 class Sweeper&lt;br /&gt;
   {&lt;br /&gt;
     Servo servo;              // the servo&lt;br /&gt;
     int pos;              // current servo position&lt;br /&gt;
     int increment;        // increment to move for each interval&lt;br /&gt;
     int  updateInterval;      // interval between updates&lt;br /&gt;
     unsigned long lastUpdate; // last update of position&lt;br /&gt;
 &lt;br /&gt;
   public:&lt;br /&gt;
     Sweeper(int interval)&lt;br /&gt;
     {&lt;br /&gt;
       updateInterval = interval;&lt;br /&gt;
       increment = 1;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     void Attach(int pin)&lt;br /&gt;
     {&lt;br /&gt;
       servo.attach(pin);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     void Detach()&lt;br /&gt;
     {&lt;br /&gt;
       servo.detach();&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     void Update()&lt;br /&gt;
     {&lt;br /&gt;
       if((millis() - lastUpdate) &amp;gt; updateInterval)  // time to update&lt;br /&gt;
       {&lt;br /&gt;
         lastUpdate = millis();&lt;br /&gt;
         pos += increment;&lt;br /&gt;
         servo.write(pos);&lt;br /&gt;
         Serial.println(pos);&lt;br /&gt;
         if ((pos &amp;gt;= 160) || (pos &amp;lt;= 0)) // end of sweep&lt;br /&gt;
         {&lt;br /&gt;
           // reverse direction&lt;br /&gt;
           increment = -increment;&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   };&lt;br /&gt;
 &lt;br /&gt;
 Sweeper servoTour(50);&lt;br /&gt;
 &lt;br /&gt;
 void setup()&lt;br /&gt;
 {&lt;br /&gt;
  IR1.enableIRIn();&lt;br /&gt;
  IR2.enableIRIn();&lt;br /&gt;
  IR3.enableIRIn(); &lt;br /&gt;
  &lt;br /&gt;
  servoTour.Attach(8);&lt;br /&gt;
  &lt;br /&gt;
  pinMode(EA,OUTPUT);&lt;br /&gt;
  digitalWrite(EA,LOW);&lt;br /&gt;
  &lt;br /&gt;
  pinMode(TRIG,OUTPUT);&lt;br /&gt;
  digitalWrite(TRIG,LOW);&lt;br /&gt;
  pinMode(ECHO,INPUT);&lt;br /&gt;
  &lt;br /&gt;
  pinMode(AIN1,OUTPUT);&lt;br /&gt;
  pinMode(AIN2,OUTPUT);&lt;br /&gt;
  pinMode(BIN1,OUTPUT);&lt;br /&gt;
  pinMode(BIN2,OUTPUT);&lt;br /&gt;
  pinMode(PWM_motorA,OUTPUT);&lt;br /&gt;
  pinMode(PWM_motorB,OUTPUT);&lt;br /&gt;
  pinMode(STDY,OUTPUT);&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(AIN1,LOW);&lt;br /&gt;
  digitalWrite(AIN2,LOW);&lt;br /&gt;
  digitalWrite(BIN1,LOW);&lt;br /&gt;
  digitalWrite(BIN2,LOW);&lt;br /&gt;
  digitalWrite(STDY,LOW);&lt;br /&gt;
  analogWrite(PWM_motorA,0);&lt;br /&gt;
  analogWrite(PWM_motorB,0);&lt;br /&gt;
  &lt;br /&gt;
  digitalWrite(11,LOW); &lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 void loop()&lt;br /&gt;
 { &lt;br /&gt;
  servoTour.Update();  &lt;br /&gt;
  digitalWrite(STDY,HIGH);&lt;br /&gt;
  digitalWrite(AIN1,HIGH);&lt;br /&gt;
  digitalWrite(AIN2,LOW);&lt;br /&gt;
  analogWrite(PWM_motorA,255);&lt;br /&gt;
  digitalWrite(BIN1,HIGH);&lt;br /&gt;
  digitalWrite(BIN2,LOW);&lt;br /&gt;
  analogWrite(PWM_motorB,255);&lt;br /&gt;
  if(sonar()&amp;lt;50)&lt;br /&gt;
  {&lt;br /&gt;
    digitalWrite(STDY,LOW);&lt;br /&gt;
    digitalWrite(BIN1,LOW);&lt;br /&gt;
    unsigned long tps = millis();&lt;br /&gt;
    while (millis()-tps &amp;lt; 1000)&lt;br /&gt;
    {&lt;br /&gt;
     digitalWrite(STDY,HIGH); &lt;br /&gt;
     digitalWrite(BIN2,HIGH);&lt;br /&gt;
     analogWrite(PWM_motorB,255);&lt;br /&gt;
     previous = millis();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  unsigned long time = millis();&lt;br /&gt;
  detect();&lt;br /&gt;
  switch (cas)&lt;br /&gt;
  { &lt;br /&gt;
    case 1 :&lt;br /&gt;
      while (millis()-time &amp;lt; 1000)&lt;br /&gt;
      { &lt;br /&gt;
       digitalWrite(BIN2,HIGH);&lt;br /&gt;
       digitalWrite(BIN1,LOW);&lt;br /&gt;
       analogWrite(PWM_motorB,255);&lt;br /&gt;
       previous = millis();&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
    case 2 :&lt;br /&gt;
      if (sonar()&amp;lt; 50)&lt;br /&gt;
      {&lt;br /&gt;
        digitalWrite(EA,HIGH);&lt;br /&gt;
        analogWrite(PWM_motorA,0);&lt;br /&gt;
        analogWrite(PWM_motorB,0);&lt;br /&gt;
        delay (5000);&lt;br /&gt;
      }&lt;br /&gt;
    case 3 :&lt;br /&gt;
      while (millis()-time &amp;lt; 1000)&lt;br /&gt;
      { &lt;br /&gt;
       digitalWrite(AIN2,HIGH);&lt;br /&gt;
       digitalWrite(AIN1,LOW);&lt;br /&gt;
       analogWrite(PWM_motorA,255);&lt;br /&gt;
       previous = millis();&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
    default:&lt;br /&gt;
      break; &lt;br /&gt;
  }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Problèmes rencontrés durant le BE == &lt;br /&gt;
&lt;br /&gt;
* Ayant choisi des moteurs performants, ceux-ci nécessitent beaucoup de tension pour fonctionner. Nous avons sous-estimé ce besoin en début de projet. Or, durant la phase de programmation, nous nous sommes rendu-compte que notre robot n'avait pas assez de &amp;quot;jus&amp;quot; pour fonctionner. Cela à donc générer un certain nombre de soucis et de casses-têtes. Une solution serait de modifier l'alimentation du robot, et d'en choisir une plus adaptée à la configuration matérielle. Nous aurions pu échanger les moteurs par des servos continus, mais cela ne rentrait pas dans notre vision du projet (Conception d'un Robot relativement rapide).&lt;br /&gt;
&lt;br /&gt;
* Nous avons rencontré des problèmes pour la tourelle : en effet, comme stipulé précédemment, nous avons mis 3 Tsop sur cette dernière et donc nous avions 3x3 = 9 fils dessus. Il y a donc beaucoup de frottement dû aux fils. Nous pensons toujours que la tourelle est une bonne idée car grâce à elle, le robot peut ratisser un large champs et ainsi capter la proie plus aisément. Donc pour un prochain projet, nous pourrions garder l'idée de la tourelle mais la perfectionner : lui attribuer par exemple un diamètre plus important pour que l'on puisse intégrer les Tsop à l'intérieur même de la tourelle et faire passer les fils de ceux ci dans une fente placée sur la tourelle. Comme cela, les fils ne créerait pas de frottement avec le châssis et la tourelle tournerait plus facilement.  De plus, sur le servomoteur, nous pouvons remarquer que la partie qui tourne à la forme d'un petit engrenage. Donc, en créant la tourelle à l'imprimante 3D, nous aurions pu la dessiner avec un engrenage qui correspond parfaitement à celui du servomoteur. Ainsi, nous aurions pu les emboîter et il n'y aurait eu aucun frottement. Cette opération doit être toute fois extrêmement précise et elle demande beaucoup de temps : il faut repérer les dimensions exactes que doit avoir l'engrenage, le dessiner et l'imprimer avec une imprimante 3D d'une très grande précision pour que les 2 engrenages s'emboîtent au mieux (de l'ordre du micromètre). Voilà comment nous aurions pu améliorer notre tourelle.&lt;br /&gt;
&lt;br /&gt;
* Dernier petit problème rencontré (et petite anecdote notable) : pendant les vacances, nous avons voulu peaufiner notre robot et lorsque nous avons testé notre programme qui permet au robot de rouler, nous avons constaté qu'une seule roue tournait. Donc nous nous sommes intéressés au moteur de cette roue et en le touchant, un de ses fils s'est dessoudé.  Nous avons donc été très embêtés car nous n'avions pas d'appareil pour souder chez nous. Nous avons donc cherché un endroit près de chez nous, comme un fabricarium ou une entreprise où nous pourrions trouver cela. Et nous avons découvert, à Nanterre (92), un local de passionnés d'électronique et de mécanique qui nous ont très gentiment présenté leur 1000 m² de locaux et prêté leur appareil de soudure. Nous avons été très impressionnés des machines qu'ils ont acquit durant toutes ces années depuis la création de l'association car tout ce qui est là-bas est de la récupération. Le lien web de ce hackerspace : [https://www.electrolab.fr]&lt;br /&gt;
&lt;br /&gt;
== Axes d'amélioration ==&lt;br /&gt;
&lt;br /&gt;
* Nous aurions pu améliorer le câblage : en effet, du fait que sa grande taille, notre robot possède de nombreux fils un peu partout. À notre avis, le nombre de fils ne peut pas être réduit car nous avons seulement mis le nécessaire. En revanche, ce qui peut être réduit est la taille de ceux-ci. Nous aurions pu faire notre robot plus petit et donc les fils auraient été plus courts. Mais nous avons choisi de le faire si grand car tout d'abord nous voulions un prédateur qui en jette, qui écrase toutes les petites proies (et également car notre shield était d'une taille importante donc nous voulions faire quelque chose d'assez aéré). &lt;br /&gt;
&lt;br /&gt;
* Peut être sur un prochain projet, nous pourrions aussi faire notre propre carte pour supprimer l'interface entre Arduino et le Shield. En effet, cela réduira la place occupée car nous aurions plus qu'un élément au lieu de deux et cela réduira également les erreurs liés à l'interface entre les 2 composants.&lt;br /&gt;
&lt;br /&gt;
== Ce que ce BE nous a apporté ==&lt;br /&gt;
&lt;br /&gt;
Clémence : Pour ma part, je n'avais que peu de compétences en électronique ou en informatique avant de commencer ce BE. Mais j'ai voulu le faire car c'est celui que je trouvais le plus intéressant : concevoir un robot de A à Z et justement acquérir un maximum de connaissances en électronique et en informatique, qui me serviront forcément dans ma vie future professionnelle. De plus, la mécanique est un domaine qui m'attire depuis longtemps. Ainsi, je me suis donné la mission de concevoir toute la partie mécanique de ce BE c'est-à-dire la réalisation du châssis du robot. J'ai donc créé ses contours, sa forme mais aussi imaginé l'emplacement, de manière précise, de chacun des éléments que nous allions devoir fixer sur le châssis. &lt;br /&gt;
&lt;br /&gt;
Les débuts dans ce BE étaient un peu rudes pour moi car je me suis retrouvée immergée dans un contexte et avec un langage nouveaux. J'ai du donc apprendre un nouveau vocabulaire, mais cela était beaucoup moins dur que ce que j'imaginais ! Enfin, c'est mon partenaire Pierre qui a réalisé le codage, ce qui m'a permis appréhender la logique et de me familiariser avec cette technique. &lt;br /&gt;
&lt;br /&gt;
Au final, ce BE fut très enrichissant pour moi car il m'a fait sortir de ma zone de confort et cela m'a fait découvrir un autre domaine que je ne connaissais quasiment pas. C'est exactement ce que j'attendais de ce Bureau d'Etudes !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pierre : Le Monde de la robotique m’était inconnu avant le Bureau d’Etude. La promesse d’un mélange entre électronique,informatique et mécanique, faites par la présentation du BE m’enchantait. C’est donc avec notre peu de connaissances que nous nous sommes lancés avec Clémence dans ce projet .“Vous allez réaliser de bout en bout un robot autonome” nous a t-on dit. Un rêve de Gamin. Les Phases d’électronique et d’informatique éveillaient en moi le plus d’intéret.&lt;br /&gt;
&lt;br /&gt;
Les débuts ont étés difficiles. L’autonomie et la liberté accordée m’ont dérouté au commencement. Il fallait à la fois acquérir les connaissances techniques, mais aussi s’organiser autour d’une méthode de Projet jusqu’alors très peu connu pour moi. Mais la bonne ambiance et la bien bienveillance qui régnait dans le BE ont été porteuses.&lt;br /&gt;
&lt;br /&gt;
Les nombreuses découvertes de ce BE me donne aujourd’hui envie de réaliser mes propres projets d’électronique communiquant (pourquoi pas rendre mon frigo intelligent ?). Surtout, la découverte de la philosophie d ”Arduino” m’a ouverte le champ des possibles. Cela renforce aussi mon choix de m’orienter en Section IMA l’année prochaine.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Photo de fin.jpeg|thumb|300px|center]]&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-3&amp;diff=9900</id>
		<title>Discussion:Binome2017-3</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-3&amp;diff=9900"/>
				<updated>2018-05-25T16:43:53Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Commentaires sur le Wiki :&lt;br /&gt;
* Bien rédigé mais trop de coquilles.&lt;br /&gt;
* Le programme du robot est decrit.&lt;br /&gt;
* Les fonctionnalités finales sont décrite.&lt;br /&gt;
* Quelques illustration.&lt;br /&gt;
* Un peu court.&lt;br /&gt;
&lt;br /&gt;
Un Wiki correct qui aurait gagné à être étoffé et corrigé. Un effort de synthèse : 13/20.&lt;br /&gt;
&lt;br /&gt;
Vidéo :&lt;br /&gt;
* Bonne description du robot.&lt;br /&gt;
* Démonstration sourire et sonar.&lt;br /&gt;
* Démonstration du mode fuite (IR fonctionnel)&lt;br /&gt;
* Démonstration capteur effet Hall.&lt;br /&gt;
&lt;br /&gt;
Une vidéo très correcte : 17/20&lt;br /&gt;
&lt;br /&gt;
Robot :&lt;br /&gt;
* Capteurs : sonar, TSOP, Hall&lt;br /&gt;
* Actionneurs : LED IR, LEDs de contrôle (émotion), servo (sourire).&lt;br /&gt;
* Chassis plexiglas&lt;br /&gt;
* Shield Arduino&lt;br /&gt;
&lt;br /&gt;
Un robot bien complet. Des élèves très autonomes. En résumé un bureau d'études très correct : 15/20.&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-4&amp;diff=9899</id>
		<title>Discussion:Binome2017-4</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-4&amp;diff=9899"/>
				<updated>2018-05-25T16:43:15Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Commentaires sont le Wiki :&lt;br /&gt;
* Wiki bien rédigé avec quelques coquilles.&lt;br /&gt;
* Un code commenté (code objet).&lt;br /&gt;
* Des illustrations.&lt;br /&gt;
* Un peu court, il manque un bilan sur les fonctionnaltés implantées ou non.&lt;br /&gt;
Un Wiki correct mais un peu court : 14/20.&lt;br /&gt;
&lt;br /&gt;
Vidéo :&lt;br /&gt;
* Bonne description du robot.&lt;br /&gt;
* Démonstration du mode automatique : le sonar fonctionne et le robot évite les obstacles.&lt;br /&gt;
* Démonstration du mode télécommandé : les TSOP fonctionnent !&lt;br /&gt;
&lt;br /&gt;
Une vidéo très correcte : 17/20.&lt;br /&gt;
&lt;br /&gt;
Robot :&lt;br /&gt;
* Chassis plexiglas.&lt;br /&gt;
* Roues avec pneus.&lt;br /&gt;
* Carte électronique.&lt;br /&gt;
* Capteurs : sonar, hall, IR.&lt;br /&gt;
&lt;br /&gt;
Un robot très complet et fonctionnel. Bureau d'études très correct : 16/20.&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-1&amp;diff=9898</id>
		<title>Discussion:Binome2017-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-1&amp;diff=9898"/>
				<updated>2018-05-25T16:36:48Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Commentaires sur le Wiki :&lt;br /&gt;
* Wiki de type chronologique.&lt;br /&gt;
* Beaucoup trop de coquilles.&lt;br /&gt;
* Des compte-rendus courts, illustrés sauf dans la période centrale.&lt;br /&gt;
* Le programme n'est pas du tout décrit.&lt;br /&gt;
&lt;br /&gt;
Un Wiki écrit avec bonne humeur mais assez minimal : 12/20.&lt;br /&gt;
&lt;br /&gt;
Vidéo : &lt;br /&gt;
* Une bonne description du robot.&lt;br /&gt;
* Robot réagissant à la télécommande IR.&lt;br /&gt;
* Sonar opérationnel, le robot tourne en cas d'obstacle.&lt;br /&gt;
&lt;br /&gt;
Une vidéo tout à fait correcte : 15/20&lt;br /&gt;
&lt;br /&gt;
Robot :&lt;br /&gt;
* Shield Arduino.&lt;br /&gt;
* Chassis plexiglas.&lt;br /&gt;
* Capteurs ultrason, TSOP. Contrôle des moteurs.&lt;br /&gt;
&lt;br /&gt;
Un robot fonctionnel, un travail correct : 13/20.&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-3&amp;diff=9897</id>
		<title>Discussion:Binome2017-3</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2017-3&amp;diff=9897"/>
				<updated>2018-05-25T16:36:20Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Commentaires sur le Wiki :&lt;br /&gt;
* Bien rédigé mais trop de coquilles.&lt;br /&gt;
* Le programme du robot est decrit.&lt;br /&gt;
* Les fonctionnalités finales sont décrite.&lt;br /&gt;
* Quelques illustration.&lt;br /&gt;
* Un peu court.&lt;br /&gt;
&lt;br /&gt;
Un Wiki correct qui aurait gagné à être étoffé et corrigé. Un effort de synthèse : 13/20.&lt;br /&gt;
&lt;br /&gt;
Vidéo :&lt;br /&gt;
* Bonne description du robot.&lt;br /&gt;
* Démonstration sourire et sonar.&lt;br /&gt;
* Démonstration du mode fuite (IR fonctionnel)&lt;br /&gt;
* Démonstration capteur effet Hall.&lt;br /&gt;
&lt;br /&gt;
Une vidéo très correcte : 17/20&lt;br /&gt;
&lt;br /&gt;
Robot :&lt;br /&gt;
* Capteurs : sonar, TSOP, Hall&lt;br /&gt;
* Actionneurs : LED IR, LEDs de contrôle (émotion), servo (sourire).&lt;br /&gt;
* Chassis plexiglas&lt;br /&gt;
* Shield Arduino&lt;br /&gt;
&lt;br /&gt;
Un robot bien complet. Des élèves très autonomes. En résumé un bureau d'études très correct : 16/20.&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2016-8&amp;diff=8541</id>
		<title>Discussion:Binome2016-8</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2016-8&amp;diff=8541"/>
				<updated>2017-05-22T12:56:36Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Travail&lt;br /&gt;
** Chassis : Un chassis maison avec un système de pince presque fonctionnel et un système d'éjection de balle à tester (conception uniquement).&lt;br /&gt;
** Electronique : Une carte conçue de A à Z sans FTDI. Carte fonctionnelle (les moteurs ont tourné).&lt;br /&gt;
** Système embarqué : Configuration du système embarqué jusqu'au site Web.&lt;br /&gt;
** Programmation : Un programme de test des moteurs&lt;br /&gt;
* Wiki&lt;br /&gt;
Très correct, bien rédigé, très correctement illustré.&lt;br /&gt;
* Soutenance&lt;br /&gt;
Quelques hésitations. Affiches numériques.&lt;br /&gt;
* Conclusion&lt;br /&gt;
Un travail colossal pour un prototype sur le point d'être fonctionnel (télécommandé).&lt;br /&gt;
&lt;br /&gt;
Note : 20/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2016-6&amp;diff=8540</id>
		<title>Discussion:Binome2016-6</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2016-6&amp;diff=8540"/>
				<updated>2017-05-22T12:53:58Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Travail&lt;br /&gt;
** Chassis : Chassis classique. Aucun effort pour des pièces additionnelles de fixation des capteurs (e.g. capteur ultrason). &lt;br /&gt;
** Electronique : Un bouclier et deux cartes minimales pour les capteurs de ligne et infrarouge.&lt;br /&gt;
** Système embarqué : Non envisagé.&lt;br /&gt;
** Programmation : Non abordée.&lt;br /&gt;
* Wiki&lt;br /&gt;
Très peu d'illustrations (3 en tout et pour tout). Contenu indigent. Des coquilles.&lt;br /&gt;
* Soutenance&lt;br /&gt;
Pas de soutenance. Une affiche.&lt;br /&gt;
* Conclusion&lt;br /&gt;
Un bureau d'étude bien en deça du minimum demandé. Aucune motivation.&lt;br /&gt;
&lt;br /&gt;
Note : 8/20&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2016-3&amp;diff=8539</id>
		<title>Discussion:Binome2016-3</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2016-3&amp;diff=8539"/>
				<updated>2017-05-22T12:52:09Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Travail&lt;br /&gt;
** Chassis : Pas de chassis finalisé, un arbre de transmission prévu sans que l'on sache comment il devait fonctionner.&lt;br /&gt;
** Electronique : Carte électronique avec un FTDI non classique pour l'IMA. Un bel effort de conception de carte avec quelques petits soucis que les encadrants auraient du détecter.&lt;br /&gt;
** Système embarqué : non abordé.&lt;br /&gt;
** Programmation : non abordée.&lt;br /&gt;
* Wiki&lt;br /&gt;
Aucune illustration. Rédaction correcte mais sans les schémas c'est difficile à comprendre.&lt;br /&gt;
* Soutenance&lt;br /&gt;
Pas de soutenance.&lt;br /&gt;
* Conclusion&lt;br /&gt;
Un projet bien parti mais qui s'est arrêté un peu abruptement. Indubitablement du travail. Projet un peu trop ambitieux.&lt;br /&gt;
&lt;br /&gt;
Note : 14/20.&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2016-2017&amp;diff=7139</id>
		<title>BE 2016-2017</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2016-2017&amp;diff=7139"/>
				<updated>2017-01-05T10:50:53Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Matériel à votre disposition pour les robots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectif à atteindre =&lt;br /&gt;
&lt;br /&gt;
Comme pour les saisons précédentes vous devez concevoir des robots pour concourir dans un jeu de balle. &lt;br /&gt;
&lt;br /&gt;
Le terrain peut être marqué comme sur le schéma ci-dessous. Durant une manche les joueurs ne peuvent pas sortir du cadre principal. Les bords du terrain sont inclinés pour que la balle revienne vers la zone de jeu. Les lignes permettent de marquer le centre du terrain et les zones de garage des robots. Les robots devront pouvoir distinguer deux types de lignes, peu importe les couleurs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:terrain2.png|500px|thumb|center|Schéma du terrain]]&lt;br /&gt;
&lt;br /&gt;
Une manche est décomposée en plusieurs étapes :&lt;br /&gt;
* Le robot ramasseur est invité à sortir de son garage pour aller positionner la balle au centre du terrain. Cette invitation peut se faire après un but ou manuellement en début de partie. Quand la balle est correctement placée le robot ramasseur se gare et prévient les robots joueurs que le jeu peut démarrer.&lt;br /&gt;
* Les deux robots joueurs sortent de leur garage et vont chercher la balle en la repérant par leurs capteurs infrarouges. Si un robot capture la balle il demande au but adverse d'allumer sa balise infrarouge. Il essaye alors d'envoyer la balle dans le but. Au moment du tir, il permet au but d'éteindre sa balise.&lt;br /&gt;
* Soit le tir est raté et les robots continuent à tenter d'attraper la balle.&lt;br /&gt;
* Soit le tir est réussi et le but concerné le confirme, les robots joueurs vont se garer et le robot ramasseur entre en action. Les buts sont chargés d'afficher le score. Pour qu'un but soit marqué, il suffit que la balle rentre dans le but. Le sol du but est en pente pour que la balle ressorte automatiquement.&lt;br /&gt;
&lt;br /&gt;
Une partie est constituée de plusieurs manches.&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition pour les robots =&lt;br /&gt;
&lt;br /&gt;
Votre robot doit pouvoir réaliser les actions suivantes :&lt;br /&gt;
* avancer et reculer le tout en tournant éventuellement ;&lt;br /&gt;
* repérer une ligne au sol ;&lt;br /&gt;
* détecter des signaux infra-rouges pulsés ;&lt;br /&gt;
* détecter des obstacles sur son chemin ;&lt;br /&gt;
* communiquer avec les autres acteurs (robots et buts) ;&lt;br /&gt;
* capturer et déplacer une balle.&lt;br /&gt;
&lt;br /&gt;
Nous vous imposons de construire ce robot à base de micro-contrôleur ATMega. Par contre nous vous laissons le choix de la variante. Les possibilités sont classées de la plus simple à la plus complexe.&lt;br /&gt;
* Vous pouvez partir d'un des robots construits lors de la saison précédente. Ces robots ne sont pas forcément totalement fonctionnels mais les parties déjà réalisées peuvent vous faire gagner du temps que vous pourrez consacrer à la programmation du robot.&lt;br /&gt;
* Vous pouvez construire un robot à partir d'un des deux chassis proposés, utiliser un Arduino Mega et concevoir un bouclier pour cet Arduino comportant des emplacements pour les divers composants nécessaires (contrôleur moteur, détecteur ultrason, détecteur de lignes, etc).&lt;br /&gt;
* Vous pouvez aussi fabriquer votre propre chassis avec deux plaques de plexiglass et y intégrer deux moto-réducteurs et leurs roues ainsi qu'une roue folle. Pour le micro-contrôleur vous pouvez aussi vous passer de l'Arduino Mega et concevoir votre propre circuit intégré à base de micro-contrôleur ATMega328p et d'un contrôleur moteurs TB6612FNG. Même les détecteurs de lignes peuvent être construits à partir de composants électroniques de base. Seul le sonar ultrason est trop complexe pour être conçu à partir des composants de base.&lt;br /&gt;
* Si vous aimez les défis vous pouvez aussi construire un robot avec un moto-réducteur de meilleure qualité et avec une carte électronique réalisée uniquement avec des composants électroniques de surface.&lt;br /&gt;
&lt;br /&gt;
Les montages photographiques ci-dessous présentent les éléments permettant de construire un robot sans trop souffrir et les composants de base pour construire un robot plus optimisé et personnalisé.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot-kit.jpg|300px|thumb|left|Chassis, Arduino Mega, détecteur couleur, sonar, contrôleur moteurs, phototransistor, modem ZigBee, détecteur de ligne]]&lt;br /&gt;
[[Fichier:robot-composant.jpg|300px|thumb|right|Moto-réducteurs et roues, micro-contrôleurs ATMega328p et quartz, contrôleur de moteurs TB6612FNG, interrupteur optique QRE1113]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Des dispositifs mécaniques, comme une pince, peuvent être réalisés en utilisant des servo-moteurs et des pièces en plexiglas ou en contreplaqué découpées à l'aide de la découpeuse laser du [http://www.fabricarium.fr/mediawiki-1.23.5/index.php?title=Accueil Fabricarium]. Certaines formes plus complexes peuvent éventuellement être réalisées à l'aide des imprimantes 3D du [http://www.fabricarium.fr/mediawiki-1.23.5/index.php?title=Accueil Fabricarium].&lt;br /&gt;
Pour les fixations vous avez de la visserie (vis, écrous, entretoises).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:servo.jpg|Servo-moteur&lt;br /&gt;
Fichier:pince-robot.jpg|Exemple de pince&lt;br /&gt;
Fichier:entretoises.jpg|Visserie&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition pour les buts =&lt;br /&gt;
&lt;br /&gt;
Les buts sont constitués :&lt;br /&gt;
* d'une cage de but à réaliser, par exemple, en plexiglas avec la découpeuse laser ;&lt;br /&gt;
* d'une balise infrarouge pouvant être activée à la demande ;&lt;br /&gt;
* d'un détecteur de passage de la balle (par phototransistor par exemple) ;&lt;br /&gt;
* d'un afficheur 7 segments pour le score.&lt;br /&gt;
&lt;br /&gt;
Consultez les bureaux d'études de 2014/2015 pour comprendre comment réaliser une balise infrarouge avec un micro-contrôleur. Cette année la fonctionnalité de clignotement de la balise à basse fréquence n'est pas nécessaire. Par contre il vous est demandé de gérer un afficheur 7 segments et un bouclier de communication par radio. Le micro-contrôleur de l'an passé, l'ATtiny85, ne sera pas suffisant pour gérer toutes les fonctionnalités du but de cette année. Vous utiliserez donc un Arduino Uno.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:LEDIR.jpg|LED infrarouge (940 nm)&lt;br /&gt;
Fichier:2n3904.png|Transistor pour LED&lt;br /&gt;
Fichier:Arduino Uno R3.jpg|Arduino Uno&lt;br /&gt;
Fichier:Serie7segments.png|Afficheur 7 segments&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Logiciels à utiliser =&lt;br /&gt;
&lt;br /&gt;
Pour concevoir un schéma propre du câblage de votre robot vous pouvez utiliser [http://fritzing.org/home/ fritzing]. Tous les composants de votre robot ne sont pas modélisés dans fritzing. Voici une liste de composants supplémentaires mis au points par des élèves IMA de la promotion 2017 (Julie Debock, Hugo Vandenbunder et Sylvain Verdonck) et revus par les encadrants du bureau d'études :&lt;br /&gt;
* détecteur ultrason : [[Fichier:UltrasonicSensor_HCSR04.zip]]&lt;br /&gt;
* détecteur de ligne : [[Fichier:LineSensor_Sparkfun.zip]]&lt;br /&gt;
* capteur de couleurs : [[Fichier:ColorSensor_Adafruit_TCS34725.zip]]&lt;br /&gt;
* contrôleur de moteurs : [[Fichier:MotorDriver_Pololu_md08a.zip]]&lt;br /&gt;
&lt;br /&gt;
Pour la conception de circuits imprimés nous vous recommandons le logiciel [http://www.cadsoftusa.com/download-eagle/freeware/ eagle] ou le précédent.&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 solidwork est très utilisé. Vous pouvez tenter [http://www.freecadweb.org/?lang=fr_FR freeCAD] si vous cherchez un logiciel plus libre.&lt;br /&gt;
&lt;br /&gt;
Pour le développement avec les plateformes Arduino, utilisez l'environnement du même nom. Si la programmation C++ vous fait peur, n'hésitez pas à ajouter l'outil [http://sourceforge.net/projects/ardublock/ ardublock] à cet environnement.&lt;br /&gt;
&lt;br /&gt;
Pour vous aider dans la conception des circuits imprimés nous vous proposons des circuits modélisés avec fritzing que vous pourrez adapter à vos robots. Ces circuits ont été ébauchés par les élèves IMA sus-cités et lourdement modifiés par les encadrants du bureau d'études.&lt;br /&gt;
&lt;br /&gt;
Un premier circuit vous donne un exemple de circuit pour les capteurs de l'avant du robot : [[Fichier:robot_capteur.zip]].&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:robot_capteur_bb.png|Capteurs : plaque d'essai&lt;br /&gt;
Fichier:robot_capteur_schem.png|Capteurs : schéma&lt;br /&gt;
Fichier:robot_capteur_pcb.png|Capteurs : circuit imprimé&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second circuit de type bouclier Arduino permet d'éviter tous les câbles entre l'Arduino et les contrôleurs de moteurs : [[Fichier:robot_bouclier.zip]]. Ce circuit est prévu pour 4 moteurs, les binômes avec des chassis bi-moteurs devront le simplifier.&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:robot_bouclier_bb.png|Bouclier : plaque d'essai&lt;br /&gt;
Fichier:robot_bouclier_schem.png|Bouclier : schéma&lt;br /&gt;
Fichier:robot_bouclier_pcb.png|Bouclier : circuit imprimé&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Répartition des tâches =&lt;br /&gt;
&lt;br /&gt;
Nous n'imposons pas de répartition rigide des tâches. Pour qu'une démonstration puisse se faire en fin de bureau d'étude il faut au moins deux robots joueurs, deux cages de buts et un robot ramasseur. Bien entendu plusieurs parties peuvent avoir lieu en même temps.&lt;br /&gt;
&lt;br /&gt;
== Fonctionnement de la cage de but ==&lt;br /&gt;
&lt;br /&gt;
Deux événements peuvent faire agir la cage de but :&lt;br /&gt;
* une balle pénètre dans la cage ;&lt;br /&gt;
* un message est envoyé à la cage par un robot.&lt;br /&gt;
&lt;br /&gt;
Pour détecter une balle entrant dans la cage, le plus simple est d'y fixer un phototransistor infrarouge avec un cache adapté pour ne détecter la balle que lorsqu'elle se trouve dans la cage.&lt;br /&gt;
&lt;br /&gt;
Lorsque que la balle est détectée il faut incrémenter le score (ce score est initialisé à zéro lors de la réinitialisation de l'Arduino). Il faut ensuite envoyer un message aux robots pour que les robots joueurs aillent se garer et que le robot ramasseur se mette en action. Le format des messages est a déterminer globalement, doit y figurer un champ destination qui permet de cibler un acteur précis et aussi un champ données pour préciser le message.&lt;br /&gt;
&lt;br /&gt;
Quand un message est envoyé spécifiquement à la cage, c'est à dire qu'elle reconnait son identifiant dans le champs destination, elle doit activer ou arrêter sa balise infrarouge. Mettons que la balise est activée si la donnée est 1 et arrêtée si la donnée est 0.&lt;br /&gt;
&lt;br /&gt;
Le câblage peut se faire en utilisant des plaques à essai ou en concevant un circuit imprimé avec le logiciel &amp;lt;tt&amp;gt;eagle&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Robot ramasseur de balle ==&lt;br /&gt;
&lt;br /&gt;
Un robot ramasseur de balle est constitué comme suit :&lt;br /&gt;
* un châssis roulant, un contrôleur pour chaque paire de moteurs, un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p ;&lt;br /&gt;
* un détecteur ultrason pour éviter les collisions ;&lt;br /&gt;
* trois détecteurs de ligne pour suivre efficacement les lignes au sol ;&lt;br /&gt;
* des phototransistors infrarouges pour repérer la balle infrarouge ;&lt;br /&gt;
* un système de pince basé sur un servo-moteur pour capturer la balle ;&lt;br /&gt;
* un bouclier XBee pour communiquer avec les autres acteurs.&lt;br /&gt;
&lt;br /&gt;
Le robot ramasseur de balle peut être activé soit manuellement par un bouton, soit sur réception d'un message lui étant destiné.&lt;br /&gt;
&lt;br /&gt;
Une fois activé le robot se promène en changeant de direction jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et la capture avec sa pince. &lt;br /&gt;
&lt;br /&gt;
Le robot se remet à se promener comme précédemment et s'arrête lorsqu'il détecte une ligne de la croix centrale. Il remonte cette ligne dans un sens et il analyse la prochaine intersection avec ses trois capteurs. S'il ne se trouve pas au centre du terrain il se retourne pour remonter la ligne dans l'autre sens. Une fois au centre du terrain, il lâche la balle et va se garer.&lt;br /&gt;
&lt;br /&gt;
Il ne lui reste alors plus qu'à envoyer un message aux robots joueurs pour qu'ils jouent une manche. &lt;br /&gt;
&lt;br /&gt;
Pour détecter les lignes les capteurs doivent être séparés de l'épaisseur des lignes au sol. Ainsi quand le capteur du milieu perdra la ligne, un des deux autres capteurs devrait l'apercevoir. De cette façon le robot saura par quel coté il perd la ligne et pourra tourner en sens inverse pour la retrouver sur le capteur central. Vous pouvez utiliser le temps entre deux pertes de ligne pour avoir une idée de la courbure de la ligne et lancer le robot dans une trajectoire courbe plutôt que rectiligne.&lt;br /&gt;
&lt;br /&gt;
Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision.&lt;br /&gt;
&lt;br /&gt;
Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas ou de bois.&lt;br /&gt;
&lt;br /&gt;
== Robot compétiteur ==&lt;br /&gt;
&lt;br /&gt;
Un robot compétiteur est constitué comme suit :&lt;br /&gt;
* un châssis roulant, un contrôleur pour chaque paire de moteurs, un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p ;&lt;br /&gt;
* un détecteur ultrason pour ne pas rentrer dans les obstacles ;&lt;br /&gt;
* trois détecteurs de ligne pour suivre efficacement les lignes au sol ;&lt;br /&gt;
* des phototransistors infrarouges pour repérer la balle infrarouge et les buts ;&lt;br /&gt;
* un système de pince basé sur un servo-moteur pour capturer la balle ;&lt;br /&gt;
* un système d'éjection de la balle pour tirer ;&lt;br /&gt;
* un bouclier XBee pour communiquer avec les autres acteurs.&lt;br /&gt;
&lt;br /&gt;
Un robot compétiteur est activé par un message du robot ramasseur de balle. Il sort alors de son garage pour rentrer sur le terrain.&lt;br /&gt;
&lt;br /&gt;
Une fois sur le terrain le robot s'y promène en changeant de direction lorsqu'il arrive en limite du terrain jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et tente de la capturer avec sa pince. Il demande alors au but adverse d'activer sa balise IR.&lt;br /&gt;
&lt;br /&gt;
Le robot tourne jusqu'à trouver le but adverse et tire pour envoyer la balle dans le but. Après avoir tiré, il demande au but adverse d'arrêter sa balise IR.&lt;br /&gt;
&lt;br /&gt;
Si le robot reçoit un message signalant qu'un but a été marqué, il va se garer. Pour cela il parcourt le terrain jusqu'à trouver une ligne de l'aire de jeu. Il suit cette ligne jusqu'à trouver l'intersection qui correspond à son garage.&lt;br /&gt;
&lt;br /&gt;
Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision.&lt;br /&gt;
&lt;br /&gt;
Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas ou bois. Quand la pince se referme elle doit occulter la balle pour que le robot puisse détecter la balise du but.&lt;br /&gt;
&lt;br /&gt;
== Robot télécommandé ==&lt;br /&gt;
&lt;br /&gt;
Un robot télécommandé est un robot compétiteur dirigé par un humain. Il est donc constitué des composants d'un robot compétiteur moins les phototransistors. En effet la balle est repérée par l'opérateur humain au travers d'une caméra. Le contrôle du robot se fait via une Raspberry Pi dotée d'une interface WiFi transformée en point d'accès et hébergeant un site Web. L'opérateur contrôle le robot en utilisant un smartphone connecté sur le point d'accès.&lt;br /&gt;
&lt;br /&gt;
Un robot télécommandé ne peut avancer que sur réception du message du robot ramasseur de balle.&lt;br /&gt;
&lt;br /&gt;
L'opérateur peut diriger le robot à sa guise dans le terrain mais le robot interdit toute sortie de ce terrain. L'opérateur peut capturer la balle avec la pince et la lancer dans le but adverse. La procédure d'activation de la balise du but adverse n'est donc jamais déclenchée contrairement à ce qui se passe avec un robot compétiteur.&lt;br /&gt;
&lt;br /&gt;
La pince doit être réalisée comme pour un robot compétiteur. La contrainte d'occulter les signaux IR de la balle n'est pas utile ici.&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 !! Tâches !! Page&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 1&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-1|Binôme 1 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-2|Binôme 2 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-3|Binôme 3 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-4|Binôme 4 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-5|Binôme 5 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-6|Binôme 6 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-7|Binôme 7 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-8|Binôme 8 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-9|Binôme 9 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 10&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-10|Binôme 10 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 11&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-11|Binôme 11 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2016-2017&amp;diff=7138</id>
		<title>BE 2016-2017</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2016-2017&amp;diff=7138"/>
				<updated>2017-01-04T12:40:17Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Matériel à votre disposition pour les robots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectif à atteindre =&lt;br /&gt;
&lt;br /&gt;
Comme pour les saisons précédentes vous devez concevoir des robots pour concourir dans un jeu de balle. &lt;br /&gt;
&lt;br /&gt;
Le terrain peut être marqué comme sur le schéma ci-dessous. Durant une manche les joueurs ne peuvent pas sortir du cadre principal. Les bords du terrain sont inclinés pour que la balle revienne vers la zone de jeu. Les lignes permettent de marquer le centre du terrain et les zones de garage des robots. Les robots devront pouvoir distinguer deux types de lignes, peu importe les couleurs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:terrain2.png|500px|thumb|center|Schéma du terrain]]&lt;br /&gt;
&lt;br /&gt;
Une manche est décomposée en plusieurs étapes :&lt;br /&gt;
* Le robot ramasseur est invité à sortir de son garage pour aller positionner la balle au centre du terrain. Cette invitation peut se faire après un but ou manuellement en début de partie. Quand la balle est correctement placée le robot ramasseur se gare et prévient les robots joueurs que le jeu peut démarrer.&lt;br /&gt;
* Les deux robots joueurs sortent de leur garage et vont chercher la balle en la repérant par leurs capteurs infrarouges. Si un robot capture la balle il demande au but adverse d'allumer sa balise infrarouge. Il essaye alors d'envoyer la balle dans le but. Au moment du tir, il permet au but d'éteindre sa balise.&lt;br /&gt;
* Soit le tir est raté et les robots continuent à tenter d'attraper la balle.&lt;br /&gt;
* Soit le tir est réussi et le but concerné le confirme, les robots joueurs vont se garer et le robot ramasseur entre en action. Les buts sont chargés d'afficher le score. Pour qu'un but soit marqué, il suffit que la balle rentre dans le but. Le sol du but est en pente pour que la balle ressorte automatiquement.&lt;br /&gt;
&lt;br /&gt;
Une partie est constituée de plusieurs manches.&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition pour les robots =&lt;br /&gt;
&lt;br /&gt;
Votre robot doit pouvoir réaliser les actions suivantes :&lt;br /&gt;
* avancer et reculer le tout en tournant éventuellement ;&lt;br /&gt;
* repérer une ligne au sol ;&lt;br /&gt;
* détecter des signaux infra-rouges pulsés ;&lt;br /&gt;
* détecter des obstacles sur son chemin ;&lt;br /&gt;
* communiquer avec les autres acteurs (robots et buts) ;&lt;br /&gt;
* capturer et déplacer une balle.&lt;br /&gt;
&lt;br /&gt;
Nous vous imposons de construire ce robot à base de micro-contrôleur ATMega. Par contre nous vous laissons le choix de la variante. Les possibilités sont classées de la plus simple à la plus complexe.&lt;br /&gt;
* Vous pouvez partir d'un des robots construits lors de la saison précédente. Ces robots ne sont pas forcément totalement fonctionnels mais les parties déjà réalisées peuvent vous faire gagner du temps que vous pourrez consacrer à la programmation du robot.&lt;br /&gt;
* Vous pouvez construire un robot à partir d'un des deux chassis proposés, utiliser un Arduino Mega et concevoir un bouclier pour cet Arduino comportant des emplacements pour les divers composants nécessaires (contrôleur moteur, détecteur ultrason, détecteur de lignes, etc).&lt;br /&gt;
* Vous pouvez aussi fabriquer votre propre chassis avec deux plaques de plexiglass et y intégrer deux moto-réducteurs et leurs roues ainsi qu'une roue folle. Pour le micro-contrôleur vous pouvez aussi vous passer de l'Arduino Mega et concevoir votre propre circuit intégré à base de micro-contrôleur ATMega328p et d'un contrôleur moteurs TB6612FNG. Même les détecteurs de lignes peuvent être construits à partir de composants électroniques de base. Seul le sonar ultrason est trop complexe pour être conçu à partir des composants de base.&lt;br /&gt;
* Si vous aimez les défis vous pouvez aussi construire un robot avec un moto-réducteur de meilleure qualité et avec une carte électronique réalisée uniquement avec des composants électroniques de surface.&lt;br /&gt;
&lt;br /&gt;
Les montages photographiques ci-dessous présente les éléments permettant de construire un robot sans trop souffrir et les composants de base pour construire un robot plus optimisé et personnalisé.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot-kit.jpg|300px|thumb|left|Chassis, Arduino Mega, détecteur couleur, sonar, contrôleur moteurs, phototransistor, modem ZigBee, détecteur de ligne]]&lt;br /&gt;
[[Fichier:robot-composant.jpg|300px|thumb|right|Moto-réducteurs et roues, micro-contrôleurs ATMega328p et quartz, contrôleur de moteurs TB6612FNG, interrupteur optique QRE1113]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Des dispositifs mécaniques, comme une pince, peuvent être réalisés en utilisant des servo-moteurs et des pièces en plexiglas ou en contreplaqué découpées à l'aide de la découpeuse laser du [http://www.fabricarium.fr/mediawiki-1.23.5/index.php?title=Accueil Fabricarium]. Certaines formes plus complexes peuvent éventuellement être réalisées à l'aide des imprimantes 3D du [http://www.fabricarium.fr/mediawiki-1.23.5/index.php?title=Accueil Fabricarium].&lt;br /&gt;
Pour les fixations vous avez de la visserie (vis, écrous, entretoises).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:servo.jpg|Servo-moteur&lt;br /&gt;
Fichier:pince-robot.jpg|Exemple de pince&lt;br /&gt;
Fichier:entretoises.jpg|Visserie&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition pour les buts =&lt;br /&gt;
&lt;br /&gt;
Les buts sont constitués :&lt;br /&gt;
* d'une cage de but à réaliser, par exemple, en plexiglas avec la découpeuse laser ;&lt;br /&gt;
* d'une balise infrarouge pouvant être activée à la demande ;&lt;br /&gt;
* d'un détecteur de passage de la balle (par phototransistor par exemple) ;&lt;br /&gt;
* d'un afficheur 7 segments pour le score.&lt;br /&gt;
&lt;br /&gt;
Consultez les bureaux d'études de 2014/2015 pour comprendre comment réaliser une balise infrarouge avec un micro-contrôleur. Cette année la fonctionnalité de clignotement de la balise à basse fréquence n'est pas nécessaire. Par contre il vous est demandé de gérer un afficheur 7 segments et un bouclier de communication par radio. Le micro-contrôleur de l'an passé, l'ATtiny85, ne sera pas suffisant pour gérer toutes les fonctionnalités du but de cette année. Vous utiliserez donc un Arduino Uno.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:LEDIR.jpg|LED infrarouge (940 nm)&lt;br /&gt;
Fichier:2n3904.png|Transistor pour LED&lt;br /&gt;
Fichier:Arduino Uno R3.jpg|Arduino Uno&lt;br /&gt;
Fichier:Serie7segments.png|Afficheur 7 segments&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Logiciels à utiliser =&lt;br /&gt;
&lt;br /&gt;
Pour concevoir un schéma propre du câblage de votre robot vous pouvez utiliser [http://fritzing.org/home/ fritzing]. Tous les composants de votre robot ne sont pas modélisés dans fritzing. Voici une liste de composants supplémentaires mis au points par des élèves IMA de la promotion 2017 (Julie Debock, Hugo Vandenbunder et Sylvain Verdonck) et revus par les encadrants du bureau d'études :&lt;br /&gt;
* détecteur ultrason : [[Fichier:UltrasonicSensor_HCSR04.zip]]&lt;br /&gt;
* détecteur de ligne : [[Fichier:LineSensor_Sparkfun.zip]]&lt;br /&gt;
* capteur de couleurs : [[Fichier:ColorSensor_Adafruit_TCS34725.zip]]&lt;br /&gt;
* contrôleur de moteurs : [[Fichier:MotorDriver_Pololu_md08a.zip]]&lt;br /&gt;
&lt;br /&gt;
Pour la conception de circuits imprimés nous vous recommandons le logiciel [http://www.cadsoftusa.com/download-eagle/freeware/ eagle] ou le précédent.&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 solidwork est très utilisé. Vous pouvez tenter [http://www.freecadweb.org/?lang=fr_FR freeCAD] si vous cherchez un logiciel plus libre.&lt;br /&gt;
&lt;br /&gt;
Pour le développement avec les plateformes Arduino, utilisez l'environnement du même nom. Si la programmation C++ vous fait peur, n'hésitez pas à ajouter l'outil [http://sourceforge.net/projects/ardublock/ ardublock] à cet environnement.&lt;br /&gt;
&lt;br /&gt;
Pour vous aider dans la conception des circuits imprimés nous vous proposons des circuits modélisés avec fritzing que vous pourrez adapter à vos robots. Ces circuits ont été ébauchés par les élèves IMA sus-cités et lourdement modifiés par les encadrants du bureau d'études.&lt;br /&gt;
&lt;br /&gt;
Un premier circuit vous donne un exemple de circuit pour les capteurs de l'avant du robot : [[Fichier:robot_capteur.zip]].&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:robot_capteur_bb.png|Capteurs : plaque d'essai&lt;br /&gt;
Fichier:robot_capteur_schem.png|Capteurs : schéma&lt;br /&gt;
Fichier:robot_capteur_pcb.png|Capteurs : circuit imprimé&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second circuit de type bouclier Arduino permet d'éviter tous les câbles entre l'Arduino et les contrôleurs de moteurs : [[Fichier:robot_bouclier.zip]]. Ce circuit est prévu pour 4 moteurs, les binômes avec des chassis bi-moteurs devront le simplifier.&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:robot_bouclier_bb.png|Bouclier : plaque d'essai&lt;br /&gt;
Fichier:robot_bouclier_schem.png|Bouclier : schéma&lt;br /&gt;
Fichier:robot_bouclier_pcb.png|Bouclier : circuit imprimé&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Répartition des tâches =&lt;br /&gt;
&lt;br /&gt;
Nous n'imposons pas de répartition rigide des tâches. Pour qu'une démonstration puisse se faire en fin de bureau d'étude il faut au moins deux robots joueurs, deux cages de buts et un robot ramasseur. Bien entendu plusieurs parties peuvent avoir lieu en même temps.&lt;br /&gt;
&lt;br /&gt;
== Fonctionnement de la cage de but ==&lt;br /&gt;
&lt;br /&gt;
Deux événements peuvent faire agir la cage de but :&lt;br /&gt;
* une balle pénètre dans la cage ;&lt;br /&gt;
* un message est envoyé à la cage par un robot.&lt;br /&gt;
&lt;br /&gt;
Pour détecter une balle entrant dans la cage, le plus simple est d'y fixer un phototransistor infrarouge avec un cache adapté pour ne détecter la balle que lorsqu'elle se trouve dans la cage.&lt;br /&gt;
&lt;br /&gt;
Lorsque que la balle est détectée il faut incrémenter le score (ce score est initialisé à zéro lors de la réinitialisation de l'Arduino). Il faut ensuite envoyer un message aux robots pour que les robots joueurs aillent se garer et que le robot ramasseur se mette en action. Le format des messages est a déterminer globalement, doit y figurer un champ destination qui permet de cibler un acteur précis et aussi un champ données pour préciser le message.&lt;br /&gt;
&lt;br /&gt;
Quand un message est envoyé spécifiquement à la cage, c'est à dire qu'elle reconnait son identifiant dans le champs destination, elle doit activer ou arrêter sa balise infrarouge. Mettons que la balise est activée si la donnée est 1 et arrêtée si la donnée est 0.&lt;br /&gt;
&lt;br /&gt;
Le câblage peut se faire en utilisant des plaques à essai ou en concevant un circuit imprimé avec le logiciel &amp;lt;tt&amp;gt;eagle&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Robot ramasseur de balle ==&lt;br /&gt;
&lt;br /&gt;
Un robot ramasseur de balle est constitué comme suit :&lt;br /&gt;
* un châssis roulant, un contrôleur pour chaque paire de moteurs, un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p ;&lt;br /&gt;
* un détecteur ultrason pour éviter les collisions ;&lt;br /&gt;
* trois détecteurs de ligne pour suivre efficacement les lignes au sol ;&lt;br /&gt;
* des phototransistors infrarouges pour repérer la balle infrarouge ;&lt;br /&gt;
* un système de pince basé sur un servo-moteur pour capturer la balle ;&lt;br /&gt;
* un bouclier XBee pour communiquer avec les autres acteurs.&lt;br /&gt;
&lt;br /&gt;
Le robot ramasseur de balle peut être activé soit manuellement par un bouton, soit sur réception d'un message lui étant destiné.&lt;br /&gt;
&lt;br /&gt;
Une fois activé le robot se promène en changeant de direction jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et la capture avec sa pince. &lt;br /&gt;
&lt;br /&gt;
Le robot se remet à se promener comme précédemment et s'arrête lorsqu'il détecte une ligne de la croix centrale. Il remonte cette ligne dans un sens et il analyse la prochaine intersection avec ses trois capteurs. S'il ne se trouve pas au centre du terrain il se retourne pour remonter la ligne dans l'autre sens. Une fois au centre du terrain, il lâche la balle et va se garer.&lt;br /&gt;
&lt;br /&gt;
Il ne lui reste alors plus qu'à envoyer un message aux robots joueurs pour qu'ils jouent une manche. &lt;br /&gt;
&lt;br /&gt;
Pour détecter les lignes les capteurs doivent être séparés de l'épaisseur des lignes au sol. Ainsi quand le capteur du milieu perdra la ligne, un des deux autres capteurs devrait l'apercevoir. De cette façon le robot saura par quel coté il perd la ligne et pourra tourner en sens inverse pour la retrouver sur le capteur central. Vous pouvez utiliser le temps entre deux pertes de ligne pour avoir une idée de la courbure de la ligne et lancer le robot dans une trajectoire courbe plutôt que rectiligne.&lt;br /&gt;
&lt;br /&gt;
Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision.&lt;br /&gt;
&lt;br /&gt;
Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas ou de bois.&lt;br /&gt;
&lt;br /&gt;
== Robot compétiteur ==&lt;br /&gt;
&lt;br /&gt;
Un robot compétiteur est constitué comme suit :&lt;br /&gt;
* un châssis roulant, un contrôleur pour chaque paire de moteurs, un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p ;&lt;br /&gt;
* un détecteur ultrason pour ne pas rentrer dans les obstacles ;&lt;br /&gt;
* trois détecteurs de ligne pour suivre efficacement les lignes au sol ;&lt;br /&gt;
* des phototransistors infrarouges pour repérer la balle infrarouge et les buts ;&lt;br /&gt;
* un système de pince basé sur un servo-moteur pour capturer la balle ;&lt;br /&gt;
* un système d'éjection de la balle pour tirer ;&lt;br /&gt;
* un bouclier XBee pour communiquer avec les autres acteurs.&lt;br /&gt;
&lt;br /&gt;
Un robot compétiteur est activé par un message du robot ramasseur de balle. Il sort alors de son garage pour rentrer sur le terrain.&lt;br /&gt;
&lt;br /&gt;
Une fois sur le terrain le robot s'y promène en changeant de direction lorsqu'il arrive en limite du terrain jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et tente de la capturer avec sa pince. Il demande alors au but adverse d'activer sa balise IR.&lt;br /&gt;
&lt;br /&gt;
Le robot tourne jusqu'à trouver le but adverse et tire pour envoyer la balle dans le but. Après avoir tiré, il demande au but adverse d'arrêter sa balise IR.&lt;br /&gt;
&lt;br /&gt;
Si le robot reçoit un message signalant qu'un but a été marqué, il va se garer. Pour cela il parcourt le terrain jusqu'à trouver une ligne de l'aire de jeu. Il suit cette ligne jusqu'à trouver l'intersection qui correspond à son garage.&lt;br /&gt;
&lt;br /&gt;
Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision.&lt;br /&gt;
&lt;br /&gt;
Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas ou bois. Quand la pince se referme elle doit occulter la balle pour que le robot puisse détecter la balise du but.&lt;br /&gt;
&lt;br /&gt;
== Robot télécommandé ==&lt;br /&gt;
&lt;br /&gt;
Un robot télécommandé est un robot compétiteur dirigé par un humain. Il est donc constitué des composants d'un robot compétiteur moins les phototransistors. En effet la balle est repérée par l'opérateur humain au travers d'une caméra. Le contrôle du robot se fait via une Raspberry Pi dotée d'une interface WiFi transformée en point d'accès et hébergeant un site Web. L'opérateur contrôle le robot en utilisant un smartphone connecté sur le point d'accès.&lt;br /&gt;
&lt;br /&gt;
Un robot télécommandé ne peut avancer que sur réception du message du robot ramasseur de balle.&lt;br /&gt;
&lt;br /&gt;
L'opérateur peut diriger le robot à sa guise dans le terrain mais le robot interdit toute sortie de ce terrain. L'opérateur peut capturer la balle avec la pince et la lancer dans le but adverse. La procédure d'activation de la balise du but adverse n'est donc jamais déclenchée contrairement à ce qui se passe avec un robot compétiteur.&lt;br /&gt;
&lt;br /&gt;
La pince doit être réalisée comme pour un robot compétiteur. La contrainte d'occulter les signaux IR de la balle n'est pas utile ici.&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 !! Tâches !! Page&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 1&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-1|Binôme 1 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-2|Binôme 2 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-3|Binôme 3 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-4|Binôme 4 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-5|Binôme 5 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-6|Binôme 6 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-7|Binôme 7 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-8|Binôme 8 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-9|Binôme 9 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 10&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-10|Binôme 10 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 11&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-11|Binôme 11 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2016-2017&amp;diff=7137</id>
		<title>BE 2016-2017</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2016-2017&amp;diff=7137"/>
				<updated>2017-01-04T12:38:01Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Robot ramasseur de balle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectif à atteindre =&lt;br /&gt;
&lt;br /&gt;
Comme pour les saisons précédentes vous devez concevoir des robots pour concourir dans un jeu de balle. &lt;br /&gt;
&lt;br /&gt;
Le terrain peut être marqué comme sur le schéma ci-dessous. Durant une manche les joueurs ne peuvent pas sortir du cadre principal. Les bords du terrain sont inclinés pour que la balle revienne vers la zone de jeu. Les lignes permettent de marquer le centre du terrain et les zones de garage des robots. Les robots devront pouvoir distinguer deux types de lignes, peu importe les couleurs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:terrain2.png|500px|thumb|center|Schéma du terrain]]&lt;br /&gt;
&lt;br /&gt;
Une manche est décomposée en plusieurs étapes :&lt;br /&gt;
* Le robot ramasseur est invité à sortir de son garage pour aller positionner la balle au centre du terrain. Cette invitation peut se faire après un but ou manuellement en début de partie. Quand la balle est correctement placée le robot ramasseur se gare et prévient les robots joueurs que le jeu peut démarrer.&lt;br /&gt;
* Les deux robots joueurs sortent de leur garage et vont chercher la balle en la repérant par leurs capteurs infrarouges. Si un robot capture la balle il demande au but adverse d'allumer sa balise infrarouge. Il essaye alors d'envoyer la balle dans le but. Au moment du tir, il permet au but d'éteindre sa balise.&lt;br /&gt;
* Soit le tir est raté et les robots continuent à tenter d'attraper la balle.&lt;br /&gt;
* Soit le tir est réussi et le but concerné le confirme, les robots joueurs vont se garer et le robot ramasseur entre en action. Les buts sont chargés d'afficher le score. Pour qu'un but soit marqué, il suffit que la balle rentre dans le but. Le sol du but est en pente pour que la balle ressorte automatiquement.&lt;br /&gt;
&lt;br /&gt;
Une partie est constituée de plusieurs manches.&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition pour les robots =&lt;br /&gt;
&lt;br /&gt;
Votre robot doit pouvoir réaliser les actions suivantes :&lt;br /&gt;
* avancer et reculer le tout en tournant éventuellement ;&lt;br /&gt;
* repérer une ligne au sol ;&lt;br /&gt;
* détecter des signaux infra-rouges pulsés ;&lt;br /&gt;
* détecter des obstacles sur son chemin ;&lt;br /&gt;
* communiquer avec les autres acteurs (robots et buts) ;&lt;br /&gt;
* capturer et déplacer une balle.&lt;br /&gt;
&lt;br /&gt;
Nous vous imposons de construire ce robot à base de micro-contrôleur ATMega. Par contre nous vous laissons le choix de la variante. Les possibilités sont classées de la plus simple à la plus complexe.&lt;br /&gt;
* Vous pouvez partir d'un des robots construits lors de la saison précédente. Ces robots ne sont pas forcément totalement fonctionnels mais les parties déjà réalisées peuvent vous faire gagner du temps que vous pourrez consacrer à la programmation du robot.&lt;br /&gt;
* Vous pouvez construire un robot à partir d'un des deux chassis proposés, utiliser un Arduino Mega et concevoir un bouclier pour cet Arduino comportant des emplacements pour les divers composants nécessaires (contrôleur moteur, détecteur ultrason, détecteur de lignes, etc).&lt;br /&gt;
* Vous pouvez aussi fabriquer votre propre chassis avec deux plaques de plexiglass et y intégrer deux moto-réducteurs et leurs roues ainsi qu'une roue folle. Pour le micro-contrôleur vous pouvez aussi vous passer de l'Arduino Mega et concevoir votre propre circuit intégré à base de micro-contrôleur ATMega328p et d'un contrôleur moteurs TB6612FNG. Même les détecteurs de lignes peuvent être construits à partir de composants électroniques de base. Seul le sonar ultrason est trop complexe pour être conçu à partir des composants de base.&lt;br /&gt;
* Si vous aimez les défis vous pouvez aussi construire un robot avec un moto-réducteur de meilleure qualité et avec une carte électronique réalisée uniquement avec des composants électroniques de surface.&lt;br /&gt;
&lt;br /&gt;
Les montages photographiques ci-dessous présente les éléments permettant de construire un robot sans trop souffrir et les composants de base pour construire un robot plus optimisé et personnalisé.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot-kit.jpg|300px|thumb|left|Chassis, Arduino Mega, détecteur couleur, sonar, contrôleur moteurs, phototransistor, modem ZigBee, détecteur de ligne]]&lt;br /&gt;
[[Fichier:robot-composant.jpg|300px|thumb|right|Moto-réducteurs et roues, micro-contrôleurs ATMega328p et quartz, contrôleur de moteurs TB6612FNG, interrupteur optique QRE1113]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Des dispositifs mécaniques, comme une pince, peuvent être réalisés en utilisant des servo-moteurs et des pièces en plexiglas ou en contreplaqué découpés à l'aide de la découpeuse laser du [http://www.fabricarium.fr/mediawiki-1.23.5/index.php?title=Accueil Fabricarium].&lt;br /&gt;
Pour les fixations vous avez de la visserie (vis, écrous, entretoises).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:servo.jpg|Servo-moteur&lt;br /&gt;
Fichier:pince-robot.jpg|Exemple de pince&lt;br /&gt;
Fichier:entretoises.jpg|Visserie&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition pour les buts =&lt;br /&gt;
&lt;br /&gt;
Les buts sont constitués :&lt;br /&gt;
* d'une cage de but à réaliser, par exemple, en plexiglas avec la découpeuse laser ;&lt;br /&gt;
* d'une balise infrarouge pouvant être activée à la demande ;&lt;br /&gt;
* d'un détecteur de passage de la balle (par phototransistor par exemple) ;&lt;br /&gt;
* d'un afficheur 7 segments pour le score.&lt;br /&gt;
&lt;br /&gt;
Consultez les bureaux d'études de 2014/2015 pour comprendre comment réaliser une balise infrarouge avec un micro-contrôleur. Cette année la fonctionnalité de clignotement de la balise à basse fréquence n'est pas nécessaire. Par contre il vous est demandé de gérer un afficheur 7 segments et un bouclier de communication par radio. Le micro-contrôleur de l'an passé, l'ATtiny85, ne sera pas suffisant pour gérer toutes les fonctionnalités du but de cette année. Vous utiliserez donc un Arduino Uno.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:LEDIR.jpg|LED infrarouge (940 nm)&lt;br /&gt;
Fichier:2n3904.png|Transistor pour LED&lt;br /&gt;
Fichier:Arduino Uno R3.jpg|Arduino Uno&lt;br /&gt;
Fichier:Serie7segments.png|Afficheur 7 segments&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Logiciels à utiliser =&lt;br /&gt;
&lt;br /&gt;
Pour concevoir un schéma propre du câblage de votre robot vous pouvez utiliser [http://fritzing.org/home/ fritzing]. Tous les composants de votre robot ne sont pas modélisés dans fritzing. Voici une liste de composants supplémentaires mis au points par des élèves IMA de la promotion 2017 (Julie Debock, Hugo Vandenbunder et Sylvain Verdonck) et revus par les encadrants du bureau d'études :&lt;br /&gt;
* détecteur ultrason : [[Fichier:UltrasonicSensor_HCSR04.zip]]&lt;br /&gt;
* détecteur de ligne : [[Fichier:LineSensor_Sparkfun.zip]]&lt;br /&gt;
* capteur de couleurs : [[Fichier:ColorSensor_Adafruit_TCS34725.zip]]&lt;br /&gt;
* contrôleur de moteurs : [[Fichier:MotorDriver_Pololu_md08a.zip]]&lt;br /&gt;
&lt;br /&gt;
Pour la conception de circuits imprimés nous vous recommandons le logiciel [http://www.cadsoftusa.com/download-eagle/freeware/ eagle] ou le précédent.&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 solidwork est très utilisé. Vous pouvez tenter [http://www.freecadweb.org/?lang=fr_FR freeCAD] si vous cherchez un logiciel plus libre.&lt;br /&gt;
&lt;br /&gt;
Pour le développement avec les plateformes Arduino, utilisez l'environnement du même nom. Si la programmation C++ vous fait peur, n'hésitez pas à ajouter l'outil [http://sourceforge.net/projects/ardublock/ ardublock] à cet environnement.&lt;br /&gt;
&lt;br /&gt;
Pour vous aider dans la conception des circuits imprimés nous vous proposons des circuits modélisés avec fritzing que vous pourrez adapter à vos robots. Ces circuits ont été ébauchés par les élèves IMA sus-cités et lourdement modifiés par les encadrants du bureau d'études.&lt;br /&gt;
&lt;br /&gt;
Un premier circuit vous donne un exemple de circuit pour les capteurs de l'avant du robot : [[Fichier:robot_capteur.zip]].&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:robot_capteur_bb.png|Capteurs : plaque d'essai&lt;br /&gt;
Fichier:robot_capteur_schem.png|Capteurs : schéma&lt;br /&gt;
Fichier:robot_capteur_pcb.png|Capteurs : circuit imprimé&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second circuit de type bouclier Arduino permet d'éviter tous les câbles entre l'Arduino et les contrôleurs de moteurs : [[Fichier:robot_bouclier.zip]]. Ce circuit est prévu pour 4 moteurs, les binômes avec des chassis bi-moteurs devront le simplifier.&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:robot_bouclier_bb.png|Bouclier : plaque d'essai&lt;br /&gt;
Fichier:robot_bouclier_schem.png|Bouclier : schéma&lt;br /&gt;
Fichier:robot_bouclier_pcb.png|Bouclier : circuit imprimé&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Répartition des tâches =&lt;br /&gt;
&lt;br /&gt;
Nous n'imposons pas de répartition rigide des tâches. Pour qu'une démonstration puisse se faire en fin de bureau d'étude il faut au moins deux robots joueurs, deux cages de buts et un robot ramasseur. Bien entendu plusieurs parties peuvent avoir lieu en même temps.&lt;br /&gt;
&lt;br /&gt;
== Fonctionnement de la cage de but ==&lt;br /&gt;
&lt;br /&gt;
Deux événements peuvent faire agir la cage de but :&lt;br /&gt;
* une balle pénètre dans la cage ;&lt;br /&gt;
* un message est envoyé à la cage par un robot.&lt;br /&gt;
&lt;br /&gt;
Pour détecter une balle entrant dans la cage, le plus simple est d'y fixer un phototransistor infrarouge avec un cache adapté pour ne détecter la balle que lorsqu'elle se trouve dans la cage.&lt;br /&gt;
&lt;br /&gt;
Lorsque que la balle est détectée il faut incrémenter le score (ce score est initialisé à zéro lors de la réinitialisation de l'Arduino). Il faut ensuite envoyer un message aux robots pour que les robots joueurs aillent se garer et que le robot ramasseur se mette en action. Le format des messages est a déterminer globalement, doit y figurer un champ destination qui permet de cibler un acteur précis et aussi un champ données pour préciser le message.&lt;br /&gt;
&lt;br /&gt;
Quand un message est envoyé spécifiquement à la cage, c'est à dire qu'elle reconnait son identifiant dans le champs destination, elle doit activer ou arrêter sa balise infrarouge. Mettons que la balise est activée si la donnée est 1 et arrêtée si la donnée est 0.&lt;br /&gt;
&lt;br /&gt;
Le câblage peut se faire en utilisant des plaques à essai ou en concevant un circuit imprimé avec le logiciel &amp;lt;tt&amp;gt;eagle&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Robot ramasseur de balle ==&lt;br /&gt;
&lt;br /&gt;
Un robot ramasseur de balle est constitué comme suit :&lt;br /&gt;
* un châssis roulant, un contrôleur pour chaque paire de moteurs, un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p ;&lt;br /&gt;
* un détecteur ultrason pour éviter les collisions ;&lt;br /&gt;
* trois détecteurs de ligne pour suivre efficacement les lignes au sol ;&lt;br /&gt;
* des phototransistors infrarouges pour repérer la balle infrarouge ;&lt;br /&gt;
* un système de pince basé sur un servo-moteur pour capturer la balle ;&lt;br /&gt;
* un bouclier XBee pour communiquer avec les autres acteurs.&lt;br /&gt;
&lt;br /&gt;
Le robot ramasseur de balle peut être activé soit manuellement par un bouton, soit sur réception d'un message lui étant destiné.&lt;br /&gt;
&lt;br /&gt;
Une fois activé le robot se promène en changeant de direction jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et la capture avec sa pince. &lt;br /&gt;
&lt;br /&gt;
Le robot se remet à se promener comme précédemment et s'arrête lorsqu'il détecte une ligne de la croix centrale. Il remonte cette ligne dans un sens et il analyse la prochaine intersection avec ses trois capteurs. S'il ne se trouve pas au centre du terrain il se retourne pour remonter la ligne dans l'autre sens. Une fois au centre du terrain, il lâche la balle et va se garer.&lt;br /&gt;
&lt;br /&gt;
Il ne lui reste alors plus qu'à envoyer un message aux robots joueurs pour qu'ils jouent une manche. &lt;br /&gt;
&lt;br /&gt;
Pour détecter les lignes les capteurs doivent être séparés de l'épaisseur des lignes au sol. Ainsi quand le capteur du milieu perdra la ligne, un des deux autres capteurs devrait l'apercevoir. De cette façon le robot saura par quel coté il perd la ligne et pourra tourner en sens inverse pour la retrouver sur le capteur central. Vous pouvez utiliser le temps entre deux pertes de ligne pour avoir une idée de la courbure de la ligne et lancer le robot dans une trajectoire courbe plutôt que rectiligne.&lt;br /&gt;
&lt;br /&gt;
Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision.&lt;br /&gt;
&lt;br /&gt;
Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas ou de bois.&lt;br /&gt;
&lt;br /&gt;
== Robot compétiteur ==&lt;br /&gt;
&lt;br /&gt;
Un robot compétiteur est constitué comme suit :&lt;br /&gt;
* un châssis roulant, un contrôleur pour chaque paire de moteurs, un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p ;&lt;br /&gt;
* un détecteur ultrason pour ne pas rentrer dans les obstacles ;&lt;br /&gt;
* trois détecteurs de ligne pour suivre efficacement les lignes au sol ;&lt;br /&gt;
* des phototransistors infrarouges pour repérer la balle infrarouge et les buts ;&lt;br /&gt;
* un système de pince basé sur un servo-moteur pour capturer la balle ;&lt;br /&gt;
* un système d'éjection de la balle pour tirer ;&lt;br /&gt;
* un bouclier XBee pour communiquer avec les autres acteurs.&lt;br /&gt;
&lt;br /&gt;
Un robot compétiteur est activé par un message du robot ramasseur de balle. Il sort alors de son garage pour rentrer sur le terrain.&lt;br /&gt;
&lt;br /&gt;
Une fois sur le terrain le robot s'y promène en changeant de direction lorsqu'il arrive en limite du terrain jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et tente de la capturer avec sa pince. Il demande alors au but adverse d'activer sa balise IR.&lt;br /&gt;
&lt;br /&gt;
Le robot tourne jusqu'à trouver le but adverse et tire pour envoyer la balle dans le but. Après avoir tiré, il demande au but adverse d'arrêter sa balise IR.&lt;br /&gt;
&lt;br /&gt;
Si le robot reçoit un message signalant qu'un but a été marqué, il va se garer. Pour cela il parcourt le terrain jusqu'à trouver une ligne de l'aire de jeu. Il suit cette ligne jusqu'à trouver l'intersection qui correspond à son garage.&lt;br /&gt;
&lt;br /&gt;
Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision.&lt;br /&gt;
&lt;br /&gt;
Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas ou bois. Quand la pince se referme elle doit occulter la balle pour que le robot puisse détecter la balise du but.&lt;br /&gt;
&lt;br /&gt;
== Robot télécommandé ==&lt;br /&gt;
&lt;br /&gt;
Un robot télécommandé est un robot compétiteur dirigé par un humain. Il est donc constitué des composants d'un robot compétiteur moins les phototransistors. En effet la balle est repérée par l'opérateur humain au travers d'une caméra. Le contrôle du robot se fait via une Raspberry Pi dotée d'une interface WiFi transformée en point d'accès et hébergeant un site Web. L'opérateur contrôle le robot en utilisant un smartphone connecté sur le point d'accès.&lt;br /&gt;
&lt;br /&gt;
Un robot télécommandé ne peut avancer que sur réception du message du robot ramasseur de balle.&lt;br /&gt;
&lt;br /&gt;
L'opérateur peut diriger le robot à sa guise dans le terrain mais le robot interdit toute sortie de ce terrain. L'opérateur peut capturer la balle avec la pince et la lancer dans le but adverse. La procédure d'activation de la balise du but adverse n'est donc jamais déclenchée contrairement à ce qui se passe avec un robot compétiteur.&lt;br /&gt;
&lt;br /&gt;
La pince doit être réalisée comme pour un robot compétiteur. La contrainte d'occulter les signaux IR de la balle n'est pas utile ici.&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 !! Tâches !! Page&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 1&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-1|Binôme 1 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-2|Binôme 2 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-3|Binôme 3 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-4|Binôme 4 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-5|Binôme 5 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-6|Binôme 6 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-7|Binôme 7 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-8|Binôme 8 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-9|Binôme 9 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 10&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-10|Binôme 10 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 11&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-11|Binôme 11 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2016-2017&amp;diff=7136</id>
		<title>BE 2016-2017</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2016-2017&amp;diff=7136"/>
				<updated>2017-01-04T12:34:11Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Matériel à votre disposition pour les buts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectif à atteindre =&lt;br /&gt;
&lt;br /&gt;
Comme pour les saisons précédentes vous devez concevoir des robots pour concourir dans un jeu de balle. &lt;br /&gt;
&lt;br /&gt;
Le terrain peut être marqué comme sur le schéma ci-dessous. Durant une manche les joueurs ne peuvent pas sortir du cadre principal. Les bords du terrain sont inclinés pour que la balle revienne vers la zone de jeu. Les lignes permettent de marquer le centre du terrain et les zones de garage des robots. Les robots devront pouvoir distinguer deux types de lignes, peu importe les couleurs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:terrain2.png|500px|thumb|center|Schéma du terrain]]&lt;br /&gt;
&lt;br /&gt;
Une manche est décomposée en plusieurs étapes :&lt;br /&gt;
* Le robot ramasseur est invité à sortir de son garage pour aller positionner la balle au centre du terrain. Cette invitation peut se faire après un but ou manuellement en début de partie. Quand la balle est correctement placée le robot ramasseur se gare et prévient les robots joueurs que le jeu peut démarrer.&lt;br /&gt;
* Les deux robots joueurs sortent de leur garage et vont chercher la balle en la repérant par leurs capteurs infrarouges. Si un robot capture la balle il demande au but adverse d'allumer sa balise infrarouge. Il essaye alors d'envoyer la balle dans le but. Au moment du tir, il permet au but d'éteindre sa balise.&lt;br /&gt;
* Soit le tir est raté et les robots continuent à tenter d'attraper la balle.&lt;br /&gt;
* Soit le tir est réussi et le but concerné le confirme, les robots joueurs vont se garer et le robot ramasseur entre en action. Les buts sont chargés d'afficher le score. Pour qu'un but soit marqué, il suffit que la balle rentre dans le but. Le sol du but est en pente pour que la balle ressorte automatiquement.&lt;br /&gt;
&lt;br /&gt;
Une partie est constituée de plusieurs manches.&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition pour les robots =&lt;br /&gt;
&lt;br /&gt;
Votre robot doit pouvoir réaliser les actions suivantes :&lt;br /&gt;
* avancer et reculer le tout en tournant éventuellement ;&lt;br /&gt;
* repérer une ligne au sol ;&lt;br /&gt;
* détecter des signaux infra-rouges pulsés ;&lt;br /&gt;
* détecter des obstacles sur son chemin ;&lt;br /&gt;
* communiquer avec les autres acteurs (robots et buts) ;&lt;br /&gt;
* capturer et déplacer une balle.&lt;br /&gt;
&lt;br /&gt;
Nous vous imposons de construire ce robot à base de micro-contrôleur ATMega. Par contre nous vous laissons le choix de la variante. Les possibilités sont classées de la plus simple à la plus complexe.&lt;br /&gt;
* Vous pouvez partir d'un des robots construits lors de la saison précédente. Ces robots ne sont pas forcément totalement fonctionnels mais les parties déjà réalisées peuvent vous faire gagner du temps que vous pourrez consacrer à la programmation du robot.&lt;br /&gt;
* Vous pouvez construire un robot à partir d'un des deux chassis proposés, utiliser un Arduino Mega et concevoir un bouclier pour cet Arduino comportant des emplacements pour les divers composants nécessaires (contrôleur moteur, détecteur ultrason, détecteur de lignes, etc).&lt;br /&gt;
* Vous pouvez aussi fabriquer votre propre chassis avec deux plaques de plexiglass et y intégrer deux moto-réducteurs et leurs roues ainsi qu'une roue folle. Pour le micro-contrôleur vous pouvez aussi vous passer de l'Arduino Mega et concevoir votre propre circuit intégré à base de micro-contrôleur ATMega328p et d'un contrôleur moteurs TB6612FNG. Même les détecteurs de lignes peuvent être construits à partir de composants électroniques de base. Seul le sonar ultrason est trop complexe pour être conçu à partir des composants de base.&lt;br /&gt;
* Si vous aimez les défis vous pouvez aussi construire un robot avec un moto-réducteur de meilleure qualité et avec une carte électronique réalisée uniquement avec des composants électroniques de surface.&lt;br /&gt;
&lt;br /&gt;
Les montages photographiques ci-dessous présente les éléments permettant de construire un robot sans trop souffrir et les composants de base pour construire un robot plus optimisé et personnalisé.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot-kit.jpg|300px|thumb|left|Chassis, Arduino Mega, détecteur couleur, sonar, contrôleur moteurs, phototransistor, modem ZigBee, détecteur de ligne]]&lt;br /&gt;
[[Fichier:robot-composant.jpg|300px|thumb|right|Moto-réducteurs et roues, micro-contrôleurs ATMega328p et quartz, contrôleur de moteurs TB6612FNG, interrupteur optique QRE1113]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Des dispositifs mécaniques, comme une pince, peuvent être réalisés en utilisant des servo-moteurs et des pièces en plexiglas ou en contreplaqué découpés à l'aide de la découpeuse laser du [http://www.fabricarium.fr/mediawiki-1.23.5/index.php?title=Accueil Fabricarium].&lt;br /&gt;
Pour les fixations vous avez de la visserie (vis, écrous, entretoises).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:servo.jpg|Servo-moteur&lt;br /&gt;
Fichier:pince-robot.jpg|Exemple de pince&lt;br /&gt;
Fichier:entretoises.jpg|Visserie&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition pour les buts =&lt;br /&gt;
&lt;br /&gt;
Les buts sont constitués :&lt;br /&gt;
* d'une cage de but à réaliser, par exemple, en plexiglas avec la découpeuse laser ;&lt;br /&gt;
* d'une balise infrarouge pouvant être activée à la demande ;&lt;br /&gt;
* d'un détecteur de passage de la balle (par phototransistor par exemple) ;&lt;br /&gt;
* d'un afficheur 7 segments pour le score.&lt;br /&gt;
&lt;br /&gt;
Consultez les bureaux d'études de 2014/2015 pour comprendre comment réaliser une balise infrarouge avec un micro-contrôleur. Cette année la fonctionnalité de clignotement de la balise à basse fréquence n'est pas nécessaire. Par contre il vous est demandé de gérer un afficheur 7 segments et un bouclier de communication par radio. Le micro-contrôleur de l'an passé, l'ATtiny85, ne sera pas suffisant pour gérer toutes les fonctionnalités du but de cette année. Vous utiliserez donc un Arduino Uno.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:LEDIR.jpg|LED infrarouge (940 nm)&lt;br /&gt;
Fichier:2n3904.png|Transistor pour LED&lt;br /&gt;
Fichier:Arduino Uno R3.jpg|Arduino Uno&lt;br /&gt;
Fichier:Serie7segments.png|Afficheur 7 segments&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Logiciels à utiliser =&lt;br /&gt;
&lt;br /&gt;
Pour concevoir un schéma propre du câblage de votre robot vous pouvez utiliser [http://fritzing.org/home/ fritzing]. Tous les composants de votre robot ne sont pas modélisés dans fritzing. Voici une liste de composants supplémentaires mis au points par des élèves IMA de la promotion 2017 (Julie Debock, Hugo Vandenbunder et Sylvain Verdonck) et revus par les encadrants du bureau d'études :&lt;br /&gt;
* détecteur ultrason : [[Fichier:UltrasonicSensor_HCSR04.zip]]&lt;br /&gt;
* détecteur de ligne : [[Fichier:LineSensor_Sparkfun.zip]]&lt;br /&gt;
* capteur de couleurs : [[Fichier:ColorSensor_Adafruit_TCS34725.zip]]&lt;br /&gt;
* contrôleur de moteurs : [[Fichier:MotorDriver_Pololu_md08a.zip]]&lt;br /&gt;
&lt;br /&gt;
Pour la conception de circuits imprimés nous vous recommandons le logiciel [http://www.cadsoftusa.com/download-eagle/freeware/ eagle] ou le précédent.&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 solidwork est très utilisé. Vous pouvez tenter [http://www.freecadweb.org/?lang=fr_FR freeCAD] si vous cherchez un logiciel plus libre.&lt;br /&gt;
&lt;br /&gt;
Pour le développement avec les plateformes Arduino, utilisez l'environnement du même nom. Si la programmation C++ vous fait peur, n'hésitez pas à ajouter l'outil [http://sourceforge.net/projects/ardublock/ ardublock] à cet environnement.&lt;br /&gt;
&lt;br /&gt;
Pour vous aider dans la conception des circuits imprimés nous vous proposons des circuits modélisés avec fritzing que vous pourrez adapter à vos robots. Ces circuits ont été ébauchés par les élèves IMA sus-cités et lourdement modifiés par les encadrants du bureau d'études.&lt;br /&gt;
&lt;br /&gt;
Un premier circuit vous donne un exemple de circuit pour les capteurs de l'avant du robot : [[Fichier:robot_capteur.zip]].&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:robot_capteur_bb.png|Capteurs : plaque d'essai&lt;br /&gt;
Fichier:robot_capteur_schem.png|Capteurs : schéma&lt;br /&gt;
Fichier:robot_capteur_pcb.png|Capteurs : circuit imprimé&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second circuit de type bouclier Arduino permet d'éviter tous les câbles entre l'Arduino et les contrôleurs de moteurs : [[Fichier:robot_bouclier.zip]]. Ce circuit est prévu pour 4 moteurs, les binômes avec des chassis bi-moteurs devront le simplifier.&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:robot_bouclier_bb.png|Bouclier : plaque d'essai&lt;br /&gt;
Fichier:robot_bouclier_schem.png|Bouclier : schéma&lt;br /&gt;
Fichier:robot_bouclier_pcb.png|Bouclier : circuit imprimé&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Répartition des tâches =&lt;br /&gt;
&lt;br /&gt;
Nous n'imposons pas de répartition rigide des tâches. Pour qu'une démonstration puisse se faire en fin de bureau d'étude il faut au moins deux robots joueurs, deux cages de buts et un robot ramasseur. Bien entendu plusieurs parties peuvent avoir lieu en même temps.&lt;br /&gt;
&lt;br /&gt;
== Fonctionnement de la cage de but ==&lt;br /&gt;
&lt;br /&gt;
Deux événements peuvent faire agir la cage de but :&lt;br /&gt;
* une balle pénètre dans la cage ;&lt;br /&gt;
* un message est envoyé à la cage par un robot.&lt;br /&gt;
&lt;br /&gt;
Pour détecter une balle entrant dans la cage, le plus simple est d'y fixer un phototransistor infrarouge avec un cache adapté pour ne détecter la balle que lorsqu'elle se trouve dans la cage.&lt;br /&gt;
&lt;br /&gt;
Lorsque que la balle est détectée il faut incrémenter le score (ce score est initialisé à zéro lors de la réinitialisation de l'Arduino). Il faut ensuite envoyer un message aux robots pour que les robots joueurs aillent se garer et que le robot ramasseur se mette en action. Le format des messages est a déterminer globalement, doit y figurer un champ destination qui permet de cibler un acteur précis et aussi un champ données pour préciser le message.&lt;br /&gt;
&lt;br /&gt;
Quand un message est envoyé spécifiquement à la cage, c'est à dire qu'elle reconnait son identifiant dans le champs destination, elle doit activer ou arrêter sa balise infrarouge. Mettons que la balise est activée si la donnée est 1 et arrêtée si la donnée est 0.&lt;br /&gt;
&lt;br /&gt;
Le câblage peut se faire en utilisant des plaques à essai ou en concevant un circuit imprimé avec le logiciel &amp;lt;tt&amp;gt;eagle&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Robot ramasseur de balle ==&lt;br /&gt;
&lt;br /&gt;
Un robot ramasseur de balle est constitué comme suit :&lt;br /&gt;
* un châssis roulant, un contrôleur pour chaque paire de moteurs, un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p ;&lt;br /&gt;
* un détecteur ultrason pour éviter les collisions ;&lt;br /&gt;
* trois détecteurs de ligne pour suivre efficacement les lignes au sol ;&lt;br /&gt;
* des phototransistors infrarouges pour repérer la balle infrarouge ;&lt;br /&gt;
* un système de pince basé sur un servo-moteur pour capturer la balle ;&lt;br /&gt;
* un bouclier XBee pour communiquer avec les autres acteurs.&lt;br /&gt;
&lt;br /&gt;
Le robot ramasseur de balle peut être activé soit manuellement par un bouton, soit sur réception d'un message lui étant destiné.&lt;br /&gt;
&lt;br /&gt;
Une fois activé le robot se promène en changeant de direction jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et la capture avec sa pince. &lt;br /&gt;
&lt;br /&gt;
Le robot se remet à se promener comme précédemment et s'arrête lorsqu'il détecte une ligne de la croix centrale. Il remonte cette ligne dans un sens et il analyse la prochaine intersection avec ses trois capteurs. S'il ne se trouve pas au centre du terrain il se retourne pour remonter la ligne dans l'autre sens. Une fois au centre du terrain, il lâche la balle et va se garer.&lt;br /&gt;
&lt;br /&gt;
Il ne lui reste alors plus qu'à envoyer un message aux robots joueurs pour qu'ils jouent une manche. &lt;br /&gt;
&lt;br /&gt;
Pour détecter les lignes les capteurs doivent être séparés de l'épaisseur des lignes au sol. Ainsi quand le capteur du milieu perdra la ligne, un des deux autres capteurs devrait l'apercevoir. De cette façon le robot saura par quel coté il perd la ligne et pourra tourner en sens inverse pour la retrouver sur le capteur central. Vous pouvez utiliser le temps entre deux pertes de ligne pour avoir une idée de la courbure de la ligne et lancer le robot dans une trajectoire courbe plutôt que rectiligne.&lt;br /&gt;
&lt;br /&gt;
Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision.&lt;br /&gt;
&lt;br /&gt;
Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas.&lt;br /&gt;
&lt;br /&gt;
== Robot compétiteur ==&lt;br /&gt;
&lt;br /&gt;
Un robot compétiteur est constitué comme suit :&lt;br /&gt;
* un châssis roulant, un contrôleur pour chaque paire de moteurs, un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p ;&lt;br /&gt;
* un détecteur ultrason pour ne pas rentrer dans les obstacles ;&lt;br /&gt;
* trois détecteurs de ligne pour suivre efficacement les lignes au sol ;&lt;br /&gt;
* des phototransistors infrarouges pour repérer la balle infrarouge et les buts ;&lt;br /&gt;
* un système de pince basé sur un servo-moteur pour capturer la balle ;&lt;br /&gt;
* un système d'éjection de la balle pour tirer ;&lt;br /&gt;
* un bouclier XBee pour communiquer avec les autres acteurs.&lt;br /&gt;
&lt;br /&gt;
Un robot compétiteur est activé par un message du robot ramasseur de balle. Il sort alors de son garage pour rentrer sur le terrain.&lt;br /&gt;
&lt;br /&gt;
Une fois sur le terrain le robot s'y promène en changeant de direction lorsqu'il arrive en limite du terrain jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et tente de la capturer avec sa pince. Il demande alors au but adverse d'activer sa balise IR.&lt;br /&gt;
&lt;br /&gt;
Le robot tourne jusqu'à trouver le but adverse et tire pour envoyer la balle dans le but. Après avoir tiré, il demande au but adverse d'arrêter sa balise IR.&lt;br /&gt;
&lt;br /&gt;
Si le robot reçoit un message signalant qu'un but a été marqué, il va se garer. Pour cela il parcourt le terrain jusqu'à trouver une ligne de l'aire de jeu. Il suit cette ligne jusqu'à trouver l'intersection qui correspond à son garage.&lt;br /&gt;
&lt;br /&gt;
Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision.&lt;br /&gt;
&lt;br /&gt;
Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas ou bois. Quand la pince se referme elle doit occulter la balle pour que le robot puisse détecter la balise du but.&lt;br /&gt;
&lt;br /&gt;
== Robot télécommandé ==&lt;br /&gt;
&lt;br /&gt;
Un robot télécommandé est un robot compétiteur dirigé par un humain. Il est donc constitué des composants d'un robot compétiteur moins les phototransistors. En effet la balle est repérée par l'opérateur humain au travers d'une caméra. Le contrôle du robot se fait via une Raspberry Pi dotée d'une interface WiFi transformée en point d'accès et hébergeant un site Web. L'opérateur contrôle le robot en utilisant un smartphone connecté sur le point d'accès.&lt;br /&gt;
&lt;br /&gt;
Un robot télécommandé ne peut avancer que sur réception du message du robot ramasseur de balle.&lt;br /&gt;
&lt;br /&gt;
L'opérateur peut diriger le robot à sa guise dans le terrain mais le robot interdit toute sortie de ce terrain. L'opérateur peut capturer la balle avec la pince et la lancer dans le but adverse. La procédure d'activation de la balise du but adverse n'est donc jamais déclenchée contrairement à ce qui se passe avec un robot compétiteur.&lt;br /&gt;
&lt;br /&gt;
La pince doit être réalisée comme pour un robot compétiteur. La contrainte d'occulter les signaux IR de la balle n'est pas utile ici.&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 !! Tâches !! Page&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 1&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-1|Binôme 1 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-2|Binôme 2 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-3|Binôme 3 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-4|Binôme 4 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-5|Binôme 5 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-6|Binôme 6 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-7|Binôme 7 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-8|Binôme 8 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-9|Binôme 9 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 10&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-10|Binôme 10 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 11&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-11|Binôme 11 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2016-2017&amp;diff=7135</id>
		<title>BE 2016-2017</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2016-2017&amp;diff=7135"/>
				<updated>2017-01-04T12:33:19Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Matériel à votre disposition pour les robots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectif à atteindre =&lt;br /&gt;
&lt;br /&gt;
Comme pour les saisons précédentes vous devez concevoir des robots pour concourir dans un jeu de balle. &lt;br /&gt;
&lt;br /&gt;
Le terrain peut être marqué comme sur le schéma ci-dessous. Durant une manche les joueurs ne peuvent pas sortir du cadre principal. Les bords du terrain sont inclinés pour que la balle revienne vers la zone de jeu. Les lignes permettent de marquer le centre du terrain et les zones de garage des robots. Les robots devront pouvoir distinguer deux types de lignes, peu importe les couleurs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:terrain2.png|500px|thumb|center|Schéma du terrain]]&lt;br /&gt;
&lt;br /&gt;
Une manche est décomposée en plusieurs étapes :&lt;br /&gt;
* Le robot ramasseur est invité à sortir de son garage pour aller positionner la balle au centre du terrain. Cette invitation peut se faire après un but ou manuellement en début de partie. Quand la balle est correctement placée le robot ramasseur se gare et prévient les robots joueurs que le jeu peut démarrer.&lt;br /&gt;
* Les deux robots joueurs sortent de leur garage et vont chercher la balle en la repérant par leurs capteurs infrarouges. Si un robot capture la balle il demande au but adverse d'allumer sa balise infrarouge. Il essaye alors d'envoyer la balle dans le but. Au moment du tir, il permet au but d'éteindre sa balise.&lt;br /&gt;
* Soit le tir est raté et les robots continuent à tenter d'attraper la balle.&lt;br /&gt;
* Soit le tir est réussi et le but concerné le confirme, les robots joueurs vont se garer et le robot ramasseur entre en action. Les buts sont chargés d'afficher le score. Pour qu'un but soit marqué, il suffit que la balle rentre dans le but. Le sol du but est en pente pour que la balle ressorte automatiquement.&lt;br /&gt;
&lt;br /&gt;
Une partie est constituée de plusieurs manches.&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition pour les robots =&lt;br /&gt;
&lt;br /&gt;
Votre robot doit pouvoir réaliser les actions suivantes :&lt;br /&gt;
* avancer et reculer le tout en tournant éventuellement ;&lt;br /&gt;
* repérer une ligne au sol ;&lt;br /&gt;
* détecter des signaux infra-rouges pulsés ;&lt;br /&gt;
* détecter des obstacles sur son chemin ;&lt;br /&gt;
* communiquer avec les autres acteurs (robots et buts) ;&lt;br /&gt;
* capturer et déplacer une balle.&lt;br /&gt;
&lt;br /&gt;
Nous vous imposons de construire ce robot à base de micro-contrôleur ATMega. Par contre nous vous laissons le choix de la variante. Les possibilités sont classées de la plus simple à la plus complexe.&lt;br /&gt;
* Vous pouvez partir d'un des robots construits lors de la saison précédente. Ces robots ne sont pas forcément totalement fonctionnels mais les parties déjà réalisées peuvent vous faire gagner du temps que vous pourrez consacrer à la programmation du robot.&lt;br /&gt;
* Vous pouvez construire un robot à partir d'un des deux chassis proposés, utiliser un Arduino Mega et concevoir un bouclier pour cet Arduino comportant des emplacements pour les divers composants nécessaires (contrôleur moteur, détecteur ultrason, détecteur de lignes, etc).&lt;br /&gt;
* Vous pouvez aussi fabriquer votre propre chassis avec deux plaques de plexiglass et y intégrer deux moto-réducteurs et leurs roues ainsi qu'une roue folle. Pour le micro-contrôleur vous pouvez aussi vous passer de l'Arduino Mega et concevoir votre propre circuit intégré à base de micro-contrôleur ATMega328p et d'un contrôleur moteurs TB6612FNG. Même les détecteurs de lignes peuvent être construits à partir de composants électroniques de base. Seul le sonar ultrason est trop complexe pour être conçu à partir des composants de base.&lt;br /&gt;
* Si vous aimez les défis vous pouvez aussi construire un robot avec un moto-réducteur de meilleure qualité et avec une carte électronique réalisée uniquement avec des composants électroniques de surface.&lt;br /&gt;
&lt;br /&gt;
Les montages photographiques ci-dessous présente les éléments permettant de construire un robot sans trop souffrir et les composants de base pour construire un robot plus optimisé et personnalisé.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot-kit.jpg|300px|thumb|left|Chassis, Arduino Mega, détecteur couleur, sonar, contrôleur moteurs, phototransistor, modem ZigBee, détecteur de ligne]]&lt;br /&gt;
[[Fichier:robot-composant.jpg|300px|thumb|right|Moto-réducteurs et roues, micro-contrôleurs ATMega328p et quartz, contrôleur de moteurs TB6612FNG, interrupteur optique QRE1113]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Des dispositifs mécaniques, comme une pince, peuvent être réalisés en utilisant des servo-moteurs et des pièces en plexiglas ou en contreplaqué découpés à l'aide de la découpeuse laser du [http://www.fabricarium.fr/mediawiki-1.23.5/index.php?title=Accueil Fabricarium].&lt;br /&gt;
Pour les fixations vous avez de la visserie (vis, écrous, entretoises).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:servo.jpg|Servo-moteur&lt;br /&gt;
Fichier:pince-robot.jpg|Exemple de pince&lt;br /&gt;
Fichier:entretoises.jpg|Visserie&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition pour les buts =&lt;br /&gt;
&lt;br /&gt;
Les buts sont constitués :&lt;br /&gt;
* d'une cage de but à réaliser, par exemple, en plexiglas avec la découpeuse laser ;&lt;br /&gt;
* d'une balise infrarouge pouvant être activée à la demande ;&lt;br /&gt;
* d'un détecteur de passage de la balle (par phototransistor par exemple) ;&lt;br /&gt;
* d'un afficheur 7 segments pour le score.&lt;br /&gt;
&lt;br /&gt;
Consultez les bureau d'études de 2014/2015 pour comprendre comment réaliser une balise infrarouge avec un micro-contrôleur. Cette année la fonctionnalité de clignotement de la balise à basse fréquence n'est pas nécessaire. Par contre il vous est demandé de gérer un afficheur 7 segments et un bouclier de communication par radio. Le micro-contrôleur de l'an passé, l'ATtiny85, ne sera pas suffisant pour gérer toutes les fonctionnalités du but de cette année. Vous utiliserez donc un Arduino Uno.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:LEDIR.jpg|LED infrarouge (940 nm)&lt;br /&gt;
Fichier:2n3904.png|Transistor pour LED&lt;br /&gt;
Fichier:Arduino Uno R3.jpg|Arduino Uno&lt;br /&gt;
Fichier:Serie7segments.png|Afficheur 7 segments&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Logiciels à utiliser =&lt;br /&gt;
&lt;br /&gt;
Pour concevoir un schéma propre du câblage de votre robot vous pouvez utiliser [http://fritzing.org/home/ fritzing]. Tous les composants de votre robot ne sont pas modélisés dans fritzing. Voici une liste de composants supplémentaires mis au points par des élèves IMA de la promotion 2017 (Julie Debock, Hugo Vandenbunder et Sylvain Verdonck) et revus par les encadrants du bureau d'études :&lt;br /&gt;
* détecteur ultrason : [[Fichier:UltrasonicSensor_HCSR04.zip]]&lt;br /&gt;
* détecteur de ligne : [[Fichier:LineSensor_Sparkfun.zip]]&lt;br /&gt;
* capteur de couleurs : [[Fichier:ColorSensor_Adafruit_TCS34725.zip]]&lt;br /&gt;
* contrôleur de moteurs : [[Fichier:MotorDriver_Pololu_md08a.zip]]&lt;br /&gt;
&lt;br /&gt;
Pour la conception de circuits imprimés nous vous recommandons le logiciel [http://www.cadsoftusa.com/download-eagle/freeware/ eagle] ou le précédent.&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 solidwork est très utilisé. Vous pouvez tenter [http://www.freecadweb.org/?lang=fr_FR freeCAD] si vous cherchez un logiciel plus libre.&lt;br /&gt;
&lt;br /&gt;
Pour le développement avec les plateformes Arduino, utilisez l'environnement du même nom. Si la programmation C++ vous fait peur, n'hésitez pas à ajouter l'outil [http://sourceforge.net/projects/ardublock/ ardublock] à cet environnement.&lt;br /&gt;
&lt;br /&gt;
Pour vous aider dans la conception des circuits imprimés nous vous proposons des circuits modélisés avec fritzing que vous pourrez adapter à vos robots. Ces circuits ont été ébauchés par les élèves IMA sus-cités et lourdement modifiés par les encadrants du bureau d'études.&lt;br /&gt;
&lt;br /&gt;
Un premier circuit vous donne un exemple de circuit pour les capteurs de l'avant du robot : [[Fichier:robot_capteur.zip]].&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:robot_capteur_bb.png|Capteurs : plaque d'essai&lt;br /&gt;
Fichier:robot_capteur_schem.png|Capteurs : schéma&lt;br /&gt;
Fichier:robot_capteur_pcb.png|Capteurs : circuit imprimé&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second circuit de type bouclier Arduino permet d'éviter tous les câbles entre l'Arduino et les contrôleurs de moteurs : [[Fichier:robot_bouclier.zip]]. Ce circuit est prévu pour 4 moteurs, les binômes avec des chassis bi-moteurs devront le simplifier.&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:robot_bouclier_bb.png|Bouclier : plaque d'essai&lt;br /&gt;
Fichier:robot_bouclier_schem.png|Bouclier : schéma&lt;br /&gt;
Fichier:robot_bouclier_pcb.png|Bouclier : circuit imprimé&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Répartition des tâches =&lt;br /&gt;
&lt;br /&gt;
Nous n'imposons pas de répartition rigide des tâches. Pour qu'une démonstration puisse se faire en fin de bureau d'étude il faut au moins deux robots joueurs, deux cages de buts et un robot ramasseur. Bien entendu plusieurs parties peuvent avoir lieu en même temps.&lt;br /&gt;
&lt;br /&gt;
== Fonctionnement de la cage de but ==&lt;br /&gt;
&lt;br /&gt;
Deux événements peuvent faire agir la cage de but :&lt;br /&gt;
* une balle pénètre dans la cage ;&lt;br /&gt;
* un message est envoyé à la cage par un robot.&lt;br /&gt;
&lt;br /&gt;
Pour détecter une balle entrant dans la cage, le plus simple est d'y fixer un phototransistor infrarouge avec un cache adapté pour ne détecter la balle que lorsqu'elle se trouve dans la cage.&lt;br /&gt;
&lt;br /&gt;
Lorsque que la balle est détectée il faut incrémenter le score (ce score est initialisé à zéro lors de la réinitialisation de l'Arduino). Il faut ensuite envoyer un message aux robots pour que les robots joueurs aillent se garer et que le robot ramasseur se mette en action. Le format des messages est a déterminer globalement, doit y figurer un champ destination qui permet de cibler un acteur précis et aussi un champ données pour préciser le message.&lt;br /&gt;
&lt;br /&gt;
Quand un message est envoyé spécifiquement à la cage, c'est à dire qu'elle reconnait son identifiant dans le champs destination, elle doit activer ou arrêter sa balise infrarouge. Mettons que la balise est activée si la donnée est 1 et arrêtée si la donnée est 0.&lt;br /&gt;
&lt;br /&gt;
Le câblage peut se faire en utilisant des plaques à essai ou en concevant un circuit imprimé avec le logiciel &amp;lt;tt&amp;gt;eagle&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Robot ramasseur de balle ==&lt;br /&gt;
&lt;br /&gt;
Un robot ramasseur de balle est constitué comme suit :&lt;br /&gt;
* un châssis roulant, un contrôleur pour chaque paire de moteurs, un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p ;&lt;br /&gt;
* un détecteur ultrason pour éviter les collisions ;&lt;br /&gt;
* trois détecteurs de ligne pour suivre efficacement les lignes au sol ;&lt;br /&gt;
* des phototransistors infrarouges pour repérer la balle infrarouge ;&lt;br /&gt;
* un système de pince basé sur un servo-moteur pour capturer la balle ;&lt;br /&gt;
* un bouclier XBee pour communiquer avec les autres acteurs.&lt;br /&gt;
&lt;br /&gt;
Le robot ramasseur de balle peut être activé soit manuellement par un bouton, soit sur réception d'un message lui étant destiné.&lt;br /&gt;
&lt;br /&gt;
Une fois activé le robot se promène en changeant de direction jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et la capture avec sa pince. &lt;br /&gt;
&lt;br /&gt;
Le robot se remet à se promener comme précédemment et s'arrête lorsqu'il détecte une ligne de la croix centrale. Il remonte cette ligne dans un sens et il analyse la prochaine intersection avec ses trois capteurs. S'il ne se trouve pas au centre du terrain il se retourne pour remonter la ligne dans l'autre sens. Une fois au centre du terrain, il lâche la balle et va se garer.&lt;br /&gt;
&lt;br /&gt;
Il ne lui reste alors plus qu'à envoyer un message aux robots joueurs pour qu'ils jouent une manche. &lt;br /&gt;
&lt;br /&gt;
Pour détecter les lignes les capteurs doivent être séparés de l'épaisseur des lignes au sol. Ainsi quand le capteur du milieu perdra la ligne, un des deux autres capteurs devrait l'apercevoir. De cette façon le robot saura par quel coté il perd la ligne et pourra tourner en sens inverse pour la retrouver sur le capteur central. Vous pouvez utiliser le temps entre deux pertes de ligne pour avoir une idée de la courbure de la ligne et lancer le robot dans une trajectoire courbe plutôt que rectiligne.&lt;br /&gt;
&lt;br /&gt;
Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision.&lt;br /&gt;
&lt;br /&gt;
Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas.&lt;br /&gt;
&lt;br /&gt;
== Robot compétiteur ==&lt;br /&gt;
&lt;br /&gt;
Un robot compétiteur est constitué comme suit :&lt;br /&gt;
* un châssis roulant, un contrôleur pour chaque paire de moteurs, un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p ;&lt;br /&gt;
* un détecteur ultrason pour ne pas rentrer dans les obstacles ;&lt;br /&gt;
* trois détecteurs de ligne pour suivre efficacement les lignes au sol ;&lt;br /&gt;
* des phototransistors infrarouges pour repérer la balle infrarouge et les buts ;&lt;br /&gt;
* un système de pince basé sur un servo-moteur pour capturer la balle ;&lt;br /&gt;
* un système d'éjection de la balle pour tirer ;&lt;br /&gt;
* un bouclier XBee pour communiquer avec les autres acteurs.&lt;br /&gt;
&lt;br /&gt;
Un robot compétiteur est activé par un message du robot ramasseur de balle. Il sort alors de son garage pour rentrer sur le terrain.&lt;br /&gt;
&lt;br /&gt;
Une fois sur le terrain le robot s'y promène en changeant de direction lorsqu'il arrive en limite du terrain jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et tente de la capturer avec sa pince. Il demande alors au but adverse d'activer sa balise IR.&lt;br /&gt;
&lt;br /&gt;
Le robot tourne jusqu'à trouver le but adverse et tire pour envoyer la balle dans le but. Après avoir tiré, il demande au but adverse d'arrêter sa balise IR.&lt;br /&gt;
&lt;br /&gt;
Si le robot reçoit un message signalant qu'un but a été marqué, il va se garer. Pour cela il parcourt le terrain jusqu'à trouver une ligne de l'aire de jeu. Il suit cette ligne jusqu'à trouver l'intersection qui correspond à son garage.&lt;br /&gt;
&lt;br /&gt;
Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision.&lt;br /&gt;
&lt;br /&gt;
Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas ou bois. Quand la pince se referme elle doit occulter la balle pour que le robot puisse détecter la balise du but.&lt;br /&gt;
&lt;br /&gt;
== Robot télécommandé ==&lt;br /&gt;
&lt;br /&gt;
Un robot télécommandé est un robot compétiteur dirigé par un humain. Il est donc constitué des composants d'un robot compétiteur moins les phototransistors. En effet la balle est repérée par l'opérateur humain au travers d'une caméra. Le contrôle du robot se fait via une Raspberry Pi dotée d'une interface WiFi transformée en point d'accès et hébergeant un site Web. L'opérateur contrôle le robot en utilisant un smartphone connecté sur le point d'accès.&lt;br /&gt;
&lt;br /&gt;
Un robot télécommandé ne peut avancer que sur réception du message du robot ramasseur de balle.&lt;br /&gt;
&lt;br /&gt;
L'opérateur peut diriger le robot à sa guise dans le terrain mais le robot interdit toute sortie de ce terrain. L'opérateur peut capturer la balle avec la pince et la lancer dans le but adverse. La procédure d'activation de la balise du but adverse n'est donc jamais déclenchée contrairement à ce qui se passe avec un robot compétiteur.&lt;br /&gt;
&lt;br /&gt;
La pince doit être réalisée comme pour un robot compétiteur. La contrainte d'occulter les signaux IR de la balle n'est pas utile ici.&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 !! Tâches !! Page&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 1&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-1|Binôme 1 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-2|Binôme 2 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-3|Binôme 3 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-4|Binôme 4 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-5|Binôme 5 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-6|Binôme 6 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-7|Binôme 7 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-8|Binôme 8 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-9|Binôme 9 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 10&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-10|Binôme 10 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 11&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-11|Binôme 11 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2016-2017&amp;diff=7134</id>
		<title>BE 2016-2017</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2016-2017&amp;diff=7134"/>
				<updated>2017-01-04T12:32:36Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Matériel à votre disposition pour les robots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectif à atteindre =&lt;br /&gt;
&lt;br /&gt;
Comme pour les saisons précédentes vous devez concevoir des robots pour concourir dans un jeu de balle. &lt;br /&gt;
&lt;br /&gt;
Le terrain peut être marqué comme sur le schéma ci-dessous. Durant une manche les joueurs ne peuvent pas sortir du cadre principal. Les bords du terrain sont inclinés pour que la balle revienne vers la zone de jeu. Les lignes permettent de marquer le centre du terrain et les zones de garage des robots. Les robots devront pouvoir distinguer deux types de lignes, peu importe les couleurs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:terrain2.png|500px|thumb|center|Schéma du terrain]]&lt;br /&gt;
&lt;br /&gt;
Une manche est décomposée en plusieurs étapes :&lt;br /&gt;
* Le robot ramasseur est invité à sortir de son garage pour aller positionner la balle au centre du terrain. Cette invitation peut se faire après un but ou manuellement en début de partie. Quand la balle est correctement placée le robot ramasseur se gare et prévient les robots joueurs que le jeu peut démarrer.&lt;br /&gt;
* Les deux robots joueurs sortent de leur garage et vont chercher la balle en la repérant par leurs capteurs infrarouges. Si un robot capture la balle il demande au but adverse d'allumer sa balise infrarouge. Il essaye alors d'envoyer la balle dans le but. Au moment du tir, il permet au but d'éteindre sa balise.&lt;br /&gt;
* Soit le tir est raté et les robots continuent à tenter d'attraper la balle.&lt;br /&gt;
* Soit le tir est réussi et le but concerné le confirme, les robots joueurs vont se garer et le robot ramasseur entre en action. Les buts sont chargés d'afficher le score. Pour qu'un but soit marqué, il suffit que la balle rentre dans le but. Le sol du but est en pente pour que la balle ressorte automatiquement.&lt;br /&gt;
&lt;br /&gt;
Une partie est constituée de plusieurs manches.&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition pour les robots =&lt;br /&gt;
&lt;br /&gt;
Votre robot doit pouvoir réaliser les actions suivantes :&lt;br /&gt;
* avancer et reculer le tout en tournant éventuellement ;&lt;br /&gt;
* repérer une ligne au sol ;&lt;br /&gt;
* détecter des signaux infra-rouges pulsés ;&lt;br /&gt;
* détecter des obstacles sur son chemin ;&lt;br /&gt;
* communiquer avec les autres acteurs (robots et buts) ;&lt;br /&gt;
* capturer et déplacer une balle.&lt;br /&gt;
&lt;br /&gt;
Nous vous imposons de construire ce robot à base de micro-contrôleur ATMega. Par contre nous vous laissons le choix de la variante. Les possibilités sont classées de la plus simple à la plus complexe.&lt;br /&gt;
* Vous pouvez partir d'un des robots construits lors de la saison précédente. Ces robots ne sont pas forcément totalement fonctionnels mais les parties déjà réalisées peuvent vous faire gagner du temps que vous pourrez consacrer à la programmation du robot.&lt;br /&gt;
* Vous pouvez construire un robot à partir d'un des deux chassis proposés, utiliser un Arduino Mega et concevoir un bouclier pour cet Arduino comportant des emplacements pour les divers composants nécessaires (contrôleur moteur, détecteur ultrason, détecteur de lignes, etc).&lt;br /&gt;
* Vous pouvez aussi fabriquer votre propre chassis avec deux plaques de plexiglass et y intégrer deux moto-réducteurs et leurs roues ainsi qu'une roue folle. Pour le micro-contrôleur vous pouvez aussi vous passer de l'Arduino Mega et concevoir votre propre circuit intégré à base de micro-contrôleur ATMega328p et d'un contrôleur moteurs TB6612FNG. Même les détecteurs de lignes peuvent être construits à partir de composants électroniques de base. Seul le sonar ultrason est trop complexe pour être conçu à partir des composants de base.&lt;br /&gt;
* Si vous aimez les défis vous pouvez aussi construire un robot avec un moto-réducteur de meilleure qualité et avec une carte électronique réalisée uniquement avec des composants électroniques de surface.&lt;br /&gt;
&lt;br /&gt;
Les montages photographiques ci-dessous présente les éléments permettant de construire un robot sans trop souffrir et les composants de base pour construire un robot plus optimisé et personnalisé.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot-kit.jpg|300px|thumb|left|Chassis, Arduino Mega, détecteur couleur, sonar, contrôleur moteurs, phototransistor, modem ZigBee, détecteur de ligne]]&lt;br /&gt;
[[Fichier:robot-composant.jpg|300px|thumb|right|Moto-réducteurs et roues, micro-contrôleurs ATMega328p et quartz, contrôleur de moteurs TB6612FNG, interrupteur optique QRE1113]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Des dispositifs mécaniques, comme une pince, peuvent être réalisés en utilisant des servo-moteurs et des pièces en plexiglas ou en MDF découpés à l'aide de la découpeuse laser du [http://www.fabricarium.fr/mediawiki-1.23.5/index.php?title=Accueil Fabricarium].&lt;br /&gt;
Pour les fixations vous avez de la visserie (vis, écrous, entretoises).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:servo.jpg|Servo-moteur&lt;br /&gt;
Fichier:pince-robot.jpg|Exemple de pince&lt;br /&gt;
Fichier:entretoises.jpg|Visserie&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition pour les buts =&lt;br /&gt;
&lt;br /&gt;
Les buts sont constitués :&lt;br /&gt;
* d'une cage de but à réaliser, par exemple, en plexiglas avec la découpeuse laser ;&lt;br /&gt;
* d'une balise infrarouge pouvant être activée à la demande ;&lt;br /&gt;
* d'un détecteur de passage de la balle (par phototransistor par exemple) ;&lt;br /&gt;
* d'un afficheur 7 segments pour le score.&lt;br /&gt;
&lt;br /&gt;
Consultez les bureau d'études de 2014/2015 pour comprendre comment réaliser une balise infrarouge avec un micro-contrôleur. Cette année la fonctionnalité de clignotement de la balise à basse fréquence n'est pas nécessaire. Par contre il vous est demandé de gérer un afficheur 7 segments et un bouclier de communication par radio. Le micro-contrôleur de l'an passé, l'ATtiny85, ne sera pas suffisant pour gérer toutes les fonctionnalités du but de cette année. Vous utiliserez donc un Arduino Uno.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:LEDIR.jpg|LED infrarouge (940 nm)&lt;br /&gt;
Fichier:2n3904.png|Transistor pour LED&lt;br /&gt;
Fichier:Arduino Uno R3.jpg|Arduino Uno&lt;br /&gt;
Fichier:Serie7segments.png|Afficheur 7 segments&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Logiciels à utiliser =&lt;br /&gt;
&lt;br /&gt;
Pour concevoir un schéma propre du câblage de votre robot vous pouvez utiliser [http://fritzing.org/home/ fritzing]. Tous les composants de votre robot ne sont pas modélisés dans fritzing. Voici une liste de composants supplémentaires mis au points par des élèves IMA de la promotion 2017 (Julie Debock, Hugo Vandenbunder et Sylvain Verdonck) et revus par les encadrants du bureau d'études :&lt;br /&gt;
* détecteur ultrason : [[Fichier:UltrasonicSensor_HCSR04.zip]]&lt;br /&gt;
* détecteur de ligne : [[Fichier:LineSensor_Sparkfun.zip]]&lt;br /&gt;
* capteur de couleurs : [[Fichier:ColorSensor_Adafruit_TCS34725.zip]]&lt;br /&gt;
* contrôleur de moteurs : [[Fichier:MotorDriver_Pololu_md08a.zip]]&lt;br /&gt;
&lt;br /&gt;
Pour la conception de circuits imprimés nous vous recommandons le logiciel [http://www.cadsoftusa.com/download-eagle/freeware/ eagle] ou le précédent.&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 solidwork est très utilisé. Vous pouvez tenter [http://www.freecadweb.org/?lang=fr_FR freeCAD] si vous cherchez un logiciel plus libre.&lt;br /&gt;
&lt;br /&gt;
Pour le développement avec les plateformes Arduino, utilisez l'environnement du même nom. Si la programmation C++ vous fait peur, n'hésitez pas à ajouter l'outil [http://sourceforge.net/projects/ardublock/ ardublock] à cet environnement.&lt;br /&gt;
&lt;br /&gt;
Pour vous aider dans la conception des circuits imprimés nous vous proposons des circuits modélisés avec fritzing que vous pourrez adapter à vos robots. Ces circuits ont été ébauchés par les élèves IMA sus-cités et lourdement modifiés par les encadrants du bureau d'études.&lt;br /&gt;
&lt;br /&gt;
Un premier circuit vous donne un exemple de circuit pour les capteurs de l'avant du robot : [[Fichier:robot_capteur.zip]].&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:robot_capteur_bb.png|Capteurs : plaque d'essai&lt;br /&gt;
Fichier:robot_capteur_schem.png|Capteurs : schéma&lt;br /&gt;
Fichier:robot_capteur_pcb.png|Capteurs : circuit imprimé&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second circuit de type bouclier Arduino permet d'éviter tous les câbles entre l'Arduino et les contrôleurs de moteurs : [[Fichier:robot_bouclier.zip]]. Ce circuit est prévu pour 4 moteurs, les binômes avec des chassis bi-moteurs devront le simplifier.&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:robot_bouclier_bb.png|Bouclier : plaque d'essai&lt;br /&gt;
Fichier:robot_bouclier_schem.png|Bouclier : schéma&lt;br /&gt;
Fichier:robot_bouclier_pcb.png|Bouclier : circuit imprimé&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Répartition des tâches =&lt;br /&gt;
&lt;br /&gt;
Nous n'imposons pas de répartition rigide des tâches. Pour qu'une démonstration puisse se faire en fin de bureau d'étude il faut au moins deux robots joueurs, deux cages de buts et un robot ramasseur. Bien entendu plusieurs parties peuvent avoir lieu en même temps.&lt;br /&gt;
&lt;br /&gt;
== Fonctionnement de la cage de but ==&lt;br /&gt;
&lt;br /&gt;
Deux événements peuvent faire agir la cage de but :&lt;br /&gt;
* une balle pénètre dans la cage ;&lt;br /&gt;
* un message est envoyé à la cage par un robot.&lt;br /&gt;
&lt;br /&gt;
Pour détecter une balle entrant dans la cage, le plus simple est d'y fixer un phototransistor infrarouge avec un cache adapté pour ne détecter la balle que lorsqu'elle se trouve dans la cage.&lt;br /&gt;
&lt;br /&gt;
Lorsque que la balle est détectée il faut incrémenter le score (ce score est initialisé à zéro lors de la réinitialisation de l'Arduino). Il faut ensuite envoyer un message aux robots pour que les robots joueurs aillent se garer et que le robot ramasseur se mette en action. Le format des messages est a déterminer globalement, doit y figurer un champ destination qui permet de cibler un acteur précis et aussi un champ données pour préciser le message.&lt;br /&gt;
&lt;br /&gt;
Quand un message est envoyé spécifiquement à la cage, c'est à dire qu'elle reconnait son identifiant dans le champs destination, elle doit activer ou arrêter sa balise infrarouge. Mettons que la balise est activée si la donnée est 1 et arrêtée si la donnée est 0.&lt;br /&gt;
&lt;br /&gt;
Le câblage peut se faire en utilisant des plaques à essai ou en concevant un circuit imprimé avec le logiciel &amp;lt;tt&amp;gt;eagle&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Robot ramasseur de balle ==&lt;br /&gt;
&lt;br /&gt;
Un robot ramasseur de balle est constitué comme suit :&lt;br /&gt;
* un châssis roulant, un contrôleur pour chaque paire de moteurs, un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p ;&lt;br /&gt;
* un détecteur ultrason pour éviter les collisions ;&lt;br /&gt;
* trois détecteurs de ligne pour suivre efficacement les lignes au sol ;&lt;br /&gt;
* des phototransistors infrarouges pour repérer la balle infrarouge ;&lt;br /&gt;
* un système de pince basé sur un servo-moteur pour capturer la balle ;&lt;br /&gt;
* un bouclier XBee pour communiquer avec les autres acteurs.&lt;br /&gt;
&lt;br /&gt;
Le robot ramasseur de balle peut être activé soit manuellement par un bouton, soit sur réception d'un message lui étant destiné.&lt;br /&gt;
&lt;br /&gt;
Une fois activé le robot se promène en changeant de direction jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et la capture avec sa pince. &lt;br /&gt;
&lt;br /&gt;
Le robot se remet à se promener comme précédemment et s'arrête lorsqu'il détecte une ligne de la croix centrale. Il remonte cette ligne dans un sens et il analyse la prochaine intersection avec ses trois capteurs. S'il ne se trouve pas au centre du terrain il se retourne pour remonter la ligne dans l'autre sens. Une fois au centre du terrain, il lâche la balle et va se garer.&lt;br /&gt;
&lt;br /&gt;
Il ne lui reste alors plus qu'à envoyer un message aux robots joueurs pour qu'ils jouent une manche. &lt;br /&gt;
&lt;br /&gt;
Pour détecter les lignes les capteurs doivent être séparés de l'épaisseur des lignes au sol. Ainsi quand le capteur du milieu perdra la ligne, un des deux autres capteurs devrait l'apercevoir. De cette façon le robot saura par quel coté il perd la ligne et pourra tourner en sens inverse pour la retrouver sur le capteur central. Vous pouvez utiliser le temps entre deux pertes de ligne pour avoir une idée de la courbure de la ligne et lancer le robot dans une trajectoire courbe plutôt que rectiligne.&lt;br /&gt;
&lt;br /&gt;
Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision.&lt;br /&gt;
&lt;br /&gt;
Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas.&lt;br /&gt;
&lt;br /&gt;
== Robot compétiteur ==&lt;br /&gt;
&lt;br /&gt;
Un robot compétiteur est constitué comme suit :&lt;br /&gt;
* un châssis roulant, un contrôleur pour chaque paire de moteurs, un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p ;&lt;br /&gt;
* un détecteur ultrason pour ne pas rentrer dans les obstacles ;&lt;br /&gt;
* trois détecteurs de ligne pour suivre efficacement les lignes au sol ;&lt;br /&gt;
* des phototransistors infrarouges pour repérer la balle infrarouge et les buts ;&lt;br /&gt;
* un système de pince basé sur un servo-moteur pour capturer la balle ;&lt;br /&gt;
* un système d'éjection de la balle pour tirer ;&lt;br /&gt;
* un bouclier XBee pour communiquer avec les autres acteurs.&lt;br /&gt;
&lt;br /&gt;
Un robot compétiteur est activé par un message du robot ramasseur de balle. Il sort alors de son garage pour rentrer sur le terrain.&lt;br /&gt;
&lt;br /&gt;
Une fois sur le terrain le robot s'y promène en changeant de direction lorsqu'il arrive en limite du terrain jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et tente de la capturer avec sa pince. Il demande alors au but adverse d'activer sa balise IR.&lt;br /&gt;
&lt;br /&gt;
Le robot tourne jusqu'à trouver le but adverse et tire pour envoyer la balle dans le but. Après avoir tiré, il demande au but adverse d'arrêter sa balise IR.&lt;br /&gt;
&lt;br /&gt;
Si le robot reçoit un message signalant qu'un but a été marqué, il va se garer. Pour cela il parcourt le terrain jusqu'à trouver une ligne de l'aire de jeu. Il suit cette ligne jusqu'à trouver l'intersection qui correspond à son garage.&lt;br /&gt;
&lt;br /&gt;
Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision.&lt;br /&gt;
&lt;br /&gt;
Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas ou bois. Quand la pince se referme elle doit occulter la balle pour que le robot puisse détecter la balise du but.&lt;br /&gt;
&lt;br /&gt;
== Robot télécommandé ==&lt;br /&gt;
&lt;br /&gt;
Un robot télécommandé est un robot compétiteur dirigé par un humain. Il est donc constitué des composants d'un robot compétiteur moins les phototransistors. En effet la balle est repérée par l'opérateur humain au travers d'une caméra. Le contrôle du robot se fait via une Raspberry Pi dotée d'une interface WiFi transformée en point d'accès et hébergeant un site Web. L'opérateur contrôle le robot en utilisant un smartphone connecté sur le point d'accès.&lt;br /&gt;
&lt;br /&gt;
Un robot télécommandé ne peut avancer que sur réception du message du robot ramasseur de balle.&lt;br /&gt;
&lt;br /&gt;
L'opérateur peut diriger le robot à sa guise dans le terrain mais le robot interdit toute sortie de ce terrain. L'opérateur peut capturer la balle avec la pince et la lancer dans le but adverse. La procédure d'activation de la balise du but adverse n'est donc jamais déclenchée contrairement à ce qui se passe avec un robot compétiteur.&lt;br /&gt;
&lt;br /&gt;
La pince doit être réalisée comme pour un robot compétiteur. La contrainte d'occulter les signaux IR de la balle n'est pas utile ici.&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 !! Tâches !! Page&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 1&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-1|Binôme 1 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-2|Binôme 2 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-3|Binôme 3 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-4|Binôme 4 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-5|Binôme 5 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-6|Binôme 6 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-7|Binôme 7 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-8|Binôme 8 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-9|Binôme 9 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 10&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-10|Binôme 10 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 11&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-11|Binôme 11 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2016-2017&amp;diff=7133</id>
		<title>BE 2016-2017</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2016-2017&amp;diff=7133"/>
				<updated>2017-01-04T12:30:50Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : /* Objectif à atteindre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectif à atteindre =&lt;br /&gt;
&lt;br /&gt;
Comme pour les saisons précédentes vous devez concevoir des robots pour concourir dans un jeu de balle. &lt;br /&gt;
&lt;br /&gt;
Le terrain peut être marqué comme sur le schéma ci-dessous. Durant une manche les joueurs ne peuvent pas sortir du cadre principal. Les bords du terrain sont inclinés pour que la balle revienne vers la zone de jeu. Les lignes permettent de marquer le centre du terrain et les zones de garage des robots. Les robots devront pouvoir distinguer deux types de lignes, peu importe les couleurs.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:terrain2.png|500px|thumb|center|Schéma du terrain]]&lt;br /&gt;
&lt;br /&gt;
Une manche est décomposée en plusieurs étapes :&lt;br /&gt;
* Le robot ramasseur est invité à sortir de son garage pour aller positionner la balle au centre du terrain. Cette invitation peut se faire après un but ou manuellement en début de partie. Quand la balle est correctement placée le robot ramasseur se gare et prévient les robots joueurs que le jeu peut démarrer.&lt;br /&gt;
* Les deux robots joueurs sortent de leur garage et vont chercher la balle en la repérant par leurs capteurs infrarouges. Si un robot capture la balle il demande au but adverse d'allumer sa balise infrarouge. Il essaye alors d'envoyer la balle dans le but. Au moment du tir, il permet au but d'éteindre sa balise.&lt;br /&gt;
* Soit le tir est raté et les robots continuent à tenter d'attraper la balle.&lt;br /&gt;
* Soit le tir est réussi et le but concerné le confirme, les robots joueurs vont se garer et le robot ramasseur entre en action. Les buts sont chargés d'afficher le score. Pour qu'un but soit marqué, il suffit que la balle rentre dans le but. Le sol du but est en pente pour que la balle ressorte automatiquement.&lt;br /&gt;
&lt;br /&gt;
Une partie est constituée de plusieurs manches.&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition pour les robots =&lt;br /&gt;
&lt;br /&gt;
Votre robot doit pouvoir réaliser les actions suivantes :&lt;br /&gt;
* avancer et reculer le tout en tournant éventuellement ;&lt;br /&gt;
* repérer une ligne au sol ;&lt;br /&gt;
* détecter des signaux infra-rouges pulsés ;&lt;br /&gt;
* détecter des obstacles sur son chemin ;&lt;br /&gt;
* communiquer avec les autres acteurs (robots et buts) ;&lt;br /&gt;
* capturer et déplacer une balle.&lt;br /&gt;
&lt;br /&gt;
Nous vous imposons de construire ce robot à base de micro-contrôleur ATMega. Par contre nous vous laissons le choix de la variante. Les possibilités sont classées de la plus simple à la plus complexe.&lt;br /&gt;
* Vous pouvez partir d'un des robots construits lors de la saison précédente. Ces robots ne sont pas forcément totalement fonctionnels mais les parties déjà réalisées peuvent vous faire gagner du temps que vous pourrez consacrer à la programmation du robot.&lt;br /&gt;
* Vous pouvez construire un robot à partir d'un des deux chassis proposés, utiliser un Arduino Mega et concevoir un bouclier pour cet Arduino comportant des emplacements pour les divers composants nécessaires (contrôleur moteur, détecteur ultrason, détecteur de lignes, etc).&lt;br /&gt;
* Vous pouvez aussi fabriquer votre propre chassis avec deux plaques de plexiglass et y intégrer deux moto-réducteurs et leurs roues ainsi qu'une roue folle. Pour le micro-contrôleur vous pouvez aussi vous passer de l'Arduino Mega et concevoir votre propre circuit intégré à base de micro-contrôleur ATMega328p et de contrôleur moteurs TB6612FNG. Même les détecteurs de lignes peuvent être construits à partir de composants électroniques de base. Seul le sonar ultrason est trop complexe pour être conçu à partir des composants de base.&lt;br /&gt;
* Si vous aimez les défis vous pouvez aussi construire un robot avec un moto-réducteur de meilleure qualité et avec une carte électronique réalisée uniquement avec des composants électroniques de surface.&lt;br /&gt;
&lt;br /&gt;
Les montages photographiques ci-dessous présente les éléments permettant de construire un robot sans trop souffrir et les composants de base pour construire un robot plus optimisé et personnalisé.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot-kit.jpg|300px|thumb|left|Chassis, Arduino Mega, détecteur couleur, sonar, contrôleur moteurs, phototransistor, modem ZigBee, détecteur de ligne]]&lt;br /&gt;
[[Fichier:robot-composant.jpg|300px|thumb|right|Moto-réducteurs et roues, micro-contrôleurs ATMega328p et quartz, contrôleur de moteurs TB6612FNG, interrupteur optique QRE1113]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Des dispositifs mécaniques, comme une pince, peuvent être réalisés en utilisant des servo-moteurs et des pièces en plexiglas ou en MDF découpés à l'aide de la découpeuse laser du [http://www.fabricarium.fr/mediawiki-1.23.5/index.php?title=Accueil Fabricarium].&lt;br /&gt;
Pour les fixations vous avez de la visserie (vis, écrous, entretoises).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:servo.jpg|Servo-moteur&lt;br /&gt;
Fichier:pince-robot.jpg|Exemple de pince&lt;br /&gt;
Fichier:entretoises.jpg|Visserie&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition pour les buts =&lt;br /&gt;
&lt;br /&gt;
Les buts sont constitués :&lt;br /&gt;
* d'une cage de but à réaliser, par exemple, en plexiglas avec la découpeuse laser ;&lt;br /&gt;
* d'une balise infrarouge pouvant être activée à la demande ;&lt;br /&gt;
* d'un détecteur de passage de la balle (par phototransistor par exemple) ;&lt;br /&gt;
* d'un afficheur 7 segments pour le score.&lt;br /&gt;
&lt;br /&gt;
Consultez les bureau d'études de 2014/2015 pour comprendre comment réaliser une balise infrarouge avec un micro-contrôleur. Cette année la fonctionnalité de clignotement de la balise à basse fréquence n'est pas nécessaire. Par contre il vous est demandé de gérer un afficheur 7 segments et un bouclier de communication par radio. Le micro-contrôleur de l'an passé, l'ATtiny85, ne sera pas suffisant pour gérer toutes les fonctionnalités du but de cette année. Vous utiliserez donc un Arduino Uno.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:LEDIR.jpg|LED infrarouge (940 nm)&lt;br /&gt;
Fichier:2n3904.png|Transistor pour LED&lt;br /&gt;
Fichier:Arduino Uno R3.jpg|Arduino Uno&lt;br /&gt;
Fichier:Serie7segments.png|Afficheur 7 segments&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Logiciels à utiliser =&lt;br /&gt;
&lt;br /&gt;
Pour concevoir un schéma propre du câblage de votre robot vous pouvez utiliser [http://fritzing.org/home/ fritzing]. Tous les composants de votre robot ne sont pas modélisés dans fritzing. Voici une liste de composants supplémentaires mis au points par des élèves IMA de la promotion 2017 (Julie Debock, Hugo Vandenbunder et Sylvain Verdonck) et revus par les encadrants du bureau d'études :&lt;br /&gt;
* détecteur ultrason : [[Fichier:UltrasonicSensor_HCSR04.zip]]&lt;br /&gt;
* détecteur de ligne : [[Fichier:LineSensor_Sparkfun.zip]]&lt;br /&gt;
* capteur de couleurs : [[Fichier:ColorSensor_Adafruit_TCS34725.zip]]&lt;br /&gt;
* contrôleur de moteurs : [[Fichier:MotorDriver_Pololu_md08a.zip]]&lt;br /&gt;
&lt;br /&gt;
Pour la conception de circuits imprimés nous vous recommandons le logiciel [http://www.cadsoftusa.com/download-eagle/freeware/ eagle] ou le précédent.&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 solidwork est très utilisé. Vous pouvez tenter [http://www.freecadweb.org/?lang=fr_FR freeCAD] si vous cherchez un logiciel plus libre.&lt;br /&gt;
&lt;br /&gt;
Pour le développement avec les plateformes Arduino, utilisez l'environnement du même nom. Si la programmation C++ vous fait peur, n'hésitez pas à ajouter l'outil [http://sourceforge.net/projects/ardublock/ ardublock] à cet environnement.&lt;br /&gt;
&lt;br /&gt;
Pour vous aider dans la conception des circuits imprimés nous vous proposons des circuits modélisés avec fritzing que vous pourrez adapter à vos robots. Ces circuits ont été ébauchés par les élèves IMA sus-cités et lourdement modifiés par les encadrants du bureau d'études.&lt;br /&gt;
&lt;br /&gt;
Un premier circuit vous donne un exemple de circuit pour les capteurs de l'avant du robot : [[Fichier:robot_capteur.zip]].&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:robot_capteur_bb.png|Capteurs : plaque d'essai&lt;br /&gt;
Fichier:robot_capteur_schem.png|Capteurs : schéma&lt;br /&gt;
Fichier:robot_capteur_pcb.png|Capteurs : circuit imprimé&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second circuit de type bouclier Arduino permet d'éviter tous les câbles entre l'Arduino et les contrôleurs de moteurs : [[Fichier:robot_bouclier.zip]]. Ce circuit est prévu pour 4 moteurs, les binômes avec des chassis bi-moteurs devront le simplifier.&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;margin: 0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
Fichier:robot_bouclier_bb.png|Bouclier : plaque d'essai&lt;br /&gt;
Fichier:robot_bouclier_schem.png|Bouclier : schéma&lt;br /&gt;
Fichier:robot_bouclier_pcb.png|Bouclier : circuit imprimé&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Répartition des tâches =&lt;br /&gt;
&lt;br /&gt;
Nous n'imposons pas de répartition rigide des tâches. Pour qu'une démonstration puisse se faire en fin de bureau d'étude il faut au moins deux robots joueurs, deux cages de buts et un robot ramasseur. Bien entendu plusieurs parties peuvent avoir lieu en même temps.&lt;br /&gt;
&lt;br /&gt;
== Fonctionnement de la cage de but ==&lt;br /&gt;
&lt;br /&gt;
Deux événements peuvent faire agir la cage de but :&lt;br /&gt;
* une balle pénètre dans la cage ;&lt;br /&gt;
* un message est envoyé à la cage par un robot.&lt;br /&gt;
&lt;br /&gt;
Pour détecter une balle entrant dans la cage, le plus simple est d'y fixer un phototransistor infrarouge avec un cache adapté pour ne détecter la balle que lorsqu'elle se trouve dans la cage.&lt;br /&gt;
&lt;br /&gt;
Lorsque que la balle est détectée il faut incrémenter le score (ce score est initialisé à zéro lors de la réinitialisation de l'Arduino). Il faut ensuite envoyer un message aux robots pour que les robots joueurs aillent se garer et que le robot ramasseur se mette en action. Le format des messages est a déterminer globalement, doit y figurer un champ destination qui permet de cibler un acteur précis et aussi un champ données pour préciser le message.&lt;br /&gt;
&lt;br /&gt;
Quand un message est envoyé spécifiquement à la cage, c'est à dire qu'elle reconnait son identifiant dans le champs destination, elle doit activer ou arrêter sa balise infrarouge. Mettons que la balise est activée si la donnée est 1 et arrêtée si la donnée est 0.&lt;br /&gt;
&lt;br /&gt;
Le câblage peut se faire en utilisant des plaques à essai ou en concevant un circuit imprimé avec le logiciel &amp;lt;tt&amp;gt;eagle&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Robot ramasseur de balle ==&lt;br /&gt;
&lt;br /&gt;
Un robot ramasseur de balle est constitué comme suit :&lt;br /&gt;
* un châssis roulant, un contrôleur pour chaque paire de moteurs, un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p ;&lt;br /&gt;
* un détecteur ultrason pour éviter les collisions ;&lt;br /&gt;
* trois détecteurs de ligne pour suivre efficacement les lignes au sol ;&lt;br /&gt;
* des phototransistors infrarouges pour repérer la balle infrarouge ;&lt;br /&gt;
* un système de pince basé sur un servo-moteur pour capturer la balle ;&lt;br /&gt;
* un bouclier XBee pour communiquer avec les autres acteurs.&lt;br /&gt;
&lt;br /&gt;
Le robot ramasseur de balle peut être activé soit manuellement par un bouton, soit sur réception d'un message lui étant destiné.&lt;br /&gt;
&lt;br /&gt;
Une fois activé le robot se promène en changeant de direction jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et la capture avec sa pince. &lt;br /&gt;
&lt;br /&gt;
Le robot se remet à se promener comme précédemment et s'arrête lorsqu'il détecte une ligne de la croix centrale. Il remonte cette ligne dans un sens et il analyse la prochaine intersection avec ses trois capteurs. S'il ne se trouve pas au centre du terrain il se retourne pour remonter la ligne dans l'autre sens. Une fois au centre du terrain, il lâche la balle et va se garer.&lt;br /&gt;
&lt;br /&gt;
Il ne lui reste alors plus qu'à envoyer un message aux robots joueurs pour qu'ils jouent une manche. &lt;br /&gt;
&lt;br /&gt;
Pour détecter les lignes les capteurs doivent être séparés de l'épaisseur des lignes au sol. Ainsi quand le capteur du milieu perdra la ligne, un des deux autres capteurs devrait l'apercevoir. De cette façon le robot saura par quel coté il perd la ligne et pourra tourner en sens inverse pour la retrouver sur le capteur central. Vous pouvez utiliser le temps entre deux pertes de ligne pour avoir une idée de la courbure de la ligne et lancer le robot dans une trajectoire courbe plutôt que rectiligne.&lt;br /&gt;
&lt;br /&gt;
Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision.&lt;br /&gt;
&lt;br /&gt;
Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas.&lt;br /&gt;
&lt;br /&gt;
== Robot compétiteur ==&lt;br /&gt;
&lt;br /&gt;
Un robot compétiteur est constitué comme suit :&lt;br /&gt;
* un châssis roulant, un contrôleur pour chaque paire de moteurs, un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p ;&lt;br /&gt;
* un détecteur ultrason pour ne pas rentrer dans les obstacles ;&lt;br /&gt;
* trois détecteurs de ligne pour suivre efficacement les lignes au sol ;&lt;br /&gt;
* des phototransistors infrarouges pour repérer la balle infrarouge et les buts ;&lt;br /&gt;
* un système de pince basé sur un servo-moteur pour capturer la balle ;&lt;br /&gt;
* un système d'éjection de la balle pour tirer ;&lt;br /&gt;
* un bouclier XBee pour communiquer avec les autres acteurs.&lt;br /&gt;
&lt;br /&gt;
Un robot compétiteur est activé par un message du robot ramasseur de balle. Il sort alors de son garage pour rentrer sur le terrain.&lt;br /&gt;
&lt;br /&gt;
Une fois sur le terrain le robot s'y promène en changeant de direction lorsqu'il arrive en limite du terrain jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et tente de la capturer avec sa pince. Il demande alors au but adverse d'activer sa balise IR.&lt;br /&gt;
&lt;br /&gt;
Le robot tourne jusqu'à trouver le but adverse et tire pour envoyer la balle dans le but. Après avoir tiré, il demande au but adverse d'arrêter sa balise IR.&lt;br /&gt;
&lt;br /&gt;
Si le robot reçoit un message signalant qu'un but a été marqué, il va se garer. Pour cela il parcourt le terrain jusqu'à trouver une ligne de l'aire de jeu. Il suit cette ligne jusqu'à trouver l'intersection qui correspond à son garage.&lt;br /&gt;
&lt;br /&gt;
Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision.&lt;br /&gt;
&lt;br /&gt;
Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas ou bois. Quand la pince se referme elle doit occulter la balle pour que le robot puisse détecter la balise du but.&lt;br /&gt;
&lt;br /&gt;
== Robot télécommandé ==&lt;br /&gt;
&lt;br /&gt;
Un robot télécommandé est un robot compétiteur dirigé par un humain. Il est donc constitué des composants d'un robot compétiteur moins les phototransistors. En effet la balle est repérée par l'opérateur humain au travers d'une caméra. Le contrôle du robot se fait via une Raspberry Pi dotée d'une interface WiFi transformée en point d'accès et hébergeant un site Web. L'opérateur contrôle le robot en utilisant un smartphone connecté sur le point d'accès.&lt;br /&gt;
&lt;br /&gt;
Un robot télécommandé ne peut avancer que sur réception du message du robot ramasseur de balle.&lt;br /&gt;
&lt;br /&gt;
L'opérateur peut diriger le robot à sa guise dans le terrain mais le robot interdit toute sortie de ce terrain. L'opérateur peut capturer la balle avec la pince et la lancer dans le but adverse. La procédure d'activation de la balise du but adverse n'est donc jamais déclenchée contrairement à ce qui se passe avec un robot compétiteur.&lt;br /&gt;
&lt;br /&gt;
La pince doit être réalisée comme pour un robot compétiteur. La contrainte d'occulter les signaux IR de la balle n'est pas utile ici.&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 !! Tâches !! Page&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 1&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-1|Binôme 1 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 2&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-2|Binôme 2 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 3&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-3|Binôme 3 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 4&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-4|Binôme 4 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 5&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-5|Binôme 5 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 6&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-6|Binôme 6 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 7&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-7|Binôme 7 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 8&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-8|Binôme 8 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 9&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-9|Binôme 9 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 10&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-10|Binôme 10 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
| Binôme 11&lt;br /&gt;
| Prénom1 Nom1 / Prénom2 Nom2&lt;br /&gt;
| Type de robot&lt;br /&gt;
| [[Binome2016-11|Binôme 11 2016/2017]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2015-1&amp;diff=7112</id>
		<title>Discussion:Binome2015-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Discussion:Binome2015-1&amp;diff=7112"/>
				<updated>2016-05-21T08:16:14Z</updated>
		
		<summary type="html">&lt;p&gt;Aboe : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Travail&lt;br /&gt;
Sans conteste du travail avec de nombreuses heures passées hors séances.&lt;br /&gt;
Création d'un composant sous Fritzing.&lt;br /&gt;
Des efforts importants pour résoudre les problèmes lors de la fabrication du robot.&lt;br /&gt;
Un résultat décevant mais les efforts mis en œuvre sont irréprochables.&lt;br /&gt;
&lt;br /&gt;
* Wiki&lt;br /&gt;
Wiki de type chronologique très complet.&lt;br /&gt;
Mise à jour assez régulière. Assez bien illustré.&lt;br /&gt;
Rédaction assez télégraphique mais dans un français correct. Pas mal de coquilles dans les dernière entrées.&lt;br /&gt;
&lt;br /&gt;
* Vidéo&lt;br /&gt;
Pas de démonstration dans la vidéo car les élèves espéraient pouvoir modifier leurs robot pour avoir un résultat plus probant.&lt;br /&gt;
&lt;br /&gt;
* Conclusion&lt;br /&gt;
Très bon travail. Le Wiki donne bien la mesure de ce travail. Dommage que le robot n'ait pas été fonctionnel. Dommage aussi qu'il n'y ait pas de démonstration vidéo.&lt;br /&gt;
&lt;br /&gt;
Note : 17/20.&lt;/div&gt;</summary>
		<author><name>Aboe</name></author>	</entry>

	</feed>