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.
Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!