Recents in Beach


Receba o meu conteúdo GRATUITAMENTE


NodeMCU ESP8266: Detalhes e Pinagem



Hoje vamos falar sobre a pinagem do ESP8266, ou melhor, do NodeMCU. Particularmente, eu gosto bastante deste componente porque ele já vem com entrada USB. Importante explicar, no entanto, que na verdade o NodeMCU é formado por um ESP12E, o qual ainda possui um ESP8266EX em seu interior. Vamos, então, aprender a identificação correta dos pinos olhando o datasheet do NodeMCU, conhecer quais destes pinos funcionam com digitalWrite, digitalRead, analogWrite e analogRead, além de entender melhor o boot.
Como programo mais com Arduino IDE, praticamente enxergo o NodeMCU como um Arduino. Mas, tenho que destacar que esse dispositivo tem seus diferenciais, principalmente em relação a pinagem. Se você assistiu o vídeo ESP32: Detalhes internos e pinagem, sabe que existem pinos que não podem ser usados ou que são reservados para determinadas coisas. Então, quero fazer aqui algo bem parecido, mas desta vez com o ESP8266.


NodeMCU Devkit 1.0


O termo NodeMCU geralmente se refere ao firmware, enquanto a placa é denominada Devkit.
O NodeMCU Devkit 1.0 é constituído de um ESP-12E em uma placa que facilita o seu uso.
Ainda, tem regulador de tensão, interface USB. 



ESP-12E

O ESP-12E é uma placa criada pela AI-THINKER, sendo constituído por sua vez por um ESP8266EX, dentro da capa de metal.



ESP8266EX

Feito pela Espressif, este microchip possui WiFi integrado e baixo consumo de energia.
Processador RISC Tensilica L 106 32bit com clock máximo de 160 MHz.



NodeMCU 1.0 ESP-12E Pinout




ESP-12E Pinout

Quero destacar que o NodeMCU e o ESP-12E não são a mesma coisa. No caso do ESP-12E, a gravação usa a serial, a Uart. Já no NodeMCU, isso é feito pela USB.




Afinal, qual o número que coloco quando estou programando?

Utilize o número que está na frente do GPIO ou as constantes A0, D0, D1, D2, D3, D4, D5, D6, D7 e D8.



Boot

Colocamos o osciloscópio na ponta de cada pino, pois isso nos possibilita descobrir, por exemplo, que quando ligamos o NodeMCU, os pinos dele não ficam todos iguais. Alguns ficam em alta e outros em baixa, por default. Veja os comentários sobre o comportamento de cada pino após o boot na imagem abaixo.



Constantes que já estão predefinidas



Exemplo Blink             



Neste exemplo, ligamos um LED na porta D5, que é o GPIO14. Então, as opções são as seguintes:
//O led está no GPIO14
#define LED 6
//ou usar a constante D5 que já está definida
//#define LED D5

void setup() {
  pinMode(LED, FUNCTION_3);
}

void loop() {
  digitalWrite(LED, HIGH);
  delay(1000);
  digitalWrite(LED, LOW);
  delay(1000);
}



INPUT / OUTPUT

Ao realizar testes de INPUT e OUTPUT nos pinos, obtivemos os seguintes resultados:

  • digitalWrite NÃO funcionou com os GPIOs 6, 7, 8, 11 e o ADC (A0)
  • digitalRead NÃO funcionou com os GPIOs 1, 3, 6, 7, 8, 11 e o ADC (A0)
  • analogWrite NÃO funcionou com os GPIOs 6, 7, 8, 11 e o ADC (A0) (Os GPIOs 4, 12, 14, 15 possuem PWM por hardware os demais por software)
  • analogRead funcionou apenas com o ADC (A0)

  • 6, 7, 8, 11 não funcionam para os quatro comandos acima



Faça o download do PDF



Postar um comentário

