Test Final Electronique : Système de convoyeur intelligent
Intégration des concepts électroniques pour un système de convoyeur de tri automatisé avec détection d'objets et tri par couleur.
Introduction
Ce document présente l'implémentation électronique du système de convoyeur intelligent de tri des déchets. Le système utilise une architecture modulaire avec des blocs fonctionnels distincts pour l'alimentation, la détection, le traitement et l'actuation.
Composants principaux
- Arduino Nano (ATmega328P) - Noyau du système
- ESP8266MOD-12 - Communication WiFi
- Régulateurs 7805 et 7812 - Gestion de l'alimentation
- Photorésistance + KY-008 - Détection d'objets
- Moteur pas à pas 12V + L298N - Mouvement du convoyeur
- Servomoteur - Mécanisme de tri

Fig. 1 - Vue d'ensemble du système électronique
Architecture du système
Diagramme fonctionnel

Description fonctionnelle
Alimentation
- Conversion de la tension de la batterie vers 12V pour les moteurs et 5V pour les circuits logiques avec régulation précise
Détection d'objets
- Barrière laser KY-008 avec photorésistance pour une détection précise à ±1mm
Traitement en temps réel
- Arduino Nano avec algorithme optimisé pour une latence < 5ms
Flux de données
- Le capteur envoie un signal analogique (0-5V)
- L'Arduino effectue la conversion ADC et le traitement
- Si détection positive → Commande PWM vers les actionneurs
- Transmission JSON via WiFi vers le tableau de bord
- Si pas de détection → Position neutre
Spécifications techniques
| Spécification | Valeur |
|---|---|
| Fréquence d'échantillonnage | 200Hz |
| Précision de détection | ±1mm |
| Latence de traitement | <5ms |
| Débit WiFi | 54Mbps |
Composants électroniques
Liste complète des composants
| Composant | Référence | Quantité | Fonction principale | Caractéristiques clés |
|---|---|---|---|---|
| Arduino Nano | ATmega328P | 1 | Contrôleur principal | 16MHz, 32KB Flash, 14 I/O, 8 analogiques |
| Module WiFi | ESP8266MOD-12 | 1 | Communication sans fil | 802.11 b/g/n, UART, 80mA TX |
| Régulateur 12V | LM7812 | 1 | Alimentation moteurs | 1A max, TO-220, 14-35V entrée |
| Régulateur 5V | LM7805 | 1 | Alimentation logique | 1A max, TO-220, 7-25V entrée |
| Photorésistance | GL5528 | 1 | Détection de lumière | 10kΩ (clair), 1MΩ (obscurité) |
| Module laser | KY-008 | 1 | Détection d'objets | 650nm, 5mW, 50cm portée |
| Moteur pas à pas | 28BYJ-48 | 1 | Mouvement convoyeur | 12V, 2048 pas/tour, 3.5kg.cm |
| Driver moteur | L298N | 1 | Contrôle moteur | 2A/canal, 46V max, double pont H |
| Servomoteur | SG90 | 1 | Mécanisme de tri | 180°, 4.8-6V, 0.1s/60° |
| Batterie | Li-ion 4S | 1 | Alimentation mobile | 14.8V, 2000mAh, 4A max |
Alimentation
Circuit d'alimentation principal
Fig. 3 - Schéma du circuit d'alimentation
Ce circuit fournit les tensions nécessaires pour tous les composants:
- Batterie Lithium 4S 14.8V: Source d'énergie principale
- Régulateur 7812: Stabilise la tension à 12V pour le moteur pas à pas et l'Arduino NANO via la broche VIN
- Régulateur 7805: Fournit 5V pour les capteurs et servomoteurs
- Protections:
- Diode de protection contre l'inversion de polarité
- Condensateurs de stabilisation (475µF + 100nF)
Bloc d'entrée
Schéma fonctionnel complet
Fig. 4 - Architecture complète du bloc d'entrée
Bloc de traitement
Architecture centrale
Fig. 5 - Schéma fonctionnel du bloc de traitement
Bloc de sortie
Schéma des actionneurs
Fig. 6 - Architecture des systèmes d'actuation
Schéma complet
Circuit principal
Fig. 7 - Schéma complet du système (cliquer pour agrandir)
PCB final
Disposition PCB
Fig. 8 - Disposition du PCB
Vue couche supérieure

Fig. 9 - Vue couche supérieurePCB vue avant
Prototype physique

Fig. 11 - Vue d'ensemble du prototype

