Você está na página 1de 61

UNIVERSIDADE FEDERAL DE SANTA CATARINA

CENTRO TECNOLÓGICO
DEPARTAMENTO DE ENGENHARIA ELÉTRICA E ELETRÔNICA
CURSO DE ENGENHARIA ELETRÔNICA

Lucas Almeida Martins

Sistema de Iluminação Inteligente: Economia de Energia e


Monitoramento de Ambiente Utilizando MQTT

Florianópolis
2021
Lucas Almeida Martins

Sistema de Iluminação Inteligente: Economia de Energia e


Monitoramento de Ambiente

Trabalho de Conclusão de Curso submetido ao


Departamento de Engenharia Elétrica e Eletrônica da
Universidade Federal de Santa Catarina para a obtenção
do título de Bacharel em Engenharia Eletrônica.
Orientador: Prof. Joceli Mayer, Ph.D.

Florianópolis
2021
Ficha de identificação da obra elaborada pelo autor.

Martins, Lucas
Sistema de Iluminação Inteligente : Economia de Energia e
Monitoramento de Ambiente Utilizando MQTT / Lucas Martins ;
orientador, Joceli Mayer, 2021.
61 p.

Trabalho de Conclusão de Curso (graduação) - Universidade


Federal de Santa Catarina, Centro Tecnológico, Graduação em
Engenharia Eletrônica, Florianópolis, 2021.

Inclui referências.

1. Engenharia Eletrônica. 2. Internet das Coisas. 3.


ESP8266. 4. Protocolo MQTT. I. Mayer, Joceli. II.
Universidade Federal de Santa Catarina. Graduação em
Engenharia Eletrônica. III. Título.
Lucas Almeida Martins

Sistema de Iluminação Inteligente: Economia de Energia e


Monitoramento de Ambiente

Este Trabalho de Conclusão de Curso foi julgado adequado para obtenção do Título de
Bacharel em Engenharia Eletrônica, e aprovado em sua forma final pelo Curso de Graduação
em Engenharia Eletrônica.

Florianópolis, 10 de Março de 2021.

________________________
Prof. Fernando Rangel de Sousa, Dr.
Coordenador do Curso

Banca Examinadora:

________________________
Prof. Joceli Mayer, Dr.
Orientador
Universidade Federal de Santa Catarina

________________________
Prof.ª Daniela Ota Hisayasu Suzuki, Dra.
Avaliadora
Universidade Federal de Santa Catarina

________________________
Prof. Richard Demo Souza, Dr.
Avaliador
Universidade Federal de Santa Catarina
Dedico este trabalho aos meus pais.
AGRADECIMENTOS

Agradeço a oportunidade oferecida pela Universidade Federal de Santa Catarina e a


todos os professores e profissionais que contribuem de alguma forma para o ensino de
qualidade oferecido pela instituição.

Agradeço em especial o professor Joceli Mayer pela orientação no trabalho e pela


contribuição na minha formação profissional e pessoal através do PSILAB.

Por fim, agradeço meus pais e minha família, pelo apoio absoluto na minha
graduação e por permitirem que eu me dedicasse de forma exclusiva aos estudos.
RESUMO

A adoção da Internet das Coisas em dispositivos do cotidiano já é uma tendência inevitável.


Esse conjunto de tecnologias pode ser explorado em diversas aplicações. No ambiente de
trabalho, uma boa iluminação é um fator relevante para a produtividade e pode até reduzir
acidentes. Este trabalho visa abordar essa questão, propondo um sistema de iluminação
inteligente capaz de se adequar à presença de pessoas. Para isso, foi desenvolvido um
protótipo utilizando microcontroladores ESP8266. O sistema foi dividido em um dispositivo
central, que controla as lâmpadas, e dispositivos periféricos, que monitoram a luminosidade e
a presença em pontos específicos do ambiente. Os dispositivos possuem conexão Wi-Fi, e se
comunicam utilizando o protocolo MQTT. Através de um breve processo de calibração, a
central é capaz de reconhecer como cada lâmpada afeta cada ponto da sala, e garantir que a
luminosidade está dentro do limiar estabelecido sempre que há a detecção de presença. No
final, o protótipo do sistema foi colocado à prova através de um ambiente simulado e obteve
sucesso em controlar adequadamente as lâmpadas.

Palavras-chave: Internet das Coisas. Sistemas Embarcados. MQTT. Iluminação.


ABSTRACT

The adoption of Internet of Things in everyday devices is already an inevitable trend. This set
of technologies can be explored in several applications. In the work environment, a well-
adjusted lighting is a relevant factor for productivity and can even contribute to the reduction
of accidents. This work aims to address this issue, proposing an intelligent lighting system
capable of adapting to the presence of people. Thus, a prototype was developed using
ESP8266 microcontrollers. The system was divided into a central device, which controls the
lamps, and peripheral devices, which monitor brightness and presence at specific points of the
environment. The devices support Wi-Fi connection, and communicate using the MQTT
protocol. Through a brief calibration process, the central device can recognize how each lamp
affects each point in the room and ensure that the brightness is within the established
threshold whenever presence is detected. In the end, the system prototype was tested on a
simulated environment and successfully controlled the lamps.

Keywords: Internet of Things. Embedded Systems. MQTT. Illumination.


LISTA DE FIGURAS

Figura 1: Exemplo da placa de desenvolvimento NodeMCU [22]. ............................................ 21


Figura 2: Logo da plataforma Node-RED [11]........................................................................... 25
Figura 3: LDR utilizado no projeto. ......................................................................................... 25
Figura 4: Relação de resistência x luminosidade do LDR utilizado. ....................................... 26
Figura 5: Detector de Presenças utilizado no projeto. .............................................................. 27
Figura 6: Divisor de tensão com o LDR. Circuito elaborado no programa LTSpice. .............. 30
Figura 7: Luxímetro R&D Instruments MT30 utilizado como referência. .............................. 32
Figura 8: Medição da luminosidade no LDR com o luxímetro para levantamento das
constantes a e b. ....................................................................................................................... 32
Figura 9: Estrutura dos Tópicos MQTT da Central e dos Sensores. ........................................ 38
Figura 10: Capturas de tela ilustrando os passos (1), (2), (3) e (4). ......................................... 40
Figura 11: Fluxograma da inicialização dos dispositivos. ........................................................ 40
Figura 12: Exemplo da composição do ID do sensor 1. ........................................................... 41
Figura 13: Fluxogramas do processo de calibração (esquerda) e do funcionamento geral da
central (direita). ........................................................................................................................ 42
Figura 14: Matriz de luminosidades em cada sensor para cada lâmpada. ................................ 43
Figura 15: Matriz de ações que dita quais lâmpadas são ligadas para cada combinação de
presenças. .................................................................................................................................. 43
Figura 16: Matriz da soma de luminosidades em cada sensor para cada combinação de
lâmpadas. .................................................................................................................................. 44
Figura 17: Fluxograma do funcionamento geral dos sensores. ................................................ 46
Figura 18: Circuito da Central. ................................................................................................. 47
Figura 19: Protótipo da Central. ............................................................................................... 48
Figura 20: Circuito dos Sensores. ............................................................................................. 48
Figura 21: Protótipo de um dos sensores. ................................................................................. 49
Figura 22: Protótipo de um dos sensores após encapsulamento. .............................................. 49
Figura 23: Representação do Cenário I. ................................................................................... 50
Figura 24: Representação do Cenário II. .................................................................................. 51
Figura 25: Montagem do Cenário I. ......................................................................................... 52
Figura 26: Comportamento do Cenário I sem detecção de presença no sensor 1. ................... 53
Figura 27: Montagem do Cenário 2. ......................................................................................... 53
Figura 28: Comportamento do Cenário II com detecção de presença em todos os sensores. .. 54
Figura 29: Comportamento do Cenário II sem detecção de presença no sensor 4. .................. 55
Figura 30: Painel elaborado na plataforma Node-RED. ........................................................... 56
LISTA DE TABELAS

Tabela 1: Constantes de caracterização dos LDRs utilizados nos sensores. ............................ 34

Tabela 2: Estimativa da luminosidade em lux para uma mesma leitura analógica. ................. 35
LISTA DE ABREVIATURAS E SIGLAS

GPIO General Purpose Input/Output

ID Endereço de Identificação

IDE Integrated Development Environment

IoT Internet of Things

JSON JavaScript Object Notation

LDR Light Dependent Resistor

MOSFET Metal Oxide Semiconductor Field Effect Transistor

MQTT Message Queuing Telemetry Transport

USB Universal Serial Bus


SUMÁRIO

1. Introdução ............................................................................................................ 19
1.1 Objetivo Geral ....................................................................................................... 20

1.2 Objetivos Específicos ............................................................................................ 20

2. Componentes Utilizados ...................................................................................... 21


2.1 ESP8266 ................................................................................................................ 21

2.1.1 Wi-Fi Manager ..................................................................................................... 22

2.1.2 MQTT ................................................................................................................... 23

2.1.3 JSON ..................................................................................................................... 24

2.1.4 Node-RED ............................................................................................................. 24

2.2 LDR ....................................................................................................................... 25

2.3 Detector de Presença.............................................................................................. 26

3. Desenvolvimento .................................................................................................. 28
3.1 Funcionamento Geral............................................................................................. 28

3.1.1 Estrutura do Protótipo ........................................................................................ 28

3.1.1.1 Centrais ................................................................................................................. 28

3.1.1.2 Sensores ................................................................................................................. 29

3.1.2 Comportamento do Sistema ............................................................................... 29

