SmartFare

Participantes:

Luis Fernando Guerreiro
Diego Gabriel Lee
Diogo Guilherme Garcia de Freitas

Resumo do projeto:

Sistema de bilhetagem eletrônica e coleta de dados do transporte público. Geração de informações de geolocalização, distância percorrida, origem e destino de passageiros para auxiliar a gestão do transporte público.

Descrição do projeto:

 

A nossa melhor opção

O transporte público é uma ótima opção para viver em cidades sem grandes congestionamentos e problemas de mobilidade urbana. Ônibus, trens, metrôs e balsas tem o potencial de aumentar o fluxo de pessoas passando por uma mesma rota até o seu destino.

Mas nossa melhor opção também tem problemas

Infelizmente a realidade do transporte público no Brasil são ônibus caros, lotados e atrasados que demoram a chegar em seu destino. Sistemas de transporte público não integrados e que fazem rotas desconexas com o verdadeiro destino dos passageiros. Como podemos melhorar isso?

Dados para tomada de decisão

E se pudéssemos saber onde e quando os passageiros estão embarcando e desembarcando do seu transporte? E se soubéssemos a média de ocupação de uma linha de ônibus em qualquer horário de qualquer dia da semana? Quanto melhor seria o planejamento urbano de uma cidade se apenas tivéssemos acesso a dados como esses?

Por que SmartFare?

O SmartFare é uma solução que vai proporcionar dados relevantes e verdadeiros para a gestão do transporte público na sua cidade. Ainda oferece um sistema de bilhetagem eletrônica moderno e automatizado.

Sua vida com SmartFare

Para o passageiro, usar o SmartFare é simples como seguir esses 3 passos:

  1. Adquira seu cartão e adicione créditos
  2. Ao entrar no ônibus, passe o cartão no leitor da porta de embarque
  3. Ao sair do ônibus, passe o cartão no leitor da porta de desembarque

Simples, não é mesmo?

Dados reais para resolver problemas reais

SmartFare empodera a gestão do transporte público com os seguintes dados:

  • Geolocalização de embarque e desembarque de um passageiro
  • Distância percorrida por um passageiro
  • Horário e data de embarque e desembarque de um passageiro
  • Duração de uma viagem de um passageiro
  • Número de passageiros em um veículo em determinado período
  • Veículo e linha em qual o passageiro embarcou
  • Saldo atual do passageiro no momento da viagem

Uma solução, infinitas possibilidades.

Os dados do SmartFare podem ser combinados de inúmeras maneiras para criar informações úteis que facilitam a tomada de decisão na gestão do transporte público. Aqui estão algumas delas:

  • Observar os horários de pico com precisão
  • Encontrar a média de ocupação de um veículo em um período de tempo
  • Mapear todos os embarques e desembarques na cidade
  • Obter informações de origem e destino de passageiros
  • Melhorar as rotas das linhas de ônibus

Mas como funciona o SmartFare?

O SmartFare é uma solução dividida em duas partes, um sistema embarcado no veículo (parar gerar dados) e um webservice (para receber e organizar os dados).

Dentro do ônibus utilizaremos a placa LPCXpresso4337 para registrar os seguintes dados:

  • Momentos de embarque e desembarque dos passageiros, fornecidos por dois leitores de cartão (RFID), uma na porta de saída e outro na entrada;
  • Coordenadas geográficas do veículo,adquiridas através de um módulo GPS;
  • Distância percorrida entre os momentos de embarque e desembarque de um passageiro, fornecida pelo odômetro do veículo.

O sistema armazena localmente estes  dados e os associa à viagem de cada passageiro por meio do ID único do usuário, que é gravado no cartão. Com isso pode-se calcular a tarifa da viagem e atualizar o saldo do passageiro, também guardado no cartão.

Usando um módulo de comunicação GSM os dados do sistema são enviados para o webservice. A sincronização pode ser feita regularmente durante a operação do veículo e também quando ele chega ao ponto final, sincronizando todos os dados pendentes.

O webservice fica responsável por armazenar e organizar os dados recebidos do veículo e também simula a interação com o sistema de cadastro de usuários e recarga do cartão.

SmartFare

Uma solução para cidades inteligentes

Visite-nos em: smartfare.herokuapp.com

fluxogram2

 

Histórico do desenvolvimento:

Inicialmente a equipe buscou informações sobre as necessidades de melhoria no transporte público de Curitiba. Através de conversas com professores e visita à  URBS (Urbanização de Curitiba), percebeu-se uma grande demanda de captação de informações sobre o transporte público, como pode ser visto na matéria , de 25 de abril de 2016 da Gazeta do Povo, um dos principais jornais do estado do Paraná.

http://www.gazetadopovo.com.br/vida-e-cidadania/apos-quase-2-anos-pesquisa-para-detalhar-deslocamentos-em-curitiba-sai-do-papel-8uqt30hnyjisp6t0x9o4os53f

