<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://projets-se.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mrabia</id>
	<title>projets-se.plil.fr - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://projets-se.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mrabia"/>
	<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php/Sp%C3%A9cial:Contributions/Mrabia"/>
	<updated>2026-05-14T05:53:23Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7738</id>
		<title>SE3Groupe2024-6</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7738"/>
		<updated>2025-03-26T11:19:15Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : /* Carte électronique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Programmateur AVR ===&lt;br /&gt;
&lt;br /&gt;
TUTO : https://rex.plil.fr/Enseignement/Systeme/Systeme.PSE/systeme063.html&lt;br /&gt;
&lt;br /&gt;
== Carte électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Schématique ===&lt;br /&gt;
&lt;br /&gt;
schéma électrique :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2025-03-26 12-07-01.png|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Routage ===&lt;br /&gt;
[[Fichier:Screenshot 2025-03-26 12-11-38.png|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fichier KiCad ===&lt;br /&gt;
&lt;br /&gt;
== Programmation ==&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;br /&gt;
&lt;br /&gt;
== Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Archive GIT ===&lt;br /&gt;
&lt;br /&gt;
=== Autres rendus ===&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7736</id>
		<title>SE3Groupe2024-6</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7736"/>
		<updated>2025-03-26T11:18:44Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : /* Carte électronique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Programmateur AVR ===&lt;br /&gt;
&lt;br /&gt;
TUTO : https://rex.plil.fr/Enseignement/Systeme/Systeme.PSE/systeme063.html&lt;br /&gt;
&lt;br /&gt;
== Carte électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Schématique ===&lt;br /&gt;
&lt;br /&gt;
schéma électrique :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2025-03-26 12-07-01.png|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Routage ===&lt;br /&gt;
[[Fichier:Screenshot 2025-03-26 12-11-38.png|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Réalisation ===&lt;br /&gt;
&lt;br /&gt;
== Programmation ==&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;br /&gt;
&lt;br /&gt;
== Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Archive GIT ===&lt;br /&gt;
&lt;br /&gt;
=== Autres rendus ===&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7735</id>
		<title>SE3Groupe2024-6</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7735"/>
		<updated>2025-03-26T11:18:23Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : /* Routage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Programmateur AVR ===&lt;br /&gt;
&lt;br /&gt;
TUTO : https://rex.plil.fr/Enseignement/Systeme/Systeme.PSE/systeme063.html&lt;br /&gt;
&lt;br /&gt;
== Carte électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Schématique ===&lt;br /&gt;
&lt;br /&gt;
schéma électrique :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2025-03-26 12-07-01.png|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Routage ===&lt;br /&gt;
[[Fichier:Screenshot 2025-03-26 12-11-38.png|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
=== Réalisation ===&lt;br /&gt;
&lt;br /&gt;
== Programmation ==&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;br /&gt;
&lt;br /&gt;
== Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Archive GIT ===&lt;br /&gt;
&lt;br /&gt;
=== Autres rendus ===&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Screenshot_2025-03-26_12-11-38.png&amp;diff=7734</id>
		<title>Fichier:Screenshot 2025-03-26 12-11-38.png</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Screenshot_2025-03-26_12-11-38.png&amp;diff=7734"/>
		<updated>2025-03-26T11:18:14Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;View-3d&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7732</id>
		<title>SE3Groupe2024-6</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7732"/>
		<updated>2025-03-26T11:14:16Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : /* Carte électronique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Programmateur AVR ===&lt;br /&gt;
&lt;br /&gt;
TUTO : https://rex.plil.fr/Enseignement/Systeme/Systeme.PSE/systeme063.html&lt;br /&gt;
&lt;br /&gt;
== Carte électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Schématique ===&lt;br /&gt;
&lt;br /&gt;
schéma électrique :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2025-03-26 12-07-01.png|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Routage ===&lt;br /&gt;
&lt;br /&gt;
=== Réalisation ===&lt;br /&gt;
&lt;br /&gt;
== Programmation ==&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;br /&gt;
&lt;br /&gt;
== Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Archive GIT ===&lt;br /&gt;
&lt;br /&gt;
=== Autres rendus ===&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7731</id>
		<title>SE3Groupe2024-6</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7731"/>
		<updated>2025-03-26T11:14:10Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : /* Carte électronique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Programmateur AVR ===&lt;br /&gt;
&lt;br /&gt;
TUTO : https://rex.plil.fr/Enseignement/Systeme/Systeme.PSE/systeme063.html&lt;br /&gt;
&lt;br /&gt;
== Carte électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Schématique ===&lt;br /&gt;
&lt;br /&gt;
schéma électrique :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2025-03-26 12-07-01.png|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Routage ===&lt;br /&gt;
&lt;br /&gt;
=== Réalisation ===&lt;br /&gt;
&lt;br /&gt;
== Programmation ==&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;br /&gt;
&lt;br /&gt;
== Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Archive GIT ===&lt;br /&gt;
&lt;br /&gt;
=== Autres rendus ===&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7730</id>
		<title>SE3Groupe2024-6</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7730"/>
		<updated>2025-03-26T11:13:58Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : /* Carte électronique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Programmateur AVR ===&lt;br /&gt;
&lt;br /&gt;
TUTO : https://rex.plil.fr/Enseignement/Systeme/Systeme.PSE/systeme063.html&lt;br /&gt;
&lt;br /&gt;
== Carte électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Schématique ===&lt;br /&gt;
&lt;br /&gt;
schéma électrique :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2025-03-26 12-07-01.png|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Routage ===&lt;br /&gt;
&lt;br /&gt;
=== Réalisation ===&lt;br /&gt;
&lt;br /&gt;
== Programmation ==&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;br /&gt;
&lt;br /&gt;
== Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Archive GIT ===&lt;br /&gt;
&lt;br /&gt;
=== Autres rendus ===&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7729</id>
		<title>SE3Groupe2024-6</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7729"/>
		<updated>2025-03-26T11:13:47Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : /* Schématique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Programmateur AVR ===&lt;br /&gt;
&lt;br /&gt;
TUTO : https://rex.plil.fr/Enseignement/Systeme/Systeme.PSE/systeme063.html&lt;br /&gt;
&lt;br /&gt;
== Carte électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Schématique ===&lt;br /&gt;
&lt;br /&gt;
schéma électrique :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2025-03-26 12-07-01.png|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
=== Routage ===&lt;br /&gt;
&lt;br /&gt;
=== Réalisation ===&lt;br /&gt;
&lt;br /&gt;
== Programmation ==&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;br /&gt;
&lt;br /&gt;
== Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Archive GIT ===&lt;br /&gt;
&lt;br /&gt;
=== Autres rendus ===&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Screenshot_2025-03-26_12-07-01.png&amp;diff=7728</id>
		<title>Fichier:Screenshot 2025-03-26 12-07-01.png</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Screenshot_2025-03-26_12-07-01.png&amp;diff=7728"/>
		<updated>2025-03-26T11:13:29Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SCHEMA&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:SE3_2024_G6_prog_PCB2.png&amp;diff=7720</id>
		<title>Fichier:SE3 2024 G6 prog PCB2.png</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:SE3_2024_G6_prog_PCB2.png&amp;diff=7720"/>
		<updated>2025-03-26T10:19:39Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7719</id>
		<title>SE3Groupe2024-6</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7719"/>
		<updated>2025-03-26T10:15:10Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : /* Schématique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Programmateur AVR ===&lt;br /&gt;
&lt;br /&gt;
TUTO : https://rex.plil.fr/Enseignement/Systeme/Systeme.PSE/systeme063.html&lt;br /&gt;
&lt;br /&gt;
== Carte électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Schématique ===&lt;br /&gt;
&lt;br /&gt;
schéma électrique :&lt;br /&gt;
&lt;br /&gt;
=== Routage ===&lt;br /&gt;
&lt;br /&gt;
=== Réalisation ===&lt;br /&gt;
&lt;br /&gt;
== Programmation ==&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;br /&gt;
&lt;br /&gt;
== Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Archive GIT ===&lt;br /&gt;
&lt;br /&gt;
=== Autres rendus ===&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7718</id>
		<title>SE3Groupe2024-6</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7718"/>
		<updated>2025-03-26T10:11:57Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : /* Programmateur AVR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Programmateur AVR ===&lt;br /&gt;
&lt;br /&gt;
TUTO : https://rex.plil.fr/Enseignement/Systeme/Systeme.PSE/systeme063.html&lt;br /&gt;
&lt;br /&gt;
== Carte électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Schématique ===&lt;br /&gt;
&lt;br /&gt;
=== Routage ===&lt;br /&gt;
&lt;br /&gt;
=== Réalisation ===&lt;br /&gt;
&lt;br /&gt;
== Programmation ==&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;br /&gt;
&lt;br /&gt;
== Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Archive GIT ===&lt;br /&gt;
&lt;br /&gt;
=== Autres rendus ===&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7717</id>
		<title>SE3Groupe2024-6</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7717"/>
		<updated>2025-03-26T10:11:13Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Programmateur AVR ===&lt;br /&gt;
&lt;br /&gt;
== Carte électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Schématique ===&lt;br /&gt;
&lt;br /&gt;
=== Routage ===&lt;br /&gt;
&lt;br /&gt;
=== Réalisation ===&lt;br /&gt;
&lt;br /&gt;
== Programmation ==&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;br /&gt;
&lt;br /&gt;
== Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Archive GIT ===&lt;br /&gt;
&lt;br /&gt;
=== Autres rendus ===&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7716</id>
		<title>SE3Groupe2024-6</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Groupe2024-6&amp;diff=7716"/>
		<updated>2025-03-26T10:10:55Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : /* Objectif */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Programmateur AVR ===&lt;br /&gt;
