TRÏA : AI-Powered Sorting Bin

by irisss in Circuits > Arduino

107 Views, 1 Favorites, 0 Comments

TRÏA : AI-Powered Sorting Bin

PXL_20260604_145715441.jpeg

Résumé :

Trïa est une poubelle intelligente de tri sélectif. Elle aide l’utilisateur à jeter son déchet dans le bon compartiment grâce à une caméra, une intelligence artificielle et un système mécanique. Lorsqu’un déchet est posé sur le plateau, l’IA l’identifie, puis le mécanisme oriente et incline le plateau pour faire tomber le déchet dans la bonne catégorie : papier, emballage ou autre. Si le déchet ne doit pas être jeté dans cette poubelle, comme une pile, le système le classe dans la catégorie “pas ici” afin d’avertir l’utilisateur.

Mots-clés : poubelle intelligente, tri sélectif, intelligence artificielle, détection d’objets, caméra, Arduino, Python, YOLO, servomoteur, recyclage, prototype, déchets, système mécanique.

Summary :

Trïa is an intelligent waste sorting bin. It helps users throw their waste into the correct compartment using a camera, artificial intelligence and a mechanical system. When a waste item is placed on the tray, the AI identifies it, then the mechanism rotates and tilts the tray to drop it into the correct category: paper, packaging or other waste. If the item should not be thrown into this bin, such as a battery, the system classifies it as “not here” to warn the user.

Keywords : smart trash, intelligent bin, waste sorting, artificial intelligence, object detection, camera, Arduino, Python, YOLO, servomotor, recycling, prototype, waste, mechanical system.


Introduction :

Ce projet a été réalisé dans le cadre du Projet libre, avec pour objectif de concevoir un prototype d’objet technique innovant répondant à un besoin concret.

L’objectif de Trïa est de concevoir une poubelle intelligente capable d’aider automatiquement l’utilisateur à trier ses déchets, afin de réduire les erreurs au moment où le déchet est jeté.

Trier correctement ses déchets n’est pas toujours évident. Beaucoup d’utilisateurs hésitent encore entre plusieurs poubelles au moment de jeter un objet. Selon une enquête de l’Ifop [1], 54 % des Français déclarent avoir des doutes sur le choix de la poubelle adaptée. Ces erreurs de tri peuvent avoir des conséquences importantes : certains déchets recyclables ne sont plus correctement valorisés, et les collectivités doivent parfois payer des coûts supplémentaires pour traiter les déchets mal orientés [2].

Le principe est simple : l’utilisateur pose son déchet sur un plateau, une caméra filme l’objet, puis une intelligence artificielle l’analyse pour déterminer sa catégorie. Une fois le déchet identifié, deux servomoteurs orientent puis inclinent le plateau afin de faire tomber le déchet dans le bon compartiment : papier, emballage ou autre. Le système peut aussi reconnaître certains déchets qui ne doivent pas être jetés dans cette poubelle, comme les piles, et les classer dans la catégorie “pas ici”.

Ce projet associe donc plusieurs domaines : la mécanique, l’électronique, la programmation et l’intelligence artificielle. Ce tutoriel présente les étapes nécessaires pour fabriquer le prototype : construction de la poubelle, assemblage du mécanisme, branchements électroniques, calibration des servomoteurs, création du dataset, entraînement de l’IA et mise en fonctionnement du système complet.

Sources :

[1] Fabienne Gomant. Les Français et leurs poubelles [en ligne] (page consultée le 11/05/2026) https://www.ifop.com

[2] Virginie FAUROUX. "À la charge des contribuables" : pourquoi les erreurs de tri dans les bacs jaunes coûtent cher" [en ligne] (page consultée le 11/05/2026) https://www.tf1info.fr

Supplies

