TCS3200 RGB Color sensor

ultimo aggiornamento 4 giugno 2017


 

Indice

Descrizione

Modulo prodotto dalla SUNFOUNDER, dotato di 4 LED a luce bianca e basato sul chip TCS3200 , prodotto dalla TAOS ora AMS. Si tratta di un convertitore colore luce-frequenza.
Quest'ultimo è 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.

homotix


PCBA

OurPCB

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 Programmable color light-to-frequency converter

Piedinatura Datasheet Foto dell'integrato

Specifiche tecniche

Foto del modulo prodotto dalla SUNFOUNDER

Altri modelli di sensore

Schema elettrico del sensore

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, possono essere acquistati presso il sito ICStation codice 6924 e hanno un basso costo che si aggira sui 3-4 €.

N° Pin

Nome Pin

Funzione

Nota

1

K1

Esecuzione primo file

Portare a GND per mandare in esecuzione

2

K2

Esecuzione secondo file

Portare a GND per mandare in esecuzione

3

K3

Esecuzione terzo file

Portare a GND per mandare in esecuzione

4

K4

Esecuzione quarto file

Portare a GND per mandare in esecuzione

5

K5

Esecuzione quinto file

Portare a GND per mandare in esecuzione

6

SGND

Massa

Terminale di massa

7

ADKEY

Porta AD  
8

BUSY

Modulo in Play Livello alto quando c'è l'uscita audio (led acceso);
Livello basso quando non c'è nessuna uscita audio
9

RX

Ricezione dati seriale UART  
10

TX

Trasmissione dati seriale UART  
11

GND

Terminale di massa Massa alimentazione
12

DC-5V

ingresso di alimentazione del modulo La tensione non può superare 5.2V
13

ADC_R

canale destro Uscita amplificatore cuffie
14

ADC_L

canale sinistro  
15

SPK-

- altoparlante Amplificatore altoparlanti a trasmissione diretta < 1W / 8Ω
16

SPK+

+ altoparlante  

Per controllare la riproduzione dei brani viene utilizzato un protocollo di comunicazione seriale.
Il modulo JQ6500-16P che ha di memoria flash da 16Mbit (2 Mega Byte), 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.5x3.5cm 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).

Schema dei collegamenti

Riassunto materiale necessario

Scheda Arduino UNO R3 TCS3200 RGB Color sensor
Modulo JQ6500 Modulo KY-009 RGB full color LED 
Cavi colorati M/M M/F Breadboard

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

Resistenze di vario valore Altoparlante 8 Ω  0,5 W

Listato del programma

Programma  di test

 

I file audio

 

Schema collegamento

I file audio

 
/*
  Test_TS3200.ino
  Il programma riconosce i colori primari: Rosso, Verde e Blu degli
  oggetti posti di fronte al sensore TS 3200 e accende il relativo
  Led colorato sul Modulo KY-009.  Comunica a voce tramite il modulo
  JQ6500 il colore riconosciuto.

  Sono utilizzati i seguenti pin
  Pin +5V           -> Alimentazione Color sensor, JQ6500
  Pin GND           -> GND Color sensor, JQ6500, KY-009
  Pin Digital 2     -> Out Color sensor
  Pin Digital 3     -> S0 Color sensor
  Pin Digital 4     -> S1 Color sensor
  Pin Digital 5     -> S2 Color sensor
  Pin Digital 6     -> S3 Color sensor
  Pin Digital 8     -> Led Rosso KY-009
  Pin Digital 9     -> Led Verde KY-009
  Pin Digital 10    -> Led Blu KY-009
  Pin Digital 11    -> RX JQ6500
  Pin Digital 12    -> TX JQ6500

  Creato il 03/05/2016 da Adriano Gandolfo
  Sito web https://www.adrirobot.it
  Blog http://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
*/

#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 < blue && red < green && red < 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 < red && blue < 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 < red && green < 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

 

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

 
Elenco revisioni:

04/06/2017

Emissione preliminare
Private Policy Cookie Policy Termini e Condizioni