Fig. 12 - Détails d'interconnexion
Implémentation logicielle
Configuration, Setup et Loop
// === Définitions des broches ===
#define START_PHOTO_PIN A1
#define STOP_PHOTO_PIN A2
#define BUTTON_PIN 12
#define LED_PIN 7
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
#include <Wire.h>
#include <Adafruit_TCS34725.h>
Adafruit_TCS34725 tcs = Adafruit_TCS34725();
const int bleu = 3;
const int rouge = 4;
const int jaune = 5;
const int vert = 6;
const int threshold = 450;
const int stepDelay = 5;
const unsigned long longPressTime = 2000;
bool systemActive = false;
unsigned long buttonPressTime = 0;
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(BUTTON_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
stopMotor();
digitalWrite(LED_PIN, LOW);
Serial.begin(9600);
Serial.println("Système prêt. En attente...");
if (tcs.begin()) {
Serial.println("Capteur TCS34725 détecté!");
tcs.setInterrupt(false);
} else {
Serial.println("Erreur capteur TCS34725");
while (1);
}
pinMode(bleu, OUTPUT);
pinMode(rouge, OUTPUT);
pinMode(jaune, OUTPUT);
pinMode(vert, OUTPUT);
digitalWrite(rouge, LOW);
digitalWrite(bleu, LOW);
digitalWrite(jaune, LOW);
digitalWrite(vert, LOW);
}
void loop() {
Serial.print("Capteur début: ");
Serial.print(analogRead(START_PHOTO_PIN));
Serial.print(" | Capteur arrêt: ");
Serial.println(analogRead(STOP_PHOTO_PIN));
handleButton();
if (!systemActive && detectStartSensor()) {
activateSystem("Détection DÉBUT → Activation");
}
if (systemActive && detectStopSensor()) {
deactivateSystem("Détection ARRÊT → Stop");
}
if (systemActive) {
stepMotor();
delay(stepDelay);
String color = detectColorTCS34725();
Serial.print("Couleur détectée: ");
Serial.println(color);
}
}Communication série avec ESP8266 pour interface web
L'Arduino Nano transmet les données de tri à l'ESP8266 NodeMCU via liaison série.
Ces données sont ensuite affichées sur le tableau de bord web, incluant :
- Les compteurs de couleurs
- La position de tri
- L'heure du dernier tri
Exemple de code Arduino
// Déclaration des compteurs globaux pour chaque couleur
int compteurRouge = 0;
int compteurVert = 0;
int compteurJaune = 0;
int compteurBleu = 0;
/**
* @brief Envoie les données de tri vers l'ESP8266 pour affichage sur l'interface web
*
* @param couleur La couleur de l'objet détecté ("Rouge", "Vert", "Jaune", "Bleu")
* @param position La position de tri de l'objet sur le convoyeur
*/
void envoyerDonneesWeb(String couleur, int position) {
// Incrémentation du compteur correspondant
if (couleur == "Rouge") {
compteurRouge++;
} else if (couleur == "Vert") {
compteurVert++;
} else if (couleur == "Jaune") {
compteurJaune++;
} else if (couleur == "Bleu") {
compteurBleu++;
}
// Construction et envoi du JSON via le port série
Serial.print("{\"couleur\":\"");
Serial.print(couleur);
Serial.print("\",\"position\":");
Serial.print(position);
Serial.print(",\"compteurs\":{\"Rouge\":");
Serial.print(compteurRouge);
Serial.print(",\"Vert\":");
Serial.print(compteurVert);
Serial.print(",\"Jaune\":");
Serial.print(compteurJaune);
Serial.print(",\"Bleu\":");
Serial.print(compteurBleu);
Serial.println("}}");
}
void setup() {
// Initialisation de la communication série
Serial.begin(9600);
}
void loop() {
// Exemple de test : envoi d'une couleur et position toutes les 5 secondes
envoyerDonneesWeb("Rouge", 1);
delay(5000);
}[📥 Télécharger le code complet (.rar)] (#lien)
Tests et validation
Plan de test :
- Test d'alimentation : Mesurer les tensions 12V, 5V et 3.3V en charge
- Test de détection : Vérifier la détection d'objets à différentes distances
- Test de couleurs : Valider l'identification des 4 couleurs
- Test moteur : Vérifier le mouvement précis du convoyeur
- Test de tri : Valider le mécanisme de tri pour chaque couleur
- Test WiFi : Vérifier la transmission de données vers l'interface web
Vidéo de démonstration
Voir la vidéo de fonctionnement complet du systèmeVideo elecTest de détection
Téléchargements
Conclusion
Résumé technique
Le système électronique répond aux exigences du projet :
- Détection fiable des objets et des couleurs
- Contrôle précis des actionneurs
- Communication stable avec l'interface web
- Autonomie suffisante (>3 heures)
Perspectives futures
Améliorations possibles :
- Ajout de batterie de secours
- Intégration de capteurs supplémentaires
- Optimisation de la consommation d'énergie
- Version complètement sans fil