LABSI:

Projecto e Automação de uma Casa Inteligente

Filipe Fonseca 1162076@isep.ipp.pt
Ana Monteiro 1171310@isep.ipp.pt

No âmbito da Unidade Curricular Laboratório de Sistemas, foi proposta a elaboração de um projeto, com respectivo protótipo funcional. Neste sentido, optou-se pelo desenvolvimento de uma casa inteligente, capaz de ser controlada por um utilizador através de uma página web. O objectivo é ter um leque alargado de hardware e software, permitindo a utilização de novas abordagens no contexto da LEEC. O presente relatório aborda os aspectos mais relevantes do desenvolvimento do trabalho, focando as principais dificuldades e aprendizagens.


Estado da Arte

Nos últimos anos, tem-se assistido a um crescimento exponencial de propostas inovadoras no campo das novas tecnologias tornando o que, aparentemente, era inatingível, numa realidade cada vez mais próxima. Já não é estranho ouvir falar em conceitos como casas inteligentes, monitorização de doentes à distância ou de aplicações que dizem onde há lugares para estacionar o carro.
A automação de casas, apesar de não ser uma área de actuação nova, é certamente um tema que continua em voga, tanto ao nível de sistemas mais complexos, como de pequenos dispositivos.
De um modo genérico, as casas inteligentes são edifícios automatizados, que integram dispositivos de controlo, monitorização e detecção [1]. Neste contexto, torna-se indispensável abordar o conceito de Internet of Things (IoT). Esta refere-se à ligação à rede dos objetos do dia a dia [2]. Recolhendo e analisando dados desde os objetos mais banais às maiores centrais nucleares, a utilidade e aplicações da IoT são quase infinitas. Para o propósito deste relatório, serão abordadas as aplicações da IoT no contexto da domótica.
É, de facto, inegável que a automação de casas apresenta várias vantagens, não só ao nível do utilizador comum, mas também no apoio a pessoas com diversas problemáticas de saúde. Zaidan & Zaidan (2018), numa revisão sistemática sobre processos para casas inteligentes baseados em Internet of Thing (IoT), realçam algumas das principais vantagens do uso destas tecnologias. Importa mencionar o conforto proporcionado, a minimização do consumo energético, a interligação de diversos equipamentos, a personalização da casa às necessidades do utilizador, bem como o auxílio ao cuidado de pessoas idosas ou com limitações de saúde [1].
De acordo com pesquisas recentes, em 2003, havia 500 milhões de dispositivos a interagir entre eles, número que subiu para 14 biliões em 2018 e estima-se que chegue aos 50 biliões em 2020 [3].
Devido à IoT e às tecnologias M2M (machine to machine), uma grande parte dos equipamentos que usamos, tal como televisões, frigoríficos, máquinas de lavar, sistemas de segurança, ar condicionado ou ventilação, têm a capacidade de comunicar entre si, bem como de ser controlados através de uma ligação à internet [1, 3].

Estores

Os estores elétricos são um sistema muito comum nos dias que correm, sendo já raras as casas que são construídas com estores manuais. Mas, com evoluir da IoT na domótica, já começam a existir estores interiores ou exteriores ligados à internet, controlados por uma aplicação de telemóvel, abrindo, assim, um leque de possibilidades abrangentes para fazer controlos de temperatura interior, bem como horários de abertura e fecho programáveis. Há soluções para fazer a adaptação dos estores com ligação a internet, uma delas é a simples colocação de um adaptador aos interruptores, como, por exemplo, o Shelly [4] ou um WiFi curtain switch. Existem também soluções que integram o sistema completo, como é o caso da Somfy [5].

Iluminação