Segundo a matéria, o edital para a pesquisa que procura detalhar deslocamentos em Curitiba está em aberto desde agosto de 2014 e apenas agora irá sair do papel. Um dos focos é traçar hábitos de transporte do curitibano e de moradores de 17 cidades da Região Metropolitana com o objetivo de criar estratégias sobre a mobilidade urbana na cidade.O levantamento tem um custo estimado em R$ 6,3 milhões e uma das etapas da pesquisa consiste em entrevistas pessoais com diversas perguntas, sendo uma delas a origem e destino das viagens cotidianas.

Através de brainstormings e discussões a equipe pensou numa maneira de ajudar na coleta de dados de uma maneira prática e com uso da tecnologia: SmartFare. Assim acredita-se que seja possível coletar um número muito maior de informações sobre origem e destino, horários, duração da viagem, número de passageiros no ônibus e localização de uma maneira discreta e prática utilizando a Internet das Coisas.

 

Desenvolvimento semanal do projeto


Semana 1 (22/08)

Geral:

  • Visita na URBS (Urbanização de Curitiba) para verificar necessidades do transporte público em uma grande cidade
  • Validação da ideia com professores e URBS
  • Primeira versão do cronograma de projeto
  • Diagrama de Gantt com as atividades e prazos

diagrama

Sistema Embarcado:

  • Estudos do kit LPCXpresso4337 e do LPCOpen

Semana 2 (29/08)

Geral:

  • Reorganização do cronograma de projeto
    • Adicionadas atividades mais detalhadas na plataforma Freedcamp
    • Definidas as atividades de cada integrante
  • Discussão dos componentes do sistema
    • Decisão de usar apenas um microcontrolador
    • Comunicar com os periféricos através dos seguintes protocolos:
      • SPI para os leitores RFID  e displays LCD
      • UART para os módulos GPS e GSM
      • Não utilizar CAN devido ao tempo limitado e falta de experiência
  • Criação dos repositórios de software
    • Git para o webservice e banco de dados
    • Git para o sistema embarcado

gitlab

Sistema Embarcado:

  • Familiarização com a placa NXP LPCXpresso4337
    • Testes com os projetos exemplo LPCOpen na IDE LPCXpresso
    • “Hello World” do display LCD incorporado no shield OM3082
    • Teste do RTC, mostrar o horário através da UART

displayrtc_test

Webservice:

  • Primeiros exemplos de requisição HTTP adicionados no github
  • Início dos testes do webservice
    • Testes com exemplos de API REST
    • Familiarização com Node.js e MongoDB

Semana 3 (05/09)

Geral:

  • Aquisição dos componentes fundamentais
    • Encomenda dos módulos GSM, GPS e RFID
  • Criados os fluxogramas funcionais do software
    • Leitura do cartão na entrada
    • Leitura do cartão na saída
  • Criado o diagrama em blocos geral do projeto

Sistema Embarcado:

  • Primeiros testes com o módulo RFID
    • Estudo do funcionamento do dispositivo
    • Testes utilizando a biblioteca MFRC522 , leitura e escrita de dados no cartão.

card_memory_dump

Webservice:

  • Criação do banco de dados não-relacional com exemplos
  • Codificação de uma RESTful API para operações CRUD no banco de dados
  • Início do desenvolvimento do dashboard do admin do sistema

app


Semana 4 (12/09)

Geral:

  • Melhorias na descrição do projeto no site
  • Elaboração de diagrama estrutural de hardware
    • Definição dos componentes definitivos do sistema
    • Nomes e os protocolos de comunicação utilizados
  • Aperfeiçoamento dos diagramas funcionais de software

diagrama_geral850pixels

 

Sistema Embarcado:

  • Primeiros testes com o módulo GPS utilizando a biblioteca TinyGPS

gps_test

  • Primeiros testes com o módulo GSM utilizando a biblioteca Freematics/SIM800/
  • Adicionada a biblioteca MFRC522 adaptada para a LPCXpresso4337 no Git
    • Primeira versão em C++
    • Adaptação da biblioteca para C

Webservice:

  • Definição dos requisitos do webservice
    • Definição dos tipos de dados guardados no servidor
    • Definição do formato de envio dos dados
      •  Dados encapsulados em JSON e enviados via requisição HTTP.

schema


Semana 5 (19/09)

Geral:

  • Desenvolvimento de uma logo para o projeto
  • Desenvolvimento de nova imagem de apresentação do projeto

Sistema Embarcado:

  • Iimplementação de funções extras e testes com a biblioteca MFRC522
  • Desenvolvimento de circuito para alimentação do módulo GSM SIM800L
  • Planejamento inicial de todos os pinos usados na placa LPCXpresso4337
  • Desenvolvimento da geração de dados em formato JSON pela coleta de dados

json

