ESP8266 - WebSocket
Neste tutorial, vamos aprender o que é o WebSocket, por que precisamos usá-lo para controlar o ESP8266 de forma fluida e como usar o WebSocket com o ESP8266. Em um exemplo prático, vamos aprender a criar um aplicativo de chat entre o navegador e o ESP8266, permitindo que você:
- Digite uma mensagem na janela de chat do navegador e a envie ao ESP8266. Você pode adaptar isso para controlar o ESP8266.
- Receba mensagens em tempo real do ESP8266. Você pode adaptar isso para monitorar o ESP8266 em tempo real.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
O que é o Websocket do ESP8266?
Agora você pode estar perguntando: "O que é o WebSocket?" É bem simples: o WebSocket é uma tecnologia que permite que um navegador converse diretamente com um servidor web em tempo real.
- Sem o WebSocket, você precisa atualizar a página web para obter novidades. Isso não é muito conveniente.
- Com o WebSocket, a página web e o servidor ficam conectados o tempo todo. Isso significa que eles podem trocar informações instantaneamente, sem precisar recarregar a página.
Você provavelmente já encontrou o WebSocket em aplicativos web do dia a dia, como jogos online, mensagens instantâneas e atualizações do mercado de ações.
Por que precisamos do WebSocket para controlar o ESP8266 de forma fluida?
Imagine que você quer controlar o seu carrinho de controle remoto usando uma interface web no celular ou no computador. Sem o WebSocket, toda vez que você quisesse mudar a direção ou a velocidade do carrinho, precisaria atualizar a página web. É como ter que apertar um botão de "recarregar" cada vez que você quer que o seu comando chegue ao carrinho.
Agora, com o WebSocket, é como ter uma conexão contínua e direta entre o seu celular ou computador e o carrinho. Você não precisa mais atualizar a página toda vez que quer guiar o carrinho ou ajustar a velocidade. É como se o carrinho estivesse sempre ouvindo os seus comandos em tempo real, sem atrasos causados pelo recarregamento constante da página.
Em geral, o WebSocket permite que você:
- Envie dados do navegador para o ESP8266 sem recarregar a página web.
- Envie dados do ESP8266 para o navegador sem recarregar a página web.
Isso permite a comunicação nos dois sentidos em tempo real.
Benefícios do WebSocket com o ESP8266:
- Controle em Tempo Real: O WebSocket permite a comunicação instantânea com o ESP8266, garantindo respostas rápidas aos comandos para uma experiência de uso fluida.
- Conexão Persistente: Mantenha um vínculo contínuo sem atualizar a página de controle, criando uma linha de comunicação sempre pronta para instruções imediatas.
- Eficiência: Tenha respostas rápidas sem a necessidade de recarregar a página constantemente, melhorando a satisfação geral e a eficiência.
Chat Web com o ESP8266 via WebSocket
O conteúdo da página web (HTML, CSS, JavaScript) fica armazenado separadamente em um arquivo index.h. Assim, teremos dois arquivos de código na Arduino IDE:
- Um arquivo .ino que é o código do ESP8266, que cria um servidor web e um servidor WebSocket
- Um arquivo .h, que contém o conteúdo da página web.
Passos Rápidos
- Se esta for a primeira vez que você usa o ESP8266, veja como configurar o ambiente para o ESP8266 na Arduino IDE.
- Conecte a placa ESP8266 ao seu PC por um cabo micro USB
- Abra a Arduino IDE no seu PC.
- Selecione a placa ESP8266 certa (por exemplo, NodeMCU 1.0 (ESP-12E Module)) e a porta COM.
- Abra o Library Manager clicando no ícone Library Manager na barra de navegação à esquerda da Arduino IDE.
- Pesquise “WebSockets” e encontre o WebSockets criado por Markus Sattler.
- Clique no botão Install para instalar a biblioteca WebSockets.

- Na Arduino IDE, crie um novo sketch e dê um nome a ele, por exemplo, newbiely.com.ino
- Copie o código abaixo e abra-o com a Arduino IDE
- Crie o arquivo index.h na Arduino IDE da seguinte forma:
- Clique no botão logo abaixo do ícone do Serial Monitor e escolha New Tab, ou use as teclas Ctrl+Shift+N.
- Dê ao arquivo o nome index.h e clique no botão OK
- Copie o código abaixo e cole no index.h.
- Modifique as informações de WiFi (SSID e senha) no código para corresponder às credenciais da sua própria rede.
- Agora você tem o código em dois arquivos: newbiely.com.ino e index.h
- Clique no botão Upload da Arduino IDE para fazer upload do código para o ESP8266.
- Abra o Serial Monitor
- Confira o resultado no Serial Monitor.
- Anote o endereço IP exibido e digite esse endereço na barra de endereços de um navegador no seu celular ou PC.
- Você verá a página web como abaixo:
- Clique no botão CONNECT para conectar a página web ao ESP8266 via WebSocket.
- Digite algumas palavras e envie-as ao ESP8266.
- Você verá a resposta do ESP8266.
- Se você modificar o conteúdo HTML no index.h e não mexer em nada no arquivo newbiely.com.ino, quando você compilar e fizer upload do código para o ESP8266, a Arduino IDE não vai atualizar o conteúdo HTML.
- Para fazer a Arduino IDE atualizar o conteúdo HTML nesse caso, faça uma alteração no arquivo newbiely.com.ino (por exemplo, adicionar uma linha vazia, adicionar um comentário....)




※ Nota:
Explicação do Código Linha por Linha
O código do ESP8266 acima contém uma explicação linha por linha. Por favor, leia os comentários no código!
Como o Sistema Funciona
O código do ESP8266 funciona criando um servidor web e um servidor WebSocket. O processo acontece assim:
- Quando você digita o endereço IP do ESP8266 em um navegador, é feita uma requisição da página web (Interface do Usuário) ao ESP8266.
- O servidor web do ESP8266 responde transmitindo o conteúdo da página web (HTML, CSS, JavaScript).
- Em seguida, o seu navegador exibe a página web.
- Quando você clica no botão CONNECT, o código JavaScript embutido na página web estabelece uma conexão WebSocket com o servidor WebSocket no ESP8266.
- Com a conexão WebSocket estabelecida, quando você digita algo e clica no botão SEND, o código JavaScript envia esse texto ao ESP8266 pela conexão WebSocket, em segundo plano.
- Ao receber o valor do ângulo, o servidor WebSocket envia uma resposta de volta à página web.
Você pode conhecer outros exemplos de WebSocket com o ESP8266 abaixo: