• Nenhum resultado encontrado

2.4 Fonte de Alimentação e Tecnologias de Energy Harvesting

3.2.2 Comunicação

Para fazer a transmissão de mensagens para o servidor, o sistema utiliza uma placa de comuni- cação para a ligação à rede Sigfox desenvolvido pela Société Nationale des Objets Connectés [17],

34 Solução Proposta

representada na figura3.3. A placa pode ser alimentada entre 1.8V e 3.3V. A cada módulo estão associados dois códigos de identificação únicos, ID e PAC, que permitem identificar o mesmo no servidor.

Figura 3.3: Módulo Sigfox SFM10R1

A comunicação entre o microcontrolador e o módulo de comunicação é realizada através de uma porta série (com baudrate de 9600bps, 8 bits de dados, 1 stop bit e sem paridade) de acordo com uma lista definida de comandos AT. Alguns comandos são apresentados a seguir. A lista completa e detalhada pode ser consultada na datasheet [46].

AT Comando para teste de comunicação série;

AT$I=10 Obter o identificador ID;

AT$I=11 Obter o identificador PAC;

AT$SF=XXXXXXXXXXXX Enviar mensagem Sigfox (hexadecimal);

AT$P=2 Entrar em modo de poupança de energia (GPIO9=0 para reativa- ção do módulo);

Na figura3.4está representada a máquina de estados de módulo de comunicação.

Figura 3.4: Máquina de estados do módulo Sigfox

Na rede Sigfox, o tamanho de cada mensagem uplink, isto é do dispositivo para o servidor, poderá ser de 12 bytes no máximo. A informação das mensagens que se pretendem transmitir tem ser manipulada de forma a ser inserida em 12 bytes de dados. Esta deve seguir um padrão definido para poder ser interpretada posteriormente do lado do servidor. Apenas é enviada para o servidor informação relativa à ocorrência de alarmes das leituras realizadas.

3.2 Arquitetura do sistema 35

Na secção4.5é demonstrado o padrão usado nas mensagens Sigfox do módulo de monitoriza- ção.

3.2.3 Fonte de alimentação

Um dos requisitos importantes do sistema de monitorização é a elevada autonomia energética. Dessa forma, foi projetada uma fonte de alimentação que incorpora um sistema de Energy Har- vestingpara recolha de energia do meio, uma bateria para armazenamento da energia proveniente do sistema referido anteriormente e um circuito regulador de tensão para alimentar o sistema.

A energia solar é convertida em energia elétrica a partir de um painel fotovoltaico. Esta ener- gia é depois armazenada num conjunto de baterias. Para o correto carregamento das baterias, é necessário um circuito intermédio de controlo dos ciclos de carga. De forma a atingir o máximo rendimento do painel fotovoltaico, deverá ser implementado um circuito MPPT (Maximum Power Point Tracking) garantindo o fornecimento da máxima potência. A ligação do sistema à fonte é feita através de um regulador de tensão assegurando a tensão nominal do sistema de 5V.

O diagrama de blocos da figura3.5permite ilustrar a relação entre os diferentes componentes da fonte de alimentação.

Figura 3.5: Arquitetura da fonte de alimentação

Na tabela3.2 são apresentados os consumos máximos de corrente, em diferentes modos de funcionamento, dos principais componentes do sistema, com a excepção dos sensores.

Componente Corrente

ESP32:

Ativo com transmissão Bluetooth 130 mA Ativo em modo Modem Sleep (Bluetooth desligado) 68 mA

Modo Deep Sleep 150 µA

Módulo Sigfox:

Transmissão 54 mA

Modo Deep Sleep 500 nA

Conversor ADC 150 µA

36 Solução Proposta

3.2.4 Arquitetura de software

A componente de software é o elemento essencial deste projeto. Nesta secção pretende-se ilustrar com elevado nível de abstração o funcionamento geral da solução alcançada, ficando os exemplos práticos, da implementação em código das partes mais relevantes, para o capítulo4.

O software da aplicação foi desenvolvido na linguagem de programação C++ e pode ser di- vidido em duas etapas distintas: a configuração inicial dos componentes e o ciclo infinito de execução. O diagrama de blocos presente em3.6, representa graficamente as diferentes fases de cada etapa. Para compreender melhor o seu funcionamento, poderá ser pertinente a consulta do diagrama UML das classes fundamentais do código, presente na figuraA.1em anexo.

A configuração do sistema é realizada pelo utilizador através de um conjunto de ficheiros XML (Extensible Markup Language) contendo as especificações relativas ao módulo de monitorização, aos sensores e aos alarmes. No caso dos alarmes, existe a alternativa de definir os mesmo através da implementação das regras diretamente no código fonte. Esta possibilidade permite criar funções mais completas e complexas para identificar irregularidades na qualidade da água.

A leitura periódica dos sensores é assegurada por um escalonador de tarefas em tempo real. Este é responsável pela gestão dos processos de leitura dos sensores.

O sistema mantém um registo em memória não volátil de todas as leituras e eventos ocorridos durante o ciclo de execução.

Uma particularidade deste módulo de monitorização é a possibilidade de o utilizador descar- regar os dados guardados no módulo de monitorização através de uma aplicação móvel.

