Monitoramento de água com IoT - Parte 1

monitoramento de água
Este post faz parte da série Monitoramento de água com IoT. Leia também os outros posts da série:

Esta é a primeira parte da série de artigos que descrevem um projeto de monitoramento de água com IoT.  A série é composta de três artigos, sendo eles: 

  1. Parte 1 - objetiva introduzir o leitor ao que o projeto consiste e em como configurar a comunicação ZigBEE utilizada no projeto;
  2. Parte 2 - visa apresentar a parte bare-metal da solução, com explicações detalhadas do código e conceitos e estratégias de desenvolvimento;
  3. Parte 3 - parte final da série, destinada a explicar em detalhes a parte de Linux Embarcado do projeto e interação com usuário via Internet (aqui o conceito de IoT é dominante).

 

Este artigo tornou-se viável graças ao apoio da Eletrogate, a qual forneceu o sensor de fluxo de água utilizado no projeto.

 

 

Pré-requisitos

 

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

  • Conhecimento básico de Linux Embarcado;
  • Conhecimento de linguagem de programação C;
  • Conhecimento de linguagem de programação Python;
  • Conhecimento de MQTT (recomendo fortemente a leitura do artigo MQTT e Intel Edison);
  • Conhecimento em desenvolvimento de sistemas embarcados bare-metal (ter noção das principais técnicas e conceitos desse tipo de sistema, tais como: interrupções externas, timers, comunicação serial por interrupção, watchdog timer, etc.).

 

 

O que é este projeto?

 

O projeto é uma solução mista de sistemas embarcados (bare-metal e Linux Embarcado) capaz de monitorar de forma inteligente o consumo de água de uma residência. Toda a interação com o morador / usuário do sistema é via internet, utilizando, assim, fortemente o conceito de IoT.

 

O projeto tem as seguintes funcionalidades: 

  • Calcular  o consumo e vazão de água por meio de um sistema embarcado bare-metal (utilizando microcontrolador PIC18F4520) e um sensor de fluxo de água;
  • Informar esses dados a um sistema Linux Embarcado de modo wireless (via ZigBEE);
  • Interação do usuário com o sistema é totalmente via Internet (utilizando qualquer browser, inclusive de dispositivos mobile), sendo que essa interação consiste em: leitura da vazão instantânea (l/h), consumo acumulado (l), reset do consumo total acumulado e estabelecimento de meta de consumo;
  • Ao atingir a meta, surgirá um aviso na tela de interação com o usuário e um e-mail é disparado para informar o morador que sua meta foi atingida. 

 

Em suma, o projeto visa facilitar o uso consciente de água utilizando a eletrônica embarcada e conceitos de IoT.

 

 

Diagrama do projeto

 

O projeto pode ser definido em blocos conforme mostra a figura 1.

 

monitoramento de água com IoT: Diagrama em blocos do leitor de água
Figura 1 - Diagrama em blocos do projeto.

 

Conforme pode ser observado, o sistema bare-metal (feito com um microcontrolador Microchip PIC 18F4520) se encarrega de ler a saída pulsada do sensor de fluxo, calculando a vazão instantânea e consumo de água. Tais informações são enviadas ao sistema Linux Embarcado (feito com uma Intel Edison) de modo sem fio, através de ZigBEE (envio sob demanda, ou seja, a placa com sistema Linux Embarcado requisita os dados e esses são enviados). O sistema Linux Embarcado, por sua vez, é o responsável pela interação com a Internet. Em resumo, o sistema possui partes distintas e dedicadas, comunicando-se sem fio, dando grande flexibilidade ao projeto em termos de instalação do mesmo em uma residência (afinal, para instalar e usar o sistema não são necessárias reformas na casa). 

 

 

PIC e Intel Edison
Figura 2 - PIC 18F4520 e Intel Edison (os dois elementos do projeto)

 

 

Devido à arquitetura do projeto como um todo e pelo fato da comunicação das placas ser ZigBEE, este projeto comporta vários upgrades / melhorias, sendo uma delas a comunicação com mais sistemas bare-metal simultaneamente (para comunicação com sistema bare-metal que informa o consumo energético de uma casa, por exemplo). Ou seja, a placa com Linux Embarcado funciona como uma central, suportando muitos periféricos wireless.

 

Segue abaixo um vídeo explicando o conceito geral do projeto.

 

 

 

Comunicação sem fio ZigBEE

 

Conforme foi visto, a parte dedicada à medição da vazão e consumo (sistema bare-metal) se comunica com o sistema Linux Embarcado de forma sem fio, através de ZigBEE.

 

O ZigBEE consiste em um padrão de comunicação sem fio. O ZigBEE opera na frequência ISM (Industrial, Scientific and Medical), sendo as frequências e número de canais homologados os seguintes: na Europa de 868 MHz em 1 canal, 915 MHz em 10 canais nos Estados Unidos e 2,4 GHz em 16 canais no restante do mundo.

 

