Site icon AranaCorp

Visão computacional com o Arduino e a câmera Pixy2

A câmera Pixy2 é um sistema de reconhecimento visual assistido por computador. Ela permite ao microcontrolador detectar cores ou linhas, para criar um robô que segue uma linha ou para apanhar objetos coloridos, por exemplo.

Material

Princípio de funcionamento

A câmera Pixy2 é um sistema de visão completo, equipado com um sensor de imagem e um microprocessador. Ela inclui algoritmos de aprendizagem e detecção de cores, linhas, interseções e de pequenos códigos de barras. A Pixy2 incorpora toda a tecnologia necessária para o reconhecimento visual.

Especificações técnicas

Esquema

A câmera Pixy2 comunica facilmente com microcontroladores por meio das suas interfaces de comunicação (UART, SPI, I2C, USB). Ela se conecta à entrada ICSP da placa Arduino.

Configuração da câmera Pixy2

Faça o download do software pixymon.

Abra o software PixyMon v2.

Aprendizagem de reconhecimento

Antes de poder utilizar a Pixy2, é preciso ensiná-la a reconhecer os objetos de interesse e atribuir-lhes uma assinatura (identificador). É possível registrar até 7 assinaturas.

Terminada a aprendizagem, podemos ver o objeto emoldurado por um retângulo com a assinatura escrita no centro.

Se tiver problemas para reconhecer o objeto aprendido, é possível definir a sensibilidade do reconhecimento nas configurações. Vá para file -> configure na aba tuning e manipule as configurações para obter o resultado desejado.

Alguns objetos não são facilmente reconhecíveis. Tente encontrar objetos com formas diferenciadas e cores fortes e distintas.

Código

Instale a biblioteca Pixy2 do Arduino. A função mais importante é a getBlocks(), que devolve o número de elementos detectados e informações como as suas assinaturas (identificador após a aprendizagem) e dimensões.

//Libraries
#include <Pixy2.h>//https://github.com/charmedlabs/pixy2/raw/master/releases/arduino/arduino_pixy2-1.0.3.zip

//Variables
Pixy2 pixy;

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init Pixy2
  pixy.init();
}

void loop() {
  testPixy();
}

void testPixy() { /* function testPixy */
  //// Get blocks from Pixy2
  // grab blocks!
  pixy.ccc.getBlocks();

  // If there are detect blocks, print them!
  if (pixy.ccc.numBlocks) {
    Serial.print("Detected ");
    Serial.println(pixy.ccc.numBlocks);
    for (int i = 0; i < pixy.ccc.numBlocks; i++) {
      Serial.print("  block ");
      Serial.print(i);
      Serial.print(": ");
      pixy.ccc.blocks[i].print();
    }
  }
}

Se encontrar problemas de compilação, pode apagar os arquivos zumobuzzzer e zumomotor (.h e .cpp) na pasta da biblioteca Documents\Arduino\libraries\Pixy2

Resultado

Uma vez carregado o código, a câmera envia mensagens ao Arduino assim que o objeto aparece no seu campo de visão. Desse modo, é possível obter a assinatura do objeto, suas dimensões e sua posição.

Aplicações

Fontes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

Exit mobile version