&lt;br /&gt;
=== Cahier des charges ===&lt;br /&gt;
&lt;br /&gt;
=== Spécification techniques ===&lt;br /&gt;
&lt;br /&gt;
== Carte électronique ==&lt;br /&gt;
&lt;br /&gt;
=== Schématique ===&lt;br /&gt;
&lt;br /&gt;
=== Routage ===&lt;br /&gt;
&lt;br /&gt;
=== Réalisation ===&lt;br /&gt;
&lt;br /&gt;
== Programmation ==&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;br /&gt;
&lt;br /&gt;
== Rendus ==&lt;br /&gt;
&lt;br /&gt;
=== Archive GIT ===&lt;br /&gt;
&lt;br /&gt;
=== Autres rendus ===&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=PSE_SE3_2024/2025&amp;diff=7715</id>
		<title>PSE SE3 2024/2025</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=PSE_SE3_2024/2025&amp;diff=7715"/>
		<updated>2025-03-26T10:09:09Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : /* Réalisations des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectif =&lt;br /&gt;
&lt;br /&gt;
Pour l'année académique 2024/2025 il est toujours demandé de réaliser un système embarqué, en vous laissant une assez grande liberté dans le type d'objet à construire.&lt;br /&gt;
&lt;br /&gt;
== Micro-contrôleur ==&lt;br /&gt;
&lt;br /&gt;
Pour éviter de trop se disperser vous allez utiliser un micro-contrôleur facile à maitriser, soit un AVR dans la gamme des micro-contrôleur avec une gestion USB intégrée. Pour éviter les problème avec les acquisitions numériques vous utiliserez un micro-contrôleur ATmega16u4, AT90USB1286 ou AT90USB1287. Ces micro-contrôleurs ont la bonne propriété de se programmer facilement via USB en utilisant le protocole DFU/USB.&lt;br /&gt;
&lt;br /&gt;
== Energie ==&lt;br /&gt;
&lt;br /&gt;
Vos cartes doivent pouvoir être alimentées de façon hybride :&lt;br /&gt;
* par un port USB, méthode utilisée pour la programmation, les tests et la configuration ;&lt;br /&gt;
* par une batterie Lithium, en mode autonome.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:puce_max1811.jpg|Puce de contrôle de charge&lt;br /&gt;
File:batteries_LiPo.jpg|Batteries 100mAh et 300mAh, connecteur molex mâle&lt;br /&gt;
File:batterie_LiPo_FQ777.jpg|Batterie 100mAh 15x20x5mm&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il est conseillé de séparer au maximum les deux alimentations, voir la seconde version de la carte de test de chargement de batterie.&lt;br /&gt;
&lt;br /&gt;
== Fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
Vos cartes doivent toutes comporter des LED commandées par le microcontrôleur. Les autres fonctionnalités peuvent être choisies dans la liste suivante (non exhaustive). Les fonctionnalités doivent être validées par un intervenant.&lt;br /&gt;
&lt;br /&gt;
* Vous pouvez partir sur le projet voiture des années passées en simplifiant l'aspect mécanique : deux moteurs pour les deux roues motrices, des roues directement enfilées sur les méplats des moteurs continus ou sur des engrenages montés en force sur l'axe des moteurs pas à pas. Le comportement de la voiture est téléchargé par une liaison USB/série et permet de spécifier une suite de commandes sur les deux moteurs et les lampes de la voiture.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
file:2023-chassis-simple-dessus.png|Chassis vu de dessus&lt;br /&gt;
file:2023-chassis-simple-cote.png|Chassis vu de coté&lt;br /&gt;
File:micro-moteur-pas-a-pas-simple.jpg|Micro-moteur pas à pas propulsion&lt;br /&gt;
File:mini-motoreducteur.jpg|Mini-moteur continu avec réducteur&lt;br /&gt;
File:pilote-moteur-TB6612FNG.png|Pilote pour le mini-moteur continu (TB6612FNG)&lt;br /&gt;
File:detecteur-proximite-OPB733.png|Puce de détection d'obstacle (OPB733)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vous pouvez partir sur un objet autonome communicant de type capteur, par exemple un capteur de température ou un micro espion. Le coté autonome est donné par la batterie, le coté communicant est à travailler à partir de la puce NRF24L01. Cette puce est une puce radio générale. Vous pouvez la tester à partir de la carte de test présenté dans la suite de ce sujet. Pour la réception des données commencez par mettre au point un récepteur à base de module basé sur un NRF24L01 et un Arduino pour lire les données sur le port série. Par la suite concevez un autre objet comme :&lt;br /&gt;
** une centrale d'affichage des données des objets communicants sur des afficheurs 7 segments, un écran LCD alphanumérique ou un écran LCD graphique ;&lt;br /&gt;
** un périphérique USB de type carte son permettant de récupérer le flux du micro espion, dans ce dernier cas attention à bien sélectionner un microcontrôleur avec un contrôleur USB adapté (voir [https://wiki-se.plil.fr/mediawiki/index.php/I2L_2023_Groupe6]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:module_nrf24L01.jpg|Module de communication 2,4Ghz&lt;br /&gt;
File:puce_nrf24L01.jpg|Puce de communication (soudure complexe)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vous pouvez tenter un objet autonome communicant de type actionneur, par exemple un haut-parleur diffusant les sons envoyés par un module radio. Là encore les sons peuvent être envoyés, dans un premier temps, par un prototype à base d'Arduino et dans un second temps par une seconde carte réalisant un périphérique USB de type audio. Dans ce dernier cas attention à bien sélectionner un microcontrôleur avec un contrôleur USB adapté (voir [https://wiki-se.plil.fr/mediawiki/index.php/I2L_2023_Groupe6]).&lt;br /&gt;
&lt;br /&gt;
* Vous pouvez aussi proposer un objet plus original, du moment qu'il respecte les contraintes décrites plus haut sur le micro-contrôleur (voir [[#Micro-contrôleur|section micro-contrôleur]]) et sur le coté hybride de l'alimentation (voir [[#Energie|section énergie]]).&lt;br /&gt;
&lt;br /&gt;
= Cartes de test =&lt;br /&gt;
&lt;br /&gt;
Présentation de cartes démontrant, chacune, une fonctionnalité éventuellement intégrable dans votre objet.&lt;br /&gt;
&lt;br /&gt;
== Test du chargeur ==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2023-ChargeurLiPo-Schema-V2.pdf|thumb|left|400px]]&lt;br /&gt;
[[Fichier:2023-ChargeurLiPo-PCB-V2.png|thumb|right|400px]]&lt;br /&gt;
&lt;br /&gt;
Les schéma et routage de la carte. Deux connecteurs USB sont utilisés : un USB A pour sa programmation et son fonctionnement USB, un USB mini pour la recharge de la batterie. Un interrupteur permet d'utiliser la LED, un autre de démarrer le microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Projet KiCAD : [[Fichier:2023-ChargeurLiPo-KiCAD-V2.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test du transmetteur radio ==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2024-Radio-Schema.pdf|thumb|left|400px]]&lt;br /&gt;
[[Fichier:2024-Radio-PCB.png|thumb|right|400px]]&lt;br /&gt;
&lt;br /&gt;
Cette carte est un transmetteur/récepteur radio générique.&lt;br /&gt;
&lt;br /&gt;
Projet KiCAD : [[Fichier:2024-Radio-KiCAD.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&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 !! Page &lt;br /&gt;
|-&lt;br /&gt;
| Groupe 1&lt;br /&gt;
| Billel CHEKLAT &amp;amp; Marin GOURVEST&lt;br /&gt;
| [[SE3Groupe2024-1|Groupe 1 2024/2025]]&lt;br /&gt;
|-&lt;br /&gt;
| Groupe 2&lt;br /&gt;
| Cédric PAYET &amp;amp; Agathe HOUDUSSE&lt;br /&gt;
| [[SE3Groupe2024-2|Groupe 2 2024/2025]]&lt;br /&gt;
|-&lt;br /&gt;
| Groupe 3&lt;br /&gt;
| Thibault DUWEZ &amp;amp; Tom MERIEN&lt;br /&gt;
| [[SE3Groupe2024-3|Groupe 3 2024/2025]]&lt;br /&gt;
|-&lt;br /&gt;
| Groupe 4&lt;br /&gt;
| Thomas DELOBELLE &amp;amp; Lilia GHAZALI&lt;br /&gt;
| [[SE3Groupe2024-4|Groupe 4 2024/2025]]&lt;br /&gt;
|-&lt;br /&gt;
| Groupe 5&lt;br /&gt;
| Aurèle VANGHELUWE &amp;amp; BIERNACKI Antonin &lt;br /&gt;
| [[SE3Groupe2024-5|Groupe 5 2024/2025]]&lt;br /&gt;
|-&lt;br /&gt;
| Groupe 6&lt;br /&gt;
| Mahmoud RABIA&lt;br /&gt;
| [[SE3Groupe2024-6|Groupe 6 2024/2025]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=PSE_SE3_2024/2025&amp;diff=7714</id>
		<title>PSE SE3 2024/2025</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=PSE_SE3_2024/2025&amp;diff=7714"/>
		<updated>2025-03-26T10:08:57Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : /* Réalisations des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Objectif =&lt;br /&gt;
&lt;br /&gt;
Pour l'année académique 2024/2025 il est toujours demandé de réaliser un système embarqué, en vous laissant une assez grande liberté dans le type d'objet à construire.&lt;br /&gt;
&lt;br /&gt;
== Micro-contrôleur ==&lt;br /&gt;
&lt;br /&gt;
Pour éviter de trop se disperser vous allez utiliser un micro-contrôleur facile à maitriser, soit un AVR dans la gamme des micro-contrôleur avec une gestion USB intégrée. Pour éviter les problème avec les acquisitions numériques vous utiliserez un micro-contrôleur ATmega16u4, AT90USB1286 ou AT90USB1287. Ces micro-contrôleurs ont la bonne propriété de se programmer facilement via USB en utilisant le protocole DFU/USB.&lt;br /&gt;
&lt;br /&gt;
== Energie ==&lt;br /&gt;
&lt;br /&gt;
Vos cartes doivent pouvoir être alimentées de façon hybride :&lt;br /&gt;
* par un port USB, méthode utilisée pour la programmation, les tests et la configuration ;&lt;br /&gt;
* par une batterie Lithium, en mode autonome.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:puce_max1811.jpg|Puce de contrôle de charge&lt;br /&gt;
File:batteries_LiPo.jpg|Batteries 100mAh et 300mAh, connecteur molex mâle&lt;br /&gt;
File:batterie_LiPo_FQ777.jpg|Batterie 100mAh 15x20x5mm&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il est conseillé de séparer au maximum les deux alimentations, voir la seconde version de la carte de test de chargement de batterie.&lt;br /&gt;
&lt;br /&gt;
== Fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
Vos cartes doivent toutes comporter des LED commandées par le microcontrôleur. Les autres fonctionnalités peuvent être choisies dans la liste suivante (non exhaustive). Les fonctionnalités doivent être validées par un intervenant.&lt;br /&gt;
&lt;br /&gt;
* Vous pouvez partir sur le projet voiture des années passées en simplifiant l'aspect mécanique : deux moteurs pour les deux roues motrices, des roues directement enfilées sur les méplats des moteurs continus ou sur des engrenages montés en force sur l'axe des moteurs pas à pas. Le comportement de la voiture est téléchargé par une liaison USB/série et permet de spécifier une suite de commandes sur les deux moteurs et les lampes de la voiture.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
file:2023-chassis-simple-dessus.png|Chassis vu de dessus&lt;br /&gt;
file:2023-chassis-simple-cote.png|Chassis vu de coté&lt;br /&gt;
File:micro-moteur-pas-a-pas-simple.jpg|Micro-moteur pas à pas propulsion&lt;br /&gt;
File:mini-motoreducteur.jpg|Mini-moteur continu avec réducteur&lt;br /&gt;
File:pilote-moteur-TB6612FNG.png|Pilote pour le mini-moteur continu (TB6612FNG)&lt;br /&gt;
File:detecteur-proximite-OPB733.png|Puce de détection d'obstacle (OPB733)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vous pouvez partir sur un objet autonome communicant de type capteur, par exemple un capteur de température ou un micro espion. Le coté autonome est donné par la batterie, le coté communicant est à travailler à partir de la puce NRF24L01. Cette puce est une puce radio générale. Vous pouvez la tester à partir de la carte de test présenté dans la suite de ce sujet. Pour la réception des données commencez par mettre au point un récepteur à base de module basé sur un NRF24L01 et un Arduino pour lire les données sur le port série. Par la suite concevez un autre objet comme :&lt;br /&gt;
** une centrale d'affichage des données des objets communicants sur des afficheurs 7 segments, un écran LCD alphanumérique ou un écran LCD graphique ;&lt;br /&gt;
** un périphérique USB de type carte son permettant de récupérer le flux du micro espion, dans ce dernier cas attention à bien sélectionner un microcontrôleur avec un contrôleur USB adapté (voir [https://wiki-se.plil.fr/mediawiki/index.php/I2L_2023_Groupe6]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:module_nrf24L01.jpg|Module de communication 2,4Ghz&lt;br /&gt;
File:puce_nrf24L01.jpg|Puce de communication (soudure complexe)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vous pouvez tenter un objet autonome communicant de type actionneur, par exemple un haut-parleur diffusant les sons envoyés par un module radio. Là encore les sons peuvent être envoyés, dans un premier temps, par un prototype à base d'Arduino et dans un second temps par une seconde carte réalisant un périphérique USB de type audio. Dans ce dernier cas attention à bien sélectionner un microcontrôleur avec un contrôleur USB adapté (voir [https://wiki-se.plil.fr/mediawiki/index.php/I2L_2023_Groupe6]).&lt;br /&gt;
&lt;br /&gt;
* Vous pouvez aussi proposer un objet plus original, du moment qu'il respecte les contraintes décrites plus haut sur le micro-contrôleur (voir [[#Micro-contrôleur|section micro-contrôleur]]) et sur le coté hybride de l'alimentation (voir [[#Energie|section énergie]]).&lt;br /&gt;
&lt;br /&gt;
= Cartes de test =&lt;br /&gt;
&lt;br /&gt;
Présentation de cartes démontrant, chacune, une fonctionnalité éventuellement intégrable dans votre objet.&lt;br /&gt;
&lt;br /&gt;
== Test du chargeur ==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2023-ChargeurLiPo-Schema-V2.pdf|thumb|left|400px]]&lt;br /&gt;
[[Fichier:2023-ChargeurLiPo-PCB-V2.png|thumb|right|400px]]&lt;br /&gt;
&lt;br /&gt;
Les schéma et routage de la carte. Deux connecteurs USB sont utilisés : un USB A pour sa programmation et son fonctionnement USB, un USB mini pour la recharge de la batterie. Un interrupteur permet d'utiliser la LED, un autre de démarrer le microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Projet KiCAD : [[Fichier:2023-ChargeurLiPo-KiCAD-V2.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test du transmetteur radio ==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2024-Radio-Schema.pdf|thumb|left|400px]]&lt;br /&gt;
[[Fichier:2024-Radio-PCB.png|thumb|right|400px]]&lt;br /&gt;
&lt;br /&gt;
Cette carte est un transmetteur/récepteur radio générique.&lt;br /&gt;
&lt;br /&gt;
Projet KiCAD : [[Fichier:2024-Radio-KiCAD.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&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 !! Page &lt;br /&gt;
|-&lt;br /&gt;
| Groupe 1&lt;br /&gt;
| Billel CHEKLAT &amp;amp; Marin GOURVEST&lt;br /&gt;
| [[SE3Groupe2024-1|Groupe 1 2024/2025]]&lt;br /&gt;
|-&lt;br /&gt;
| Groupe 2&lt;br /&gt;
| Cédric PAYET &amp;amp; Agathe HOUDUSSE&lt;br /&gt;
| [[SE3Groupe2024-2|Groupe 2 2024/2025]]&lt;br /&gt;
|-&lt;br /&gt;
| Groupe 3&lt;br /&gt;
| Thibault DUWEZ &amp;amp; Tom MERIEN&lt;br /&gt;
| [[SE3Groupe2024-3|Groupe 3 2024/2025]]&lt;br /&gt;
|-&lt;br /&gt;
| Groupe 4&lt;br /&gt;
| Thomas DELOBELLE &amp;amp; Lilia GHAZALI&lt;br /&gt;
| [[SE3Groupe2024-4|Groupe 4 2024/2025]]&lt;br /&gt;
|-&lt;br /&gt;
| Groupe 5&lt;br /&gt;
| Aurèle VANGHELUWE &amp;amp; BIERNACKI Antonin &lt;br /&gt;
| [[SE3Groupe2024-5|Groupe 5 2024/2025]]&lt;br /&gt;
|-&lt;br /&gt;
| Groupe &lt;br /&gt;
| Mahmoud RABIA&lt;br /&gt;
| [[SE3Groupe2024-6|Groupe 6 2024/2025]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5885</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5885"/>
		<updated>2024-06-12T21:27:44Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|411x411px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette|468x468px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|306x306px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|361x361px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PCB : Il y avait un léger souci lié aux deux broches du microcontrolleur qui n'étaient pas connectées (ce souci a été résolu par MS REDON en liant les broches).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tes.jpg|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;'''Test moteur''' :&lt;br /&gt;
&lt;br /&gt;
Le test de la carte électronique n'a malheureusement pas été aussi concluant que prévu. Le moteur ne s'est pas mis en marche comme espéré, et le mode Device Firmware Upgrade (DFU) a cessé de fonctionner de manière inexplicable. J'ai tenté de reprogrammer le mode DFU en réinitialisant le microcontrôleur et en utilisant plusieurs méthodes pour recharger le firmware, mais cela n'a pas résolu le problème.&lt;br /&gt;
[[Fichier:Ter.jpg|gauche|vignette|511x511px|La carte soudée ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Conclusion  :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mon projet de conception et de réalisation d'une carte électronique pour une voiture électrique ne s'est pas déroulé comme prévu, mais il a été incroyablement enrichissant. C'était ma première expérience avec KiCad, un logiciel de conception de circuits imprimés (PCB), ainsi que ma première tentative de soudage de composants électroniques et de programmation d'une carte.&lt;br /&gt;
&lt;br /&gt;
Durant cette aventure, j'ai appris à utiliser KiCad pour dessiner et simuler des circuits, ce qui m'a permis de comprendre les principes de base de la conception électronique. Même si j'ai rencontré plusieurs défis techniques, comme des erreurs de routage et des problèmes de compatibilité entre les composants, chaque obstacle m'a offert une opportunité précieuse de renforcer mes compétences et de comprendre les subtilités de la conception de circuits imprimés.&lt;br /&gt;
&lt;br /&gt;
Le processus de soudage des composants sur la carte a également été une expérience formatrice. Bien que j'aie eu du mal au début avec la précision requise pour souder de petits composants, avec de la pratique et de la patience, j'ai réussi à améliorer ma technique&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5884</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5884"/>
		<updated>2024-06-12T21:27:01Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|411x411px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette|468x468px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|306x306px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|361x361px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PCB : Il y avait un léger souci lié aux deux broches du microcontrolleur qui n'étaient pas connectées (ce souci a été résolu par MS REDON en liant les broches).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tes.jpg|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;'''Test moteur''' :&lt;br /&gt;
&lt;br /&gt;
Le test de la carte électronique n'a malheureusement pas été aussi concluant que prévu. Le moteur ne s'est pas mis en marche comme espéré, et le mode Device Firmware Upgrade (DFU) a cessé de fonctionner de manière inexplicable. J'ai tenté de reprogrammer le mode DFU en réinitialisant le microcontrôleur et en utilisant plusieurs méthodes pour recharger le firmware, mais cela n'a pas résolu le problème.&lt;br /&gt;
[[Fichier:Ter.jpg|gauche|vignette|511x511px|La carte soudée ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Conclusion  :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mon projet de conception et de réalisation d'une carte électronique pour une voiture électrique ne s'est pas déroulé comme prévu, mais il a été incroyablement enrichissant. C'était ma première expérience avec KiCad, un logiciel de conception de circuits imprimés (PCB), ainsi que ma première tentative de soudage de composants électroniques et de programmation d'une carte.&lt;br /&gt;
&lt;br /&gt;
Durant cette aventure, j'ai appris à utiliser KiCad pour dessiner et simuler des circuits, ce qui m'a permis de comprendre les principes de base de la conception électronique. Même si j'ai rencontré plusieurs défis techniques, comme des erreurs de routage et des problèmes de compatibilité entre les composants, chaque obstacle m'a offert une opportunité précieuse de renforcer mes compétences et de comprendre les subtilités de la conception de circuits imprimés.&lt;br /&gt;
&lt;br /&gt;
Le processus de soudage des composants sur la carte a également été une expérience formatrice. Bien que j'aie eu du mal au début avec la précision requise pour souder de petits composants, avec de la pratique et de la patience, j'ai réussi à améliorer ma technique&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5882</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5882"/>
		<updated>2024-06-12T21:26:18Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|411x411px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette|468x468px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|306x306px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|361x361px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PCB : Il y avait un léger souci lié aux deux broches du microcontrolleur qui n'étaient pas connectées (ce souci a été résolu par MS REDON en liant les broches).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tes.jpg|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;'''Test moteur''' :&lt;br /&gt;
&lt;br /&gt;
Le test de la carte électronique n'a malheureusement pas été aussi concluant que prévu. Le moteur ne s'est pas mis en marche comme espéré, et le mode Device Firmware Upgrade (DFU) a cessé de fonctionner de manière inexplicable. J'ai tenté de reprogrammer le mode DFU en réinitialisant le microcontrôleur et en utilisant plusieurs méthodes pour recharger le firmware, mais cela n'a pas résolu le problème.&lt;br /&gt;
[[Fichier:Ter.jpg|gauche|vignette|511x511px|La carte soudée ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Conclusion  :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mon projet de conception et de réalisation d'une carte électronique pour une voiture électrique ne s'est pas déroulé comme prévu, mais il a été incroyablement enrichissant. C'était ma première expérience avec KiCad, un logiciel de conception de circuits imprimés (PCB), ainsi que ma première tentative de soudage de composants électroniques et de programmation d'une carte.&lt;br /&gt;
&lt;br /&gt;
Durant cette aventure, j'ai appris à utiliser KiCad pour dessiner et simuler des circuits, ce qui m'a permis de comprendre les principes de base de la conception électronique. Même si j'ai rencontré plusieurs défis techniques, comme des erreurs de routage et des problèmes de compatibilité entre les composants, chaque obstacle m'a offert une opportunité précieuse de renforcer mes compétences et de comprendre les subtilités de la conception de circuits imprimés.&lt;br /&gt;
&lt;br /&gt;
Le processus de soudage des composants sur la carte a également été une expérience formatrice. Bien que j'aie eu du mal au début avec la précision requise pour souder de petits composants, avec de la pratique et de la patience, j'ai réussi à améliorer ma technique&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5878</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5878"/>
		<updated>2024-06-12T21:25:03Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|411x411px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette|468x468px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|306x306px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|361x361px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PCB : Il y avait un léger souci lié aux deux broches du microcontrolleur qui n'étaient pas connectées (ce souci a été résolu par MS REDON en liant les broches).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tes.jpg|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;'''Test moteur''' :&lt;br /&gt;
&lt;br /&gt;
le le test n'a pas été aussi bon que prévu car le moteur n'a pas tourné et le mode DFU a disparu , j'ai essayé de reprogrammer le DFU mais cela n'a pas fait beaucoup de différence car le microcontrôleur ne semble pas être capable de lire les données de l'ISP.&lt;br /&gt;
[[Fichier:Ter.jpg|gauche|vignette|511x511px|La carte soudée ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Conclusion  :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mon projet de conception et de réalisation d'une carte électronique pour une voiture électrique ne s'est pas déroulé comme prévu, mais il a été incroyablement enrichissant. C'était ma première expérience avec KiCad, un logiciel de conception de circuits imprimés (PCB), ainsi que ma première tentative de soudage de composants électroniques et de programmation d'une carte.&lt;br /&gt;
&lt;br /&gt;
Durant cette aventure, j'ai appris à utiliser KiCad pour dessiner et simuler des circuits, ce qui m'a permis de comprendre les principes de base de la conception électronique. Même si j'ai rencontré plusieurs défis techniques, comme des erreurs de routage et des problèmes de compatibilité entre les composants, chaque obstacle m'a offert une opportunité précieuse de renforcer mes compétences et de comprendre les subtilités de la conception de circuits imprimés.&lt;br /&gt;
&lt;br /&gt;
Le processus de soudage des composants sur la carte a également été une expérience formatrice. Bien que j'aie eu du mal au début avec la précision requise pour souder de petits composants, avec de la pratique et de la patience, j'ai réussi à améliorer ma technique&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5875</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5875"/>
		<updated>2024-06-12T21:24:49Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|411x411px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette|468x468px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|306x306px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|361x361px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PCB : Il y avait un léger souci lié aux deux broches du microcontrolleur qui n'étaient pas connectées (ce souci a été résolu par MS REDON en liant les broches).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tes.jpg|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;'''Test moteur''' :&lt;br /&gt;
&lt;br /&gt;
le le test n'a pas été aussi bon que prévu car le moteur n'a pas tourné et le mode DFU a disparu , j'ai essayé de reprogrammer le DFU mais cela n'a pas fait beaucoup de différence car le microcontrôleur ne semble pas être capable de lire les données de l'ISP.&lt;br /&gt;
[[Fichier:Ter.jpg|gauche|vignette|511x511px|La carte soudée ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Conclusion  :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mon projet de conception et de réalisation d'une carte électronique pour une voiture électrique ne s'est pas déroulé comme prévu, mais il a été incroyablement enrichissant. C'était ma première expérience avec KiCad, un logiciel de conception de circuits imprimés (PCB), ainsi que ma première tentative de soudage de composants électroniques et de programmation d'une carte.&lt;br /&gt;
&lt;br /&gt;
Durant cette aventure, j'ai appris à utiliser KiCad pour dessiner et simuler des circuits, ce qui m'a permis de comprendre les principes de base de la conception électronique. Même si j'ai rencontré plusieurs défis techniques, comme des erreurs de routage et des problèmes de compatibilité entre les composants, chaque obstacle m'a offert une opportunité précieuse de renforcer mes compétences et de comprendre les subtilités de la conception de circuits imprimés.&lt;br /&gt;
&lt;br /&gt;
Le processus de soudage des composants sur la carte a également été une expérience formatrice. Bien que j'aie eu du mal au début avec la précision requise pour souder de petits composants, avec de la pratique et de la patience, j'ai réussi à améliorer ma technique&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5874</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5874"/>
		<updated>2024-06-12T21:24:34Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|411x411px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette|468x468px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|306x306px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|361x361px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PCB : Il y avait un léger souci lié aux deux broches du microcontrolleur qui n'étaient pas connectées (ce souci a été résolu par MS REDON en liant les broches).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tes.jpg|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;'''Test moteur''' :&lt;br /&gt;
&lt;br /&gt;
le le test n'a pas été aussi bon que prévu car le moteur n'a pas tourné et le mode DFU a disparu , j'ai essayé de reprogrammer le DFU mais cela n'a pas fait beaucoup de différence car le microcontrôleur ne semble pas être capable de lire les données de l'ISP.&lt;br /&gt;
[[Fichier:Ter.jpg|gauche|vignette|511x511px|La carte soudée ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Conclusion  :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mon projet de conception et de réalisation d'une carte électronique pour une voiture électrique ne s'est pas déroulé comme prévu, mais il a été incroyablement enrichissant. C'était ma première expérience avec KiCad, un logiciel de conception de circuits imprimés (PCB), ainsi que ma première tentative de soudage de composants électroniques et de programmation d'une carte.&lt;br /&gt;
&lt;br /&gt;
Durant cette aventure, j'ai appris à utiliser KiCad pour dessiner et simuler des circuits, ce qui m'a permis de comprendre les principes de base de la conception électronique. Même si j'ai rencontré plusieurs défis techniques, comme des erreurs de routage et des problèmes de compatibilité entre les composants, chaque obstacle m'a offert une opportunité précieuse de renforcer mes compétences et de comprendre les subtilités de la conception de circuits imprimés.&lt;br /&gt;
&lt;br /&gt;
Le processus de soudage des composants sur la carte a également été une expérience formatrice. Bien que j'aie eu du mal au début avec la précision requise pour souder de petits composants, avec de la pratique et de la patience, j'ai réussi à améliorer ma technique&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5873</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5873"/>
		<updated>2024-06-12T21:24:20Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|411x411px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette|468x468px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|306x306px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|361x361px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PCB : Il y avait un léger souci lié aux deux broches du microcontrolleur qui n'étaient pas connectées (ce souci a été résolu par MS REDON en liant les broches).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tes.jpg|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;'''Test moteur''' :&lt;br /&gt;
&lt;br /&gt;
le le test n'a pas été aussi bon que prévu car le moteur n'a pas tourné et le mode DFU a disparu , j'ai essayé de reprogrammer le DFU mais cela n'a pas fait beaucoup de différence car le microcontrôleur ne semble pas être capable de lire les données de l'ISP.&lt;br /&gt;
[[Fichier:Ter.jpg|gauche|vignette|511x511px|La carte soudée ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Conclusion  :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mon projet de conception et de réalisation d'une carte électronique pour une voiture électrique ne s'est pas déroulé comme prévu, mais il a été incroyablement enrichissant. C'était ma première expérience avec KiCad, un logiciel de conception de circuits imprimés (PCB), ainsi que ma première tentative de soudage de composants électroniques et de programmation d'une carte.&lt;br /&gt;
&lt;br /&gt;
Durant cette aventure, j'ai appris à utiliser KiCad pour dessiner et simuler des circuits, ce qui m'a permis de comprendre les principes de base de la conception électronique. Même si j'ai rencontré plusieurs défis techniques, comme des erreurs de routage et des problèmes de compatibilité entre les composants, chaque obstacle m'a offert une opportunité précieuse de renforcer mes compétences et de comprendre les subtilités de la conception de circuits imprimés.&lt;br /&gt;
&lt;br /&gt;
Le processus de soudage des composants sur la carte a également été une expérience formatrice. Bien que j'aie eu du mal au début avec la précision requise pour souder de petits composants, avec de la pratique et de la patience, j'ai réussi à améliorer ma technique&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5871</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5871"/>
		<updated>2024-06-12T21:24:04Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|411x411px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette|468x468px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|306x306px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|361x361px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PCB : Il y avait un léger souci lié aux deux broches du microcontrolleur qui n'étaient pas connectées (ce souci a été résolu par MS REDON en liant les broches).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tes.jpg|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;'''Test moteur''' :&lt;br /&gt;
&lt;br /&gt;
le le test n'a pas été aussi bon que prévu car le moteur n'a pas tourné et le mode DFU a disparu , j'ai essayé de reprogrammer le DFU mais cela n'a pas fait beaucoup de différence car le microcontrôleur ne semble pas être capable de lire les données de l'ISP.&lt;br /&gt;
[[Fichier:Ter.jpg|gauche|vignette|511x511px|La carte soudée ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Conclusion  :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mon projet de conception et de réalisation d'une carte électronique pour une voiture électrique ne s'est pas déroulé comme prévu, mais il a été incroyablement enrichissant. C'était ma première expérience avec KiCad, un logiciel de conception de circuits imprimés (PCB), ainsi que ma première tentative de soudage de composants électroniques et de programmation d'une carte.&lt;br /&gt;
&lt;br /&gt;
Durant cette aventure, j'ai appris à utiliser KiCad pour dessiner et simuler des circuits, ce qui m'a permis de comprendre les principes de base de la conception électronique. Même si j'ai rencontré plusieurs défis techniques, comme des erreurs de routage et des problèmes de compatibilité entre les composants, chaque obstacle m'a offert une opportunité précieuse de renforcer mes compétences et de comprendre les subtilités de la conception de circuits imprimés.&lt;br /&gt;
&lt;br /&gt;
Le processus de soudage des composants sur la carte a également été une expérience formatrice. Bien que j'aie eu du mal au début avec la précision requise pour souder de petits composants, avec de la pratique et de la patience, j'ai réussi à améliorer ma technique&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5869</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5869"/>
		<updated>2024-06-12T21:19:07Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|411x411px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette|468x468px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|306x306px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|361x361px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PCB : Il y avait un léger souci lié aux deux broches du microcontrolleur qui n'étaient pas connectées (ce souci a été résolu par MS REDON en liant les broches).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tes.jpg|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;'''Test moteur''' :&lt;br /&gt;
&lt;br /&gt;
le le test n'a pas été aussi bon que prévu car le moteur n'a pas tourné et le mode DFU a disparu , j'ai essayé de reprogrammer le DFU mais cela n'a pas fait beaucoup de différence car le microcontrôleur ne semble pas être capable de lire les données de l'ISP.&lt;br /&gt;
[[Fichier:Ter.jpg|gauche|vignette|511x511px|La carte soudée ]]&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5867</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5867"/>
		<updated>2024-06-12T21:18:45Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|411x411px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette|468x468px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|306x306px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|361x361px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PCB : Il y avait un léger souci lié aux deux broches du microcontrolleur qui n'étaient pas connectées (ce souci a été résolu par MS REDON en liant les broches).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tes.jpg|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;'''Test moteur''' :&lt;br /&gt;
&lt;br /&gt;
le le test n'a pas été aussi bon que prévu car le moteur n'a pas tourné et le mode DFU a disparu , j'ai essayé de reprogrammer le DFU mais cela n'a pas fait beaucoup de différence car le microcontrôleur ne semble pas être capable de lire les données de l'ISP.&lt;br /&gt;
[[Fichier:Ter.jpg|gauche|vignette|511x511px|La carte soudée ]]&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Tes.jpg&amp;diff=5866</id>
		<title>Fichier:Tes.jpg</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Tes.jpg&amp;diff=5866"/>
		<updated>2024-06-12T21:18:18Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;bb&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5861</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5861"/>
		<updated>2024-06-12T21:13:27Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|411x411px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette|468x468px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|306x306px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|361x361px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;'''Test moteur''' :&lt;br /&gt;
&lt;br /&gt;
le le test n'a pas été aussi bon que prévu car le moteur n'a pas tourné et le mode DFU a disparu , j'ai essayé de reprogrammer le DFU mais cela n'a pas fait beaucoup de différence car le microcontrôleur ne semble pas être capable de lire les données de l'ISP.&lt;br /&gt;
[[Fichier:Ter.jpg|gauche|vignette|511x511px|La carte soudée ]]&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5860</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5860"/>
		<updated>2024-06-12T21:12:33Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;'''Test moteur''' :&lt;br /&gt;
&lt;br /&gt;
le le test n'a pas été aussi bon que prévu car le moteur n'a pas tourné et le mode DFU a disparu , j'ai essayé de reprogrammer le DFU mais cela n'a pas fait beaucoup de différence car le microcontrôleur ne semble pas être capable de lire les données de l'ISP.&lt;br /&gt;
[[Fichier:Ter.jpg|gauche|vignette|511x511px|La carte soudée ]]&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Ter.jpg&amp;diff=5858</id>
		<title>Fichier:Ter.jpg</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Ter.jpg&amp;diff=5858"/>
		<updated>2024-06-12T21:11:34Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;moteur souder&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5854</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5854"/>
		<updated>2024-06-12T21:05:05Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5853</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5853"/>
		<updated>2024-06-12T21:04:34Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5852</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5852"/>
		<updated>2024-06-12T21:04:06Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5850</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5850"/>
		<updated>2024-06-12T21:03:44Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
[[Fichier:Ref.jpg|centré|vignette|478x478px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Ref.jpg&amp;diff=5849</id>
		<title>Fichier:Ref.jpg</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Ref.jpg&amp;diff=5849"/>
		<updated>2024-06-12T21:03:19Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;led&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5848</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5848"/>
		<updated>2024-06-12T21:02:18Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5845</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5845"/>
		<updated>2024-06-12T20:57:20Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5844</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5844"/>
		<updated>2024-06-12T20:56:17Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    // Configurer le Timer/Counter1 pour le PWM rapide&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    // Configurer les broches de contrôle du moteur comme sorties&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    // Simuler la rotation à gauche&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    // Simuler la rotation à droite&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5843</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5843"/>
		<updated>2024-06-12T20:55:59Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    // Configurer le Timer/Counter1 pour le PWM rapide&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    // Configurer les broches de contrôle du moteur comme sorties&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    // Simuler la rotation à gauche&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    // Simuler la rotation à droite&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5841</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5841"/>
		<updated>2024-06-12T20:55:38Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''programmation du moteur :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pwm_init(void) {&lt;br /&gt;
    // Configurer le Timer/Counter1 pour le PWM rapide&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; WGM10) | (1 &amp;lt;&amp;lt; WGM12); // Mode PWM rapide 8-bit&lt;br /&gt;
    TCCR1A |= (1 &amp;lt;&amp;lt; COM1A1); // Non-inverted PWM sur OC1A (PB5)&lt;br /&gt;
    TCCR1B |= (1 &amp;lt;&amp;lt; CS11); // Prescaler de 8&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; PB5); // PB5 comme sortie (OC1A)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_pwm_duty_cycle(uint8_t duty_cycle) {&lt;br /&gt;
    OCR1A = duty_cycle; // Régler le duty cycle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_init(void) {&lt;br /&gt;
    // Configurer les broches de contrôle du moteur comme sorties&lt;br /&gt;
    DDRD |= (1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3); // PD2 (AIN2) et PD3 (AIN1) comme sorties&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD2) | (1 &amp;lt;&amp;lt; PD3)); // Initialiser à 0&lt;br /&gt;
&lt;br /&gt;
    // Configurer les broches des LED comme sorties&lt;br /&gt;
    DDRF |= (1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5); // PF0, PF1, PF4, PF5 comme sorties&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF0) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF5)); // Initialiser à 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_forward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF5); // Allumer LED1&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_backward(void) {&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF4); // Allumer LED2&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_left(void) {&lt;br /&gt;
    // Simuler la rotation à gauche&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD2); // AIN2 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD3); // AIN1 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF1); // Allumer LED3&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_turn_right(void) {&lt;br /&gt;
    // Simuler la rotation à droite&lt;br /&gt;
    PORTD |= (1 &amp;lt;&amp;lt; PD3); // AIN1 à 1&lt;br /&gt;
    PORTD &amp;amp;= ~(1 &amp;lt;&amp;lt; PD2); // AIN2 à 0&lt;br /&gt;
    PORTF |= (1 &amp;lt;&amp;lt; PF0); // Allumer LED4&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1)); // Éteindre les autres LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void motor_stop(void) {&lt;br /&gt;
    PORTD &amp;amp;= ~((1 &amp;lt;&amp;lt; PD3) | (1 &amp;lt;&amp;lt; PD2)); // AIN1 et AIN2 à 0&lt;br /&gt;
    PORTF &amp;amp;= ~((1 &amp;lt;&amp;lt; PF5) | (1 &amp;lt;&amp;lt; PF4) | (1 &amp;lt;&amp;lt; PF1) | (1 &amp;lt;&amp;lt; PF0)); // Éteindre toutes les LED&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    pwm_init();&lt;br /&gt;
    motor_init();&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        motor_forward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_backward();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_left();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_turn_right();&lt;br /&gt;
        set_pwm_duty_cycle(128); // Régler le duty cycle à 50%&lt;br /&gt;
        _delay_ms(5000); // Tourner pendant 5 secondes&lt;br /&gt;
&lt;br /&gt;
        motor_stop();&lt;br /&gt;
        _delay_ms(2000); // Attendre pendant 2 secondes&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5836</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5836"/>
		<updated>2024-06-12T20:54:07Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5835</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5835"/>
		<updated>2024-06-12T20:53:10Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5834</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5834"/>
		<updated>2024-06-12T20:52:48Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5832</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5832"/>
		<updated>2024-06-12T20:52:25Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la carte est bien détecte : en utilisant la commande &amp;quot;lsusb&amp;quot; : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-21 13-40-57.png|gauche|vignette|719x719px]]&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5829</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5829"/>
		<updated>2024-06-12T20:51:14Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Détection du mode DFU sur notre carte :''' &lt;br /&gt;
&lt;br /&gt;
Utilisation de la carte Arduino Uno afin de détecter le mode DFU :&lt;br /&gt;
&lt;br /&gt;
les commandes utilisée a l'aide l'Arduino pour programmer le bootloader :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_0.hex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;br /&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5814</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5814"/>
		<updated>2024-06-12T20:43:40Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 15-23-26.png|gauche|vignette|467x467px]]&lt;br /&gt;
[[Fichier:Screenshot 2024-05-28 14-49-55.png|centré|vignette|607x607px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Screenshot_2024-05-28_14-49-55.png&amp;diff=5813</id>
		<title>Fichier:Screenshot 2024-05-28 14-49-55.png</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Screenshot_2024-05-28_14-49-55.png&amp;diff=5813"/>
		<updated>2024-06-12T20:43:21Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;terminal&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Screenshot_2024-05-28_15-23-26.png&amp;diff=5809</id>
		<title>Fichier:Screenshot 2024-05-28 15-23-26.png</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Screenshot_2024-05-28_15-23-26.png&amp;diff=5809"/>
		<updated>2024-06-12T20:42:29Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;terminam&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Screenshot_2024-05-21_13-40-57.png&amp;diff=5804</id>
		<title>Fichier:Screenshot 2024-05-21 13-40-57.png</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=Fichier:Screenshot_2024-05-21_13-40-57.png&amp;diff=5804"/>
		<updated>2024-06-12T20:41:21Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;terminal&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
	<entry>
		<id>https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5796</id>
		<title>SE3Binome2023-9</title>
		<link rel="alternate" type="text/html" href="https://projets-se.plil.fr/mediawiki/index.php?title=SE3Binome2023-9&amp;diff=5796"/>
		<updated>2024-06-12T20:39:36Z</updated>

		<summary type="html">&lt;p&gt;Mrabia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:KIcad-Voiture.pdf|vignette|544x544px|Voiture]]&lt;br /&gt;
&lt;br /&gt;
=== 1. Objectif du Projet ===&lt;br /&gt;
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Caractéristiques Techniques ===&lt;br /&gt;
&lt;br /&gt;
==== a. Alimentation ====&lt;br /&gt;
&lt;br /&gt;
* Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.&lt;br /&gt;
* Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.&lt;br /&gt;
&lt;br /&gt;
==== b. Propulsion ====&lt;br /&gt;
&lt;br /&gt;
* Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.&lt;br /&gt;
* Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.&lt;br /&gt;
&lt;br /&gt;
==== c. Signalisation ====&lt;br /&gt;
[[Fichier:Beta.pdf|vignette|392x392px]]&lt;br /&gt;
&lt;br /&gt;
* LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Contrôle et Programmation ===&lt;br /&gt;
&lt;br /&gt;
* Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.&lt;br /&gt;
* Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SCHEMA ET COMPOSANTE :'''&lt;br /&gt;
&lt;br /&gt;
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 214038.png|alt=Batterie|vignette|296x296px|left]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Batterie LIPO.jpg|alt=Batterie|vignette|batterie LIPO|228x228px|center]]2-Microcontrôleur :&lt;br /&gt;
&lt;br /&gt;
on utilise un ATMEGA16U4 :  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 215722.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Microchip-ATMEGA16U4-AU.jpg|centré|vignette|75x75px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3-régulateur et moteur  :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220955.png|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 220513.png|centré|vignette|219x219px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4-port USB : &lt;br /&gt;
[[Fichier:10-08112019-127049L.gif|gauche|vignette]]&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221300.png|centré|vignette|275x275px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PCB :''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 221619.png|gauche|vignette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Programmateur AVR :'''&lt;br /&gt;
&lt;br /&gt;
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include&amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_PIN PF4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{  &lt;br /&gt;
  DDRF |=(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    while(1)&lt;br /&gt;
    {  &lt;br /&gt;
        PORTF |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
	PORTF &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
       _delay_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''makefile :'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
export MCU = atmega16U4&lt;br /&gt;
export TARGET_ARCH = -mmcu=$(MCU)&lt;br /&gt;
&lt;br /&gt;
export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g&lt;br /&gt;
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TARGET = display&lt;br /&gt;
TERM = /dev/ttyUSB0&lt;br /&gt;
#TERM = /dev/ttyACM0&lt;br /&gt;
CPPFLAGS = -mmcu=$(MCU)&lt;br /&gt;
PGMER = -c stk500v1 -b 57600 -P $(TERM)&lt;br /&gt;
PGMERISP = -c stk500v1 -b 115200 -P $(TERM)&lt;br /&gt;
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf&lt;br /&gt;
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)&lt;br /&gt;
&lt;br /&gt;
C_SRC = $(wildcard *.c)&lt;br /&gt;
OBJS = $(C_SRC:.c=.o)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
all: $(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
ass:$(C_SRC)&lt;br /&gt;
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&lt;br /&gt;
%.o:%.c&lt;br /&gt;
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$(TARGET).elf: $(OBJS)&lt;br /&gt;
	$(CC) $(LDFLAGS) -o $@ $(OBJS)&lt;br /&gt;
&lt;br /&gt;
$(TARGET).hex: $(TARGET).elf&lt;br /&gt;
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex&lt;br /&gt;
	avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex&lt;br /&gt;
&lt;br /&gt;
upload: $(TARGET).hex&lt;br /&gt;
	stty -F $(TERM) hupcl # reset&lt;br /&gt;
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex&lt;br /&gt;
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex&lt;br /&gt;
&lt;br /&gt;
size: $(TARGET).elf&lt;br /&gt;
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test LED :'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vid-20240528-153553 QXdwrasC.mp4|gauche|vignette]]&lt;/div&gt;</summary>
		<author><name>Mrabia</name></author>
	</entry>
</feed>