Arduino Nano ESP32 - WebSocket
Neste tutorial, vamos aprender o que é o WebSocket, por que precisamos usá-lo para controlar o ESP32 de forma fluida e como usar o WebSocket com o Arduino Nano ESP32. Em um exemplo prático, vamos aprender a criar uma aplicação de chat entre o navegador web e o ESP32, permitindo que você:
- Digite uma mensagem na janela de chat no navegador web e a envie para o Arduino Nano ESP32. Você pode adaptar isso para controlar o Arduino Nano ESP32.
- Receba mensagens em tempo real do Arduino Nano ESP32. Você pode adaptar isso para monitorar o Arduino Nano ESP32 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 Arduino Nano ESP32?
Agora, você pode estar se perguntando: "O que é o WebSocket?" É bem simples: o WebSocket é uma tecnologia que permite que um navegador web converse diretamente com um servidor web em tempo real.
- Sem o WebSocket, você precisa atualizar a página web para obter atualizações. Isso não é muito conveniente.
- Com o WebSocket, a página web e o servidor permanecem conectados o tempo todo. Isso significa que eles podem compartilhar informações instantaneamente, sem precisar recarregar a página.
Você provavelmente já encontrou o WebSocket em aplicações 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 ESP32 de forma fluida?
Imagine que você quer controlar seu carro de controle remoto usando uma interface web no seu celular ou computador. Sem o WebSocket, toda vez que você quisesse mudar a direção ou a velocidade do carro, você precisaria atualizar a página web. É como ter que apertar um botão de "recarregar" toda vez que você quer que seu comando chegue ao carro.
Agora, com o WebSocket, é como ter uma conexão contínua e direta entre o seu celular ou computador e o carro. Você não precisa mais atualizar a página toda vez que quiser guiar o carro ou ajustar a velocidade dele. É como se o carro estivesse sempre ouvindo 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 web para o Arduino Nano ESP32 sem recarregar a página web.
- Envie dados do Arduino Nano ESP32 para o navegador web sem recarregar a página web.
Isso permite a comunicação bidirecional em tempo real.
Benefícios do WebSocket com o ESP32:
- Controle em Tempo Real: O WebSocket permite a comunicação instantânea com o ESP32, garantindo respostas rápidas aos comandos para uma experiência de usuário 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: Experimente respostas rápidas sem a necessidade de recarregar a página constantemente, melhorando a satisfação geral do usuário e a eficiência.
Chat Web com o Arduino Nano ESP32 via WebSocket
O conteúdo da página web (HTML, CSS, JavaScript) é armazenado separadamente em um arquivo index.h. Portanto, teremos dois arquivos de código na Arduino IDE:
- Um arquivo .ino que é o código do Arduino Nano ESP32, 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 é a primeira vez que você usa o Arduino Nano ESP32, veja como configurar o ambiente do Arduino Nano ESP32 na Arduino IDE.
- Conecte a placa Arduino Nano ESP32 ao seu PC por meio de um cabo USB
- Abra a Arduino IDE no seu PC.
- Selecione a placa Arduino Nano ESP32 correta (por exemplo, Arduino Nano ESP32 e a porta COM.
- Abra o Library Manager clicando no ícone Library Manager na barra de navegação à esquerda da Arduino IDE.
- Pesquise por “DIYables ESP32 WebServer” e encontre a biblioteca Web Server criada pela DIYables.
- Clique no botão Install para instalar a biblioteca Web Server.

- 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 na 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-o no index.h.
- Agora você tem o código em dois arquivos: newbiely.com.ino e index.h
- Clique no botão Upload na Arduino IDE para fazer o upload do código para o Arduino Nano ESP32.
- Abra o Serial Monitor
- Veja o resultado no Serial Monitor.
- Anote o endereço IP exibido e digite esse endereço na barra de endereços de um navegador web 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 Arduino Nano ESP32 via WebSocket.
- Digite algumas palavras e envie-as para o Arduino Nano ESP32.
- Você verá a resposta do Arduino Nano ESP32.
- 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 o upload do código para o ESP32, a Arduino IDE não 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 Arduino Nano ESP32 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 Arduino Nano ESP32 funciona criando tanto um servidor web quanto um servidor WebSocket. O processo se desenrola da seguinte forma:
- Quando você digita o endereço IP do ESP32 em um navegador web, é feita uma requisição da página web (Interface do Usuário) ao Arduino Nano ESP32.
- O servidor web do ESP32 responde transmitindo o conteúdo da página web (HTML, CSS, JavaScript).
- Em seguida, seu navegador web 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 Arduino Nano ESP32.
- Com a conexão WebSocket estabelecida, quando você digita algo e clica no botão SEND, o código JavaScript envia esse texto para o Arduino Nano ESP32 por meio da conexão WebSocket, em segundo plano.
- Ao receber o valor do ângulo, o servidor WebSocket envia uma resposta de volta para a página web.
Você pode aprender outros exemplos de WebSocket com o Arduino Nano ESP32 abaixo: