sábado, 19 de diciembre de 2015

Reiniciar NodeMCU en Windows


Recientemente, al estar trasteando con el puerto serie de ESP8266 cargué el siguiente programa:
val = 65
while 1 do
 uart.write(0,string.char(val),"\r\n")
 val = val + 1
 if val > 90 then
    val = 65
 end
 tmr.delay(1000000)
end

Este programa lo que hace es, simplemente, ir mostrando por el puerto serie las letras del abecedario. Mi sorpresa fue que, a partir de ese momento, el módulo dejó de responder.

No podía realizar un reset por software, no respondía a ningún comando, después de un reset por hardware (botón de reset) se reiniciaba el programa y seguía mostrando las letras del abecedario.

Al mantener pulsado el botón de FLASH al alimentar el módulo, éste parecía entrar en modo espera y solo después de pulsar reset el módulo revivía, volviendo a ejecutar el dichoso programita.

La solución la encontré cargando nuevamente el firmware de NodeMCU. Para ello, nos descargamos de github el último firmware y lo descomprimimos en una carpeta de nuestro ordenador. A continuación, vamos a la carpeta win32 o win64 dependiendo del sistema operativo de tu PC, abrimos la carpera Release y ejecutamos el programa ESP8266Flasher.exe

Antes de conectar el módulo al puerto serie, debemos conectar el GPIO0 (Pin D3) a masa que equivale a pulsar el botón de FLASH.

nodemcudevkit_v1-0_io.jpg

Automáticamente, si tenemos instalado los driver del puerto, detectará nuestro módulo y cambiará el número del puerto COM

flasher01.png

A continuación hacemos click en el botón Flash(F) y esperamos a que termine la operación.

flasher02.png

Una vez que haya terminado, quitamos la conexión del pin GPIO0 a masa, pulsamos el botón de RESET de nuestro módulo NodeMCU y ya podemos seguir trabajando con nuestro ESP8266.

Communication with MCU...
Got answer! AutoDetect firmware...
NodeMCU firmware detected.
=node.heap()
21456

Al realizar un reset (node.restart()) veo que la información que me muestra es:
NodeMCU 0.9.5 build 20150318  powered by Lua 5.1.4
y antes de reiniciar el firmware la versión era la 0.9.6. Además no puedo utilizar el módulo dht
init.lua:12: attempt to index global 'dht' (a nil value)
Voy a la web de Github y veo que, efectivamente, la última versión es la 0.9.6. Descargo la versión float (no sé que diferencia hay con la otra versión).
Volvemos a ejecutar ESP8266Flasher.exe y seleccionamos la pestaña Config. En dicha pestaña, sustituir INTERNAL://NODEMCU por el firmware que hemos descargado:

Captura.PNG

Por último, vamos a la pestaña Operation y, como en el caso anterior, hacemos click en Flash(F)
Una vez que el proceso ha terminado, comprobamos la versión del firmware:
NodeMCU 0.9.6 build 20150704  powered by Lua 5.1.4
y ya podemos utilizar el módulo dht11
También podemos crear nuestro propio firmware. Para ello, vamos a la web NodeMCU custom build y, después de introducir nuestro correo electrónico ya que es allí donde nos enviarán el enlace para la descarga del firmware,  seleccionamos aquellos módulos que nos interesa incluir en el firmware. Yo he seleccionado todos los documentados:

compilación.PNG

A continuación hacemos click en Start Your build y nos aparecerá un mensaje indicándonos la compilación elegida.
compilación_01.PNG
compilación_02.PNG

Una vez que descarguemos la compilación, ya solo nos resta repetir el proceso anterior de carga del firmware.

NodeMCU custom build by frightanic.com
branch: master
commit: 93421f2702fb02ce169f82f96be7f2a8865511e1
SSL: false
modules: node,file,gpio,wifi,net,pwm,i2c,spi,tmr,adc,uart,ow,bit,mqtt,u8g,ws2812,cjson,crypto,rc,dht,ws2801
build  built on: 2015-12-19 15:57
powered by Lua 5.1.4 on SDK 1.4.0
 

Fuentes:
Cargar un nuevo firmware:
Construir nuestro propio firmware:

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.