3.2 Caracterização dos sensores de luminosidade ....................................................... 29

3.2.1 Equacionamento do Problema............................................................................ 30

3.2.2 Ajuste Prático ....................................................................................................... 31

3.3 Protocolo de Comunicação .................................................................................... 35

3.3.1 Detalhes do Protocolo de Comunicação ............................................................. 35

3.3.2 Configuração Inicial do Dispositivo ................................................................... 39

3.3.3 Verificação dos Códigos ...................................................................................... 41

3.4 Funcionamento da Central ..................................................................................... 41


3.4.1.1 Geração da Tabela de Ações ................................................................................. 43

3.5 Funcionamento dos Sensores ................................................................................. 45

3.6 Circuitos................................................................................................................. 47

3.6.1 Central .................................................................................................................. 47

3.6.2 Sensores ................................................................................................................ 48

4. Resultados............................................................................................................. 50
4.1 Metodologia ........................................................................................................... 50

4.1.1 Cenário I ............................................................................................................... 50

4.1.2 Cenário II ............................................................................................................. 51

4.2 Teste do Protótipo .................................................................................................. 52

4.2.1 Cenário I ............................................................................................................... 52

4.2.2 Cenário II ............................................................................................................. 53

4.2.2.1 Lâmpada Redundante ............................................................................................ 54

4.2.2.2 Critério de Maior Luminosidade ........................................................................... 55

5. Integração IoT ...................................................................................................... 56


6. Conclusões ............................................................................................................ 58
6.1 Trabalhos Futuros .................................................................................................. 59

Referências .............................................................................................................................. 60
19

1. INTRODUÇÃO

O Capítulo 1 visa contextualizar brevemente o projeto e justificar o interesse nas


tecnologias abordadas no trabalho.

[4]
Internet of Things , ou simplesmente IoT, é um conceito que tem se tornado cada
vez mais popular a cada ano que passa, e há um motivo para essa ascensão. Com um menor
custo de sistemas embarcados e uma internet acessível em cada vez mais lugares, é natural a
popularização do conjunto de tecnologias que envolve IoT. Além disso, as possibilidades
proporcionadas por dispositivos cotidianos conectados à internet são praticamente infinitas. É
nesse contexto que nasceu a ideia deste trabalho e, também, de outros projetos realizados
junto ao PSILAB ao longo dos últimos anos.

A problemática da iluminação surgiu observando o próprio laboratório. Em


ambientes de trabalho, nem sempre há uma ocupação em todas as mesas disponíveis ao longo
do dia. Dessa forma, seria interessante se pelo menos parte das lâmpadas pudesse ficar
desligada enquanto não houvesse pessoas ocupando todas as mesas. Partindo desse conceito e
analisando soluções similares disponíveis no mercado, a estrutura do projeto foi sendo
lapidada.

Atualmente, já existem diversos dispositivos capazes de controlar lâmpadas e outros


aparelhos. Um dos que exemplos que vale a pena citar por se aproximar do contexto do
[9]
trabalho é um produto da empresa Sonoff , que consiste em um interruptor com integração
IoT. O interruptor pode ser instalado ao longo da rede elétrica, e controlado pelo celular do
usuário, permitindo o controle de qualquer aparelho ligado à uma tomada. Outros sistemas
[10]
apresentam soluções mais complexas, como é o caso dos produtos da SmartThings , que
vão desde lâmpadas até câmeras e diversos tipos de sensores. Através da integração com o
aplicativo, os dispositivos ainda podem ser automatizados de acordo com a necessidade do
usuário.

Para aprimorar a proposta, também foi necessário entender a importância da


iluminação dentro do ambiente de trabalho. Além de reduzir acidentes, uma boa iluminação
Capítulo 1 – Introdução 20

[1]
também pode estar associada a um aumento da produtividade dos funcionários . A
Associação Brasileira de Normas Técnicas inclusive determina níveis específicos de
iluminação para diferentes tipos de atividade através da norma técnica NBR ISO/CIE 8995-
1:2013 - Iluminação de ambientes de trabalho [2].

1.1 OBJETIVO GERAL

O objetivo geral do trabalho é elaborar o protótipo de um sistema de iluminação


inteligente capaz de controlar a iluminação de um ambiente de trabalho através da presença de
pessoas no ambiente. Além disso, o trabalho também deve contribuir para o entendimento dos
desafios envolvidos na construção de um projeto IoT com sistemas embarcados.

1.2 OBJETIVOS ESPECÍFICOS

Para que seja possível atestar o funcionamento do sistema de iluminação e analisar o


funcionamento em cenários que simulam várias pessoas no ambiente, será necessário elaborar
um total de cinco dispositivos utilizando o microcontrolador ESP8266. Um dos dispositivos
será responsável por controlar as lâmpadas, enquanto outros quatros dispositivos irão
representar as mesas, monitorando a presença e a luminosidade.

Ao final do trabalho, o protótipo desenvolvido deverá ser capaz de controlar


corretamente as lâmpadas com base nas presenças detectadas no ambiente de testes.
21

2. COMPONENTES UTILIZADOS

No Capítulo 2 são apresentados os principais componentes e tecnologias utilizados


no projeto. Cada componente listado acompanha uma breve descrição, que traz características
básicas do seu funcionamento.

Os três principais componentes do projeto que serão apresentados são o chip


ESP8266, incluindo as bibliotecas utilizadas, os sensores de luminosidade e por fim os
sensores de presença.

2.1 ESP8266

O ESP8266 é um microcontrolador vastamente utilizado na prototipagem de projetos


de automação. A principal característica que fez com o que esse chip fosse a melhor escolha
para o projeto é a capacidade nativa de comunicação Wi-Fi por um custo extremamente
reduzido, atualmente por volta de 12 reais ($2,30). O chip ESP8266 opera com uma tensão de
3.3V. No caso do projeto, o controlador foi utilizado através da placa de desenvolvimento
NodeMCU, vista na figura 1. Entre outras coisas, a placa traz um regulador de tensão que
permite uma alimentação de 5V através de uma porta Micro USB.

Figura 1: Exemplo da placa de desenvolvimento NodeMCU [22].

O microcontrolador possui 16 pinos GPIO. A utilização de alguns pinos que


desempenham funções específicas do sistema é limitada, mas no geral os pinos podem ser
controlados através da programação gravada na memória do chip. Além disso, também há a
presença de um pino de leitura analógica, com um conversor analógico-digital de 10 bits. Ou
Capítulo 2 – Componentes Utilizados 22

seja, o sinal analógico de 0 a 3.3V é lido e convertido para um número de 0 a 1023 em escala
decimal.

Outra vantagem da utilização do ESP8266 é o cenário ativo da comunidade de


desenvolvedores e a possibilidade de utilização da IDE do Arduino. Por conta disso, eventuais
problemas de programação são conhecidos, e soluções já foram relatadas. Além disso, já
existe uma série de bibliotecas desenvolvidas e testadas que realizam funções fundamentais,
como por exemplo conectar o dispositivo com a rede Wi-Fi.

Entre as bibliotecas utilizadas, podemos destacar as seguintes:


• WiFiManager [19], para a gestão das redes Wi-Fi;
• PubSubClient [20], para a gestão da rede MQTT;
• ArduinoJson [21], para auxiliar na formatação dos dados enviados.

Outra menção importante é a plataforma Node-RED, que oferece algumas


funcionalidades para aplicações IoT. As bibliotecas e a plataforma serão apresentadas a
seguir.

2.1.1 Wi-Fi Manager

Naturalmente, uma parte fundamental de um sistema IoT é a conexão com a internet.


No caso do ESP8266, já existem funções nativas que permitem essa conexão. Apesar disso, a
placa NodeMCU não oferece nenhum tipo de interface que ofereça ao usuário uma forma
amigável de configurar a rede. Como consequência, é necessário que o nome e a senha da
rede sejam inseridos diretamente no código gravado no dispositivo, o que é pouco prático e
limita o sistema.

Para contornar essa questão, foi utilizada a biblioteca WiFiManager. A ideia por trás
da biblioteca é fornecer uma interface para que o usuário possa configurar a rede Wi-Fi como
desejar, sem a necessidade da inserção prévia das credenciais da rede no código. Isso é feito
de uma forma inteligente, utilizando qualquer aparelho smartphone.

Primeiro a biblioteca utiliza a antena Wi-Fi disponível no chip para gerar uma nova
rede Wi-Fi, que possui um nome e uma senha definidos previamente na programação. Então,
Capítulo 2 – Componentes Utilizados 23

o usuário deve utilizar seu smartphone para se conectar à rede gerada, por exemplo
“Sensor_ESP8266”. Nesse ponto, a nova conexão é percebida pelo dispositivo, e uma
solicitação é enviada para o celular. O usuário deve aceitar a solicitação, e então uma página
será aberta no navegador, gerada pela própria biblioteca Wi-Fi Manager. Nessa página, o
usuário consegue visualizar todas as redes percebidas pela placa ESP8266. Uma vez que uma
rede for selecionada e a respectiva senha for inserida, o dispositivo será reiniciado, e a rede
“Sensor_ESP8266” será desfeita. Assim que o dispositivo for ligado, será realizada uma
tentativa de conexão à rede selecionada pelo usuário. Em caso de falha, o processo deverá ser
repetido, do contrário, o dispositivo estará conectado corretamente à rede desejada.

Além disso, a biblioteca também permite que novos parâmetros sejam adicionados
na página criada. No momento em que o usuário enviar as credenciais da rede selecionada,
esses outros parâmetros também são enviados para o dispositivo e podem ser acessados pela
programação.

