Arduino Nano ESP32 - Controla Servo Motor via Web
Este tutorial ensina como usar o Arduino Nano ESP32 para controlar um servo motor pela web, a partir de um navegador no seu celular ou PC. Vamos usar algo chamado WebSocket para controlar o servo motor de forma fluida e dinâmica por meio de uma interface de usuário web gráfica.

Agora, por que usar o WebSocket? Veja a ideia:
- Sem o WebSocket, toda vez que você quiser mudar o ângulo do servo, você precisa recarregar a página. Nada bom!
- Mas com o WebSocket, criamos uma conexão especial entre a página web e o Arduino Nano ESP32. Isso significa que podemos enviar o valor do ângulo para o Arduino Nano ESP32 em segundo plano, sem recarregar a página. Isso faz o servo se mover de forma fluida e em tempo real. Bem legal, né?
Vamos começar!
Hardware Necessário
Or you can buy the following kits:
| 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 contém 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 Arduino Nano ESP32... Saiba mais sobre eles nos links a seguir:
- Tutorial Arduino Nano ESP32 - Servo Motor
- Tutorial Arduino Nano ESP32 - WebSocket
Como Funciona
O código do Arduino Nano ESP32 cria tanto um servidor web quanto um servidor WebSocket. Veja como funciona:
- Quando você digita o endereço IP do ESP32 em um navegador web, ele solicita a página web (Interface do Usuário) ao Arduino Nano ESP32.
- O servidor web do ESP32 responde enviando o conteúdo da página web (HTML, CSS, JavaScript).
- Seu navegador web então exibe a página web.
- O código JavaScript dentro da página web estabelece uma conexão WebSocket com o servidor WebSocket no Arduino Nano ESP32.
- Depois que essa conexão WebSocket é estabelecida, se você girar o botão de controle na página web, o código JavaScript envia discretamente o valor do ângulo para o Arduino Nano ESP32 por meio dessa conexão WebSocket, em segundo plano.
- O servidor WebSocket no ESP32, ao receber o valor do ângulo, controla o servo motor de acordo.
Resumindo, a conexão WebSocket permite o controle fluido e em tempo real do ângulo do servo motor.
Diagrama de Ligação entre o Servo Motor e o Arduino Nano ESP32
- Quando você alimenta a placa Arduino Nano ESP32 pela porta USB.

This image is created using Fritzing. Click to enlarge image
- Quando você alimenta a placa Arduino Nano ESP32 pelo pino Vin.

This image is created using Fritzing. Click to enlarge image
※ Nota:
Ao alimentar a placa Arduino Nano ESP32 pela porta USB, você NÃO deve alimentar o servo motor pelo pino Vin pino VBUS. Se você alimentar o servo motor por esse pino, sua placa pode queimar.
Código Arduino Nano ESP32
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, e controla o servo motor
- Um arquivo .h, que contém o conteúdo da página web.
Passos Rápidos
Para começar com o Arduino Nano ESP32, siga estes passos:
- Se você é novo no Arduino Nano ESP32, consulte o tutorial sobre como configurar o ambiente para o Arduino Nano ESP32 na Arduino IDE.
- Faça a ligação dos componentes de acordo com o diagrama fornecido.
- Conecte a placa Arduino Nano ESP32 ao seu computador usando um cabo USB.
- Abra a Arduino IDE no seu computador.
- Selecione a placa Arduino Nano ESP32 e a porta COM correspondente.
- 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.

- 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 o Arduino Nano ESP32.

- 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:
- O código JavaScript da página web cria automaticamente a conexão WebSocket com o Arduino Nano 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, 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....)



Para economizar a memória do ESP32, as imagens do servo motor NÃO são armazenadas no Arduino Nano ESP32. Em vez disso, 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 Arduino Nano ESP32 acima contém uma explicação linha por linha. Por favor, leia os comentários no código!