Code Monkey home page Code Monkey logo

lasseufpa / circular Goto Github PK

View Code? Open in Web Editor NEW
12.0 9.0 15.0 98.25 MB

O principal objetivo do projeto é desenvolver um sistema que seja capaz de monitorar os ônibus circulares da cidade universitária e disponibilizar para a comunidade acadêmica informações que facilitem o dia a dia dos usuários dos ônibus.

Home Page: http://peti.lasseufpa.org/

License: GNU General Public License v3.0

Java 20.61% CSS 5.52% HTML 1.33% JavaScript 62.48% C++ 9.46% PHP 0.60%
tracker bus bus-locations bus-tracking bus-monitoring bus-timing bus-schedule iot mqtt mqtt-client

circular's People

Contributors

alantas avatar albertklik avatar camilanovaes avatar felipebastosb avatar gabrielcouto27 avatar izidio avatar joary avatar lbors avatar virginiabrioso avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

circular's Issues

Tela informaçoes

Tela com informações gerais sobre todos os ônibus: localização, velocidade, lotação, etc.

Hardware frist big-picture

Peço que também deem uma olhada rápida em alguns tópicos que provavelmente vamos precisar.

  • Reguladores de tensão
  • Antenas (GPS e GSM)
  • Encapsulamento (como vamos por no ônibus, caixa...)
  • Fabricação de PCB (em fresadoras, como desenha PCB no kicad...)
  • Baterias
  • Conectores (TNC e SMA)
  • Sensores (o que vamos medir no ônibus...)

Template Padrão do APP e SITE

Na ultima reunião levantamos a necessidade de definição de uma template padrão que fosse seguido pelo app e pelo Site, então este tópico é para tratar sobre o caso.

eu criei um padrão sem cores aqui, com exemplo para o app e o site, por favor vejam se ficou bom.

template app
template site

Módulo de localização do circular - APP

Serviço de localização do circular: recebe as mensagens do Broker pela classe MQTT interpreta e atualiza os dados dos circulares
-CircularUpdateLocationService.class
Classe de conexão MQTT: realiza a conexão mqtt com o broker, gerencia a conexão, muda configurações de conexão, etc.
-MQTTConnect.class
Classe de montagem de objetos circulares: recebe e interpreta a mensagem enviada pelo broker, monta objeto Circular pelas informaçõe sinterpretadas
-CircularBuildGSM.class
Classe de armazenamento e atualização de informação de circulares
-RepositorioCircular.class

classes auxiliares:
Paho mqtt Service.
Circular.class

Adaptar site para o padrão do SIM808

Quando é feito o pedido das coordenadas para o SIM808 ele retorna em alguns formatos específicos, acho que para evitar tratamento de strings no hardware é melhor adaptar no site, deem uma olhada no formato que vamos enviar (publicar) no documento em anexo. Onde ele fala da resposta que será enviada inicia na pagina 10 e vai até a 12.

GNSS

Projeto

Esse projeto ainda está em desenvolvimento ?

Tiny GSM

Estudar MQTT e e estudar como conectar com um broker usando a biblioteca Tiny GSM

MQTT no Arduino

Vocês podem instalar o Mosquitto ou o Mosca em um computador pra criar um servidor MQTT no computador e depois fazer com que o Arduino envie e receba informações pra esse servidor.

Aqui tem a biblioteca de MQTT pra Arduino:

Download da biblioteca

GitHub da biblioteca

E aqui segue alguns tutoriais e exemplos. A maioria está em inglês mas acredito que mesmo que tenha dificuldade com o idioma consegue entender, da pra usar o Google tradutor como ajuda:

Tutorial 1

Tutorial 2

Tutorial 3

MQTT no Android

Vou concentrar aqui alguns materiais e artigos sobre a implementação de clientes MQTT no ambiente de desenvolvimento Android:

A principal implementação do protocolo MQTT para Android que encontrei se chama Eclipse Paho MQTT android service, implementada na linguagem JAVA.

