



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:
Materiais necessários para o projeto Controlando Motores via WiFi
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.
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, 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.
|
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!
Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200