Exemplo ESP32 WebJoystick - Tutorial de Controle com Joystick Virtual
Visão Geral
O exemplo WebJoystick cria uma interface de joystick virtual acessível de qualquer navegador web. Projetado para a plataforma educacional ESP32, com recursos avançados de robótica, controle de motores embutido e integração perfeita com módulos educacionais de robótica. Perfeito para controlar robôs, veículos ou qualquer sistema que precise de entrada de posição 2D.

Recursos
- Joystick Virtual: Controle interativo de joystick pela interface web
- Coordenadas em Tempo Real: Valores X/Y de -100 a +100 para controle preciso
- Suporte a Toque e Mouse: Funciona em desktop, tablet e celular
- Retorno Automático Configurável: Opção para o joystick voltar ao centro quando solto
- Controle de Sensibilidade: Sensibilidade ajustável para evitar atualizações excessivas
- Feedback Visual: Exibição da posição e dos valores de coordenadas em tempo real
- Comunicação WebSocket: Resposta instantânea sem recarregar a página
- Posição Central: Indicador claro da posição central para controle neutro
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) |
Instruções de Configuração
Passos Rápidos
Siga estas instruções passo a passo:
- Se esta é a sua primeira vez usando o ESP32, consulte o tutorial sobre como configurar o ambiente para ESP32 na Arduino IDE.
- Conecte a placa ESP32 ao seu computador usando um cabo USB.
- Abra a Arduino IDE no seu computador.
- Selecione a placa ESP32 apropriada (por exemplo, ESP32 Dev Module) e a porta COM.
- Vá até o ícone Libraries na barra lateral esquerda da Arduino IDE.
- Pesquise "DIYables ESP32 WebApps" e encontre a biblioteca DIYables ESP32 WebApps da DIYables
- Clique no botão Install para instalar a biblioteca.

- Você será solicitado a instalar algumas outras bibliotecas de dependência
- Clique no botão Install All para instalar todas as dependências da biblioteca.

- Na Arduino IDE, vá em File Examples DIYables ESP32 WebApps WebJoystick, ou copie o código acima e cole no editor da Arduino IDE
- Configure as credenciais de WiFi no código atualizando estas linhas:
- Clique no botão Upload na Arduino IDE para carregar o código no ESP32
- Abra o Serial Monitor
- Veja o resultado no Serial Monitor. Ele será parecido com o abaixo
- Se você não vir nada, reinicie a placa ESP32.
- 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.
- Exemplo: http://192.168.0.2
- Você verá a home page como na imagem abaixo:

- Clique no link Web Joystick e você verá a interface do app Web Joystick como abaixo:

- Você também pode acessar a página diretamente pelo endereço IP seguido de /web-joystick. Por exemplo: http://192.168.0.2/web-joystick
- Experimente controlar o joystick virtual clicando e arrastando na área do joystick e observe os valores das coordenadas X/Y (-100 a +100) no Serial Monitor.
Personalização Criativa - Adapte o Código ao Seu Projeto
2. Configure os Ajustes do Joystick
O joystick pode ser configurado com diferentes parâmetros:
Configuração Básica
Configuração Avançada
Como Usar o Joystick
Controles da Interface Web
A interface do joystick oferece:
- Área do Joystick: Área de controle circular para entrada por toque/mouse
- Indicador de Posição: Mostra a posição atual do joystick
- Exibição de Coordenadas: Valores X/Y em tempo real (-100 a +100)
- Ponto Central: Referência visual para a posição neutra
Operando o Joystick
Desktop (Controle com Mouse)
- Clicar e Arrastar: Clique no joystick e arraste para mover
- Soltar: O joystick volta ao centro (se autoReturn=true)
- Clicar na Posição: Clique direto para definir a posição do joystick
Celular/Tablet (Controle por Toque)
- Tocar e Arrastar: Toque no joystick e arraste o dedo para mover
- Multitoque: Um único dedo para controle preciso
- Soltar: Retorno automático ao centro (se ativado)
Sistema de Coordenadas
O joystick fornece coordenadas em um sistema cartesiano padrão:
- Eixo X: -100 (totalmente à esquerda) a +100 (totalmente à direita)
- Eixo Y: -100 (totalmente para baixo) a +100 (totalmente para cima)
- Centro: X=0, Y=0 (posição neutra)
- Cantos: As posições diagonais fornecem valores X/Y combinados
Exemplos de Programação
Tratador Básico de Joystick
Exemplo de Controle de Motor
Exemplo de Controle de Servo
Indicador de Posição com LEDs
Configuração Avançada
Alterações de Configuração em Tempo de Execução
Implementação de Zona Morta
Rampa de Velocidade
Exemplos de Integração de Hardware
Controle de Carrinho Robô
Controle de Gimbal de Câmera
Controle de Cor de LED RGB
Solução de Problemas
Problemas Comuns
1. O joystick não responde
- Verifique o status da conexão WebSocket no console do navegador
- Confira a conectividade de rede
- Atualize a página do navegador
- Verifique o Serial Monitor em busca de erros
2. Movimento brusco ou inconsistente
- Aumente o valor de sensibilidade para reduzir a frequência de atualização
- Implemente a filtragem de zona morta
- Adicione rampa de velocidade para transições suaves
- Verifique problemas de latência de rede
3. O retorno automático não funciona
- Verifique a configuração de autoReturn: webJoystickPage.setAutoReturn(true)
- Confira a compatibilidade do navegador (alguns dispositivos touch variam)
- Teste com diferentes métodos de entrada (mouse vs toque)
4. Os valores não alcançam a faixa completa
- Verifique a calibração do joystick na interface web
- Confira os cálculos de coordenadas no callback
- Teste com diferentes combinações de navegador/dispositivo
Dicas de Depuração
Adicione depuração abrangente:
Ideias de Projetos
Projetos de Robótica
- Carrinho robô controlado remotamente
- Controle de braço robótico
- Controle de voo de drone (movimentos básicos)
- Navegação de robô de estimação
Automação Residencial
- Controle de cortinas inteligentes (abrir/fechar/posição)
- Controle de pan/tilt de câmera
- Controle de brilho e cor da luz
- Controle de velocidade e direção de ventilador
Projetos Educacionais
- Ferramenta para ensinar sistemas de coordenadas
- Demonstrações de controle de motores
- Experimentos de posicionamento de servos
- Interfaces de controle para jogos
Projetos de Arte e Criatividade
- Controle de padrões de matriz de LED
- Controle de visualização musical
- Controle de robô de desenho
- Instalações de arte interativas
Integração com Outros Exemplos
Combine com o WebSlider
Use o joystick para a direção e os sliders para velocidade/intensidade:
Combine com o WebDigitalPins
Use as posições do joystick para acionar estados de pinos digitais:
Próximos Passos
Depois de dominar o exemplo WebJoystick, experimente:
- WebSlider - Para controle analógico adicional
- WebDigitalPins - Para controle discreto ligado/desligado
- WebMonitor - Para depurar os valores do joystick
- MultipleWebApps - Combinando o joystick com outros controles
Suporte
Para ajuda adicional:
- Consulte a documentação de Referência da API
- Visite os tutoriais DIYables: https://esp32io.com/tutorials/diyables-esp32-webapps
- Fóruns da comunidade ESP32