No que respeita à iluminação, existem as lâmpadas inteligentes que são ligadas à LAN local e permitem o controlo da luminosidade ou mesmo da cor através do computador ou do smartphone. Possibilita ainda a execução de funções mais complexas como ligar ao despertador ou associar uma mudança de luz a um evento específico, como receber um e-mail. Três sistemas utilizados neste âmbito são o LimitlessLED [6], o LIFX [7] e o Hue, da Philips [8], sendo este último utilizado em hospitais, fábricas e até cidades [9].
Os sensores de luz mais comumente utilizados são os LDR (light dependent resistors), que variam a sua resistência em função da luz a que estão expostos. Apesar de serem uma alternativa simples e económica, podem não ser apropriados para algumas aplicações uma vez que apresentam um tempo de latência até 10 milissegundos.

Temperatura

Relativamente à temperatura, são várias as opções de sensores disponíveis, nomeadamente a família dos termístores, como o NTC que, devido à sua sensibilidade, é, particularmente, interessante para a medição e controlo de temperatura; ou as termorresistências que, apesar de terem uma saída mais linear, apresentam menor sensibilidade [10]. Para controlo da temperatura, importa ainda referir os actuadores que podem ser considerados, como por exemplo janelas, persianas, ar condicionado ou aquecimento.

Futuro

A automação de casas pode, ainda, fazer uma diferença significativa no que concerne à optimização energética. Com o agravamento do aquecimento global e a escassez energética, torna-se cada vez mais urgente a adopção de políticas de economia energética e de consciencialização para o consumo excessivo. Os sistemas domésticos de gestão energética podem ajudar a reduzir o consumo comunicando com electrodomésticos, monitorizando os consumos, bem como recebendo informações sobre as tarifas aplicadas [11].
Mas este é, apenas, o início das casas inteligentes, os primeiros passos num mundo que promete ser tão grandioso quanto a imaginação permitir. E, se algumas aplicações podem ser consideradas simples e expectáveis, outras mais complexas começam a surgir.
Hoje em dia, de forma a obterem uma vida mais confortável, as pessoas tendem a trabalhar mais, levando a elevados níveis de pressão e, consequentemente, problemas de saúde mental [12]. Estes autores desenvolveram um sistema inteligente que controla a iluminação e dispositivos com base no reconhecimento facial e emocional.
Outo grande desafio das casas inteligentes será a possibilidade de melhorar os cuidados de saúde. Este poderá ser feito ao nível de sensores biomédicos como microchips ou implantes, wearables, dispositivos de realidade aumentada, ou até mesmo recorrendo a assistentes pessoais robóticos [13].


Arquitectura

Diagrama de Blocos

Fig.1: Diagrama de Blocos

Hardware

ESP32 - Firebeetle

DFRobot
Fig.2: ESP32 - Firebeetle

A placa de desenvolvimento escolhida foi o Firebeetle – ESP32 por ter sido desenhada especificamente para aplicações IoT (Internet of Things)e, por isso, sendo amplamente utilizada em projectos semelhantes. Tem um módulo dual-core ESP-WROOM-32 que permite a comunicação por Wi-Fi e Bluetooth. É um microprocessador com frequência de CPU de 240MHz, admite comunicações SPI e I2C (entre outras), 520KB de memória SRAM e 16Mb de memória flash. Este tem uma corrente de funcionamento média de 80 mA. [14]
Neste projecto, esta placa pode ser definida como o núcleo, sendo responsável pela leitura dos valores dos sensores, por controlar os actuadores e fazer a comunicação com a página web.

Raspberry Pi 3 B+

RASPBERRY PI FOUNDATION
Fig.3: Raspberry Pi 3 B+

O RaspberryPi 3 B+ é um computador single board, com um processador Broadcom BCM2837B0, Cortex A-53, 64-bit SoC e frequência 1.4GHz. [15].
Neste projecto, este dispositivo serve para hospedar o Mosquitto broker e o Node-Red.

BMP180

Adafruit
Fig.4: BMP180

O BMP180 integra um sensor de temperatura e pressão atmosférica da Bosch, comunicação I2C, com resistências de pull-up internas, e um regulador de tensão, permitindo que esta varie entre 3 e 5 V. Este é um sensor de baixo consumo, 5μA, com um erro associado de +/-0.5 °C. No presente projecto, este módulo está a ser usado como sensor de temperatura interior, comunicando com o microcontrolador por I2C. [16]

