Proposta de arquitetura de IoT para o módulo de aquisição de dados de sensores usando o Banco de Dados REDIS e a linguagem GO
Parte I: Introdução
Parte II Parte III Parte IV
Nesta primeira parte do artigo, vamos descrever a arquitetura do módulo RECEPTOR. Este módulo pertence a um sistema maior de monitoramento, controle e aquisição de dados de sensores ainda em fase de planejamento.
Related Articles
O objetivo do módulo receptor ou concentrador é permitir o armazenamento de Dados enviados por uma rede de microcontroladores distribuídos local ou remotamente.
-
- Cada dispositivo microcontrolador possui um conjunto de sensores cujas medições são enviadas ao receptor central através de protocolos de comunicação diversificados.
- Os dados são recebidos por um concentrador similar a um broker ou gateway.
- Esses dados são então armazenados em um cache de memória de forma extremamente rápida, ficando disponíveis para processamento pela aplicação supervisória.
Para entender melhor, vejamos o diagrama abaixo:
Arquitetura do Módulo Receptor
(1) Rede de sensores → Os Sensores estão conectados aos dispositivos microcontroladores que enviam os dados para o concentrador. Não existem restrições quanto aos modelos de placas utilizadas, podendo ser Arduino, ESP8266, ESP32, PIC, etc.
As placas, na verdade, devem ser escolhidas de acordo com a forma de comunicação desejada.
No entanto, existem padrões operacionais e de software que devem ser seguidos para que o dispositivo possa ser conectado ao sistema.
(2) Formas e protocolos de comunicação → Para a comunicação entre os dispositivos e o concentrador estão previstos os seguintes padrões:
-
- Wi-fi/Ethernet (Websocket/HTTP/REST)
- RF/LORA
- Comunicação serial/Bluetooth
- GSM/GPRS
(3) Rotina concentradora ou Receptora → Rotina em GO que recebe os dados dos sensores, processa e envia para o cache REDIS. Existe uma rotina específica para cada protocolo de comunicação descrito no item 2;
(4) Cache REDIS → Armazena os dados dos sensores de forma temporária ou permanente. Caso seja necessário, o cache pode ser espelhado (replicado).
É possível também criar um esquema de publicação e subscrição de mensagens semelhante ao protocolo MQQT, mas isso não será abordado aqui.
Observações:
-
- Esta introdução é uma descrição genérica e simplificada da arquitetura. Dependendo da forma de comunicação e da distância entre os componentes, pode haver camadas adicionais de hardware/software para interligação ;
- A distribuição de servidores para cada camada não é uma decisão definida pela arquitetura, mas o ideal é ter um servidor LINUX dedicado para o REDIS;
- Estamos descrevendo aqui apenas o módulo de aquisição de dados. O módulo de controle será detalhado em uma outra oportunidade.
Tecnologias Empregadas
Vamos relacionar agora as principais tecnologias de software usadas no módulo concentrador:
1) REDIS é um sistema de armazenamento de dados in-memory de excelente desempenho que pode ser usado como banco de dados NOSQL , Cache ou Message Broker.
REDIS usa estruturas de dados do tipo chave-valor, tais como linked lists, Strings, Sets e etc. Além disso, os dados podem ser configurados para serem temporários ou persistidos de diversas formas.
Destaco ainda o suporte para as seguintes funcionalidades:
-
-
- Replicações;
- Stored Procedures;
- Particionamento;
- Etc.
-
2) GO ou Golang é uma linguagem de programação criada pela Google e lançada em código aberto em novembro de 2009. É uma linguagem estaticamente tipada, compilada e focada em produtividade e programação concorrente (Wikipedia).
Go foi projetada para a realidade multi-core dos computadores atuais. Por isso, devido à sua robustez, é muito usada para programação em servidores de rede em grande escala e sistemas distribuídos.
3) Lua é uma linguagem de scripting eficiente e leve e, por isso, facilmente incorporável em outras aplicações. Lua foi desenvolvida por uma equipe na Universidade PUC/RJ e é muito usada para configuração de sistemas, prototipagem e programação embarcada.
Devido a essas características, entre outras, GO, REDIS e Lua formam uma excelente combinação para uso com aplicações IoT.
Conclusão
Na próxima parte do artigo, vamos mostrar como obter e instalar o software necessário para o desenvolvimento da aplicação receptora, o concentrador com GO e REDIS.
Parte II Parte III Parte IV
Referências
- Página Oficial do REDIS
- Página Oficial da linguagem GO
- Página oficial da linguagem Lua
- UFES – Redes de sensores e IoT
- Embarcados – Modelos de Comunicação IoT
O post Sistema IoT para Aquisição de Dados com REDIS e Linguagem GO – Parte I apareceu primeiro em BlogDoJoséCintra.