Bonjour qui peux m'aider sur un logiciel pour faire une architecture IoT qui dispoqe de module feux trocilor

Bonjour qui peux m’aider sur un logiciel pour faire une architecture IoT qui dispoqe de module feux trocilor

We apologize for not understanding the project you need. We recommend the following projects to see if they suit your requirements:

je veux juste savoir le logiciel que vous utiliser pour faire vos circuit svp

Fritzing is commonly used to create circuit diagrams (wiring diagrams).
It is suitable for beginners and provides an intuitive drag-and-drop interface.
It is often used to produce wiring diagrams for projects involving Arduino, Raspberry Pi, and more.

Merci mais j’ai vu que certains capteurs comme le module feux tricolores n’existent pas sur la liste. j’ai pratiquement le meme circuit sauf que j’ai connecté directement le FRID sur la carte MEGA. Peux-tu m’aider svp ?
Voici mon code.

#include <SPI.h>
#include <MFRC522.h>

// Déclaration des broches pour le module RFID
#define RST_PIN 49
#define SS_PIN 53
MFRC522 rfid(SS_PIN, RST_PIN);

// UID autorisés
byte uidAutorise1 = {0x93, 0xB2, 0xC2, 0x10}; // UID feu 1
byte uidAutorise2 = {0xD3, 0xF4, 0x87, 0x9D}; // UID feu 4 (à remplacer par ton vrai UID)

// Broches des feux
const int redPins[4] = {8, 11, A0, A3};
const int yellowPins[4] = {9, 12, A1, A4};
const int greenPins[4] = {10, 13, A2, A5};

// Capteurs ultrasoniques
const int trigPins[4] = {7, 5, 3, A6};
const int echoPins[4] = {6, 4, 2, A7};

// FIFO véhicules
int fileAttente[4] = {-1, -1, -1, -1};
int tailleFile = 0;

// Priorité RFID
bool rfidPrioriteActive = false;
unsigned long rfidStartTime = 0;
const unsigned long rfidDuree = 10000;
int feuPrioritaire = -1; // 0 pour feu 1, 3 pour feu 4

// Proximité
const int seuil = 7;

// Automatique
bool phase13 = true;
unsigned long dernierCycleAuto = 0;
const unsigned long dureeCycleAuto = 5000;

void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();

for (int i = 0; i < 4; i++) {
pinMode(redPins[i], OUTPUT);
pinMode(yellowPins[i], OUTPUT);
pinMode(greenPins[i], OUTPUT);
pinMode(trigPins[i], OUTPUT);
pinMode(echoPins[i], INPUT);
}

eteindreTousFeux();
}

void eteindreTousFeux() {
for (int i = 0; i < 4; i++) {
digitalWrite(redPins[i], LOW);
digitalWrite(yellowPins[i], LOW);
digitalWrite(greenPins[i], LOW);
}
}

void allumerFeu(int id, String couleur) {
digitalWrite(redPins[id], LOW);
digitalWrite(yellowPins[id], LOW);
digitalWrite(greenPins[id], LOW);

if (couleur == “ROUGE”) digitalWrite(redPins[id], HIGH);
else if (couleur == “JAUNE”) digitalWrite(yellowPins[id], HIGH);
else if (couleur == “VERT”) digitalWrite(greenPins[id], HIGH);
}

int mesurerDistance(int trig, int echo) {
digitalWrite(trig, LOW); delayMicroseconds(2);
digitalWrite(trig, HIGH); delayMicroseconds(10);
digitalWrite(trig, LOW);
long duree = pulseIn(echo, HIGH, 30000);
if (duree == 0) return -1;
return duree * 0.034 / 2;
}

int verifierCarteAutorisee() {
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return -1;
bool match1 = true, match2 = true;
for (byte i = 0; i < 4; i++) {
if (rfid.uid.uidByte[i] != uidAutorise1[i]) match1 = false;
if (rfid.uid.uidByte[i] != uidAutorise2[i]) match2 = false;
}
rfid.PICC_HaltA();
if (match1) return 0; // feu 1
if (match2) return 3; // feu 4
return -1;
}

