Controle o ESP8266 pelo smartphone usando Blynk
No post anterior sobre o Kit Módulo Wifi ESP8266 com anel de led RGB, mostramos como controlar o módulo de forma simples, criando um programa que alterava a cor dos leds em um certo intervalo de tempo. No post de hoje, vamos juntar o ESP8266 com o Blynk e controlar esse mesmo anel de leds pelo smartphone.
O Blynk é um aplicativo que permite o controle não só do ESP8266 mas também de placas como Arduino, Raspberry Pi, ESP32, Digistump, Wemos e diversos outros dispositivos usando Wifi ou Bluetooth.
Nele você pode criar por exemplo botões, sliders, timers e montar eficientes projetos de IoT e automação residencial. Confira aqui no blog outros posts que já fizemos usando Blynk.
O módulo ESP8266 ESP-01 com Neopixel
Como vimos no post anterior, o kit é composto por um cabo de conexão de 3 vias (que exige soldagem no anel de led), um anel de led com 16 leds endereçáveis WS2812 (muitas vezes também chamado de Neopixel), uma placa de controle e um módulo ESP-01S, que tem 1 MB de memória.
Para usar o conjunto você precisa soldar os fios no anel de leds, na seguinte sequência:
- Fio Vermelho no pino 5V
- Preto no GND
- Amarelo no pino DI
O pino D0 do anel de leds fica sem conexão, ok? Feita a soldagem dos fios, basta encaixar o cabo na placa de controle e alimentar o módulo com uma tensão entre 3.7 e 5 VDC depois que programarmos o ESP-01S.
Programando o ESP-01 na IDE Arduino
Para programar o ESP-01 eu usei este Adaptador USB ESP-Link para ESP8266 ESP-01, que é muito prático e não exige instalação de botões e outras conexões para colocar o ESP-01 em modo de programação: basta encaixar o ESP-01 no adaptador, colocar o adaptador na porta USB do computador e ele será reconhecido com uma porta COM/Serial dentro da IDE. É muito fácil de usar.
Para fazer com que a IDE do Arduino reconheça o ESP8266 ESP-01, acesse o menu Arquivo -> Preferências e coloque a seguinte URL no campo URLs Adicionais para Gerenciadores de Placas:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Isso faz com que as placas da linha ESP8266 estejam disponíveis no menu Ferramentas -> Placas. Ali, basta selecionar a opção Generic ESP8266 Module:
Com a placa configurada na IDE, vamos para a instalação das bibliotecas necessárias.
Bibliotecas Neopixel e Blynk
Para este projeto vamos usar as bibliotecas Neopixelbus e Blynk, instaladas a partir da IDE do Arduino.
Acesse o menu Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas. Dentro do Gerenciador de Bibliotecas, procure por Neopixelbus e clique em Instalar:
Faça a mesma coisa com a biblioteca Blynk:
Dúvidas na instalação da biblioteca? Confira o post Como instalar uma biblioteca na IDE Arduino.
Instalando e configurando o Blynk
Para controlar o anel de led RGB por WiFi usando um smartphone, vamos instalar o app Blynk, disponível neste link ou na loja de aplicativos do seu celular.
Instale o aplicativo e ao abrir ele vai solicitar um login ou a criação de uma conta usando um endereço de email e uma senha. Feito isso, é apresentada a tela inicial do Blynk, onde você vai escolher a opção New Project. Na tela seguinte, escolha um nome para o seu projeto e também o tipo de dispositivo que vai usar.
Para o nosso kit de ESP-01 com Neopixel, escolha ESP8266 e conexão por WiFi, como na imagem abaixo:
Ao selecionar Create, será apresentada uma tela informando que um token de autorização foi enviado para o seu endereço de email. Esse token nós vamos usar dentro do programa do ESP, para que este faça a comunicação com o Blynk.
Agora na tela de layout, vamos selecionar o widget que enviará o comando para a mudanças das cores do anel de leds. Selecione o botão de + (mais) na parte superior do aplicativo e em seguida procure e selecione o widget zeRGBa, que será mostrado na tela do projeto:
Precisamos agora configurar o zeRGBa para enviar os comandos corretos para o ESP8266. Selecione o widget e preencha a tela de configuração mudando a saída (Output) para Merge e no lugar de PIN selecione V1. Sua tela deve ficar como na primeira imagem. Para “rodar” o programa, selecione o ícone de “Play” no canto superior direito do projeto:
Com isso finalizamos a configuração do Blynk. Vamos para a última etapa, que é carregar o programa no ESP8266 ESP-01.
Programa controle ESP8266 e Blynk
O programa abaixo faz a comunicação entre o ESP-01 e o Blynk usando aquele token de autenticação que você recebeu por email, lembra?
O token vai na linha 8 do programa. Nas linhas 11 e 12 você deve colocar o nome e senha da sua rede wifi para que o ESP faça a conexão com a internet.
//Programa: Led enderecavel com ESP8266 ESP-01 e Blynk //Autor: Arduino e Cia #include <NeoPixelBus.h> #include <BlynkSimpleEsp8266.h> //Coloque abaixo o token de autorizacao recebido por email char auth[] = "A2k3CLPjBSNV_OZ5sR22I33N55kR7nxK"; //Preencha com os dados da sua rede wifi char ssid[] = "Nome da rede wifi"; char pass[] = "Senha da rede wifi"; //Numero de leds enderecaveis no anel de leds const uint16_t PixelCount = 16; //Pino de conexao (ignorado quando se usa ESP8266) const uint8_t PixelPin = 2; #define colorSaturation 128 //Modo DMA para ESP8266 - Usa GPIO3 //NeoPixelBus<NeoGrbFeature, NeoEsp8266Dma800KbpsMethod> strip(PixelCount, PixelPin); //NeoPixelBus<NeoRgbFeature, NeoEsp8266Dma400KbpsMethod> strip(PixelCount, PixelPin); //Modo UART para ESP8266 - Usa GPIO2 NeoPixelBus<NeoGrbFeature, NeoEsp8266Uart1800KbpsMethod> strip(PixelCount, PixelPin); //NeoPixelBus<NeoRgbFeature, NeoEsp8266Uart1400KbpsMethod> strip(PixelCount, PixelPin); RgbColor black(0); void setup() { Serial.begin(115200); //Inicializa a comunicacao com o Blynk Blynk.begin(auth, ssid, pass); //Inicializa os leds strip.Begin(); strip.Show(); } BLYNK_WRITE(V1) { //Atualiza as variaveis r, g e b de acordo com os valores recebidos int r = param[0].asInt(); int g = param[1].asInt(); int b = param[2].asInt(); RgbColor varios(r, g, b); for (int i = 0; i <=PixelCount ; i++) { strip.SetPixelColor(i, varios); strip.Show(); delay(50); } } void loop() { Blynk.run(); }
Agora basta você encaixar o ESP-01 no módulo, ligar a alimentação nos pinos Vcc e GND e em instantes será feita a conexão entre o ESP8266 e o Blynk. Ah, os dispositivos não precisam estar na mesma rede. Você pode ter o seu ESP conectado na rede Wifi de casa e o smartphone conectado na rede 4G por exemplo, e irá funcionar da mesma maneira.
Gostou? Confira outros posts usando ESP8266 aqui mesmo no Arduino e Cia!