No post de hoje vamos mostrar como usar o módulo ESP8266 NodeMCU para controle de motores DC, usando o Motor Shield para Módulo Wifi ESP8266 NodeMCU, um componente bem interessante que você pode usar por exemplo para montar um robô controlado remotamente.

O motor shield ESP8266 NodeMCU

Este shield, como o próprio nome já diz, suporta um módulo ESP8266 NodeMCU, muito utilizado em projetos de IoT (Internet das Coisas) e automação residencial, sendo em muitas situações uma ótima opção para substituir o Arduino nos seus projetos. Por ter conexão wifi nativa, os módulos da linha ESP8266 e ESP32 são muito usados para controle remoto de aparelhos e envio dos dados do projeto para a nuvem.

O shield usa o controlador L293D (datasheet) e pode controlar até dois motores DC com corrente máxima de 1.2A.

Motor Shield ESP8266 NodeMCU

Além do controle dos motores, a placa tem botão liga/desliga, conectores para utilização das interfaces serial/UART e SPI, GPIO e opções de Enable e Reset do ESP8266:

Detalhes pinagem motor shield ESP8266 NodeMCU

No lado esquerdo podemos ver os bornes com parafusos, onde na parte superior temos os conectores de controle dos motores e na parte de baixo os bornes de alimentação dos motores (4.5 à 36VDC) e do NodeMCU (4.5 à 9VDC).

Conexão de motores no shield

A conexão dos motores DC no motor shield é muito simples e segue o esquema abaixo. O primeiro motor é conectado nos bornes A- e A+, e o segundo motor nos bornes B- e B+.

Preste atenção na conexão do ESP8266 NodeMCU. A antena deve ficar virada para o lado de fora da placa, conforme mostrado no circuito abaixo:

Ligação motores no Motor Shield ESP8266 NodeMCU

Recomendamos utilizar alimentação separada para os motores e o NodeMCU, ok?

Instalando o NodeMCU na IDE Arduino

Antes de mais nada precisamos configurar a IDE para que ela reconheça o nosso ESP8266 NodeMCU. Para isso, entre na IDE, e no menu Arquivo acesse Preferências.

No campo URLs Adicionais para Gerenciadores de Placas coloque esta URL:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Clique em OK e agora selecione o menu Ferramentas -> Placa – Gerenciador de Placas. Na tela do Gerenciador, procure por ESP8266 e selecione o esp8266 by ESP8266 Community. Clique em instalar pra finalizar:

ESP8266 Install IDE Arduino

Se tudo estiver ok, as placas da linha ESP8266 aparecerão na lista de placas disponíveis, bastando selecionar NodeMCU 1.0, conforme a imagem abaixo:

NodeMCU IDE Arduino

Finalizada a instalação da placa, vamos ao programa.

Programa motor shield ESP8266 NodeMCU

O nosso programa de testes não utiliza nenhuma biblioteca específica, usando somente as funções de PWM e portas digitais para controlar o sentido e a força do motor.

Os pinos dos motores são conectados ao NodeMCU seguindo a tabela abaixo:

Pinos Motor Pino NodeMCU Pinos Arduino
A- 1 5
A+ 3 0
B- 2 4
B+ 4 2

Como estamos usando a IDE do Arduino para programação do NodeMCU, devemos seguir os pinos mostrados na coluna da direita (5, 0, 4 e 2).

Nos pinos A- e B- vamos utilizar PWM (usando o comando analogWrite) pois essa saída configura a força com que os motores vão girar. Já as saídas A+ e B+ são utilizadas para determinar o sentido de rotação dos motores (nesse caso usamos portas digitais com o valor 0 ou 1 (Low ou High).

//Programa: NodeMCU ESP8266 Motor Driver Shield
//Autor: Arduino e Cia

void setup()
{
  Serial.begin(9600);

  //Define os pinos de controle do motor como saida
  //Motor 1
  pinMode(5, OUTPUT); // saída A-
  pinMode(0, OUTPUT); // saída A+

  //Motor 2
  pinMode(4, OUTPUT); // saída B-
  pinMode(2, OUTPUT); // saída B+
}

void loop()
{
  //Gira os motores no sentido horario

  //Aciona motor 1
  analogWrite(5, 1024); 
  digitalWrite(0, HIGH); 

  //Aciona motor 2
  analogWrite(4, 1024); 
  digitalWrite(2, HIGH); 

  //Aguarda 2 segundos
  delay(2000);

  //Gira os motores no sentido anti-horario

  //Aciona motor 1
  analogWrite(5, 1024); 
  digitalWrite(0, LOW); 

  //Aciona motor 2
  analogWrite(4, 1024); 
  digitalWrite(2, LOW); 

  //Aguarda 2 segundos e reinicia o processo
  delay(2000);
}

Este foi um exemplo básico de como usar o Motor Shield para ESP8266 NodeMCU. Em um próximo post sobre ele vamos ver como controlar esse shield remotamente.

Gostou? Confira outros posts usando ESP8266 NodeMCU aqui mesmo no Arduino e Cia!

1.1/5 - (337 votos)