Guia Eclipse PAHO MQTT para android:
http://www.hivemq.com/blog/mqtt-client-library-enyclopedia-paho-android-service

MQTT android service - Code example:
http://www.simonecaruso.com/2014/04/android-mqtt-service-code-example/

Estarei finalizando um Exemplo de comunicador MQTT no Android comentado para colocar aqui no repositório.

Estudar MQTT e tentar montar uma mini rede MQTT

Quem vai fazer toda a parte ou quase toda do projeto vai ser uma rede MQTT, então é muito importante que todos saibam como funciona o protocolo e etc. Então segue alguns artigos sobre MQTT:

MQTT - Protocolos para IoT
MQTT Parte 1: O que é MQTT?
MQTT 101 – How to Get Started with the lightweight IoT Protocol
An Internet of Things system – how to build it faster
Getting started with MQTT: Everything you need to know about the lightweight IoT protocol

Getting started with MQTT

Esse último link tem um tutorial que foi o que eu falei que deveriam tentar seguir, esse tutorial foi feito pra linux então recomendo que quem ainda não usa o linux que instale o Ubuntu ou alguma distribuição parecida como o Xubuntu, da pra instalar com dual boot ou então usar uma máquina virtual no Virtualbox ou programa parecido.

Acredito que tem uma parte desse tutorial que vai ser preciso ter instalado o MongoDB, dá pra usar esse tutorial ou outro que acharem melhor.

Tela sobre

Falar do app, LASSE (link pro site), PETi (link pro site), etc.

Colocar logos...
Acredito que nossos nomes também podem ser links como o Izidio fez no site.

Feed back

Tela onde o usuário pode enviar criticas.

Estudo sobre uso do Open Street Maps no aplicativo

Na ultima reunião foi levantado a ideia de utilizarmos o OpenStreetMap no aplicativo. O fato é que precisamos levantar fatores que nos levem a escolher o OSM em relação ao Google Maps, boas razões na verdade, porque uma parte bem importante (localização do circular) já está implementada e funcionando com o Google Maps, não precisaríamos realizar uma pequena migração.

então o @felipebastosb pediu para que eu verificasse diferenças, vantagens e desvantagens entre um e outro.

levantei alguns fatos que os diferenciam

  • A principal diferença entre os dois é que o OSM é Livre e todas as modificações e alterações que são feitas no mapa ficam para a comunidade e são compartilhada com todos, ou seja o seu mapa também recebe atualizações de todos, enquanto que no Google Maps, o Google é responsável pelas atualizações.

  • Cada modificação no OSM é instantaneamente visualizado por todos, isso também torna o mapa vulnerável a ataques e usuários mal intencionados (vandalismo) no entanto o mapa é mais personalizável e recebe melhor atualizações recentes em uma comunidade ativa.

  • Foram detectados no OSM um número maior de bugs, mas nada tão alarmante, ou a tornar o mapa instável.

  • O Google Maps controla o numero de visualizações e processamento da sua view no app, além do seu tempo de carregamento ser mais demorado. o acesso aos serviços são gerenciados por uma chave. o que não existe no OSM

Até agora foram só essas considerações. se tiver mais eu edito a postagem
Na próxima reunião podemos decidir qual mapas usar. abraço a todos.
não deixem de comentar em baixo.

googemaps-vs-osm-geoawesomeness

Situação do projeto

Olá para todos, gostaria de saber se o projeto ainda está ativo. Faz alguns anos que tive a ideia de implantar um projeto assim em minha cidade, mas apesar de trabalhar na autarquia de trânsito da cidade e produzir um prototipo infelizmente a coisa não caminhou, a bem da verdade faltou corrupção para caminhar... enfim, o fato é que a forma que decidi fazer aqui foi diferente do que a maioria faz, talvez não seja válida para todas as cidades, mas seria interessante para algumas.

Estudar Node/Javascript

Tanto no broker MQTT que vão montar quanto nos outros programas que irão rodar no servidor vamos usar Node, então é importante se familiarizar com a linguagem Javascrip.

