Prototype capteur de couleur Arduino – Identifier et afficher le nom des couleurs
Composants et fournitures
| Composant | Quantité | Notes |
|---|---|---|
| Arduino UNO | 1 | |
| LED RGB diffuse anode commune | 1 | Anode ou cathode commune – adapter le code |
| Photorésistance (CdS / LDR) | 1 | |
| Écran LCD 16x2 (compatible LiquidCrystal) | 1 | |
| Résistance 10 kΩ | 2 | Bouton poussoir + CdS |
| Résistance 100 Ω | 3 | 150 Ω pour rouge, 2×100 Ω pour vert/bleu |
| Bouton poussoir 12 mm | 1 | |
| Fils de connexion | 1 | |
| Plaque d'essai (breadboard) | 1 |
Applications et services en ligne
- MLP Topology Workbench – outil d'entraînement réseaux de neurones pour bibliothèque Neurona (Arduino).
À 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é).

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.


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.

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.

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


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.

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 :

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