Você está na página 1de 9

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA CELSO SUCKOW DA

FONSECA

Natalia Nunes Vieira

Vilson Luiz Pereira

Sistema web para acionamento de


persianas motorizadas

Prof. Orientador:
Carlos Otávio Schocair Mendes.

Rio de Janeiro,

domingo, 26 de agosto de 2018


Proposta
A proposta deste trabalho é a implementação de um sistema que, através do
protocolo MQTT, realize o controle das funções de uma persiana de forma remota.

Implementação
Para este trabalho utilizaremos, como controladora, o ESP8266 NodeMcu ESP-
12, onde estaremos utilizando o Arduino IDE para submeter a programação para a
EEPROM desta. Como forma de realizar as operações habituais, estaremos utilizando
uma protoboard e leds para simbolizar o perfeito funcionamento das funções básicas de
uma persiana.
Prévia 1
Módulo WiFi ESP8266 NodeMcu ESP-12
Encontramos a seguinte descrição para o equipamento, as quais representamos
na íntegra logo abaixo e vai servir como base para o desenvolvimento [1].

O módulo Wifi ESP8266 NodeMCU é uma placa de desenvolvimento que combina o


chip ESP8266, uma interface usb-serial e um regulador de tensão 3.3V. A programação
pode ser feita usando LUA ou a IDE do Arduino, utilizando a comunicação via cabo
micro-usb. Agora ficou mais fácil comprar o seu Módulo NodeMcu ESP-12E por um
ótimo preço e envio para todo o Brasil.

Especificações:
– ESP8266 ESP-12F (datasheet)
– 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
– Tensão de operação: 4,5 ~ 9V
– 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

Implementando a solução
Conforme orientação, realizamos os seguintes passos:
1. Em Preferências\configurações, fizemos referência à URL do
gerenciador de placas
http://arduino.esp8266.com/stable/package_esp8266com_index.json.
2. No menu sketch\incluir biblioteca foram instaladas as bibliotecas
PubSubClient, WiFiManager e ArduinoJson.

De modo a testar a funcionalidade da placa, carregamos um simples programa


que faz com que o led acenda e apague em intervalos definidos utilizando o pino
16(D0). Com o seguinte código retirado de [1]:
void setup() {
// Define o pino 13 como saida
pinMode(16, OUTPUT);}

void loop() {
digitalWrite(16, HIGH); // Acende o Led
delay(1000); // Aguarda 1 segundo
digitalWrite(16, LOW); // Apaga o Led
delay(1000); // Aguarda 1 segundo }
Entendemos que o led tem lógica invertida e que quando enviamos HIGH
para a controladora o led se apaga e LOW se acende. Dessa forma podemos comprovar
que a nossa proposta de carregar o código para a EEPROM do ESP é relativamente
fácil.
Realizamos a troca da porta do ESP que no tutorial inicial era apontada para a
13 (D7);
Prévia 2
Para essa prévia, o objetivo é a implementação de uma interface que possibilite
a atualização através do ar [OTA (Over the Air)], utilização do wifi manager para
configuração de conexão do ESP e o acendimento de leds utilizando um Broker MQTT
onde poderemos estar informando o tópico e as mensagens que desejamos passar
como comando para subscriber (Esp8266NODEMCU ) executar as ações nele
programada.

OTA

Como mencionado anteriormente, o OTA refere-se a vários métodos de


distribuição de novas atualização de software, definições de configurações e chaves
regulares de criptografia para dispositivos como telefones celulares, set-top box ou
equipamentos de comunicação de voz segura (encriptação de dois rádios). Uma
característica importante do OTA é que um local central pode enviar uma Atualização
para todos os usuários (Broadcast); que são incapazes de recusar, anular, ou alterar
essa Atualização, e aplica-se imediatamente a todos no Canal. Um usuário pode
"recusar" o OTA mas o "gerente do canal" também pode chutá-los para fora do Canal
(automaticamente).
Se faz necessária, na máquina que deseja interagir com o ESP através do OTA,
a intalação do Pyton.
Já existe um exemplo básico para a utilização do OTA quando procedemos a
inclusão das bibliotecas do OTA de uso bem simples e intuitivo que demonstra,
inclusive, com implementar criptografia para que haja mais segurança nas atualizações.
Ao enviar o código para o ESP já é possível fazer uso da funcionalidade e a partir
daí o ESP pode trabalhar StandAlone sem necessidade de estar conectado por cabo ao
pc em portas COM. É então disponibilizada na tela do ARDUINOIDE a utilização da rede
do esp como porta para envio dos sketches.
Em nosso caso optamos por utilizar a função para exigir que o usuário que está
tentando subir um sketch utilize uma senha de modo evitar problemas com segurança
(ArduinoOTA.setPassword("123456789");
Colocar uma imagem, essa abaixo é a do gabriel
WifiManager

A WiFiManager é uma biblioteca desenvolvida pelo Tzapu que visa a


descomplicar a implementação da configuração do WiFi do ESP8266 pela IDE Arduino
[4].
Instalação

Para instalar a biblioteca, basta abrir a IDE Arduino, com o pacote de instalação
do ESP, e seguir os passos [4]:
Menu Sketch -> Include Library ->Manage Libraries ->Buscar por WiFiManager
(ver que o desenvolvedor será o tzapu) ->Selecionar a última versão e clicar em Install

No código completo colocaremos as chamadas tanto do OTA quanto no


Wifimanage, mas já iremos aqui pontuar a biblioteca usada e as principais chamadas
do projeto.

Include da biblioteca:
#include <WiFiManager.h>

Inicializar localmente:
WiFiManager wifiManager;

Iniciar o uso da biblioteca passando o SSDI e uma senha:


wifiManager.autoConnect(“AutoConnectAP“,”Senha”);

Quando o sistema sobe e não existe nenhum AP configurado é aberto uma


interface para configuração demonstrada na figura abaixo. Para configurarmos a placa
para acessar um novo AP, no nosso projeto, devemos procurar a conexão
FELIPE_GABRIEL_GRUPO e acessarmos via browser o ip 192.168.4.1. Nesse projeto
acrescentamos uma senha para conexão. Depois que o acessamos podemos configurar
um ponto de acesso, onde o equipamento deixará de ser um AP para se tornar um
cliente de um AP.
No nosso trabalho para gerenciar melhor o WifiManager e ter a possibilidade de
testar a funcionalidade de conectar em outra rede, tivemos que criar uma função que
desconecte e limpe as configurações guardadas no WifiManager. No código chamamos
a função implementada reset_config para limpar os dados.
A primeira implementação do reset_config apresentou problemas na chamada
do ESP.reset(). Ocorreu um erro com o retorno wdt reset. Este erro foi resolvido com a
atualização do firmware como demonstrado no material [5].
Referências:
[1]<https://www.filipeflop.com/produto/modulo-wifi-esp8266-nodemcu-esp-12#tab-
description>
[2]https://www.filipeflop.com/blog/programar-nodemcu-com-ide-arduino/
[3] https://pt.wikipedia.org/wiki/Over-the-air