Não se preocupem em saber tudo de Javascript agora, provavelmente vão aprender bem mais quando começarmos a fazer os projetos.

Na parte do servidor não vai ser necessário ter conhecimentos avançados de Javascript, agora quando formos e se formos fazer um site web com a localização do circular, será preciso ser bem mais avançado, assim como em outras linguagens para desenvolvimento web (HTML, CSS e etc).

Sugiro que assistam essa playlist de video aulas, vocês podem ir tentando repetir os expemplos ou irem treinando com o tutorial de MQTT.

Caso alguém ache que precise de aulas de logica de programação e etc. Tem como encontrar no site do PETi

Adicionar informações na descrição do repositório

sugiro ao Felipe adicionar uma descrição e website na descrição deste repositório, assim como está no repositório miritrônica.
o texto de descrição poderia ser o que está no ReadMe:
"o principal objetivo do projeto é desenvolver um sistema que seja capaz de monitorar os ônibus circulares da cidade universitária e disponibilizar para a comunidade acadêmica informações que facilitem o dia a dia dos usuários dos ônibus."

Adaptar APP para o padrão do SIM808

Quando é feito o pedido das coordenadas para o SIM808 ele retorna em alguns formatos específicos, acho que para evitar tratamento de strings no hardware é melhor adaptar no APP, deem uma olhada no formato que vamos enviar (publicar) no documento em anexo. Onde ele fala da resposta que será enviada inicia na pagina 10 e vai até a 12.

GNSS

Estudar datasheet do SIM808

Analisar a documentação do SIM808, principalmente a parte referente de como pegar os dados de GPS, neste caso vamos usar o GNSS que é mais abrangente que o GPS, deem também uma olha nas diferenças entre GPS e GNSS.

Toda a documentação do SIM808

Comandos AT

Hardware

GPS

GNSS

Nesse ultimo deem uma tenção especial para o comando que inicia na pagina 10.

Tela configurações

-Tempo de atualização
-Modo economia de rede

-Dados do consumo de banda (acho que se a pessoa autorizar podemos analisar o uso da rede pelo app no celular dela, vê se é possível com o Paulo).

Mudar formatação dos tópicos mqtt

Mudar a formatação dos tópicos em que o site/app está subscrito para que consigamos tratar fazendo a utilização de wildcards. Por exemplo, se tivermos os tópicos abaixo:

  • Circular 01:
    ufpa/circular/loc/01
    ufpa/circular/temp/01

  • Circular 02:
    ufpa/circular/loc/02
    ufpa/circular/temp/02

Podemos subscrever em todos os tópicos acima utilizando a seguinte sintaxe:

  • No tópico de localização (loc): ufpa/circular/loc/+
  • No tópico de temperatura (temp): ufpa/circular/temp/+

Referência: link

Comandos AT

Estudar sobre comando AT

Entender como funciona e comunicar dois Arduinos usando AT.

Também olhem as funções de comunicação serial do Arduino, em especial a serial read string e como passar de string para char.

Abaixo tem um exemplo que usei para comunicar com o SIM808.

`

void setup() {
//Begin serial comunication with Arduino and Arduino IDE (Serial Monitor)
Serial.begin(115200);
while(!Serial);

//Being serial communication witj Arduino and SIM800
Serial1.begin(115200);
delay(1000);
//Serial2.begin(9600);
delay(1000);

Serial.println("Setup Complete!");
}

void loop() {
//Read SIM800 output (if available) and print it in Arduino IDE Serial Monitor
if(Serial1.available()){
Serial.write(Serial1.read());
}
//Read Arduino IDE Serial Monitor inputs (if available) and send them to SIM800
if(Serial.available()){
Serial1.write(Serial.read());
}

//if(Serial2.available()){
//Serial.write(Serial2.read());
//}

}`

Ajustar paradas

Ajustar as paradas de acordo com a lista presente no circular

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.