2.1.2 MQTT

MQTT ou Message Queuing Telemetry Transport é um protocolo de comunicação


bastante otimizado e por isso é extensamente utilizado em diversas aplicações de automação
residencial. O protocolo funciona com base em um sistema de tópicos, em que os dispositivos
podem publicar uma mensagem em tópico específico e somente os dispositivos subscritos
naquele tópico irão receber a mensagem.

A mediação dessa comunicação é realizada por um servidor MQTT, que retém a


última mensagem escrita em cada tópico até que todos os dispositivos subscritos no tópico
tenham recebido a mensagem, ou, se configurado dessa forma, até que a mensagem seja
reescrita. Esse detalhe foi relevante para o projeto, pois uma vez que a memória não volátil
dos ESP8266 é bastante limitada, essa retenção pode ser utilizada para guardar alguma
informação importante no próprio servidor. Em uma situação em que algum dispositivo é
desenergizado, por exemplo, o dispositivo pode simplesmente se subscrever novamente em
algum tópico e o servidor irá reenviar a última mensagem publicada no tópico.
Capítulo 2 – Componentes Utilizados 24

No ESP8266, o protocolo MQTT está disponível através da biblioteca PubSubClient.


Uma das opções para conexão MQTT é utilizar um servidor público, mas também é possível
hospedar um servidor privado através de qualquer computador com acesso à internet,
aumentando a segurança das informações.

2.1.3 JSON

JSON é a sigla para JavaScript Object Notation, que consiste em uma forma de
armazenamento de dados em formato de texto. No projeto, o JSON funciona em conjunto
com a biblioteca MQTT para transmitir pacotes de dados que carregam todas as informações
necessárias para o funcionamento.

A biblioteca utilizada para criação e pela leitura dos pacotes é conhecida como
ArduinoJson. Com o auxílio da biblioteca, é possível criar um pacote no formato JSON, e
nele podem ser adicionadas todas as informações desejadas acompanhadas de um nome de
identificação. Por exemplo, digamos que uma leitura de luminosidade resultou em um valor
de 100 lux, e esse dado precisa ser transmitido através de um pacote JSON. Para isso, é
necessário chamar as funções correspondentes, e adicionar o valor 100 no pacote,
acompanhado de uma etiqueta, como “luminosidade”. A partir disso, o pacote JSON
resultante será equivalente à String “{luminosidade: 100}”. O mesmo pacote JSON pode
conter outras variáveis, incluindo variáveis em formato booleano, como “{luminosidade: 100,
presenca: true}”. Com o pacote JSON devidamente criado, a biblioteca permite a leitura
individual de qualquer uma das variáveis inseridas, basta conhecer a etiqueta associada.

Quando utilizado com a biblioteca MQTT, o pacote JSON permite a transmissão de


diversas variáveis utilizando um único tópico, simplificando a estrutura de tópicos do
servidor.

2.1.4 Node-RED

A plataforma Node-RED fornece diversas funções para aplicações IoT, diretamente


no navegador e de forma simples e intuitiva. A plataforma permite a criação de gráficos e
tabelas, que servem como uma forma de monitoramento para projetos na área. Uma vez que
Capítulo 2 – Componentes Utilizados 25

uma página de monitoramento tenha sido configurada, os dados ainda podem ser hospedados
no computador com auxílio da própria ferramenta, e a página fica disponibilizada em
qualquer lugar através da internet. O logo da plataforma é apresentado na figura 2.

Figura 2: Logo da plataforma Node-RED [11].

No projeto, a Node-RED foi utilizada como uma forma de registrar tudo que é escrito
no servidor MQTT. Isso permite que o projeto seja utilizado não só para o controle das
lâmpadas, mas como uma ferramenta de monitoramento de ambientes. O editor é totalmente
visual, o que torna o aprendizado da ferramenta extremamente simples. Além disso, o editor
também trabalha com o formato JSON utilizado nos tópicos, permitindo a leitura das
variáveis nos pacotes.

2.2 LDR

O LDR, ou light dependent resistor, é um dos componentes utilizados no projeto e


consiste em um resistor dependente da luminosidade. Um LDR chega a custar centavos, e é a
forma mais acessível de medir a luminosidade do ambiente. O componente pode ser visto na
figura 3.

Figura 3: LDR utilizado no projeto.


Capítulo 2 – Componentes Utilizados 26

Naturalmente, dado o custo reduzido, o dispositivo não oferece uma leitura precisa
da luminosidade, e por isso é necessário conhecer melhor a resposta da resistência em função
da luminosidade incidente no dispositivo. Para isso, o datasheet do LDR GL5528 utilizado no
projeto foi consultado [15], e curva apresentada na figura 4 foi observada.

Figura 4: Relação de resistência x luminosidade do LDR utilizado.

É possível notar que a resistência varia linearmente com a luminosidade, e o gráfico


está no formato log-log, com os dois eixos em escala logarítmica. Em outras palavras, a curva
segue o mesmo formato que uma equação de primeiro grau, porém com o logaritmo nas
variáveis x e y: log(𝑦) = 𝑎 ∙ log(𝑥) + 𝑏, onde y é a luminosidade em lux, x a resistência em
Ohms, e a e b coeficientes desconhecidos. A partir disso, é possível relacionar a resistência do
LDR com a leitura de um luxímetro, e então encontrar uma relação mais confiável entre a
luminosidade em lux, determinando os valores de a e b.

2.3 DETECTOR DE PRESENÇA

O detector de presenças é o componente responsável por indicar a presença de


[16]
pessoas no ambiente. O detector utilizado foi o modelo HCSR501 . O detector é
alimentado com uma tensão de 5V, e a presença é indicada através de uma saída de 3.3V, que
pode ser lida diretamente pelos pinos digitais do ESP8266. O sensor funciona detectando
Capítulo 2 – Componentes Utilizados 27

variações no espectro infravermelho, então a luminosidade do ambiente não afeta a detecção.


Um dos detectores de presença utilizados no protótipo pode ser visto na figura 5.

Figura 5: Detector de Presenças utilizado no projeto.

Uma característica importante de ser notada, é que o sensor funciona através de


pulsos que indicam a presença. Para que a presença seja detectada, o circuito necessita de um
breve intervalo para ser carregado. Com o circuito preparado, qualquer movimento irá
disparar um pulso com alguns segundos de duração, indicando alguma movimentação na
saída do dispositivo. Uma vez que a presença foi detectada, o circuito volta a ficar inativo
pelo intervalo, até que uma nova presença possa ser detectada.

Entender esse funcionamento é importante para definir como a presença deve ser
tratada pela programação. No caso do projeto, é considerado que há presença no ambiente
apenas se o detector de presenças tiver emitido pelo menos um pulso nos últimos minutos.
Para que a presença seja desconsiderada, é necessário que nenhum movimento ocorra no
ambiente durante o intervalo de tempo especificado. Além de ser condizente com o
funcionamento do sensor, essa consideração impede que as lâmpadas sejam desligadas
sempre que uma pessoa parar de se movimentar brevemente.
28

3. DESENVOLVIMENTO

No Capítulo 3 é descrito todo o processo de desenvolvimento do projeto. A princípio


é apresentado em linhas gerais qual é o funcionamento esperado do projeto, como cada
dispositivo funciona e como o sistema deve se comportar. Depois, são apresentados alguns
aspectos técnicos, começando pela caracterização dos sensores de luminosidade, seguindo
para o protocolo de comunicação utilizado, e, por fim, os circuitos elaborados.

3.1 FUNCIONAMENTO GERAL

Como já citado, o objetivo do trabalho é propor um sistema de iluminação inteligente


para um ambiente de escritório. O sistema deverá utilizar como base a presença de pessoas
para garantir uma luminosidade confortável a partir do controle das lâmpadas já disponíveis
na sala. Para isso, deve-se levar em conta um fator importante. Em ambientes reais, o número
de lâmpadas disponíveis pode não ser igual ao número de pessoas que necessitam de
iluminação, e, como resultado, a dependência entre as lâmpadas e os sensores nem sempre
será direta. Sabendo disso, é necessário considerar como as luminosidades individuais das
lâmpadas se combinam e afetam a região de trabalho de cada uma das pessoas no ambiente.

3.1.1 Estrutura do Protótipo

Para demonstrar o funcionamento do sistema de iluminação foi elaborado um


protótipo que conta com dois tipos de dispositivos diferentes, que serão referidos ao longo do
trabalho como “centrais” e “sensores”.

3.1.1.1 Centrais

Os dispositivos centrais são responsáveis por controlar até oito lâmpadas. No caso do
protótipo, apenas quatro lâmpadas já foram suficientes para demonstrar o funcionamento do
projeto nas situações de interesse, e, portanto, foi utilizada uma única central. A central conta
com relés que podem ser acionados pelo sistema para acender e apagar as lâmpadas.
Capítulo 3 – Desenvolvimento 29

3.1.1.2 Sensores

Os sensores são os dispositivos que medem a presença e a luminosidade do


ambiente. Para que o sistema funcione, os sensores devem ser distribuídos pelo escritório nas
posições de trabalho, de modo que cada dispositivo corresponda a uma única pessoa. Dessa
forma, além de indicar a necessidade de iluminação em determinadas regiões na sala, o
sistema também pode ser adaptado para fornecer um registro de presenças no escritório. Para
o protótipo, foram elaborados quatro sensores, cada um com seu respectivo LDR e detector de
presença.

3.1.2 Comportamento do Sistema

