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 des couleurs Arduino

Composants et fournitures

Arduino Nano R3
× 1
Reconnaissance des couleurs du module capteur de couleur
× 1
Adafruit Standard LCD - 16x2 Blanc sur Bleu
× 1
Planche à pain (générique)
× 1

Applications et services en ligne

Arduino IDE

À propos de ce projet

Projet

Il s'agit d'un tutoriel simple, où nous explorerons comment lire les couleurs à l'aide d'Arduino et de capteurs tels que le TCS 3200. L'idée sera de détecter une couleur d'objet et de l'afficher sur un écran LCD. Ce projet fait partie d'un projet plus vaste qui sera un bras robotique qui sélectionnera une action appropriée en fonction de la couleur d'un objet. Le schéma fonctionnel ci-dessus montre les principaux composants.

La vidéo ci-dessous montre le travail final du projet :

Étape 1 :BoM

Les liens et les prix ci-dessous sont pour référence seulement.

  • Arduino Nano (8 USD)
  • Module de capteur de couleur TCS3200 (9 USD)
  • Module LCD à rétroéclairage bleu série IIC/I2C/TWI 1602 (8 USD)
  • Planche à pain (2,00 USD)
  • Câbles

Étape 2 :Le capteur de couleur TSC 3200

Comme décrit dans sa fiche technique, le TCS3200 est un convertisseur lumière-fréquence couleur programmable qui combine des photodiodes au silicium configurables et un convertisseur courant-fréquence sur un seul circuit intégré CMOS monolithique.

