Manual

do

Maker

.

com

ESP8266 - Instalar firmware nodeMCU usando Linux ou Windows

ESP8266 - Instalar firmware nodeMCU usando Linux ou Windows

Trocar o firmware do seu ESP8266, seja ele qual modelo for, é um processo bastante simples. Neste post será exemplificada a sobrescrição do firmware AT da espressif com o firmware nodeMCU, um firmware que oferece recursos extras e acessos ágeis a funcionalidades que usando AT tornam o processo um pouquinho mais longo e demorado. Também será apresentada uma IDE de desenvolvimento para linguagem LUA e MicroPython, flashers para Windows e Linux e referências da linguagem LUA.

ESPlorer

O ESPlorer nesse link é uma IDE multiplataforma escrita em Java, criado pela 4refrOnt russa para desenvolver em LUA para nodeMCU e MicroPython e também suporta todos os comandos AT. Infelizmente, por ser Java requer Java SE a partir da versão 7 instalada. Para executar em Linux, pode-se abrir um terminal e digitar:

java -jar ESPlorer.jar

As principais características dessa IDE são:
* highlight para LUA e Python
* Temas de cores
* Refazer/Desfazer
* Envio de dados para o ESP8266
* log detalhado
* entre outros

Um bom tutorial em PDF pode ser baixado (por sua conta e risco) nesse link. Para utilizar essa IDE, obviamente você precisa ter o firmware nodeMCU instalado em seu ESP8266.

Se preferir, pode ir até o repositório do projeto no GitHub. Ou no site oficial, através desse link.

Subir código através da IDE (firmware nodeMCU)

Para fazer a interface, você precisará de um adaptador FTDI/USB. O meu tem a opção de 3.3v ou 5v configurado por jumper. Não conecte o ESP8266 diretamente a 5v ou "capuft", se é que entendeu a onomatopéia. O wiring do meu modelo fica assim:

esp8266-ftdi-300x181.webp

LUA é uma linguagem bastante simples, vale a pena dar uma olhada. Um pequeno exemplo de código para fazer blink:

lighton=0
pin=4
gpio.mode(pin,gpio.OUTPUT)
tmr.alarm(1,2000,1,function()
if lighton==0 then
        lighton=1
        gpio.write(pin,gpio.HIGH)
    else
        lighton=0
         gpio.write(pin,gpio.LOW)
    end
end)

Repare que não há declaração de tipo para variáveis, assim como no Python. Perceba também que gpio é um objeto e OUTPUT é um atributo. Não é difícil adaptar-se à sua sintaxe, bastante parecida com Python e provavelmente para hobistas é a melhor opção pela agilidade que isso dá na programação, além de simplificar a depuração de erros.

Depois de ter a conexão devidamente estabelecida entre o ESP8266 e seu computador utilizando o ESPlorer, selecione a aba NodeMCU, clique em Scripts e crie um novo script chamado init.lua. Copie o código disposto no exemplo para essa aba do script que você acabou de criar e clique em "Save to ESP".

Se desejar remover o script posteriormente, digite (à esquerda) file.remove("init.lua") e clique em Send. Outra opção é utilizar o comando file.format() para remover todos os arquivos salvos no ESP8266.

Resumindo, no canto inferior direito da IDE você tem um inputbox que após o sinal de igual você pode inserir comandos lua como por exemplo, wifi.sta.getip(). Após, basta clicar em Send, simples assim de interagir. Fora isso, você escreve seu script e a partir da própria IDE salva, faz upload, executa, apaga, etc.

Espero que isso tenha lhe motivado a dar o próximo passo.

Flasher

Será necessário um programa com habilidade de fazer o upload do firmware para o ESP8266. O flasher oficial do nodeMCU (para Windows) pode ser baixado nesse link. Sua interface é bastante intuitiva e a única coisa a mudar é o path para o firmware (na linha que está em verde), como você pode observar no screenshot que tirei rodando o programa com Wine (apenas para mostrar a interface).