Com a central e os sensores posicionados e se comunicando no ambiente, o


comportamento esperado é que a central acenda a menor quantidade de lâmpadas capaz de
atender as demandas impostas pelos detectores de presença. Para isso, além de conhecer o
estado de presença momentâneo de cada um dos sensores, a central também precisa saber
como cada lâmpada influencia cada sensor. Sabendo que a posição das lâmpadas e dos
sensores é constante, é possível realizar uma breve calibração no sistema para obter essa
informação. Nesse processo, a central irá apagar e acender lâmpadas de acordo com uma
rotina previamente estabelecida, enquanto registra as respostas dos sensores. No fim dessa
calibração, a central irá conhecer como cada lâmpada afeta cada sensor, e a partir disso poderá
otimizar o número de lâmpadas acesas.

3.2 CARACTERIZAÇÃO DOS SENSORES DE LUMINOSIDADE

Como vimos, as decisões da central são baseadas na luminosidade que cada lâmpada
fornece para cada o sensor no momento da calibração. Essa luminosidade é obtida através do
LDR presente nos sensores. Dessa forma, para garantir o funcionamento do projeto, é
imprescindível que o LDR forneça um valor de luminosidade com um mínimo de precisão
adequado. Para isso, foi necessário levantar empiricamente uma relação entre a resistência do
LDR e a luminosidade em lux, que pôde ser obtida através de um luxímetro.
Capítulo 3 – Desenvolvimento 30

3.2.1 Equacionamento do Problema

Para melhor entendimento do problema, a documentação do LDR foi consultada. Foi


constatado que a relação entre o logaritmo da luminosidade e o logaritmo da resistência é
linear. Portanto, podemos tomar como ponto de partida a equação a seguir, onde lum é a
luminosidade em lux, R a resistência em Ohms, e a e c coeficientes desconhecidos:

log 𝑙𝑢𝑚 = 𝑎 ∙ log(𝑅) + 𝑐 (1)

Sabendo que c é um coeficiente desconhecido constante, é possível substituí-lo por


uma outra constante log(b), e a partir das propriedades de logaritmo, obter uma relação direta
entre a resistência e a luminosidade, como a seguir.

log 𝑙𝑢𝑚 = 𝑎 ∙ log(𝑅) + log(𝑏)


log 𝑙𝑢𝑚 = log(𝑅 𝑎 ) + log(𝑏)
log 𝑙𝑢𝑚 = log(𝑅 𝑎 ∙ 𝑏)
𝑙𝑢𝑚 = 𝑅 𝑎 ∙ 𝑏 (2)

Outro ponto importante, é que a leitura na porta analógica do ESP8266 é dada em


uma escala de 0 a 1023 que representa tensões de 0 a 3,3V. Ou seja, a leitura máxima
AMax = 1023 é equivalente à tensão VDC = 3,3V do microcontrolador. Para obter a resistência
do LDR com base em uma leitura de tensão, o LDR foi conectado em série com um resistor
de valor R1 = 1kΩ, como no circuito da figura 6.

Figura 6: Divisor de tensão com o LDR. Circuito elaborado no programa LTSpice.


Capítulo 3 – Desenvolvimento 31

A leitura da porta analógica A pode ser convertida para uma tensão Vx seguindo a
relação a seguir, onde AMax = 1023 é o limite da escala analógica, e VDC = 3,3V é a tensão de
funcionamento do microcontrolador:

𝐴
𝑉𝑥 = ∙ 𝑉𝐷𝐶 (3)
𝐴𝑀𝑎𝑥

Pela regra do divisor de tensão, a tensão Vx também pode ser obtida a partir do valor
da resistência variável RL do LDR e da resistência R1 utilizada no divisor:

𝑅1
𝑉𝑥 = ∙𝑉 (4)
𝑅𝐿 + 𝑅1 𝐷𝐶

Igualando as equações (3) e (4), podemos isolar a resistência RL do LDR:

𝐴 𝑅1
∙ 𝑉𝐷𝐶 = ∙𝑉
𝐴𝑀𝑎𝑥 𝑅𝐿 + 𝑅1 𝐷𝐶
𝐴𝑀𝑎𝑥 ∙ 𝑅1
𝑅𝐿 = − 𝑅1 (5)
𝐴

Utilizando a fórmula (5), em conjunto com o resultado (2), é possível relacionar a


luminosidade em função da leitura analógica A através da equação a seguir:

𝑎
𝐴𝑀𝑎𝑥 ∙ 𝑅1
𝑙𝑢𝑚(𝐴) = ( − 𝑅1 ) ∙ 𝑏 (6)
𝐴

3.2.2 Ajuste Prático

Uma vez que a equação que relaciona a luminosidade com a leitura analógica foi
encontrada, resta encontrar valores de a e b que representam cada um dos LDRs utilizados.
Para isso, foram escolhidos dois pontos de luminosidade ao redor da faixa de 100 lux, que é a
faixa de luminosidade de interesse. Para auxiliar tal tarefa, foi utilizado um luxímetro da
figura 7, com uma incerteza especificada em 4%, que é suficiente para atender as
necessidades do projeto.
Capítulo 3 – Desenvolvimento 32

Figura 7: Luxímetro R&D Instruments MT30 utilizado como referência.

Com o intuito de eliminar distorções nas medidas em função do posicionamento,


cada ponto foi obtido a partir da média de duas medições do luxímetro, uma em cada lado do
LDR, como na figura 8.

Figura 8: Medição da luminosidade no LDR com o luxímetro para levantamento das constantes a e b.

Além de registrar a leitura do luxímetro, a leitura do pino analógico do sensor


também foi registrada. Para o sensor 1, por exemplo, enquanto o luxímetro marcava 135 lux, a
leitura analógica era de 229. Depois, em outra condição de iluminação, o luxímetro marcava
174 lux enquanto a leitura analógica era de 266.
Capítulo 3 – Desenvolvimento 33

Substituindo os valores obtidos experimentalmente na relação (6), temos o seguinte


sistema de equações:
𝑎
𝐴𝑀𝑎𝑥 ∙ 𝑅1
135 = ( − 𝑅1 ) ∙ 𝑏 (7)
229
𝑎
𝐴𝑀𝑎𝑥 ∙ 𝑅1
174 = ( − 𝑅1 ) ∙ 𝑏 (8)
266

Agora, para encontrar o coeficiente a, podemos começar obtendo a razão entre as


equações (7) e (8):

𝑎
𝐴𝑀𝑎𝑥 ∙ 𝑅1
135 ( − 𝑅1 ) ∙𝑏
= 229 (9)
𝑎
174 𝐴 ∙ 𝑅1
( 𝑀𝑎𝑥 − 𝑅1 ) ∙𝑏
266

Eliminando a variável b que multiplica o nominador e o denominador da razão, é


possível escrever a variável a apenas em função de variáveis conhecidas:

𝑎
𝐴𝑀𝑎𝑥 ∙ 𝑅1
135 ( − 𝑅1 )
= 229 (10)
𝑎
174 𝐴 ∙ 𝑅1
( 𝑀𝑎𝑥 − 𝑅1 )
266

Isolando e calculando o valor de a em (10), temos:

135
log 174
𝑎=
𝐴𝑀𝑎𝑥 ∙ 𝑅1
− 𝑅1
log (𝐴 229∙ 𝑅 )
𝑀𝑎𝑥 1
− 𝑅1
266

𝑎 = −1,285 (11)
Capítulo 3 – Desenvolvimento 34

Uma vez que o valor da constante a foi obtido, é possível obter o valor de b a partir
da equação (7).

𝑎
𝐴𝑀𝑎𝑥 ∙ 𝑅1
135 = ( − 𝑅1 ) ∙ 𝑏
229

135
𝑏= 𝑎
𝐴 ∙ 𝑅1
( 𝑀𝑎𝑥 − 𝑅1 )
229

𝑏 = 4777652 (12)

Com isso temos as constantes a e b que ajustam o LDR utilizado no sensor 1. O


mesmo procedimento foi repetido para os demais sensores, e os valores obtidos podem ser
vistos na tabela 1.

Sensor a b
1 -1,285 4777652
2 -1,614 71029008
3 -1,189 3655367
4 -1.396 9302426
Tabela 1: Constantes de caracterização dos LDRs utilizados nos sensores.

É notável que houve uma diferença significativa nos valores das constantes de cada
LDR. Isso ocorre, pois existem variações na fabricação dos LDRs que podem gerar alterações
na maneira como se comportam. Sendo extremamente simples e baratos, é de se imaginar que
não exista um rigor elevado na padronização desses componentes.

Agora, podemos utilizar as medidas do ajuste do primeiro LDR, em que o luxímetro


indicava 135 lux e a leitura no pino analógico foi de 229, para estimar o quão relevante são
essas diferenças. Para isso, foram realizadas estimativas de luminosidade utilizando a fórmula
(6) para cada umas das constantes obtidas, assumindo uma leitura analógica A = 229.
Sabemos que essa leitura representa uma luminosidade de 135 lux, e, portanto, podemos
estimar o erro relativo ao utilizar constantes iguais para todos os sensores, como na tabela 2.
Capítulo 3 – Desenvolvimento 35

Sensor Lux Estimado Erro Relativo


1 135,00 0%
2 136,55 1%
3 224,48 66%
4 105,94 22%
Tabela 2: Estimativa da luminosidade em lux para uma mesma leitura analógica.

Ou seja, utilizando as mesmas constantes para caracterizar todos os LDRs,