Matériaux :

  1. 1 Poubelle de 30L-50L (9€99) : lincroyable.fr
  2. 1 Carte programmable [Go Tronic GT016] (14€90) : gotronic.fr
  3. 1 Caméra 750p/30fps [Logitech C270] (19€99) : amazone.fr
  4. 1 Servomoteur continue [parallax continuous #900-00008] (22€44) : rs-online.com
  5. 1 Servomoteur 180° [MASTER DS6020 #C1689] (22€66) : miniplanes.fr
  6. 1 Carton double épaisseur (1€) : raja.fr
  7. 1 Tube aluminium Dext =12mm L=5cm (1€16) : leroymerlin.fr
  8. 1 Tube aluminium Dext=14mm Dint=13mm (1€16): leroymerlin.fr
  9. 1 Ordinateur avec 2 ports USB

Prix total : 93€30 (en supposant que l’ordinateur est déjà à disposition)

Outils :

  1. Cutter
  2. Colle chaude
  3. Scie à métaux
  4. Papier à poncer
  5. Application à installer sur l’ordinateur :
  6. Un éditeur de code (comme VSCode) code.visualstudio.com
  7. Arduino IDE arduino.cc
  8. Python 3 python.org

Fabrication Du Plateau À Déchets

IMG_0308.jpeg

L’objectif de cette étape est de fabriquer un plateau légèrement conique. Cette forme permet de guider le déchet vers le centre du plateau et de faciliter ensuite sa chute lorsque le mécanisme l’incline.

Le plateau ne doit pas forcément être en carton. L’idéal serait d’utiliser un matériau en plastique rigide, avec une surface mate afin d’éviter les reflets qui pourraient perturber l’IA.

Pour réaliser ce plateau, découpez d’abord dans du carton un disque de 10,5 cm de diamètre. Retirez ensuite une portion du disque, comme sur le schéma ci-dessous, afin d’obtenir une forme de “camembert”.

Aplatissez le carton pour le rendre malléable, puis collez les deux bords découpés ensemble avec de la colle chaude afin de former un cône.

Assemblage Du Système Mécanique

IMG_0312.jpeg
IMG_0313.jpeg

L’objectif de cette étape est d’assembler le mécanisme qui permettra au plateau de s’orienter puis de s’incliner pour faire tomber le déchet dans le bon compartiment. Ce système est composé de deux servomoteurs placés l’un sur l’autre : un servomoteur à rotation continue pour orienter le plateau, et un servomoteur 180° pour l’incliner.


1 / Collez le tube en aluminium (Dext = 12 mm) sous le servomoteur à rotation continue, en le centrant et en l’alignant avec son axe de rotation. Ce tube servira d’axe principal pour guider la rotation du mécanisme.

2 / Collez le servomoteur 180° sur la pale du servomoteur à rotation continue. L’axe de rotation du servomoteur 180° doit être bien aligné avec l’axe de rotation du mécanisme, afin que le plateau reste stable pendant le mouvement.

3 / Fixez le plateau à déchets à l’extrémité de la pale du servomoteur 180°. La pointe du plateau doit elle aussi être alignée avec l’axe de rotation du système.

4 / Collez un petit morceau de carton sur le servomoteur à rotation continue afin de former une cale mécanique. Attention à bien la placer pour qu’elle ne gêne pas la rotation du mécanisme. (Cette cale permettra de s'assurer que le mouvement commence toujours à la même position)

=> Conseil : coupez le carton dans le sens des ondulations afin qu’il soit plus solide.

Création Des Compartiments De Tri

IMG_0321.jpeg
PXL_20260601_132001218.jpg
PXL_20260601_132003628.jpg
PXL_20260601_132314737.jpg
PXL_20260601_132029334.jpg
PXL_20260601_132732975.jpg
PXL_20260602_122945538~2.jpg

L’objectif de cette étape est de découper la poubelle en trois compartiments de tri et d’y installer le tube qui servira de guide pour le système mécanique.


1 / Coupez le tube en aluminium (Dext = 14 mm) à la longueur souhaitée

L = hauteur de la poubelle - hauteur du système mécanique (sans compter le tube en aluminium)

2/ Collez le tube en aluminium (Dext = 14 mm) au centre de la poubelle. Ce tube doit être placé verticalement et bien centré, car il servira de guide pour le mécanisme d'inclinaison.

3 / Divisez la poubelle en trois compartiments à l’aide de trois rectangles en carton. Collez chaque séparateur avec de la colle chaude entre le tube central et le bord de la poubelle, afin de former trois zones distinctes : papier, emballage et autre.

=> Conseil : coupez le carton dans le sens des ondulations afin qu’il soit plus solide.

4 / Collez sur la tranche basse des séparateurs, des rectangles de carton qui dépassent de chaque côté. Ces parties serviront à maintenir les sacs poubelles en place.

5 / Pour chaque compartiment, fabriquez un cadre en carton.

Installation De La Caméra

PXL_20260601_133524174.jpg

Il faut maintenant placer la caméra de manière à voir l’ensemble du plateau à déchets. La caméra doit être assez proche pour obtenir une image nette, mais assez haute pour voir tout le plateau.

Avant de construire le support définitif, il faut tester plusieurs hauteurs avec la caméra. Pour cela, utilisez le programme Python ci dessous sur VSCode (Il permet d'afficher l’image filmée en direct).

Avant d’utiliser le code, installez la bibliothèque OpenCV en entrant cette commande dans le terminal de VSCode :

python -m pip install opencv-python


Une fois la bonne hauteur trouvée, construisez un support en carton pour maintenir la caméra fixe au-dessus du plateau.

La caméra doit donc respecter trois conditions :

  1. Voir l’ensemble du plateau
  2. Produire une image aussi nette que possible
  3. Rester stable

Downloads

Circuit Électronique

IMG_0316.jpeg

Suivez le schéma ci-dessus en vérifiant bien les branchements des deux servomoteurs. Le servomoteur 180° doit être branché sur la broche 9 de la carte programmable : il servira à incliner le plateau pour faire tomber le déchet. Le servomoteur à rotation continue doit être branché sur la broche 10 : il servira à orienter le plateau vers le bon compartiment.

=> Conseil : prévoyez des câbles suffisamment longs pour qu’ils ne soient pas arrachés lorsque le mécanisme tourne.

Calibration Des Servomoteurs

Les valeurs de programmation des servomoteurs peuvent varier selon les servomoteurs et le montage, il est donc nécessaire de les calibrer sur Arduino IDE avant de poursuivre.

Commencez par tester le servomoteur à rotation continue. Celui-ci sert à orienter le plateau vers les différents compartiments. Il faut déterminer les commandes qui permettent de le faire tourner dans chaque sens, de l’arrêter, puis de mesurer le temps nécessaire pour atteindre chaque compartiment.

Dans mon cas, les valeurs obtenues sont les suivantes :

monServo2.write(100); //rotation dans le sens antihoraire
monServo2.write(90); //rotation dans le sens horaire
monServo2.write(0); //arrêt du servomoteur
delay(0); //position du premier compartiment
delay(800); //position du deuxième compartiment
delay(1770); //position du troisième compartiment


Testez ensuite le servomoteur 180°, qui sert à incliner le plateau. Il faut le calibrer de manière à ce que la position haute du plateau corresponde à un angle de 90°.

Ainsi les valeurs utilisées sont :

monServo1.write(90); //plateau en position haute
monServo1.write(180); //plateau incliné vers le bas


Ces valeurs devront être adaptées si le mécanisme, les servomoteurs ou la taille de la poubelle sont différents. Il est donc conseillé de faire plusieurs essais et de noter les valeurs obtenues avant de passer au programme final.

Constitution D'un Dataset

Comment utiliser Roboflow pour créer le dataset

Maintenant que la construction du prototype est terminée, il faut entraîner l’intelligence artificielle pour que la poubelle puisse classer correctement les déchets. Pour cela, la première étape est de constituer une base d’images appelée dataset.

Ce dataset doit être adapté à votre propre poubelle. En effet, l’angle de vue, la hauteur de la caméra, la lumière, le fond et la forme du plateau influencent beaucoup les résultats de l’IA. C’est pour cette raison qu’un dataset déjà existant, même s’il contient des images de déchets, ne sera pas forcément compatible avec votre prototype.

Il est donc important de prendre les photos directement avec la caméra installée sur la poubelle. Il faut photographier différents déchets, dans plusieurs positions et avec différentes orientations. Il faut aussi prendre des images du plateau vide afin que l’IA apprenne à ne rien détecter lorsqu’aucun déchet n’est présent.

Voici le lien vers mon dataset : roboflow.com

ID de mon dataset : v2-tb2ii

Il ne sera sûrement pas directement compatible avec votre poubelle, car chaque montage possède ses propres conditions d’éclairage, d’angle de vue et de position du plateau. Cependant, vous pouvez l’utiliser comme base pour constituer votre propre dataset.


Pour vous aider à créer votre propre dataset, vous pouvez utiliser le code ci-dessous dans VSCode. Il prend automatiquement une capture de l’image de la caméra toutes les 5 secondes et l’enregistre dans un dossier nommé "captures".

Avant d’utiliser ce code, installez la bibliothèque OpenCV en entrant la commande suivante dans le terminal de VS Code :

python -m pip install opencv-python

Une fois suffisamment d’images obtenues, allez sur https://app.roboflow.com/, créez un compte, puis créez un nouveau projet.

Sur Roboflow, il faut ensuite :

  1. Créer les classes utilisées par l’IA : papier, emballage, autre et PAS ICI
  2. Importer les images prises avec la caméra du prototype
  3. Encadrer les déchets sur chaque image (si c'est image du plateau vide il faudra le marquer null à la fin)
  4. Séparer les images en données d’entraînement, de validation et de test
  5. Exporter le dataset au format zip compatible avec YOLOv8
  6. Extraire tout le fichier
  7. Récupérer le chemin d'accès fichier "data.yaml", qui sera utilisé à l’étape suivante pour entraîner le modèle

La vidéo ci-dessus montre comment utiliser Roboflow pour créer le dataset.

Downloads

Entraînement Du Modèle D’intelligence Artificielle

Une fois le dataset créé et exporté depuis Roboflow au format YOLOv8, il faut entraîner le modèle d’intelligence artificielle. L’objectif est que le modèle s'adapte au fond et apprenne à reconnaître les différentes catégories de déchets à partir des images annotées.

Avant de lancer l’entraînement, installez la bibliothèque Ultralytics dans le terminal de VSCode avec la commande suivante :

python -m pip install ultralytics


L’entraînement peut ensuite être lancé avec le code ci-dessous sur VSCode. Il utilise le modèle "yolov8n.pt", qui est une version légère de YOLOv8. Cette version est adaptée pour un premier prototype, car elle demande moins de puissance de calcul qu’un modèle plus lourd.

Dans le code, remplacez le chemin ligne 6 par le chemin d’accès vers votre fichier "data.yaml" (récupéré à l’étape précédente). Ce fichier indique au programme où se trouvent les images du dataset et quelles classes doivent être reconnues.

À la fin de l’entraînement, le modèle entraîné est enregistré dans le dossier "runs_perso". Le fichier le plus important est "best.pt", car c’est celui qui contient le modèle ayant obtenu les meilleurs résultats pendant l’entraînement. Il sera utilisé dans l’étape suivante pour reconnaître les déchets en temps réel avec la caméra.

Downloads

Programmation Finale Du Prototype

L’objectif de cette dernière étape est de faire fonctionner ensemble toutes les parties du prototype : la caméra, le modèle d’intelligence artificielle, la carte programmable et les deux servomoteurs.

Le programme Python (All.py) récupère l’image filmée par la caméra, l’analyse avec le modèle YOLO entraîné à l’étape précédente, puis envoie une commande à la carte programmable grâce au port série. La carte programmable reçoit ensuite cette commande et actionne les servomoteurs pour orienter puis incliner le plateau.

Les commandes envoyées par Python à la carte programmable sont les suivantes :

  1. "P" pour le papier
  2. "E" pour les emballages
  3. "A" pour les autres déchets
  4. "N" pour les déchets classés 'pas ici' (pour cette catégorie le plateau effectue un mouvement d'aller-retour ressemblant à un non)

Avant d’utiliser le programme final, installez sur VSCode la bibliothèque pyserial, qui permet la communication entre Python et la carte programmable :

python -m pip install pyserial

Dans le programme Python, il faut modifier quelques éléments importants :

  1. Le chemin vers le modèle entraîné "best.pt" (ligne 10)
  2. Les noms exacts des classes de ton modèle dans chaque catégories (lignes 17 à 51)
  3. Le port série utilisé par la carte programmable (ligne 89), par exemple COM5 (visible sur Arduino IDE)
  4. Les temps de bocage (lignes 180 à 198), en fonction des valeurs obtenues lors de la calibration de l’étape 6

Une fois le programme Python sur VSCode prêt, il faut aller sur Arduino IDE afin d'y modifier le programme Servo_IA.ino. Ce programme reçoit les lettres envoyées par Python et les transforme en mouvements des servomoteurs.

Il faut adapter les temps de rotation du code Arduino aux valeurs obtenues lors de la calibration de l’étape 6.

Pour le temps de retour du plateau, il faut ajouter 10 ms afin de s’assurer que le plateau revienne bien jusqu’à la cale.

Une fois ces valeurs modifiées, téléversez le programme dans la carte programmable.


Lorsque tout est lancé, le fonctionnement complet est le suivant :

  1. L’utilisateur pose un déchet sur le plateau
  2. La caméra filme le déchet
  3. L’intelligence artificielle identifie sa catégorie
  4. Python envoie la commande correspondante à la carte programmable
  5. Le servomoteur à rotation continue oriente le plateau vers le bon compartiment
  6. Le servomoteur 180° incline le plateau
  7. Le déchet tombe dans le bon compartiment
  8. Le plateau revient à sa position initiale

Downloads

(bonus) Amélioration Progressive Du Dataset

Illustration étape bonus

À ce stade, vous avez probablement remarqué que vous ne disposez pas encore d’assez de déchets pour constituer une véritable base de données fiable recensant tous les types de déchets possibles.

Pour répondre à ce problème, il est possible d’utiliser une version améliorée du programme final : All_2.py. Ce programme fonctionne comme le programme précédent, mais il ajoute un système de retour utilisateur. Lorsque l’IA détecte un déchet, une fenêtre demande à l’utilisateur si la prédiction est correcte. Si l’utilisateur répond “oui”, le système continue normalement. Si l’utilisateur répond “non”, il peut indiquer la bonne classe du déchet et le bon compartiment.

Les images sont ensuite enregistrées automatiquement dans un dossier appelé dataset_feedback. Ce dossier est organisé en plusieurs sous-dossiers :

  1. existe_deja : pour les déchets appartenant à une classe déjà connue par l’IA
  2. existe_pas : pour les nouveaux types de déchets qui ne sont pas encore présents dans le modèle
  3. a_classer : pour les images sauvegardées sans indication de classe, à trier plus tard

Ce système ne réentraîne pas directement l’IA en temps réel. Il sert plutôt à constituer progressivement une nouvelle base d’images à partir des erreurs rencontrées pendant l’utilisation du prototype. Ces images peuvent ensuite être ajoutées au dataset sur Roboflow, annotées, puis utilisées pour entraîner une nouvelle version du modèle.

Dans le programme Python (All_2.py) sur VSCode, il faut modifier quelques éléments importants :

  1. Le chemin vers le modèle entraîné "best.pt" (ligne 53)
  2. Les noms exacts des classes de ton modèle de classes dans chaque catégories (lignes 59 à 92)
  3. Le port série utilisé par la carte programmable (ligne 943), par exemple COM5 (visible sur Arduino IDE)
  4. Les temps de bocage (lignes 143 à 157), en fonction des valeurs obtenues lors de l’étape 6


Cette étape permet de rendre le système plus évolutif. Plus la poubelle est utilisée et corrigée, plus il devient possible d’enrichir le dataset avec des cas réels.Cela permet d’améliorer progressivement la reconnaissance des déchets et de rendre le prototype plus fiable

Downloads