0% ont trouvé ce document utile (0 vote)
1 vues8 pages

Pfe - Feu Rouge Intelligent (Rapport, Code, Schéma, Bom)

Le projet consiste en la création d'un feu tricolore intelligent pour une maquette de carrefour à deux voies, intégrant des fonctionnalités telles que la détection de véhicules, un bouton piéton, un affichage LCD et un contrôle Bluetooth. Le document fournit une liste de matériel, un schéma de connexion, un code Arduino complet et des instructions pour la construction de la maquette. Des tests et recommandations sont également inclus pour assurer le bon fonctionnement du système.

Transféré par

ayoubboutrassit41
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
1 vues8 pages

Pfe - Feu Rouge Intelligent (Rapport, Code, Schéma, Bom)

Le projet consiste en la création d'un feu tricolore intelligent pour une maquette de carrefour à deux voies, intégrant des fonctionnalités telles que la détection de véhicules, un bouton piéton, un affichage LCD et un contrôle Bluetooth. Le document fournit une liste de matériel, un schéma de connexion, un code Arduino complet et des instructions pour la construction de la maquette. Des tests et recommandations sont également inclus pour assurer le bon fonctionnement du système.

Transféré par

ayoubboutrassit41
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

PFE — Feu Rouge Intelligent

Contenu : Liste de matériel (BOM) + Schéma de connexion + Code Arduino complet +


Instructions maquette + Plan de présentation + Tests et recommandations.

