Post on 24-Feb-2018
7/25/2019 ESP8266 Con Firmware Nodemcu
1/9
5/2/2016 Agricultura de precisin "Hazlo tu mismo": ESP8266 con firmware Nodemcu
http://agrodiy.blogspot.com.es/p/esp8266-con-firmware-nodemcu.html 1/9
Blog dedicado a la publicacin de mis investigaciones y desarrollos personales en el mbito de la
agricultura de precisin a nivel "Hazlo tu mismo" , con el objetivo de aprender y disfrutar.
Agricultura de precisin "Hazlo tu mismo"
ESP8266 con firmware Nodemcu
El proyecto que sugerido es el control de una luz led de forma remota con el
mdulo ESP8266. Mediante una conexin wifi accederemos a una web en el
que podremos seleccionar la opcin de apagar o encender un led de forma
remota. En el siguiente vdeo podrs ver su funcionamiento bsico.
https://plus.google.com/+AlbertodePascualTormo/posts/2o7Cn3NV3dy
El proyecto se basa en un elemento simple como es un diodo led, sin embargo
podra extrapolarse a proyectos de ms envergadura como el uso de rels para
actuar con otros dispositivos a mayor voltaje.
Para realizar el proyecto vamos a usar el firmware Nodemcu, el cual nos
permite programar el dispositivo de forma independiente sin la necesidad por
ejemplo de usar microcontroladores como Arduino. Nodemcu usa el lenguaje de
programacin LUA, por lo que te recomiendo uses el siguiente tutorial para
familiarizarte con dicho lenguaje.
http://tylerneylon.com/a/learn-lua/
Para instalar el firmware, lo haremos de forma s imilar al firmware oficial. Este
procedimiento vara segn las herramientas usadas y el sistema operativo. En
la siguiente imagen se muestra el esquema de conexin del mdulowifi al PC
(recuerda que la actualizacin se hace conectando GPIO0 a GND)
Instalar firmware Nodemcu desde linux:
Necesitamos una utilidad para flashear el dispositivo que se llama ESptool
(requiere de pySerial, as que si no dispones de esta utilidad debers instalarla
en tu sistema).
Descarga el programa de flasheo aqu:
Drones(1)
Actualidad
Inicio
Tutoriales
1 Ms Siguiente blog Crear un blog Acceder
https://plus.google.com/+AlbertodePascualTormo/posts/2o7Cn3NV3dyhttp://agrodiy.blogspot.com.es/http://agrodiy.blogspot.com.es/https://www.blogger.com/next-blog?navBar=true&blogID=6620525534592713876https://www.blogger.com/home#createhttps://www.blogger.com/https://www.blogger.com/https://www.blogger.com/home#createhttps://www.blogger.com/next-blog?navBar=true&blogID=6620525534592713876https://www.blogger.com/http://agrodiy.blogspot.com.es/p/blog-page.htmlhttp://agrodiy.blogspot.com.es/http://agrodiy.blogspot.com.es/search/label/Droneshttp://pyserial.sourceforge.net/http://tylerneylon.com/a/learn-lua/https://plus.google.com/+AlbertodePascualTormo/posts/2o7Cn3NV3dyhttp://agrodiy.blogspot.com.es/7/25/2019 ESP8266 Con Firmware Nodemcu
2/9
5/2/2016 Agricultura de precisin "Hazlo tu mismo": ESP8266 con firmware Nodemcu
http://agrodiy.blogspot.com.es/p/esp8266-con-firmware-nodemcu.html 2/9
https://github.com/themadinventor/esptool
La ltima versin de NodeMcu se encuentra en la siguiente direccin
https://github.com/nodemcu/nodemcu-firmware/releases
En el presente tutorial se ha usado una versin de desarrollo con el prefijo "dev",
selecciona del listado la que desees. Una vez descargado todo lo necesario,
colocamos esptool.py y nodemcu_latest.bin en la misma carpeta y ejecutamos
el siguiente comando en la consola de linux (debers de cambiar en su caso el
puerto usado)
sudo./esptool.py-p /dev /ttyUSB0 write_flash 0x000000nodemcu_float_0.9.6-dev_20150704.bin
Si queremos cambiar la velocidad del puerto serie hay que aadir
sudo ./esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash 0x000000nodemcu_float_0.9.6-dev_20150704.bin
Despus de actualizar el firmware necesitamos una utilidad llamada ESPlorer,
que sirve para entre otras cosas, escribir los scripts en LUA para
posteriormente subirlos al mdulo wifi. Esta aplicacin necesita para funcionar
Java 8 por lo que si te encuentras en linux tendrs que realizar previamente la
instalacin. Te recomiendo que veas las siguientes instrucciones.
Instalar Java 8 en ubuntu
http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html
Una vez instalado Java, te puedes descargar ESPlorer desde la siguiente
direccin:
http://esp8266.ru/esplorer-latest/?f=ESPlorer.zip
Al descomprimir el archivo, comprobars que no existe instalador alguno sino
que se ejecuta directamente desde la consola con la s iguiente instruccin.
java -jar ESPlorer.jar
Te recomiendo que hagas un acceso directo a dicha aplicacin.
El montaje es muy sencillo, del pin GPIO2, sacamos un cable hacia una
resistencia (calcula previamente la resistencia necesaria). A la salida de la
resistencia conectamos el nodo del led y finalmente el ctodo del led lo
conectamos a tierra. La siguiente imagen muestra un esquemtico:
Montaje
http://esp8266.ru/esplorer-latest/?f=ESPlorer.ziphttp://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.htmlhttps://github.com/nodemcu/nodemcu-firmware/releaseshttps://github.com/themadinventor/esptool7/25/2019 ESP8266 Con Firmware Nodemcu
3/9
5/2/2016 Agricultura de precisin "Hazlo tu mismo": ESP8266 con firmware Nodemcu
http://agrodiy.blogspot.com.es/p/esp8266-con-firmware-nodemcu.html 3/9
Es muy importante que te familiarices con el API de Nodemcu para que puedas
programar el mdulo sacndole el mximo partido, esto lo podrs hacer en la
siguiente direccin:
https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en
Lo primero que vamos a hacer es explicar el cdigo bloque a bloque para
comprenderlo y al final del tutorial lo veremos en conjunto:
Cuando el mdulo wifi es alimentado, lo primero que hace es buscar y cargar
un archivo denominado init.lua, desde este archivo se puede llamar a otros
archivos de cdigo, como veremos ms adelante
Explicacin de init.lua
--init.lua
print('Mensaje de bienvenida')
Lo primero que hacemos es definir el pin que usaremos como salida. Paranuestro proyecto vamos a utilizar el GPIO2. En este firmware estn predefinidos
los GIPIO con una numeracin segn la tabla siguiente:
IO index ESP8266 pin IO index ESP8266 pin
0 [*] GPIO16 7 GPIO13
1 GPIO5 8 GPIO15
2 GPIO4 9 GPIO3
3 GPIO0 10 GPIO1
4 GPIO2 11 GPIO9
5 GPIO14 12 GPIO10
6 GPIO12
Definimos una variable para GPIO2, cuyo ndice es el 4
pinled=4
Seguidamente tenemos que indicar que el pin va a actuar como salida
gpio.mode(pinled, gpio.OUTPUT)
Finalizado con la configuracin de los GPIO, vamos a configurar el apartado del
wifi. Para nuestro proyecto, el mdulo va a actuar como punto de acceso, es
Explicacin de la Programacin
https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en7/25/2019 ESP8266 Con Firmware Nodemcu
4/9
5/2/2016 Agricultura de precisin "Hazlo tu mismo": ESP8266 con firmware Nodemcu
http://agrodiy.blogspot.com.es/p/esp8266-con-firmware-nodemcu.html 4/9
decir , va a actuar como si fuera un router al que se le va a conectar distintos
dispositivos, como pueden ser mviles, ordenadores, etc.
wifi.setmode(wifi.SOFTAP)
En este modo hay que establecer el nombre del punto de acceso que estamos
configurando, as como la contrasea que nos tendrn que facilitar las
estaciones que se nos quieren conectar para obtener una direccin IP. No
olvides en cambiar con tus propios parmetros esta configuracin.
cfg={}
cfg.ssid="nombre de la red"
cfg.pwd="contrasea"
wifi.ap.config(cfg)
La siguiente lnea es una comprobacin de que la configuracin como punto de
acceso se ha llevado a cabo imprimiendo la direccin IP por la consola. Por
defecto la direccin ip es 192.168.4.1
ap=(wifi.ap.getip()) --obtiene la IP y la almacena en apprint(ap) --imprime por consola la direccin ip
Un vez configurado el punto de acceso, la siguiente lnea especfica que se
cargue el fichero ledserver.lua
dofile("ledserver.lua")
El siguiente cdigo corresponde al fichero ledserver.lua que ser subido junto
con init.lua:
Vamos a crear dos funciones que se encargarn de encender y apagar el led.
La funcin apagar pone el pin GPIO2 en estado bajo e imprime un mensaje por
consola
function apagar()
gpio.write(pinled,gpio.LOW)
print("apagado")
end
La funcin encender pone el pin GPIO2 en estado alto e imprime un mensaje
por consola
function encender()
gpio.write(pinled,gpio.HIGH)
print("encendido")
end
La siguiente lnea configura el dispositivo como servidor bajo el protocolo TCP y
con timeout 30 segundos, esto es, si un c liente est inactivo ms de 30
segundos se desconectar
sv=net.createServer(net.TCP, 30)
tmr.delay(10000) --aadimos un retardo para levantar el
servidor
Indicamos que se escuches el puerto 80
7/25/2019 ESP8266 Con Firmware Nodemcu
5/9
5/2/2016 Agricultura de precisin "Hazlo tu mismo": ESP8266 con firmware Nodemcu
http://agrodiy.blogspot.com.es/p/esp8266-con-firmware-nodemcu.html 5/9
sv:listen(80,function(c)
Con esta parte indicamos que si se produce un evento del tipo receive (al
recibir datos) , se ejecute una serie de instrucciones (callback). En nuestro
caso pl contiene el mensaje recibido.
c:on("receive", function(c, pl)
El en el diseo de nuestra aplicacin recibiremos la orden de apagar o encender
el led por la URL con el mtodo GET. Para encender el led tendremos una url
del tipo:
http://192.168.4.1/?led=on
Para apagar el led tendremos esta URL
http://192.168.4.1/?led=of
Nuestro objetivo es capturar el mensaje transmitido por la URL y asociarlo a una
variable. Si imprimimos el mensaje pl veremos que el mensaje recibido vlido
tiene este estilo
print(pl) --para depurar imprimimos el mensaje
GET /?led=on
GET /?led=of
Si observamos la cadena de texto, la palabra led ocupa la posicin desde el
carcter 7 al 9 y las palabras on y of la posiciones 11 y 12
Con la siguiente lnea almacenamos en una variable orden la parte de la
cadena de texto recibida entre el carcter 7 y 9 (lo usaremos ms adelante)
orden=string.sub(pl,7,9)
Con la siguiente lnea almacenamos en una variable enviado la parte de la
cadena de texto recibida entre el carcter 11 y 12 (lo usaremos ms adelante)
enviado=string.sub(pl,11,12)
Para depurar imprimimos la parte extrada del mensaje (pl)
print(orden)
print(enviado)
Con el siguiente bloque condicional lo que hacemos es verificar que la url pasa
la palabra led que hemos extrado del mensaje. En caso de que sea correcto
ejecuta la funcin encender () o apagar() segn venga en la URL
if orden=="led" then
print("orden captada")
if enviado=="on" then
encender() end
if enviado=="of" then
http://192.168.4.1/?led=onhttp://192.168.4.1/?led=on7/25/2019 ESP8266 Con Firmware Nodemcu
6/9
5/2/2016 Agricultura de precisin "Hazlo tu mismo": ESP8266 con firmware Nodemcu
http://agrodiy.blogspot.com.es/p/esp8266-con-firmware-nodemcu.html 6/9
apagar() end
end
Esta parte es la encargada de construir la pgina web. con la instruccin c:send
se enva la web como respuesta a la peticin hecha por el cliente (recordar que
estamos en la funcin callback que se ejecuta cuando se recibe un dato). Cada
salto de lnea se representa con los caracteres \n
c:send('HTTP/1.1 200 OK\n\n')
c:send('\n')
c:send('\n')
c:send('\n')
c:send('ESP8266\n')
c:send('Ejemplo de control de
led\n')
c:send('Alberto de Pascual Tormo\n')
c:send('
Marzo 2015
\n')c:send('\n')
c:send('\n')
c:send('Selecciona Apagar/EncenderLed\n')
c:send('Encender
\n')
c:send('Apagar
\n')
c:send('\n')
c:send('\n')
c:send('\n')
c:send('\n')
c:on("sent",function(c) c:close() end)
end)
end)
Advierte que al una vez enviada todo la pgina html se ejecuta una funcin que
cierra la conexin. Esto ocurre cundo el evento enviado (sent) ha ocurrido.
Una vez finalizada la explicacin vamos a subir los dos ficheros
ledserver.lua e init.lua al dispositivo mediante la utilidad
ESPlorer.
Arrancamos la aplicacin y creamos un nuevo archivo en File>New
Este sitio emplea cookies de Google para prestar sus servicios, para personalizar anuncios y para analizar eltrfico. Google recibe informacin sobre tu uso de este sitio web. Si utilizas este sitio web, se sobreentiende queaceptas el uso de cookies.
MS INFORMACIN ENTENDIDO
https://www.blogger.com/go/blogspot-cookies7/25/2019 ESP8266 Con Firmware Nodemcu
7/9
5/2/2016 Agricultura de precisin "Hazlo tu mismo": ESP8266 con firmware Nodemcu
http://agrodiy.blogspot.com.es/p/esp8266-con-firmware-nodemcu.html 7/9
En el panel de cdigo tal como se ve en la imagen anterior, pegamos el
siguiente cdigo:
pinled=4
gpio.mode(pinled, gpio.OUTPUT)
wifi.setmode(wifi.SOFTAP)
-- wifi config start
cfg={}
cfg.ssid="nobre del punto de acceso"
cfg.pwd="contrasea"
wifi.ap.config(cfg)
ap=(wifi.ap.getip())
print(ap)
dofile("ledserver.lua")
Conectamos por el puerto COM correspondiente:
y le damos al botn Save to ESP
Ahora hacemos lo propio con el siguiente fichero, el siguiente cdigo es el que
vamos a usar:
function apagar()
gpio.write(pinled,gpio.LOW)
print("apagado")
end
function encender()
gpio.write(pinled,gpio.HIGH)
print("encendido")
end
sv=net.createServer(net.TCP, 30)
tmr.delay(10000)
7/25/2019 ESP8266 Con Firmware Nodemcu
8/9
5/2/2016 Agricultura de precisin "Hazlo tu mismo": ESP8266 con firmware Nodemcu
http://agrodiy.blogspot.com.es/p/esp8266-con-firmware-nodemcu.html 8/9
sv:listen(80,function(c)
c:on("receive", function(c, pl)
--para depurar
print(pl)
orden=string.sub(pl,7,9)
enviado=string.sub(pl,11,12)
print(orden)
print(enviado)
if orden=="led" then
print("orden captada")
if enviado=="on" then encender() end
if enviado=="of" then
apagar() end
end
c:send('HTTP/1.1 200 OK\n\n')
c:send('\n')
c:send('\n')
c:send('\n')
c:send('ESP8266\n')
c:send('Ejemplo de control de led\n')
c:send('Alberto de Pascual Tormo\n')
c:send('
Marzo 2015
\n')c:send('\n')c:send('\n')
c:send('Selecciona Apagar/Encender Led\n')
c:send('Encender
\n')
c:send('Apagar
\n')
c:send('\n')
c:send('\n')
c:send('\n')
c:send('\n')
c:on("sent",function(c) c:close() end)
end)
end)
Una vez subidos ambos archivos, hacemos un reset al dispositivo y ya
estaremos en disposicin de usarlo. Si buscamos en las redes disponibles wifi,
encontraremos una nueva red con el nombre SSID, que hayamos especificado
en la programacin y con la contrasea correspondiente. Desde un dispositivo
mvil o desde nuestro ordenador nos conectamos a dicho punto wifi y
esperamos a que se produzca, tras lo cual, escribimos en el navegador la
direccin IP 192.168.4.1. Una vez hecho esto veremos en el navegador la
pgina web albergada en el dispositivo ESP8266, en el que se despliega el
formulario de control del led. Experimenta con el apagado y encendido del led y
observa cmo en la consola de ESPlorer aparecen los mensajes de
depuracin.
+1 Recomendar esto en Google
1 comentario:
Unknown 13 de enero de 2016, 16:07
Hola, te felicito esta muy bien explicado, podrias ayudarme? necesito crear un sitio
web donde pueda meter manualmente el SSID y el password de mi modem para asi
no tener que conectarme directamente al esp8266 y tampoco tener la necesidad de
estar guardando esos datos a traves de usb
Responder
http://agrodiy.blogspot.com/p/esp8266-con-firmware-nodemcu.htmlhttps://www.blogger.com/profile/15603946364726849640https://www.blogger.com/share-post.g?blogID=6620525534592713876&pageID=8090699322280825002&target=pinteresthttps://www.blogger.com/share-post.g?blogID=6620525534592713876&pageID=8090699322280825002&target=facebookhttps://www.blogger.com/share-post.g?blogID=6620525534592713876&pageID=8090699322280825002&target=twitterhttps://www.blogger.com/share-post.g?blogID=6620525534592713876&pageID=8090699322280825002&target=bloghttps://www.blogger.com/share-post.g?blogID=6620525534592713876&pageID=8090699322280825002&target=email7/25/2019 ESP8266 Con Firmware Nodemcu
9/9
5/2/2016 Agricultura de precisin "Hazlo tu mismo": ESP8266 con firmware Nodemcu
http://agrodiyblogspot com es/p/esp8266 con firmware nodemcu html 9/9
Pgina principal
Suscribirse a: Entradas (Atom)
Introduce tu comentario...
Comentar como: Cuenta de Go
Publicar Vista previa
Ortofoto
Ortofo Diy Para empezarcon el blog comparto unafotografa area realizadaa finales de julio tras unvuelo de prueba de
aproximadamente...
Manual de NO conversinde cma ra CANONPowershot A2500
Tras fallar en laconversin de unacmara de fotos Canon
Powershot A2500, para poder realizarfotografas para fotointerpretacin deimgen...
Drupal como plataforma
de Internet de las CosasEn el siguiente vdeo sepuede apreciar el actualdesarrollo de laplataforma Drupal para
albergar datos del Internet de las cosas,para ell...
Filtros de Public Lab parala conversin de cmaras
Despus de laexperiencia comentadaen esta entrada sobre mifracaso para la conversin
de una cmara Canon A2500, me hanllegado los espe...
Entradas populares
Plantilla Simple. Con la tecnologa de Blogger.
https://www.blogger.com/http://agrodiy.blogspot.com.es/2015/08/filtros-de-public-lab-para-la.htmlhttp://agrodiy.blogspot.com.es/2015/12/drupal-como-plataforma-de-internet-de.htmlhttp://agrodiy.blogspot.com.es/2015/08/manual-de-no-conversion-de-camara-canon.htmlhttp://agrodiy.blogspot.com.es/2015/07/ortofoto.htmlhttp://agrodiy.blogspot.com.es/2015/08/filtros-de-public-lab-para-la.htmlhttp://agrodiy.blogspot.com.es/2015/12/drupal-como-plataforma-de-internet-de.htmlhttp://agrodiy.blogspot.com.es/2015/08/manual-de-no-conversion-de-camara-canon.htmlhttp://agrodiy.blogspot.com.es/2015/07/ortofoto.htmlhttp://agrodiy.blogspot.com/feeds/posts/defaulthttp://agrodiy.blogspot.com.es/