Skip to content
UCAO-TECH Team

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

Vue d'ensemble du système électronique

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


Architecture du système

Diagramme fonctionnel

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

  1. Le capteur envoie un signal analogique (0-5V)
  2. L'Arduino effectue la conversion ADC et le traitement
  3. Si détection positive → Commande PWM vers les actionneurs
  4. Transmission JSON via WiFi vers le tableau de bord
  5. Si pas de détection → Position neutre

Spécifications techniques

SpécificationValeur
Fréquence d'échantillonnage200Hz
Précision de détection±1mm
Latence de traitement<5ms
Débit WiFi54Mbps

Composants électroniques

Liste complète des composants

ComposantRéférenceQuantitéFonction principaleCaractéristiques clés
Arduino NanoATmega328P1Contrôleur principal16MHz, 32KB Flash, 14 I/O, 8 analogiques
Module WiFiESP8266MOD-121Communication sans fil802.11 b/g/n, UART, 80mA TX
Régulateur 12VLM78121Alimentation moteurs1A max, TO-220, 14-35V entrée
Régulateur 5VLM78051Alimentation logique1A max, TO-220, 7-25V entrée
PhotorésistanceGL55281Détection de lumière10kΩ (clair), 1MΩ (obscurité)
Module laserKY-0081Détection d'objets650nm, 5mW, 50cm portée
Moteur pas à pas28BYJ-481Mouvement convoyeur12V, 2048 pas/tour, 3.5kg.cm
Driver moteurL298N1Contrôle moteur2A/canal, 46V max, double pont H
ServomoteurSG901Mécanisme de tri180°, 4.8-6V, 0.1s/60°
BatterieLi-ion 4S1Alimentation mobile14.8V, 2000mAh, 4A max

Alimentation

Circuit d'alimentation principal

Circuit d'alimentation

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

Schéma bloc d'entrée

Fig. 4 - Architecture complète du bloc d'entrée


Bloc de traitement

Architecture centrale

Schéma bloc de traitement

Fig. 5 - Schéma fonctionnel du bloc de traitement


Bloc de sortie

Schéma des actionneurs

Schéma bloc de sortie

Fig. 6 - Architecture des systèmes d'actuation


Schéma complet

Circuit principal

Schéma électronique complet

Fig. 7 - Schéma complet du système (cliquer pour agrandir)

PCB final

Disposition PCB

Layout PCB

Fig. 8 - Disposition du PCB

Vue couche supérieure

PCB vue avant

Fig. 9 - Vue couche supérieurePCB vue avant

Prototype physique

Vue d'ensemble du prototype

Fig. 11 - Vue d'ensemble du prototype

Détails d'interconnexion

Fig. 12 - Détails d'interconnexion


Implémentation logicielle

Configuration, Setup et Loop

cpp
// === 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

cpp
// 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