Como programar o módulo ESP8266 NodeMCU ESP-12 128

O módulo WiFi ESP8266 NodeMCU é uma das placas mais interessantes da família ESP8266, já que pode ser facilmente ligada à um computador e programada com a linguagem Lua e também utilizando a IDE do Arduino. Neste post vamos mostrar como utilizar Lua para programar o ESP8266 NodeMCU ESP-12.

ESP8266 NodeMCU ESP-12

Essa placa possui 10 pinos GPIO (entrada/saída), suportando funções como PWM, I2C e 1-wire. Tem antena embutida, conversor USB-TLL integrado e o seu formato é ideal para ambientes de prototipação, encaixando facilmente em uma protoboard.

Hardware Módulo Wifi ESP8266 NodeMCU ESP-12

O módulo Wifi ESP8266 NodeMCU tem dois botões, conforme mostrado na imagem abaixo: Flash (utilizado na gravação do firmware) e RST (Reset).  No mesmo lado temos o conector micro usb para alimentação e conexão com o computador.

Pinagem ESP8266 NodeMCU ESP-12

No lado oposto, temos o ESP-12E e sua antena embutida, já soldado na placa. Nas laterais temos os pinos de GPIO, alimentação externa, comunicação, etc.

No Windows 7, a instalação e download de drivers foi feita de forma automática, e um dispositivo USB-TTL CH340 foi adicionado ao gerenciador de dispositivos. No nosso caso, foi atribuida a porta COM29:

Gerenciador de dispositivos

Vamos programar o módulo utilizando o Lua, e isso pode ser feito, à princípio, de duas maneiras.

Programando o ESP8266 NodeMCU ESP-12 pela serial

Nesse método, vc pode utilizar um programa de terminal, como o Termite (download), para enviar os comandos diretamente para o módulo. Vamos montar primeiro um pequeno circuito para teste, que servirá para todos os exemplos deste post:

Circuito ESP8266 NodeMCU ESP-12

Conecte o módulo ao computador utilizando o cabo USB e entre no Termite (ou outro programa à sua escolha), selecionando a velocidade de 9600. Pressione o botão de reset no módulo e aguarde a exibição das informações sobre o firmware da placa:

Comunicação NodeMCU - Termite

Em seguida, digite no terminal o seguinte comando, que vai definir a porta 5 como saída. Pressione ENTER após cada comando para que ele seja enviado ao NodeMCU:

gpio.mode(1, gpio.OUTPUT)

Para acender o led, envie o comando

gpio.write(1, gpio.HIGH)

Para piscar o led, crie um pequeno loop com essa série de comandos:

while 1 do
gpio.write(1, gpio.HIGH)
tmr.delay(1000000)
gpio.write(1, gpio.LOW)
tmr.delay(1000000)
end

Essa rotina vai fazer com que o led pisque a cada 1 segundo. Você logo vai notar que não é possível parar o programa por meio de comandos, e essa rotina vai rodar continuamente. Para parar o loop e reiniciar o módulo, pressione o botão RST.

Programando o Nodemcu utilizando ESPlorer

Programar o módulo pela serial pode ser interessante, mas podemos melhorar esse processo utilizando um programa como o ESPlorer (download).

Com o ESPlorer você pode abrir diversas abas e programas ao mesmo tempo, salvar os programas em disco, formatar (zerar) o módulo, e muitas outras funções.

Ao abrir o ESPlorer, temos no lado esquerdo uma área onde vamos escrever o(s) programa(s), e na direita o/a console, onde podemos acompanhar em tempo real a comunicação com o NodeMCU:

ESPlorer Tela Principal

Utilizando o exemplo do loop feito anteriormente, copie os comandos para a janela do lado esquerdo da tela, e em seguida clique no botão Send to ESP para enviar a programação para o NodeMCU:

ESPlorer-blink

Agora além de controlar o módulo, você tem a opção de salvar o programa para uso posterior.

Conectando o NodeMCU na rede wireless

Até agora só vimos como acionar as portas do NodeMCU por meio de programas, e já que temos um chip wireless ESP8266 no módulo, nada melhor do que acionar as portas do Nodemcu utilizando a rede sem fio. Para isso, carregue o programa abaixo no ESPlorer, colocando o nome da sua rede wifi e a senha nos campos NOME_DA_REDE e SENHA_DA_REDE, respectivamente:

-- Programa: Web Server com ESP8266 Nodemcu
-- Autor: MakerHero

-- Conexao na rede Wifi
wifi.setmode(wifi.STATION)
wifi.sta.config("NOME_DA_REDE","SENHA_DA_REDE")
print(wifi.sta.getip())
-- Definicoes do pino do led
led1 = 1
gpio.mode(led1, gpio.OUTPUT)
-- Definicoes do Web Server
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
    conn:on("receive", function(client,request)
        local buf = "";
        local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
        if(method == nil)then
            _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
        end
        local _GET = {}
        if (vars ~= nil)then
            for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
                _GET[k] = v
            end
        end
        buf = buf.."<h1><u>MakerHero</u></h1>";
        buf = buf.."<h2><i>ESP8266 Web Server</i></h2>";
        buf = buf.."<p><a href="?pin=LIGA1"><button><b>LED 1 LIG</b></button></a> <br/><br/><a href="?pin=DESLIGA1"><button><b>LED 1 DES</b></button></a></p>";
                local _on,_off = "",""
        if(_GET.pin == "LIGA1")then
              gpio.write(led1, gpio.HIGH);
        elseif(_GET.pin == "DESLIGA1")then
              gpio.write(led1, gpio.LOW);
        end
        client:send(buf);
        client:close();
        collectgarbage();
    end)