void gererPrioriteRFID() {
if (!rfidPrioriteActive) {
int feu = verifierCarteAutorisee();
if (feu != -1) {
Serial.print(":unlocked: Carte RFID autorisée détectée pour feu ");
Serial.println(feu + 1);
rfidStartTime = millis();
rfidPrioriteActive = true;
feuPrioritaire = feu;
eteindreTousFeux();
allumerFeu(feu, “VERT”);
for (int i = 0; i < 4; i++) {
if (i != feu) allumerFeu(i, “ROUGE”);
}
return;
}
}

if (rfidPrioriteActive) {
if (millis() - rfidStartTime < rfidDuree) {
eteindreTousFeux();
allumerFeu(feuPrioritaire, “VERT”);
for (int i = 0; i < 4; i++) {
if (i != feuPrioritaire) allumerFeu(i, “ROUGE”);
}
} else {
eteindreTousFeux();
rfidPrioriteActive = false;
feuPrioritaire = -1;
Serial.println(“:white_check_mark: Fin priorité RFID.”);
}
}
}

bool estDansFile(int id) {
for (int i = 0; i < tailleFile; i++) {
if (fileAttente[i] == id) return true;
}
return false;
}

void ajouterFile(int id) {
if (!estDansFile(id) && tailleFile < 4) {
fileAttente[tailleFile++] = id;
}
}

void gererFIFO() {
if (tailleFile == 0) return;
int feu = fileAttente[0];

// :red_circle: Met tous les autres feux au rouge avant d’activer le feu concerné
for (int i = 0; i < 4; i++) {
if (i != feu) {
allumerFeu(i, “ROUGE”);
}
}

Serial.print(":vertical_traffic_light: FIFO - Feu "); Serial.println(feu + 1);
allumerFeu(feu, “VERT”);
delay(5000);

allumerFeu(feu, “JAUNE”);
delay(1000);

allumerFeu(feu, “ROUGE”);
delay(500);

for (int i = 1; i < tailleFile; i++) fileAttente[i - 1] = fileAttente[i];
tailleFile–;
}

void modeAutomatique() {
if (phase13) {
allumerFeu(0, “VERT”);
allumerFeu(2, “VERT”);
allumerFeu(1, “ROUGE”);
allumerFeu(3, “ROUGE”);
} else {
allumerFeu(1, “VERT”);
allumerFeu(3, “VERT”);
allumerFeu(0, “ROUGE”);
allumerFeu(2, “ROUGE”);
}

delay(6000);

if (phase13) {
allumerFeu(0, “JAUNE”);
allumerFeu(2, “JAUNE”);
} else {
allumerFeu(1, “JAUNE”);
allumerFeu(3, “JAUNE”);
}

delay(1000);
phase13 = !phase13;
dernierCycleAuto = millis();
}

void loop() {
gererPrioriteRFID();
if (rfidPrioriteActive) return;

bool vehiculeDetecte = false;
for (int i = 0; i < 4; i++) {
int d = mesurerDistance(trigPins[i], echoPins[i]);
if (d != -1 && d < seuil) {
ajouterFile(i);
vehiculeDetecte = true;
}
}

if (vehiculeDetecte) {
gererFIFO();
} else {
modeAutomatique();
}
}

(attachments)

Thank you for your trust in us! Since the code and hardware solutions you are using are not our company’s products and involve custom development, we are unable to provide you with a complete circuit schematic directly. For reasons related to technical support and intellectual property, we typically only provide supporting schematics and technical documents for our official products.

D’accord. Je comprends bien, vraiment merci beaucoup, c’est très gentil.

Mon seul souci, c’est que je n’arrive pas à trouver le module feu tricolore sur Fritzing et j’ai vu que vous l’avez fait, ou bien tu peuxm’aider pour que je puisse l’intégrer. SVP

The traffic light module was created by us in Inkscape, and it is not available in Fritzing. We have uploaded the Fritzing schematic for the traffic light module; you can import it for use.

Merci beaucoup, c’est vraiment gentil.