Como controlar motor dc com ESP8266 NodeMCU 16

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 ? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo), comente e visite nossa loja FILIPEFLOP!

Posts Relacionados

16 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.

Trackbacks and Pingbacks

  1. […] Para a planta IoT se auto regar, iremos utilizar um hardware adicional ao projeto: a Válvula de Vazão Solenóide Água 12VDC. Esta válvula permite, através de um sinal de controle de 12V, liberar ou restringir o fluxo de água por ela. Em outras palavras, é como uma “torneira acionada eletricamente”. Portanto, em termos de hardware, iremos precisar utilizar tal válvula e um circuito para permitir o acionamento da mesma sem danificar o NodeMCU (para mais informações sobre os limites elétricos do NodeMCU, lesta este nosso post). […]

Deixe uma resposta

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