Introduction: Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV

A nossa lixeira inteligente consiste na separação automática do lixo. Através de uma webcam, ela identifica o tipo de lixo e o deposita no compartimento adequado para posteriormente ser reciclado.

Step 1: Lixo, Um Problema Mundial.

Um dos principais problemas encontrado no meio urbano, especialmente nas grandes cidades é o lixo sólido, resultado de uma sociedade que a cada dia consome mais.

Para ter uma noção mais ampla do problema tomemos a cidade de São Paulo como exemplo, em média cada pessoa produz diariamente entre 800 g a 1 kg de lixo diário, ou de 4 a 6 litros de dejetos, por dia são gerados 15.000 toneladas de lixo, isso corresponde a 3.750 caminhões carregados diariamente.

Em um ano esses caminhões enfileirados cobririam o trajeto entre a cidade de São Paulo e Nova Iorque, ida e volta.



Step 2: Por Que Separar O Lixo?

Com a separação dos lixos fica mais fácil e rápida a reciclagem do material.
A reciclagem reduz consideravelmente os casos de doenças e mortes devido às enchentes e acúmulo de lixo em locais urbanos, diminui impactos sobre o meio ambiente e ajuda a cidade se tornar mais limpa.

Step 3: Qual a Solução?

Nossa solução é uma Lixeira feita com materiais também recicláveis que analisa o tipo de lixo e o descarta no compartimento correto.

O reconhecimento é através de uma câmera que utiliza um banco de dados de imagens e formas.
Há nela um algoritmo com a tecnologia de aprendizagem automática capaz de aprender e reconhecer o material do objeto descartado (papel, metal, plástico, vidro ou outros).

Após a detecção e classificação do objeto, um sinal é enviado para um motor que move uma esteira, posiciona no local adequado e outro motor é acionado para fazer o despejo.

Step 4: Quais As Tecnologias Utilizadas?

Software:

- OpenCV

- Haar cascade classifier

- Python

- MRAA

- Linux (Debian)

Hardware:

- Dragonboard 410c

- 96board Mezzanine

- Motors DC

- Driver Motor Ponte H L298N

- Fonte ATX 230W

- Webcam

Step 5: Algoritmos E Códigos

Parte 1 - OpenCV, Statistic

Como o treinamento para reconhecer os 5 tipos de materiais descritos no Step 3 demoraria muito, decididor afunilar o problema e detectar apenas latas e garrafas de plástico para comprovar a prova do conceito. Essa detecção ocorreu nos seguintes passos.

1 - Treinamento: Foram utilizadas 20 imagens divididas entre garrafas e latas

2 - Detecção:

2.1 - Converter imagem para o espaço de cor HSV. Aumentar 'V' por um fator de 2 com o objetivo de ter features mais visíveis.

2.2 - Encontrar gradiente de Sobel nos eixos x e y.

2.3 - Computar a magnitude com iguais pesos em ambas as direções.

2.4 - Aplicar o método de Otsu na imagem detectada pela câmera..

2.5 - Aplicar Closing na imagem detectada pela câmera.

2.6 - Aplicar o detector de bordas Canny

2.7 - Calcula a transformada de linha de Hough

2.8 - Enquadrar bordas do objeto num retângulo.

2.9 - Checar proporção largura x altura para comparação com o banco de dados. No banco estão armazenados diversos modelos positivos e negativos.

3 - Separação: Dado a saída da etapa anterior (garrafa ou lata), movemos a esteira (motor) para o lado esquerdo ou direito despejando o objeto e acendendo um LED para indicar que o processo ocorreu com sucesso.

3.1 - Devido a tensão de saída da DragonBoard ser de apenas 1.8V nos pinos digitais e os drivers dos motores requererem uma tensão de entrada de no mínimo 5 V, utilizamos as saídas 12 V de uma fonte ATX de 230 W.

3.2 - Nesta etapa utilizamos o mraa para mapear os dois polos do motor em pinos de entrada na mezzanine board para podermos girar a esteira em ambas as direções.

Obs.: É importante deixar claro que o mapeamentos dos pinos da mezzanine board deve estar liberado no diretório /sys/class/gpio e que o código seja executado como root (sudo).

4 - Armazenamento de dados:

Todas as informações detectadas são enviadas para uma instância da AWS IoT onde os dados podem ser acessados pelas pessoas competentes e tomar ações necessárias. Essas dados são trocados utilizando o protocolo MQTT onde é possível o envio e recebimento de informações de forma bidirecional.

Step 6: Imagens Do Protótipo Em Construção. (Versões 1.0 E 2.0)

Step 7: Autores Do Projeto

Da esquerda pra direita:

- David Carvalho
- Lucas Azevedo
- Rodrigo Alves
- Larissa Lages
- Manoela Vieira
- Bianca Lisle
- Andréa Duque


Agradecimentos:

Angelo Brito, Thiago Pinheiro, Heitor Araújo e à todos que nos ajudaram diretamente e indiretamente.