poderíamos chegar em uma diferença de até 66% na leitura final em lux. Isso confirma a
necessidade de ajustar as constantes individualmente, repetindo o processo de caracterização
para todos os LDRs utilizados no projeto.

3.3 PROTOCOLO DE COMUNICAÇÃO

A programação desenvolvida para o sistema de iluminação pode ser dividida em dois


programas. Um dos programas é responsável pelo comportamento da central, que controla as
lâmpadas, enquanto o outro programa dita o funcionamento dos sensores. Além disso, existem
detalhes e rotinas que estão presentes nos dois programas, pois fazem parte do protocolo de
comunicação utilizado. Dessa forma, a programação será dividida em 3 tópicos:

- Detalhes do Protocolo de Comunicação;


- Funcionamento da Central;
- Funcionamento dos Sensores;

3.3.1 Detalhes do Protocolo de Comunicação

O protocolo de comunicação utilizado foi o MQTT, com um servidor criado


exclusivamente para o projeto. Dada a quantidade de dispositivos conectados e interagindo
constantemente, foi necessário elaborar um código de identificação único, ou ID, que pudesse
representar cada um dos dispositivos em comunicação e identificar os tópicos utilizados.
Além disso, um dos códigos deverá ser escolhido para representar a rede desejada. Dessa
forma, na hora do cadastro dos dispositivos na rede de Internet Wi-Fi, o sistema também
receberá um código de rede como entrada.
Capítulo 3 – Desenvolvimento 36

Para ilustrar melhor, podemos pensar no exemplo do protótipo do sistema. Os 4


sensores possuem os seguintes códigos de identificação:

- Sensor 1: 614560275102345762
- Sensor 2: 925619356192856188
- Sensor 3: 958361968274657192
- Sensor 4: 728573619284750136

Já a central possui o seguinte código:

- Central: 491071662063675182

Para representar a rede nos testes, o ID da central foi escolhido como referência, e,
portanto, os tópicos seguem o formato:

- 491071662063675182/...

Dessa forma, todos os dispositivos poderão ler e escrever no mesmo tópico raiz, de
acordo com necessidade e os subtópicos especificados.

Devido ao sistema de publicação e subscrição, o protocolo MQTT funciona bem para


o monitoramento de informações, já que o estado de uma variável pode ser constantemente
atualizado em um tópico, e todos os dispositivos subscritos no tópico iriam receber a
atualização. Porém, no caso do projeto, também é necessário que as informações sejam
enviadas ativamente por meio de uma solicitação. Para isso, cada dispositivo é representado
por meio de dois subtópicos, "sensors" e "central". Nos subtópicos do tipo "sensors" os
sensores escrevem suas informações, como luminosidade e presença. Já no subtópico
"central" quem escreve é a central, enviando comandos específicos para o sensor.

Para exemplificar, o tópico em que o sensor 1 armazena suas informações é o


seguinte:

- 491071662063675182/614560275102345762/sensors
Capítulo 3 – Desenvolvimento 37

Já para a central se comunicar com o sensor 1, é necessário escrever algo no tópico:

- 491071662063675182/614560275102345762/central

Ou seja, os sensores precisam se subscrever no tópico com o formato


“id_da_rede”/“id_do_sensor”/central, enquanto a central precisa se subscrever em todos os
tópicos no formato “id_da_rede”/“id_do_sensor”/sensors.

Como a central não sabe quantos sensores estarão presentes na rede, é utilizado um
artifício do protocolo MQTT que é conhecido como Wildcard. Podemos substituir qualquer
um dos subtópicos por um "+", fazendo com que a central se subscreva em todos os tópicos
que seguem o formato, mesmo sem conhecer os sensores. No exemplo do protótipo, o tópico
fica da seguinte forma:

- 491071662063675182/+/sensors

Ao invés de controlar as lâmpadas diretamente pela alteração dos pinos digitais, foi
escolhido realizar o controle também através de publicações no MQTT. Apesar da
redundância presente no fato do dispositivo publicar em um tópico em que está subscrito, isso
não gera nenhum impacto no projeto, mas facilita outras integrações futuras, como o
monitoramento do estado das lâmpadas através do servidor MQTT.

Dessa forma, a central também precisa se subscrever no tópico reservado para o


controle das lâmpadas, que é o seguinte:

- 491071662063675182/491071662063675182/lamps

Com toda essa organização, para o protocolo funcionar basta que todos os
dispositivos conheçam o mesmo ID de rede. Se um sensor for adicionado ou removido da
rede, a central será capaz de reconhecê-lo assim que alguma publicação do sensor surgir na
rede, devido ao Wildcard utilizado. Como veremos adiante, esse ID de rede poderá ser
fornecido pelo usuário no momento da instalação do dispositivo.
Capítulo 3 – Desenvolvimento 38

Para concluir essa montagem inicial da comunicação, basta garantir que o ID da rede
seja mantido na memória dos dispositivos, mesmo na falta de energia. Para evitar a utilização
da memória não volátil do ESP8266, foi utilizado um tópico especial que possui a função de
armazenar o último ID de rede utilizado por cada um dos dispositivos. Como somente o
próprio dispositivo precisa ter acesso a esse tópico, foi utilizado o formato
“id_do_dispositivo”/netID. Dessa forma, sempre que um dispositivo se conecta com sucesso à
rede MQTT, o ID da rede é publicado nesse tópico com uma diretriz especial, indicando para
o servidor que essa informação deve ser retida. Se o dispositivo for reiniciado por algum
motivo, ele irá se reconectar automaticamente ao servidor MQTT e se subscrever nesse
endereço, recebendo o ID de rede necessário para que o funcionamento normal seja retomado.
Todo esse processo funciona tanto para a central quanto para os sensores.

A estrutura de tópicos elaborada pode ser resumida pelos diagramas da figura 9.

Figura 9: Estrutura dos Tópicos MQTT da Central e dos Sensores.


Capítulo 3 – Desenvolvimento 39

3.3.2 Configuração Inicial do Dispositivo

Como visto, a única informação necessária para que os dispositivos funcionem é o


endereço que será utilizado para rede. Além disso, é claro que os dispositivos precisam ter
acesso à internet para fazer contato com o servidor MQTT. Para abordar essas duas
necessidades, foi utilizada a biblioteca WifiManager, que permite que o próprio usuário
forneça para o dispositivo a rede Wi-Fi que deverá ser utilizada e mais algum parâmetro
desejado, como o ID utilizado como endereço de rede.

Com a biblioteca devidamente configurada na programação, a configuração inicial


do dispositivo irá seguir os seguintes passos, ilustrados na figura 10:

(1) Com a inicialização, o dispositivo central ou sensor irá buscar uma rede Wi-Fi
conhecida. Caso nenhuma rede conhecida esteja disponível, o dispositivo entra em modo
ponto de acesso, criando uma rede Wi-Fi própria. Depois, o usuário precisa se conectar à rede
local criada pelo dispositivo, o que pode ser feito a partir de qualquer Smartphone. A conexão
é feita da mesma forma que a conexão em qualquer outra rede Wi-Fi.

(2) Uma vez conectado, o dispositivo celular irá exibir uma tela com algumas opções
de configuração. O usuário deverá selecionar a opção “Buscar Redes Wi-Fi” para realizar
uma busca automática das redes.

(3) O programa irá exibir as redes encontradas. O usuário deverá selecionar a rede
em que o dispositivo ficará conectado à internet, e então fornecer a senha e o ID de referência
para a rede, que no caso do protótipo é o próprio ID da central.

(4) Depois que as informações são fornecidas, o dispositivo irá fechar o ponto de
acesso, e tentar se conectar à rede Wi-Fi configurada pelo usuário. O dispositivo também
tentará se conectar à rede MQTT, publicando o ID de rede fornecido pelo usuário no servidor
MQTT. Em caso de sucesso, o dispositivo entrará automaticamente em funcionamento, mas
caso a conexão Wi-fi ou MQTT falhe, todo processo deverá ser repetido.
Capítulo 3 – Desenvolvimento 40

Figura 10: Capturas de tela ilustrando os passos (1), (2), (3) e (4).

O funcionamento geral dos dispositivos durante a configuração inicial pode ser


observado no fluxograma da figura 11:

Figura 11: Fluxograma da inicialização dos dispositivos.


Capítulo 3 – Desenvolvimento 41

3.3.3 Verificação dos Códigos

Para contribuir para a segurança do sistema, e garantir que os códigos fornecidos no


momento da montagem do dispositivo estão corretos, os endereços contam com 16 dígitos,
seguidos de 2 dígitos verificadores. Foi utilizada uma codificação similar à codificação UPC,
que é vastamente utilizada em códigos de barra de produtos. Os dígitos nas posições pares e
ímpares são somados de forma independente. Os dígitos pares também são multiplicados por
3. Depois, os restos da divisão por 10 das somas são utilizados para gerar os dois dígitos de
verificação. A divisão do endereço se dá de acordo com a figura 12.

Figura 12: Exemplo da composição do ID do sensor 1.

Caso o ID de rede fornecido não seja um ID reconhecido pelo sistema, o dispositivo


é automaticamente reiniciado, entrando novamente no modo de ponto de acesso e aguardando
até que haja uma nova tentativa do usuário.

3.4 FUNCIONAMENTO DA CENTRAL

O programa central possui a função de controlar o comportamento das lâmpadas com


base nas presenças detectadas pelos sensores espalhados pelo ambiente. Para isso, é
necessário que o dispositivo conheça como cada um dos sensores reage a cada lâmpada, o que
ocorre no processo de calibração.

