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

25 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
  17. Achei uma cópia do seu conteúdo sem citação de fontes. Favor Verificar: https://circuit-diagramz.com/esp8266-12e-pinout-schematic-circuit-diagram/

    ResponderExcluir
  18. Fernando, estou com a ATMega2560+Wifi, e no novo Blynk nao consigo fazer algo simples como ligar o led da placa. Coloquei um serial.print dentro da BLYNK_WRITE, mostra o valor que vem do servidor ou app, porém não liga o led usando o comando digitalWrite(13, HIGH). Tem alguma ideia?

    ResponderExcluir