View on GitHub

gtracker

Controle de trânsito através de uma vanet.

GTracker

O objetivo desse projeto é desenvolver uma plataforma web que relaciona valores coletados de telemetria veicular (acelerômetros, GPS, …) a eficiência enérgica do veículo com o modo de condução (acelerações e frenagens bruscas) e o tráfico das vias da região.

Objetivos adicionais

Comparar diferentes tipos de serialização de payload (JSON, BJSON e CBOR) e seus impactos no consumo de banda e latência

Comunicação

Foram implementados 2 tipos de comunicação serial (RS 232) e via broker de mensagens (rabbitmq). Para a camada de domínio a comunicação é realizada por meio de um gerenciador de dispositivos que abstrai a uma mesma interface, sendo assim, é totalmente transparente a forma de comunicação para esse layer.

Embarcado firmware ARM M0+:

Utilização do FreeRTOS com filas de mensagens para troca de informações entre as tasks e sinalizado através de TaskNotification. A comunicação via UART com o Host é totalmente assíncrona. O device possui tasks independentes para recepção e transmissão. Após recepção e validação do frame o payload é postado em uma fila de entrada e sinalizado para a task da camada de aplicação que fará o consumo e o processamento respectivo. Se algum processamento da camada de aplicação gerar alguma resposta que deve ser transmitida para o host. Essa resposta será colocada em uma fila de saída para a camada de comunicação fazer o empacotamento e envio. Por ser tratar de eventos assíncronos os frames possuem um timestamp para controle de sequência. Todo o firmware está orientado a eventos. Segue o diagrama de tasks

Diagrama de tasks

Abaixo podemos verificar como está o uso de memória e fazer uma comparação do impacto do uso do TaskNotification.

Stack **sem** TaskNotification

Stack **com** TaskNotification

Heap **com** TaskNotification

Relógio

O RTC é ajustado automaticamente através de informações do GPS. Alguns dos frames do Protocolo NMEA possuem a informação de horas no formato UTC. Após receber essa informação o timestamp que o RTC incrementa localmente é setado para esse valor. Antes de mostrar para o usuário é chamado uma função que faz a conversão para o hora local.

Buffer circular

A recepção e envio ,de bytes nas portas seriais, são feitas utilizando interrupção e buffer circulare ringbuffer. Como transceptor Wifi\BT\BLE está sendo utilizando o ESP32 que também possui um RTOS(FreeRTOS). Futuro será colocar um módulo GPRS para redes móveis e processar a pilha de conexão também no ESP32. Apesar do ESP32 ser mais que um transceiver o custo permite utiliza-lo apenas para essa finalidade

Embarcado firmware ESP32:

Basicamente o firmware do ESP32 é aprnas um bdrige UART<>WiFI. Não possui nenhuma logica de negócio.

SW Web

Backend: Nginx+Django com utilização de Channel , abstração de websocket , para atualizações, em tempo real do frontend.

frontend: Responsivo Bootstrap+JS+CSS+Chart.js.

Message Broker: RabbitMQ com o protocolo AMQP e MQTT

Google maps API: para renderização do mapas e traçcador de rotas

Login

Acesso controlado ao sistema

Tela login

Ataulização frontend

Recepção do payload da telemetria via channels(sockets) - visualização desktop

Desktop Debug

Recepção do payload da telemetria via channels(sockets) - visualização mobile

Mobile DebugMobile Debug

Acelerometros

Gráficos do acelerometro utilizado para registros da telemetria -visualização desktop

Desktop Acelerometros

Gráficos do acelerometro utilizado para registros da telemetria -visualização mobile

Mobile Acelerometros

Posição

Leitura da posição do GPS

Desktop posição

SW Desktop

Versão nativa do SW em linguagem C# for windows .

Rotas

Quando o usuario indica 2 pontos no mapa(clicando) uma rota é devolvida conforme mostra a figura abaixo.

Rotas traçadas

Cercas

O usuário pode contruir uma cerca eletrôncia onde onde será sinalizado caso a posição que o GPS indique uma localização fora. Pode-se contruir inúmeras cercas compostas por inúmeros pontos

Cercas traçadas

Histórico telemetria

Todo o histórico da telemetria é mantido e mostrado para o usuário em forma de treeview

Histórico da telemetria

Configuração software

É possivel habilitar e desabilitar os layers e também configurar o tipos de comunicação

Configuração software

Documentação: WEB PDF

Ambiente de desenvolvimento

Editores: VS Code for linux, nano

IDEs: MCUXPresso,Eclipse, Visual Studio

Monitors network: sniffer - wireshark, trafic - Ntopng

Configuração

Ports

Port Aplicação socket url
15672 RabbitMQ adm    
1883 MQTT    
3000 ntopng    
8000 gtracker.com   gtracker.com
8020 Daphne daphne.sock  
8010 uwsgi gtracker.sock  
5432 gtracker-data    
  ldap adm   /phpldapadmin/