Gerenciador de consumo de energia elétrica e água com sistema supervisório web/remoto – Parte 3

Gerenciador de consumo de energia sistema supervisório
Este post faz parte da série Gerenciador de consumo de energia elétrica e água. Leia também os outros posts da série:

Esta é a terceira parte da série de artigos que descrevem um projeto de um Gerenciador de consumo de energia elétrica e água com sistema supervisório web/remoto. A série é composta de três artigos, sendo eles:

  • Parte 1 - Introduzir o leitor sobre o que consiste o projeto e apresentar o que será utilizado em seu decorrer;
  • Parte 2 - Apresentar o desenvolvimento de hardwares e a montagem dos mesmos;
  • Parte 3 - Abordar sobre o desenvolvimento de software bare metal e a solução remota utilizada, nesse caso um aplicativo mobile Android que gerencia o sistema.

Este artigo tem como base o TCC de Engenharia Elétrica dos alunos da Faculdade Politécnica de Jundiaí, formados em 2014, são eles: Jefferson dos Santos Abrahão, Neandro Anzolini, Sérgio Luiz Marchi e Vinicius de Almeida.

Pré-requisitos

Devido à abrangência deste projeto, para uma boa compreensão dos conteúdos desta série de artigos são desejados os seguintes pré-requisitos:

  • Conhecimento de linguagem de programação C;
  • Conhecimento em desenvolvimento de sistemas embarcados em geral;
  • Conhecimento de hardware e utilização prévia de Arduino e suas Shields;
  • Conhecimento das variáveis de medição de energia elétrica e consumo de água.

No que consiste esta parte do projeto?

Esta parte do projeto consiste na explanação do software bare metal desenvolvido e da solução encontrada para exibir remotamente os dados.

Visão geral do Software

O software foi desenvolvido através do kit Arduino Mega 2560 e a linguagem de programação utilizada foi C/C++. Basicamente, o software é dividido em duas partes, setup e loop.

O primeiro é responsável pela configuração do hardware e inicialização de parâmetros que serão tratados e utilizados no decorrer do programa, tais como variáveis, memórias, configuração da ethernet, configuração do bluetooth, definição dos GPIOs, entre outros.

O loop é responsável pela execução das ações a serem tomadas pelo software. Neste projeto em específico foi designado que a sequência básica do loop é de execução da tela de inicialização, ou seja, “hello word” do software através de uma mensagem no display. Após essa execução o programa entra em modo de gerenciamento, que nada mais é que a varredura dos sensores conectados ao módulo e envia sequencialmente para a página web, para a serial nativa do Arduino e para o aplicativo android via bluetooth.

Neste estágio de gerenciamento, além de enviar os dados aos periféricos já devidamente calculados, o módulo executa a varredura do teclado. A rotina de varredura do teclado lê cada GPIO referente às teclas e caso alguma tecla seja acionada retorna um valor indicando qual foi acionada. Nesta rotina em específico, caso a tecla ENTRA seja pressionada o módulo sai do modo de gerenciamento e entra no setup. Neste momento até a entrada de algum parâmetro os dados param de serem calculados e enviados aos periféricos. Caso a tecla RETURN seja pressionada, o módulo entra na tela de amostragem de tensão. Importante ressaltar que independente da função que está sendo amostrada no display, todas as grandezas estão sendo calculadas e enviadas aos demais periféricos.

Foram criadas telas de parametrização com o intuito de auxiliar o usuário caso ele não queira ficar na tela de gerenciamento, ou seja, para o caso de querer monitorar no display uma grandeza em específico, há essa possibilidade. O setup de programação foi dividido em dois grupos, Energia e Água, e subdivididos em tensão, corrente, potencias ativa, reativa e aparente, fator de potência e consumo de energia pelo lado de Energia e fluxo e consumo de água pelo lado de Água.

Além disso, há a rotina que monta a página web em html e envia os dados para que o shield W5100 envie o pacote TCP/IP para a rede e, também, a rotina que envia um buffer próprio para o módulo HC-05 bluetooth e também para a serial.

