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.