Como controlar motor dc com ESP8266 NodeMCU 23

O NodeMCU, amplamente falado no mundo maker, é uma das mais completas e interessantes placas / plataformas para desenvolvimento voltado a IoT. Entre suas grandes vantagens, está poder ser programado e usado como um Arduino convencional, conforme mostrado no post Como Programar o NodeMCU com IDE Arduino e no post NodeMCU com MQTT. Sendo assim, neste post iremos abordar como ler Inputs e como escrever em Outputs, e você verá como controlar motor DC com ESP8266 NodeMCU.

Controle de motor DC com ESP8266 NodeMCU

Inputs e Outputs no ESP8266 NodeMCU

Antes de começar a explicação propriamente dita, considerar neste artigo o seguinte termo:

  • GPIO (General Purpose Input / Output): Entrada / sáida de propósito geral. Nos microcontroladores, na grande maioria das vezes, um mesmo pino pode ser configurado tanto como input quanto output (não simultaneamente, claro). Por isso, é mais adequado usar esta notação.

No NodeMCU, os GPIO’s são programados exatamente da mesma forma que é feito no Arduino convencional. Ou seja, para o desenvolvedor, no aspecto de GPIO’s, não há diferença alguma entre qualquer Arduino do mercado e o NodeMCU!

Porém, no NodeMCU a (pouca) documentação existente não é tão clara quanto à numeração dos GPIO’s. Após algumas pesquisas em fóruns de ESP8266 e alguns testes, chegou-se ao seguinte pin mapping:

Sendo D0..D8 os GPIO do NodeMCU, conforme pode ser observado na figura abaixo:

ESP8266 NodeMCU

IMPORTANTE: Há cuidados especiais quando se trata de GPIO’s no NodeMCU. Se estes cuidados não forem obedecidos, o NodeMCU pode ser danificado por completo. Observe:

  • O NodeMCU, quanto ao GPIO, trabalha-se com tensão de 3,3V somente. Portanto, os GPIO’s não são tolerantes a 5V!!
    Desta forma, nunca pode haver mais que 3,3V em um GPIO configurado como Input, assim como um Output irá ter tensão de 3,3V quando em nível alto.
  • Um GPIO do NodeMCU quando configurado como Output pode ter corrente máxima drenada de 12mA. Qualquer necessidade de corrente além desta requer uso de um circuito driver / circuito de acionamento eletrônico.

Obedecendo a estes cuidados, pode-se controlar I/O’s como em um Arduino. Desse modo, o céu é o limite!

Projeto exemplo motor DC com ESP8266

Para demonstrar o uso de GPIOs no NodeMCU, será feito um projeto-exemplo, usando a seguinte lista de material:

Tal projeto consiste em acionar dois motores DC (acionamento on/off, controlados pelos GPIOs D0 e D1) mediante leitura de dois GPIOs (D2 e D3). Se D2 estiver em nível baixo (0V), o motor 1 (controlado pelo GPIO D0) é ligado. Da mesma forma, se D3 estiver em nível baixo, o motor 2 (controlado pelo GPIO D1) é ligado.

Circuito esquemático motor DC com ESP8266

Agora começaremos a falar do projeto deste tópico, o qual objetiva mostrar na prática o controle de I/O’s no NodeMCU. Para este projeto, considerar o seguinte circuito esquemático:

Circuito Motores DC com ESP8266 NodeMCU

Observações:
1) Note que foram usados transistores para acionar o Shield de Relés. O motivo é que a tensão de acionamento e corrente de acionamento de cada relé do shield são superiores ao que o NodeMCU oferece (o shield precisa de 5V e corrente de 45mA). Por isso, foi implementado este circuito com transistores para interfacear o acionamento. O transistor é o BC548 (transistor NPN de uso geral, de baixíssimo custo).

2) O regulador de tensão utilizado é o 7805.
Portanto, se for utilizar este circuito como base para outro projeto, lembre-se: a máxima corrente que o 7805 pode disponibilizar na sua saída regulada (5V) é 1A (inclusive, para isso, usando dissipador).

Vamos ao código!

Agora é chegada a vez do código do projeto-exemplo. Observe-o abaixo:

Agora basta montar o experimento e se divertir!

Gostou? Deixe seu comentário logo abaixo. Em caso de dúvidas, caso queira trocar uma ideia, ou até mesmo dividir seu projeto, acesse nosso Fórum!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

