Há algum tempo, mostramos aqui no blog algumas shields para controle de motor, montagem e programação de plataformas robóticas e até mesmo um controle remoto com Arduino, e hoje não vai ser diferente. Vamos te ensinar a usar a ESP Motor Shield, uma shield para o ESP8266 baseada no chip L293D e que te permite controlar seu carrinho via Wi-Fi, além de todas as possibilidades que o ESP8266 pode nos proporcionar! Mas antes, vamos às apresentações:
Já apresentamos aqui todo o funcionamento de uma ponte H baseada no chip L293D em sua versão para Arduino, mas, de forma resumida, é um CI que possui duas pontes H internas, sendo possível o controle de até 2 motores DC individuais ou um motor de passo. Suporta tensões de até 36V e corrente de 600mA.
O ESP 8266 também já foi apresentado diversas vezes aqui no blog, principalmente em projetos de IOT. É uma placa de desenvolvimento que traz o chip ESP-12E, contando com Wi-fi integrado e 11 portas de uso geral (GPIO). Para conhecer mais sobre essa placa, acesse nossa série de posts sobre o ESP-12 clicando aqui.
Como já dito anteriormente, a Shield é baseada no CI L293D e foi desenvolvida para o NodeMCU ESP8266 V2 (é importante salientar que o modelo NodeMCU ESP8266 V3 não é compatível com essa shield!), permitindo assim o controle de até dois motores DC individuais ou um motor de passo. Veja abaixo todos os pinos e conexões presentes na nossa shield:

Materiais necessários para o projeto Controlando Motores via WiFi
A montagem do hardware é bem simples. Siga o diagrama abaixo para efetuar as ligações elétricas necessárias.

Nota: Se você quiser alimentar o ESP usando a mesma bateria dos motores (conforme indicado em amarelo no diagrama e considerando que a tensão máxima seja de 7V), coloque um Jumper ligando os pinos Vin e Vm. Caso sua configuração esteja assim e o ESP se desconectar com frequência, experimente alimentá-lo separadamente, usando o conector ESP Power.
A configuração do nosso projeto será dividida em duas etapas: programação no Smartphone e programação do ESP. Para o Smartphone, vamos usar uma plataforma chamada Blynk, que é uma plataforma de integração entre hardware e software voltada à projetos de IOT. O serviço é baseado em um aplicativo personalizável que nos permite controlar um hardware programável, além de retornar dados ao app, de acordo com a necessidade do seu projeto. A integração é feita através de bibliotecas que devem ser importadas no seu sketch e toda a comunicação é feita via web, através do acesso à uma rede WiFi e, consequentemente, aos servidores Blynk. O download do app, tanto para Android como iOS, o download das bibliotecas e o acesso ao servidor Blynk são gratuitos. Porém, ao criar um projeto, é descontado uma determinada quantidade de Energy – uma espécie de moeda virtual do sistema – para cada componente (widget) adicionado e, ao ser excluído, o valor dele é integrado novamente à sua conta. Ao criar uma conta você recebe 2.000 Energys e esse valor é mais que suficiente desenvolvermos nossos projetos.
Vamos iniciar fazendo o download do app. Para isso, basta ir até sua loja de aplicativos e buscar por “Blynk”.
Ao iniciar o app, essa tela será exibida:

Clique em “Create New Account” para criar sua conta. É importante que você use um email ativo, pois todos os códigos de autenticação dos seus projetos serão enviados por ele.
Feito isso, vamos iniciar nosso projeto clicando em “New Project”

O próximo passo será definir um nome para o seu projeto, selecionar qual plataforma você estará utilizando e o tipo de conexão. Para o nosso tutorial, vamos utilizar o ESP8266 via WiFi. Caso deseje, você também pode alternar o tema da interface entre modo claro e escuro, na opção Theme. Ao final, Clique em Create.

Em seguida, você receberá uma mensagem dizendo que um email contendo o auth token foi enviado para o email que você cadastrou.

Guarde esse código. Você irá usá-lo no código que será carregado no ESP mais à frente!

Clique em OK e, após isso, o ambiente de criação da plataforma será exibido.

Clique em qualquer espaço vazio e uma janela chamada “Widget Box” será exibida. Através dela você pode consultar seu saldo de Energy e adicionar componentes ao projeto.

Comece adicionando um Joystick para o controle do nosso carrinho.

Clique no widget e uma janela com as configurações será exibida.

Feito isso, retorne à tela anterior. O próximo passo será a programação do ESP na IDE do Arduino:
Primeiramente, verifique se a sua IDE já possui as placas ESP instaladas. Caso não tenha, siga este tutorial para fazer a instalação.
Com as placas ESP configuradas, vamos instalar as bibliotecas Blynk. Para isso, existem duas maneiras: Você pode instalar diretamente pelo gerenciador de bibliotecas do Arduino ou baixando o arquivo .zip clicando aqui.

