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

Lista completa de produtos
comprar
Vespa

Plataforma Robótica Rocket Tank

Suporte para 6 pilhas AA

Espaçador Sextavado M3 Nylon Preto - Pacote com 10 unidades
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 TankA 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.

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

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.
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.
Assim que os arquivos estiverem baixados, siga o caminho da imagem a seguir na Arduino IDE para instalar as bibliotecas pelo arquivo compactado.

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.

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.

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.

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.
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.