Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Detecção de cores do Arduino

Componentes e suprimentos

Arduino Nano R3
× 1
Reconhecimento de cores do módulo do sensor de cores
× 1
Adafruit LCD padrão - 16x2 branco em azul
× 1
Breadboard (genérico)
× 1

Aplicativos e serviços online

Arduino IDE

Sobre este projeto







Projeto


Este é um tutorial simples, onde exploraremos como ler cores usando o Arduino e sensores como o TCS 3200. A ideia será detectar a cor de um objeto e exibi-la em um LCD. Este projeto é um componente de um projeto maior que será um Braço de Robô que seleciona uma ação apropriada com base na cor de um objeto. O diagrama de blocos acima mostra os componentes principais.

O vídeo abaixo mostra o trabalho final do projeto:





Etapa 1:BoM


Os links e preços abaixo são apenas para referência.
  • Arduino Nano (US $ 8,00)
  • Módulo sensor de cores TCS3200 (US $ 9,00)
  • Módulo LCD Serial Blue Backlight IIC / I2C / TWI 1602 (US $ 8,00)
  • Breadboard (US $ 2,00)
  • cabos





Etapa 2:o sensor de cores TSC 3200


Conforme descrito em sua folha de dados, o TCS3200 é um conversor de luz em freqüência programável em cores que combina fotodiodos de silício configuráveis ​​e um conversor de corrente em freqüência em um único circuito integrado CMOS monolítico.

A saída é uma onda quadrada (ciclo de trabalho de 50%) com frequência diretamente proporcional à intensidade da luz (irradiância). A frequência de saída em escala real pode ser escalonada por um dos três valores predefinidos por meio de dois pinos de entrada de controle (S0 e S1). As entradas e saídas digitais permitem interface direta com um microcontrolador ou outro circuito lógico.

A habilitação de saída (OE) coloca a saída no estado de alta impedância para compartilhamento de várias unidades de uma linha de entrada do microcontrolador. No TCS3200, o conversor de luz em frequência lê uma série de fotodiodos de 8 x 8.
  • Dezesseis fotodiodos têm filtros azuis
  • 16 fotodiodos têm filtros verdes
  • 16 fotodiodos têm filtros vermelhos
  • 16 fotodiodos são transparentes, sem filtros.

Os pinos S2 e S3 são usados ​​para selecionar qual grupo de fotodiodos (vermelho, verde, azul, transparente) está ativo. Os fotodiodos têm 110 μm x 110 μm de tamanho e estão em centros de 134 μm.

O OE (Ativar) deve ser conectado ao GND (BAIXO).

O sensor é encapsulado e deve ser alimentado entre 2,7 e 5,5 VCC. Usaremos a saída de 5 V do Arduino para alimentar o sensor. Para o uso adequado do sensor, instalaremos um pequeno anel de borracha para isolar o sensor da luz lateral. Usei cola quente para consertar.





Etapa 3:Conectando o HW


Conecte o Sensor TSC3200 conforme abaixo:
  • S0 ==> Nano pino D4
  • S1 ==> Nano pino D5
  • S2 ==> Nano pino D6
  • S3 ==> Nano pino D7
  • OUT ==> Nano Pin D8
  • EN ==> GND
  • VCC ==> + 5V
  • GND ==> GND

Conecte o display serial I2C LCD 2/16:
  • SDA ==> Nano Pin A4
  • SCL ==> Nano Pin A5

Instale o Arduino Nano no BreadBoard. Conecte a saída Nano 5V e GND em ambos os barramentos de alimentação.





Etapa 4:o código do Arduino


A primeira coisa a definir é a escala de frequência conforme definido na tabela mostrada acima. Os pinos S0 e S1 são usados ​​para isso. O escalonamento da frequência de saída é útil para otimizar as leituras do sensor para vários contadores de frequência ou microcontroladores. Vamos definir S0 e S1, ambos em HIGH (100%):
  digitalWrite (s0, HIGH); digitalWrite (s1, HIGH);  

A próxima coisa a fazer é selecionar a cor a ser lida pelo fotodiodo (vermelho, verde ou azul), usamos os pinos de controle S2 e S3 para isso. Como os fotodiodos estão conectados em paralelo, configurar S2 e S3 LOW e HIGH em diferentes combinações permite selecionar diferentes fotodiodos, conforme mostrado na tabela acima.
  digitalWrite (s2, LOW); digitalWrite (s3, LOW); vermelho =pulseIn (outPin, LOW); // Lendo o componente RED da cor digitalWrite (s2, HIGH); digitalWrite (s3, HIGH); grn =pulseIn (outPin, LOW); // Lendo o componente VERDE da cor digitalWrite (s2, LOW); digitalWrite (s3, HIGH); blu =pulseIn (outPin, LOW); // Lendo o componente AZUL da cor  