1. Résumé du projet
Un feu tricolore intelligent pour une maquette de carrefour 2 voies. Fonctionnalités implémentées : -
Cycle standard Vert/Jaune/Rouge - Détection de véhicules (HC-SR04) pour allonger/prolonger le vert -
Bouton piéton avec phase piéton dédiée - Compteur affiché sur écran LCD I2C (temps restant) - Capteur
de luminosité (LDR) pour mode nuit - Contrôle Bluetooth (HC-05) pour modes manuels/urgence - Mode
"ambulance" (bouton d'urgence)

2. Liste de matériel (BOM)


Électronique principale - 1 × Arduino UNO R3 - 3 × LED haute luminosité (Rouge, Jaune, Verte) × 2
(pour 2 directions) — ou 2 modules feux tricolores - 6 × Résistances 220 Ω (pour LEDs) - 1 × Breadboard
grande - 1 × Câbles Dupont (lots) - 1 × Module d'alimentation 5V (ou câble USB)

Détection & Entrées - 2 × HC-SR04 (capteurs ultrason) — un par voie - 2 × Boutons poussoirs (piéton +
urgence) - 1 × LDR + 10 kΩ (diviseur) pour capteur de luminosité - 1 × Buzzer actif

Affichage & Communication - 1 × Écran LCD 16x2 I2C (adresse 0x27 ou 0x3F) - 1 × Module Bluetooth
HC-05

Optionnel / Maquette - Carton plume / foam board - Mini-voitures - Tubes PVC ou pièces imprimées
pour feux - Peinture et marquages - Boîte plastique pour l’électronique

Divers - Résistances supplémentaires (10k, etc.) - Ruban adhésif, colle chaude, vis

3. Plan des connexions (schéma verbal)


Remarque : Pour la présentation, dessine ce schéma sur papier ou Fritzing. Voici le
mapping de pins recommandé :

Arduino pins (exemple) - Feu direction A (route principale) : - LED Vert A -> D2 (via 220Ω) - LED Jaune A -
> D3 - LED Rouge A -> D4

• Feu direction B (route perpendiculaire) :


• LED Vert B -> D5
• LED Jaune B -> D6

• LED Rouge B -> D7

1
• Bouton piéton -> D8 (INPUT_PULLUP)

• Bouton urgence (ambulance) -> D9 (INPUT_PULLUP)

• Buzzer -> D10 (digital ou PWM)

• HC-SR04 voie A : TRIG_A -> D11, ECHO_A -> D12

• HC-SR04 voie B : TRIG_B -> D13, ECHO_B -> A0 (analog pin used as digital input)

• LDR -> A1 (via diviseur 10k)

• LCD I2C -> SDA (A4), SCL (A5)


• HC-05 RX/TX -> Arduino TX/RX through logiciel Serial ou SoftwareSerial (RX HC05 -> D2? but D2
used). Utiliser SoftwareSerial pins D2(DRX)/D3(DTX) si disponibles.

Important : Si tu utilises beaucoup de composants, passe d'abord par des tests séparés
pour chaque module.

4. Code Arduino (complet)

// Feu Rouge Intelligent - Arduino UNO


// Matériel attendu : LEDs, HC-SR04 x2, LCD I2C, Boutons, LDR, HC-05

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>

LiquidCrystal_I2C lcd(0x27,16,2); // change address si besoin


SoftwareSerial bt(4, 5); // RX, TX (adapter si nécessaire)

// Pins LEDs
const int V_A = 2; // Vert A
const int J_A = 3; // Jaune A
const int R_A = 4; // Rouge A

const int V_B = 5; // Vert B


const int J_B = 6; // Jaune B
const int R_B = 7; // Rouge B

// Boutons
const int BTN_PEDESTRIAN = 8;
const int BTN_EMERGENCY = 9;

// Buzzer
const int BUZZER = 10;

// HC-SR04 A
const int TRIG_A = 11;

2
const int ECHO_A = 12;

// HC-SR04 B
const int TRIG_B = 13;
const int ECHO_B = A0; // utilise pin analog comme digital

// LDR
const int LDR_PIN = A1;

// Timings par défaut (modifiable)


int tVert = 8; // secondes
int tJaune = 3;
int tRouge = 10;

// Etat
bool pedestrianRequest = false;
bool emergencyMode = false;

void setup(){
// LEDs
pinMode(V_A, OUTPUT); pinMode(J_A, OUTPUT); pinMode(R_A, OUTPUT);
pinMode(V_B, OUTPUT); pinMode(J_B, OUTPUT); pinMode(R_B, OUTPUT);

// Buttons
pinMode(BTN_PEDESTRIAN, INPUT_PULLUP);
pinMode(BTN_EMERGENCY, INPUT_PULLUP);

pinMode(BUZZER, OUTPUT);

// HC-SR04 pins
pinMode(TRIG_A, OUTPUT); pinMode(ECHO_A, INPUT);
pinMode(TRIG_B, OUTPUT); pinMode(ECHO_B, INPUT);

// LCD
[Link](); [Link]();
[Link]();
[Link](0,0); [Link]("Feu Intelligent");
[Link](0,1); [Link]("Demarrage...");
delay(1000);

// Bluetooth
[Link](9600);

// initial states
allRed();
}

void loop(){
// Lire boutons
if(digitalRead(BTN_PEDESTRIAN)==LOW) { // appuyé
pedestrianRequest = true;

3
}
if(digitalRead(BTN_EMERGENCY)==LOW) {
emergencyMode = true;
}

// Lire luminosite et adapter mode nuit


int ldr = analogRead(LDR_PIN);
bool nightMode = (ldr < 300); // ajuster seuil

// Lire distance capteurs


long distA = readUltrasonic(TRIG_A, ECHO_A);
long distB = readUltrasonic(TRIG_B, ECHO_B);

// Gérer les modes prioritaires


if(emergencyMode){
handleEmergency();
emergencyMode = false; // reset après gestion
return;
}

// Prioriser voie avec véhicules


if(distA < 100 && distB >= 100){
// beaucoup de véhicules sur A
runCycle(true, nightMode, distA);
} else if(distB < 100 && distA >= 100){
runCycle(false, nightMode, distB);
} else {
// cycle alterné
runCycle(true, nightMode, distA);
runCycle(false, nightMode, distB);
}

// Gérer commandes Bluetooth


if([Link]()){
char c = [Link]();
if(c=='E') emergencyMode = true;
if(c=='P') pedestrianRequest = true;
if(c=='M') { // mode manuel: ici tu peux implémenter commandes
// TODO
}
}
}

// Fonction pour exécuter le cycle pour une voie principale (isA true => voie
A verte)
void runCycle(bool isA, bool nightMode, long dist){
int greenTime = tVert;
// si beaucoup de vehicules, augmenter vert
if(dist < 50) greenTime += 4; // ajustable

if(pedestrianRequest){

4
// si piéton demandé, réduire vert et passer à piéton avant
greenTime = min(greenTime, 6);
}

if(isA){
setLights(HIGH, LOW, LOW, LOW, LOW, HIGH); // A=vert, B=rouge
countdown(greenTime);

setLights(LOW, HIGH, LOW, LOW, LOW, HIGH); // A=jaune


countdown(tJaune);

setLights(LOW, LOW, HIGH, LOW, LOW, HIGH); // A=rouge


countdown(tRouge);
} else {
setLights(LOW, LOW, HIGH, HIGH, LOW, LOW); // B vert
countdown(greenTime);

setLights(LOW, LOW, HIGH, LOW, HIGH, LOW); // B jaune


countdown(tJaune);

setLights(LOW, LOW, HIGH, LOW, LOW, HIGH); // both red briefly


countdown(tRouge);
}

// gérer la demande piéton après la fin du cycle


if(pedestrianRequest){
runPedestrianPhase();
pedestrianRequest = false;
}
}