end)

O programa configura o módulo para o modo station (estação) na linha 5, depois configura a GPIO como saída utilizando o comando gpio.mode. Para acessar a página web, você vai precisar do endereço IP atribuído ao módulo. No nosso caso o IP foi o 192.168.0.25.

Para descobrir o endereço IP, acesse o ESPplorer , selecione a opção =wifi.sta.getip() conforme a imagem abaixo e clique em SEND para que o endereço IP do módulo seja mostrado na console.

 Endereço IP

Acesse então o browser, digite o endereço IP e a página web do ESP8266 será exibida:

NodeMCU - Browser

 Gostou? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

128 Comentários

  1. Boa tarde. Ja programo nessas placas a algum tempo, mas sabemos que são placa no formato de kit dev, já vem com adaptador serial, etc, coisas que não são necessárias depois de testado.

    Mas eu gostaria de comprar Esp8266 mas para colocar em produção o que já foi testado no kit dev.

    Mas nem sei como procurar

    1. Olá Denis!

      Você diz nessa forma aqui: https://www.makerhero.com/produto/modulo-wifi-esp8266-esp-12e/?

      Abraços!
      Vinícius – Equipe MakerHero

  2. A minha placa esp12 não reconhece nenhuma porta do IDE do Arduino, o que pode ser?

    1. Olá Adriano,

      No gerenciador de dispositivos aparece o número da porta?

      Você instalou no gerenciador de placas o esp8266?

      Seu esp12 é com esp8266 ou esp32?

      Temos este post aqui descrevendo como configurar ele na IDE do Arduino: https://www.makerhero.com/blog/programar-nodemcu-com-ide-arduino/

      Abraços!
      Vinícius – Equipe MakerHero

  3. Gostei muito!
    É possível alterar o IP e demais parâmetros da porta wifi e da serial?

    1. Paulo,

      Ele seleciona automaticamente.

      Abraços!
      Diogo – Equipe MakerHero

  4. Ola primeiramente parabéns pelo post.
    Fiquei muito empolgado em começar a programar o esp. Mais no momento eu estou utilizando linux.
    Por acaso teria algum exemplo utilizando o SO linux?
    Obrigado.

    1. Adivar,

      Você pode abrir esse programa no Linux desde que possua o Java instalado. Pra isso entre num terminal e digite: java -jar ESPlorer.jar

      Abraços!
      Diogo – Equipe MakerHero

  5. Professor Adilson, bom dia. Meu querido, eu consigo enviar comandos AT pelo serial monitor de um NoDe MCU ESP 8266 conectado a um notebook para outros NoDEs MCU’s conectados em rede WiFi? Na verdade professor, não consigo enviar comandos pelo monitor serial e ativar uma porta digital do NODE, como no arduino. Da pra se conseguir este efeito pelo NoDe MCU 8266? Grande abraço professor.

  6. Muito Show!!!! Sempre!!!!

    1. Valeu, Marcelo!

      Que bom que curtiu 😀

      Abraços!
      Diogo – Equipe MakerHero

  7. Parabéns pelo tutorial. Gostaria de saber se é possível trabalhar com o módulo NodeMCU com o ESP8266 utilizando um display 16×2 e com o Módulo Serial I2C para operar com a tensão de 3,3V. Estou usando o NodeMCU em meu projeto e quero ligar um display nele, mas parece que o ESP8266 opera apenas com a tensão de 3,3V.
    Obrigado!

  8. para conectar na rede wireles eu coloco o código na parte direita do esplorer ou na esquerda?

    1. Olá Victor,

      No lado esquerdo (lado indicado como PROGRAMA).

      Abraço!
      Rosana – Equipe MakerHero

  9. Tem como executar um arquivo via programação no esp8266? Tipo MP3 ou exe ?

    1. Olá,

      Você poderia dar mais detalhes do que deseja fazer?

      Abraço!
      Rosana – Equipe MakerHero

  10. Boa noite

    Muito bom esse tutorial

    Teria algum tutorial, onde mostre a comunicação entre o ( Node MCU), com um aplicativo mobile
    Exemplo mandar informação do Arduíno traves do ( Node MCU), para que salve essa informação através de um aplicativo.
    tipo exemplo pegar informação de uma tag Nfc para salvar em um aplicativo

  11. Boa noite

    Muito bom esse tutorial

    Você Teria algum tutorial, onde mostre a comunicação entre o ( Node MCU), com um aplicativo mobile
    Exemplo mandar informação do Arduíno traves do ( Node MCU), para que salve essa informação através de um aplicativo, um exemplo uma informação contida em uma tag nfc.

  12. Tentei ligar(energizar) o ESP8266 NodeMCU pela via usb no meu notebook porém ele aquece muito, o que seria recomendado fazer?

    1. Olá Leonardo!

      Ao ligar em uma fonte acontece a mesma coisa?

      Você pode colocar um dissipador também!

      Abraços!

      André – Equipe MakerHero

  13. Matéria muito interessante. Estou iniciando nessa área e procuro material para aprender a Linguagem Lua.
    Pode me auxiliar nessa literatura, projetos com a sua experiência??

  14. Como configurar esse módulo para montar uma rede mesh com vários deles?

  15. Deu ruim na hora de mandar o código para o ESP8266:

    stdin:1: attempt to index global ‘_GET’ (a nil value)stdin:1: attempt to index global ‘_GET’ (a nil value)
    stack traceback:
    stdin:1: in main chunkclient:send(buf);stdin:1: attempt to index global ‘client’ (a nil value)
    stack traceback:
    stdin:1: in main chunkclient:close();
    stdin:1: attempt to index global ‘client’ (a nil value)stack traceback: stdin:1: in main chunkcollectgarbage();end)stdin:1: ‘<eof>’ expected near ‘end’end)stdin:1: ‘<eof>’ expected near ‘end’

    O que pode ser?

     

      1. Olá Marcos e Luis!

        Quando vocês vão no gerenciador de dispositivos aparece o NodeMCU? Como ele aparece?

        Testaram programar com outras velocidades (baud rate)?

        Abraços!

        André – Equipe MakerHero

  16. Como controlar 32 reles com node mcu, recei uma dica de um amigo, mas nao entendi, por favor poderia me ajudar ? Uma sugestão para o controle dos reles, seria usar decodificadores, mantendo apenas 1 microcontrolador. Para acionar 32 reles como “saída”, você poderia utilizar 5 “entradas” (2^5). Ou seja, 5 I/Os do NodeMCU acionariam o(s) decodificador(es) e este(s) atuariam nos reles.

    Desta maneira se você programaria as 5 saídas do NodeMCU assim:
    00000 aciona rele 1
    00001 aciona relê 2
    00010 aciona relê 3

    11111 aciona relê 32

    Existem diversos tipos de decoders na praça. Um mais comum é 74HC238 (3 to 8). Existem outros menores e maiores (por exemplo 2 to 4 ou 4 to 16).

  17. Boa noite, como faço pra zerar a memória através do ide arduino. Pois parece que só o exemplo blink roda corretamente.

  18. Estou usando o módulo Node MCU ESP 8266 para fazer a leitura analógica de um sinal que possui componentes de até 40 Hz de um sinal de eletroencefalograma para um trabalho de iniciação científica da universidade. Estava com um problema de corte do sinal que consegui resolver acrescentando um delay no código. Desta forma, o módulo é programado para servir como ponto de acesso onde o meu computador (cliente) acessa usando o protocolo TC/IP. Assim quando um cliente acessa meu módulo, o mesmo passa a enviar as informações que serão recebidas pelo computador. Fiz um programa no Labview para receber essas informações e mostrar os dados brutos num gráfico, mas preciso aplicar alguns filtros digitais neste software e avaliar o espectro de freqüência deste sinal. Vou colocar aqui tanto meu código em linguagem arduino que programei o módulo, quanto o .VI para você entender melhor. Eu poderia usar um protocolo UDP mas não conseguir programar meu módulo para usar esse protocolo.
    A forma como eu reduzi a taxa de amostragem acho que não é a da mais elegante, mas não consegui achar outra forma que eu pudesse, por exemplo, mudar o prescaler que faz mudar a taxa de amostragem desse módulo. Vou postar uma figura de um sinal senoidal mostrado no gráfico do LabView antes de eu colocar o delay. E com o delay a forma está sem esses cortes na senoide, ou seja, está mostrando uma senoide normal.
    Pelo o que pesquisei e conversei com alguns professores, a taxa de amostragem estava muito alta, assim, caso algum pacote de dados não fosse enviado corretamente o módulo não tinha tempo suficiente para reenviar o pacote e receber os novos dados para um novo pacote de dados. Então começava dar erro e cortar o sinal no gráfico.
    Agora o problema está em aplicar alguns filtros digitais neste software e avaliar o espectro de freqüência deste sinal. Pelo o que entendi do LabView, para realizar essas tarefas o sinal precisa ter uma taxa de amostragem do sinal fixa. Então fiz uma pequena rotina para ver se pelo menos a taxa de amostragem do sinal pelo módulo era constante e verifiquei que já ali não era. Vi leituras de tempo entre 160 us até 180 us entre uma amostra e outra sem o delay de 4ms que está no código. Acho que no envio das informações pode ocorrer alguma variação e até no LabView alguma variação nesses valores, tomara que eu esteja enganado.
    Para tentar resolver esse problema tentei usar alguns blocos do LabView que pudessem me auxiliar na resolução deste problema e foram basicamente 3: Build Waveform, Align and Resample Express VI, Resample Waveforms (single shot). Minha idéia foi reconstruir minha forma de onda com uma taxa de amostragem pré-determinada por mim. Mas acho que não sei usar essas ferramentas corretamente. Tentei de várias maneiras e infelizmente não obtive êxito.

    O link para baixar meu programa .VI e programa arduino é: “https://drive.google.com/drive/folders/1_FItfUE8IW52u7Ec4WdggadKnMH7QR5O?usp=sharing”

    1. Alguém pode me ajudar resolver esse problema?

  19. Muito bacana, sabe onde posso achar essa placa em grande escala e barato ??

  20. Boa Tarde! Posso desenvolver programas em lua e revender o modulo sem problemas De licenças De software? Ou seja, tenho um produto para desenvolver e quero colocar para venda. Obrigado

  21. O meu aparecei esse erro para mim:
    ¢ÔªTWT-•ª‹½å:$4Æ%U4SªCáWaiting answer from ESP – Timeout reached. Command aborted.
    =wifi.sta.getip()
    =w:*«¹+¹ÙŽ¥)Õê

  22. Olá Adilson, seu trabalho é fantástico. É uma excelente fonte de informações.
    Me tire uma dúvida por favor….
    Instalei no meu módulo nodeMCU ESP8266 V3 um sketch com o nome de uma rede e uma senha para uso como access point. O problema é que quando gravo outro sketch, que não tem nada a ver com o primeiro, após o reset, aparece a rede de access point. Não sei como remover essa opção. Acredito que está causando instabilidade no roteador, pois o mesmo fica caindo quando ligo o nodeMCU. Desde já agradeço.

  23. show. simples e pratico parabems

  24. Moço não consigo ver o ip da minha

  25. Boa noite.
    Parabéns pela matéria.
    Tenho uma dúvida, utilizando lua para programar.
    Existe alguma forma que após programado o esp8266, não seja possível ler os códigos que estão dentro dele?

  26. excelente explicação , teria como comunicar 2 entre si

  27. Oi Adilson!
    Gostaria de saber, por gentileza, como posso desinstalar corretamente o nodeMCU, pois, estou tendo alguns problemas com bibliotecas, como, por exemplo, abaixo:

    Arduino: 1.8.5 (Windows 10), Placa:”NodeMCU 1.0 (ESP-12E Module), 80 MHz, 115200, 4M (3M SPIFFS)”

    Foram encontradas múltiplas bibliotecas para “ESP8266WiFi.h”
    Usado: C:\Users\Daniel\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WiFi
    Não usado: C:\Users\Daniel\Documents\Arduino\libraries\ESP8266WiFi
    Foram encontradas múltiplas bibliotecas para “ESP8266mDNS.h”
    Usado: C:\Users\Daniel\Documents\Arduino\libraries\ESP8266mDNS
    Não usado: C:\Users\Daniel\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266mDNS
    exit status 1
    Erro compilando para a placa NodeMCU 1.0 (ESP-12E Module)

    Não sei como ele pode encontrar múltiplas bibliotecas, sendo que, em Preferências, Local do Sketchbook: está C:\Users\Daniel\Documents\Arduino e ele vai encontrar bibliotecas duplicadas em …AppData\Local\Arduino15…

    Obrigado

  28. ola não consigo conectar meu nodeMsu com wif e o blynk

    estou com ide arduino 1.8.5

    e o sketch abaixo nada acontece, nem os leds do node mostra interação.
    pode ajudar por favor.

    /* Comment this out to disable prints and save space */
    #define BLYNK_PRINT Serial

    #include
    #include

    // You should get Auth Token in the Blynk App.
    // Go to the Project Settings (nut icon).
    char auth[] = “e0f0a066d3e44bfb9b59bd2d3c4eac4a”;

    // Your WiFi credentials.
    // Set password to “” for open networks.
    char ssid[] = “Giba Coli”;
    char pass[] = “……….”;

    void setup()
    {
    // Debug console
    Serial.begin(9600);

    Blynk.begin(auth, ssid, pass);
    }

    void loop()
    {
    Blynk.run();
    }

    1. Olá Colevati!

      Pelo que entendi você pretende usar o aplicativo Blynk para controlar seu NodeMCU correto?

      Não sei se seu código funcionaria, me parece ter algumas falhas.
      Tem dois includes por exemplo que não estão incluindo nada:
      #include
      #include

      Nunca usei o Blynk a fundo mas me parece que aqui vai precisar de alguma senha pra conectar.
      char pass[] = “……….”;

      Qual tutorial você seguiu para chegar nesse código?

      Você instalou a biblioteca Blynk para IDE Arduino? https://github.com/blynkkk/blynk-library/releases/tag/v0.4.10

      Tente seguir outros tutoriais sobre Blynk e entender como funciona:
      http://pedrominatel.com.br/pt/esp8266/iot-de-forma-facil-com-o-blynk/
      http://blog.fazedores.com/esp8266-controle-o-nodemcu-com-um-app-ios-e-android/
      https://mjrobot.org/2016/10/15/do-blink-ao-blynk/
      http://www.dobitaobyte.com.br/blynk-iot-e-mqtt/
      https://www.youtube.com/watch?v=CkoUMTwgd4c&lc=z13rhx0hqsqyg3ke422ycbnaezqhzvfte
      https://www.hackster.io/abhijitbrain/iot-home-automation-node-mcu-blynk-12cc34
      https://www.youtube.com/watch?v=RLKuIHaraKs

      1. Giovani, obrigado pela ajuda, o problema era o roteador wifi da NET.
        liguei no roteador do smartfone e funcionou acessou a rede.
        Pergunta, porque nao funciona com o rotrador wifi da net?
        teria como? existe algum artigo?

  29. Boa Noite, parabens pelo projeto que liga e desliga o led pela Internet.

    Seria possivel voce adicionar no codigo uma pagina com LOGIN e SENHA antes de direcionar para essa pagina onde liga e desliga o LED ? Estou precisando de um codigo assim mas nao obtive sucesso tentando cria-lo.

    Grato, Eutenio de Melo.

  30. Saudações Prof. Adilson!
    Fiquei meio a ver navios!!! (nunca mexi com esse tal de Lua)
    Baixei os arquivos dessa página: https://www.dropbox.com/sh/ab7oqd44r9min7f/AADWkQegkrM0wEOov0b5DSzIa?dl=0
    e, gostaria de, simplesmente gravar em uma placa NodeMCU; me senti meio confuso com o texto;
    Se vc puder simplificar pra mim, digo, quais arquivos da página devo usar para gravar no nodeMCU, lhe agradeço muito.

  31. Senhores bom dia!

    Segui todos os passos conforme este tutorial, porém não conseguimos fazer ele comunicar. Colocamos o IP conforme o procedimento no ESplores e no navegador tanto no chromer e explorer! Utilizei aqui roteador wireless 3G/4G da TP-LINK ! Poderia por favor nos ajudar?

    Att

    Flavio Moraes

  32. Entao. Consegui conectar, vi o ip, mas nao consigo navegar e acessar via web para acender e apagar tal led. O que pode ser?

  33. Bom dia!
    Gostaria de saber se existe alguma forma de extrair um código já instalado no NodeMCU.
    Pois preciso modifica-lo o código existente, pq sou novo em programação e ainda não consigo escrever um por completo.
    Obrigado

  34. Bom, muito bom, é de muita importância no meu caso que ainda sou leigo na área que ainda estou estudando muito satisfatório.

  35. Olá, gostaria de saber se funciona com o ESP-07, o qual só possui a RX/TX para comunicação.

  36. Olá Filipe! Estou usando uma placa Esp8266 Esp-1 e um FDTI que já vem com os pinos para que simplesmente faço o encaixe da ESP. Porém, ao submeter meu código recebo a mensagem: esptool v0.4.6 – (c) 2014 Ch. Klippel
    setting board to ck
    setting baudrate from 115200 to 115200
    setting port from COM1 to COM6
    setting address from 0x00000000 to 0x00000000
    espcomm_upload_file
    stat C:\Users\alves\AppData\Local\Temp\arduino_build_156539/sketch_aug30b.ino.bin success
    setting serial port timeouts to 1000 ms
    opening bootloader
    resetting board
    trying to connect
    flush start
    setting serial port timeouts to 1 ms
    setting serial port timeouts to 1000 ms
    flush complete
    espcomm_send_command: sending command header
    espcomm_send_command: sending command payload
    espcomm_send_command: receiving 2013 bytes of data
    read 0, requested 1
    error: failed reading byte
    Ocorreu um erro enquanto o sketch era carregado
    warning: espcomm_send_command: cant receive slip payload data

    O que devo fazer? já tentei fazer a gravação usando o Arduíno, mas tenho o mesmo problema.

  37. Bom dia, parabéns pelo conteúdo, tenho uma duvida eu fiz o passo a passo porem quando digitei o programa no Esplorer não ficou habilitado a opção Send to esp, só fica abilitado quando eu aperto o open no lado direito do esplorer e aperto o botão de reset do nodemcu, dai aparece a seguinte mensagem de erro: Can’t autodetect firmware, because proper answer not received (may be unknown firmware).
    Please, reset module or continue.
    ~?–4“R¶£ÿOAE’COAE’CO”µå0†J[àE>‡XÀM5
    þ‚,Ò�x‹$R’OZÛRZÇ8”Ð

    O que estou fazendo de errado?

  38. Boa tarde
    Se colocar código no esp8266 12e como faço para limpar este código para inserir outro?
    Grato! 🙂

    1. Olá Gleison!

      Quando gravar um novo código o anterior será apagado automaticamente.

  39. Olá, tenho duas duvidas, tem como eu colocar um controle de portao para ser acionado pelo modulo relé? tem outra forma?
    o controle usa 12v preciso ultilizar uma fonte ou pode ser a pilha dele mesmo para alimentalo?

    Rosalvo Da Silva Marcelino
  40. Bom dia Adilson. Sou iniciante no NodeMCU, e gostaria de alguns esclarecimentos:
    – para usar o ESPlorer necessito estar com o firmware carregado no ESP8266?
    – quando uso a IDE Arduino, ela compila e grava por cima do endereço do firmware, certo?
    – quando uso o gravador de firmware, existe a possibilidade de gravar em diferentes endereços. o que posso grava além do firmware?
    Desculpe pelo tamanho do questionamento.
    Abraços

  41. galera. Eu consigo enviar os codigos para a placa, pega o ip certinho, eu até consigo pingar na placa.. mas quando acesso via browser nada acontece. Alguma ideia? Só recebo ERR_CONNECTION_REFUSED =/

    1. Bom dia!
      Tb nao consigo mais acessar, vc conseguiu resolver?

    2. Olá a todos, eu também consigo enviar os códigos para a placa, pega o ip certinho, eu até consigo pingar na placa.. mas quando acesso via browser nada acontece. Alguma ideia? Só recebo ERR_CONNECTION_REFUSED

  42. O primeiro código funcionou tudo direito mas o segundo dá sempre erro ao compilar. Ou dá nil ou dá:
    dofile(“ConectarRedeWireless.lua”);
    192.168.137.57 255.255.255.0 192.168.137.1
    ConectarRedeWireless.lua:13: address in use
    stack traceback:
    [C]: in function ‘listen’
    ConectarRedeWireless.lua:13: in main chunk
    [C]: in function ‘dofile’
    stdin:1: in main chunk

  43. pode me ajudar não consigo programar no meu modemcu ,a porta não abre , sera que tenho que fazer alguma coisa para configura-lá ?
    ainda dá esse erro error: Failed to open COM3

    desde já agradeço !!!

  44. No programa ESPlorer o botão ‘Send to ESP’ está oculto, ou seja, não posso cliclar. Há algum procedimento além de colocar o código loop na tela esquerda?

  45. Boa tarde pessoal tudo bem?

    Eu tenho uma placa esp8266 conectada a um modulo j2me via serial, consegui fazer essa placa comunicar com um servidor de socket na internet utilizando comandos AT em seu modulo transparente.

    Bom o problema de utilizar a placa dessa forma é que eu acabo tendo que configurar o ssid e password na mão dentro da midlet , o que para um usuário é extremamente ruim.

    Para contornar esse problema eu carreguei o firmware do nodemcu no esp8266 e montei na linguagem lua um webservice que o usuário vai escolher uma rede disponível e digitar a sua senha via browser, isso ja esta funcionando.

    A minha pergunta é, eu consigo abrir uma conexão socket via comando serial utilizando o nodemcu? Se sim alguém teria algum exemplo para me passar.

    Desde ja agradeço pela atenção dispensada.

  46. Só aparece isto no Termite e não aceita nenhum comando.

    wdt reset
    load 0x40100000, len 27528, room 16
    tail 8
    chksum 0x7f
    load 0x3ffe8000, len 2184, room 0
    tail 8
    chksum 0xa8
    load 0x3ffe8888, len 8, room 0
    tail 8
    chksum 0xfb
    csum 0xfb
    slƒ{lŒŸã„c[0C]þ
    mac 1005

  47. Boa tarde,

    Primeiramente parabéns pelo Blog, conteúdo muito interessante e de simples compreensão. Porém, eu trabalho com programação e não intendo muito de eletrônica, e gostaria de programar alguns sensores do esp8266 nodemcu. Eu vi que alguns você pode conectar direto na placa sem o protoboard.

    Segue um que eu vi na internet (RGB SMD LED Module 5050): http://www.ebay.com/itm/181307916806?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

    Gostaria de saber, o que eu deveria levar em consideração, quando for comprar algum sensor pra conectar direto no esp8266 nodemcu? Somente sensores com 3.3V para a alimentação são possíveis?

  48. Olá Adilson, tudo bom?
    Gostaria de saber se o ESP8266 possui algum pino de entrada com interrupção/contador.

    1. Boa tarde Kleber,

      Todos os pinos aceitam interrupção, exceto a GPIO16. Dê uma olhada neste link, por favor: “https://github.com/esp8266/Arduino/blob/master/doc/reference.md”

      Abraço!

      Adilson – Equipe MakerHero

  49. Bom dia Adilson.

    Gostaria de saber se há como conectar uma antena externa nesta placa para o sinal sempre estar estável.

    Abraços, Mauro .

    1. olá amigo acho q vc deve estar com o mesmo problema que eu , o meu nodemcu perde conexao com a internet direto e nao volta tenho que resetar ele pra continuar, se tiver a resposta me avisa

  50. Adilson,
    eu consigo ligar um sensor PIR ou Umidade/temperatura nessa placa e enviar os dados via wifi ?

  51. Olá Adilson,

    Fiz tudo certo como você descreveu acima, mas quando vou requerir o IP pelo exemplo que você fez nao aparece, tem outra forma de descobrir o IP?

    Somente aparece:
    =wifi.sta.getip()
    =wifi.sta.getip()
    nil
    >

    1. Verifique se seu módulo se conectou a rede. Se estiver conectado e não pegou ip, tente usar um ip estático.

  52. Como ligar esse módulo no rede 220v?

    Vi alguns artigos que mostram que deve ser ligado a um regulador de tensão, alguém recomenda algum? E te algum esquema de ligação?

    1. Voce pode simplismente usar os 5v da porta USB.

  53. Gostaria que voce me ajudasse na comunicação. Nao consigo fazer a comunica de minha placa com o esplorer..

  54. Estou louco que saia um tutorial do ESP-14
    Descobri que é possível atualizar a bios dele para trabalhar com linguagem C
    Mas o material sobre a Pinagem dele é bem escasso ainda.

  55. Bom dia
    Fiz todos os codigos funcionou perfeitamente e acesso de qualquer lugar, so q precisaria de uma resposta pra saber se realmente meu led acendei. Quando acesso de algum lugar q eu nao tenha contato visual com saber se realmente ligou ou apagou? Ja fiz de tudo e nao consegui slguem tem algima sugestão?
    Obrigado

  56. ola, e possivel utilizar o nodemcu numa rede externa?

    1. Eu usei o no ip para criar um Host. E no roteador usei o servidor virtual e direcionei para o ip e a porta do nodemcu

  57. boa noite tenho uma duvida quando tiro o meu nodeMcu do pc e religo ele ele ja perdeu toda programaçao o que eu faço?

    1. resolvido li um pouco mais de seus comentarios e achei a resposta

    2. Boa tarde Tércio,

      Ele não perdeu a programação, provavelmente os arquivos que você criou ainda estão na memória.

      O que você precisa fazer é criar um arquivo chamado init.lua, para chamar o programa desejado durante a inicialização. Dê uma olhada neste artigo, por favor: http://pedrominatel.com.br/esp8266/como-armazenar-e-criar-programas-na-memoria-do-esp8266-com-nodemcu/

      Abraço!

      Adilson – Equipe MakerHero

  58. Olá,

    Pra testar, eu criei um código usando a IDE do Arduino, mas agora quero usar Lua.
    Preciso fazer o flash novamente?
    Pq eu conecto na USB e o led fica piscando (código arduino) e quando conecto pelo Esplorer, aparece a mensagem:
    Communication with MCU…
    Got answer! AutoDetect firmware…
    Communication with MCU established.
    Can’t autodetect firmware, because proper answer not received (may be unknown firmware).
    Please, reset module or continue.

    E quando tento enviar um código:
    Waiting answer from ESP – Timeout reached.

    Além disso, nenhum dos comandos funcionam. Sempre retornam Waiting answer from ESP – Timeout reached.

    Obrigado

    1. Infelizmente amigo voce tera de instalar o firmware de novo. Mas tem um programa muito bom pra windows que se chama nodemcu flasher
      tem um tutorial de como usar ele aqui
      http://www.arduinoecia.com.br/2016/05/firmware-nodemcu-esp8266-ESP-01.html

  59. Waiting answer from ESP – Timeout reached. Command aborted.

    ;(

    1. Não formata.
      Só eu tentar rodar este código abaixo que: “beep”! Mostra esse erro ^^
      while 1 do
      gpio.write(0, gpio.HIGH)
      tmr.delay(10000000)
      gpio.write(0, gpio.LOW)
      tmr.delay(100000)
      end

      1. Mesma coisa tbm mesmo erro, não consigo carregar nada só fica nesse erro!
        Por favor alguém tem ideia de como resolver???

        Timeout reached. Command aborted.

        1. man, o meu da isso direto. Dai eu clico no reset da placa e tudo funciona lindo.

  60. Boa Tarde, estou com uma dúvida quanto a alimentação do ESP8266 NadeMcu, é possível alimenta-lo com uma fonte chaveada de 5V? Minha dúvida esta em relação ao controle de 4 relés, preciso acionar 4 relés com o ESP8266, e preciso fornecer aos relés 5V, GND e o Sinal, isso é possível?

    1. Boa tarde Everson,

      Nesse caso, recomendo usar o módulo relé com fonte externa.

      Abraço!

      Adilson – Equipe MakerHero

      1. Obrigado Adilson pelo retorno.

        Você poderia me orientar como ligar a fonte externa no modulo relé? Se não me engano o GND da fonte tem que estar ligado no mesmo GND do Arduino (ESP8266) é isso? Porém tem dois GNDs na placa e não sei exatamente qual usar, se da alimentação externa ou o GND no lado dos pinos de Sinal.

        Eu posso alimentar o ESP8266 NodeMcu com uma fonte normal de celular 5V, via mini usb?

        Abç

  61. Eu gostaria que alguém pudesse me explicar melhor cada linha dessa parte do código. O brigado!

    — Definicoes do Web Server
    srv=net.createServer(net.TCP)
    srv:listen(80,function(conn)
    conn:on(“receive”, function(client,request)
    local buf = “”;
    local _, _, method, path, vars = string.find(request, “([A-Z]+) (.+)?(.+) HTTP”);
    if(method == nil)then
    _, _, method, path = string.find(request, “([A-Z]+) (.+) HTTP”);
    end
    local _GET = {}
    if (vars ~= nil)then
    for k, v in string.gmatch(vars, “(%w+)=(%w+)&*”) do
    _GET[k] = v
    end
    end

  62. Ola, é possivel usar o modulo nRF24l01 com o nodemcu?

  63. Boa noite Adilson!
    Qual o comando para remover todos os arquivos do Esp8266-E12, usando ESPlorer?
    Tipo, deixar ele zerado.

    1. Boa tarde Roberto,

      Utilize o botão “format”, no lado direito do ESPlorer, ao lado da console.

      Abraço!

      Adilson – Equipe MakerHero

      1. E após fazer isso, o que deve ser feito?

  64. Ola, Obrigado pela informações !!! Funcionou de primeira.
    Mas agora estou tentando transformar esse código lua para usar na IDE do arduino.
    Poderia me dar uma dica de como ficaria essa parte :

    — Definicoes do Web Server
    srv=net.createServer(net.TCP)
    srv:listen(80,function(conn)
    conn:on(“receive”, function(client,request)
    local buf = “”;
    local _, _, method, path, vars = string.find(request, “([A-Z]+) (.+)?(.+) HTTP”);
    if(method == nil)then
    _, _, method, path = string.find(request, “([A-Z]+) (.+) HTTP”);
    end
    local _GET = {}
    if (vars ~= nil)then
    for k, v in string.gmatch(vars, “(%w+)=(%w+)&*”) do
    _GET[k] = v
    end
    end

  65. Bom dia Adilson,

    cara estou com uma dúvida aqui….
    existe alguma maneira de aumentar o número de conexões em um módulo (SOFTAP) ?
    Verifiquei que o nodemcu limita a 4 conexões simultâneas.
    Tens alguma ideia se é possível aumentar este número e como fazer isso?
    Fico no aguardo.

    1. Boa tarde Paulo,

      Bem difícil, a não ser que você pudesse reprogramar o “core” do ESP, mas aí temos outras variáveis como quantidade de memória no módulo, por exemplo.

      A princípio, minha resposta seria: “não é possível”.

      abraço!

      Adilson – Equipe MakerHero

  66. Alguém ai sabe me dizer, se tem alguma bateria na voltagem do NODEMCU, ou tenho mesmo que usar um regulador de tensão? E também gostaria de saber qual a amperagem que essa placa precisa no mínimo, pois estou a comprar uma bateria do ALI, http://goo.gl/k329Ah

  67. Para ligaro nodeMcu 12 E , no Arduino mega como devo proceder? eu estava pensando em um CI 4050 que é um buffer inversor para fazer a conexão com o Merga e o nodeMcu 8266. Porque o no arduino mega a pwm é de 0 a 5v e o nodemcu deve ser de 0 a 3.3v
    Ou você tem outra solução para me indicar?

    1. bates mal desse melao…..

  68. Boa noite! Comprei um NodeMcu ESP8266 e começei a testar uns programas nele..Entretanto estou percebendo que toda vez que desligo o módulo e ligo novamente o programa não executa, como se não tivesse sido gravado na memória…Alguém sabe me dizer porque esta acontecendo isso e como resolver? Grato!

    1. Bom dia Ivanildo,

      O NodeMCU não funciona da mesma maneira que o Arduino, por exemplo. No NodeMCU, você precisa dizer qual dos programas na memória serão executados quando você ligar o módulo, isso você faz criando um arquivo chamado init.lua.

      Ao ligar o NodeMCU, ele procura o init.lua e executa os comandos que estiverem ali dentro. Então se você tem um programa chamado teste_nodemcu.lua que você quer executar toda vez que o módulo liga, você deve criar um init.lua mais ou menos assim:

      function startup()
      print(‘in startup’)
      dofile(‘test_nodemcu.lua’)
      end

      tmr.alarm(0,5000,0,startup)

      O programa acima executa o test_nodemcu.lua depois de 5 segundos do boot do módulo.

      Abraço!

      Adilson – Equipe MakerHero

      1. Muito bom Adilson.
        Só que no meu teste, usei o código acima e não funcionou, modifiquei, trocando os apóstrofos (‘) por aspas (“) , o código ficou assim:
        function startup()
        print(“in startup”)
        dofile(“test_nodemcu.lua”)
        end

        tmr.alarm(0,5000,0,startup)

        Desta maneira funcionou perfeitamente, estou usando um powerbank na alimentação para testes e posso conectar e desconectar que ele sempre inicia o programa normalmente.
        Muito bom o post.
        Um Abraço.

      2. Boa Noite.

        Sou novo no assunto e tenho uma duvida….onde eu digito estes comando ? Seria na rotina do meu próprio script ?

      3. Boa tarde! Eu quero fazer a mesma coisa porém estou usando a IDE do Arduino. Como devo fazer para iniciar ja com o arquivo que quero?
        Obrigada

  69. Bom dia,

    Estou tendo uma mensagem de “ERROR” quando tento mandar o comando gpio.mode(1, gpio.OUTPUT) pela serial, sabe qual pode ser o motivo?

    1. Consegui resolver, gravando a firmware mais atualizada do NodeMCU, creio que algumas placas compradas na china não venham com o firmware correto instalado, fica a dica para todos.

  70. Estou utilizando o ESP8266 NodeMcu V3 e o módulo está ocupando toda a protoboard. Não sobram espaços para conectar os fios. Vocês utilizaram algum modelo especial de protoboard ou o módulo é mais atual e, consequentemente, menor?

    Abs

    1. Bom dia Marcelo,

      Estamos usando a nossa protoboard de 400 pontos, como essa: https://www.makerhero.com/pd-6b605-protoboard-400-pontos.html

      O nodeMCU fica bem no meio da protoboard, e sobra uma fileira de pinos de cada lado, o que permite a prototipagem. Existe uma versão anterior do NodeMCU (uma placa amarela), que realmente não cabe.

      Abraço!

      Adilson – Equipe MakerHero

  71. Parabens pelo trabalho, gostaria de saber se tem alguma maneira de programar o ESP8266 para WiFi direct(P2P)…. Valeu !

    1. Boa tarde Matheus,

      Você pode configurar um módulo para o modo STA (station), e o outro para o modo AP (access point), com o comando AT+CWMODE, e conectando os dois diretamente… é mais ou menos isso ?

      Abraço!

      Adilson – Equipe MakerHero

      1. Não meu caro, no datasheet diz que o módulo é compatível com WIfI Direct, que seria comunicação P2P, a maioria dos celulares tem essa tecnologia. O Wi-Fi direct permite que você comunique com outro dispositivos diretamente. Já implementei o Wi-Fi direct em uma aplicação Android, agora falta fazê-la no módulo.

        1. Boa tarde Matheus,

          Pois é. eu não achei nada relacionado à wifi direct nos comandos AT do módulo, o que você tem é o modo AP, o modo STA e o “both”… vou pesquisar mais um pouco e se achar algo posto aqui.

          Abraço.

          Adilson – Equipe MakerHero

  72. Olá Adilson

    nesse caso eu somente consigo acessar localmente.

    como faço pra controlar o led via internet?

    1. Procure por PortForwarding e redirecionamento de IP que dá pra fazer, já fiz isso aki

  73. parabens , deu quase tudo certo , apenas me apareceu este erro , alguem me pode dizer o que e :
    > dofile(‘script2.lua’)
    script2.lua:9: ‘=’ expected near ‘do’
    > =wifi.sta.getip()
    10.0.0.109 255.255.255.0 10.0.0.1

  74. Olá Adilson,
    parabéns pela excelente explicação sobre com programar o NODEMCU e pelo exemplo de programação em linguagem LUA. Eu tenho alguma experiência em programação em C, ( embora esteja um tanto enferrujado) mas a linguagem LUA, a qual estou tentando aprender, aparenta ter uma sintaxe muito estranha! Seria possível adicionar mais comentários no programa-exemplo detalhando-o melhor?

    Abraços,

    João Roberto Gabbardo

  75. Parabéns pelo texto, ainda há pouco material sobre a programação do módulo com LUA em português. Vocês tem alguma lista dos comando em LUA que podem ser utilizados com o ESP?

    1. Bom dia Rafael,

      Este link pode te ajudar: http://www.lua.org/manual/5.1/pt/

      Abraço!

      Adilson – Equipe MakerHero

  76. Parabéns. Posso programar este módulo com comandos AT através de um terminal ou tenho que utilizar a Lua?

  77. Qual a velocidade de comunicação utilizada neste exemplo?

  78. Este programa ESPlorer é instalado na máquina ou é só executável? É necessário instalar o java antes de instalar o ESPlorer?

    1. Boa tarde Rafael,

      Não é instalado, é só executar o arquivo com extensão BAT. Ele precisa do java instalado na máquina.

      Abraço!

      Adilson – Equipe MakerHero

  79. Parabens, excelente matéria.

    1. Valeu Claudio, abraço!

      Adilson – Equipe MakerHero