TSL2561

Adafruit
Fig.5: TSL2561

O TSL2561 é um sensor de luz digital, capaz de detectar um alargado espectro de luminosidade (0.1 – 40000 lux). Tem como objectivo a leitura da exposição solar da casa, permitindo a abertura e fecho da janela conforme a preferência do utilizador, e, tal como o BMP180, comunica com o ESP32 por I2C. Este sensor tem um consumo médio de 240mA (típico), com consumo máximo de 600mA [17].

HC-SR04

Fig.6: HC-SR04

O HC-SR04 é um sensor ultrassónico utilizado para medir distâncias. Um emissor envia um sinal ultrassónico que, ao encontrar um obstáculo, é reflectido, sendo esse sinal lido pelo receptor. Sabendo a velocidade de propagação do som no meio, o cálculo da distância torna-se simples. O módulo integra um emissor e um receptor, ligados aos pinos echo e trigger do microcontrolador. O sonar tem um consumo de funcionamento de 15 mA.

Motor DC

DFRobot
Fig.7: Motor DC [18]

Os motores DC são comumente utilizados para diversas atividades, desde a rotação de rodas para movimentação de veículos elétricos, até à rotação de ventoinhas de arrefecimento. No presente projeto serão utilizados 2 micro-motores DC, com caixa redutora de 100:1 incorporada, que servirão para fechar e abrir o portão da garagem, bem como para abrir e fechar a persiana da sala. Estes motores têm dois encoders incorporados, baseados em sensores de efeito Hall, onde apenas está a ser utilizado um deles. Os motores utilizados têm um consumo máximo de 170 mA.
Foi efectuado um pequeno estudo do funcionamento do motor, como ilustra a figura 8, sendo que se optou pela utilização de uma frequência de 1 kHz, correnpondendo a uma corrente de 41 mA.

Fig.8: Gráfico Consumo Motor DC

MC36304

Multicomp
Fig.9: Ventoinha 5V [19]

A MC36304 é uma ventoinha axial alimentada a 5V por um cabo próprio, e que não possui nenhum tipo de controlo de velocidade ou encoder. Por isso, o mesmo é efetuado via PWM enviado do processador para o driver L298N. Esta ventoinha é utilizada para simular o sistema de refrigeração da sala, que deverá ser atuado mediante um limite definido pelo utilizador na interface existente.

L298N

STMicroelectronics
Fig.10: L298N

Este módulo é um driver de motores DC com duas pontes H, permitindo o controlo de dois motores em simultâneo. Admite motores entre os 5 e os 35 V e corrente de pico de 2 A. Neste projecto, são utilizados dois módulos destes, um que permite o controlo dos motores da janela e do portão, e outro que permite o controlo da ventoinha de refrigeração.

LED

Fig.11: LED

Não só pela sua extraordinária capacidade de iluminação, mas também pelo seu baixo consumo, o recurso a LEDs é cada vez mais acentuado, quer na iluminação doméstica, pública e até mesmo automotiva. No decorrer do projeto foi definido como requisito a apresentação de um LED a piscar, pelo que se optou por utilizar o LED que vem acoplado no ESP32 para essa função, sendo este o cumprimento do requisito do nosso projeto. Para além deste, e porque nenhuma casa consegue existir sem iluminação, foi introduzido um LED de alto brilho de cor branca de 3mm de diâmetro na sala, que pode ser controlado através da aplicação desenhada.

Pilha 18650

Motoma
Fig.12: Pilha 18650 [20]

Para a alimentação do sistema optou-se por dividir a mesma em duas. A alimentação do sistema de processamento (ESP32 e periféricos associados à alimentação do mesmo) será efetuada a partir de um PowerBank. Tendo em conta que o HC-SR04 e os L298N necessitam de uma fonte mais estável, optou-se pela utilização de duas pilhas 18650 recarregáveis, de 3.7 V e 2000 mAh, ligadas em série, para obter um total de 7.4V. Considerando que a alimentação pretendida é de 5 V, recorreu-se a um conversor CC/CC do tipo buck que aceita como entrada entre 5V-28V, e tem uma saída fixa de 5V a 3A.