23 Comentários

  1. Poderiam fazer um tutorial para controle dos motores através de uma página web? Utilizando o módulo ESP8266? Seria ótimo. abraços

    1. Augusto, boa noite.

      Primeiramente, obrigado por ler e comentar. Sobre sua pergunta, em breve virá um post abordando justamente isso. Porém, se você quiser fazer isso desde já, una o conteúdo desta artigo com este daqui: http://blog.filipeflop.com/wireless/controle-monitoramento-iot-nodemcu-e-mqtt.html

      Desta forma, você conseguirá controlar o motor via uma página web, utilizando protocolo MQTT.

      Atenciosamente,
      Pedro Bertoleti

  2. Realizarei um estudo deste artigo.

    Pedro, muito bom os artigos de vcs, me ajudam muito. Parabéns.

    1. Augusto, muito obrigado! Fico feliz que pude te ajudar de alguma forma.

  3. Parabéns Pedro. Excelente post. Estou começando agora com o NodeMCU. Gostaria de dicas para usar um NodeMCU como ap (mestre) e outro(escravo) conectado na rede do mestre. Desde já agradeço, um abraço.

    1. Cara tente usar o protocolo mqtt usando um broker(server) e um client que ai se consegue rodar, em um nodemcu se configura pra client e outra pra broker, aqui em casa tenho um raspberry pra broker e 4 nodemcus pra client em topologia de estrela

  4. Pedro, parabéns pelo artigo! Você poderia disponibilizar o arquivo do Fritzing? Um abraço!

    1. Rodrigo, boa tarde.

      Primeiramente, muito obrigado pela leitura e pelo elogio!
      Infelizmente não tenho mais o arquivo do Fritzing. O shield de relés foi desenhado manualmente e o circuito foi feito e uma screenshot foi tirada somente. Desculpa não ter este arquivo.

      Atenciosamente,
      Pedro Bertoleti

      1. Ok Pedro, obrigado pela resposta!

  5. poderia explicar o funcionamento dos resistores e transistores ?

    1. Quais exatamente você não entendeu?

      1. esses resistores e transistores estão mandando um sinal para o rele e tbm estao ligados a esp8266 a funcionalidade deles seria so para mandar um sinal para o rele ?

        1. O conjunto de resistores e transistores têm duas finalidades:

          1) Como os relés são acionados em 5V e o ESP8266 trabalha somente com 3,3V sem seus GPIOs, a compatibilização de tensões é feita por este conjunto.
          2) Os GPIOs (configurados como saída) do ESP8266 podem fornecer uma baixa corrente elétrica (no caso, muito inferior ao necessário para acionar os relés). Portanto, o conjunto de resistores e transistores também disponibiliza a corrente necessária para o correto acionamento dos relés

          1. e eu tenho mais perguntas desculpa por tantas perguntas pois estou conhecendo ainda e tenho muitas duvidas, e pq vc utilzou o rele para acionar os motores nao poderia ligar os motores direto a esp ?

    2. Sem problemas quanto às perguntas. Estamos aqui pra isso.

      Não é possível ligar o motor direto ao ESP pois este não tem nem tensão nem fornece corrente elétrica suficientes para acionar o motor. Portanto, o relé serve como acionamento do motor.

  6. Cara, consigo controlar 3 motores de passo de CD-ROM e usar grbl gcode, a intenção era fazer uma micro CNC… Fico muito agradecido se tirar essa dúvida é poder da fica como iniciar.
    Abraço

    1. Nunca fiz algo do gênero, mas acho plenamente possível.

      Para iniciar tal projeto, recomendo primeiro fazer programas isolados para controlar cada motor e periférico da forma desejada e, uma vez tendo sucesso, fazer um só programa que controla tudo o que deseja.

  7. great job , but how to control two motor DC has to upload in nodemcu ??

    1. Thanks!

      I didn’t understand your question, sorry. Please, would you rephrase it?

      Best Regards,
      Pedro Bertoleti

      1. Thanks
        Sorry , you use nodemcu esp12 to control 2 motor DC ,and then i still confused how to control 2 motor DC ? ex use android or PC

        1. I think I undersand now. You want to know how to control these motors, once they’re under NodeMCU command, don’t you?
          If yes, you can do it by using your browser (to access it locally or in a remote server, if you upload html, js files and image files there), by either an Android Phone/Tablet, PC, Smartphone, etc..

          1. thanks you understand ,
            and how to access it if use remote server , i dont understand to make it , if i want to control it use PC..
            can you explain for me ,
            Thanks

  8. Olá Pedro tudo bem? Cara você poderia me ajudar com uma questão. Eu estou aprendendo a usar o ESP8266 nodeMCU V3. Em milhares de sites eu vi os programadores falando da superioridade do dispositivo. Ele já tem GRBL code gravado nele? Pesquisei um monte sobre isso e não encontrei. Eu montei uma laser engraver e agora estou selecionando as placas, já entendi sobre o GRBL no Arduino. Mas não achei em lugar nenhum (mesmo pesquisando em inglês) sobre usar apenas o ESP8266nodeMCU para controlar meus dois motores e o laser. Sabe sobre isso? Obrigado pelo conhecimento!