Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
/
/
ESP Motor Shield: Controlando Motores via WiFi

ESP Motor Shield: Controlando Motores via WiFi

Sumário

Baixe agora a apostila Arduino Iniciante e comece seus projetos

Compartilhe seu conhecimento e receba em dinheiro ou produtos.

blog-eletrogate-post-esp-motor-shield-capa

Introdução

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:

Descrição

Chip L293D

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.

ESP8266

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.

Shield

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:

Montagem e Cofiguração

Materiais necessários para o projeto Controlando Motores via WiFi

cta_cart

Montagem

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.

Configuração

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.
  • Em Output, mude a opção selecionada para Merge.
  • Em Pin, você pode escolher o que quiser, basta informar o selecionado no código. Para o nosso exemplo, vamos usar o V1.
  • Repare que ao lado do pino selecionado existe uma inscrição dizendo "To access values use:". Anote esses parâmetros para também os informar no código.
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:

Conclusão

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. 

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.

Sobre o Autor


Samuel Martins
@samuel.martins192

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.

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 que te permite controlar seu carrinho via Wi-Fi, além de todas as possibilidades que o ESP8266 pode nos proporcionar!

Precisa dos componentes para este projeto?

Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200