Quando o dispositivo inicia é realizada uma configuração de todas especificações referentes ao sistema. Os ficheiros XML previamente editados pelo utilizador são carregados na aplicação. Estes ficheiros contém informação relativamente ao número de identificação e localização GPS do módulo, alarmes, períodos de leitura, identificação, endereço e caraterísticas dos sensores conec- tados. A estrutura destes ficheiros pode ser consultada na secção4.2.

Segue-se a inicialização do módulo de comunicação e do escalonador de tarefas. Antes ainda, no caso de se tratar da primeira utilização, procede-se à atualização do relógio de tempo real (esta ação requer uma ligação Wi-Fi com acesso à internet). É então, realizado um teste de comunicação para verificar o correto funcionamento e a cobertura da rede Sigfox.

Para finalizar a etapa de configurações, é criado o escalonador de tarefas. A este, são adicio- nadas as funções de aquisição de dados de acordo com os sensores presentes e respetivos períodos de leitura.

Após a configuração do sistema, realiza-se um procedimento que irá ocorrer continuamente de forma cíclica. Assim, começa-se por fazer uma atualização do escalonador em conformidade com o relógio interno do CPU e ativa-se as rotinas de leitura dos sensores que deverão ser executadas no ciclo em questão, através dos blocos SCHEDULER UPDATE e SCHEDULER DISPATCH, respetivamente.

3.2 Arquitetura do sistema 37

Figura 3.6: Arquitetura de software

de acordo com as regras estabelecidas pelos alarmes definidos anteriormente. Em caso de ocor- rência de um alerta que possa ser indicador de irregularidades na qualidade da água é criada uma mensagem. Os novos dados são processados, DATA PROCESSING, de forma a manter uma estatística atualizada de todos os parâmetros físicos e químicos envolvidos.

O bloco LOG FILES é responsável pelo registo em memória não volátil dos valores medidos, alarmes e eventos ocorridos. Caso o evento deva ser reportado ao servidor é criada uma mensagem com essa informação. O padrão dos ficheiros de registo é exemplificado na secção4.4.

As mensagens que foram criadas durante o ciclo de execução são agora, no bloco COMMU- NICATION, envidas para a rede Sigfox.

38 Solução Proposta

No bloco DOWNLOAD FILES é executada a rotina que permite ao utilizador receber os ficheiros de registo num smartphone através de uma ligação Bluetooth caso tenha ocorrido um pedido de ligação. Caso contrário, este bloco é ignorado.

Depois de todo este processo, o tempo até à execução da próxima tarefa é calculado e o sistema entra em modo de poupança de energia durante esse período. A interrupção do modo de DEEP SLEEP acontece após o tempo determinado ou caso exista um pedido de ligação Bluetooth e, logo de seguida, o ciclo é retomado do início. A implementação deste bloco pode ser consultada na secção4.7.

Capítulo 4

Implementação

Neste capítulo é feita uma apresentação detalhada da implementação da solução proposta no capítulo anterior.

4.1

Hardware do sistema

Os elementos que integram a arquitetura de hardware do sistema são o CPU, a placa de co- municações, um conversor analógico-digital, um cartão de memória, um relógio de tempo real e a fonte de alimentação. À excepção desta última, a ligação entre as diferentes partes encontra-se representada no circuito da figura4.1.

A tensão de alimentação do sistema é de 5V. O ESP32 é alimentado com uma tensão de 3.3V fornecida por um regulador de tensão incluído no circuito da placa de desenvolvimento.

O módulo Sigfox BRKWS01 comunica com o microcontrolador através de porta série. Os pinos TX e RX são conectados aos pinos da UART2 do ESP32. A entrada GPIO9 é utilizada para desativar o modo de poupança de energia. São utilizados dois leds para sinalização de que o módulo se encontra ativo e em comunicação.

O sistema contém um cartão de memória SD para leitura e escrita de ficheiros. A comunicação entre este e o microccontrolador é feita com recurso à interface SPI (Serial Peripheral Interface). Os pinos MOSI, MISO, SCK e CS do socket do cartão são conectados aos pinos MOSI, MISO, SCK e SS do ESP32.

No barramento I2C do ESP32 são conectados dois módulos. O primeiro, é um conversor analógico-digital ADS1115. O endereço de comunicação pode ser configurado de quatro formas distintas, conectando o pino ADDR ao pino GND, VDD, SDA ou SCL. O ADC dispõem de quatro canais de aquisição com entrada genérica onde pode ser ligado qualquer tipo de sensor analógico. O segundo, é um relógio de tempo real baseado no integrado DS1307 [47] da Maxim Integra- ted. Este módulo incluí uma pilha de iões de lítio que permite guardar informação acerca da data e hora em caso de falha de energia.

O botão conectado ao pino GPIO25 do ESP32 permite ligar o sinal Bluetooth para interface com o utilizar. No pino GPIO33 é conectado um led para indicar esta ação.

40 Implementação

4.2 Ficheiros de configuração 41

4.2

Ficheiros de configuração

Para configuração do sistema existem três tipos de ficheiros XML.

Documentos relacionados