1
Iniciando IoT com ESP8266
2
SUMÁRIO 1. INTRODUÇÃO ............................................................................................................................ 3
2. Material Necessário e Configurações ........................................................................................ 4
2.1 Instalando a IDE Arduino ..................................................................................................... 5
2.2 Configurando a Arduino IDE para programar com ESP8266 ............................................... 7
2.3 Piscando um LED com ESP8266......................................................................................... 13
3. ESP8266 como Web Server ..................................................................................................... 15
3.1 Conectando o ESP8266 a rede WiFi .................................................................................. 15
3.2 Criando uma página HTML ................................................................................................ 18
3.2.1 Montando a página HTML .......................................................................................... 18
3.2.2 Exibindo status de entrada digital .............................................................................. 21
3.2.3 Enviando Informações via HTML ................................................................................ 23
4. MQTT – Message Queue Telemetry Transport ....................................................................... 26
4.1 Configuração do CloudMQTT ........................................................................................... 26
4.2 Programação do ESP826 para o MQTT ............................................................................ 29
4.3 Configurando o aplicativo MQTT Dash ............................................................................. 31
3
1. INTRODUÇÃO
Este artigo irá auxilia-lo a criar sua própria smarthouse controlada via celular ou via
websites. O trabalho está divido em duas partes:
A primeira parte é composta pela criação do controle através de um servidor local
– ou seja- o seu aplicativo só funcionará dentro dos limites do seu WiFi e a segunda
parte é utilizando um servidor externo e esse sim te permite controlar sua casa de
qualquer lugar, basta ter uma conexão com a internet.
Ambos os caminhos são bons tudo depende da aplicação que você deseja realizar.
Ao final deste artigo você derverá ser apto a controlar sua casa remotamente.
4
2. Material Necessário e Configurações
Lista de materiáis necessários para a construção e testes.
• Módulo ESP8266
• Protoboard
• Jumpers
• Leds
• IDE Arduino
Especificações do NodeMCU ESP8266
- Tensão de Operação: 3,3 V
- Voltagem mínima: 4,5V
- Voltagem máxima: 9,0V
– ESP8266 ESP-12F
– Wireless padrão 802.11 b/g/n
– Antena embutida
– Conector micro-usb
– Modos de operação: STA/AP/STA+AP
– Suporta 5 conexões TCP/IP
– Portas GPIO: 11
– GPIO com funções de PWM, I2C, SPI, etc
– Taxa de transferência: 110-460800bps
– Suporta Upgrade remoto de firmware
– Conversor analógico digital (ADC)
– Distância entre pinos: 2,54mm
– Dimensões: 49 x 25,5 x 7 mm
5
Figura 1- NodeMCU ESP8266 Pinos
2.1 Instalando a IDE Arduino A IDE do arduino pode ser baixada no te https://www.arduino.cc/en/main/software
conforme ilustrado na imagem abaixo:
Figura 2- Download arduino
6
A instalação é a clássica NEXT -> NEXT -> FINISH e ao finalizar você será
apresentada a tela inicial
Figura 3- Tela inicial Arduino
7
2.2 Configurando a Arduino IDE para programar com ESP8266
Para que o arduino reconheça a placa é necessário fazer algumas configurações
na IDE para que ela seja capaz de passar os códigos.
1º Passo: Instale o driver de compatiblidade da placa. Existem diferentes tipos de
módulos WiFi no mercado, o usado para os exemplos da apostila é o Módulo Esp8266
Nodemcu V3.
Figura 4- Módulo Esp8266 Nodemcu V3
Para este módulo faça o download no link a seguir:
https://1drv.ms/u/s!ApoIMgZBos6Xg7RdbqXLmsb0SEAMUQ?e=gP9PmV
8
Caso esteja utilizando o Esp8266 Cp2102 faça o download no link abaixo:
https://1drv.ms/u/s!ApoIMgZBos6Xg7RvzMEnxheMQAqQFA?e=kDI49G
Figura 5- Esp8266 Cp2102
2º Passo: Extraia o arquivo e o execute como administrador, conforme a imagem
abaixo:
Figura 6- Instalação driver
9
3º Passo: Clique no botão INSTALL e aguarde a mensagem de confirmação.
Figura 7- Botão INSTALL
4º Passo: Abra seu Arduino IDE e vá na opção Arquivo e depois Preferências,
conforme abaixo:
Figura 8- Preferências arduino
10
5º Passo: Adicione o link a seguir para incorporar a placa ESP.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Figura 9 - URL do ESP8266
6º Passo: Adicione o modelo da placa no arduino IDE, vá em Ferramentas ->
Gerenciador de Placas....Conforme mostrado abaixo:
Figura 10- Gerenciador de Placas
11
7º Passo: Busque por ESP8266 e clique em Instalar.
Figura 11- Instalando ESP
8º Passo: Após instalado a placa deverá ser reconhecida, para verificar vá
novamente em Ferramentas -> Placa e escolha NodeMCU 1.0(ESP-12E Module).
Conforme a imagem abaixo:
Figura 12- Adicionando a placa
12
9º Passo: Agora escolha a porta da sua placa. Para isso vá em Ferramentas ->
Portas. Caso a porta não apareça com o nome da placa, igual abaixo:
Figura 13- Porta Indefinida
Clique no botão Iniciar e digite devmgmt.msc isso irá abrir o gerenciador de
dispositivos vá em Portas LPT COM e veja em qual o driver está instalado. Isso é
claro, tenha certeza de que você conectou o módulo na sua entrada USB.
Figura 14- Gerenciador de Dispostivos
13
2.3 Piscando um LED com ESP8266
Com o Arduino devidamente instalado em configurado, vamos testar se o código
está indo para a placa, para isso vamos começar o básico pisca led.
Figura 15- Código PiscaLed
Se tudo ocorrer bem você vai receber a mensagem “CARREGADO” e deverá ser
capaz de ver o led piscando.
Figura 16- Led acesso
14
O código para o exemplo acima se encontra disponível em:
https://github.com/perabru/PiscaLedESP8266
15
3. ESP8266 como Web Server
Agora iremos fazer o ESP se comportar como um servidor web – ele irá hospedar
e gerenciar uma página HTML que vamos criar através do código – caso você possua
dúvida sobre o que é um servidor recomendo ir na apostila
http://univaptec.hol.es/uploads/INFORMATICA/REDES/Apostila%20Redes.pdf não
há necessidade de profundos conhecimentos, basta saber que o módulo vai
armazenar uma página localmente.
3.1 Conectando o ESP8266 a rede WiFi
Para conectar o ao WiFi – vamos precisar primeiramente de uma rede e a senha
dela.
Ao código – primeira coisa a se fazer é incluir a biblioteca do ESP8266 para o WiFi,
conforme ilustrado no código abaixo:
Agora, precisamos criar duas variáveis do tipo char que irão receber os valores
nome da rede a senha, conforme mostrado no código abaixo:
No arduino também podemos criar funções, o que facilita o entendimento e a
organização do código – aqui criamos a função conectarWiFi que recebe como
parâmetro justamente a rede e a senha.
16
Agora vamos começar mostrando algumas mensagens para o usuário, o código
abaixo informa que ele está tentando se conectar a rede com SSID – e conforme já
definimos o SSID é BRUNO – no seu caso deverá ser o nome da sua rede. E
utilizamos o métodos WiFi.begin que é responsável por conectar.
Enquanto o WiFi não conecta ele vai ficar mostrando apenas um ponto a cada
0,5s.
Após conectado ele irá informar o status e passar o IP que foi recebido.
17
Dentro do void setup() vamos apenas inicializar o método conectarWiFi e definir
a taxa de comunicação em 115200 bps.
Agora passe o código para o módulo, se tudo ocorrer bem, quando você clicar no
serial monitor deverá ver as seguintes informações:
Figura 17- WiFi Conectado
Código completo https://github.com/perabru/ESP8266WiFi
18
3.2 Criando uma página HTML
Continuando o nosso código, agora vamos criar nossa primeira página HTML
dentro do Arduino.
3.2.1 Montando a página HTML
Antes do void setup vamos definir o nosso servidor HTTP para isso faça como
abaixo:
E dentro do void setup iniciaizamos o servidor e informamos ao usuário.
Dentro do void loop vamos começar a construir nossa página, primeiro vamos
garantir que quando o servidor não estiver disponível, ainda assim vamos ficar
tentando conexão, para isso, faça como o código abaixo:
19
Com servidor definido e inicializado vamos criar nossa página HTML utilizando o
client.print se você já programou em PHP alguma vez deve saber que é possível criar
marcações HTML dentro do ECHO, o base é exatamente a mesma.
Agora passe o código para seu módulo, se tudo ocorrer bem, você deverá ver a seguinte
tela ao entrar no serial monitor
Figura 18- Servidor Inicializado
20
Para ver a página, basta copiar seu IP e colar no navegador, conforme a figura
abaixo:
Figura 19- Página HTML
As novas adições que fizemos no código se encontram em:
https://github.com/perabru/ESP8266WiFi_HTML
21
3.2.2 Exibindo status de entrada digital
Com nossa página HTML sendo criada vamos agora enviar informações do módulo
para isso vamos adicionar um botão que irá mandar seu estado lógico para o
controlador. Monte conforme o circuito abaixo:
Figura 20- Circuito Botão
No código vamos adicionar o botão ao pino digital D2, conforme abaixo:
Definimos o botão como entrada PULLUP
22
E agora dentro do void loop() adicionamos um digitalRead para saber o estado do
botão e escrever a página HTML conforme necessário.
Passe o código para a placa, pegue o IP e cole no navegador, se tudo ocorrer bem
você deverá ver essa saída:
Figura 21- BT Solto
Figura 22- BT Pressionado
O código com as novas adições se encontra em:
https://github.com/perabru/ESP8266_WiFi_HTML_BT
23
3.2.3 Enviando Informações via HTML
Agora que já obtemos as informações do módulo, vamos adicionar um LED e um
botão na nossa página HTML para acende-lo e apaga-lo. Adicione o LED conforme o
diagrama abaixo.
Figura 23- LED ESP8266
O anôdo – a parte positiva – do LED foi ligado ao pino D1 e o Catôdo – a parte
negativa – do LED ligado ao GND.
Modificando o código – primeiramente vamos adicionar uma constaten pare receber
o LED que está ligado no pino D1.
Agora vamos criar uma variável do tipo booleana para receber o estado do LED.
24
Dentro do void setup() definimos nosso LED como saída.
Criamos uma variável do tipo String chamada req – que irá armazenar a requisição
do usuário (ligar ou desligar o led) e após ler irá esvaziar o buffer.
Toda vez que a requisição for válida acendemos o LED caso ele já não esteja
aceso e desligado quando requisitado, conforme imagem abaixo.
Agora criamos o botão para ligar e desligar o LED no HTML.
25
Passe o código para a placa se tudo correr bem você deverá ser apto a acender e
apagar o LED através do HTML.
Figura 24- Enviando comandos HTML
O código completo pode ser encontrado em:
https://github.com/perabru/ESP8266_WIFI_HTML_BT_COM
26
4. MQTT – Message Queue Telemetry Transport
Protocolo assíncrono que foi criado pela IBM – conhecido por ser máquina a máquina
se tornou uma referência para IoT.
4.1 Configuração do CloudMQTT
Para que o aplicativo funcione de maneira correta – precisaremos estar em um
servidor online para isso vamos utilizar o CloudMQTT, siga os passos abaixo:
1º Passo: Acesse https://www.cloudmqtt.com e você será adicionado para a tela a
seguir, e clique em LOGIN no canto direito superior.
Figura 25- Página CloudMQTT
27
2º Passo: Faça o login com e-mail e senha ou por alguma rede social.
Figura 26- Tela de Login
3º Passo: Clique no botão Create New Instance
Figura 27- Criar Instância
28
4º Passo: Nessa tela dê um nome ao seu servidor – o plano mantenha o gratuito e a
tag coloque esp8266 e clique em Select Region
Figura 28- Plano e Nome
5º Passo: Selecione a região e o datacenter pode deixar o padrão e clique em review.
Figura 29- Selecionar Regiao
6º Passo: Nesta tela apenas clique em Create Instance
Figura 30- Criar Instancia
29
7º Passo: Clique no nome da nova instância e pegue as informações, conforme
aqui:
Figura 31- Acesso
4.2 Programação do ESP826 para o MQTT
Para programar no MQTT vamos precisar adicionar uma biblioteca chanda
PubSubClient, siga os passos mostrado a seguir:
1º Passo: clique em Sketch -> Incluir biblioteca-> Gerenciar Bibliotecas.
Figura 32- Incluir biblioteca
30
2º Passo: Espere o gerenciador de biblioteca atualizar e pesquise por PubSubClient
conforme ilustrado abaixo, vamos instalar a versão de Nick O’Leary.
Figura 33- Instalar biblioteca
3º Passo: Monte o circuito para um LED e coloque-o no pino D1 – use a figura 23
como referencia.
4º Passo: Inclua as blibiotecas ESP e PubSub conforme ilustrado abaixo.
5º Passo: Defina a lâmpada como L1 no pino D1
31
6º Passo: Preencha com as informações da sua rede e as do servidor MQTT
O restante do código comentado se encontra em:
https://github.com/perabru/MQTT
4.3 Configurando o aplicativo MQTT Dash
1º Passo: Instale o aplicativo MQTT DASH, no link a seguir:
https://play.google.com/store/apps/details?id=net.routix.mqttdash
32
2º Passo: Preencha com as informações do servidor, conforme ilustrado
abaixo:
Figura 34 - Configuração MQTT Dash
3º Passo: Coloque usuário e senha:
Figura 35- Usuario e Senha
33
4º Passo: Clique no +
Figura 36 - Adicionando nova entrada
5º Passo: Adicione os sinais enviados e salve.
Figura 37-Adicionando novos botoes
34
6º Passo: Passe o código para a placa e teste o seu novo sistema!!
Top Related