ESP8266 - Controla Servo Motor via Web
Este tutorial ensina como usar o ESP8266 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, precisa recarregar a página. Nada bom!
- Mas com o WebSocket, criamos uma conexão especial entre a página web e o ESP8266. Isso significa que podemos enviar o valor do ângulo ao ESP8266 em segundo plano, sem recarregar a página. Isso faz o servo se mover de forma fluida e em tempo real. Bem legal, não é?
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 ao ESP8266, o código do ESP8266... Saiba mais sobre eles nos links a seguir:
- Tutorial ESP8266 - Servo Motor
- Tutorial ESP8266 - WebSocket
Como Funciona
O código do ESP8266 cria um servidor web e um servidor WebSocket. Veja como funciona:
- Quando você digita o endereço IP do ESP8266 em um navegador, ele solicita a página web (Interface do Usuário) ao ESP8266.
- O servidor web do ESP8266 responde enviando o conteúdo da página web (HTML, CSS, JavaScript).
- O seu navegador 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 ESP8266.
- Depois que essa conexão WebSocket é estabelecida, se você girar o botão giratório na página web, o código JavaScript envia discretamente o valor do ângulo ao ESP8266 por essa conexão WebSocket, em segundo plano.
- O servidor WebSocket no ESP8266, 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 ESP8266

This image is created using Fritzing. Click to enlarge image
Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.
Para simplificar, o diagrama de ligação acima é usado para fins de teste ou aprendizado e para servo motor 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
Código ESP8266
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 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 ESP8266 na Arduino IDE, siga estes passos:
- Veja o tutorial como configurar o ambiente para o ESP8266 na Arduino IDE se esta for a sua primeira vez usando o ESP8266.
- Ligue os componentes como mostrado no diagrama.
- Conecte a placa ESP8266 ao seu computador usando um cabo USB.
- Abra a Arduino IDE no seu computador.
- Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva 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.
- 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:
- O código JavaScript da página web cria automaticamente a conexão WebSocket com o ESP8266.
- 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 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....)



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