Na calibração, a central altera a configuração das lâmpadas, e então envia


solicitações de escrita para todos os sensores ativos. Depois do envio, a central aguarda alguns
segundos, enquanto os sensores respondem a solicitação com o envio do pacote, incluindo a
luminosidade para aquele estado específico das lâmpadas. Ao longo dos testes, foi
padronizado que a central iria obter uma iluminação de referência, com todas as lâmpadas
Capítulo 3 – Desenvolvimento 42

acesas, e depois iria apagar uma lâmpada de cada vez, mantendo todas as outras acesas. A
cada lâmpada apagada, a central registra a resposta dos sensores. Dessa forma, a calibração se
torna um incômodo menor, pois a maioria das lâmpadas permanece acesa ao longo de todo
processo. Além disso, isso faz com que a leitura da luminosidade ocorra mais centrada na
escala de leitura analógica, já que a sala não fica escura durante o processo. Calculando a
variação do estado com uma lâmpada apagada em relação ao estado com todas as lâmpadas
acesas, é possível saber a influência exata de cada uma das lâmpadas nos sensores.

Com os dados adquiridos, é feita uma série de operações para produzir uma tabela de
ações. A tabela de ações é uma matriz binária com dimensões 2n x m, onde n é o número de
sensores e m é o número de lâmpadas. O número de sensores indica o total de combinações
de estados de presença possíveis, que é igual a 2n. Cada combinação de estados de presença é
associada a uma lâmpada, que pode estar acesa ou apagada. Em cada linha da matriz, que
representa um estado dos sensores, é indicado quais lâmpadas deverão estar desligadas e quais
lâmpadas devem estar ligadas, através dos valores lógicos 0 e 1. Uma vez que a tabela de
ações tenha sido elaborada, basta que a central identifique quais sensores estão indicando
presença, e então acenda as lâmpadas conforme a linha correspondente na tabela de ações.
Esse processo é ilustrado pelos diagramas da figura 13.

Figura 13: Fluxogramas do processo de calibração (esquerda) e do funcionamento geral da central (direita).
Capítulo 3 – Desenvolvimento 43

3.4.1.1 Geração da Tabela de Ações

Após o processo de calibração, a central passa a conhecer como cada um dos


sensores reage à cada uma das lâmpadas. Essas informações são organizadas em uma matriz
l x s, onde l representa as lâmpadas e s os sensores, como na figura 14. Cada elemento ∆ℓls da
matriz é equivalente à diferença entre as luminosidades no sensor s nos cenários com todas as
lâmpadas acesas e com apenas a lâmpada l apagada. Em outras palavras, ∆ℓls é a luminosidade
que a lâmpada l produz no sensor s.

Figura 14: Matriz de luminosidades em cada sensor para cada lâmpada.

Partindo desse ponto, queremos obter uma matriz booleana que relaciona quais
lâmpadas devem estar acesas em cada combinação dos estados de presença, como na figura
15. Para simplificar a explicação desse processo, usaremos como referência as condições do
protótipo, que possui 4 lâmpadas e 4 detectores de presença. Nesse caso, é necessário obter
uma matriz booleana 24 x 4, ou 16 x 4. Nas linhas da matriz temos as 16 combinações
possíveis para as presenças, enquanto nas colunas temos o número de lâmpadas. Dessa forma,
para uma combinação de estados de presenças, as lâmpadas que deverão estar acesas são
representadas ao longo das linhas da matriz, e os elementos L são valores booleanos que
indicam se a lâmpada está acesa.

Figura 15: Matriz de ações que dita quais lâmpadas são ligadas para cada combinação de presenças.
Capítulo 3 – Desenvolvimento 44

O primeiro passo para obter essa matriz de ações é calcular a luminosidade gerada
por cada uma das combinações de lâmpadas em cada sensor. As luminosidades das lâmpadas
são aditivas, e, portanto, conhecendo a luminosidade que cada lâmpada produz
individualmente em cada sensor, é possível conhecer a luminosidade de qualquer outra
combinação de lâmpadas acesas. Como o protótipo possui 4 lâmpadas, teremos 16
combinações possíveis de lâmpadas acesas para cada um dos 4 sensores. Vale lembrar que
também precisamos considerar a luminosidade neutra do ambiente, isto é, a luminosidade
quando todas as lâmpadas estão apagadas. Somando as influências individuais das lâmpadas
retiradas da tabela de luminosidades com a luminosidade neutra para todas as combinações de
lâmpadas acesas, temos uma matriz que relaciona qualquer combinação possível de lâmpadas
com a luminosidade ℓ resultante em cada sensor, como está ilustrado na figura 16.

Figura 16: Matriz da soma de luminosidades em cada sensor para cada combinação de lâmpadas.

Conhecendo como cada combinação de lâmpadas afeta cada sensor, resta encontrar
qual é a combinação de lâmpadas ótima para cada combinação possível de presença. A
combinação de lâmpadas ótima para uma determinada combinação de estados de presença é a
que possui o menor número de lâmpadas acesas que faz com que todos os sensores com
presença detectada possuam uma luminosidade dentro do limiar estabelecido. Como podem
existir duas combinações diferentes com o mesmo número de lâmpadas e que atendam o
limiar de luminosidade, optou-se por utilizar a maior luminosidade geral como critério de
desempate. Para cada uma das 16 combinações de estado de presença possíveis, é realizada
uma busca na matriz da soma de luminosidades para encontrar qual combinação de lâmpadas
atende os critérios de presença. Então, a combinação de lâmpadas ótima é encontrada e
adicionada à tabela de ações, garantindo que o sistema sempre irá acender o menor número de
lâmpadas possível, sem que falte iluminação nos pontos necessários.
Capítulo 3 – Desenvolvimento 45

3.5 FUNCIONAMENTO DOS SENSORES

Como os sensores são dispositivos passivos na rede, o programa possui um


funcionamento mais simples que o programa da central. A única função dos sensores é enviar
constantemente atualizações do estado de presença e de luminosidade, o que pode ocorrer em
três situações:

• Através de uma solicitação da central durante a calibração.


• Após um intervalo de tempo fixo apenas para monitoramento do ambiente.
• Após uma mudança no estado atual de presença para que a central atualize o
estado das lâmpadas se for necessário.

Para organizar essas atualizações, foi definido um pacote padrão no formato JSON
que inclui as seguintes informações:

• o estado de presença;
• a leitura analógica do divisor de tensão com o LDR;
• as constantes de caracterização a e b;
• uma variável keepalive;
• uma chave de identificação do pacote;

O estado de presença e a leitura analógica são as variáveis necessárias para que a


central tome a decisão de quais lâmpadas acender. Para transformar a leitura analógica dos
sensores em uma leitura de luminosidade em lux, a central precisa conhecer as variáveis de
caracterização a e b de cada sensor, que também são enviadas no pacote.

Já a variável keepalive possui a função de manter a central informada da atividade de


cada sensor. Toda vez que um novo pacote é enviado, a variável keepalive do sensor é
incrementada, indicando para central que o pacote recebido é mais recente que o anterior.
Caso a central receba pacotes do mesmo sensor com incrementos maiores que uma unidade na
variável keepalive, a central é capaz de reconhecer que houve algum problema de
comunicação. Além disso, se um sensor ficar inativo por um período extenso, a central pode
reconhecer que o sensor não está mais em operação no sistema.
Capítulo 3 – Desenvolvimento 46

Para finalizar, a chave de identificação do pacote é uma chave gerada com base em
uma chave que acompanha as solicitações da central durante o processo de calibração. O
objetivo da chave é indicar para a central que o pacote foi fruto de determinada solicitação.
Ao receber a chave, a central consegue identificar se o pacote recebido é compatível com uma
solicitação previamente enviada. Isso é importante para que haja sincronia no processo de
calibração. Na calibração, a central envia solicitações para os sensores logo após alterar o
estado das lâmpadas. Nesse momento, a central pode acabar recebendo um pacote atrasado
dos sensores, que foi enviado antes do novo estado de iluminação afetar os sensores. A chave
é uma forma de garantir que a iluminação no pacote enviado foi medida depois que as
lâmpadas foram alteradas.

O funcionamento geral dos sensores está representado pelo diagrama da figura 17.

Figura 17: Fluxograma do funcionamento geral dos sensores.


Capítulo 3 – Desenvolvimento 47

3.6 CIRCUITOS

O projeto possui dois circuitos diferentes: o circuito da central, e o circuito dos


sensores. No protótipo, todos os circuitos foram montados com placas de circuito ilhadas e
trilhos de estanho. Os dois circuitos serão apresentados a seguir.

3.6.1 Central

Além do próprio ESP8266, os únicos componentes utilizados na central são relés e


transistores. Para chavear os relés, o circuito possui uma alimentação separada da alimentação
do módulo com o microcontrolador. Se o módulo fosse diretamente alimentado, não seria
possível obter a tensão de 5V necessária para chavear os relés, já que o módulo regula a
tensão para 3,3V para alimentar o ESP8266. No circuito, foram utilizados MOSFETs do
modelo IRFZ44N, como na figura 18.

Figura 18: Circuito da Central.


Capítulo 3 – Desenvolvimento 48

Para melhor organização, o circuito foi fixado em uma base de madeira, junto com
conectores borne para conexão das lâmpadas que devem ser controladas. A montagem pode
ser vista na figura 19.

Figura 19: Protótipo da Central.

3.6.2 Sensores

O circuito dos sensores consiste em um LDR e um detector de presença. Para


