TCS3200 Sensore di colore

Modulo prodotto dalla SUNFOUNDER, dotato di 4 LED a luce bianca e basato sul chip TCS3200, un sensore di colore, prodotto dalla TAOS ora AMS.  Il sensore permette di riconoscere i colori.

TCS3200 sensore colore

Altri sensori di luce possono essere trovati in questo articolo Panoramica dei moduli sensori di luce

TCS3200 Sensore di colore – Descrizione

Il sensore di colore TCS3200 è un convertitore colore luce-frequenza, è composto da 16 fotodiodi con filtri blu, 16 con filtri verdi, 16 con filtri rossi e 16 non filtrati. Tutti i fotodiodi dello stesso colore sono collegati in parallelo. Quando un oggetto è posto frontalmente al modulo, ad una distanza non superiore a 10 mm, questo viene illuminato dai 4 LED bianchi e la luce riflessa andrà a colpire i 64 fotodiodi, ottenendo in uscita un’onda quadra (Duty cycle 50%) con una frequenza direttamente proporzionale all’intensità della luce riflessa.

TCS3200 sensore colore

La frequenza a fondo scala in uscita può essere regolata su uno dei tre valori preimpostati disponibili tramite due piedini dell’ingresso di controllo.
Gli ingressi digitali e l’uscita digitale permettono di interfacciarlo direttamente ad Arduino o ad altri circuiti logici. I piedini S2 e S3 sono usati per selezionare quale gruppo di fotodiodi (rosso, verde, blu, chiaro) sono attivi.

TCS3200 sensore colore

TCS3200 sensore colore

TCS3200 sensore colore

TCS3200 sensore coloreSpecifiche tecniche

  • Chip: TCS3200
  • Alimentazione: da 3 Vdc a 5 Vdc
  • Uscita a livello TTL: 0 – 5 V
  • Distanza di rilevamento: 10 mm
  • Dimensioni (mm): 28x24x18

Foto del modulo prodotto dalla SUNFOUNDER

TCS3200 sensore colore

TCS3200 sensore colore

TCS3200 sensore colore

homotix

Altri modelli di sensore

Il sensore di colore TCS3200 è stato utilizzato da altro produttori per creare i propri moduli, sotto sono riportati alcune versioni

Dove trovare il sensore

Il sensore utilizzato nell’articolo è prodotto dalla SUNFOUNDER, ma come riportato nel paragrafo precedente, il sensore di colore TCS3200 è stato implementato in moduli prodotti da altre aziende.
Uno di questi è il modulo che può essere acquistato presso il sito Homotix,  il suo costo al momento della pubblicazione di questo sito è di circa 6€.
Se al momento dell’ordine inserirete il codice sconto “ADRIROBOT_20” avrete diritto ad uno sconto.

Schema elettrico del sensore

Lo schema del modulo è molto semplice, sulla sinistra sono visibili i pin che forniscono l’accesso S0 e S1
che sono i due pin di controllo che vengono utilizzati per scalare la frequenza di uscita.
La frequenza può essere scalata a tre diversi valori preimpostati del 100%, 20% o 2%, questa funzione di frequenzy-scaling permette di ottimizzare l’uscita del sensore per vari contatori di frequenza o micro controllori.

L’accesso ai pin S2 e S3 permette di selezionare i fotodiodi da utilizzare, l’uscita del CHIP e fatta tramite il pin 6 e R8 da 1KΩ.

Troviamo poi 4 diodi led bianchi da D1 a D4 ognuno con la sua resistenza di limitazione da 330 Ω.
E’ presente un transistor NPN Q1 tipo S9013, che sembrerebbe avere la funzione di comandare l’accensione tramite il pin LED presente sul connettore PORT.  Ma la presenza della resistenza R1 collegata a VCC mantiene sempre attivi i led.

TCS3200 sensore colore

TCS3200 sensore colore

Esempio di utilizzo del sensore

Per testare il sensore TCS3200, dovremo montare un circuito in cui utilizzeremo una scheda Arduino UNO R3 (originale o clone), a cui collegheremo il sensore TCS3200, un modulo JQ6500 e un modulo KY-009 RGB full color LED SMD, alcune resistenze limitatrici, questi ultimi componenti saranno montati su una piccola breadboard.
Per i collegamenti si useranno dei cavetti colorati di tipo maschi/maschio e maschio/femmina a seconda dei pin a cui sono da collegare.

