Índice:

Sensor de cor DIY simples da Magicbit: 5 etapas
Sensor de cor DIY simples da Magicbit: 5 etapas

Vídeo: Sensor de cor DIY simples da Magicbit: 5 etapas

Vídeo: Sensor de cor DIY simples da Magicbit: 5 etapas
Vídeo: Minicurso Internet das Coisas (BIPES) - Aula 01 2024, Novembro
Anonim
Image
Image

Neste tutorial, aprenderemos como fazer um sensor de cores simples usando Magicbit com Arduino.

Suprimentos

  • Magicbit
  • Cabo USB-A para Micro-USB

Etapa 1: História

Configuração de hardware
Configuração de hardware

Oi pessoal, às vezes você tem que usar sensores de cor para alguns fins. Mas pode ser que você não saiba como eles funcionam. Portanto, neste tutorial, você aprenderá como fazer um sensor de cores DIY simples usando Magicbit com Arduino. Vamos começar.

Etapa 2: Teoria e Metodologia

Neste projeto, esperamos ensiná-lo a construir um sensor de cores que pode detectar as cores vermelha, verde e azul. Este é um exemplo muito básico. Então, como fazer isso. Para isso, usamos o módulo RGB do Magicbit e o LDR embutido. Em primeiro lugar, você precisa aprender um pouco de teoria. Isso é sobre a quantidade de reflexão da luz. Agora estou fazendo uma pergunta de você. Quais são as superfícies coloridas que mais refletem a luz vermelha? Também quais as superfícies que refletem principalmente as luzes verdes e azuis. Pense um pouco. Mas a resposta é simples. A superfície de cor vermelha reflete principalmente a luz de cor vermelha. Além disso, as superfícies verdes e azuis refletirão as luzes verdes e azuis. Portanto, neste projeto, usamos essa teoria. Para reconhecer a cor, emitimos luzes vermelhas, verdes e azuis uma a uma. Sempre medimos a quantidade de reflexão usando o valor LDR. Se alguma luz produzir mais reflexão do que outras duas luzes, então essa superfície deve ser principalmente uma superfície colorida refletida.

Etapa 3: configuração do hardware

É muito simples. Conecte seu módulo RGB na porta superior direita do Magicbit. Este módulo possui LED Neopixel WS2812B. Este LED possui 4 pinos. Dois para alimentação e dois para entrada e saída de dados. Porque usamos um led, só precisamos de pinos de alimentação e dados no pino. Se você não tem esse módulo, você pode comprar um módulo Neopixel. Se você comprou esse tipo de módulo, você deve conectar pinos de alimentação e dados no pino ao Magicbit. Isso é muito fácil. Conecte o VCC e o GND do Magicbit aos pinos de alimentação do módulo RGB e o pino D33 ao pino de dados.

Etapa 4: configuração do software

A maior parte é feita pela programação. Usamos Arduino IDE para programar nosso Magicbit. No código, usamos algumas bibliotecas. Eles são a biblioteca Adafruit Neopixel para controle Neopixel LED e a biblioteca Adafruit OLED para lidar com OLED. Na configuração, configuramos nossas entradas e saídas. Configure também o display OLED embutido no Magicbit. No loop, verificamos se o botão esquerdo do Magicbit está pressionado ou não. Se pressionado, o sinal de entrada é 0. Porque já foi puxado pela placa. Se pressionado, fazemos a verificação de cores. Caso contrário, a tela exibirá a declaração "sem cor". Quando o botão é pressionado, acende automaticamente as luzes vermelha, verde e azul, uma a uma, e armazena a quantidade de reflexão das cores em três variáveis. Em seguida, comparamos esses valores e selecionamos a cor do valor máximo para exibir como a cor de saída.

Portanto, conecte o cabo micro USB ao Magicbit e selecione o tipo de placa e as portas de comunicação corretamente. Agora carregue o código. Então é hora de testar nosso sensor. Para testar isso, mantenha o papel com superfície vermelha, verde ou azul ou a parte superior da folha no módulo LDR e RGB e pressione o botão esquerdo. Em seguida, o display OLED mostrará qual é a cor da superfície. Se estiver errado, o motivo é que alguma cor tem alta intensidade de luz. Como exemplo, em cada superfície verde a saída é vermelha, então você tem que reduzir o brilho da luz vermelha de uma certa quantidade. Porque a luz vermelha tem brilho muito alto nesse caso. Portanto, tem alta reflexão. Se você não sabe como controlar o brilho, consulte o tutorial no link abaixo.

magicbit-arduino.readthedocs.io/en/latest/

Neste link você pode descobrir como controlar o módulo RGB da Magicbit. E também você pode descobrir como trabalhar com LDR e botão de pressão usando Magicbit. Leia esse documento e estude mais como melhorar o sensor de cores. Porque este é um exemplo muito básico sobre como os sensores de cores estão funcionando. A maioria dos tipos de sensores de cores funcionam dessa maneira. Portanto, tente melhorar isso removendo o ruído da luz ambiente e outros ruídos.

Etapa 5: Código Arduino do sensor de cores

#incluir

# define LED_PIN 33

#define LED_COUNT 1 Adafruit_NeoPixel LED (LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); #include #include #include #define OLED_RESET 4 Adafruit_SSD1306 display (128, 64); # define LDR 36 # define Botão 35 int R_value, G_value, B_value; void setup () {LED.begin (); LED.show (); pinMode (LDR, INPUT); pinMode (botão, INPUT); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); atraso (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// se o botão for pressionado LED.setPixelColor (0, LED. Color (0, 50, 0)); // no LED de cor vermelha.show (); atraso (100); R_value = analogRead (LDR); // obter montagem vermelha LED.setPixelColor (0, LED. Color (150, 0, 0)); // em cor cinza LED.show (); atraso (100); G_value = analogRead (LDR); // obter montagem verde LED.setPixelColor (0, LED. Color (0, 0, 255)); // em bluecolour LED.show (); atraso (100); B_value = analogRead (LDR); // obter montagem azul if (R_value> G_value && R_value> B_value) {// vermelho é mais refletido Display ("RED", 3); } else if (G_value> R_value && G_value> B_value) {// verde é o mais refletido Display ("GREEN", 3); } else if (B_value> R_value && B_value> G_value) {// azul é o mais refletido Display ("BLUE", 3); } Serial.print ("RED ="); Serial.print (R_value); Serial.print ("VERDE ="); Serial.print (G_value); Serial.print ("AZUL ="); Serial.println (B_value); } else {LED.setPixelColor (0, LED. Color (0, 0, 0)); // desligado RGB LED.show (); Display ("SEM COR", 2); }} void Display (String commond, int size) {// exibe os dados display.clearDisplay (); display.setTextSize (size); // escala normal de 1: 1 pixel display.setTextColor (WHITE); // Desenhe texto branco display.setCursor (0, 20); // Comece no canto superior esquerdo display.println (commond); display.display (); }

Recomendado: