[vc_row][vc_column][vc_column_text]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.
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:
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:
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:
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:
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!
[/vc_column_text][/vc_column][/vc_row]