Apostila Eletrogate - Kit Automação2
Apostila Eletrogate - Kit Automação2
Apostila Eletrogate - Kit Automação2
V1.3 – Outubro/2023
Olá, Maker!
Esta apostila exclusiva servirá como material de apoio teórico e prático para o Kit
Automação Residencial, mas, mesmo que você ainda não tenha adquirido o seu Kit, ela
poderá te ajudar a conhecer um pouco mais sobre o Universo Maker, de uma maneira
didática e objetiva.
Caso você nunca tenha ouvido falar sobre o Arduino, NodeMCU ou ESP8266, não se
preocupe. Esta apostila também é para você! Além de uma introdução sobre esta
plataforma, instalação e configuração, você também aprenderá como utilizar todos os
recursos que a sua placa oferece, através de projetos práticos, desde a programação,
montagem, até o projeto em funcionamento.
Vale ressaltar que, embora esta apostila proponha alguns exemplos de projetos
práticos, utilizando os componentes inclusos no Kit, existem infinitas possibilidades para
você criar diversos projetos, utilizando componentes como: sensores, motores e shields,
dentre outros.
Caso ainda não tenha adquirido seu Kit, acesse o nosso site e garanta o seu.
2
Sumário
Parte I - Revisão de circuitos elétricos e componentes básicos .......................................... 4
Introdução................................................................................................................. 4
Revisão de circuitos elétricos ................................................................................... 5
Carga e corrente elétrica .......................................................................................... 6
Tensão elétrica.......................................................................................................... 6
Potência e energia .................................................................................................... 7
Conversão de níveis lógicos e alimentação correta de circuitos ............................ 8
Revisão de componentes eletrônicos.................................................................. 9
Resistores elétricos ................................................................................................... 9
Capacitores ............................................................................................................. 12
Parte II – NodeMCU ESP8266 ................................................................................. 15
Parte III - Seção de Exemplos Práticos............................................................... 26
Exemplo 1 - Leitura de Sinais Analógicos com Potenciômetro ............................. 26
Exemplo 2 - Controle de LED’s com Botões ........................................................... 29
Exemplo 3 - Acionamento de LED conforme a Luz do Ambiente ......................... 31
Exemplo 4 - Medindo a Temperatura do Ambiente ............................................. 34
Exemplo 5 - Controle de 4 Lâmpadas com Modulo Relé de 4 Canais ................... 37
Exemplo 6 - Display LCD 16x2 ................................................................................ 41
Exemplo 7 – Acendendo LED's com Controle Remoto Infravermelho ................. 45
Exemplo 8 – Relógio Digital de Alta Precisão com Módulo RTC ........................... 50
Exemplo 9 - Leitura de Cartões de Proximidade com Módulo RFID ..................... 54
Exemplo 10 – Acionamento de Eletrodomésticos com ESP8266 e Amazon Alexa
................................................................................................................................. 59
Considerações finais ............................................................................................... 65
3
Parte I - Revisão de circuitos elétricos e componentes básicos
Introdução
A primeira parte da apostila faz uma revisão sobre circuitos elétricos, com destaque para
questões práticas de montagem e segurança que surgem no dia-a-dia do usuário do Kit
Automação Residencial.
Algum conhecimento prévio é bem-vindo, mas não é necessário para utilização do kit.
Caso seja seu primeiro contato, nós recomendamos que antes de fazer as montagens
você leia esses três artigos do http://blog.eletrogate.com/.
● http://blog.eletrogate.com/arduino-primeiros-passos/
● http://blog.eletrogate.com/programacao-arduino-parte-1/
● http://blog.eletrogate.com/programacao-arduino-parte-2/
4
Revisão de circuitos elétricos
A apostila de Automação Residencial, bem como todas as outras apostilas que tratam
de Arduino e eletrônica em geral, tem como conhecimento de base as teorias de
circuitos elétricos e de eletrônica analógica e digital.
Em todo circuito você vai ouvir falar das grandezas elétricas principais, assim, vamos
aprender o que é cada uma delas.
5
Carga e corrente elétrica
A grandeza mais básica nos circuitos elétricos é a carga elétrica. Carga é a propriedade
elétrica das partículas atômicas que compõem a matéria, e é medida em Coulombs.
Sabemos da física elementar que a matéria é constituída de elétrons, prótons e
nêutrons. A carga elementar é a carga de 1 elétron, que é igual a 1,602 x10 -19 C.
Do conceito de carga elétrica advém o conceito de corrente elétrica, que nada mais é
do que a taxa de variação da carga em relação ao tempo, ou seja, quando você tem um
fluxo de carga em um condutor, a quantidade de carga (Coulomb) que atravessa esse
condutor por unidade de tempo, é chamada de corrente elétrica. A medida utilizada
para corrente é o Ampére(A).
Aqui temos que fazer uma distinção importante. Existem corrente elétrica contínua e
alternada:
Com o NodeMCU ESP8266, lidamos com correntes elétricas contínuas, pois elas fluem
sempre em uma mesma direção. É diferente da corrente e tensão elétrica da tomada de
sua casa, que são alternadas.
Ou seja, os seus circuitos com NodeMCU ESP8266 sempre serão alimentados com
grandezas contínuas (corrente e tensão contínuas).
Tensão elétrica
O mais comum é você ver apenas “tensão” nos artigos e exemplos com Arduino. Assim,
definindo formalmente o conceito: Tensão elétrica é a energia necessária para mover
uma unidade de carga através de um elemento, e é medida em Volts (V).
6
Potência e energia
A tensão e a corrente elétrica são duas grandezas básicas, e juntamente com a potência
e energia, são as grandezas que descrevem qualquer circuito elétrico ou eletrônico. A
potência é definida como a variação de energia (que pode estar sendo liberada ou
consumida) em função do tempo, e é medida em Watts (W). A potência está associada
ao calor que um componente está dissipando e a energia que ele consome.
Nós sabemos da vida prática que uma lâmpada de 100W consome mais energia do que
uma de 60W. Ou seja, se ambas estiverem ligadas por 1 hora por exemplo, a lâmpada
de 100W vai implicar numa conta de energia mais cara.
A potência se relaciona com a tensão e corrente pela seguinte equação:
P= V x I
Essa é a chamada potência instantânea. Com essa equação você saber qual a potência
dissipada em um resistor por exemplo, bastando que saiba a tensão nos terminais do
resistor e a corrente que flui por ele. O conceito de potência é importante pois muitos
hobistas acabam não tendo noção de quais valores de resistência usar, ou mesmo saber
especificar componentes de forma adequada.
Um resistor de 33 Ω de potência igual a 1/4W, por exemplo, não pode ser ligado
diretamente em circuito de 5V, pois nesse caso a potência dissipada nele seria maior
que a que ele pode suportar.
Vamos voltar a esse assunto em breve, por ora, tenha em mente que é importante ter
uma noção da potência dissipada ou consumida pelos elementos de um circuito que
você vá montar.
Por fim, a energia elétrica é o somatório da potência elétrica durante todo o tempo em
que o circuito esteve em funcionamento. A energia é dada em Joules (J) ou Wh (watt-
hora). A unidade Wh é interessante pois mostra que a energia é calculada multiplicando-
se a potência pelo tempo (apenas para os casos em que a potência é constante).
Essa primeira parte é um pouco conceitual, mas é importante saber de onde veio toda
a terminologia que você sempre vai ler nos manuais e artigos na internet. Na próxima
seção, vamos discutir os componentes básicos de circuito que compõem o Kit
Automação Residencial.
7
Conversão de níveis lógicos e alimentação correta de circuitos
É muito comum que hobbistas e projetistas em geral acabam por cometer alguns erros
de vez em quando. Na verdade, mesmo alguns artigos na internet e montagens
amplamente usadas muitas vezes acabam por não utilizar as melhores práticas de forma
rigorosa. Isso acontece muito no caso dos níveis lógicos dos sinais usados para
interfacear o Arduino com outros circuitos.
Isso significa que quando você quiser usar o seu NodeMCU ESP8266 com um sensor ou
CI que trabalhe com 3.3V, é preciso fazer a adequação dos níveis de tensão, pois se você
enviar um sinal de 5V (saída do NodeMCU) em um circuito de 3.3V (CI ou sensor), você
poderá queimar o pino daquele componente.
Em geral, sempre que dois circuitos que trabalham com níveis de tensão diferentes
forem conectados, é preciso fazer a conversão dos níveis lógicos. O mais comum é ter
que abaixar as saídas de 5V para 3.3V. Subir os sinais de 3.3V para 5V na maioria das
vezes não é necessário pois o NodeMCU entende 3.3V como nível lógico alto, isto é,
equivalente a 5V.
O divisor de tensão é a solução mais simples, mas usar um CI conversor é mais elegante
e é o ideal. O divisor de tensão consiste em dois resistores ligados em série (Z1 e Z2) ,
em que o sinal de 5V é aplicado a o terminal de um deles. O terminal do segundo resistor
é ligado ao GND, e o ponto de conexão entre os dois resistores é a saída do divisor, cuja
tensão é dada pela seguinte relação:
8
Um divisor de tensão muito comum é fazer Z1 igual 330 Ω e Z2 igual 680 Ω. Dessa forma
a saída Vout fica sendo 3.336 V. Como no Kit Automação Residencial não há resistor de
680 Ω, você pode ligar um de 330 Ω como Z1 e dois de 330 Ω como Z2. Os dois de 330
ligados em série formam um resistor de 660 ohm, o que resulta numa saída de 3.33V.
Vamos exemplificar como fazer um divisor de tensão como esse na seção de exemplos
da parte II da apostila.
Resistores elétricos
9
menor será a corrente elétrica que fluirá por ele e pelo condutor a ele conectada. A
unidade de resistência elétrica é o Ohm(Ω), que é a unidade usada para especificar o
valor dos resistores.
Os resistores mais comuns do mercado são construídos com fio de carbono e são
vendidos em várias especificações. Os resistores do Kit são os tradicionais de 1/4W e
10% de tolerância. Isso significa que eles podem dissipar no máximo 1/4W (0,25 watts)
e seu valor de resistência pode variar em até 10%. O resistor de 1KΩ pode então ter um
valor mínimo de 900Ω e um valor máximo de 1100Ω.
Em algumas aplicações você pode precisar de resistores com precisão maior, como 5%
ou 1%. Em outros casos, pode precisar de resistores com potência maior, como 1/2W
ou menor, como 1/8W. Essas variações dependem da natureza de cada circuito.
Em geral, para as aplicações típicas e montagens de prototipagem que podem ser feitas
com o Kit Automação Residencial, os resistores tradicionais de 1/4W e 10% de tolerância
são suficientes.
V=RxI
Ou seja, se você sabe o valor de um resistor e a tensão aplicada nos seus terminais, você
pode calcular a corrente elétrica que fluirá por ele. Juntamente com a equação para
calcular potência elétrica, a lei de Ohm é importante para saber se os valores de corrente
e potência que os resistores de seu circuito estão operando estão adequados.
Para fechar, você deve estar se perguntando, como saber o valor de resistência de um
resistor? Você tem duas alternativas: Medir a resistência usando um multímetro ou
determinar o valor por meio do código de cores do resistor.
Se você pegar um dos resistores do seu kit, verá que ele possui algumas faixas coloridas
em seu corpo. Essas faixas são o código de cores do resistor. As duas primeiras faixas
dizem os dois primeiros algarismos decimais. A terceira faixa colorida indica o
multiplicador que devemos usar. E a última faixa, que fica um pouco mais afastada,
indica a tolerância.
10
Figura 1: Faixas coloridas em um resistor
Na figura 2, apresentamos o código de cores para resistores. Cada cor está associada a
um algarismo, um multiplicador e uma tolerância, conforme a tabela. Com a tabela você
pode determinar a resistência de um resistor sem ter que usar o multímetro.
11
Capacitores
Os capacitores são os elementos mais comuns nos circuitos eletrônicos depois dos
resistores. São elementos que armazenam energia na forma de campos elétricos. Um
capacitor é constituído de dois terminais condutores e um elemento dielétrico entre
esses dois terminais, de forma que quando submetido a uma diferença de potencial, um
campo elétrico surge entre esses terminais, causando o acúmulo de cargas positivas no
terminal negativo e cargas negativas no terminal positivo.
O importante que você deve saber para utilizar o Kit é que os capacitores podem ser de
quatro tipos:
● Eletrolíticos,
● Cerâmicos,
● Poliéster,
● Tântalo.
Capacitor eletrolítico
12
Figura 3: Capacitor eletrolítico 4700 microFarads / 25 V
Capacitores cerâmicos
Capacitores cerâmicos não possuem polaridade, e são caracterizados por seu tamanho
reduzido e por sua cor característica, um marrom claro um tanto fosco. Possuem
capacitância da ordem de picoFarad. Veja nas imagens abaixo um típico capacitor
cerâmico e sua identificação:
Diodos e Leds
13
Diodos e Leds são tratados ao mesmo tempo pois tratam na verdade do mesmo
componente. Diodos são elementos semicondutores que só permitem a passagem de
corrente elétrica em uma direção.
São constituídos de dois terminais, o Ânodo(+) e o Cátodo(-), sendo que para que possa
conduzir corrente elétrica, é preciso conectar o Ânodo na parte positiva do circuito, e o
Cátodo na parte negativa. Do contrário, o diodo se comporta como um circuito aberto.
Na figura 4, você pode ver que o componente possui uma faixa indicadora do terminal
de catodo. O diodo do kit Automação Residencial é um modelo tradicional e que está no
mercado há muitos anos, o 1N4007.
O LED é um tipo específico de diodo - Light Emitter Diode, ou seja, diodo emissor de luz.
Trata-se de um diodo que quando polarizado corretamente, emite luz para o ambiente
externo. O Kit Automação Residencial vem acompanhado de leds na cor vermelha, verde
e amarelo, as mais tradicionais.
Nesse ponto, é importante você saber que sempre deve ligar um led junto de um
resistor, para que a corrente elétrica que flua pelo led não seja excessiva e acabe por
queimá-lo. Além disso, lembre-se que por ser um diodo, o led só funciona se o Ânodo
estiver conectado ao pólo positivo do sinal de tensão.
Para identificar o Ânodo do Led, basta identificar a perna mais longa do componente,
como na imagem abaixo:
14
Figura 5: Terminais de um Led. Créditos: Build-eletronic-circuits.com
Os sensores do Kit Automação Residencial, quais sejam: Sensor de Luz LDR e Sensor de
Temperatura NTC, também terão uma seção de exemplo dedicada a cada um deles.
15
Como é possível ver na foto, existe um módulo ESP-12 soldado na placa. Nessa placa, já
existem todos os circuitos necessários para fazer o ESP-12 funcionar – interface Serial-
USB, regulador de tensão, leds indicadores, botões de controle (Reset e Flash) e
barramentos de pinos para permitir o uso em Protoboards.
A grande vantagem dessa placa NodeMCU é que ela funciona como se fosse um Arduino.
Você conecta o cabo USB, e com a IDE Arduino você carrega seus programas na placa.
Nem precisa pressionar os botões!
16
Para fazer a comunicação serial-USB com o seu computador é necessário que, antes de
conectar o cabo USB, instale os drivers do CP2102.
Para fazer o download desses drivers para Windows, Macintosh OSX, Linux e Android,
use o link abaixo:
https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
17
Observação interessante: Os pinos DTR e RTS do Chip CP2102, controlam o pino ENA
(reset chip ESP-12) e o pino GPI0 (Load program). Portanto, ao gravar um programa com
a IDE Arduino, não é necessário pressionar o botão de BOOT (Load).
18
O NodeMCU ESP12 tem duas fileiras de 15 pinos (total 30 pinos). A distância entre as
duas fileiras é grande (2,30 cm), mas poderá inseri-lo em um Protoboard padrão. Os
pinos RESERVED não deverão ser usados, como o nome já diz, são reservados.
● VIN – Este é o pino de alimentação externa (recomendado é 5,0V/1A). Pode-se
utilizar até 9V, mas o regulador da placa deverá esquentar. Não use-o se estiver
usando USB.
● GND – Este é o terra da placa. Não se esqueça de conectá-lo ao terra de outros
dispositivos.
● RST – Reset do módulo ESP-12. Nível LOW (0V) dá um reboot na placa.
● EN – Enable ativa o módulo ESP-12 quando o nível for HIGH (3,3V).
● 3.3V – Saída do regulador interno de 3,3V para alimentar outro dispositivo. Não
use mais do que 500 mA de corrente.
● CLK – interface SPI (clock) – pino SCLK (GPIO6).
● SD0 – interface SPI (master in serial out) – pino MISO (GPIO7).
● CMD – interface SPI (chip select) – pino CS (GPIO11).
● SD1 – interface SPI (master out serial in) – pino MOSI (GPIO8).
● SD2 – pino GPIO9 – pode ser usado também para comunicação com SD Card
(SDD2).
● SD3 – pino GIPO10 – pode ser usado também para comunicação com SD Card
(SDD3).
● RSV – reservado (não use).
● ADC0 – pino de entrada do conversor analógico digital ADC de 10 bits. Tensão
máxima de 1,1V (variação do valor digital – 0 a 1024).
● D0 – pino GIPO16 – pode ser usado para acordar (WAKE UP) o ESP8266 em modo
sono profundo (Deep sleep mode).
● D1 – pino GPIO5 – entrada ou saída.
● D2 – pino GIPO4 – entrada ou saída.
● D3 – pino GPIO0 – é usado também para controlar o upload do programa na
memória Flash. Está conectado no botão FLASH.
● D4 – pino GPIO2 – UART_TXD1 quando carregando o programa na memória
FLASH.
● D5 – pino GPIO14 – pode ser usado em SPI de alta velocidade (HSPI-SCLK).
● D6 – pino GPIO_12 – pode ser usado em SPI de alta velocidade (HSPI-MISO).
● D7 – pino GPIO13 – pode ser usado em SPI de alta velocidade (HSPI-MOSI) ou
UART0_CTS.
● D8 – pino GPIO15 – pode ser usado em SPI de alta velocidade (HSPI-CS) ou
UART0_RTS.
● RX – pino GPIO3 – U0RXD quando carregando o programa na memória FLASH.
● TX – pino GIPO1 – U0TXD quando carregando o programa na memória FLASH.
19
A Placa NodeMCU ESP12 deve ser conectada no seu computador, usando um cabo USB
com conector micro-USB. Qualquer porta USB poderá ser usada, mas dê a preferência
para uma porta USB que suporte a corrente de 500mA ou mais.
Antes de conectar o cabo, como eu já informei, instale os drivers do chip Serial-USB.
Aguarde o reconhecimento da placa pelo Windows.
Para descobrir qual porta COM será usada pela Plataforma de Desenvolvimento (IDE)
do ESP8266, acesse o Gerenciador de dispositivos e identifique a COM configurada.
Digite Gerenciador de dispositivos na caixa de pesquisa do Windows e selecione-o. No
meu PC, a porta configurada foi a COM3.
20
Inicie o programa Arduino IDE. Clique na barra superior em Arquivos e depois em
Preferências.
Dentro da janela de Preferências, copie o link abaixo no campo URLs adicionais para
Gerenciadores de Placas e depois clique em OK.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
21
Na janela do Gerenciador de Placas, refine a sua pesquisa com: ESP8266. Clique em
More Info e depois em Instalar. Lembre-se que o seu computador deve estar conectado
na Internet. Após alguns segundos aparecerá INSTALLED. Isto é, instalado. Feche essa
janela.
Para a escolher o modelo da sua placa, isto é NodeMCU ESP12 , clique novamente em
Ferramentas e depois em Gerenciamento de Placas. Na janela das Placas, escolha
NodeMCU 1.0 (ESP12E Module). Não altere os outros parâmetros da Placa NodeMCU.
Somente altere a porta COM da interface serial-USB. No meu caso a porta é a COM3. O
procedimento para identificar qual porta COM é usada no Windows está no Tutorial:
https://blog.eletrogate.com/nodemcu-esp12-introducao-1/
Saiba que a velocidade padrão da Console da IDE Arduino para o ESP8266 é de 115200
Bps.
22
IMPORTANTE: Após tudo configurado com sucesso, feche e abra o programa Arduino
IDE novamente, para que todas as configurações sejam efetivadas. Se não fizer isso,
poderá ter problemas ao usá-la.
23
/*
Pesquisa de Redes WIFI usando o NodeMCU-ESP12
Apostila Eletrogate - KIT Automação Residencial
Arduino IDE 1.8.5 - ESP8266
Gustavo Murta 07/mar/2018
baseado em
https://arduino-esp8266.readthedocs.io/en/2.4.0/esp8266wifi/scan-class.html
Blog Eletrogate https://blog.eletrogate.com/nodemcu-esp12-usando-arduino-ide-2/
*/
#include "ESP8266WiFi.h"
void setup(){
Serial.begin(115200); // configura monitor serial 115200 Bps
Serial.println(); // imprime uma linha
WiFi.mode(WIFI_STA); // configura rede no modo estacao
WiFi.disconnect(); // desconecta rede WIFI
delay(100); // atraso de 100 milisegundos
}
void loop(){
WiFi.scanNetworksAsync(prinScanResult); // imprime o resultado
delay(500); // atraso de 0,5 segundos
}
24
Para entender alguns detalhes do uso do ESP8266 com a Arduino IDE, recomendo que
leia essa documentação:
https://arduino-esp8266.readthedocs.io/en/2.4.0/reference.html
Informações sobre as Bibliotecas já instaladas na IDE e mais algumas não instaladas,
poderá encontrar no Link:
https://arduino-esp8266.readthedocs.io/en/2.4.0/libraries.html
Sobre a Biblioteca ESP8266WIFI :
https://arduino-esp8266.readthedocs.io/en/2.4.0/esp8266wifi/readme.html
Sobre o primeiro Sketch a ser rodado no NodeMCU ESP12 , veja as funções do SCAN
WIFI :
https://arduino-esp8266.readthedocs.io/en/2.4.0/esp8266wifi/scan-class.html
25
Parte III - Seção de Exemplos Práticos
Agora vamos entrar nas seções de exemplos em si. Os conceitos da Parte I são
importantes caso você esteja começando a trabalhar com eletrônica. No entanto,
devido ao aspecto prático da montagem, não necessariamente você precisa de ler toda
a parte introdutória para montar os circuitos abaixo.
O potenciômetro nada mais é do que um resistor cujo valor de resistência pode ser
ajustado de forma manual. Existem potenciômetros slides e giratórios. Na figura abaixo,
mostramos um potenciômetro giratório dos mais comumente encontrados no mercado.
Em ambos, ao variar a posição da chave manual, seja ela giratória ou slide, o valor da
resistência entre o terminal de saída e um dos outros terminais se altera. O símbolo do
potenciômetro é o mostrado na seguinte imagem:
26
Isso se deve ao seguinte. Vamos aplicar uma tensão de 3.3V nos terminais do
potenciômetro. A entrada analógica do NodeMCU, ao receber um sinal de tensão
externo, faz a conversão do mesmo para um valor digital, que é representado por um
número inteiro de 0 a 1023. Esses números são assim devido à quantidade de bits que
o conversor analógico digital do NodeMCU trabalha, que são 10 bits (2 elevado a 10 =
1024).
Tensão = Valor*(3.3/1024)
Lista de materiais:
● NodeMCU ESP8266;
● Protoboard;
● Potenciômetro 10K;
● Jumpers de ligação;
Diagrama de circuito
Monte o circuito conforme diagrama da próxima página e carregue o código de
exemplo:
27
O Potenciômetro possui 3 terminais, sendo que o do meio é o que possui resistência
variável. A ligação consiste em ligar os dois terminais fixos à uma tensão de 3.3V. Assim,
o terminal intermediário do potenciômetro terá um valor que varia de 0 a 3.3V à medida
que você gira seu knob. O terminal intermediário é ligado diretamente a uma entrada
analógica do NodeMCU A0. Como a tensão é de no máximo 3.3V, então não há problema
em ligar direto.
Carregue o código abaixo e observe a medição da Tensão no Monitor Serial da IDE
Arduino, ao girar o potenciômetro:
void setup() {
Serial.begin(115200); // monitor serial - velocidade 9600 Bps
delay(100); // atraso de 100 milisegundos
}
void loop() {
sensorValue = analogRead(sensorPin); // leitura da entrada analógica A0
voltage = sensorValue * (3.3 / 1024); // cálculo da tensão
28
Na função void Setup(), nós inicializamos o terminal serial com uma taxa de transmissão
de 9600 kbps. Na função void Loop(), primeiro faz-se a leitura da entrada analógica
(porta) com a função analogRead(SensorPin) e armazenamos a mesma na variável
sensorValue. Em seguida, aplicamos a fórmula para converter a leitura (que é um
número entre 0 e 1023) para o valor de tensão correspondente. O resultado é
armazenado na variável Voltage e em seguida mostrado na interface serial da IDE
Arduino.
Referência:
● https://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
Esses dois componentes são trabalhados por meio das entradas e saídas digitais do
NodeMCU. Neste exemplo, vamos fazer uma aplicação basica que você provavelmente
vai repetir muitas vezes. Vamos ler o estado de um push-button e usá-la para acender
ou apagar um led. Ou seja, sempre que o botão for acionado, vamos apagar ou desligar
o Led.
Lista de materiais:
● 1 resistor de 100 Ω,
● 1 Led vermelho (ou de outra cor de sua preferência),
● Push-button (chave botão),
● NodeMCU ESP8266,
● Protoboard,
● Jumpers de ligação.
29
Diagrama de circuito:
Esse pequeno código mostra como ler entradas digitais e acionar as saídas digitais. Na
função void Setup(), é preciso configurar qual pino será usado como saída e qual será
usado como entrada. Depois de configurar os pinos, para acioná-los basta chamar a
função digitalWrite(pino,HIGH). Esta aciona ou desativa um pino digital dependendo do
valor passado no argumento. Se for “HIGH”, o pino é acionado. Se for “LOW”, o pino é
desligado. Na função void Loop(), fizemos um if no qual a função digitalRead é usada
para saber se o pushButton está acionado ou não. Caso ele esteja acionado, nós
acendemos o Led, caso não, nós desligamos o led.
Carregue o código abaixo e pressione o botão para acender o LED.
void setup(){
pinMode(PinButton, INPUT); // configura D7 como entrada digital
pinMode(ledPin, OUTPUT); // configura D8 como saída digital
digitalWrite(ledPin, LOW); //Iniciando o LED desligado
Serial.begin(115200); // monitor serial - velocidade 9600 Bps
delay(100); // atraso de 100 milisegundos
}
void loop(){
if ( digitalRead(PinButton) == LOW){ // se botão = nível baixo
digitalWrite(ledPin, LOW); // desliga LED
Serial.print("Desligando Led"); // imprime no monitor serial
}
else{ // senão botão = nível alto
digitalWrite(ledPin, HIGH); // desliga LED
Serial.print("Acendendo led"); // imprime no monitor serial
}
delay(100); // atraso de 100 milisegundos
}
30
Referência:
● https://www.arduino.cc/reference/en/language/func0tions/digital-
io/digitalread/
Fotoresistor (LDR)
É importante considerar a potência máxima do sensor, que é de 100 mW. Ou seja, com
uma tensão de operação de 5V, a corrente máxima que pode passar por ele é 20 mA.
Felizmente, com 8 KΩ (que medimos experimentalmente com o ambiente bem
iluminado), que é a resistência mínima, a corrente ainda está longe disso, sendo
0,625mA. Dessa forma, podemos conectar o sensor diretamente com o NodeMCU.
*Nota: Nas suas medições, pode ser que você encontre um valor de resistência mínimo
diferente, pois depende da iluminação local.
31
Especificações do LDR:
● Modelo: GL5528
● Diâmetro: 5mm
● Tensão máxima: 150VDC
● Potência máxima: 100mW
● Temperatura de operação: -30°C a 70°C
● Comprimento com terminais: 32mm
● Resistência no escuro: 1 MΩ (Lux 0)
● Resistência na luz: 10-20 KΩ (Lux 10)
Este sensor de luminosidade pode ser utilizado em projetos com Arduino e outros
microcontroladores para alarmes, automação residencial, sensores de presença e vários
outros.
Nesse exemplo, vamos usar uma entrada analógica do NodeMCU ESP8266 para ler a
variação de tensão no LDR e, consequentemente, saber como a luminosidade ambiente
está se comportando. Veja na especificação que com muita luz, a resistência fica em
torno de 10-20 KΩ, enquanto que no escuro pode chegar a 1MΩ.
Lista de materiais:
● LDR;
● 1 Resistor de 10 KΩ e 1 Resistor de 100 Ω;
● NodeMCU ESP8266;
● Protoboard;
● Jumpers de ligação;
32
Diagrama de circuito:
void setup(){
pinMode(ledPin, OUTPUT); // configura D15 como saída digital
Serial.begin(115200); // monitor serial - velocidade 9600
Bps
delay(100); // atraso de 100 milissegundos
}
void loop(){
Leitura = analogRead(AnalogLDR); // leitura da tensão no pino analogico
A0
VoltageLDR = Leitura * (3.3/1024); // cálculo da tensão no LDR
Serial.print("Leitura sensor LDR = "); // imprime no monitor serial
Serial.println(VoltageLDR); // imprime a tensão do LDR
33
resistência do sensor LDR. Assim, vamos identificar as variações na intensidade de luz
pelas variações na tensão do sensor. Quanto maior a intensidade de luz, menor será a
resistência do sensor e, consequentemente, menor a tensão de saída.
Nesse caso, definimos uma tensão de limiar, a partir da qual desligamos ou ligamos um
led para indicar que a intensidade da luz ultrapassou determinado valor. Esse limiar
pode ser ajustado por você, para desligar o led com intensidades diferentes de luz
ambiente.
Referências:
● https://maker.pro/education/using-an-ldr-sensor-with-arduino-a-tutorial-for-
beginners
● http://blog.eletrogate.com/controle-de-luminosidade-com-arduino-e-sensor-
ldr/
Assim, o princípio para medir o sinal de um termistor é o mesmo que usamos para medir
o sinal do LDR. Vamos medir, na verdade, a queda de tensão provocada na resistência
do sensor.
34
● NTC (Negative Temperature Coefficient): Nesse sensor, a resistência elétrica
diminui à medida que a temperatura aumenta.
O termistor que acompanha o kit é do tipo NTC, como o próprio nome diz. Esse é o tipo
mais comum do mercado.
Para usarmos os termistores é necessário fazer uma função de calibração, pois a relação
entre temperatura e resistência elétrica não é linear. Existe uma equação, chamada
equação de Steinhart-Hart, que é usada para descrever essa relação.
O código que vamos usar nesse exemplo utiliza a equação de Steinhart-Hart conforme
essa referência:
http://www.instructables.com/id/NTC-Temperature-Sensor-With-Arduino/
Lista de materiais:
● 1 Sensor de temperatura NTC,
● NodeMCU ESP8266,
● 1 resistor de 10 KΩ,
● Protoboard;
● Jumpers para conexão no protoboard;
Diagrama de circuito:
Para uma melhor precisão nas medidas de temperatura, meça a tensão de 3,3V no pino
3V3 do NodeMCU, usando um multímetro (não contém no KIT). Essa tensão é a usada
35
como referência do conversor analógico-digital do NodeMCU. Especifique esse valor de
tensão na primeira linha do Sketch.
Carregue o código abaixo e meça a temperatura com o NTC:
// Exemplo 4 - Sensor de temperatura NTC
// Apostila Eletrogate - KIT Automação Residencial
void setup(){
Serial.begin(115200); // monitor serial
beta = (log(RT1 / RT2)) / ((1 / T1) - (1 / T2)); // calculo de beta
Rinf = R0 * exp(-beta / T0); // calculo de Rinf
delay(100); // atraso de 100 milisegundos
}
void loop(){
Vout = Vin * ((float)(analogRead(0)) / 1024.0); // calculo de V0 e leitura de A0
Rout = (Rt * Vout / (Vin - Vout)); // calculo de Rout
TempKelvin = (beta / log(Rout / Rinf)); // calculo da temp. em Kelvins
TempCelsius = TempKelvin - 273.15; // calculo da temp. em Celsius
Serial.print("Temperatura em Celsius: "); // imprime no monitor serial
Serial.print(TempCelsius); // imprime temperatura Celsius
Serial.print(" Temperatura em Kelvin: "); // imprime no monitor serial
Serial.println(TempKelvin); // imprime temperatura Kelvins
delay(500); // atraso de 500 milisegundos
}
● https://www.ametherm.com/thermistor/ntc-thermistors-steinhart-and-hart-
equation
● https://www.thinksrs.com/downloads/pdfs/applicationnotes/LDC%20Note%20
4%20NTC%20Calculator.pdf
● https://www.mundodaeletrica.com.br/sensor-de-temperatura-ntc-ptc/
36
Exemplo 5 - Controle de 4 Lâmpadas com Modulo Relé de 4 Canais
O Módulo Relé nada mais é do que um ou mais relés acionados por sinais digitais de 5V.
Esse componente é indicado para acionar cargas que utilizam correntes contínuas
maiores do que a suportada pelo NodeMCU, ou então uma carga de um circuito de
corrente alternada (rede elétrica).
O módulo de relé pode ser usado para vários tipos de aplicações:
● Ativação de eletroímãs,
● Ativação de motores CC,
● Ativação de motores CA,
● Ligar/desligar lâmpadas.
37
● NA - Contato Normalmente Aberto
● COM - Terminal Comum
● NF - Contato Normalmente Fechado
Os pinos dos contatos dos Relés são NA (normalmente aberto), COM (comum) e NF
(normalmente fechado). Isto é, enquanto o relé estiver desativado, a ponta comum
estará conectada no contato NF. Quando o relé for acionado, a ponta comum será
conectada no contato NA.
Cada pino INX serve para acionar um dos relés. VCC e GND são os pinos de alimentação
do Módulo do relé: VCC deve ser conectado no +5V e o GND no pino terra, ambos da
fonte. O pino terra (GND) do Módulo Relé deve estar conectado também no terra
(GND) do Arduino!
Lista de Materiais:
Para este exemplo você vai precisar:
● Protoboard,
● NodeMCU ESP8266,
● Jumpers de ligação,
● Módulo relé 4 canais,
● Lâmpadas e cabos elétricos.
38
O circuito abaixo é uma montagem simples de acender lâmpadas usando relés. Quatro
lâmpadas foram conectadas aos quatro terminais do relé, os quais serão acionados pelo
NodeMCU. Tanto o código como a montagem são de fácil entendimento e confecção, já
que esse exemplo tem o único objetivo de familiarizar o leitor com a utilização do relé.
É interessante notar que, diferentemente dos outros exemplos, dessa vez a fonte de
entrada usada do NodeMCU foi o Vin, e não o 3,3 V, já que o relé só trabalha com 5 V.
As conexões são bastante intuitivas, conecte o GND do NodeMCU com o GND do relé, o
Vin do NodeMCU com o VCC do relé, e as portas D1, D2, D3 e D4 do NodeMCU com as
portas IN1, IN2, IN3 e IN4 do relé, respectivamente. A ligação da lâmpada com o relé
será feita da seguinte forma: a porta normalmente aberta do relé será conectado a uma
das entradas da lâmpada, enquanto a porta comum do relé e a outra conexão da
lâmpada serão conectados a uma alimentação externa, como uma tomada, por
exemplo.
Diagrama do circuito:
Basicamente, cada luz irá acender a cada 3 segundos e, posteriormente, todas irão se
apagar, e o processo se repete infinitamente.
39
*Nota: Se for menor de idade, peça ajuda a um adulto para fazer as ligações elétricas.
Código do Projeto:
void setup() {
Serial.begin(115200); // console serial 115200 Bps
pinMode(IN1, OUTPUT); // definições das portas como portas de saídas
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void loop() {
digitalWrite(IN1, LOW); // acionamento relé 1
Serial.println("Lâmpada 1 ligada"); // print mensagem
delay (3000); // atraso de 3 segundos
digitalWrite(IN2, LOW); // acionamento relé 2
Serial.println("Lâmpada 2 ligada"); // print mensagem
delay (3000); // atraso de 3 segundos
digitalWrite(IN3, LOW); // acionamento relé 3
Serial.println("Lâmpada 3 ligada"); // print mensagem
delay (3000); // atraso de 3 segundos
digitalWrite(IN4, LOW); // acionamento relé 4
Serial.println("Lâmpada 4 ligada"); // print mensagem
delay (3000); // atraso de 3 segundos
digitalWrite(IN1, HIGH); // desliga lâmpada 1
digitalWrite(IN2, HIGH); // desliga lâmpada 2
digitalWrite(IN3, HIGH); // desliga lâmpada 3
digitalWrite(IN4, HIGH); // desliga lâmpada 4
Serial.println("Lâmpadas desligadas"); // print mensagem
delay (3000); } // atraso de 3 segundos
Referências:
● https://blog.eletrogate.com/flip-flop-d-ligando-e-desligando-rele-com-
pushbutton/
● https://www.allaboutcircuits.com/projects/use-relays-to-control-high-voltage-
circuitswwith-an-arduino/
● https://www.arduino.cc/en/Tutorial/Debounce
40
Exemplo 6 - Display LCD 16x2
O display 16×2 é um dispositivo que possui interface para comunicação e controle
padronizada. Esses displays são fáceis de serem controlados e graças a essa
padronização é possível trocar um display 16x2 de um fabricante por outro diferente
sem maiores problemas.
A tecnologia utilizada nos displays tradicionais é LCD (Liquid Crystal Display). Mais
recentemente, modelos mais modernos com tecnologia OLEDs, os LEDS orgânicos, já
estão sendo encontrados também.
A grande vantagem, e razão, pela qual até hoje é componente popular, é o seu preço e
a facilidade de implementação em projetos eletrônicos. Antes dos displays LCD, a
interface gráfica usada para mostrar caracteres alfa numéricos era os displays a LED de
x segmentos (os mais comuns eram de 7, 14 ou 16 segmentos).
Esses componentes mais antigos utilizavam vários LEDs (7, 14 ou 16) dispostos em
segmentos, de forma que dependendo de qual conjunto de LEDs fosse aceso, um
determinado caractere seria mostrado.
Na hora de comprar um display LCD, você vai encontrar diversas opções, além do mais
tradicional 16×2. A especificação é dada em relação ao número de caracteres por linha
e o número de linhas. Assim, 16×2 significa que o display pode exibir 16 caracteres em
cada linha, e possui 2 linhas. Alguns valores típicos para essas especificações são:
41
O display que vamos trabalhar é de 16 colunas e 2 linhas (16×2) e com backlight azul e
caracteres brancos. A interface com Arduino é feita por meio de 16 pinos. Em geral
apenas 12 são utilizados de fato. Os pinos do LCD são:
● Pino de register select (RS): Controle em que parte da memória (do LCD) o
usuário está escrevendo os dados. São duas opções, você pode escrever um dado
para ser mostrado no display, ou uma instrução no MCU do display;
● Pino de Read/Write (R/W): Seleciona se está em modo de leitura ou de escrita;
● Pino de Enable: Habilita a escrita de dados nos registradores;
● 8 pinos de dados (D0 -D7). Os estados de cada pino correspondem aos bits que
você está escrevendo em um registrador do MCU (do display), ou os valores que
você lê de um registrador quando está no modo de leitura.
● Pinos de alimentação VCC e GND do LCD e do LED Backlight (A-ânodo/K-cátodo);
● Pino V0 de ajuste de contraste;
Vamos conferir em nosso exemplo como usar o LCD 16x2. Na figura abaixo, mostramos
um outro modelo, um display gráfico de 128 colunas e 64 linhas, também muito
comercializado e que você pode obter separadamente do Kit para implementar
mensagens gráficas mais avançadas.
42
Display gráfico 128x64
Lista de materiais:
A lista de materiais é a seguinte:
● NodeMCU ESP8266,
● Protoboard,
● Jumpers para ligação no protoboard,
● Display LCD 16x2,
● Potenciômetro 10K.
Diagrama de circuito:
43
Veja o diagrama eletrônico da montagem acima:
Código:
void setup(){
lcd.begin(16, 2); // inicializa LCD 16x2
delay(500); // atraso de 0,5 segundos
}
void loop(){
lcd.clear(); // limpa tela do LCD
lcd.setCursor(0, 0); // selecionando coluna 0 e linha 0
lcd.print("Exemplo LCD !"); // mostra no LCD
lcd.setCursor(1, 1); // selecionando coluna 1 e linha 1
lcd.print(contador); // mostra no LCD a contagem
contador++; // incrementa contador
if (contador == 60) // se contador = 60
contador = 0; // zera o contador
delay(1000); // atraso de 1 segundo
}
No código, é mostrado na primeira linha (0) do display, a mensagem “Exemplo LCD !“.
Na segunda linha (1) será mostrado um contador que é incrementado de 1 em 1
segundo. Para usar o LCD é preciso incluir a biblioteca LiquidCrystal.h, que é nativa da
IDE arduino. Essa biblioteca possui as seguintes funções:
44
No exemplo são usadas essas três funções, mas a biblioteca dispõe de várias outras
que você pode conferir na página oficial (veja as referências abaixo).
Referências:
● http://blog.eletrogate.com/guia-completo-do-display-lcd-arduino/
● http://blog.eletrogate.com/display-lcd-modulo-rf-para-deteccao-de-presenca/
● https://www.arduino.cc/en/Reference/LiquidCrystal
45
O circuito Receptor IR que fica internamente no aparelho a ser controlado consiste
basicamente de um descodificador dos pulsos recebidos do transmissor. Interpretando
o código de cada tecla pressionada, o aparelho pode executar vários tipos de operações,
como por exemplo, desligar, aumentar volume e mudar o canal no caso de uma
Televisão.
Hoje, com a integração cada vez maior dos circuitos, existem receptores de controle
remoto IR que já contém o foto-sensor e todos os outros circuitos necessários para
demodular os pulsos de controle, como amplificadores de sinal, filtros, demodulador,
integrador e comparador.
O diagrama de blocos abaixo contém os vários circuitos que estão integrados no
pequeno receptor. Após a demodulação dos pulsos, esses são decodificados por um
outro Microcontrolador, para que o aparelho possa entender que tipo de operação
deverá ser realizada.
46
Sensor AX-1838HS - pinagem
47
A montagem do circuito é bem simples, interligando um sensor Receptor IR AX-1838Hs
ao NodeMCU. A alimentação do sensor é fornecida pelo 3,3V do NodeMCU. E o pino de
saída dos pulsos do Receptor é conectado ao pino D11 do NodeMCU. O Led verde está
conectado no pino (porta), o Led azul no pino (porta) e o Led vermelho no pino (porta)
do NodeMCU. Todos Leds tem um resistor de 220 Ω em série com as ligações. O lado
chanfrado do Led é o cátodo, que deve ser conectado ao pino terra (GND).
48
Código Controle Remoto IR - LEDs coloridos:
#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRutils.h> // Biblioteca IRemote
void setup(){
pinMode(12, OUTPUT); // LED vermelho no pino D6
pinMode(13, OUTPUT); // LED azul no pino D7
pinMode(15, OUTPUT); // LED verde no pino D8
irrecv.enableIRIn(); // Inicializa a recepção de códigos
}
void loop(){
results.value = 0; // zera os registradores
if (irrecv.decode(&results)) // se algum código for recebido
{
irrecv.resume(); // reinicializa o receptor
}
if (results.value == 0xFFA25D) // pressione tecla 3 para controlar
LED vermelho (D6)
{
LED6 = !LED6; // alterna o estado do LED D6
digitalWrite(12, LED6); // acende ou apaga LED vermelho (D6)
delay(atraso); // atraso de 250 ms
}
if (results.value == 0xFF629D) // pressione tecla 2 para controlar
LED azul (D7)
{
LED7 = !LED7; // alterna o estado do LED D7
digitalWrite(13, LED7); // acende ou apaga LED azul (D7)
delay(atraso); // atraso de 250 ms
}
if (results.value == 0xFFE21D) // pressione tecla 1 para controlar
LED verde (D05)
{
LED8 = !LED8; // alterna o estado do LED D8
digitalWrite(15, LED8); // acende ou apaga LED verde (D8)
delay(atraso); // atraso de 250 ms
}
}
49
O sketch do exemplo é bem interessante, pois com o uso do controle remoto poderá
ligar ou desligar os LEDs coloridos. Se quiser acionar um equipamento, poderá substituir
os LEDs por um módulo de relé.
● Tecla 1 controla Led Verde / pino (porta),
● Tecla 2 controla Led Azul / pino (porta),
● Tecla 3 controla Led Vermelho / pino (porta).
Referências:
● http://blog.eletrogate.com/guia-completo-do-controle-remoto-ir-receptor-ir-
para-arduino/
● https://learn.adafruit.com/using-an-infrared-library/overview
● http://labdegaragem.com/profiles/blogs/6223006:BlogPost:315534
● https://hetpro-store.com/TUTORIALES/control-ir-con-arduino/
● http://www.righto.com/search/label/ir
Esse módulo serve como relógio para projetos com o NodeMCU, Arduino e outros
microcontroladores que precisam do controle do tempo. Pode ser usado como alarme
despertador, controle automatizado de operações temporizadas, e claro como um
relógio comum com horas e minutos. O módulo tem o chip DS1307 que é o relógio, uma
EEPROM 24C32, um cristal de 32,768 KHz e uma pilha CR2032.
O chip DS1307 RTC (Real-Time Clock) é um relógio / calendário de baixa potência com
codificação binária completa (BCD) mais 56 bytes de NV SRAM (memória estática RAM
não-volátil). Os endereços e os dados são transferidos em série por meio do barramento
bidirecional da interface I2C. O relógio / calendário fornece informações sobre
segundos, minutos, horas, dia, data, mês e ano. O relógio funciona no formato de 24 ou
12 horas com o indicador AM / PM. O DS1307 possui um circuito de detecção de falha
de energia que alterna automaticamente a alimentação para a pilha CR2032 (3V), na
ausência de energia da fonte. A contagem de tempo do relógio é baseada no oscilador
do cristal de 32,768 KHz.
50
A memória EEPROM 24C32 permite o armazenamento de até 4096 KBytes e ela é não
volátil, isto é, mesmo sem energia ela armazena os dados gravados. Para a comunicação
com o microcontrolador ela também usa a interface I2C.
A alimentação do módulo RTC DS1307 deve ser de 5V. A tensão mínima de alimentação
do chip DS1307 é de 4,5V. Portanto esse módulo não pode ser alimentado com 3,3V.
Os pinos de comunicação I2C do módulo já tem os resistores de pull up. Por isso não é
necessário acrescentar esses resistores. Os pinos podem ser conectados diretamente no
NodeMCU ESP8266.
A tensão da bateria (pilha de Lítio) deverá variar com o uso. Quando a pilha está nova,
a tensão é de 3,2V aproximadamente.
Lista de Materiais:
Para este exemplo você usará os seguintes componentes:
51
● NodeMCU ESP8266,
● Protoboard,
● Jumpers de ligação,
● Módulo RTC DS1307.
A Biblioteca RTClib será usada nesse exemplo. Para instalar a nova biblioteca na IDE
Arduino, clique em:
52
Esse é o link da Biblioteca RTClib:
https://github.com/adafruit/RTClib
void setup () {
Serial.begin(115200); // monitor da console serial
if (! rtc.begin()) { // se o RTC não foi inicializado
Serial.println("RTC nao pode ser encontrado!"); // imprime mensagem
while (1);
}
if (! rtc.isrunning()) { // se o RTC não estiver rodando
Serial.println("RTC nao esta funcionando!"); // imprime mensagem
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // ajusta relógio com o do PC
}
}
void loop () {
DateTime now = rtc.now(); // faz a leitura dos dados do RTC
Serial.print(now.day(), DEC); // imprime o dia do mês
Serial.print('/');
Serial.print(now.month(), DEC); // imprime o mês
Serial.print('/');
Serial.print(now.year(), DEC); // imprime o ano
Serial.print(" (");
Serial.print(diasDaSemana[now.dayOfTheWeek()]); // imprime o dia da semana
Serial.print(") ");
Serial.print(now.hour(), DEC); // imprime horas
Serial.print(':');
Serial.print(now.minute(), DEC); // imprime minutos
Serial.print(':');
Serial.print(now.second(), DEC); // imprime segundos
Serial.println(); // imprime uma linha
delay(2000); // atraso de 2 segundos
}
53
Veja a data e o horário na console serial (115200 Bps):
Referências:
● https://blog.eletrogate.com/rtc-real-time-clock-ds1302-1307-e-3231/
● https://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit/overview
● https://wiki.dfrobot.com/Real_Time_Clock_Module__DS1307___SKU_DFR0151_
● https://howtomechatronics.com/projects/arduino-touch-screen-music-player-alarm-
clock-project/
Os cartões RFID são usados em uma série de aplicações na vida cotidiana, desde cartões
de crédito até cartões de identificação automática para controle de acesso.
Esses cartões possuem uma tarja magnética que armazena dados digitais e podem ser
lidos e escritos por meio de ondas de rádio.
RFID é a sigla para: Radio Frequency Identification. É uma tecnologia que pertence a
uma área chamada de Automatic Identification and Data Capture (AIDC).
Os métodos AIDC identificam objetos e pessoas automaticamente, coletam dados sobre
eles e entram com esses dados diretamente em softwares com pouca ou nenhuma
intervenção humana.
54
Módulo RFID MFRC522
O módulo leitor RFID baseado no chip MFRC522 é utilizado para comunicação sem fio a
uma frequência de 13,56 MHz. A empresa que desenvolveu o módulo é a NXP, uma das
gigantes do setor de semicondutores.
Trata-se de um chip de consumo extremamente baixo e dimensões reduzidas. A sua
principal aplicação é a leitura de cartões que utilizam o padrão Mifare.
As tags RFID podem ser usadas para ler várias informações sobre o portador do cartão,
permitindo sua identificação automática para validação ou não do acesso.
Especificações do MFRC522
● Corrente de trabalho: 13-26mA / DC 3.3V;
● Pico de corrente: <30mA;
● Frequência de operação: 13,56MHz;
● Tipos de cartões suportados: Mifare1 S50, S70 Mifare1, Mifare UltraLight, Mifare
Pro, Mifare e Desfire;
● Parâmetro de Interface SPI;
● Taxa de transferência: 10 Mbit/s.
Como funciona o módulo RFID?
Métodos e tecnologias que usam RFID baseiam-se em ondas de rádio para ler e gravar
dados. Os sistemas RFID são feitos dos seguintes componentes principais:
O módulo leitor também faz parte do kit e é por meio dele que é feita a gravação/leitura
de dados. No nosso caso, o leitor é baseado no CI MFRC522.
55
Confira o passo a passo da descrição do nosso projeto de sistema de controle de acesso
utilizando um Kit RFID com Arduino:
Aspectos de Hardware
● NodeMCU ESP8266;
● KIT RFID;
● Display LCD 16×2;
● Potenciômetro de 10KΩ;
● Buzzer ativo;
● Protoboard;
● Jumpers para protoboard;
● SDA -> 9
● SCK -> 13
● MOSI -> 11
● MISO -> 12
● RST -> 8
Daí a necessidade de usar o level shifter bidirecional entre um e outro. Alguns canais são
unidirecionais, mas como você já vai usar um circuito de level shifter, recomendamos já
comprar um totalmente bidirecional, como o indicado na lista de componentes.
56
Diagrama do Módulo RFID MFRC522 com NodeMCU
57
Código do Projeto:
// Exemplo 9 – Modulo RFID com Arduino Apostila Eletrogate - Kit Automação Residencial
void setup() {
Serial.begin(115200); // console serial 9600
bps
SPI.begin(); // inicializa interface SPI
mfrc522.PCD_Init(); // inicializa o modulo
MFRC522
Serial.println(F("Lendo os dados da etiqueta MIFARE PICC:")); // imprime mensagem console
serial
}
void loop() {
MFRC522::MIFARE_Key key; // preparando as chaves
for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF; // montando as chaves
byte block; // algumas variaveis necessarias
byte len;
MFRC522::StatusCode status; // lendo o estado das etiquetas
if ( ! mfrc522.PICC_IsNewCardPresent()) // se nao houver etiqueta
return;
if ( ! mfrc522.PICC_ReadCardSerial()) // selecione uma das etiquetas
return;
byte buffer1[18];
block = 4;
len = 18;
status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 4, &key, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) { // se falhar na leitura
Serial.print(F("Falha na autenticacao: ")); // imprime mensagem
Serial.println(mfrc522.GetStatusCodeName(status)); // imprime o erro
return;
}
status = mfrc522.MIFARE_Read(block, buffer1, &len);
if (status != MFRC522::STATUS_OK) { // se falhar na leitura
Serial.print(F("Falha na leitura: ")); // imprime mensagem
Serial.println(mfrc522.GetStatusCodeName(status)); // imprime o estado
return;
}
for (uint8_t i = 0; i < 16; i++) { // para 15 ponteiros
if (buffer1[i] != 32) // se o buffer for diferente de 32
Serial.write(buffer1[i]); // imprime o buffer
}
Serial.print(" ");
Serial.println(F("\n**Fim da leitura**\n")); // imprime mensagem
delay(1000); // atraso de 1 segundo
mfrc522.PICC_HaltA(); // para a leitura do RFID
mfrc522.PCD_StopCrypto1();
}
58
Referências:
● https://blog.eletrogate.com/guia-basico-da-nfc-para-arduino/
● https://blog.eletrogate.com/kit-rfid-com-arduino-sistema-de-controle-de-
acesso/
● https://randomnerdtutorials.com/security-access-using-mfrc522-rfid-reader-
with-arduino/
● https://howtomechatronics.com/tutorials/arduino/rfid-works-make-arduino-
based-rfid-door-lock/
59
Selecione um nome para o dispositivo, descrição e o tipo de dispositivo selecione:
Switch. Salve o dispositivo criado.
O dispositivo possui um ID, e este ID será usado no código da Arduino IDE. Crie os
dispositivos que você deseja.
60
Na lateral esquerda vá em “Credenciais” e copie a chave do App e a senha do App.
61
Após isso vá em “Arquivo > Exemplos > SinricPro > Switch > MultiSwitch_beginner”
62
Substitua os dados abaixo no código com o nome do seu WiFi, senha do WiFi, App_Key
e App_Secret (dados encontrados na aba de credenciais do Sinric Pro), e insira os IDs
dos dispositivos.
Após isso, vá no aplicativo Alexa, vá Dispositivos > Suas Skills de Casa Inteligente.
Vá em “Ativar Skills de Casa Inteligente” e procure por “Sinric Pro”
63
Após isso ative a Skill e faça login com a conta Sinric criada.
Após isso vá em “Descobrir Dispositivos”, no aplicativo Alexa, e seus dispositivos do
ESP será encontrado.
Agora, via Alexa, você poderá acionar por voz seus dispositivos. Para visualizar a
comunicação com o NodeMCU, abra o Monitor Serial, coloque o Baud Rate em 9600 e
você verá o seu dispositivo recebendo a informação da Nuvem.
Para incluir o acionamento das portas do seu NodeMCU, basta incluir o que deve ser
feito neste trecho de código:
64
Neste trecho você poderá inserir os comandos “digitalWrite”, como aprendido ao
longo da apostila.
Para mais exemplos acesse:
● https://blog.eletrogate.com/automacao-residencial-com-alexa-amazon-e-
nodemcu/
● https://blog.eletrogate.com/criando-dispositivos-inteligentes-para-alexa-
amazon-1/
● https://blog.eletrogate.com/controlando-o-brilho-da-lampada-com-a-alexa/
Considerações finais
Essa apostila tem por objetivo apresentar alguns exemplos básicos sobre como utilizar
os componentes do Kit Automação Residencial, a partir dos quais você pode combinar
e fazer projetos mais elaborados por sua própria conta.
Nas seções de referências de cada exemplo e nas referências finais, também tentamos
indicar boas fontes de conteúdo objetivo e com projetos interessantes. Sobre esse
ponto, que consideramos fundamental, gostaríamos de destacar algumas fontes de
conhecimento que se destacam por sua qualidade.
O fórum oficial Arduino possui muitas discussões e exemplos muito bons. A comunidade
de desenvolvedores é bastante ativa e certamente pode te ajudar em seus projetos. No
Project Hub poderá encontrar milhares de projetos com Arduino.
O Instructables também é uma ótima referência do mundo maker atual. Pessoas que
buscam construir suas próprias coisas e projetos encontram referências e compartilham
suas experiências no site.
● Instructables: https://www.instructables.com/
● Hackster.IO: https://www.hackster.io/projects
● Hackaday.IO: https://hackaday.io/projects
O Maker pro é outro site referência no mundo em relação aos projetos com Arduino. Há
uma infinidade de projetos, todos bem explicados e com bom conteúdo.
65
● Maker pro: https://maker.pro/projects/arduino
No mais, esperamos que essa apostila seja apenas o início de vários outros projetos e,
quem sabe, a adoção de Kits mais avançados, como o de Robótica. Qualquer dúvida,
sugestão, correção ou crítica a esse material, fique à vontade para relatar em nosso blog
oficial:
http://blog.eletrogate.com/
Referências gerais
Vitor Vidal
Engenheiro eletricista, mestrando em eng. elétrica e apaixonado por eletrônica,
literatura, tecnologia e ciência. Divide o tempo entre pesquisas na área de sistemas de
controle, desenvolvimento de projetos eletrônicos e sua estante de livros.
66
Gustavo Murta
Consultor e Projetista de Sistemas Embarcados.
Técnico em eletrônica, formado em Curso superior de TPD, pós-graduado em Marketing.
Trabalhou por muitos anos na IBM na área de manutenção de computadores de grande
porte. Aposentou-se, podendo curtir o que mais gosta : estudar e ensinar Tecnologia.
Hobbista em eletrônica desde 1976. Gosta muito de Fotografia e Observação de aves.
Gustavo Nery
Cursando Engenharia de Controle e Automação pela UFMG. Apaixonado por eletrônica,
computação e tecnologias na área de sistemas embarcados. Nos tempos livres me divido
entre desenvolver pesquisa na universidade, adquirir novos conhecimentos e estar com
a família.
Ricardo Lousada
Graduando em Engenharia de Controle e Automação pela UFMG. Ocupo meu tempo
aprendendo cada vez mais sobre eletrônica e programação, áreas que mais gosto.
Meus hobbies são cinema e livros.
67
68