O ZigBEE é um padrão de comunicação preparado / fundamentado para ambientes industriais, logo possui características que chamam a atenção: 

  • Boa imunidade a interferências;
  • Alta confiabilidade (nele há garantia de entrega dos pacotes ao destinatário em caso de dados chegarem corrompidos);
  • Baixo consumo energético;
  • Bom alcance (mesmo quando não está em visada);
  • Possui criptografia nativa (AES 128 bits);
  • Na rede ZigBEE cada dispositivo possui um endereço, suportando construir topologias de redes;
  • Alto número de nós possíveis (até 65.536 nós);
  • Possui I/Os integrados (o que dispensa, em alguns casos, o uso de módulos ZigBEE com um circuito microcontrolado adicional);
  • Boa relação custo/benefício.

 

Entretanto, ele não suporta altíssimas taxas de transmissão de dados, não sendo um padrão de comunicação wireless adequado para streaming de áudio e/ou vídeo, por exemplo.

 

 

Rede ZigBEE

 

Conforme foi visto, os dispositivos ZigBEE em uma rede são endereçados, logo é possível construir diferentes topologias.

 

Uma rede de dispositivos ZigBEE pode assumir três topologias distintas: topologia em árvore, topologia em estrela e topologia malha (mash). A escolha da topologia varia de acordo com o uso, porém é importante ressaltar que redes em árvore e mesh oferecem maior alcance, o que deve ser levado em conta quanto se deseja construir redes com dispositivos muito distantes um do outro. A figura 3 contém exemplificações dessas topologias.

 

monitoramento de água com IoT: Topologias de rede ZigBEE
Figura 3 - Topologias de rede ZigBEE.

 

Nota-se também pela figura 3 que redes ZigBEE possuem três tipos de dispositivos: coordenador, roteador e dispositivo final. Em resumo, um coordenador é responsável por iniciar e manter a rede funcionando, além de servir como "ponte" entre redes ZigBEE distintas; um roteador, além de ser um nó da rede ZigBEE, pode servir de "ponte" entre outros nós de rede, o que confere à rede maior alcance; já um dispositivo final é um nó da rede onde estão os sensores e atuadores, ou seja, com quem se deseja comunicar.

 

Exceto em casos de redes que não usam dispositivos roteadores (ou seja, redes com coordenador e dispositivos finais somente), há dois campos das configurações do ZigBEE que devem ser preenchidos: My Address e Destination Address (ambos são números de 16 bits, ou seja, de 0000h até FFFFh). Deve-se preencher o My Address com o endereço que o dispositivo deverá assumir na rede e o Destination Address com o endereço do único dispositivo alvo (ou seja, um End Device comunica-se somente com um endereço de dispositivo ZigBEE).

 

Ainda, os módulos ZigBEE possuem um campo de configuração da rede que deve ser preenchido (um número de 2 bytes). Este campo chama-se PAN ID. Ou seja, dois ou mais dispositivos com mesmo endereço, mas com identificadores de rede diferentes podem funcionar normalmente no mesmo espaço físico sem problemas de comunicação.

  

 

Configuração dos ZigBEEs do projeto

 

Primeiramente, para configuração dos ZigBBEs será necessário ter um Dongle ZigBEE e o software X-CTU. Para aprender mais sobre o uso do software X-CTU recomendo assistir este vídeo.

 

No projeto em questão foram utilizados dois módulos XBee "normais" (sem antena externa, chamados de "chip antena"). Estes módulos não têm um alcance tão grande quanto um XBee-Pro com antena externa, porém atendem muito bem alcances exigidos em ambientes residenciais (além de ter um preço muito mais convidativo que um XBee-Pro). Observar a figura 4.

 

monitoramento de água com IoT: XBee Chip Antena
Figura 4 - Módulo XBee Chip Antena.

 

Como trata-se de uma comunicação entre dois dispositivos, não é necessário o uso de roteadores ZigBEE. Logo, foi escolhido que o ZigBEE ligado ao sistema Linux Embarcado é o coordenador da rede e o ligado ao sistema bare-metal é um dispositivo final. Além disso, um comunicará exclusivamente com o outro.

 

Logo, os módulos devem ter a seguinte configuração, sendo a figura 5 as principais configurações do ZigBEE coordenador (sistema Linux Embarcado).

 

monitoramento de água com IoT: Configurações do coordenador da rede ZigBEE
Figura 5 - Configurações do coordenador da rede ZigBEE.

  

Já a figura 6 mostra as principais configurações do ZigBEE End Device (sistema bare-metal):

 

monitoramento de água com IoT: Configurações do End Device da rede ZigBEE
Figura 6 - Configurações do End Device da rede ZigBEE.

  

Portanto, observa-se que a topologia da rede utilizada é a topologia em estrela.

 

