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

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 :

É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 :

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 :

Connectez l'écran LCD série I2C 16×2 :

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

  1. Créer un système Ambilight spectaculaire pour moniteur avec Arduino
  2. Créer un jeu Pong classique sur Arduino UNO avec écran OLED – Tutoriel étape par étape
  3. Détecteur de fréquence audio Arduino — Mesurer le pic sonore avec module haute sensibilité
  4. Construisez votre propre Tamagotchi Arduino : Un animal de compagnie numérique DIY
  5. Interrupteur lumineux sans fil intelligent : Manipulateur d'interrupteur piloté par Arduino
  6. Morpion sur matrice LED MAX7219 avec boîtier en carton
  7. Pistolet à eau intelligent à détection de mouvement avec Arduino Nano
  8. Construire un minuteur à rebours Arduino fiable avec afficheur 7 segments SparkFun
  9. Mélangeur de couleurs RVB Arduino – Projet DIY débutant