Sistema Inteligente de Coleta de Resíduos

Participantes:

Fabricio Bottega
Josias Marcos Orlando
Matheus Dal Mago

Resumo do projeto:

Sistema de medição e monitoramento do nível de resíduos contido em conteineres, tendo como propósito a otimização da rota de coleta dos mesmos.

Descrição do projeto:

Diversas grandes e médias cidades já adotaram o sistema de coleta mecanizada de resíduos através de conteineres. Esse sistema é periódico e sem nenhum tipo de controle ou acompanhamento individual dos conteineres, o que acaba por resultar em conteineres transbordados ou coletas desnecessárias de conteineres quase vazios. Para tornar o processo de coleta de resíduos ainda mais otimizado, é proposto um sistema de medição do nível de resíduos contidos nos conteineres para que os mesmos possam ser coletados quando atingirem sua capacidade máxima de armazenamento, assim como evitar o deslocamento de caminhões para coletar conteineres que ainda possuem capacidade de armazenamento remanescente.

Na construções do sistema serão ligados sensores capazes de medir alguns pontos de distância entre a tampa do conteiner e o nível de resíduos contidos no mesmo. Uma vez medidos esses dados, pode-se calcular um valor percentual para o nível de resíduos contidos no conteiner. Em seguida esse nível calculado é enviado para um servidor IoT que interconectaria todos os conteineres e armazenaria seu nível residual e sua posição geográfica.

Com os dados armazenados e passado seu processamento, os dados são disponibilizados em uma página web que contém um mapa da região, onde é possível selecionar individualmente cada conteiner vizualiza-lo e incluí-lo no cálculo de uma rota de coleta eficiente que somente inclui os conteineres em que o nível residual está acima do nível aceitável.

Esse sistema pode trazer inúmeros benefícios que podem ser classificados em três categorias: benefícios ambientais, sociais e econômicos. Dentre os benefícios ambientais estão evitar que conteineres transbordem e a população se visse obrigada a depositar os resíduos do lado externo do conteiner, além de evitar a circulação desnecessária de caminhões de coleta, os quais são responsáveis, segundo pesquisa, pela maior taxa de emissão de dióxido de carbono por quilômetro rodado.

Como benefícios sociais podemos citar o fato de que por evitar que conteineres transbordassem, poderia ser evitado o contato direto com o lixo para as pessoas que circulam pelas calçadas. Além disso, esse sistema pode ser classificado como economicamente benéfico uma vez que o mesmo acaba por evitar a circulação desnecessária de caminhões, reduzindo os custos com combustíveis, manutenção de equipamentos e caminhões, além de reduzir a mão-de-obra envolvida no processo de coleta.

Segue abaixo o vídeo explicativo do SysClean:

Histórico do desenvolvimento:

Inicialmente, como forma de validação da nossa proposta de solução foram realizadas inúmeras simulações afim de encontrar a disposição dos sensores na tampa do conteiner que fosse capaz de estimar um nível residual com um erro máximo aceitável. Esse erro máximo, para somente 4 medidas pontuais, ficou em no máximo 10%, o que é um erro bem aceitável para nossa aplicação.

screen-shot-2016-09-12-at-9-55-28-pm

Em seguida, foi desenvolvido o código necessário para conectar os sensores ultrassônicos a placa de desenvolvimento LPCXpresso 4337. Esse código consiste na leitura de 4 pontos dentro do conteiner de resíduos, na interpolação de outros 16 pontos e na estimativa do nível a partir desses 20 pontos obtidos.

Uma vez calculado esse valor de nível, foi desenvolvido o código necessário para utilizar o módulo GSM M590, o qual, através da rede celular GPRS, envia esse valor de nível para o portal IoT para que possa ser disponibilizado ao usuário.

Após isso, foram desenvolvidas e adicionadas bibliotecas que implementam as funções de medições de temperatura, verificação da posição da tampa do container através do acelerômetro, e disposição de informações necessárias no LCD do Shield OM13082.

Para a disponibilização dos dados para o usuário final, foi desenvolvida uma interface frontend em JavaScript e HTML, em torno da API do Google Maps. Nela os dados são dispostos com sua respectiva geolocalização e classificados seguindo um padrão de cores.

mapsroute

Como projeto mecânico, foi realizado o projeto CAD da case da placa e case dos sensores na ferramenta SolidWorks. Posteriormente, essas cases foram impressas em 3D.

container_render

 

conteiner2

 

Para finalizar, foi construída uma miniatura de conteiner para ser utilizada como protótipo de apresentação. Devido as suas dimensões, esse protótipo conta somente com dois sensores ultrassônicos.

prorotipo

