Introduction: Smart Traffic
Summary
Smart Traffic is an IoT solution based on a controller with a bluetooth signal sensor that changes the timing of the traffic lights after identifying the signal emitted by a priority vehicle (military, firefighters or ambulance), allowing the vehicle to move quickly .
Sumário
O Smart Traffic (Tráfego Inteligente) consiste em uma solução IoT baseada em um controlador com sensor de sinal bluetooth que após identificar o sinal emitido por um veículo com prioridade (militar, bombeiros ou ambulância), altera a temporização dos semáforos possibilitando o deslocamento rápido do veículo.
Descrição
Neste projeto, cada veículo com prioridade de deslocamento será equipado com um dispositivo Bluetooth Low Energy (BLE), como um Beacon Bluetooth ou um dispositivo Android com suporte ao BLE. Neste projeto implementamos um aplicativo em Android que deverá equipar as viaturas, possibilitando que o condutor ative o modo emergência indicando a necessidade de preferência no deslocamento.
Como controlador utilizamos a placa DragonBoard 410C com Windows IoT ou, opcionalmente, a placa Raspberry Pi 3. O projeto foi testado com a duas opções. Ambas possuem rádio Bluetooth e portas GPIO que possibilitam ligar os semáforos, representados neste projeto por Leds coloridos. A placa controladora é responsável, então, por captar o sinal Bluetooth emitido pela viatura em emergência e alterar a temporização do semáforo.
Desenvolvedores
- Arthur Mourão - arthur.felipem@gmail.com
- Fernanda Montanari - fmontanarisa@gmail.com
- Henrique Nascimento - henriqu3@gmail.com
- Pedro Horita - ph051109@gmail.com
- Renato Martins -renatto.martins@gmail.com
Step 1: Visão Geral
O cenário definido para este projeto trata-se de uma via A de mão única que é cortada por outras duas vias, B e C, também de mão única, conforme imagem acima. Quando uma viatura se desloca em emergência pela via A, o tráfego precisa ser liberado nesta via, fechando os semáforos para as vias B e C até que a viatura tenha finalizado seu deslocamento por A.
Step 2: Diagrama De Blocos
Componentes
- Placa DragonBoard 410C (ou Raspberry PI 3) executando Windows IoT
- 4 Leds vermelhos
- 4 Led's verdes
- 8 Resistores de 1000 Ohm
- Dispositivo Android versão 6.1 com bluetooth 4.0
- Protoboard e fios para facilitar montagem
Step 3: Funcionamento Detalhado
O projeto é constituído basicamente do Aplicativo Android, do Aplicativo UWP (que executa na DragonBoard, ou Raspberry ) e da ligação física do semáforo (Leds).
Aplicativo UWP
O aplicativo UWP contém a lógica dos semáforos, ao ser iniciado, uma thread irá controlar a temporização do semáforo em seu modo padrão de operação. Este mesmo aplicativo é responsável por receber o sinal bluetooth enviado pelo dispositivo Android que deverá equipar os veículos de emergência. O Evento, ao detectar um determinado sinal de bluetooth emitido pelo aplicativo, cancela o modo de operação normal e dispara uma nova thread com a temporização adequada para atender ao veículo de emergência. Os Leds são controlados pelas portas GPIO da placa, sendo utilizados os seguintes pinos:
- DragonBoard:
- GPIO 36; //Verde
- GPIO 13; //Vermelho
- GPIO 115; //Vermelho
- GPIO 25; //Verde
- GPIO 35; //Verde
- GPIO 28; //Vermelho
- GPIO 25; //Vermelho
- GPIO 34; //Verde
- Raspberry PI 3:
- GPIO 27; //Verde
- GPIO 21; //Vermelho
- GPIO 20; //Vermelho
- GPIO 18; //Verde
- GPIO 17; //Verde
- GPIO 26; //Vermelho
- GPIO 19; //Vermelho
- GPIO 22; //Verde
A leitura do sinal Bluetooth é feita utilizando a biblioteca Nativa do Windows UWP Windows.Devices.Bluetooth.Advertisement, que é responsável por receber e tratar advertisement de dispositivos Bluetooth Low Energy (BLE). Utilizando esta especificação Bluetooth não é necessário parear dispositivos (funcionamento conforme Beacons).
Quando o sinal Bluetooth é detectado, as lâmpadas verdes referentes à via "A" piscam 3 vezes e são mantidas acesas. Depois de um tempo pré-determinado, caso o sinal Bluetooth continue sendo detectado, será possível ver as lâmpadas verdes da via "A" piscarem 3 vezes novamente e manterem-se acesas, indicando que o veículo em emergência ainda não conseguiu passar pela via e que por isto, o modo de operação especial será mantido por mais um tempo.
Quando detectamos um sinal Bluetooth, conhecemos, dentre outros detalhes, a intensidade daquele sinal. Com isto, definimos uma intensidade mínima que faz com que o modo de operação especial seja acionado. Esta intensidade esta relacionada, dentre outros fatores de interferência, com a distância entre o emissor e o receptor do sinal.
Trata-se de um aplicativo foreground, como uma interface que mostra um log com os emissores Bluetooth que estão próximos e se o semáforo está operando um modo normal ou especial.
Aplicativo Android
O aplicativo Android é responsável por emitir o sinal Bluetooth, quando indicado pelo usuário que o veículo esta em modo emergência. Para isto utiliza a biblioteca AltBeacon (vide referências), funcionando como um beacon Bluetooth. O aplicativo é simples, apresentando um botão principal, que quando acionado inicia o broadcast Bluetooth e ao ser acionado novamente encerra a propagação de sinal, e uma configuração que permite escolher a frequência de emissão de sinal (poucas ou muitas emissões por segundo).
Quando um sinal emitido por este aplicativo é detectado pela placa, o modo de operação especial para atender ao veículo equipado com este aplicativo deve ser iniciado.
Step 4: Aplicativo Android
Telas de operação do Aplicativo Android.
Step 5: Aplicativo Windows IoT
Telas de Monitoramento do Aplicativo UWP.
Step 6: Montagem E Execução
Para montar e executar o projeto, temos 3 etapas a serem seguidas. O primeiro passo é realizar a ligação física dos Leds nas portas GPIO da placa escolhida (Raspberry ou DragonBoard), seguindo o diagrama disponibilizado e observando a numeração das portas GPIO indicadas nos passos anteriores.
Após a montagem física, e assumindo que a placa já esteja executando o Windows 10 IoT Core (Instalação Windows IoT), é necessário fazer o deploy do aplicativo UWP no hardware. O Código fonte está disponível no GitHub e o link pode ser encontrado neste documento. Fizemos o deploy diretamente através do Visual Studio 2017, que foi utilizado para o desenvolvimento do projeto. Uma vez que o aplicativo já tiver instalado na placa, é possível gerenciá-lo (iniciar, parar, excluir) através do Windows Device Portal.
É importante verificar que o Bluetooth esteja ativado na placa para o funcionamento do projeto. Esta ativação pode ser verificada através do Windows Device Portal, em Conectividade -> Bluetooth. Não é necessário parear nenhum dispositivo, ele apenas precisa estar ligado.
Conforme dito, o aplicativo é do tipo Foreground, possuindo uma interface de monitoramento, que permite visualizar os veículos de emergência próximos e o status do semáforo. Apesar de não ser necessário, para visualizar esta tela pode-se ligar a placa a uma tela através da porta HDMI ou utilizar o Windows IoT Remote Client.
Tendo feito a ligação dos Leds e o aplicativo UWP estando em execução no Windows IoT o semáforo já estará funcionado e será possível visualizar a alternância das luzes em modo normal. Neste ponto o aplicativo já estará esperando o sinal Bluetooth ser emitido pelas viaturas através do aplicativo Android.
Finalmente, será necessário realizar a instalação do aplicativo Android, cujo código fonte também esta disponível no GitHub com link neste documento, sendo necessário que dispositivo Android esteja equipado com Bluetooth versão 4.0. Em nossos testes utilizamos Android 7.0. O aplicativo foi desenvolvido no Android Studio 2.3 e tem como pré-requisito a utilização de Bluetooth, que deve estar ativo no aparelho. O deploy pode ser feito diretamente através do Android Studio ou gerando o apk para ser distribuído.
O aplicativo apresenta um botão principal que ativa e desativa a emissão de sinal Bluetooth, indicando se o veículo esta ou não em modo emergência. Nas configurações do aplicativo é possível alterar a frequência de emissão do sinal, já que ele fica em modo broadcast.
Quando a emissão é iniciada e detectada pelo aplicativo UWP, é possível visualizar que duas das luzes verdes piscam 3 vezes, indicando que o modo de operação especial foi iniciado. O semáforo só irá voltar ao funcionamento normal se não estiver detectando mais nenhum sinal bluetooth das viaturas.
Step 7: Código Fonte
Windows IoT
O código fonte do aplicativo desenvolvido em Windows IoT para execução na DragonBoard 410C ou na Raspberry Pi 3 está disponível no seguinte endereço:
https://github.com/pedrohorita/SmartTraffic-IoT-AS...
Android
O código fonte do aplicativo Android desenvolvido para ativar o modo de emergência nos veículos com prioridade enviando o sinal Bluetooth está disponível no seguinte endereço:
Step 8: Vídeo Demonstração
Na demonstração foram utilizados Smartphones com o Aplicativo Android que simula veículos com prioridade trafegando na via, enquanto o controlador detecta a aproximação do veículo.
A detecção do veículo com prioridade é indicada através do flash do sinal verde.
Após a detecção, o controlador altera a temporização dos semáforos para dar passagem para o veículo com prioridade.
No exemplo em questão, simulamos uma ambulância com paciente se deslocando para um hospital.