Introduction: Sistema Para Mapeamento De Buracos Em Vias Públicas Com a DragonBoard 410c

About: Engenheiro Biomedico e Tecnico em Eletronica. Ampla experiencia com desenvolvimento de placas de circuito impresso e sistemas embarcados. Co-fundador/CTO da startup Ioton Technology, fundador do makerspace Mak…

Este projeto foi desenvolvido para o programa de parcerias em IoT da Qualcomm - “Inventando o Futuro com DragonBoard 410c”. O histórico do desenvolvimento e outros detalhes podem ser encontrados no site do Embarcados Contest.

O sistema proposto visa detectar imperfeições na pavimentação para realizar um mapeamento da qualidade das vias públicas com um custo baixo de implantação, pois utiliza a própria frota da prefeitura ou até mesmo os ônibus do transporte público.

  • Problemas encontrados:
    • A pavimentação é sempre uma das principais reivindicações da comunidade e é um problema frequente nas cidades brasileiras.
    • Os buracos afetam a boa fluidez do trânsito e causam desconforto e prejuízos aos motoristas.
    • O método mais comum e utilizado atualmente para o levantamento das ruas que precisam de manutenção é por meio dos cidadãos que realizam chamados ao órgão responsável.
    • O que falta é um método de baixo custo para coletar dados sobre a qualidade do pavimento para todas as ruas de uma cidade de uma maneira consistente e metódica.
  • Solução proposta:
    • O projeto resolve os problemas apresentados por meio de um sistema que realiza o mapeamento da qualidade das vias públicas com um custo de implantação muito baixo, pois é possível utilizar a própria frota de carros da prefeitura ou até mesmo os ônibus do transporte público.
    • O sistema possui acelerômetro e uma câmera (na traseira de um veículo) para detectar imperfeições da pavimentação. Os dados serão registrados e apresentados em um mapa indicando a classificação da qualidade do pavimento, bem como os pontos críticos que devem ser priorizados.
  • Diferenciais:
    • Sistema open source que poderá ser modificado e adicionado novos recursos, como, por exemplo: sensor de qualidade do ar, sensor de nível UV, entre outros sensores que monitorem variáveis interessantes para indicadores de qualidade de vida de uma cidade.
    • Não existe nenhum sistema do tipo sendo utilizado no Brasil.
    • A proposta sugere utilizar a própria frota de carros da prefeitura ou o transporte público, ou seja, não é necessário destinar um veículo específico para realizar o mapeamento.
    • A ideia é que este mapeamento fique aberto para que qualquer cidadão veja e acompanhe a situação da pavimentação da cidade, podendo inclusive servir na tomadas de decisão ao traçar rotas desviando de pontos críticos.

Autor do projeto: Kleber Lima da Silva

Step 1: Materiais Utilizados

  • 1 Placa de desenvolvimento Qualcomm DragonBoard 410c (DB410c)
  • 1 Linker Mezzanine card para 96board
  • 1 Fonte AC/DC 12V 2A
  • 1 Módulo Acelerômetro+Giroscópio de 3 eixos - MPU6050
  • 1 Webcam USB
  • 1 Cartão micro SD + adaptador

Step 2: Diagrama De Blocos

Este diagrama de blocos mostra de maneira simplificada o hardware do sistema proposto e a partir dele, listam-se as principais funcionalidades de cada elemento:

  • Qualcomm DragonBoard 410C: placa de desenvolvimento com o Debian (Linaro Linux release 17.04) para a execução da aplicação.
  • GPS: obtenção dos dados de geolocalização.
  • WiFi: conectividade com a Internet para a comunicação com o servidor.
  • Cartão SD: log dos dados entre os envios para o servidor e enquanto não estiver conectado à Internet.
  • Webcam: obtenção das imagens da pavimentação para classificação e registro.
  • Acelerômetro: identificação de padrões de buracos e/ou qualidade da pavimentação.
  • Servidor (nuvem): local para guardar os dados e fotos obtidas pelo sistema.
  • Mapa: interface para a apresentação dos dados de maneira mais intuitiva para as tomadas de decisões.

Step 3: Instalação Do Debian Na DB410c

Neste passo são apresentados os procedimentos para instalar o Debian Linaro na memória interna da DB410c.

  • Baixar a imagem mais recente: neste link
  • Conferir o MD5SUM e descompactar a imagem
  • Gravar a imagem no cartão SD (pelo menos 4GB) - procedimentos no Linux:
    • Usar o comando lsblk para verificar o caminho do cartão SD (substituir o XXX)
    • sudo dd if=db410c_sd_install_debian.img of=/dev/XXX bs=4M oflag=sync status=noxfer
  • Gravar a imagem para a eMMC da DB410c:
    • Selecionar o boot (chave S6): 0-1-0-0 {SD Boot switch set to “ON”}
    • Necessário um teclado ou mouse para iniciar a instalação
    • Também é necessário um monitor HDMI
    • Conectar a alimentação, vai aparecer uma tela na qual deverá ser pressionado o botão “Install(i)”
    • Ao término, remover o cartão SD e clicar em OK
  • Usuário e senha padrão da imagem: linaro

Step 4: Instalação E Teste Do GPS Onboard Da DB410c

Este projeto foi desenvolvido em Python, a seguir são informados os comando prévios necessários para a utilização do script de testes do GPS onboard.

  • Instalar o GPS onboard: sudo apt-get install gpsd-clients gnss-gpsd
  • Dica 1: Visualizar NMEA no terminal: cat /dev/ttyGPS0
  • Dica 2: Comandos para visualizar as informações detalhadas do GPS: gpsmon (via terminal) ou xgps (com display)
  • Instalar a biblioteca parsing NMEA: pip install pynmea2
  • Instalar a biblioteca serial: pip install pyserial
  • Utilize este script em Python para testar o GPS: gps-test.py

Observação: todos os códigos fontes utilizados neste projeto estão neste repositório do GitHub.

Step 5: Instalação E Teste Do MPU6050

A sequência a baixo é necessária para a utilização do módulo MPU6050.

  • Usar o conversor de nível da Linker Mezzanine em 3V3 e ligar o módulo MPU6050 na porta "IIC"
  • Instalar o driver I2C: sudo apt-get install python-smbus
  • Permitir usuário normal linaro usar a I2C: sudo adduser linaro i2c
  • Instalar a biblioteca MPU6050:
  • Utilize este script em Python para testar o MPU6050: mpu-test.py

Step 6: Webcam - OpenCV E Envio Para O Google Drive

O script deste passo utiliza o OpenCV para tirar fotos e envia elas para o Google Drive.

  • Instalar o OpenCV: sudo apt-get install python-opencv
  • Instalar a biblioteca PyDrive: pip install PyDrive
  • Configurar a Google API: não fazer o passo 5 do guia deste link
  • Criar um arquivo settings.yaml para configurar a autenticação automática (melhor do que seguir o “passo 5” que é necessário sempre abrir o browser). Observação: ainda sim será necessário realizar o login e permitir o acesso pela primeira e única vez.
  • Utilize este script em Python para testar a Webcam e o envio para o Google Drive: cam-drive-test.py

Step 7: Aplicação Final

Em desenvolvimento...

Step 8: Referências

Step 9: Repositório No GitHub

Veja todos os códigos fontes do projeto no repositório do GitHub: olha-o-buraco