SmartFare
Participantes:
Luis Fernando GuerreiroResumo 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:
- Adquira seu cartão e adicione créditos
- Ao entrar no ônibus, passe o cartão no leitor da porta de embarque
- 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
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á.
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
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
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
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.
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
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
Sistema Embarcado:
- Primeiros testes com o módulo GPS utilizando a biblioteca TinyGPS
- 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.
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
Webservice:
- Testes no browser da API desenvolvida
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
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)
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
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
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
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:
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:
Software/Firmware:
Link para nosso website e webservice: smartfare.herokuapp.com
Acompanhe o desenvolvimento do projeto
- Webservice: github.com/daiogo/smartfare
- Sistema embarcado: github.com/diegolee7/SmartFare_Emb
Fluxogramas funcionais
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/