Se pretende subir o firmware no Linux, você pode pegar o ESPTool nesse link, ferramenta escrita em Python e a que utilizo. Você vai precisar instalar também python-serial. Enfim, sigamos com o flashing; sua sintaxe é bastante simples:

sudo python esptool.py --port /dev/ttyUSB0  write_flash 0x00000 local_do_firmware_nodeMCU.bin

No meu caso, o arquivo descritor do dispositivo era ttyUSB0, mas dependendo da ocasião, o seu pode ser outro. Uma das formas de saber o dispositivo é usar:

tail -f /var/log/messages

Então conecte o dispositivo FTDI e observe o terminal posteriormente.

Se sua distribuição não está com o messages habilitado, o arquivo não exisitirá, então você pode fazer outro procedimento:

dmesg >old
#conecta seu dispositivo e...
dmesg >new
diff old new

Isso deve mostrar o dispositivo que foi conectado.

Firmware

O firmware é pequeno, por isso tanto faz você baixá-lo previamente ou fazer a conexão do seu dispositivo primeiro. Pegue-o nesse link. Logo que abrir a página, vá em "Branch: master" e escolha "Branch: dev", então clique em "releases", localizado na posição do screenshot abaixo:

Baixe o mais atual (na época desse post, a versão mais atual está datada como 27 de Junho de 2015).

Após fazer o flashing, abra o ESPlorer e configure a velocidade para 9600kbps (kilobauds, só pra constar). Faça a conexão e clique em Reset para ver a versão do firmware.

Se você optou por gravar o programa descrito anteriormente em seu ESP8266 e gostaria de testá-lo, faça o wiring desse modo:

blink-esp8266-1-300x236.webp

Após fazer o flashing, retire o fio do GPIO e reinicie o ESP8266. Conecte via serial à 9600kbps. Se você já sabe o SSID e senha que vai utilizar, o primeiro passo para colocá-lo na rede é executar essa série de comandos:

wifi.setmode(wifi.STATION)

Reiniciar e então veja se o modo está correto (1):

print(wifi.getmode())

Agora, tendo em mãos o SSID e senha:

wifi.sta.config("redeAconectar","senha1234...")
wifi.sta.connect()

Para auto-conexão, use 0 para desativar e 1 para ativar:

wifi.sta.autoconnect(1)

E para conferir o ip (retorna ip, mascara e gateway):

print(wifi.sta.getip())

Tem uma lista gigantesca de comandos predefinidos, sugiro fortemente que faça uma leitura em http://www.nodemcu.com/docs/wifi-sta-module/ porque além dos comandos documentados ainda tem exemplos dos comandos e de seus respectivos retornos. Apenas para ter uma idéia, essa é a lista de categorias (se é que pode ser chamado assim):

NODE MODULE
FILE MODULE
WIFI MODULE
WIFI.STA MODULE
WIFI.AP MODULE
TIMER MODULE
GPIO MODULE
PWM MODULE
NET MODULE
NET.SERVER MODULE
NET.SOCKET MODULE
I2C MODULE
ADC MODULE
UART MODULE
ONEWIRE MODULE
BIT MODULE
SPI MODULE
MQTT MODULE
MQTT CLIENT MODULE

O que mais dá pra fazer?

Até o ESP8266-01 fica mais poderoso com o nodeMCU. Com ele, fica fácil dispensar outra MCU, ainda mais de o objetivo for IoT, onde o conjunto de hardware fica super reduzido, bastando um regulador de tensão, sensor, pack de bateria e o ESP-8266.

Espero que o post tenha lhe agradado e se sim, compartilhe-o nas redes sociais e siga Manual do Maker no facebook.

Pra mim, particularmente, esse tutorial será um problema, porque as idéias que me surgem na mente vão render muitos outros posts.

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Manual do Maker no Facebook.

Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.

Próximo post a caminho!

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.