Introduction: Sistema Para Mapeamento De Buracos Em Vias Públicas Com a DragonBoard 410c
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:
- git clone https://github.com/Tijndagamer/mpu6050.git
- Alterar a linha 15 do arquivo mpu6050/mpu6050.py: de 1 para 0
- Executar: python setup.py install
- 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