Software

Considerando a natureza deste projeto, a componente de software foi de grande importância, ainda que aliada à complexidade do hardware utilizado. No entanto, apesar de ser necessário recorrer a programação em linguagem C para controlo de toda a atividade de baixo nível que ocorre no micro controlador - ESP32, foi decidido levar o trabalho mais além e desenhar uma interface gráfica - GUI (Graphical User Interface) - para ser possível ao utilizador controlar o sistema recorrendo a um PC ou mesmo Smartphone. Para isso foi utilizada a plataforma NodeRed, baseada no protocolo de comunicação MQTT. Ambas as abordagens de software encontram-se apresentadas seguidamente.

Código C - ESP32

O fluxograma da figura 13 representa, de forma esquemática, as principais partes do código desenvolvido. Para tal, foi utilizado o software VisualStudioCode, com a framework ESP-IDF, através do PlatformIO.

Fig.13: Fluxograma



Node-Red

Devido à alteração do projecto e o consequente controlo da casa através de uma página web, surgiu a necessidade de criar uma interface gráfica para o utilizador. O Node-Red é uma plataforma que pretende optimizar a programação de aplicações IoT, tornando simples a criação de uma página de fácil acesso ao utilizador. Baseia a sua programação em Javascript através da plataforma NodeJS. Foi, então, usado para implementar o protocolo de comunicação MQTT entre o Raspberry Pi 3 B+ e o ESP32, bem como para criar a página de interface com o utilizador.


Resultados

Desenvolvimento

Dada a natureza do projecto e componentes a utilizar, não se justificava um dimensionamento dos componentes ou mesmo uma simulação. Assim, numa primeira abordagem ao projecto, optou-se pela sua implementação em breadboard, como mostra a figura 14.

Fig.14: Esquema da Montagem

Começou-se pela leitura dos valores lidos pelo BMP180 e TSL2561 e, como se pode ver pela figura 14, a ligação é muito simples, sendo apenas necessário o Vin (foi usado 3.3 V do ESP32), o GND, o SCL (sinal do clock) e SDA (sinal de dados). Uma vez que o ESP32 tem apenas um barramento I2C, optou-se por utilizar um barramento externo com 5 entradas para qualquer sensor que seja necessário utilizar, e para permitir a possibilidade de expansão futura, e posteriormente este barramento foi ligado aos pinos do ESP32.
De seguida, ligaram-se os sinais de Trigger e Echo do HC-SR04 através de dois pinos digitais do GPIO do ESP32, bem como da alimentação de 5V referida no capítulo Hardware, como ilustrado na figura 14.
Após a implementação dos sensores, bem como uma maior familiarização com o equipamento, passou-se à ligação dos motores DC. Para tal, foi utilizado um driver de motores com ponte H dupla, alimentado pela fonte de 5V. Os encoders foram ligados directamente ao ESP32.
Este projecto contempla dois LEDs: um integrado no ESP32, que pisca a uma frequência de 1Hz (tal como solicitado na especificação do trabalho) e outro que representa a iluminação de uma divisão da casa. O primeiro, dado que está integrado no microcontrolador, não necessitou de componentes adicionais. O segundo, após um pequeno dimensionamento abaixo descrito, foi ligado em série com uma resistência de 220 (por normalização).
Por fim, adicionou-se uma ventoinha de 5V que funciona como um actuador para arrefecimento da casa. Esta foi ligada a um segundo L298N, permitindo o controlo da velocidade de rotação através do PWM.
Após toda a implementação e testes da montagem, fez-se ainda um esquemático de uma PCB para o projecto, como mostra a figura 15.

