Este guia mostra como usar o ESP32 para controlar um carro robô sem fio, a partir de um navegador no seu celular ou PC, usando WiFi. O controle é feito por uma interface web gráfica que usa o WebSocket, o que permite um controle suave e dinâmico do carro.
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
Sobre o Carro RC 2WD e o WebSocket
Por que usar o WebSocket? Veja o motivo:
Sem o WebSocket, mudar a direção do carro exigiria recarregar a página toda vez. Nada ideal!
Com o WebSocket, estabelecemos uma conexão especial entre a página web e o ESP32. Isso permite enviar comandos ao ESP32 em segundo plano, sem precisar recarregar a página. O resultado? O carro robô se move de forma suave e em tempo real. Bem legal, não é?
Resumindo, a conexão WebSocket permite o controle suave e em tempo real do robô.
Temos tutoriais específicos sobre o carro RC 2WD e o 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:
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ê pressionar/soltar os botões na página web, o código JavaScript envia os comandos ao ESP32 discretamente, em segundo plano, por essa conexão WebSocket.
O servidor WebSocket do ESP32, ao receber os comandos, controla o carro robô de acordo com eles.
A tabela abaixo mostra a lista de comandos que a página web envia ao ESP32 conforme as ações do usuário:
Ação do Usuário
Botão
Comando
Ação do Carro
PRESSIONAR
UP
1
MOVER PARA FRENTE
PRESSIONAR
DOWN
2
MOVER PARA TRÁS
PRESSIONAR
LEFT
4
VIRAR À ESQUERDA
PRESSIONAR
RIGHT
8
VIRAR À DIREITA
PRESSIONAR
STOP
0
PARAR
SOLTAR
UP
0
PARAR
SOLTAR
DOWN
0
PARAR
SOLTAR
LEFT
0
PARAR
SOLTAR
RIGHT
0
PARAR
SOLTAR
STOP
0
PARAR
Diagrama de Ligação entre o Carro RC 2WD e o ESP32
O diagrama abaixo mostra como conectar o ESP32, o driver de motor L9110S e os dois motores DC, usando uma protoboard para compartilhar as linhas comuns de alimentação e GND:
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.
Observação: O diagrama acima mostra a ligação correta. Na prática, conectar vários fios (como as linhas compartilhadas de VCC e GND) no mesmo furo do conector de pinos do ESP32 não é fácil. Uma solução prática é usar uma placa breakout com bornes de parafuso para ESP32 — vários fios podem ser presos no mesmo borne de parafuso, ou um fio no parafuso e outro no pino ao lado.
This image is created using Fritzing. Click to enlarge image
O módulo L9110S (que serve como driver de motor) alimenta os motores diretamente pelos pinos VCC e GND e não tem regulador de 5V integrado. Isso permite alimentar tudo com uma única fonte – quatro pilhas de 1,5V, totalizando 6V. Veja como:
Conecte a bateria de 6V aos pinos VCC e GND do módulo L9110S para alimentar os motores.
Conecte a mesma bateria de 6V aos pinos Vin e GND do ESP32 para alimentar a placa.
Verifique se o módulo L9110S e o ESP32 compartilham um GND comum.
Ao contrário do L298N, o L9110S não tem jumpers de habilitação ENA/ENB nem borne de parafuso de 12V, então a ligação é mais simples.
Como o carro RC 2WD tem uma chave liga/desliga, você pode, se quiser, conectar a bateria por meio da chave para poder ligar/desligar a energia do carro. Se quiser simplificar, é só ignorar a chave.
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 carro
Um arquivo .h, que contém o conteúdo da página web.
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.
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Connecting to WiFi...
Connected to WiFi
ESP32 Web Server's IP address IP address: 192.168.0.2
Ln 11, Col 1
ESP32 Dev Module on COM15
2
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 carro para virar à esquerda/direita e andar para frente/para trás pela interface web.
Para economizar a memória do ESP32, as imagens dos botões de controle 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:
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....)
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!
Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!