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
23 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?
ResponderExcluir