Fig.15: Esquemático PCB
Considerando a arquitectura do projecto, não se justifica a integração dos sensores na placa. Por esse motivo, optou-se por inserir as ligações para o ESP32, os barramentos para I2C, 3.3 e 5V, e os LEDs (apesar de apenas estar a ser utilizado um, o segundo seria para substituir o led integrado no microcontrolador).
Relativamente ao Hardware, não foram encontradas dificuldades, sendo que todos os componentes funcionaram de acordo com o expectável. Importa apenas referir que alguns dos pinos do ESP32 são reservados a funções específicas, não podendo ser usados para leituras de sensores, motivo pelo qual o número destes foi reduzido (em comparação com o plano inicial).


Protótipo Funcional

Apesar de não ser o foco do trabalho, optou-se pela construção da maquete de uma casa, de forma a proporcionar uma melhor visualização do funcionamento do protótipo desenvolvido. Assim, começou por ser feito um projecto em AutoCad, seguido da construção da maquete em k-line. A escolha do material prendeu-se com a facilidade de construção e adaptação à instalação do hardware, bem como à portabilidade do mesmo por ser bastante leve. A fim de permitir a colocação dos componentes, a maquete contempla um “tecto falso”. Para a simulação da janela e do portão da garagem foram impressas duas estruturas, que encaixam nos motores DC, e adicionadas duas “cortinas” para uma percepção do funcionamento dos referidos motores.
Ao nível da instalação, começaram por ser inseridos os sensores. O TSL2561 foi colocado junto à janela na parede frontal, no interior da casa, mas com uma abertura que permite a detecção da luz incidente. O objectivo deste sensor é dar informação ao utilizador sobre a incidência luminosa na casa, permitindo que este ajuste a abertura e fecho da mesma com base na exposição solar. O BMP180 foi inserido no interior da sala, de forma a dar a temperatura interior e, consequentemente, o utilizador poder regular não só a intensidade da ventoinha, mas também a janela. Por sua vez, o HC-SR04 foi instalado por cima da porta, no tecto, com as respectivas aberturas, permitindo a detecção de intrusões (caso haja uma diminuição no valor da distância registado).
Seguidamente, procedeu-se à instalação dos actuadores, começando pelos motores. Como foi referido previamente, estes foram acoplados a estruturas que simulam o funcionamento de estores. Um foi colocado na janela da sala e, mais uma vez, o utilizador pode controlar a sua abertura e fecho de forma continua, isto é, consegue controlar quanto quer manipular o estore. O segundo motor foi instalado no portão da garagem, apresenta as mesmas funcionalidades da janela mas, devido à aproximação ao contexto real, tem a possibilidade de abrir e fechar totalmente através de um switch (situação de entrada de um carro, por exemplo). Como já foi referido, o LED foi colocado no interior da sala, representando um candeeiro que pode que ligado ou desligado através da página web. Por fim, fez-se uma abertura no tecto da sala para a instalação da ventoinha.
Em retrospectiva, teria sido vantajoso ter feito uma maquete de maior dimensão, uma vez que o encaixe de todos os componentes se tornou difícil no espaço reservado para o efeito. Ainda assim, para optimizar a implementação, foram criados dois barramentos em veroboard, um para a comunicação I2C e outro para a alimentação 5V, de forma a excluir a necessidade de utilização de breadboard.
O vídeo abaixo mostra algumas funcionalidades do projecto, bem como da interface do utilizador.


Conclusões

O projecto inicialmente delineado, prendia-se com o conceito de casa autónoma, capaz de se autorregular através da leitura de diversos indicadores. No entanto, após alguma pesquisa e procurando uma óptica mais funcional e adaptada ao contexto real, decidiu-se priorizar o controlo da casa através de uma página web. Além disso, alguns pinos disponíveis no ESP32 são reservados a funções específicas, não podendo ser utilizados de forma livre. Assim, alguns sensores e actuadores previstos no projecto inicial, não puderam ser incluídos por falta de pinos disponíveis no GPIO do microcontrolador e foi implementado o sistema referido no presente relatório.
De uma forma genérica, pode-se afirmar que os principais objectivos foram alcançados, tendo o trabalho desenvolvido cumprido a função para a qual estava previsto. Ainda que o resultado final não seja igual ao projecto inicial, considera-se que esta versão é mais rica do ponto de vista da sua implementação, contemplando diversas áreas: sensores, actuadores, alimentação portátil, ligação à rede e interface para o utilizador.

