Controle Web de Robô com a Vespa




Introdução

Neste tutorial você verá como controlar a movimentação do Rocket Tank através do seu celular, graças à Vespa. Para isso, você montará o Rocket Tank com a Vespa, montará o circuito elétrico, e então verá os passos de conexão para acessar a página de controle.

Lista de Materiais

Atenção: antes de prosseguir, é necessário seguir os passos de configurações iniciais com a Vespa, pois eles ensinam a instalar as ferramentas indispensáveis para o uso da placa.

Montagem Mecânica

O primeiro passo para desenvolver o projeto deste tutorial é fazer a montagem mecânica do Rocket Tank e fixar a Vespa e o suporte de baterias sobre a estrutura. Para isso, siga o manual de montagem do Rocket Tank através do botão a seguir.

Manual de Montagem Rocket Tank

A Vespa possui o mesmo padrão de furação de fixação que as placas da plataforma Arduino UNO, portanto é mais simples utilizar esses furos para fixá-la. Já para a fixação do suporte das baterias, você pode fixá-lo em qualquer lugar da estrutura do robô que preferir. Abaixo segue um exemplo de montagem.

exemplo_montagem_conjunto
Exemplo de Montagem do Conjunto

Montagem Eletrônica

Com a parte mecânica pronta, monte o circuito da imagem a seguir com a sua Vespa.

circuito_eletrico
Circuito Elétrico

Para fixar os fios dos motores e da bateria à placa, é necessário abrir e fechar os contatos dos bornes removíveis da placa, como mostrado no GIF abaixo.

Fixação dos Fios no Borne

Programação

Agora que o robô está fisicamente montado, temos que gravar o código que será utilizado para o seu controle.

Bibliotecas

Antes de carregar o código de exemplo para a placa, temos que instalar algumas bibliotecas que são utilizadas pelo código para que a placa execute o que desejamos. Para isso, baixe as bibliotecas necessárias através do botão abaixo.

Biblioteca ArduinoJson Biblioteca AsyncTCP Biblioteca ESPAsyncWebServer

Assim que os arquivos estiverem baixados, siga o caminho da imagem a seguir na Arduino IDE para instalar as bibliotecas pelo arquivo compactado.

caminho_instalacao_bibliotecas
Caminho para a Instalação das Bibliotecas

Ao selecionar esta opção, será aberta uma janela com os diretórios do seu computador. Navegue até o diretório em que os arquivos compactados (ZIP) foram salvos e então clique duas vezes sobre uma das pastas. Isso fará com que a biblioteca contida no arquivo selecionado seja instalada na sua IDE.

Como precisamos das três bibliotecas disponíveis acima para o funcionamento do código, é necessário repetir esse procedimento para os outros dois arquivos baixados também.

Código

Com as bibliotecas instaladas, carregue o código a seguir para a sua Vespa. Lembrando que é necessário seguir os passos de configurações iniciais da placa para instalar todas as ferramentas necessárias para o seu funcionamento, assim como para entender como carregar códigos nela.

Entendendo o Código

Neste código, a Vespa é responsável por criar uma rede Wi-Fi própria e um servidor web assíncrono. Com isso, podemos conectar celulares, tablets e até mesmo computadores à rede criada para acessar o servidor da placa. Após criar a sua rede, a placa também disponibiliza um endereço de IP, que será utilizado para acessar a página web do controle do robô.

A página web do servidor está inteiramente programada no código, e é graças à ela que a interface de controle é apresentada. Na página está presente, principalmente, um joystick que dá a direção ao robô. Ao mover o joystick, são enviados dados em formato JSON para a Vespa, que, por sua vez os identifica e age de acordo com o que foi comandado pelo joystick.

Outra funcionalidade interessante da interface de controle está no medidor de bateria, que é uma das diversas funcionalidades da Vespa. A placa mede a tensão da bateria a cada 5 segundos e, em seguida, atualiza a tensão exibida na interface. Com isso, você sempre saberá quando é necessário trocar ou recarregar as baterias do robô.

