Arduino - Capteur de couleur TCS3200D/TCS230
Ce tutoriel illustre l'interfaçage d'un capteur de reconnaissance de couleur TCS3200D/TCS230 avec Arduino afin de mesurer et d'identifier les valeurs RGB de divers objets. Vous maîtriserez les techniques d'étalonnage du capteur et la programmation de la détection des couleurs.
Sujets abordés:
- Câblage du module capteur TCS3200D/TCS230 à votre carte Arduino
- Réalisation d'un calibrage environnemental pour obtenir des mesures précises
- Programmation de l'Arduino pour extraire les données de couleur RGB

Préparation du matériel
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Démarrage DIYables STEM V3 (Arduino inclus) | |
| 1 | × | Kit de Capteurs DIYables (30 capteurs/écrans) | |
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À propos du capteur de couleur TCS3200D/TCS230
Construit autour d'une matrice de photodiodes 8×8, le TCS3200D/TCS230 identifie les couleurs grâce à un filtrage optique spécialisé. La grille de 64 diodes comprend 16 photodiodes à filtre rouge, 16 photodiodes à filtre vert, 16 photodiodes à filtre bleu et 16 photodiodes non filtrées (claires). La détection des couleurs s'effectue en basculant entre les types de filtres et en analysant la sortie en forme d'onde carrée dont la fréquence représente l'intensité lumineuse.
Des LED blanches intégrées sur la plupart des modules offrent un éclairage de la cible cohérent, garantissant des mesures stables quelles que soient les conditions ambiantes et améliorant les performances en faible luminosité.
Schéma des broches
Les broches de connexion du module TCS3200D/TCS230 incluent :
- Broche VCC : Connexion d'alimentation (+5 V).
- Broche GND : Connexion à la masse (0 V).
- Broches S0, S1 : Entrées de contrôle de l'échelle de fréquence.
- Broches S2, S3 : Entrées de sélection du filtre couleur.
- Broche OUT : Sortie de fréquence (onde carrée).
- Broche OE : Contrôle d'activation de la sortie (actif lorsque LOW). La plupart des modules commerciaux mettent ce pin à la masse en interne, ce qui élimine le câblage externe. S'il n'est pas pré-connecté, reliez-le manuellement à la masse.

Comment cela fonctionne
Pour faire fonctionner le capteur, il est nécessaire de configurer deux paramètres clés : le canal de couleur actif et l'intensité du signal. Des paires de broches de contrôle gèrent ces paramètres :
Mise à l'échelle de la sortie via S0 et S1 :
- Les deux LOW: mode hors tension
- S0 LOW, S1 HIGH: échelle de fréquence de 2 %
- S0 HIGH, S1 LOW: échelle de fréquence de 20 %
- Les deux HIGH: échelle de fréquence à 100 %
Sélection des filtres via S2 et S3:
- Tous deux en état bas : canal rouge actif
- S2 bas, S3 haut : canal bleu actif
- S2 haut, S3 bas : canal clair (non filtré)
- Tous deux en état haut : canal vert actif
La broche OUT génère des signaux carrés allant d'environ 2 Hz à 500 kHz. Des fréquences plus élevées indiquent une intensité lumineuse plus forte pour le canal sélectionné. Mesurer la largeur d'impulsion avec pulseIn() illustre la relation inverse — des impulsions plus courtes signifient des couleurs plus vives. Après calibrage, la conversion donne des valeurs RVB standard.
Maximiser la précision de la lecture
- Maintenez une distance de 1 à 3 cm entre le capteur et la cible, en conservant un positionnement cohérent.
- Activez les LED blanches embarquées pour des conditions d'éclairage uniformes.
- Réduisez au minimum les interférences de la lumière ambiante en protégeant le capteur pour une précision améliorée.
Diagramme de câblage
Schéma de câblage pour le capteur de couleur TCS3200 et Arduino:
| TCS3200 Color Sensor | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| S0 | Pin 4 |
| S1 | Pin 3 |
| S2 | Pin 6 |
| S3 | Pin 5 |
| OUT | Pin 7 |

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Code Arduino - Calibration du capteur par largeur d'impulsion
L'étalonnage environnemental s'avère essentiel car la sortie brute du capteur varie en fonction de plusieurs facteurs : l'intensité de la LED embarquée, la distance à la cible, les propriétés de réflexion de la surface et l'éclairage ambiant. Considérez ces variables comme des interférences de mesure. L'étalonnage quantifie ces interférences en établissant des limites minimales et maximales pour chaque canal de couleur, permettant une conversion précise vers l'échelle RGB standard de 0 à 255 adaptée à votre configuration spécifique.
Étapes rapides
- Ouvrez le code d'étalonnage dans l'IDE Arduino
- Téléversez sur votre carte Arduino en utilisant le bouton Upload
- Lancez le Moniteur Série pour afficher les lectures en direct avec le suivi Min/Max
- Scannez divers objets avec le capteur : surfaces blanches (papier), objets noirs, ainsi que divers objets colorés
- Observez les mises à jour automatiques des valeurs Min/Max à mesure que les extrêmes sont enregistrés
- Lorsque les chiffres se stabilisent (généralement 10 à 20 secondes), enregistrez les six constantes d'étalonnage
Par exemple, à partir de la sortie ci-dessus, vos valeurs d'étalonnage seraient :
- RougeMin = 42, rougeMax = 210
- VertMin = 55, vertMax = 185
- BleuMin = 60, bleuMax = 172
Code Arduino - Lecture des valeurs de couleur RVB
Étapes rapides
- • Localisez les déclarations des variables d'étalonnage près du début du code :
Aucun texte fourni à traduire.
int redMin = 0; // Largeur d'impulsion minimale pour le rouge
int redMax = 0; // Largeur d'impulsion maximale rouge
int greenMin = 0; // Largeur d'impulsion minimale pour la couleur verte
int greenMax = 0; // Largeur d'impulsion maximale pour le vert
int blueMin = 0; // Largeur d'impulsion minimale bleue
int blueMax = 0; // Largeur d'impulsion maximale bleue
Please provide the English text to translate.
- Mettez à jour toutes les six valeurs zéro en utilisant les résultats d'étalonnage de l'exercice précédent. Exemple de transformation (en utilisant les résultats d'étalonnage redMin = 42, redMax = 210, greenMin = 55, greenMax = 185, blueMin = 60, blueMax = 172) :
Please provide the English text to translate.
int rougeMin = 42;
int redMax = 210;
int minVert = 55;
int vertMax = 185;
int bleuMin = 60;
int bleuMax = 172;
Please provide the English text to translate.
- Téléversez le code modifié sur l'Arduino
- Placez une cible colorée devant le capteur
- Surveillez la sortie RVB dans le Moniteur série
Les valeurs RVB sont désormais mappées sur la plage standard 0-255. Des largeurs d'impulsion plus courtes (plus de lumière) produisent des valeurs RVB plus élevées, et des largeurs d'impulsion plus longues (moins de lumière) produisent des valeurs RVB plus faibles.
Applications
Maintenant que vous pouvez lire les valeurs RVB, vous pouvez réaliser des projets comme :
- Trieur de couleurs: Trie les objets par couleur (rouge, vert, bleu)
- Jeu d'association des couleurs: Vérifie si deux objets ont la même couleur
- Robot suiveur de ligne: Suit des lignes colorées au sol
- Contrôle qualité: Détecte les produits défectueux par leur couleur
- Alarme activée par la couleur: Déclenche un buzzer ou une DEL lorsque une couleur spécifique est détectée