Observação: Além das configurações mostradas, há ainda a configuração da UART do ZigBEE (baudrate, paridade, stop-bits e número de bits). Isso não afeta em nada o funcionamento do ZigBEE enquanto rádio  (afinal, isso variará de acordo com o que o projetista acha melhor para seu projeto, pois trata-se da comunicação com o microcontrolador do projeto). Eu optei, no caso deste projeto, em utilizar baudrate 9600, 8 bits, sem paridade e 1 stop-bit como configuração da UART dos ZigBEE.

 

 

Próximos passos

 

Nos próximos dois artigos da série será visto em detalhes o desenvolvimento dos dois sistemas embarcados envolvidos (bare-metal e Linux Embarcado). Enfim, a eletrônica será utilizada a favor do consumo inteligente de água!

 

 

Referências

 

Outros artigos da série

Monitoramento de água com IoT - Parte 2 >>
Este post faz da série Monitoramento de água com IoT. Leia também os outros posts da série:
NEWSLETTER

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

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Pedro Bertoleti
Sou engenheiro eletricista formado pela Faculdade de Engenharia de Guaratinguetá (FEG - UNESP) e trabalho com Android embarcado em Campinas-SP. Curioso e viciado em tecnologia, sempre busco me aprimorar na área de sistemas embarcados (modalidades bare-metal, RTOS, Linux embarcado e Android embarcado).Para mais informações, acesse minha página no Facebook:https://www.facebook.com/pbertoleti

12
Deixe um comentário

avatar
 
5 Comment threads
7 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
Leonardo CampiolJoão Victor Paulo SilvaphfbertoletiDouglas BastosMONITORAMENTO DE ÁGUA VIA INTERNET « Revista In The Mine Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Leonardo Campiol
Visitante
Leonardo Campiol

Também estou desenvolvendo um sistema para monitoramento de consumo de energia para indústria, porem existem inúmeros equipamentos que monitoram, e comunica a redes ethernet, porem falta um equipamento de médio e pequeno porte para armazenamento e monitoração deste, sendo necessário um pequeno servidor de dados e comparação de dados, para fim de analise de consumo e principalmente qualidade da energia consumida.

phfbertoleti
Visitante
phfbertoleti

Leonardo, muito legal a ideia de um sistema de monitoramento de consumo de energia!
Quanto a suprir esta necessidade de comunicação entre um equipamento de médio e pequeno porte com a web, você vê algo no MQTT ou mesmo em outras "modalidades IoT" que possa atender?

trackback
trackback
João Victor Paulo Silva
Visitante
João Victor Paulo Silva

Estou desenvolvendo um projeto na área muito semelhante porém muito mais amador comparado ao apresentado no artigo. Esperando ansiosamente as próximas parte. Parabéns pelo artigo!

phfbertoleti
Visitante
phfbertoleti

João, muito obrigado!

Fica antenado que no início dessa semana sai a segunda parte! Você vai curtir!
Compartilhe conosco seu projeto, sempre é bom ver projetos sendo desenvolvidos.

phfbertoleti
Visitante
phfbertoleti
Douglas Bastos
Visitante
Douglas Bastos

Parabéns pelo artigo! Aguardo as próximas partes. Agredeceria e muito se pudesse disponibilizar referencias de aprendizado quanto aos pré-requisitos listados.

phfbertoleti
Visitante
phfbertoleti

Douglas, muito obrigado!

Fica antenado que já já sairão as duas partes restantes, será uma série muito interessante!
Quando você fala sobre as referências, você quis dizer referências de todos os conteúdos utilizados na elaboração da série, certo? Se sim, posso indicar algumas referências aqui mesmo nos comentários se você quiser. Você gostaria?

Douglas Bastos
Visitante
Douglas Bastos

Sim, claro! Inclusive é até melhor, pois alcança mais interessados.
Mais uma vez, obrigado.

phfbertoleti
Visitante
phfbertoleti

Douglas, bom dia. Segue abaixo algumas referências importantes de aprendizado das frentes utilizadas nesse projeto: - Linguagem C: *Primeiro Curso de Programação em C (Edson Luiz França Senne) *Apostila de Linguagem C do professor Ricardo Saad: http://www.feg.unesp.br/~saad/zip/Linc11.zip - Sistemas embarcados: *Art of Designing Embeded Systems - Jack Gainsle -Linguagem C aplicada a microcontroladores PIC: *Microcontroladores PIC Programação em C - Fábio Pereira - Python: *Documentação oficial da versão 2.X: https://docs.python.org/2/ - MQTT: *As referências estão explícitas neste artigo:http://embarcados.com.br/mqtt-e-intel-edison/ Porém, para todas as frentes, é fundamental consultar fóruns (uma ótima referência é o http://stackoverflow.com/). Lá é possível achar conteúdos interessante e,… Leia mais »

phfbertoleti
Visitante
phfbertoleti