16 maio 2016

Gravando firmware NodeMCU no ESP8266 ESP-01

Que tal programar o módulo ESP8266 ESP-01 utilizando Lua ? Isso é possível com o upgrade de firmware do módulo, já que a versão que vem de fábrica aceita apenas comandos AT. Neste tutorial, mostraremos como gravar o firmware NodeMCU no ESP8266 ESP-01.

ESP8266 ESP-01 com NodeMCU

Para realizar a gravação do firmware NodeMCU no ESP-01, vamos utilizar um módulo USB-TTL com chip FTDI, mas você pode usar outros conversores USB-Serial, e até mesmo um Arduino para fazer a ponte entre o computador e o ESP-01.

Conexão do módulo FTDI ao ESP-01


Conecte o conversor FTDI FT232 ao ESP-01 conforme o circuito abaixo. Não esqueça de mudar o jumper do módulo FTDI para a posição 3.3V, já que é essa a tensão de trabalho dos pinos do módulo ESP8266:

Gravando firmware nodeMCU no ESP8266 ESP-01

Para permitir a gravação do firmware, o pino GPIO0 do ESP-01 deve estar ligado ao GND, e deve ser desconectado quanto quisermos entrar em modo de programação.

Gravação do firmware NodeMCU no ESP-01


Primeiramente faça o download do firmware do NodeMCU neste link. Escolhemos o firmware nodemcu_integer, que consome menos memória: 

Download firmware NodeMCU


Faça agora o download do programa de gravação do firmware, o NodeMCU Flasher, Não é necessária a instalação do programa, apenas descompacte o arquivo e execute o ESP8266Flasher.exe que está na pasta \Win32\Release (se o seu Windows for 32 bits), ou \Win64\Release (se o Windows for 64 bits) para que a tela principal do programa seja exibida, já com a porta serial (COM21, no nosso caso) do conversor FTDI:

NodeMCU Flasher - Tela principal

Na aba Advanced acesse as configurações do programa e altere o Baudrate para 115200. Não é necessário mexer nos outros parâmetros.

NodeMCU Flasher - Serial

Agora, vá até a aba Config e na primeira linha coloque o caminho (path) do arquivo do firmware que baixamos anteriormente. No campo relativo ao endereço, ao lado do nome do arquivo, selecione o endereço 0x00000:

NodeMCU Flasher - Firmware

Retorne à tela principal e clique no botão Flash(F). Aguarde o processo de upgrade. Se os endereços "MAC" do ESP-01 não forem detectados, desligue a alimentação do módulo por alguns segundos e ligue novamente

NodeMCU Flasher - Upgrade

Finalizado o processo de upgrade, desconecte o pino GPIO0 para colocar o módulo em modo de programação..

Teste do firmware NodeMCU


Vamos testar o firmware gravado usando o ESPlorer, disponível neste link. Já vimos como usar esse programa no post Web Server com o módulo ESP8266 NodeMCU e DHT22. Depois de entrar no programa, selecione a porta serial do módulo FTDI e clique em Open.

Se tudo estiver certo, a console do programa (janela do lado direito), deve apresentar as informações de firmware do ESP-01, agora com o NodeMCU:

ESPlorer - Conexão ESP8266 ESP-01

Vamos ver se realmente funciona com a programação em Lua ? Adicione um led ao circuito:

FTDI FT232 ESP8266 ESP-01

Na janela do lado esquerdo do ESPlorer, copie ou digite o programa abaixo, que vai piscar o led ligado à GPIO2 do ESP-01 em intervalos de 1 segundo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-- Programa: Led com ESP8266 ESP-01
-- Autor: Arduino e Cia

-- Configuracao pinos e variaveis
pin = 4            --> GPIO2
value = gpio.LOW
duration = 1000    --> 1 second

-- Funcao que altera o estado do led
function toggleLED ()
    if value == gpio.LOW then
        value = gpio.HIGH
    else
        value = gpio.LOW
    end
    gpio.write(pin, value)
end


-- Inicializa a GPIO
gpio.mode(pin, gpio.OUTPUT)
gpio.write(pin, value)

-- Executa a função toggleLED()
tmr.alarm(0, duration, 1, toggleLED)

Clique no botão SEND to ESP para que o programa seja transferido para o módulo e automaticamente executado.

Em um próximo post sobre o ESP8266 ESP-01 usaremos o mesmo firmware para criar uma conexão deste pequeno módulo à rede wireless.

17 comentários:

  1. Olá!

    Muito bom seu tutorial. Parabéns!

    Eu acho que fiz algo errado.

    A gravação do firmware ocorreu sem nenhuma mensagem de erro.

    Em seguida, mudei a pinagem de alimentação, reconectei e abri o ESPlorer e ao abrir a porta, vi essa mensagem no console:

    "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.
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿ"

    Verifiquei a porta no Gerenciador de dispositivos do Windows e alterei velocidade para 115200. Fechei tudo e continua apresentando erro.

    Você pode me ajudar com esse erro?

    Obrigado,

    ResponderExcluir
    Respostas
    1. Oi Edwaldo,

      Tentou outras velocidades ? Comece com 9600 e vá subindo.

      Abraço!

      Excluir
  2. Excelente tutorial! Parabéns, deu tudo certo!
    Obrigado!

    ResponderExcluir
  3. Amigos, Bom Dia.
    No tutorial "Conecte o Arduino na rede wireless 802.11 com o módulo ESP8266", vocês programaram somente o UNO ? Como ficam as configurações na ESP?

    ResponderExcluir
    Respostas
    1. Oi Carlos,

      Sim, nesse caso programamos somente o UNO, pois o ESP serve apenas para conexão à rede, não vai nenhuma programação nele.

      Abraço!

      Excluir
    2. E caso eu já tenha programado algo ? Consigo "resetar" as informações para default ?

      Muito obrigado pelas informações !

      Excluir
    3. Oi Carlos,

      Consegue sim. No caso do ESP, você pode apagar arquivos, "formatar" o dispositivo ou gravar o firmware para voltar o módulo à configuração original.

      Abraço!

      Excluir
  4. Bom dia.Parabéns, vcs sempre tirando as minhas dúvidas.
    Poderia explicar como resetar, formatar e apagar arquivos do ESP8266-E12, com LUA ESPlorer.
    Obrigado.

    ResponderExcluir
    Respostas
    1. Oi Roberto,

      Obrigado, no lado direito do ESPlorer tem um botão "formatar", ele apaga tudo que tem no ESP... :)

      Abraço!

      Excluir
  5. Olá, tenho muitas duvidas, rs. Gostaria de saber se apos conectar o arduino ao wireless consigo controlar ele atraves de um celular android, para movimentar servo motores e uma camera. Obrigada pela atenção

    ResponderExcluir
    Respostas
    1. Oi Yara,

      Consegue sim, você só tem que escolher um software de controle para Android.

      Abraço!

      Excluir
  6. Olá, tenho um nodemcu v3, o procedimento para atualização do firmware é o mesmo? No link disponibilizado do firmware não tem o arquivo bin..

    ResponderExcluir
    Respostas
    1. Boa noite Eduardo,

      O bin está na página sim. Não está no começo, está mais ou menos no meio da página.

      Abraço!

      Excluir
    2. Obrigado pela resposta;; Legal, consegui gravar o novo firmware.. Só me parece que não está respondendo os comandos AT.. Esse firmware disponibiliza o uso dos comandos AT?
      Abraços

      Excluir