void runPedestrianPhase(){
// Mettre tout au rouge, allumer buzzer et message
allRed();
[Link](); [Link](0,0); [Link]("Phase pieton");
[Link](0,1); [Link]("Attendez...");
digitalWrite(BUZZER, HIGH);
delay(500);
digitalWrite(BUZZER, LOW);
delay(200);
// durée pieton
int tp = 8;
for(int i=tp;i>=0;i--){
[Link](10,1); [Link](i);
delay(1000);
}
}

void handleEmergency(){
// exemple simple : mettre voie A verte 10s
[Link](); [Link](0,0); [Link]("Mode Urgence");

5
allRed();
digitalWrite(V_A, HIGH);
for(int i=10;i>=0;i--){
[Link](10,1); [Link](i);
delay(1000);
}
allRed();
}

// Eteint toutes les leds sauf celles passées


void setLights(int VA, int JA, int RA, int VB, int JB, int RB){
digitalWrite(V_A, VA); digitalWrite(J_A, JA); digitalWrite(R_A, RA);
digitalWrite(V_B, VB); digitalWrite(J_B, JB); digitalWrite(R_B, RB);
}

void allRed(){
digitalWrite(V_A, LOW); digitalWrite(J_A, LOW); digitalWrite(R_A, HIGH);
digitalWrite(V_B, LOW); digitalWrite(J_B, LOW); digitalWrite(R_B, HIGH);
}

void countdown(int sec){


for(int i=sec;i>0;i--){
[Link]();
[Link](0,0); [Link]("Feu: ");
[Link](0,1); [Link]("Temps:"); [Link](i);
delay(1000);
}
}

long readUltrasonic(int trigPin, int echoPin){


digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH, 30000); // timeout
long distance = duration / 58; // cm
if(distance==0) distance = 300; // si aucune echo
return distance;
}

Notes sur le code : - Adapte les pins Bluetooth SoftwareSerial selon ton montage. -
Ajuste les seuils de distance et temps à la maquette (distances en cm).

5. Schéma électrique / conseils d'assemblage


1. Connecte chaque LED à la pin assignée via une résistance 220Ω vers la masse.
2. Les boutons en INPUT_PULLUP : relient un côté au GND et l'autre au pin.
3. HC-SR04 trig sur pin OUTPUT, echo sur INPUT. Ne pas oublier le timeout de pulseIn.

6
4. LDR en diviseur : LDR -> +5V, noeud -> A1, autre côté du noeud -> 10k -> GND.
5. LCD I2C : SDA -> A4, SCL -> A5 (sur UNO). Assure-toi de l'adresse I2C.
6. HC-05 : utiliser SoftwareSerial sur pins non utilisées et respecter niveaux (HC-05 fonctionne en 5V
TTL).

6. Construction de la maquette (étapes)


1. Découper le plateau de foam-board pour représenter 2 routes perpendiculaires.
2. Peindre la route en noir, dessiner marquages et passage piétons.
3. Fixer les tubes pour feux et insérer LEDs (ou utiliser petits modules).
4. Organiser l’électronique dans une boîte sous la maquette, câbler proprement.
5. Coller petites voitures et éléments de décor.

7. Tests et validation
• Tester chaque composant séparément (LED, capteur, écran, bouton).
• Tester la logique : lancer le script, vérifier que la priorité suit la détection.
• Ajuster les temps et seuils de distance.
• Faire une démonstration : mode normal, demande piéton, mode urgence, contrôle Bluetooth.

8. Plan de présentation pour la soutenance (slides recommandés)


1. Titre + équipe + encadrant
2. Problématique & objectifs
3. Cahier des charges
4. Architecture système (schéma)
5. Liste matériel (BOM)
6. Schéma de câblage et photos de la maquette
7. Démonstration vidéo / live
8. Tests & résultats
9. Difficultés rencontrées
10. Conclusion & perspectives

9. Fichiers que je peux te fournir maintenant


• Rapport formaté (PDF) contenant tout ce qui précède + images et schémas.
• Fichiers sources : code .ino, schéma Fritzing (si tu veux que je le génère en image texte), liste de
courses prête à l'emploi.

10. Remarques finales


• Si tu veux, je peux aussi :
• adapter le code pour écran 7 segments au lieu du LCD

7
• simplifier pour une version minimaliste (1 voie)
• générer un fichier PDF prêt à télécharger

Bonne chance ! Dis-moi si tu veux que je : - Génère le PDF maintenant (je peux créer le PDF à partir du
document), - Prépare le fichier .ino téléchargeable, - ou si tu veux que j’ajuste des pins / durées.

Document généré automatiquement pour ton PFE — modifie ou demande des compléments si besoin.

Vous aimerez peut-être aussi