ESP32 - Controla Servo Motor pela Web
Este tutorial ensina como usar o ESP32 para controlar um servo motor pela web, a partir de um navegador no seu celular ou PC. Vamos usar o WebSocket para controlar o servo motor de forma suave e dinâmica por meio de uma interface web gráfica.
O vídeo abaixo é uma demonstração:
Por que usar o WebSocket? Veja a ideia:
- Sem o WebSocket, toda vez que você quer mudar o ângulo do servo, precisa recarregar a página. Nada bom!
- Com o WebSocket, criamos uma conexão especial entre a página web e o ESP32. Isso significa que podemos enviar o valor do ângulo ao ESP32 em segundo plano, sem recarregar a página. Assim o servo se move de forma suave e em tempo real. Bem legal, não é?
Vamos começar!
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Buy Note: For controlling multiple servo motors, use the PCA9685 16 Channel PWM Servo Driver Module to save MCU pins and simplify wiring.
Sobre o Servo Motor e o WebSocket
Temos tutoriais específicos sobre servo motor e WebSocket. Cada tutorial traz informações detalhadas e instruções passo a passo sobre a pinagem do hardware, o princípio de funcionamento, a ligação com o ESP32, o código do ESP32... Saiba mais nos links a seguir:
- Tutorial ESP32 - Servo Motor
- Tutorial ESP32 - WebSocket
Como Funciona
O código do ESP32 cria um servidor web e também um servidor WebSocket. Veja como funciona:
- Quando você digita o endereço IP do ESP32 em um navegador, ele solicita ao ESP32 a página web (interface de usuário).
- O servidor web do ESP32 responde enviando o conteúdo da página (HTML, CSS, JavaScript).
- Em seguida, o navegador exibe a página web.
- O código JavaScript da página estabelece uma conexão WebSocket com o servidor WebSocket do ESP32.
- Depois que a conexão WebSocket é estabelecida, se você girar o botão na página web, o código JavaScript envia o valor do ângulo ao ESP32 discretamente, em segundo plano, por essa conexão WebSocket.
- O servidor WebSocket do ESP32, ao receber o valor do ângulo, controla o servo motor de acordo com ele.
Resumindo, a conexão WebSocket permite o controle suave e em tempo real do ângulo do servo motor.
Diagrama de Ligação entre o Servo Motor e o ESP32

This image is created using Fritzing. Click to enlarge image
Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.
Para simplificar, o diagrama de ligação acima serve para testes ou aprendizado e para servo motores de baixo torque. Na prática, recomendamos fortemente usar uma fonte de alimentação externa para o servo motor. O diagrama de ligação abaixo mostra como conectar o servo motor a uma fonte de alimentação externa.

This image is created using Fritzing. Click to enlarge image
A imagem abaixo mostra a ligação real entre o servo motor e o ESP32.

Código ESP32
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 no Arduino IDE:
- Um arquivo .ino, que é o código do ESP32, o qual cria um servidor web e um servidor WebSocket e controla o servo motor
- 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 ESP32, veja como configurar o ambiente do ESP32 no Arduino IDE.
- Faça a ligação como na imagem acima.
- Conecte a placa ESP32 ao seu PC com um cabo micro USB
- Abra o Arduino IDE no seu PC.
- Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
- Abra o Library Manager clicando no ícone Library Manager na barra de navegação à esquerda do Arduino IDE.
- Pesquise “DIYables ESP32 WebServer” e encontre a biblioteca Web Server criada pela DIYables.
- Clique no botão Install para instalar a biblioteca Web Server.

- Digite ESP32Servo na caixa de pesquisa e procure a biblioteca de servo de Kevin Harrington,John K. Bennett.
- Clique no botão Install para instalar a biblioteca de servo motor para ESP32.

- No Arduino IDE, crie um novo sketch. Dê um nome a ele, por exemplo, newbiely.com.ino
- Copie o código abaixo e abra no Arduino IDE
- Modifique as informações de WiFi (SSID e senha) no código para corresponder às credenciais da sua rede.
- Crie o arquivo index.h no Arduino IDE assim:
- 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.
- Agora você tem o código em dois arquivos: newbiely.com.ino e index.h
- Clique no botão Upload do Arduino IDE para fazer upload do código para o ESP32
- 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:
- O código JavaScript da página web cria automaticamente a conexão WebSocket com o ESP32.
- Agora você pode controlar o ângulo do servo motor pela interface web.
- Se você modificar o conteúdo HTML no index.h e não mexer em nada no arquivo newbiely.com.ino, ao compilar e fazer upload do código para o ESP32, o Arduino IDE não vai atualizar o conteúdo HTML.
- Para fazer o Arduino IDE atualizar o conteúdo HTML nesse caso, faça uma alteração no arquivo newbiely.com.ino (por exemplo, adicione uma linha vazia ou um comentário....)



Para economizar a memória do ESP32, as imagens do servo motor NÃO ficam armazenadas no ESP32. Elas ficam armazenadas na internet, então seu celular ou PC precisa ter conexão com a internet para carregar as imagens da página web de controle.
※ Nota:
Explicação do Código Linha por Linha
O código do ESP32 acima contém uma explicação linha por linha. Leia os comentários no código!