Détection de la couleur des objets avec Arduino Nano et capteur TCS3200
Composants et fournitures
| Arduino Nano R3 | × | 1 |
| Module capteur de couleur TCS3200 | × | 1 |
| Écran LCD standard Adafruit 16×2 (blanc sur bleu) | × | 1 |
| Plaque d'essai (breadboard) | × | 1 |
Applications et services en ligne
Arduino IDE
À propos du projet
Ce tutoriel simple explore la lecture des couleurs avec Arduino et des capteurs comme le TCS3200. L'objectif est de détecter la couleur d'un objet et de l'afficher sur un écran LCD. Ce projet fait partie d'un projet plus vaste : un bras robotisé qui sélectionne une action appropriée en fonction de la couleur de l'objet.
Étape 1 : Liste du matériel (BoM)
Les liens et prix ci-dessous sont donnés à titre indicatif :
- Arduino Nano (environ 8 $US)
- Module capteur de couleur TCS3200 (environ 9 $US)
- Module écran LCD série 1602 I2C/TWI à rétroéclairage bleu (environ 8 $US)
- Plaque d'essai (environ 2 $US)
- Câbles de connexion
Étape 2 : Le capteur de couleur TCS3200
Selon sa fiche technique, le TCS3200 est un convertisseur lumière-fréquence programmable qui combine des photodiodes en silicium configurables et un convertisseur courant-fréquence sur un circuit intégré CMOS monolithique.
La sortie est une onde carrée (cycle de travail 50 %) dont la fréquence est directement proportionnelle à l'intensité lumineuse (irradiance). La fréquence de sortie à pleine échelle peut être mise à l'échelle par l'une de trois valeurs prédéfinies via deux broches de contrôle (S0 et S1). Les entrées et sorties numériques permettent une interface directe avec un microcontrôleur ou d'autres circuits logiques.
Le convertisseur lumière-fréquence du TCS3200 lit un réseau de 8 × 8 photodiodes :
- 16 photodiodes ont des filtres bleus
- 16 photodiodes ont des filtres verts
- 16 photodiodes ont des filtres rouges
- 16 photodiodes sont transparentes (sans filtre)
Les broches S2 et S3 servent à sélectionner quel groupe de photodiodes (rouge, vert, bleu, clair) est actif. Les photodiodes mesurent 110 µm × 110 µm et sont espacées de 134 µm.
La broche OE (Enable) doit être reliée à GND (état bas).
Le capteur est encapsulé et doit être alimenté entre 2,7 et 5,5 VDC. Nous utiliserons la sortie 5 V de l'Arduino. Pour une utilisation correcte, installez un petit anneau en caoutchouc pour isoler le capteur de la lumière latérale ; j'ai utilisé de la colle chaude pour le fixer.
Étape 3 : Connexion du matériel
Connectez le capteur TCS3200 comme suit :
- S0 → Broche D4 du Nano
- S1 → Broche D5 du Nano
- S2 → Broche D6 du Nano
- S3 → Broche D7 du Nano
- OUT → Broche D8 du Nano
- EN → GND
- VCC → +5V
- GND → GND
Connectez l'écran LCD série I2C 16×2 :
- SDA → Broche A4 du Nano
- SCL → Broche A5 du Nano
Installez l'Arduino Nano sur la plaque d'essai. Reliez la sortie 5 V et le GND du Nano aux deux rails d'alimentation.
Étape 4 : Le code Arduino
La première chose à définir est la mise à l'échelle de la fréquence comme indiqué dans le tableau ci-dessus. Les broches S0 et S1 servent à cela. La mise à l'échelle de la fréquence de sortie est utile pour optimiser les lectures du capteur pour divers compteurs de fréquence ou microcontrôleurs. Nous mettrons S0 et S1 toutes deux à HIGH (100 %) :
digitalWrite(s0, HIGH);
digitalWrite(s1, HIGH);
Ensuite, sélectionnez la couleur à lire par la photodiode (rouge, vert ou bleu) en utilisant les broches de contrôle S2 et S3. Comme les photodiodes sont connectées en parallèle, la mise à LOW et HIGH de S2 et S3 selon différentes combinaisons permet de sélectionner différents groupes de photodiodes :
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
red = pulseIn(outPin, LOW); // Lecture composante ROUGE
digitalWrite(s2, HIGH);
digitalWrite(s3, HIGH);
grn = pulseIn(outPin, LOW); // Lecture composante VERTE
digitalWrite(s2, LOW);
digitalWrite(s3, HIGH);
blu = pulseIn(outPin, LOW); // Lecture composante BLEUE
Dans le code final, nous lirons plusieurs fois chaque composante RVB et prendrons une moyenne pour réduire les erreurs si une lecture est mauvaise.
Une fois les 3 composantes (RVB) obtenues, il faut définir la couleur correspondante. La méthode consiste à calibrer le projet au préalable avec des objets de couleur connue et à relever les 3 composantes générées.
Vous pouvez partir de mes valeurs en ajustant les paramètres selon votre éclairage :
void getColor() {
readRGB();
if (red > 8 && red < 18 && grn > 9 && grn < 19 && blu > 8 && blu < 16) color = "BLANC";
else if (red > 80 && red < 125 && grn > 90 && grn < 125 && blu > 80 && blu < 125) color = "NOIR";
else if (red > 12 && red < 30 && grn > 40 && grn < 70 && blu > 33 && blu < 70) color = "ROUGE";
else if (red > 50 && red < 95 && grn > 35 && grn < 70 && blu > 45 && blu < 85) color = "VERT";
else if (red > 10 && red < 20 && grn > 10 && grn < 25 && blu > 20 && blu < 38) color = "JAUNE";
else if (red > 65 && red < 125 && grn > 65 && grn < 115 && blu > 32 && blu < 65) color = "BLEU";
else color = "AUCUNE_COULEUR";
}
J'ai prédéfini 6 couleurs : blanc, noir, rouge, vert, jaune et bleu. Lorsque la lumière ambiante diminue, les valeurs tendent à augmenter.
Dans la boucle loop(), j'affiche les lectures sur le LCD toutes les secondes.
Le code complet est disponible sur mon GitHub.
Étape 5 : Conclusion
Comme toujours, j'espère que ce projet aidera d'autres passionnés à s'aventurer dans le monde passionnant de l'électronique, de la robotique et de l'IoT !
Visitez mon GitHub pour les fichiers mis à jour : Color Detector
Pour plus de projets, consultez mon blog : MJRoBot.org
Saludos depuis le sud du monde !
À bientôt pour le prochain tutoriel !
Merci,
Marcelo
Processus de fabrication
- Créer un système Ambilight spectaculaire pour moniteur avec Arduino
- Créer un jeu Pong classique sur Arduino UNO avec écran OLED – Tutoriel étape par étape
- Détecteur de fréquence audio Arduino — Mesurer le pic sonore avec module haute sensibilité
- Construisez votre propre Tamagotchi Arduino : Un animal de compagnie numérique DIY
- Interrupteur lumineux sans fil intelligent : Manipulateur d'interrupteur piloté par Arduino
- Morpion sur matrice LED MAX7219 avec boîtier en carton
- Pistolet à eau intelligent à détection de mouvement avec Arduino Nano
- Construire un minuteur à rebours Arduino fiable avec afficheur 7 segments SparkFun
- Mélangeur de couleurs RVB Arduino – Projet DIY débutant