34
1 Iniciando IoT com ESP8266

Iniciando IoT com ESP8266 - Univap

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Iniciando IoT com ESP8266 - Univap

1

Iniciando IoT com ESP8266

Page 2: Iniciando IoT com ESP8266 - Univap

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

Page 3: Iniciando IoT com ESP8266 - Univap

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.

Page 4: Iniciando IoT com ESP8266 - Univap

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

Page 5: Iniciando IoT com ESP8266 - Univap

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

Page 6: Iniciando IoT com ESP8266 - Univap

6

A instalação é a clássica NEXT -> NEXT -> FINISH e ao finalizar você será

apresentada a tela inicial

Figura 3- Tela inicial Arduino

Page 7: Iniciando IoT com ESP8266 - Univap

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

Page 8: Iniciando IoT com ESP8266 - Univap

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

Page 9: Iniciando IoT com ESP8266 - Univap

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

Page 10: Iniciando IoT com ESP8266 - Univap

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

Page 11: Iniciando IoT com ESP8266 - Univap

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

Page 12: Iniciando IoT com ESP8266 - Univap

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

Page 13: Iniciando IoT com ESP8266 - Univap

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

Page 14: Iniciando IoT com ESP8266 - Univap

14

O código para o exemplo acima se encontra disponível em:

https://github.com/perabru/PiscaLedESP8266

Page 15: Iniciando IoT com ESP8266 - Univap

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.

Page 16: Iniciando IoT com ESP8266 - Univap

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.

Page 17: Iniciando IoT com ESP8266 - Univap

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

Page 18: Iniciando IoT com ESP8266 - Univap

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:

Page 19: Iniciando IoT com ESP8266 - Univap

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

Page 20: Iniciando IoT com ESP8266 - Univap

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

Page 21: Iniciando IoT com ESP8266 - Univap

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

Page 22: Iniciando IoT com ESP8266 - Univap

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

Page 23: Iniciando IoT com ESP8266 - Univap

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.

Page 24: Iniciando IoT com ESP8266 - Univap

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.

Page 25: Iniciando IoT com ESP8266 - Univap

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

Page 26: Iniciando IoT com ESP8266 - Univap

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

Page 27: Iniciando IoT com ESP8266 - Univap

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

Page 28: Iniciando IoT com ESP8266 - Univap

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

Page 29: Iniciando IoT com ESP8266 - Univap

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

Page 30: Iniciando IoT com ESP8266 - Univap

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

Page 31: Iniciando IoT com ESP8266 - Univap

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

Page 32: Iniciando IoT com ESP8266 - Univap

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

Page 33: Iniciando IoT com ESP8266 - Univap

33

4º Passo: Clique no +

Figura 36 - Adicionando nova entrada

5º Passo: Adicione os sinais enviados e salve.

Figura 37-Adicionando novos botoes

Page 34: Iniciando IoT com ESP8266 - Univap

34

6º Passo: Passe o código para a placa e teste o seu novo sistema!!