A função mais importante deste código é a de controle dos motores, já que é ela a responsável por dar a direção ao robô. Nela é verificado o ângulo em que o ponteiro do joystick está definido (tomando como referência os ângulos mostrados na imagem abaixo), e então os motores são acionados de acordo com o esperado. Por exemplo, quando o ponteiro está para cima/frente, ou seja, com um ângulo entre 80 e 100°, os motores são acionados para frente usando os comandos da biblioteca da placa.

angulos_joystick
Ângulos do Joystick

Grande parte das funções do projeto possuem monitoramento pelo monitor serial, então você pode, se quiser, acompanhar as informações da placa. Para isso, basta abrir o monitor serial na porta serial da sua placa, com a velocidade de 115200 bps.

O Que Deve Acontecer

Após carregar o código para a placa, desconecte o cabo USB, ligue-a pela chave liga/desliga de seu circuito, e então abra a lista de redes Wi-Fi disponíveis no dispositivo que você utilizará para o controle (celular, tablet ou computador). Após alguns instantes, será apresentada uma rede com o nome "Vespa-xx:xx", como na imagem abaixo, por exemplo.

rede_wifi_encontrada_conectada
Rede Wi-Fi Encontrada e Conectada

Observação: o sufixo "xx:xx" da rede Wi-Fi da Vespa é obtido a partir dos últimos caracteres do MAC Address do ESP32 da placa para tornar a rede única, portanto não se preocupe se o nome da rede for diferente da imagem, já que isso é esperado.

Para estabelecer a conexão com a rede, basta utilizar a senha "robocore", que é a senha padrão do código.

Vale lembrar que você pode, se quiser, alterar o nome e a senha da rede Wi-Fi criada pela placa, basta alterar esses parâmetros na configuração do código (função void setup()).

Após conectar o seu dispositivo à rede da placa, abra o navegador de sua preferência e então acesse o endereço de IP "192.168.4.1". Ao acessar o endereço de IP, será aberta a página de interface de controle do projeto, como mostrado na imagem a seguir.

interface_web_controle
Interface Web de Controle

Assim que a Vespa estiver pronta para ser controlada, o seu LED L permanecerá aceso e você poderá mover o joystick para controlar a movimentação do robô, como no GIF abaixo.

Resultado Final

Conclusão

Neste tutorial vimos como aproveitar as funcionalidades da Vespa para fazer um controle remoto de robôs e agora você pode aproveitar o projeto criado para se divertir!

Indo Além

Além do controle remoto do Rocket Tank, também é possível utilizar os mesmos conceitos para controlar braços robóticos, como mostramos no tutorial de controle remoto do RoboARM.

Solução de Problemas

O robô não está andando no sentido correto

Caso o robô não esteja se comportando como o esperado e conforme o controlado pelo joystick, é provável que um dos motores esteja com a polaridade invertida. Levante o robô e veja qual dos motores está com o giro invertido ao comandar o robô para frente, por exemplo. Então desligue a placa, desconecte o borne do motor e inverta a conexão dos fios do motor. Isso deverá solucionar o problema.

O LED vermelho está aceso

O LED vermelho com a legenda R da placa é um LED indicador de polaridade reversa da placa, portanto, se ele estiver aceso, é esperado que a placa não ligue como uma proteção. Desconecte o borne de alimentação da placa e inverta a polaridade de alimentação da bateria.

Não é possível acessar o endereço de IP para o controle

Se a interface de controle não estiver sendo apresentada ao acessar o endereço de IP do servidor, verifique a sua conexão à rede da placa. É comum que dispositivos mais modernos se desconectem automaticamente de redes Wi-Fi sem internet (como é o caso da rede criada pela Vespa) para tentar se conectar em uma outra rede. Caso isso esteja ocorrendo, desabilite a desconexão automática do seu dispositivo.