Feito isso, cole o seguinte código na sua IDE. A explicação do funcionamento estão descritas nos comentários acima de cada bloco.
//inclusão de bibliotecas
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
//definição de funções e pinos
#define BLYNK_PRINT Serial
#define RightMotorSpeed 5
#define RightMotorDir 0
#define LeftMotorSpeed 4
#define LeftMotorDir 2
//variáveis referentes à conexão WiFi
char auth[] = "*********************";
char nome_rede[] = "*************";
char senha[] = "*********";
//variáveis de controle dos motores
int minRange = 300;
int maxRange = 900;
int minSpeed = 450;
int maxSpeed = 1020;
int noSpeed = 0;
void movimento(int x, int y){
//mover para frente
if(y >= maxRange && x >= minRange && x <= maxRange){
digitalWrite(RightMotorDir,HIGH);
digitalWrite(LeftMotorDir,HIGH);
analogWrite(RightMotorSpeed,maxSpeed);
analogWrite(LeftMotorSpeed,maxSpeed);
}
//mover para frente e para direita
else if(x >= maxRange && y >= maxRange){
digitalWrite(RightMotorDir,HIGH);
digitalWrite(LeftMotorDir,HIGH);
analogWrite(RightMotorSpeed,minSpeed);
analogWrite(LeftMotorSpeed,maxSpeed);
}
//mover para frente e para esquerda
else if(x <= minRange && y >= maxRange){
digitalWrite(RightMotorDir,HIGH);
digitalWrite(LeftMotorDir,HIGH);
analogWrite(RightMotorSpeed,maxSpeed);
analogWrite(LeftMotorSpeed,minSpeed);
}
//zona neutra
else if(y < maxRange && y > minRange && x < maxRange && x > minRange){
analogWrite(RightMotorSpeed,noSpeed);
analogWrite(LeftMotorSpeed,noSpeed);
}
//mover para trás
else if(y <= minRange && x >= minRange && x <= maxRange){
digitalWrite(RightMotorDir,LOW);
digitalWrite(LeftMotorDir,LOW);
analogWrite(RightMotorSpeed,maxSpeed);
analogWrite(LeftMotorSpeed,maxSpeed);
}
//mover para trás e para direita
else if(y <= minRange && x <= minRange){
digitalWrite(RightMotorDir,LOW);
digitalWrite(LeftMotorDir,LOW);
analogWrite(RightMotorSpeed,minSpeed);
analogWrite(LeftMotorSpeed,maxSpeed);
}
//mover para trás e para esquerda
else if(y <= minRange && x >= maxRange){
digitalWrite(RightMotorDir,LOW);
digitalWrite(LeftMotorDir,LOW);
analogWrite(RightMotorSpeed,maxSpeed);
analogWrite(LeftMotorSpeed,minSpeed);
}
}
void setup(){
//iniciando a comunicação serial para verificação da conexão WiFi
Serial.begin(9600);
Blynk.begin(auth, nome_rede, senha);
//setando os pinos referentes aos motores
pinMode(RightMotorSpeed, OUTPUT);
pinMode(LeftMotorSpeed, OUTPUT);
pinMode(RightMotorDir, OUTPUT);
pinMode(LeftMotorDir, OUTPUT);
//iniciando o carrinho com os motores desligados e sentido de rotação à frente
digitalWrite(RightMotorSpeed, LOW);
digitalWrite(LeftMotorSpeed, LOW);
digitalWrite(RightMotorDir, HIGH);
digitalWrite(LeftMotorDir,HIGH);
}
void loop(){
//comando para execução do código
Blynk.run();
}
//inserção dos parâmetros informados pelo app
BLYNK_WRITE(V1){ //pino virtual selecionado no joystick
int x = param[0].asInt();
int y = param[1].asInt();
movimento(x,y);
}As alterações básicas que você deve fazer no código se resumem a informar o código de autenticação que lhe foi enviado por email, nome da sua rede WiFi e senha, diferenciando letras maiúsculas e minúsculas, nas variáveis referentes à conexão WiFi:
//variáveis referentes à conexão WiFi char auth[] = "*********************"; char nome_rede[] = "*************"; char senha[] = "*********";
Feito isso, basta carregar o código no seu ESP e, ao final, verificar se o mesmo está conectado à rede. Para isso, pressione o botão Reset do seu ESP, em seguida abra o Monitor Serial da IDE do Arduino e verifique se a seguinte mensagem foi printada na tela:

Com a conexão WiFi efetuada, basta conectar seu ESP à shield, energizar o carrinho e fazer a conexão com o aplicativo, clicando no botão Play:

Com tudo conectado, basta movimentar o joystick e se divertir com seu carrinho conectado à sua rede WiFi. Veja abaixo um gif de como ficou o nosso projetinho:

Concluímos aqui a montagem de mais uma plataforma robótica, dessa vez controlado através da rede WiFi. A ESP Motor Shield é uma plaquinha extremamente versátil que nos abre um novo leque de possibilidades nesse segmento de robôs e, uma sugestão que deixamos a você, leitor, é: aperfeiçoe o código, implemente outras funções como controle de velocidade, sensores e outras funcionalidades capazes de automatizar ainda mais o seu robô. Fazendo isso você estará praticando e evoluindo ao máximo seus conhecimentos adquiridos até aqui!
Um forte abraço e até a próxima.
https://www.instructables.com/Simplest-Wifi-Car-Using-ESP8266-Motorshield/
https://cdn.hackaday.io/files/8856378895104/user-mannual-for-esp-12e-motor-shield.pdf
https://blog.eletrogate.com/nodemcu-esp12-introducao-1/
https://blog.eletrogate.com/motor-shield-l293d-driver-ponte-h-para-arduino/
Se interessou por esse projeto? Não deixe de conferir nossa loja e os produtos para evoluir ainda mais o seu projeto. Fez o carrinho? Poste o resultado e nos marque no Instagram @Eletrogate. Estamos ansiosos para ver o seu resultado!
Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!