ESP32 - Sensor de Cor TCS3200D/TCS230
Este guia mostra como conectar um sensor de cor TCS3200D/TCS230 ao ESP32 para detectar e medir cores RGB com precisão. Aprenda a calibrar o sensor e a programar o ESP32 para ler os valores de cor de objetos.
O que você vai aprender:
- Conectar o sensor de cor TCS3200D/TCS230 ao ESP32
- Calibrar o sensor para compensar fatores do ambiente
- Escrever o código do ESP32 para medir e exibir valores RGB

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Sensor de Cor TCS3200D/TCS230
O TCS3200D/TCS230 usa uma matriz de 64 fotodiodos organizada em uma configuração 8×8 para identificar cores. Essa matriz tem 16 fotodiodos com filtros ópticos vermelhos, 16 com filtros verdes, 16 com filtros azuis e 16 sem filtro (transparentes). O sensor funciona selecionando tipos específicos de filtro e convertendo a intensidade da luz detectada em uma saída de onda quadrada modulada em frequência.
A maioria dos módulos do sensor tem iluminação integrada com LED branco, que mantém as medições consistentes ao fornecer uma fonte de luz controlada, independente das condições do ambiente.
Pinagem
O módulo do sensor TCS3200D/TCS230 oferece estes pontos de conexão:
- Pino VCC: Conecte à alimentação de 3.3V ou 5V.
- Pino GND: Conecte ao terra (0V).
- Pinos S0, S1: Controles de escala da frequência de saída.
- Pinos S2, S3: Seletores do filtro de cor.
- Pino OUT: Sinal de saída em frequência de onda quadrada.
- Pino OE: Habilitação da saída (ativo em LOW). Normalmente já vem ligado ao GND nos módulos comerciais. Se estiver exposto, conecte ao GND.

Como Funciona
O funcionamento do sensor depende de dois parâmetros configuráveis: o filtro de cor ativo e a intensidade do sinal de saída. Dois pares de pinos de controle definem essas configurações:
Os pinos S0/S1 configuram a escala da frequência de saída:
- S0=LOW, S1=LOW: Sensor desligado
- S0=LOW, S1=HIGH: Saída a 2% da frequência base
- S0=HIGH, S1=LOW: Saída a 20% da frequência base
- S0=HIGH, S1=HIGH: Saída a 100% da frequência base
Os pinos S2/S3 selecionam o filtro de cor ativo:
- S2=LOW, S3=LOW: Filtro vermelho ativado
- S2=LOW, S3=HIGH: Filtro azul ativado
- S2=HIGH, S3=LOW: Sem filtro (transparente/sem filtragem)
- S2=HIGH, S3=HIGH: Filtro verde ativado
O pino OUT produz uma saída em frequência entre cerca de 2 Hz e 500 kHz. A magnitude da frequência está ligada à intensidade da luz: mais luz resulta em frequência mais alta. Usar pulseIn() para medir a duração do pulso dá o inverso: uma largura de pulso menor indica iluminação mais forte. Depois da calibração, essas medições são convertidas em valores RGB padrão de 0 a 255.
Otimizando a Estabilidade das Medições
- Posicione o sensor de 1 a 3 cm da superfície do alvo, sempre com a mesma orientação.
- Ative os LEDs brancos integrados para ter uma iluminação padronizada.
- Bloqueie fontes de luz externas para reduzir a variação nas medições.
Diagrama de Ligação
Esquema de conexão do ESP32 com o sensor de cor TCS3200:
| Sensor de Cor TCS3200 | ESP32 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| S0 | GPIO 17 |
| S1 | GPIO 16 |
| S2 | GPIO 18 |
| S3 | GPIO 5 |
| OUT | GPIO 19 |

This image is created using Fritzing. Click to enlarge image
Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.
Código ESP32 - Calibração do Sensor pela Largura de Pulso
A calibração compensa as variáveis do ambiente que afetam as leituras brutas do sensor: variações no brilho do LED, distância do objeto, diferenças de refletividade da superfície e condições de luz ambiente. Esses fatores causam erros de medição que precisam ser quantificados. O processo de calibração registra as larguras de pulso mínima e máxima de cada canal de cor, criando os limites para um mapeamento RGB preciso de 0 a 255 no seu ambiente.
Passos Rápidos
- Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 no Arduino IDE.
- Copie o código de calibração para o Arduino IDE
- Clique no botão Upload do Arduino IDE para fazer o upload do código para o ESP32
- Abra o Serial Monitor (defina o baud rate como 9600)
- Aponte o sensor para objetos de cores diferentes: papel branco, superfície preta e várias cores
- Acompanhe os valores Min/Max, que são atualizados automaticamente
- Depois que os valores se estabilizarem (10 a 20 segundos), anote os seis números de calibração
Exemplo de resultados de calibração da saída:
- RedMin = 42, redMax = 210
- GreenMin = 55, greenMax = 185
- BlueMin = 60, blueMax = 172
Código ESP32 - Lendo os Valores de Cor RGB
Passos Rápidos
- Encontre as constantes de calibração no início do código:
- Troque os seis zeros pelos seus valores reais de calibração. Por exemplo (usando redMin = 42, redMax = 210, greenMin = 55, greenMax = 185, blueMin = 60, blueMax = 172):
- Copie o código acima e abra no Arduino IDE
- Clique no botão Upload do Arduino IDE para fazer o upload do código para o ESP32
- Coloque um objeto colorido na frente do sensor
- Veja o resultado no Serial Monitor
Agora a saída mostra valores RGB padrão de 0 a 255. Larguras de pulso menores (iluminação mais forte) resultam em números RGB maiores; larguras de pulso maiores (iluminação mais fraca) produzem valores menores.
Ideias de Aplicação
Com a leitura de RGB funcionando, explore estas possibilidades de projeto:
- Separação automática de cores: Classifique itens por tonalidade (identificação de vermelho, verde e azul)
- Sistema de comparação de cores: Verifique se as cores de dois objetos combinam
- Seguidor de linha colorida: Construa robôs que seguem caminhos coloridos
- Verificação de qualidade na produção: Identifique peças com defeito pelo desvio de cor
- Resposta acionada por cor: Ative buzzers ou indicadores ao detectar cores específicas