Skip to content

Integração de Software/Eletrônica

Histórico de Versões
Data Responsável(eis) Descrição Versão
16/06/2024 Rafael Criação do documento 0.1
22/06/2024 Laura Adição de conteúdo 0.2
27/06/2024 Rafael Adiciona tecnologias utilizadas para a integração 1.0
27/06/2024 Rafael Explica o funcionamento do json 1.1
02/07/2024 Lucas Mudança no esqueleto do documento 1.2
03/07/2024 Lucas Adição de diagrama de classes 1.3

A integração com o software foi realizada por meio do firmware desenvolvido para coleta e processamento de dados dos sensores de CO2 e temperatura no código principal embarcado na ESP32. Para isso, Foi escolhido o Framework ArduinoIDE para implementar o software embarcado, por fornecer um ambiente compatível com o desenvolvimento em ESP32 e permitir o uso de C++.

O fim dessa integração ocorreu por meio do envio dos dados coletados via protocolo MQTT, definido na arquitetura desenvolvida, onde foram interpretados e armazenados adequadamente. Essa decisão foi tomada devido à sua eficiência em termos de largura de banda e consumo de energia, especialmente em redes de baixa qualidade ou instáveis.

Arquitetura da integração

Diagrama de classes

Figura 1: Diagrama de classes

classesEmbarcados

Fonte: Autor

A classe Relay_system aciona ou desliga os relés do motor. A classe TemperatureSensor obtém os dados de temperatura no silo, a partir dos sensores de temperatura, e os salva. A classe CO2Sensor faz o mesmo, porém com o sensor de CO2. A classe Publisher recebe esses dados salvos e os envia, via MQTT, ao sistema de Software.

Envio de mensagens

As mensagens enviadas em JSON têm o seguinte formato:

{
"type": "temperature1",
"data": 32,
"timestamp": 2138934858.23231,
"silo": "silo-3"
}

O significado dos campos da mensagem é o seguinte:

  1. type: Nomeia qual o dado que está sendo enviado. Pode ter os valores "temperature1", "temperature2" ,"resistence" ou "co2".
  2. data: O valor retornado pelo sensor, ou seja, a concentração de CO2 ou a temperatura (a depender do sensor). Também pode ser o valor da resistência, se for o caso.
  3. timestamp: A hora em que o valor foi recuperado.
  4. silo: Identifica em qual silo se encontra a haste.

Tecnologias Utilizadas

PubSubClient

A lib PubSubClient é utilizada na ESP32 para enviar mensagens via MQTT a um broker. No caso, o broker é o subsistema de software.

ArduinoJson

A lib ArduinoJson foi escolhida por ser uma maneira fácil de converter os dados dos sensores para o formato JSON, que é o utilizado nas mensagens.

OneWire e DallasTemperature

A lib DallasTemperature é utilizada para comunicação com o sensor de temperatura DS18B20, e a lib OneWire é uma dependência.

PID_V1_bc

A lib PID_v1_bc é necessária para o controle da resistência utilizando o algoritmo PID.

MQTT

MQTT é um padrão OASIS para conectividade IoT. É um protocolo de mensagens de publish/subscribe extremamente simples e leve, projetado para dispositivos restritos e redes de baixa largura de banda, alta latência ou não confiáveis. Os princípios de design visam minimizar a largura de banda da rede e os requisitos de recursos do dispositivo, ao mesmo tempo que tentam garantir a confiabilidade e um grau de garantia de entrega. Esses princípios também tornam o protocolo ideal para o mundo da “Internet das Coisas” de dispositivos conectados e para aplicações móveis onde a largura de banda e a energia da bateria são valiosas (MQTT, 2022).

ArduinoIDE

O Arduino IDE (Integrated Development Environment) é uma plataforma de código aberto desenvolvida para facilitar a programação e upload de códigos para as placas Arduino e possui compatibilidade com as placas ESP32. A versão mais recente, Arduino IDE 2, oferece uma interface de usuário moderna e várias novas funcionalidades, como autocompletar código, um depurador embutido e a capacidade de sincronizar esboços com o Arduino Cloud (Arduino, 2024).

Essa IDE permite que os usuários escrevam, verifiquem e carreguem programas nas placas Arduino. Além disso, inclui ferramentas para gerenciar bibliotecas e pacotes de placas, simplificando o processo de configuração e desenvolvimento. Com esses recursos, a IDE visa aprimorar a eficiência e a experiência do usuário em projetos de hardware e software​ (Arduino, 2024)​.

Implementação da Integração

A integração de software com eletrônica foi realizada de maneira presecial com o código disponível no repositorio de embarcados.

Os alunos de Software e Eletrônica se reuniram presencialmente nos dias de aula de PI2 para testar se os dados coletados a partir dos sensores eram enviados corretamente via protocolo MQTT. Com o envio correto dos dados, eles podem ser visualizados no MINIO e, consequentemente, podem ser apresentados nas dashboards de monitoramento do Metabase. Isso garantiu que o firmware para coleta e tratamento de dados funcionasse de forma harmoniosa.

Problemas na implementação

  • O firewall da UnB, para conectar com o broker do MQTT, impede de acesar o sevidor do projeto, por isso, é necessário acessar por uma rede externa.