No código final, vamos ler algumas vezes cada um dos componentes RGB e fazer uma média, para que possamos reduzir o erro se uma das leituras for ruim.

Uma vez que temos os 3 componentes (RGB), devemos definir de que cor é essa. A forma de fazer é calibrar previamente o projeto. Você pode usar um papel ou objeto de teste colorido conhecido e ler os 3 componentes gerados.

Você pode começar com o meu, alterando os parâmetros para o seu nível de luz:
  void getColor () {readRGB (); if (red> 8 &&red <18 &&grn> 9 &&grn <19 &&blu> 8 &&blu <16) color ="WHITE"; else if (red> 80 &&red <125 &&grn> 90 &&grn <125 &&blu> 80 &&blu <125) color ="BLACK"; else if (red> 12 &&red <30 &&grn> 40 &&grn <70 &&blu> 33 &&blu <70) color ="RED"; else if (red> 50 &&red <95 &&grn> 35 &&grn <70 &&blu> 45 &&blu <85) color ="GREEN"; else if (red> 10 &&red <20 &&grn> 10 &&grn <25 &&blu> 20 &&blu <38) color ="AMARELO"; else if (red> 65 &&red <125 &&grn> 65 &&grn <115 &&blu> 32 &&blu <65) color ="BLUE"; else color ="NO_COLOR";}  

Como você pode ver acima, eu tenho 6 cores predefinidas:branco, preto, vermelho, verde, amarelo e azul. À medida que a luz ambiente diminui, os parâmetros tendem a aumentar.

Dentro do loop (), eu defino as leituras do display no LCD a cada 1 segundo.

O código completo pode ser encontrado em meu GitHub.





Etapa 5:Conclusão


Como sempre, espero que este projeto possa ajudar outras pessoas a encontrar seu caminho no emocionante mundo da eletrônica, robótica e IoT!

Visite meu GitHub para arquivos atualizados:Detector de cores

Para mais projetos, visite meu blog:MJRoBot.org

Saludos do sul do mundo!

Vejo vocês no meu próximo tutorial!

Obrigada,

Marcelo

Código

  • Snippet de código # 2
  • Snippet de código # 3
Snippet de código # 2 Texto simples
 digitalWrite (s2, LOW); digitalWrite (s3, LOW); vermelho =pulseIn (outPin, LOW); // Lendo o componente RED da cor digitalWrite (s2, HIGH); digitalWrite (s3, HIGH); grn =pulseIn (outPin, LOW); // Lendo o componente VERDE da cor digitalWrite (s2, LOW); digitalWrite (s3, HIGH); blu =pulseIn (outPin, LOW); // Lendo o componente AZUL da cor 
Snippet de código # 3 Texto simples
 void getColor () {readRGB (); if (red> 8 &&red <18 &&grn> 9 &&grn <19 &&blu> 8 &&blu <16) color ="WHITE"; else if (red> 80 &&red <125 &&grn> 90 &&grn <125 &&blu> 80 &&blu <125) color ="BLACK"; else if (red> 12 &&red <30 &&grn> 40 &&grn <70 &&blu> 33 &&blu <70) color ="RED"; else if (red> 50 &&red <95 &&grn> 35 &&grn <70 &&blu> 45 &&blu <85) color ="GREEN"; else if (red> 10 &&red <20 &&grn> 10 &&grn <25 &&blu> 20 &&blu <38) color ="AMARELO"; else if (red> 65 &&red <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

Esquemas

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

Processo de manufatura

  1. Faça Monitor Ambilight usando Arduino
  2. Jogo Arduino Pong - Tela OLED
  3. Detector de frequência de áudio
  4. Arduino Tamagotchi Clone - Animal de estimação digital
  5. Manipulador de interruptor de luz sem fio
  6. Tech-TicTacToe
  7. Pistola de água com sensor de movimento
  8. Cronômetro de contagem regressiva do Arduino
  9. Arduino RGB Color Mixer
  10. Arduino Sunflower:An Electronic Sun-Dancer