Há duas funções especificas que são bem importantes para o conjunto, a primeira delas é o desligamento do display, ou sleep mode, que apaga as informações do display mas continua mandando as mesmas para os periféricos. E a segunda é a função de reset, que uma vez apertado o botão surgem duas opções: ou reset do terminal, que faz o reset da placa via software; ou o reset das variáveis, que zera os valores de consumo de energia e água, uma vez que estes parâmetros não zeram com o desligamento do gerenciador.

Comunicação com a Shiled Bluetooth

A configuração da shield é feita na inicialização do Arduino, onde são definidos os parâmetros, tais como número do PIN, condições de pareamento, nome do dispositivo, entre outros.

Para facilitar a implementação da camada de aplicação Android, foi definido um protocolo próprio. Trata-se de um protocolo que inicia com STX, que sinaliza que iniciará a transmissão dos dados, e termina com ETX, que indica que o buffer termina nesse momento. Como separador entre dados foram utilizadas vírgulas.

Desenvolvimento do aplicativo

O aplicativo desenvolvido para este projeto foi criado a partir do Eclipse com ADT (Android Development Tools), ou seja, uma IDE para desenvolvimento com plugin com ferramentas para desenvolver Android. A linguagem de programação utilizada para o desenvolvimento do aplicativo foi Java, porém em alguns pontos foi necessário programar em XML.

O processo para se desenvolver um aplicativo é composto por árvores, e para esta aplicação é feita por três etapas, são elas: o desenvolvimento da tela e do ícone de atalho; o desenvolvimento da árvore principal; e o desenvolvimento do serviço de bluetooth, que roda em background, não sendo visível aos olhos do usuário final.

A etapa de desenvolvimento da tela consiste em designar a disposição dos dados a serem mostrados na tela e do botão que executa a conexão com a placa. O ícone, necessariamente, precisa possuir extensão PNG e ter dimensões 64x64 pixels. Neste projeto foi desenvolvido um ícone que transmitisse a mensagem de um gerenciador de consumo de energia e água.

A árvore principal tem a função de intermediar se o botão de conexão foi pressionado e solicitar a estrutura de serviço que execute a conexão propriamente dita. Outra função desta árvore é receber os dados tratados e direcioná-los à tela na ordem devida. Basicamente ela tem a função de gerenciar as atividades como um todo.

Já o serviço de bluetooth tem a função de estabelecer a conexão com o shield, realizar a paridade, receber os dados, tratá-los um a um segundo o protocolo que está sendo enviado e direcioná-los a estrutura principal para que ela envie para a tela. Para tanto, é extremamente importante que a aplicação conheça com quem está falando e como estão vindo os dados, por isso no capítulo de comunicação com o Shield Bluetooth foi explicado sobre o protocolo que é enviado. Sem um protocolo previamente conhecido e passível de interpretação, não é possível realizar o tratamento dos dados recebidos.

Sistema supervisório - Tela do aplicativo desenvolvido
Figura 1 – Tela do aplicativo desenvolvido.

Produto gerado

O protótipo foi batizado de CEA01BE (Controle Energia e Água 01 Bluetooth e Ethernet).

Sistema supervisório - Produto
Figura 2 – Produto gerado.
Sistema supervisório - Parte interna do produto
Figura 3 – Parte interior do produto.

Vídeo demonstrativo do projeto

Download

Código-fonte do software bare metal

Código-fonte do aplicativo Android

Conclusão e agradecimentos

Este projeto consistiu desde seu início num trabalho acadêmico voltado para uma situação sobre a qual o consumidor final tem pouco controle, ou seja, o acompanhamento “real time” de seus consumos. Estamos estudando atualmente na migração desse projeto para algo vendável. Gostaria de deixar meus agradecimentos aos parceiros deste projeto: Jefferson dos Santos Abrahão, Neandro Anzolini e Sérgio Marchi. E também ao Pedro Bertoleti que nos auxiliou muito no desenvolvimento do aplicativo Android.

Outros artigos da série

