Foi escolhido três trabalhos para se basear o primeiro trabalho utiliza tecnologia RFID para fazer o rastreamento de veículos, os outros dois tem como finalidade o estudo da tecnologia em entrega e logística
O projeto foi dividido em três etapas. Na primeira etapa, foi desenvolvido o hardware que requer uma fonte de alimentação de 12 volts capaz de fornecer uma corrente de 3A. Esse hardware é composto por três módulos: GPS, leitor RFID e SIM800L.
Na parte de software, foi utilizado o FreeRTOS, um sistema operacional em tempo real para sistemas embarcados. Foram criadas duas tarefas principais: uma responsável por monitorar o leitor RFID e verificar quando uma tag é aproximada. Quando uma tag é detectada, os dados lidos são armazenados em uma estrutura de fila. A segunda tarefa é responsável por enviar os dados para um servidor MQTT. Essa tarefa permanece em espera na maior parte do tempo e é ativada apenas quando há dados disponíveis na fila. Quando não há dados, a tarefa entra em modo de espera. Os dados do GPS são lidos a cada segundo, que é o intervalo em que o módulo fornece novas informações, como latitude, longitude e horário.
A outra parte do software é utilizada para ler os dados enviados pelo servidor MQTT e salvá-los em um banco de dados. Os dados são armazenados em um banco de dados SQL Server utilizando a linguagem C#. Além disso, foi desenvolvido um software em Angular para exibir as coordenadas recebidas em tempo real.
Essas etapas do projeto envolvem o desenvolvimento tanto do hardware quanto do software necessário para realizar o rastreamento de veículos utilizando tecnologia RFID, bem como o armazenamento e visualização dos dados relacionados.
Neste diagrama, é apresentado o funcionamento da leitura da tag no momento em que o usuário a aproxima do leitor RFID. Uma tarefa é responsável por realizar a leitura dos valores contidos na tag e adicioná-los a uma lista de comunicação, que serve para a troca de informações entre as tarefas. Sempre que um valor é adicionado a essa lista, a tarefa responsável por enviar os dados se conecta ao servidor MQTT e os envia.
O servidor se inscreve no tópico "coordenadas", que é onde o rastreador envia os dados. Quando recebe um dado, ele é armazenado no banco de dados. Além disso, há uma página web conectada ao servidor que utiliza uma API REST para exibir as coordenadas recebidas e permitir a sua salvagem."
Nesta melhoria, o texto foi reorganizado para torná-lo mais claro e conciso, destacando a comunicação entre o rastreador e o servidor, bem como a funcionalidade da página web que se conecta ao servidor para exibir e salvar as coordenadas recebidas.
Na imagem abaixo, é apresentado um esquema de estados que representa o funcionamento do programa para obtenção de dados de GPS e RFID, bem como a comunicação entre as tarefas. O sistema opera da seguinte maneira: existem duas tarefas distintas. A primeira delas é responsável por aguardar a leitura de uma tag RFID. Essa tarefa foi implementada utilizando o método de polling, verificando a cada 100 milissegundos se alguma tag RFID se aproximou. Caso uma tag seja detectada, ela é lida e salva em uma fila (queue) do sistema operacional. Essa fila possui capacidade para armazenar até 50 tags, permitindo a leitura de até 50 tags em um intervalo de 2 segundos.
A segunda tarefa é responsável por enviar os dados para o broker MQTT. Ela aguarda a presença de algum valor na fila e, caso haja algum, obtém o valor da tag e a última localização registrada. Os dados de localização são obtidos a cada 1 segundo. Nesse processo, o módulo utilizado envia sentenças NMEA, que são um padrão de comunicação amplamente utilizado em dispositivos GPS para transmitir informações de localização.
As sentenças NMEA contêm uma série de informações sobre a localização, velocidade, direção e horário, entre outros dados. Elas são codificadas em formato de texto legível por humanos, facilitando sua interpretação. Ao receber a sentença NMEA, o programa decodifica a mensagem e armazena as informações relevantes em uma variável, permitindo um trabalho mais fácil com os dados de localização.
Em seguida, os dois conjuntos de dados (valor da tag e localização) são combinados e enviados para o broker MQTT. Os dados enviados ao broker incluem latitude, longitude, horário e o valor contido na tag. Cada um desses valores é separado por uma vírgula.
No diagrama abaixo, é apresentado um detalhado fluxograma que ilustra o funcionamento da primeira task responsável por aguardar a aproximação de uma tag RFID e, em seguida, salvar essa informação na fila do sistema operacional FreeRTOS.
A task inicia aguardando por eventos de aproximação de tags RFID. Utilizando o método de polling, a cada 100 milissegundos, é verificado se alguma tag se aproximou do dispositivo. Caso seja detectada a presença de uma tag, a task avança para a etapa de leitura dos dados contidos nela.
Após a leitura da tag, os dados são processados e armazenados na fila do FreeRTOS. Essa fila é responsável por organizar e armazenar as tags RFID que foram lidas pelo sistema. Possuindo uma capacidade de até 50 elementos, a fila garante um armazenamento adequado e eficiente das tags para posterior manipulação.
Dessa forma, a task da primeira etapa cumpre seu papel fundamental de detectar a aproximação de tags RFID, realizar a leitura dos dados e armazená-los de forma organizada na fila do sistema operacional. Esse fluxo estabelece uma base sólida para o processamento posterior dos dados, garantindo a integridade e disponibilidade das informações obtidas.
Foi desenvolvido um hardware utilizando o microcontrolador STM32F103, que foi conectado a três módulos distintos: um módulo GPS NEO6, um módulo SIM800L e um módulo RFID. Esses módulos foram cuidadosamente integrados na placa de desenvolvimento. Para a programação do sistema, foi utilizado a plataforma STM32CubeIDE, e a implementação do sistema operacional em tempo real FreeRTOS foi empregada no processo de desenvolvimento.
O uso do microcontrolador STM32F103 permitiu a criação de um sistema robusto e eficiente, capaz de gerenciar as funcionalidades dos módulos GPS, SIM800L e RFID de forma integrada. O programa desenvolvido, por meio da STM32CubeIDE, possibilitou a programação e configuração adequada do microcontrolador para garantir o funcionamento correto dos dispositivos.
Além disso, a escolha do sistema operacional em tempo real FreeRTOS ofereceu uma solução confiável para o gerenciamento de tarefas e recursos, permitindo a execução simultânea de diferentes tarefas com prioridades definidas, tornando o sistema mais eficiente e responsivo.
Com essa combinação de hardware e software, o projeto foi capaz de realizar as funcionalidades desejadas, como o rastreamento de veículos por meio do módulo GPS, a comunicação por dados móveis utilizando o módulo SIM800L e a leitura de tags RFID.