Principais Dificuldades

Ainda que o resultado final do projecto tenha sido bastante satisfatório, houve várias dificuldades a ser ultrapassadas. Apesar de a utilização de um microcontrolador novo, em detrimento de um ATMega já utilizado anteriormente, ser um dos objectivos do trabalho, esta escolha foi um pouco arriscada, na medida em que o ESP32 – Firebeetle possui mais informação e trabalho desenvolvido no âmbito do framework da Arduino. Assim, o primeiro contacto com a placa de desenvolvimento revelou-se mais difícil do que o expectável, por vezes até frustrante, pois a informação disponível baseia-se, maioritariamente, na utilização de bibliotecas Arduino. Apesar de a hipótese de escolher outro microcontrolador ter sido considerada, optou-se por encarar esta dificuldade como um desafio que, com um esforço adicional, acabou por ser superado.
A maior dificuldade do trabalho foi a comunicação entre as plataformas, não só na sua implementação, mas principalmente na escolha mais adequada. Inicialmente, considerou-se fazer uma página web, com base de dados, e fazer a comunicação com o microcontrolador através dos métodos POST e GET. No entanto, este método não se revelou satisfatório visto que haveria uma sobrecarga do canal de comunicação, devido à necessidade do ESP32 fazer pedidos constantemente à página para que estes valores estivessem sempre actualizados. Além disso, apresentaria problemas de segurança, dado que o URL poderia ser acedido por qualquer utilizador, em qualquer sítio. Também foi considerada a hipótese de alojar o site no próprio ESP32, sendo abandonada por uma questão de espaço no microcontrolador. Assim, após uma pesquisa sobre protocolos de comunicação adequados ao contexto do trabalho, optou-se por utilizar o MQTT, criar a página no NodeRed e fazer o seu alojamento num RaspberryPi 3 B+. Este modelo mostrou-se ideal pois, para além de solucionar o problema de uma forma mais eficaz, alargou o leque de aprendizagens, nomeadamente ao nível de plataformas e dispositivos tão comummente utilizados como os em questão.

Pontos Fortes

Considera-se importante destacar como principais pontos fortes do trabalho a abordagem multidisciplinar, focando a ligação entre diferentes componentes e softwares, bem como a criação de uma página web que é a interface com o utilizador. Procurou-se utilizar componentes e dispositivos de fácil acesso e amplamente conhecidos, aproximando mais o projecto do contexto real.

Limitações e Melhorias

A principal limitação do trabalho considera-se que seja a falta de segurança do projecto. Idealmente, toda a ligação à rede deveria ser feita através de comunicação segura, assim como deveria estar disponível apenas para utilizadores autenticados e com palavra passe. Ainda que o endereço dinâmico confira alguma segurança, não é, de forma alguma, a solução a ser implementada em contexto real.
Também seria uma mais valia a integração de mais sensores e actuadores, como por exemplo sensores de temperatura exterior, de humidade, de fumo, painel solar auto regulável, leds em todas as divisões ou um alarme. Deste modo, a casa poderia ser mais autónoma e eficiente do ponto de vista energético. No entanto, por constrangimentos de número de pinos disponíveis e tempo para a sua implementação, não foi possível. Ainda assim, para contornar esta situação, o projecto poderia ser adaptado para integrar um microcontrolador adicional e, deste modo, ter uma maior margem de controlo, ou, em alternativa, utilizar um microcontrolador com mais pinos I/O.

Considerações Finais

Para terminar, importa referir que, do ponto de vista académico, este projecto foi bastante enriquecedor, não só pela questão da diversidade de conhecimentos aplicados e adquiridos, mas também pela abordagem holística desde o planeamento até ao resultado final.


Referências