Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Prototype capteur de couleur Arduino – Identifier et afficher le nom des couleurs

Composants et fournitures

ComposantQuantitéNotes
Arduino UNO1
LED RGB diffuse anode commune1Anode ou cathode commune – adapter le code
Photorésistance (CdS / LDR)1
Écran LCD 16x2 (compatible LiquidCrystal)1
Résistance 10 kΩ2Bouton poussoir + CdS
Résistance 100 Ω3150 Ω pour rouge, 2×100 Ω pour vert/bleu
Bouton poussoir 12 mm1
Fils de connexion1
Plaque d'essai (breadboard)1

Applications et services en ligne

À propos de ce projet

Version simplifiée de l'article complet pour faciliter la reproduction. Voir mon blog pour détails d'implémentation. Sections accessibles via menu droit ou téléchargez le code sur GitHub. Regardez d'abord la vidéo du projet !

Vue d'ensemble

Inspiré de la vision humaine, le modèle RGB couvre 16+ millions de couleurs dans un espace 3D (R, G, B ∈ [0,255]). La détection/reconnaissance combine composants électroniques liés à la lumière et apprentissage automatique : LED RGB + photorésistance (CdS), isolés de la lumière ambiante. La LED émet successivement rouge, vert, bleu ; la photorésistance mesure l'intensité réfléchie par l'objet.

Perceptron multicouche (MLP)

Architecture réseau de neurones à propagation avant : couche d'entrée (non neuronale), couches cachées, couche de sortie. Entraînement par rétropropagation (apprentissage supervisé).

Prototype capteur de couleur Arduino – Identifier et afficher le nom des couleurs

Pour ce capteur : 3 entrées (R,G,B), 1 couche cachée 6 neurones, sortie 10 neurones (10 classes de couleurs). Le réseau est pré-entraîné. Dataset et détails entraînement sur mon blog.

Reconnaissance des couleurs

Le MLP entraîné classifie des motifs spatialement séparables. Lors de l'entraînement, il a partitionné l'espace RGB en régions délimitées par des hyperplans, chaque région = une couleur. Tout nouveau motif RGB (point 3D) tombe dans une région → classe correspondante.

Prototype capteur de couleur Arduino – Identifier et afficher le nom des couleurs
Prototype capteur de couleur Arduino – Identifier et afficher le nom des couleurs

Pour une bonne généralisation, l'ensemble d'entraînement doit couvrir le domaine d'utilisation. Attention aux valeurs min/max de chaque composante ! Ne pas présenter de motifs hors domaine.

Prototype capteur de couleur Arduino – Identifier et afficher le nom des couleurs

Dataset : 75 exemples, valeurs 0–255 ramenées à [0,1] (division par 255). Sortie souhaitée : un seul neurone à 1, autres à 0 (codage one-hot). Post-traitement : le neurone à plus forte sortie → 1, autres → 0.

Prototype capteur de couleur Arduino – Identifier et afficher le nom des couleurs

Circuit électronique

Détection dans le circuit, calcul sur ATmega328 (Arduino). Voir schémas.

Prototype capteur de couleur Arduino – Identifier et afficher le nom des couleurs
Prototype capteur de couleur Arduino – Identifier et afficher le nom des couleurs

Code prévu pour anode commune – vérifiez votre LED RGB, sinon inversez la logique. Une seule résistance sur l'anode commune (moyenne des résistances cathodes) – solution de secours, idéalement une résistance par cathode pour fidélité colorimétrique. LED RGB et CdS doivent être isolés de la lumière ambiante (vieux tube film noir idéal). Voir vidéo.

Théorie des couleurs

Perception basée sur réflexion diffuse (surfaces mates opaques). Réflexion spéculaire (brillante) parasite la mesure. Lumière incidente → réfléchie selon composition couleur objet. Exemple : lumière rouge sur objet jaune → forte réflexion (jaune = rouge + vert). Lumière bleue sur jaune → faible réflexion.

Prototype capteur de couleur Arduino – Identifier et afficher le nom des couleurs

Système additif : blanc = toutes couleurs, noir = absence. On mesure réflexions max/min pour chaque composante RGB → calibration → mise à l'échelle [0,255] (info) et [0,1] (entrée réseau). Astuce : après calibration, ne bougez plus ni composants ni écran opaque.

Programmation

Calibration et reconnaissance : 3 itérations (R, G, B). À chaque itération : LED allumée, attente stabilisation CdS, lecture analogique, stockage réflexion. Calibration : processus répété pour noir et blanc → gamme réelle de réflexion → mise à l'échelle. Temps d'attente stabilisation CdS : variable selon composants (500 ms chez moi, testez valeurs plus grandes puis réduisez).

Détection : valeurs RGB [0,1] → MLP (bibliothèque Neurona, installable via Gestionnaire de bibliothèques Arduino). Réseau pré-entraîné, poids intégrés au code.

Tests

Couleurs extraites du dataset pour tests de reconnaissance :

Prototype capteur de couleur Arduino – Identifier et afficher le nom des couleurs

Chiffres hors figure = identification ; chiffres dans figure = erreurs (couleur prédite à la place). Imprimées sur papier sulfite jet d'encre (mat, opaque).

Code

Prototype capteur couleur

Code dans dossier colorSensor. Vérifiez câblage selon schémas et installez bibliothèque Neurona (Gestionnaire bibliothèques Arduino).

https://github.com/moretticb/ColorSensor/

Schémas

Utilisez le bouton poussoir selon instructions affichées sur l'écran LCD.

Prototype capteur de couleur Arduino – Identifier et afficher le nom des couleurs

Processus de fabrication

  1. Codes couleurs des résistances — Guide complet pour décoder valeur, tolérance et normes séries E
  2. Alerte Soif Plante Intelligente – Capteur DIY pour une Hydratation Optimale
  3. Horloge à Mots Italienne avec Arduino Nano, NeoPixel, LCD et RTC
  4. Capteur d'obstacle IR simple avec Arduino — LED IR + Photodiode
  5. Compteur kWh Sigfox fiable avec Arduino MKR Fox 1200
  6. Moniteur de température Bluetooth avec Arduino Nano
  7. Serrure à gestes sans contact : Accès sécurisé avec APDS-9960 et Arduino
  8. Circuit d'entrée analogique isolée pour Arduino : Protection contre les parasites industriels
  9. Test Précis de Temps de Réaction avec Arduino UNO