<< Gerenciador de consumo de energia elétrica e água com sistema supervisório web/remoto – Parte 2
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Arduino » Gerenciador de consumo de energia elétrica e água com sistema supervisório web/remoto – Parte 3
Comentários:
Notificações
Notificar
guest
13 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Paulo De Souza
Paulo Roberto de Souza
07/10/2018 08:50

Bom dia, tem como arrumar os links para download, está dando erro pra baixar, obrigado

Fabio Benevides
20/07/2018 17:10

Excelente projeto. Parabéns pessoal.

Pedro Henrique Arantes
PH Arantes
11/03/2016 09:24

Parabéns, muito interesse, estou lendo e tirando ideias...uma pergunta de muitas que tenho, sobre essa caixa do produto final, como fez ela ? mandou fazer onde ?

Vinicius Almeida
Vinicius Almeida
Reply to  PH Arantes
12/03/2016 10:54

Obrigado!

Nós compramos ela num site de componentes eletrônicos: http://www.casadoresistor.com.br. Mas é possível encontrar em outros tamanhos também.

Fique à vontade para perguntar.

Abraço.

Pedromakegam
Pedro Vanderlan Santana
26/07/2016 17:11

Está dando erro ao tentar realizar o download dos códigos.

Pode concertar por favor?

Fabio_Souza_Embarcados
Fabio_Souza_Embarcados
Reply to  Pedro Vanderlan Santana
26/07/2016 17:28

Pedro Por favor faça os Downloads através dos links a seguir:
http://goo.gl/FsjS6i
http://goo.gl/tR5pJs

Vamos corrigir o problema no post.

Obrigado

Pedromakegam
Pedro Vanderlan Santana
Reply to  Fabio_Souza_Embarcados
27/07/2016 08:11

Muito obrigado por responder com celeridade mas o segundo link não está funcionando. Aparentemente ele foi desativado pela Google por não atender alguma politica.

Se puder enviar um novo link eu agradeço.

Fabio_Souza_Embarcados
Fabio_Souza_Embarcados
Reply to  Pedro Vanderlan Santana
27/07/2016 10:08

Olá Pedro, atualizei os Links no texto. Acho que agora está funcionando.

Grato pelo retorno.

Amorim Francisco
Amorim Aldimiro Orim
08/07/2016 13:26

não consigo baixar o código fonte que disponibilizaste,quando dou 1 clique diz que a imagem não pode ser carregada,como faço para baixar?

Fabio_Souza_Embarcados
Fabio_Souza_Embarcados
Reply to  Amorim Aldimiro Orim
26/07/2016 17:28

Amorim por favor faça os Downloads através dos links a seguir:
http://goo.gl/FsjS6i
http://goo.gl/tR5pJs

Vamos corrigir o problema no post.

Obrigado

Fabio_Souza_Embarcados
Fabio_Souza_Embarcados
Reply to  Fabio_Souza_Embarcados
27/07/2016 10:08

Atualizei os Links no texto. Acho que agora está funcionando. 😉

Gerson Sena
Gerson Sena
16/06/2016 20:46

Um ótimo trabalho, eu não poderia deixar de dar meus parabéns. Eu estou um pouco frustrado com um projeto similar... eu estava gostando da ideia de poder usar a biblioteca que você usou, mas me deparei com o problema de não saber como explicar ela (pois trata-se de um TCC onde eu deveria fazer todas as leituras). No final estou sofrendo (por conhecer e dominar muito pouco do hardware do Arduino, uso um UNO R3) para fazer o código que lê diretamente os valores no AD dele e converte para RMS. Inclusive uso o mesmo sensor de corrente que o… Leia mais »

Vinicius Almeida
Vinicius Almeida
Reply to  Gerson Sena
18/06/2016 11:39

Gerson, muito obrigado!

Se tiver alguma dúvida e/ou sugestão fique à vontade para perguntar.

Um abraço

Talvez você goste:

Séries



Outros da Série

Menu

WEBINAR
 
Sensores e soluções para aplicações em indústria inteligente

Data: 13/08 às 15:00h - Apoio: STMicroelectronics
 
INSCREVA-SE AGORA »



 
close-link