Durante o desenvolvimento do projeto foram encontrados alguns problemas técnicos que acabaram por atrasar o cronograma de desenvolvimento do projeto. Podemos destacar os seguintes:

  • Primeiramente, a grade dificuldade foi utilizar a placa LPCXpresso 4337, uma vez que essa plataforma era desconhecida pelos membros. Além disso, a IDE LPCXpresso pareceu um pouco confusa e com exemplos que não eram de fácil compreensão. Tudo ficou melhor quando o firmware da placa foi atualizado e os códigos passaram a ser desenvolvidos através da plataforma do mbed;
  • Outro problema foi o fato dos pinos digitais trabalharem com uma tensão de 3.3V e os sensores ultrassônicos escolhidos funcionarem com 5V. Isso poderia acarretar na danificação de pinos, ou até mesmo de componentes da placa, devido ao sinal de retorno vindo do sensor ultrassônico ser 5V. Para resolver isso, foi desenvolvida uma placa auxiliar para realizar a conversão lógica do sinal utilizando dois buffers 74HC125;
  • Por fim, o cálculo do volume de resíduos contido no conteiner, utilizando apenas 4 sensores, foi árduo. Com 4 sensores obteve-se 4 medidas pontuais na superfície interna (110x90cm)  do conteiner, o que tornou difícil o cálculo do nível residual. Para contornar isso, foram feitas inúmeras interpolações com esses pontos originais, e assim foi possível estimar o erro do sistema com no máximo 10% de erro, valor bem aceitável para esta aplicação;

Hardware:

Sensores

O sensor utilizado para realizar as medições do nível de resíduos é o HC-SR04. O mesmo foi escolhido por ter um preço bastante reduzido, ser simples de utilizar e fácil de encontrar. Para um conteiner de lixo de tamanho normal, 4 desses sensores são utilizados.

Já para um controle mais avançado das situações em que o conteiner está operando, utilizou-se dos sensores de temperatura e acelerômetros presentes no shield OM13082, para detectar situações adversas ao funcionamento do sistema e prever possíveis danos ao conteiner.

Comunicação

Como interface de comunicação do conteiner para a internet, utilizamos o módulo GPRS M590, novamente devido ao seu baixo custo e simplicidade. Este módulo funciona com uma conexão TCP/IP através da rede GSM, sendo controlado por comandos AT enviados via UART pela placa de desenvolvimento.
flow_chart3

Esquemático

Um esquemático simplificado do sistema é mostrado abaixo. As conexões entre a placa de desenvolvimento LPCXpresso4337 e o shield OM13082 foram abstraídas, já que estas possuem conexão através do header padrão das mesmas.

Um ponto importante a ser observado é a conversão de nível lógico que deve ser feita entre a placa de desenvolvimento e os sensores ultra-sônicos, uma vez que a primeira trabalha com um nível lógico de 3.3V, e o segundo com 5v. Para fazer esta conversão, utilizaram-se dois buffers 74HC125, sendo um desses com alimentação em 5V (placa -> módulo) e outro com alimentação em 3.3V (módulo -> placa).

nxp_esquematico_hardware

Software/Firmware:

Para a utilização do hardware em questão, foi utilizada a plataforma online mbed, pela integração já existente com diversos dispositivos que viemos a utilizar. Os códigos do projeto no site do mbed podem ser encontrados neste link, porém para um melhor entendimento e documentação do código, recomendamos que essa consulta seja feita no GitHub do projeto. Algumas bibliotecas que foram utilizadas são disponibilizadas pela comunidade, porém outras, de uso mais específico, tiveram de ser implementadas. Estas são listadas abaixo.

GPRS library

Como utilizamos um módulo GPRS genérico (M590) que funciona com comandos AT através da porta serial, desenvolvemos uma biblioteca para utilizá-lo de forma mais simples em nossa aplicação principal. Esta biblioteca faz a conexão entre a placa de desenvolvimento e o Portal IoT, através da implementação do protocolo HTTP. O código desta biblioteca está também disponível no GitHub do projeto.

#include <gprs.h>
...
int main(){
  Serial *modulo = new Serial(P2_10, P2_11); // TX, RX
  Serial *debug = new Serial(USBTX, USBRX);

  Communication c(modulo, debug, 1); // Aguarda a inicialização do módulo
  ...
  c.connect(); // Conecta na rede da operadora e ativa o contexto PDP
  ...
  // c.send(args...) - Abre o socket e envia os argumentos passados
  c.send(LOG, "Modulo ativo");
  c.send(PROPERTY, "property_key", 25.4); // Envia o valor 25.4 para a property chamada "property_key"
  ...
  c.disconnect(); // Fecha a conexão com o Portal IoT
  ...
}

Accelerometer

Outra biblioteca desenvolvida para a aplicação foi a implementação do uso dos acelerômetros presentes no shield OM13082 para detectar a abertura da tampa do conteiner. Código também disponível no Github.

#include "BMI160.h"
...
int main(int argc, char **argv){
  BMI160 acc();
  acc.configureAccelerometer(); // Configuração inicial. A ser executada uma vez apenas
  ...
  int angle = acc.getAngle(); // Retorna o ângulo atual da tampa. Pode ser 0, 90, 180 ou 270. -1 in case of error.
  ...
}

 

Front-End

Nossa interface front-end, onde é possível selecionar os conteineres a serem mostrados no mapa e traçar uma rota de coleta, foi desenvolvida em html, css e javascript. Já um site estático que é mostrado na página inicial foi desenvolvido utilizando o framework jekyll.

Ferramentas Utilizadas

Durante o decorrer do desenvolvimento, foram utilizadas as seguintes plataformas e ferramentas:

  • Software Embarcado
    • mbed (C/C++)
    • LPCXpresso IDE (C/C++)
    • HTTP over GPRS
  • Front-End
    • nginx (webserver)
    • Cloud Services (Digital Ocean)
    • NameCheap (DNS)
    • Eclipse (html, JavaSript, CSS)
  • Hardware
    • SolidWorks (modelagem)
    • Eagle CAD (PCB)