Anteriormente, fizemos um post ensinando a montar um robô controlado pelo bluetooth do celular. Este robô, por mais impressionante e divertido que seja, possuía duas limitações: o app para controla-lo estava disponível somente para aparelhos android e o alcance do bluetooth é, relativamente, pequeno. Neste post, mostraremos como montar e configurar uma nova versão deste projeto, implementando a comunicação por WiFi e o controle por meio de Web Server. Tal modelo permitirá que o robô seja controlado por qualquer aparelho com acesso aos principais navegadores e por distâncias maiores.
Materiais Necessários para o Projeto Robô com Controle Remoto via Web Server
Comprando o Kit Chassi 2WD, você se deparou com esses componentes:
Kit chassi 2WD
Para nosso projeto, optamos por retirar a película protetora do acrílico, como mostra a imagem abaixo:
Processo de retirada da película de proteção do acrílico
O primeiro passo da construção do robô é soldar os respectivos fios aos terminais dos motores. Para isso, primeiro, tiramos o motor de sua caixa de redução, removendo a alça que os une. Após tira-los, soldamos os fios e os colocamos de volta.
Caixa de redução com motorAlça do motor soltaMotor com fios soldadosCaixa com motor com terminais soldados
Para fixar o motor ao chassi:
Encaixe dois suportes para as caixas às fendas internas;
Coloque a caixa de forma que seus furos fiquem alinhados com os furos do suporte;
Encaixe o suporte externo com os furos alinhados e parafuse com a porca.
O resultado esperado pode ser visto abaixo:
Caixas fixadas no chassiCaixas com rodas
A seguir, instalaremos a roda boba. Instalaremos os extensores ao suporte da roda e, então, iremos os parafusar ao chassi do robô, como mostram as seguintes imagens:
Roda boba com extensores montadosRoda boba montada no robô
Antes de posicionarmos os componentes de alimentação, devemos preparar seus interruptores. Tanto no suporte para as pilhas quanto no adaptador para bateria, corte o fio vermelho próximo ao item, solde uma parte a um terminal da chave gangorra e outra parte ao outro terminal.
Adaptador e suporte com chaves soldadas
Agora, fixaremos o suporte para pilhas na parte inferior do chassi. Estamos utilizando fita dupla face, mas cola quente também pode ser utilizada.
Suporte para pilhas colado na parte inferior do chassi
A bateria não será colada no chassi. Assim, evitaremos a necessidade de constantemente cola-la novamente ou trocar a fita. Para fixa-la, utilizaremos uma braçadeira de nylon. Com aperto suficiente, a bateria ficará firmemente fixada no chassi. Abaixo, você pode verificar como ficou em nosso robô.
Bateria fixada na parte inferior do chassi
Para controlar os motores, utilizaremos o módulo de ponte H L298N. A pinagem do módulo pode ser vista abaixo.
Pinagem do módulo de ponte H
Atenção: a entrada de 5 V não será utilizada, porque a tensão lógica será fornecida pelo regulador do módulo
A protoboard na qual o adaptador do ESP será encaixado, o módulo da ponte H e o Arduino foram fixados na parte superior do chassi. Diversas distribuições destes componentes ao longo dessa superfície podem ser adotadas. Abaixo, como ficou a nossa:
componentes superiores fixados no chassicomponentes superiores fixados no chassi
Para fornecer energia ao módulo e aos motores, conectaremos os terminais do suporte para pilhas nas entradas de alimentação do módulo. Nessa etapa, conecte, junto ao fio de GND do suporte, um jumper na entrada de GND do módulo. Esse será utilizado para manter o módulo na mesma referência dos demais componentes. Para alimentar a Uno e o ESP, conectaremos os terminais da bateria às entradas de energia da Uno e do conversor que fornecerá tensão para o ESP. Atenção: antes de conectar o adaptador do ESP ao conversor de tensão, é necessário ajustar a saída do segundo para 3.3 V. Tensões superiores a esta danificam a módulo e inferiores são insuficientes para seu funcionamento. Para ajustar, com segurança, a tensão saída do conversor, sem precisar de um multímetro:
Conecte o conversor à Uno como no esquemático abaixo;
Conexão para ajuste da saída do conversor.
No IDE, abra o monitor serial;
Ícone para acesso ao monitor serial do IDE.
Ajuste o trimpot do conversor até que os valores enviados pela Uno estejam entre 3.3 e 3.4 V;
Trimpot do conversor.Leituras adequadas.
Após isso, encaixe o ESP no adaptador e o adaptador na protoboard, prestando atenção na seta, no adaptador, que indica a posição correta da conexão. Devemos, por fim, inserir os componentes responsáveis por converter o sinal lógico do Arduino para o ESP. Tal conversão não pode, neste caso, ser feita por um simples divisor resistivo, porque isso faria com que a GPIO2 do ESP estivesse em nível lógico baixo quando este fosse ligado, o colocando em modo de programação. Utilizaremos, então, um transistor NPN que manterá o pino em nível alto durante a inicialização e o passará para nível baixo quando o Arduino estiver pronto para receber dados.
Por fim, devemos conectar os pinos pendentes. Para nosso projeto, com o código que será mostrado adiante no post carregado no Arduino, todas as conexões do sistema podem ser vistas no esquemático abaixo.
Esquema de ligação elétrica do sistema
O robô, montado, ficará assim:
robô montadorobô montadorobô montado
Os Códigos
Para ter acesso aos códigos deste kit, acesse o respectivo diretório em nosso perfil do Github. Se você já possui conta no Git, sugerimos que clone o repositório em seu PC, facilitando o acompanhamento das atualizações no projeto. Para baixar os códigos sem o uso de recursos de versionamento, siga o passo-a-passo:
No repositório, clique em "code", em verde:
Primeira etapa para download dos códigos
Após, selecione "Download ZIP", destacado em azul:
Segunda etapa para download dos códigos
Com o arquivo baixado, extraia-o para o local de preferência:
Pasta do projeto descompactada
Para carregar o programa da Uno nesta, acesse o código pelo caminho ./src/arduino_main/arduino_main.ino, conecte-a ao computador, selecione placa e porta corretas e, então, carregue-o normalmente.
Pasta "arduino_main"Menu ferramentas com seleção adequada ao carregamento na Uno
Para que o ESP fique em modo de programação, é necessário que, em sua inicialização -quando a alimentação é conectada-, o pino GPIO0 esteja conectado ao GND. Isso pode ser feito ao encaixar parte do terminal de um resistor PTH entre os encaixes destes respectivos pinos no adaptador para USB. A parte do terminal deve ter, aproximadamente, o tamanho visto na imagem abaixo: 16 mm.
Tamanho da parte do terminal a ser utilizada
Corte esta parte e a dobra como na imagem abaixo. A distância entre as duas pontas deve ser de, aproximadamente, 5 mm. Entretanto, a extensão do segmento central do novo conector deve ser superior a 5 mm, permitindo que o centro deste seja dobrado no plano perpendicular ao formado pelos seguimentos que serão inseridos no adaptador junto aos pinos, de forma a não interferir na conexão do pino GPIO2.
Conector devidamente dobrado
Com o adaptador desenergizado, encaixe o conector ao adaptador USB, conectando os pinos GPIO0 e GND, conforme imagem a seguir. É necessário que o vértice central do conector esteja para fora da região dos pinos.
Conector encaixado no adaptador USB
Ainda antes de conectar o adaptador ao computador, encaixe, com cuidado, a ESP01 no adaptador.
ESP01 conectado ao adaptador USB com conector entre GND e GPIO0
Após cada carregamento, seja do programa ou dos arquivos, é necessário desconectar e reconectar o adaptador ao computador. Não é necessário alterar a posição ou desconectar o conector.
• No código, são utilizadas duas bibliotecas não embutidas: ESPAsyncWebServer e ESPAsyncTCP. Estas devem ser baixadas, respectivamente, de https://github.com/me-no-dev/ESPAsyncWebServer/archive/refs/heads/master.zip e https://github.com/me-no-dev/ESPAsyncTCP/archive/refs/heads/master.zip.
• Após baixados os arquivos zip, ambos devem ser descompactados na pasta de bibliotecas do IDE -geralmente, Documentos/Arduino/libraries.
Instalação das bibliotecas
Para carregar o programa do ESP neste, acesse o código pelo caminho ./src/esp_main/esp_main.ino; conecte-o, utilizando o adaptador com o ajuste de carregamento, ao computador e, no menu "Ferramentas", selecione
a placa "Generic ESP8266 Module";
em "Flash Size", a opção "1MB (FS:512KB OTA:~246KB)";
em "Erase Flash", "All Flash Contents"
e a porta COM à qual o módulo está conectado.
Após, carregue-o normalmente.
Pasta "esp_main"Menu "Ferramentas" com as opções referentes ao carregamento no ESP selecionadas
Após carregar o programa, é necessário armazenar alguns arquivos na memória flash do ESP e, por isso, será necessário utilizar a LittleFS. Clique aqui para baixar esta ferramenta. Até então, ela só foi testada, por nós, na versão 1.8.19 do IDE. Para integra-la ao sistema:
crie, na pasta de diretórios do IDE -geralmente Documentos/Arduino-, uma pasta chamada "tools".
Pasta de diretórios do IDE
Então, descompacte, na página recém criada, o arquivo baixado pelo link acima. Para isso, clique, sobre esse, com o botão direito do mouse; selecione "Extract files" ou "Extrair arquivos"; selecione a pasta e, por fim, clique em "OK".
Menu do arquivo zipOpções de extração do arquivo
Se o IDE estiver em execução, reinicie-o. Se os passos forem seguidos corretamente, o recurso "ESP8266 LittleFS Data Upload" está disponível na terceira divisão do menu "Ferramentas" deste.
Menu "Ferramentas" do Arduino IDE
Carregar o programa pode apagar os arquivos salvos na Flash. Por isso, o faça, caso ainda não tenha. Após, retire o adaptador da porta USB; insira-o novamente e, então, clique em "ESP8266 LittleFS Data Upload" para carregar os arquivos. Depois, conecte o ESP-01 ao adaptador para protoboard, no robô.
Como Usar
Quando o robô é ligado pela primeira vez, não há credenciais de rede cadastradas nele. Por isso, será criada uma rede chamada "ROBO_ELETROGATE". Sua senha é, por padrão, 123456789. Entretanto, pode ser alterada no arquivo constantes.h.
Gerenciador de WiFi do smartphone exibindo a rede "ROBO_ELETROGATE"
É necessário conectar o aparelho a esta para acessar a interface do robô pela primeira vez. Ela não possui conexão com a internet e, portanto, o aparelho pode se desconectar automaticamente. Caso aconteça, deve-se, nas configurações do smartphone, desabilitar a desconexão automática. Com o smartphone conectado à rede do robô, acesse, em algum navegador, o endereço 192.168.4.1
Página do joystick conectada pelo AP
Por esta página, já é possível controlar o robô. Entretanto, a conexão por AP é menos responsiva e consome mais energia, reduzindo sua autonomia. Assim, o ideal é conecta-lo a algum ponto de acesso e o controlar a partir deste. Para isso, ainda conectado à rede "ROBO_ELETROGATE", toque o botão "Gerenciar WiFi", visto abaixo do joystick.
Gerenciador de WiFi do robô
No primeiro acesso ao gerenciador, o robô indica que não conseguiu se conectar a redes externas. Para cadastrar uma rede, é obrigatório preencher o campo "SSID" e, caso a rede possua senha, o campo "Senha". Os campos IP e Gateway são opcionais:
se preenchidos, o robô tentará, na rede cadastrada, ocupar o IP e se comunicar com o Gateway informados. Caso seja informado um IP bloqueado ou o Gateway incorreto, não será possível se comunicar com o robô enquanto este estiver conectado a esta rede.
Por esta opção, quando o robô se conecta à rede, não é acionado um novo AP para verificação do IP, visto que será o configurado pelo usuário. Assim, para acessar o joystick, basta conectar seu smartphone à rede cadastrada e acessar, por algum navegador, o IP cadastrado.
Página do joystick conectada pelo STA
Se deixados em branco, o robô usará o IP e o Gateway fornecidos pelo ponto de acesso ao qual estiver conectado.
Neste caso, o AP será, novamente, acionado. Para verificar por qual IP será possível acessar o robô pela rede cadastrada, conecte-se à rede gerada pelo robô, entre na página do IP 192.168.4.1 e, então, toque em "Gerenciar WiFi".
Gerenciador de WiFi exibindo o IP atribuído ao robô pela rede e seu respectivo gateway
Após, conecte o smartphone à rede cadastrada, acesse o IP informado pela página e toque em "Gerenciar WiFi".
Gerenciador de WiFi exibindo o IP atribuído ao robô pela rede e seu respectivo gateway, acessada pela rede cadastrada
Toque em "Desligar AP".
Gerenciador de WiFi exibindo o IP atribuído ao robô pela rede e seu respectivo gateway. Acessado pela rede cadastrada e com o AP já desligado.
Por fim, toque em "Joystick".
Página do joystick conectada pelo STA
Há um atalho para, caso necessário, apagar todas as credenciais salvas sem a necessidade de acessar o gerenciador de WiFi. Para utiliza-lo:
desligue, totalmente, o robô;
conecte, com um jumper, os pinos RXD e GND do adaptador para o ESP, como mostra o diagrama abaixo, em que a conexão é feita com um jumper laranja;
Conexão para a exclusão de todas as credenciais salvas.
ligue o robô e aguarde até que o LED, geralmente azul, conectado ao pino TXD comece a piscar;
Cursando Eletroeletrônica no SENAI CETEL. Fanático por eletrônica, automação, impressão 3D e afins, dedico meu tempo livre a pesquisas e projetos ligados às principais áreas de interesse, pratico aeromodelismo e sou curioso por astrofotografia.
Anteriormente, fizemos um post ensinando a montar um robô controlado pelo bluetooth do celular. Este robô, por mais impressionante e divertido que seja, possuía duas limitações: o app para controla-lo estava disponível somente para aparelhos android e o alcance do bluetooth é, relativamente, pequeno. Neste post, mostraremos como montar e configurar uma nova versão deste projeto, implementando a comunicação por WiFi e o controle por meio de Web Server. Tal modelo permitirá que o robô seja controlado por qualquer aparelho com acesso aos principais navegadores e por distâncias maiores.
Precisa dos componentes para este projeto?
Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200