encontrar a medida de luminosidade do LDR, é necessário estimar sua resistência, e isso é
feito através de um divisor simples de tensão, como já foi visto na secção 3.2.1. Já o detector
de presença possui apenas três pinos: alimentação, terra e saída de dados. A alimentação do
detector deve ser feita com 5V, então a alimentação dos sensores também não pôde ser
realizada diretamente pelo módulo do ESP8266. O circuito pode ser visto na figura 20.

Figura 20: Circuito dos Sensores.


Capítulo 3 – Desenvolvimento 49

O tamanho dos sensores ficou limitado a cerca de 8x6x3 cm, considerando a altura
necessária para que o detector de presenças fique corretamente apontado para cima. O
tamanho reduzido e a alimentação através de uma porta USB, vistos na figura 21, tornam o
componente apropriado para a utilização em uma mesa de escritório.

Figura 21: Protótipo de um dos sensores.

Para o encapsulamento, uma caixa de plástico de tamanho aproximado já oferece


uma estrutura ideal, como na figura 22. Além da proteção oferecida, a caixa também é
importante para o posicionamento adequado do LDR e do detector de presença.

Figura 22: Protótipo de um dos sensores após encapsulamento.


50

4. RESULTADOS

O Capítulo 4 tem o objetivo de demonstrar o funcionamento do protótipo. Primeiro é


apresentada uma metodologia de testes e o comportamento esperado do protótipo é descrito.
Depois, são vistos os testes realizados e os resultados encontrados são exibidos.

Para confirmar o funcionamento do protótipo, é importante seguir uma metodologia


pré-estabelecida que envolva cenários controlados de teste. Os cenários de funcionamento
devem levar em conta o objetivo do projeto: atender o limiar mínimo de luminosidade em
todos os sensores que indicam presença com o menor número possível de lâmpadas acesas.
Além disso, em cenários que possuem duas combinações possíveis com o mesmo número de
lâmpadas, o sistema deverá escolher o cenário que gera uma maior luminosidade geral.

4.1 METODOLOGIA

Para obtenção dos resultados, foram imaginados dois cenários de funcionamento.


Um cenário simplificado, e um cenário que explora situações mais específicas.

4.1.1 Cenário I

O Cenário I, representado pela figura 23, ilustra a situação de funcionamento mais


simples possível. Nesse cenário, cada lâmpada será associada a apenas um sensor. A função
desse primeiro teste é certificar que houve sucesso no processo de calibração e de que o
sistema consegue controlar adequadamente as lâmpadas.

Figura 23: Representação do Cenário I.


Capítulo 4 – Resultados 51

Nesse caso, é esperado que o estado da lâmpada seja igual ao estado do detector de
presenças do sensor mais próximo.

4.1.2 Cenário II

No Cenário II, a primeira proposta é testar a capacidade do sistema de reconhecer


que uma lâmpada pode ser apagada. Para isso, um dos sensores deve ficar próximo de três
lâmpadas, como na figura 24.

Figura 24: Representação do Cenário II.

Nesse cenário, o sensor 3 poderá ser atendido tanto pela lâmpada 3, quanto pela
combinação das lâmpadas 2 e 4. Ou seja, se os sensores 2, 3 e 4 detectarem presença no
ambiente, a lâmpada 3 deverá ser apagada, já que as lâmpadas 2 e 4 poderão fazer o papel de
iluminar corretamente o sensor 3 ao mesmo tempo que atendem os sensores 2 e 4. Já se
apenas o sensor 3 detectar presença, então somente a lâmpada 3 deverá ser ligada, pois isso
resulta em menos lâmpadas ligadas em comparação à combinação das lâmpadas 2 e 4.

Para finalizar, o Cenário II também deve abordar o critério de desempate utilizado


para escolher entre combinações com o mesmo número de lâmpadas. Nesse caso, devemos
comparar a situação em que os sensores 2 e 3 indicam presença, com a situação em que os
sensores 2, 3 e 4 indicam presença. Nos dois casos teremos apenas duas lâmpadas acesas, já
que as lâmpadas 2 e 4 são suficientes para atender o sensor 3. Porém, quando não há detecção
de presença no sensor 4, as lâmpadas 2 e 3 devem ser escolhidas no lugar das lâmpadas 2 e 4.
Devido à proximidade da lâmpada 3 com o sensor 3, a combinação 2 e 3 gera uma maior
luminosidade geral nos sensores, e esse foi o critério definido para selecionar entre duas
combinações com o mesmo número de lâmpadas.
Capítulo 4 – Resultados 52

4.2 TESTE DO PROTÓTIPO

Para colocar a prova o funcionamento do sistema, os cenários foram montados de


forma prática com a utilização do protótipo desenvolvido. Nos dois cenários o sistema passou
pelo processo de calibração antes de entrar em modo de funcionamento. Depois, os testes
foram realizados e o comportamento do sistema foi comparado com o comportamento
previamente estabelecido. O nível de luminosidade especificado como satisfatório nos testes
foi de 100 lux. Com o intuito de garantir que a luminosidade necessária realmente estava
incidindo nos sensores corretos, o luxímetro foi utilizado nos testes.

4.2.1 Cenário I

O cenário I foi montado de acordo com o planejado, como na figura 25.

Figura 25: Montagem do Cenário I.

Para garantir que cada sensor fosse iluminado por apenas uma lâmpada, os sensores
foram devidamente posicionados em direção às respectivas lâmpadas e uma fita foi
adicionada ao redor dos sensores.

Inicialmente, com todos os detectores de presença indicando movimento no


ambiente, o Cenário 1 apresentou o comportamento esperado, com todas as lâmpadas ligadas.
Nesse cenário, cada lâmpada está diretamente relacionada a um único sensor, portanto o
estado de presença nos sensores deve se refletir no estado da lâmpada que o ilumina.
Capítulo 4 – Resultados 53

Ao desligar o detector de presenças do sensor 1, o tópico correspondente é atualizado


no servidor MQTT. Assim que a central reconhece a ausência, a lâmpada 1 é desligada, como
pode ser visto na figura 26.

Figura 26: Comportamento do Cenário I sem detecção de presença no sensor 1.

O mesmo comportamento foi observado com o desligamento do detector de presença


nos demais sensores. Portanto, o sistema demonstrou exatamente o funcionamento esperado
nos testes com o Cenário I.

4.2.2 Cenário II

Para o Cenário II, os sensores e lâmpadas 2, 3 e 4 foram aproximados, como na


figura 27.

Figura 27: Montagem do Cenário 2.


Capítulo 4 – Resultados 54

Nesse caso, o objetivo era testar duas características específicas do sistema: a


capacidade de reconhecer e apagar uma lâmpada redundante, e a capacidade de escolher a
combinação de lâmpadas que oferece a maior luminosidade entre combinações com o mesmo
número de lâmpadas.

4.2.2.1 Lâmpada Redundante

A maior distinção no Cenário II é que o sensor 3 pode ser iluminado pela soma das
lâmpadas 2 e 4. Isso permite que a lâmpada 3 possa ser apagada quando os sensores 2, 3 e 4
estiverem detectando a presença de pessoas.

Nos testes, assim que a calibração do sistema foi concluída, o comportamento


esperado já pôde ser observado. Como pode ser visto na figura 28, a lâmpada 3 foi apagada.

Figura 28: Comportamento do Cenário II com detecção de presença em todos os sensores.

Com o teste, foi possível atestar que o sistema é realmente capaz de entender como
cada lâmpada influência em cada sensor, já que a soma da influência das lâmpadas 2 e 4 foi
vista como suficiente para atender o sensor 3. O luxímetro foi utilizado para confirmar que a
luminosidade no sensor 3 estava acima da luminosidade satisfatória de 100 lux, mesmo com a
lâmpada 3 desligada.
Capítulo 4 – Resultados 55

4.2.2.2 Critério de Maior Luminosidade

Para concluir os testes, a última característica do sistema testada foi o critério de


maior luminosidade. Para isso, o detector de presenças do Sensor 4 foi desligado. Com isso, a
resposta do sistema foi desligar a lâmpada 4 e acender a lâmpada 3, como na figura 29.

Figura 29: Comportamento do Cenário II sem detecção de presença no sensor 4.

Nesse caso, o sistema opta por ligar as lâmpadas 2 e 3, ao invés das lâmpadas 2 e 4,
já que a lâmpada 3 está mais próxima do sensor 3, e, portanto, resulta em uma maior
luminosidade geral percebida nos sensores que detectam presença.
56

5. INTEGRAÇÃO IOT

O Capítulo 5 traz um exemplo da integração do sistema de iluminação com uma


plataforma destinada para aplicações IoT.

Uma das possibilidades proporcionadas pela integração do sistema com um servidor


MQTT conectado à internet, é a criação de um banco de dados que pode ser acessado de
qualquer dispositivo. Para isso, foi utilizada a plataforma Node-RED.

A figura 30 mostra um exemplo de como um painel elaborado dentro da plataforma


Node-RED pode ser útil. Na figura, três parâmetros do sensor 1 estão sendo representados: a
luminosidade, a presença e uma nova variável que foi chamada de pendência. Em resumo, a
pendência serve para indicar que há uma ação pendente por parte da central. Assim que uma
nova presença é percebida por um dos sensores, a central deve tomar a ação necessária para
garantir que o sensor receba a luminosidade necessária. Durante esse pequeno intervalo de
tempo, podemos dizer que há uma pendência no sistema. Esse comportamento pode ser
observado na região destacada em vermelho do gráfico da figura 30.

Figura 30: Painel elaborado na plataforma Node-RED.


Referências 57

