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
26 Comentários
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.
ResponderExcluirEntã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.
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!
ExcluirSe conseguimos fazer funcionar o nodeMcu iremos dar agradecimento no livro e na apresentação agradeço muito sua ajuda.
ExcluirBoa Noite Fernando!
ResponderExcluirMuito 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
Oi Fernando. Você saberia me dizer, se a tensão do ESP, de 3,3 volts, tem alguma tolerância?
ResponderExcluirTipo, 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)
Voce descobriu a resposta? Estou exatamente com a mesma duvoad, queira alimentar o nodemcu com uma bateria de celular
ExcluirMínima tensão é 2,5V e Máxima 3.6V segundo a datasheet do ESP3266EX.
ExcluirOlá, professor Fernando.
ResponderExcluirMuito 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.
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
ResponderExcluirPRECISO DE AJUDA!
ResponderExcluirExcelente 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
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.
ExcluirNo meu caso foi só mudar o cabo ai funcionou normalmente
ExcluirSaudaçõ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!
ResponderExcluirEu esqueci a senha como é que eu faço para recuperar
ResponderExcluirBoa tarde!
ResponderExcluirDando 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
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 !!
ResponderExcluirEsp-8266 tem bluetooth além do wifi?
ResponderExcluirO 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)
ExcluirNo código de exemplo:
ResponderExcluir//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...
Olá, Fernando!
ResponderExcluirVou 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!
O teu programinha de exemplo "Exemplo Blink" está errado!!!
ResponderExcluirNão vou te dizer qual é o erro, afinal o professor é você.
Olá, o esp tem resistores internos de pull-up posso ligar um botao direto?
ResponderExcluirgostei muito do conteúdo já fez alguma analise referente ao comportamento dos pinos do arduino uno, no momento da inicialização?
ResponderExcluirAchei uma cópia do seu conteúdo sem citação de fontes. Favor Verificar: https://circuit-diagramz.com/esp8266-12e-pinout-schematic-circuit-diagram/
ResponderExcluirFernando, 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?
ResponderExcluirObrigado por me ajudar. No programa que estou usando, estava definio o PIN 16, por aqui eu soube que 16 é o D0.
ResponderExcluir