Webservice:

  • Testes no browser da API desenvolvida

captura-de-tela-2016-10-20-00-05-12


Semana 6 (26/09)

Geral:

  • Criação do diagrama de fluxo de uso do projeto

Sistema Embarcado:

  • Integração completa da biblioteca do módulo RFID MRFC522
  • Início do desenvolvimento de esquemático para o sistema
  • Testes com os dois leitores RFID funcionando ao mesmo tempo
  • Comunicação do módulo GSM com a rede de telefonia móvel bem sucedida
  • Requisição HTTP GET usando o módulo GSM  e página de testes

Webservice:

  • Refatoração do projeto em uma estrutura de diretórios padronizada

Semana 7 (3/10)

Geral:

  • Planejamento da montagem física do sistema
  • Desenvolvimento de ideias de roteiro para o vídeo de apresentação do projeto
  • Concepção e criação do logotipo e identidade visual do projeto

Sistema Embarcado:

  • Conclusão do esquemático do sistema
  • Integração da biblioteca do módulo GSM SIM800L concluída
  • Reorganização de código e pastas do projeto

img_20161006_110949918

Webservice:

  • Adição de uma landing page com detalhes do projeto
  • Criação das routes para as demais views com Node.js
  • Primeiro deploy da versão de testes no Platform-as-a-Service (PaaS) Heroku (URL: smartfare.herokuapp.com)

landing

 


Semana 8 (10/10)

Geral:

  • Divulgação do projeto com sua nova identidade visual

Sistema Embarcado:

  • Refatoração do código para fazer o display e o RFID compartilharem o mesmo barramento
  • Implementação de funções no firmware para a formatação dos dados em JSON
  • Teste da biblioteca para o display Nokia 5110
  • Projeto e confecção de placa de circuito impresso para realizar as conexões entre a placa e os periféricos

20161016_163657  20161016_163635 boardv4

img_20161016_210042523

Webservice:

  • Criação do banco de dados MongoDB no Database-as-a-Service (DaaS) mLab
  • Conexão do webservice com o servidor de banco de dados
  • Testes da API desenvolvida com a ferramenta Postman

Semana 9 (17/10)

Geral:

  • Aquisição de uma caixa para acomodar o sistema
  • Montagem do sistema na caixa e acabamento final do módulo
  • Gravação e edição do vídeo de demonstração
  • Revisão da documentação do projeto

img_20161020_211701550  img_20161020_224621730  img_20161020_020134467

catraca  porta_saida

Sistema Embarcado:

  • Finalização do acabamento da placa de circuito impresso
  • Testes de hardware e software
  • Release no GitHub

Webservice:

  • Repaginação do website para seguir a identidade visual do projeto

dashboard


Principais desafios técnicos:

Geral:

  • Devido ao grande número de componentes sendo utilizados as vezes havia dificuldade em saber se o erro era de software ou de hardware
  • Acomodar as partes do sistema de maneira ideal dentro da caixa adquirida

Hardware:

  • Realizar as conexões corretas entre o microcontrolador e os periféricos sem a PCI
  • Rotear as vias da placa sem fabricar uma PCI dual layer
  • Muitos periféricos para conectar na placa

Software/Firmware:

  • Nenhuma experiência anterior com LPCOpen
  • Codificar firmware sem o auxílio da plataforma mbed
  • Portar bibliotecas de periféricos de C++ para C
  • Muito periféricos para programar no projeto
  • Identificar problemas em protocolos de comunicação serial sem o auxílio de um analisador lógico

Hardware:

Diagrama funcional:

diagrama_hardware

 

Lista de componentes:

  • Controlador principal: placa NXP LPCXpresso4337
  • Leitores de RFID MFRC522 com controlador NXP MFRC522
  • Display LCD da entrada : integrado no shield OM13082, usa controlador ST7567
  • Display LCD na saída: Nokia 5110, usa controlador PCD8544
  • Módulo Bluetooth JY-MCU
  • Módulo GPS GY-GPS6MV2
  • Módulo GPRS GSM SIM800L

 

Esquemático do sistema:

Esquemático em PDF

esquematico_final

 

Software/Firmware:

Link para nosso website e webservice: smartfare.herokuapp.com

Acompanhe o desenvolvimento do projeto

Fluxogramas funcionais

entrada_cartao_v2saida_cartao_v2

Referências:

Geral:

Plataforma de gerenciamento de projetos: https://freedcamp.com

Sistema Embarcado:

Biblioteca MFRC522 do RFID: https://github.com/miguelbalboa/rfid.git

Biblioteca GPS: http://arduiniana.org/libraries/tinygps/

Biblioteca GSM para HTTP: https://github.com/stanleyhuangyc/Freematics/tree/master/libraries/SIM800

Web Server:

Node.JS: https://nodejs.org/en/about/

MongoDB: https://docs.mongodb.com/manual/core/data-modeling-introduction/