La sortie est une onde carrée (cycle d'utilisation 50%) avec une fréquence directement proportionnelle à l'intensité lumineuse (irradiance). La fréquence de sortie pleine échelle peut être mise à l'échelle par l'une des trois valeurs prédéfinies via deux broches d'entrée de commande (S0 et S1). Les entrées et sorties numériques permettent une interface directe avec un microcontrôleur ou d'autres circuits logiques.

L'activation de sortie (OE) place la sortie dans l'état haute impédance pour le partage de plusieurs unités d'une ligne d'entrée de microcontrôleur. Dans le TCS3200, le convertisseur lumière-fréquence lit un réseau 8 x 8 de photodiodes.

  • Seize photodiodes ont des filtres bleus
  • 16 photodiodes ont des filtres verts
  • 16 photodiodes ont des filtres rouges
  • 16 photodiodes sont claires sans filtre.

Les broches S2 et S3 sont utilisées pour sélectionner quel groupe de photodiodes (rouge, vert, bleu, clair) est actif. Les photodiodes mesurent 110 m x 110 m et sont réparties sur des centres de 134 μm.

L'OE (Enable) doit être connecté à GND (LOW).

Le capteur est encapsulé et doit être alimenté entre 2,7 et 5,5 VDC. Nous utiliserons la sortie Arduino 5V pour alimenter le capteur. Afin d'utiliser correctement le capteur, nous installerons 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 : Connecter le matériel

Connectez le capteur TSC3200 comme ci-dessous :

  • S0 ==> Nano broche D4
  • S1 ==> Nano broche D5
  • S2 ==> Nano broche D6
  • S3 ==> Nano broche D7
  • OUT ==> Nano Pin D8
  • FR ==> GND
  • VCC ==> +5V
  • GND ==> GND

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

  • SDA ==> Nano Pin A4
  • SCL ==> Nano Pin A5

Installez l'Arduino Nano sur la planche à pain. Connectez la sortie Nano 5V et GND aux deux rails d'alimentation.

Étape 4 :Le code Arduino

La première chose à définir est l'échelle de fréquence telle que définie dans le tableau ci-dessus. Les broches S0 et S1 sont utilisées pour cela. La mise à l'échelle de la fréquence de sortie est utile pour optimiser les lectures des capteurs pour divers compteurs de fréquence ou microcontrôleurs. Nous allons définir S0 et S1, tous deux en HAUT (100%) :

 digitalWrite(s0,HIGH); digitalWrite(s1,HIGH); 

La prochaine chose à faire est de sélectionner la couleur à lire par la photodiode (Rouge, Vert ou Bleu), nous utilisons les broches de contrôle S2 et S3 pour cela. Comme les photodiodes sont connectées en parallèle, le réglage des S2 et S3 LOW et HIGH dans différentes combinaisons vous permet de sélectionner différentes photodiodes, comme indiqué dans le tableau ci-dessus.

 digitalWrite(s2, LOW); digitalWrite(s3, LOW); rouge =pulseIn(outPin, LOW); // Lecture du composant ROUGE de la couleur digitalWrite(s2, HIGH); digitalWrite(s3, HAUT); grn =pulseIn(outPin, LOW); // Lecture du composant VERT de la couleur digitalWrite(s2, LOW); digitalWrite(s3, HAUT); blu =pulseIn(outPin, LOW); // Lecture du composant BLEU de la couleur 

Sur le code final, nous allons lire quelques fois chacune des composantes RVB et faire une moyenne, afin de réduire l'erreur si l'une des lectures est mauvaise.

Une fois que nous avons les 3 composants (RVB), nous devons définir de quelle couleur il s'agit. La manière de procéder pour calibrer préalablement le projet. Vous pouvez utiliser un papier test ou un objet de couleur connue et lire les 3 composants générés.

Vous pouvez commencer par le mien, en modifiant les paramètres de votre niveau de luminosité :

void getColor(){ readRGB(); if (rouge> 8 &&rouge <18 &&grn> 9 &&grn <19 &&blu> 8 &&blu <16) color ="BLANC"; else if (rouge> 80 &&rouge <125 &&grn> 90 &&grn <125 &&blu> 80 &&blu <125) color ="NOIR"; else if (rouge> 12 &&rouge <30 &&grn> 40 &&grn <70 &&blu> 33 &&blu <70) color ="RED"; else if (rouge> 50 &&rouge <95 &&grn> 35 &&grn <70 &&blu> 45 &&blu <85) color ="GREEN"; else if (rouge> 10 &&rouge <20 &&grn> 10 &&grn <25 &&blu> 20 &&blu <38) color ="JAUNE"; else if (rouge> 65 &&rouge <125 &&grn> 65 &&grn <115 &&blu> 32 &&blu <65) color ="BLUE"; else color ="NO_COLOR";} 

Comme vous pouvez le voir ci-dessus, j'ai prédéfini 6 couleurs :blanc, noir, rouge, vert, jaune et bleu. Au fur et à mesure que la lumière ambiante diminue, les paramètres ont tendance à augmenter.

À l'intérieur de la boucle(), je définis les lectures d'affichage sur l'écran LCD toutes les 1 seconde.

Le code complet se trouve sur mon GitHub.

Étape 5 :Conclusion

Comme toujours, j'espère que ce projet pourra aider d'autres personnes à trouver leur chemin dans le monde passionnant de l'électronique, de la robotique et de l'IoT !

Veuillez visiter mon GitHub pour les fichiers mis à jour :Détecteur de couleur

Pour plus de projets, veuillez visiter mon blog :MJRoBot.org

Salutations du sud du monde !

Rendez-vous à mon prochain tutoriel !

Merci,

Marcelo

Code

  • Extrait de code 2
  • Extrait de code 3
Extrait de code #2Texte brut
 digitalWrite(s2, LOW); digitalWrite(s3, LOW); rouge =pulseIn(outPin, LOW); // Lecture du composant ROUGE de la couleur digitalWrite(s2, HIGH); digitalWrite(s3, HAUT); grn =pulseIn(outPin, LOW); // Lecture du composant VERT de la couleur digitalWrite(s2, LOW); digitalWrite(s3, HAUT); blu =pulseIn(outPin, LOW); // Lecture du composant BLEU de la couleur
Extrait de code n°3Texte brut
void getColor(){ readRGB(); if (rouge> 8 &&rouge <18 &&grn> 9 &&grn <19 &&blu> 8 &&blu <16) color ="BLANC"; else if (rouge> 80 &&rouge <125 &&grn> 90 &&grn <125 &&blu> 80 &&blu <125) color ="NOIR"; else if (rouge> 12 &&rouge <30 &&grn> 40 &&grn <70 &&blu> 33 &&blu <70) color ="RED"; else if (rouge> 50 &&rouge <95 &&grn> 35 &&grn <70 &&blu> 45 &&blu <85) color ="GREEN"; else if (rouge> 10 &&rouge <20 &&grn> 10 &&grn <25 &&blu> 20 &&blu <38) color ="JAUNE"; else if (rouge> 65 &&rouge <125 &&grn> 65 &&grn <115 &&blu> 32 &&blu <65) color ="BLUE"; else color ="NO_COLOR";}
Github
https://github.com/Mjrovai/Color-Detectorhttps://github.com/Mjrovai/Color-Detector

Schémas

Hw
https://github.com/Mjrovai/Color-Detector/blob/master/Color%20Detector.fzz

Processus de fabrication

  1. Créer un moniteur Ambilight à l'aide d'Arduino
  2. Jeu Arduino Pong - Écran OLED
  3. Détecteur de fréquence audio
  4. clone Arduino Tamagotchi - animal numérique
  5. Manipulateur d'interrupteur d'éclairage sans fil
  6. Tech-TicTacToe
  7. Pistolet à eau à détecteur de mouvement
  8. compte à rebours Arduino
  9. Mixeur de couleurs Arduino RVB