Scheda Arduino UNO

La scheda Arduino Uno è una scheda microcontrollore basato sul processore Atmega328. Dispone di 14 ingressi/uscita digitali (di cui 6 possono essere utilizzate come uscite PWM), 6 ingressi analogici, come oscillatore è utilizzato un risuonatore da 16 MHz.
Sono disponibili: un collegamento USB, un jack di alimentazione, un header ICSP, e un pulsante di reset.
Esso contiene tutto il necessario per utilizzare il microcontrollore, è sufficiente collegarsi a un computer con un cavo USB (l’alimentazione può essere derivata alla presa USB) oppure alimentare con un adattatore AC-DC oppure tramite batteria per iniziare.

Modulo JQ6500

Per dare voce ad Arduino viene utilizzato un modulo JQ6500 in grado di riprodurre file wav mono o stereo standard,

N° PinNome PinFunzioneNota
1K1Esecuzione primo filePortare a GND per mandare in esecuzione
2K2Esecuzione secondo filePortare a GND per mandare in esecuzione
3K3Esecuzione terzo filePortare a GND per mandare in esecuzione
4K4Esecuzione quarto filePortare a GND per mandare in esecuzione
5K5Esecuzione quinto filePortare a GND per mandare in esecuzione
6SGNDMassaTerminale di massa
7ADKEYPorta AD
8BUSYModulo in PlayLivello alto quando c'è l'uscita audio (led acceso)
Livello basso quando non c'è nessuna uscita audio
9RXRicezione dati seriale UART
10TXTrasmissione dati seriale UART
11GNDTerminale di massaMassa alimentazione
12DC-5Vingresso di alimentazione del moduloLa tensione non può superare 5.2V
13ADC_Rcanale destroUscita amplificatore cuffie
14ADC_Lcanale sinistro
15SPK-- altoparlante Amplificatore altoparlanti a trasmissione diretta < 1W / 8Ω
16SPK++ altoparlante

Per controllare la riproduzione dei brani viene utilizzato un protocollo di comunicazione seriale.
Il modulo JQ6500-16P  dispone di una memoria flash da 16Mbit, per la programmazione è presente sul modulo una porta micro-USB, il programma di gestione è direttamente presente nella memoria del modulo.

Alcune caratteristiche

1. Supporto frequenza di campionamento (KHz): 8 / 11,025 / 12/16 / 22.05 / 24/32 / 44,1 / 48
2. Uscita DAC a 24 bit; dinamica 90dB ; SNR 85dB
3. Supporto file system FAT16, FAT32
4. Una varietà di modalità di controllo: modalità seriale, modalità di controllo tramite tasti
5. Supporta l’annuncio inter-cut mettendo in pausa la musica di sottofondo in corso
6. Classificazione dei dati audio in base alla cartella; supporta fino a 100 cartelle con ogni cartella assegnata a 1000 brani
7. Livello di volume regolabile con 30 valori, 10 tipi di equalizzazione.
8. Flash SPI esterno se collegato al computer, in grado di visualizzare flash drive SPI per aggiornare il contenuto
9. Riproduzione della musica attraverso il controllo tramite linea seriale con Microcontroller
10. Nella modalità di gestione a pulsanti, è possibile scegliere modalità di play.

KY-009 RGB full color LED Module

Il modulo KY-009 RGB full color LED , si presenta come una piccolo circuito che misura 18,5 millimetri x 15mm, su di esso è montato un LED RGB tipo 5050 SMD e un connettore a 4 pin.
Il LED può emette una ampia gamma di colori mescolando rosso, verde e blu. La quantità di ciascun colore primario può venire regolata tramite un pilotaggio di tipo PWM.

Mini breadboard

La Mini breadboard utilizzata misura 4.5 x 3.5 cm su cui sono presenti 170 punti di collegamento e una base autoadesiva che la rende ideale per applicazioni in spazi ristretti. La si può trovare in 5 diversi colori (verde, bianco, blu, nero, rosso).

Riassunto materiale necessario

Scheda Arduino UNO R3 TCS3200 sensore colore
Modulo JQ6500 Modulo KY-009 RGB full color LED
Cavi colorati M/M M/F Breadboard
Resistenze di vario valore Altoparlante 8 Ω 0,5 W

1 x 150Ω (marrone, verde, marrone)
2 x 100Ω (marrone , nero, marrone), 100Ω
1 x 1KΩ (marrone , nero, rosso)