Já na região em verde, podemos ver que apesar de haver uma indicação de presença
no sensor, a luminosidade não está sendo atendida pelo sistema. Isto é, a luminosidade
percebida pelo sensor é menor do que 100 lux. Como resultado, temos uma pendência em
nível lógico alto por um longo período. Na prática, isso significa que o sensor 1 indica a
presença de pessoas, mas o critério de luminosidade mínima não está sendo atendido. Em
outras palavras, a lâmpada pode estar queimada ou emitindo menos luminosidade que o limiar
necessário. Com o auxílio da plataforma Node-RED, essa pendência no sistema pode ser
reconhecida como uma falha, e transformada em algum tipo de alerta para o usuário,
indicando que alguma ação deve ser tomada, como a troca da lâmpada defeituosa.

Além de controlar a luminosidade do ambiente e economizar energia ao desligar


lâmpadas desnecessárias, a plataforma consegue adicionar novas funcionalidades ao sistema.
Os dados podem ser exibidos em tempo real através dos painéis, ou exportados para planilhas.
E como as lâmpadas também são controladas através de comandos enviados ao servidor
MQTT, é possível monitorar quanto tempo as lâmpadas ficam ligadas e estimar qual é a
economia gerada pelo sistema. Não só devido a energia poupada pelo desligamento, mas
também devido à extensão da vida útil das lâmpadas.
58

6. CONCLUSÕES

Neste documento, foi apresentado um sistema de iluminação inteligente, capaz de


garantir uma luminosidade adequada em pontos específicos de um ambiente de trabalho.

O sistema de iluminação elaborado procura ser uma forma acessível de contribuir


para luminosidade de ambientes de trabalho, ao mesmo tempo que oferece uma economia de
energia e o monitoramento das presenças no ambiente. A economia fornecida pelo sistema se
mostra ainda mais relevante no cenário atual, em que a presença de pessoas nos escritórios
está drasticamente reduzida devido à maior adoção do teletrabalho, uma tendência que tende a
se manter no futuro [8].

O maior desafio do trabalho foi a integração com o servidor MQTT. A elaboração do


protocolo de comunicação e de um sistema robusto, que pudesse inclusive suportar uma
queda de energia, exigiu atenção aos detalhes. Como o protótipo do sistema contou com cinco
dispositivos ESP8266 diferentes, qualquer alteração necessária precisava ser minuciosamente
pensada, já que a escrita do código em todos os dispositivos é um processo que demanda certo
tempo.

Outro passo importante foi a extração da curva do LDR utilizado. Com o intuito de
diminuir os custos e por limitações de tamanho e consumo de energia, muitas vezes é
necessário a utilização de transdutores mais simples em projetos eletrônicos. No caso do
trabalho, foi necessário utilizar um LDR para obtenção da luminosidade, que é um parâmetro
fundamental para o funcionamento do projeto. Para isso, o datasheet precisou ser consultado,
e com ajuda de um luxímetro, foi possível transformar o LDR em um dispositivo capaz de
indicar a luminosidade do ambiente com uma precisão razoável que atendeu às necessidades
do projeto.

Para finalizar, é possível dizer que o projeto atingiu todas as metas propostas. O
sistema respondeu exatamente como esperado em todos os testes realizados, e serviu como
uma excelente experiência de desenvolvimento na área de IoT. Apesar disso, cabe ressaltar
que algumas limitações foram percebidas. A primeira delas é que os sensores LDR utilizados
Referências 59

são bastante direcionais. Isso faz com que a leitura da luminosidade ocorra apenas no ponto
específico em que o sensor está posicionado, falhando em representar bem a luminosidade no
ambiente. Esse problema talvez pudesse ser resolvido com algum tipo de difusor, como os
difusores semiesféricos presentes nos sensores de presença e no próprio luxímetro utilizado na
calibração. A segunda limitação do projeto é a necessidade de um ambiente controlado para a
calibração. O processo funciona bem em um ambiente fechado e com iluminação controlada,
mas com a presença da iluminação natural do dia, o sistema pode acabar sofrendo problemas.
Com ajuda do luxímetro, foi percebido que a iluminação solar possui uma influência grande
nos sensores, e que uma simples nuvem pode mudar drasticamente a luminosidade lida pelos
sensores. Para corrigir isso, a calibração precisaria ser constantemente refeita para que o
sistema continue tomando decisões atualizadas para o ambiente.

6.1 TRABALHOS FUTUROS

Sabendo das limitações percebidas, é possível propor ideias para trabalhos futuros
com o intuito de aprimorar o sistema. Além de adicionar o difusor nos sensores de
luminosidade e melhorar o desempenho da leitura de luminosidade, também seria interessante
a implementação de uma calibração dinâmica. O ideal seria que o sistema pudesse
constantemente atualizar a matriz de influência das lâmpadas nos sensores na medida que a
luminosidade do ambiente fosse alterada, sem a limitação da calibração inicial. Outra ideia
interessante é a expansão do conceito de monitoramento para a temperatura. Por um baixo
custo, é possível ter uma estação de monitoramento USB em cada bancada de trabalho,
controlando não só a luminosidade, como também a temperatura do ambiente. Com essa
implementação, a economia poderia ser estendida para um sistema de refrigeração, trazendo
benefícios ainda maiores.
60

REFERÊNCIAS

[1] MOTA, C. Iluminação em ambientes de trabalho: A relação entre o projeto


luminotécnico e a produtividade dos funcionários. Disponível em:
<https://www.lumearquitetura.com.br/lume/Upload/file/pdf/Ed69/Artigo%20Ilumina
%C3%83%C2%A7%C3%83%C2%A3o%20no%20trabalho%20ed_69.pdf>.

[2] ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR ISO/CIE 8995:


Iluminação de ambientes de trabalho Parte 1: Interior. Rio de Janeiro, 2013.

[3] SILVA, L. Iluminação no ambiente de trabalho visando o conforto ambiental.


Revista Especialize On-line IPOG. Goiânia, 12ª Edição, n 012, vol. 01/2016. 2016.

[4] ASHTON, K. That “Internet of Things” Thing. RFID Journal, 2019. Disponível
em: <https://www.rfidjournal.com/that-internet-of-things-thing>.

[5] HIGUERA, J.; LLENAS, A.; CARRERAS, J. Trends in smart lighting for the
Internet of Things. Espanha, 2018. Disponível em:
<https://arxiv.org/pdf/1809.00986.pdf>.

[6] Tan, L; Wang, N. Future internet: The Internet of Things. 2010 3rd International
Conference on Advanced Computer Theory and Engineering (ICACTE), 2010, pp.
V5-376-V5-380. Disponível em: <https://doi.org/10.1109/ICACTE.2010.5579543>.

[7] Grupo MB. Iluminação e segurança do trabalho: como e por que medir na sua
fábrica. Disponível em: <https://grupomb.ind.br/mbobras/economia-de-energia/como-
e-por-que-medir-a-iluminacao-no-ambiente-de-trabalho/>.

[8] Kramer, A.; Kramer, K. The potential impact of the Covid-19 pandemic on
occupational status, work from home, and occupational mobility. Journal of
Vocational Behavior, Volume 119, 2020. Disponível em:
<https://doi.org/10.1016/j.jvb.2020.103442>.

[9] Sonoff. Official Homepage: Smart Home automation. Disponível em:


<https://sonoff.tech/>.

[10] Samsung. SmartThings: Aplicativos e Serviços. Disponível em:


<https://www.samsung.com/br/apps/smartthings/>.

[11] Node-RED: Low-code programming for event-driven applications. v1.3.3.


Disponível em: <https://nodered.org/>.

[12] NodeMcu: Connect Things EASY. Disponível em: <https://www.nodemcu.com/>.

[13] Infineon. IRFZ44NPbF: HEXFET® Power MOSFET. Disponível em:


<https://www.infineon.com/dgdl/irfz44npbf.pdf?fileId=5546d462533600a40153563b
3a9f220d>.
Referências 61

[14] Espressif. ESP8266EX Datasheet. Disponível em:


<https://www.espressif.com/sites/default/files/documentation/0a-
esp8266ex_datasheet_en.pdf>.

[15] Datasheet – CdS Photoconductive Cells: GL5528. Disponível em:


<https://cdn.sparkfun.com/datasheets/Sensors/LightImaging/SEN-09088.pdf>.

[16] Datasheet – HC-SR501 PIR MOTION DETECTOR. Disponível em:


<https://www.mpja.com/download/31227sc.pdf>.

[17] Songle. Songle Relay. <https://www.circuitbasics.com/wp-


content/uploads/2015/11/SRD-05VDC-SL-C-Datasheet.pdf>.

[18] Vishay. General Purpose Plastic Rectifier: 1N4001, 1N4002, 1N4003, 1N4004,
1N4005, 1N4006, 1N4007. Disponível em:
<https://www.vishay.com/docs/88503/1n4001.pdf>.

[19] Biblioteca Rede Wi-Fi. WiFiManager: ESP8266 WiFi Connection manager with
web captive portal. Disponível em: <https://github.com/tzapu/WiFiManager>.

[20] Biblioteca MQTT. Arduino Client for MQTT. Version 2.8. Disponível em:
<https://pubsubclient.knolleary.net/>.

[21] Biblioteca JSON. ArduinoJSON: Efficient JSON serialization for embedded C++.
Disponível em: <https://arduinojson.org/>.

[22] Imagem do Módulo NodeMCU. Disponível em:


<https://uploads.filipeflop.com/2017/07/6WL19_1-min.jpg>.

Você também pode gostar