23 Comentários

  1. Fernando estou no tcc do Senai estou fazendo automação residência com o modulo nodeMcu esp8266 meu grupo fez uma App no mitAppInventor . Somente o modulo funcionou perfeitamente, mais o professor disse que teria que fazer com um micro controlador Pic16f877a.
    Então não conseguimos fazer a comunicação entre o modulo e o pic. Poderia me dar umas dicas.
    Exemplo: o comunicação UART do modulo como ela funciona? Pode mandar carácter ou é só bit? E quais pinos são usados estamos na mais de 1 mês e não conseguimos exatamente por esse detalhe. Se puder ajudar agradeço de qual quer forma.

    ResponderExcluir
    Respostas
    1. Devid, vc pode usar o ESP8266 com pic. Para isso use o em modo AT como uma ponte serial. Ele vai mandar byte a byte como fosse um módulo tx rx transceiver. Tem video no meu canal ensinando isso com arduino. Para pic é semelhante. Abraço!

      Excluir
    2. Se conseguimos fazer funcionar o nodeMcu iremos dar agradecimento no livro e na apresentação agradeço muito sua ajuda.

      Excluir
  2. Boa Noite Fernando!

    Muito bom seu vídeo, lhe escrevi esses tempos sobre um projeto de controle de acesso usando Arduino + ESP8266, e você naquela oportunidade me aconselhou o uso de dispositivo integrado e mais avançado. Estou usando o Nodemcu, e este vídeo foi muito importante para amadurecer os conhecimentos que tive ao longo desses últimos dois meses e meio. Também cheguei a testar cada pino e ele tem particularidades, mas é um equipamento muito bom de trabalhar.

    Obrigado pelo vídeo e pela ajuda.

    Abraço!
    Christiano De Carli

    ResponderExcluir
  3. Oi Fernando. Você saberia me dizer, se a tensão do ESP, de 3,3 volts, tem alguma tolerância?
    Tipo, posso alimentá-lo com 3 volts de uma bateria de Lítio CR2032, ou com uma LiFe de 3.3 volts, que, carregada pode chegar a 3,6 volts.

    Grato,
    Elton Farina
    (edfarina@gmail.com)

    ResponderExcluir
    Respostas
    1. Voce descobriu a resposta? Estou exatamente com a mesma duvoad, queira alimentar o nodemcu com uma bateria de celular

      Excluir
    2. Mínima tensão é 2,5V e Máxima 3.6V segundo a datasheet do ESP3266EX.

      Excluir
  4. Olá, professor Fernando.
    Muito bom o seu trabalho, acompanho as vídeo aulas no YouTube e já recomendei para vários amigos.
    Gostaria de saber se o App Labkit funciona só com o NodeMCU ESP8266?
    Quero fazer uma automação sem precisar usar o Arduino.

    ResponderExcluir
  5. Me esplica qual a diferença desta plataforma para aque o sr esta explicando, pois tenho uma dessa aqui e nao sei usar.ESP8266 WIFI NodeMcu Lua Escudo Driver de Motor Board L293D ESP8266 ESP-12E Dupla H Bridge Para Arduino Módulo de Alta

    ResponderExcluir
  6. PRECISO DE AJUDA!
    Excelente artigo e vídeo, estou começando, porém ao tentar fazer o simples pisca do led, apareceu esta mensagem de erro bisonha:
    Arduino: 1.8.7 (Windows Store 1.8.15.0) (Windows 10), Placa:"Generic ESP8285 Module, 80 MHz, Flash, ck, 26 MHz, 1M (no SPIFFS), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200"

    O sketch usa 247940 bytes (24%) de espaço de armazenamento para programas. O máximo são 1023984 bytes.
    Variáveis globais usam 28028 bytes (34%) de memória dinâmica, deixando 53892 bytes para variáveis locais. O máximo são 81920 bytes.
    error: failed reading byte
    warning: espcomm_send_command: can't receive slip payload data
    error: failed reading byte
    warning: espcomm_send_command: can't receive slip payload data
    error: failed reading byte
    warning: espcomm_send_command: can't receive slip payload data
    error: failed reading byte
    warning: espcomm_send_command: can't receive slip payload data
    error: failed reading byte
    warning: espcomm_send_command: can't receive slip payload data
    error: failed reading byte
    warning: espcomm_send_command: can't receive slip payload data
    error: failed reading byte
    warning: espcomm_send_command: can't receive slip payload data
    error: failed reading byte
    warning: espcomm_send_command: can't receive slip payload data
    error: failed reading byte
    warning: espcomm_send_command: can't receive slip payload data
    warning: espcomm_sync failed
    error: espcomm_open failed
    error: espcomm_upload_mem failed
    error: espcomm_upload_mem failed

    Este relatório teria mais informações com
    "Mostrar a saida detalhada durante a compilação"
    opção pode ser ativada em "Arquivo -> Preferências"

    O que pode estar acontecendo?
    Agradeço a atenção.

    Veja a foto da montagem:
    https://www.flickr.com/photos/92278260@N04/shares/uJbTo4

    ResponderExcluir
    Respostas
    1. Conseguir, não sei bem o remédio. Fiz a atualização do firmware do ESP8266, porém acho o que resolveu mesmo foi mudar a "upload speed" para 921600.

      Excluir
    2. No meu caso foi só mudar o cabo ai funcionou normalmente

      Excluir
  7. Saudações prof. Fernando, estou com dificuldades em ler uma porta digital usando o micropython, utilizo o esp8266, provavelmente o problema é no hardware pois a porta de leitura fica sempre em High (value = 1) mas quando uso o o resistor de pull-up "sinal = Pin(16, Pin.IN, Pin.PULL-UP)" o valor muda e permanece sempre em Low (value = 0) e nao muda nunca, estou tentando usar um simples sensor pir... Se tiver algum conhecimento em micropython poderia me explicar oq pode ta acontecendo? Agradeço, bom dia!

    ResponderExcluir
  8. Eu esqueci a senha como é que eu faço para recuperar

    ResponderExcluir
  9. Boa tarde!
    Dando uma olhada na net encontrei este site, que por sinal é muito bom.
    Estou tentando montar um sistema de comunicação via WIFI, do tipo uma placa com um PIC16F877A com TX e RX conectado em um módulo ESP8266 - Esp-01 e um aplicativo em Delphi rodando em um PC ou um aplicativo Android.
    A comunicação seria assim: O aplicativo envia uma sequência de caracteres ASCII parecida com esta: READ_MEM e os dados chegariam a placa com o 16F877A que retornaria os dados que solicitei. Sabendo que o equipamento esta em uma cidade, e eu poderia estar outra e tudo seria feito pela internet.
    Estou tentando dar uma mudada de ramo no trabalho e toda ajuda é bem vida. Se for livro, apostila ou uma aula via internet, se não for uma forca, pois sei que é uma área com conhecimento bem valorizado, posso pagar uma contribuição pelo empenho em me ajudar!
    Grato, Odair

    ResponderExcluir
  10. Boa noite! Quero primeiramente te parabenizar, seu conteúdo é fantastico além de didatico, me ajudou muito! Indico fazer um material acadêmico. Estou precisando fazer um artigo, gostaria muito te te referenciar, contudo, referenciar um blog não é bem visto, mesmo dento um ótimo material. Obrigadoo! Parabéns !!

    ResponderExcluir
  11. Esp-8266 tem bluetooth além do wifi?

    ResponderExcluir
    Respostas
    1. O ESP-8266 se refere mais especificamente ao processador. A placa referida nessa postagem usa uma 'subplaca' chamada ESP-12, que vem com a 'antena' Wi-Fi embutida, mas não tem Bluetooth. A placa ESP-32 vem com Bluetooth, e existe placa NodeMCU com o ESP-32 (é um pouco mais caro)

      Excluir
  12. No código de exemplo:

    //O led está no GPIO14
    #define LED 6
    //ou usar a constante D5 que já está definida
    //#define LED D5

    O certo seria '#define LED 5', por ser o número do D5 fora da interface GPIO, certo? Enquanto que o 6 seria o pino D6...

    ResponderExcluir
  13. Olá, Fernando!
    Vou usar o NodeMCU ESP8266 para um projeto da faculdade e vou precisar usar a entrada VIN. Não consegui achar qual a corrente de operação do módulo nessa entrada. Preciso comprar a bateria para alimentação e tenho medo de extrapolar o limite.

    Obrigada!

    ResponderExcluir
  14. O teu programinha de exemplo "Exemplo Blink" está errado!!!
    Não vou te dizer qual é o erro, afinal o professor é você.

    ResponderExcluir
  15. Olá, o esp tem resistores internos de pull-up posso ligar um botao direto?

    ResponderExcluir
  16. gostei muito do conteúdo já fez alguma analise referente ao comportamento dos pinos do arduino uno, no momento da inicialização?

    ResponderExcluir