Schema dei collegamenti

TCS3200 sensore colore

TCS3200 sensore colore

Listato del programma

Segue lo Sketch del programma, per il suo funzionamento occorre che sia stata caricata la libreria per la gestione del modulo JQ6500, Per le istruzioni riferirsi al relativo articolo.
All’interno del modulo si dovranno caricare i relativi file audio.
Una volta lanciato il programma, quando si mostrerà la superficie colorata al sensore, il modulo KY-009 RGB full color LED riprodurrà il colore riconosciuto mentre l’altoparlante comunicherà a voce il valore.
In questa demo il programma è impostato per tre colori primari: rosso, verde e blu.

Programma di test I file audio Schema collegamento
#include <Arduino.h>
#include <SoftwareSerial.h>
#include <JQ6500_Serial.h>

//Pin color sensor
const int out = 2;
const int s0 = 3;
const int s1 = 4;
const int s2 = 5;
const int s3 = 6;

// LED pins connected to Arduino
int redLed = 8;
int greenLed = 9;
int blueLed = 10;

// Pin di comunicazione con modulo JQ6500
int TX = 12;
int RX = 11;

// Variables
int red = 0;
int green = 0;
int blue = 0;

// Impostazione modulo JQ6500
JQ6500_Serial mp3(TX, RX);

void setup()
{
  Serial.begin(9600);
  pinMode(s0, OUTPUT);
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);
  pinMode(s3, OUTPUT);
  pinMode(out, INPUT);
  pinMode(redLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
  pinMode(blueLed, OUTPUT);
  mp3.begin(9600);
  mp3.reset();
  mp3.setVolume(30);
  mp3.setLoopMode(MP3_LOOP_NONE);
  digitalWrite(s0, HIGH);
  digitalWrite(s1, HIGH);
}

void loop()
{
  color();
  Serial.print("R Intensity:");
  Serial.print(red, DEC);
  Serial.print(" G Intensity: ");
  Serial.print(green, DEC);
  Serial.print(" B Intensity : ");
  Serial.print(blue, DEC);
  //Serial.println();

  if (red &amp;amp;lt; blue &amp;amp;amp;&amp;amp;amp; red &amp;amp;lt; green &amp;amp;amp;&amp;amp;amp; red &amp;amp;lt; 20)
  {
    Serial.println(" - (Red Color)");
    digitalWrite(redLed, HIGH); // Accendo Led Rosso
    digitalWrite(greenLed, LOW);
    digitalWrite(blueLed, LOW);
    mp3.playFileByIndexNumber(2); //Frase LED ROSSO
    delay (1000);
  }

  else if (blue &amp;amp;lt; red &amp;amp;amp;&amp;amp;amp; blue &amp;amp;lt; green)
  {
    Serial.println(" - (Blue Color)");
    digitalWrite(redLed, LOW);
    digitalWrite(greenLed, LOW);
    digitalWrite(blueLed, HIGH); // Accende Led Blu
    mp3.playFileByIndexNumber(3); //Frase LED BLU
    delay (1000);
  }

  else if (green &amp;amp;lt; red &amp;amp;amp;&amp;amp;amp; green &amp;amp;lt; blue)
  {
    Serial.println(" - (Green Color)");
    digitalWrite(redLed, LOW);
    digitalWrite(greenLed, HIGH); // Accende Led Verde
    digitalWrite(blueLed, LOW);
    mp3.playFileByIndexNumber(1); //Frase LED VERDE
    delay (1000);
  }
  else {
    Serial.println();
  }
  delay(300);
  digitalWrite(redLed, LOW);
  digitalWrite(greenLed, LOW);
  digitalWrite(blueLed, LOW);
}

void color()
{
  digitalWrite(s2, LOW);
  digitalWrite(s3, LOW);
  //count OUT, pRed, RED
  red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
  digitalWrite(s3, HIGH);
  //count OUT, pBLUE, BLUE
  blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
  digitalWrite(s2, HIGH);
  //count OUT, pGreen, GREEN
  green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
}

 

Filmato che mostra il funzionamento del programma

Filmato tratto dal mio canale su Istagram

 

Visualizza questo post su Instagram

 

Un post condiviso da Adriano Gandolfo (@adrirobot) in data:

 

 

Lascia un commento

Your email address will not be published.