NodeMCU 101: Guía rápida para IOT.

esp

hola a todos es un placer tenerlos por aqui de nuevo, esta vez les traigo una guia rapida para usar el nodeMCU que es un excelente chip para hacer IOT, esta guia esta pensada para personas un poco experimentadas que necesitan ejemplos claros del uso del ESP.

ESP8266

Es hora de actualizarse y así mismo actualizar el tipo de dispositivos que usamos para diferentes propósitos, en este caso el rey indiscutible para hacer IOT es el modulo wifi ESP8266, que se puede usar tanto como esclavo para arduino como un dispositivo completo para hacer IOT por menos de $5(en su versión 01).

20151103_205107

Es tanto el auge que tuvo este pequeño chip que tiene un foro dedicado a él, la razón por la que digo que es el rey indiscutible es debido a la versatilidad que tiene con:

  • 802.11 b/g/n
  • Wi-Fi Direct (P2P), soft-AP
  • Integrated TCP/IP protocol stack
  • Integrated TR switch, balun, LNA, power amplifier and matching network
  • Integrated PLLs, regulators, DCXO and power management units
  • +19.5dBm output power in 802.11b mode
  • Power down leakage current of <10uA
  • 1MB Flash Memory
  • Integrated low power 32-bit CPU could be used as application processor
  • SDIO 1.1 / 2.0, SPI, UART
  • STBC, 1×1 MIMO, 2×1 MIMO
  • A-MPDU & A-MSDU aggregation & 0.4ms guard interval
  • Wake up and transmit packets in < 2ms
  • Standby power consumption of < 1.0mW (DTIM3)
    (datos sacados de sparkfun)

Algunos se preguntaran para que es todo esto, jaja yo también me lo pregunte y solamente haciendo las cosas e investigando se sabe para que es en realidad cada una de sus características.

Hay varios «modelos» del ESP8266 cada uno con diferente propósito, en nuestro caso vamos a utilizar el ESP8266-12E Tuve la fortuna de que un amigo tuviera uno, así que gracias a él es este tutorial :D.

NodeMcu

20151103_205056

Es una plataforma Open Hardware al igual que arduino, no es solamente un circuito o una placa en realidad como dije arriba es una comunidad o hasta un movimiento.

Se programa en LUA, un lenguaje que carga scripts al micro para cargarlos al inicio, aunque también podemos interactuar con él mediante consola con comandos en tiempo real.

Que necesitamos:

  • Drivers (Este driver es el que yo necesitaba para comunicación tal vez uds necesiten otro )
  • cable micro usb
  • putty o cualquier programa parecido
  • ESPlorer
  • lo mas importante, ganas de aprender 😀

Lo primero es conectar nuestro NodeMcu a la computadora e instalar los drivers,

Al terminar de instalar los drivers nos aparecerá un puerto COM. clic derecho en equipo —-> propiedades —> administrador de dispositivos —-> puertos COM LPT —-> al final aparece el numero de puerto 😀

ahora abrimos putty

putty

damos click en Serial nos aparecera el nombre del puerto en nuestro caso vamos a utilizar el COM3 y la velodidad de transmision de datos se queda en 9600 baudios.

putty 2

clic en open

A ustedes les aparecerán mas letras que a mi (yo lo tengo formateado ) así que no se preocupen si no les aparece como a mi.

putty 3

antes de empezar a hacer scripts y subirlos con ESPlorer vamos a ejecutar algunas lineas de código en tiempo real para que se acostumbren.

Algo que tienen que tener mucho en cuenta es el hecho de que cuando su dispositivo se reinicie tendrán que empezar desde la primera linea de código.

Ejemplo 1

Encendiendo y apagando un LED

los comentarios se hacen con dos guiones (–):

pin = 0 -- numero de pin que vamos a utilizar 
gpio.mode(pin,gpio.OUTPUT)--configuramos el pin como salida 
--El led esta configurado de tal manera que cuando mandamos un pulso negativo se enciende
gpio.write(pin,gpio.HIGH) -- mandamos un pulso positivo para que se apague el LED
gpio.write(pin,gpio.LOW)-- mandamos un pulso negativo para que se encienda
gpio.write(pin,gpio.HIGH)-- lo volvemos a apagar.

Quedaría de esta manera:

putty 4

Ejemplo 2

modo STATION Conectando el ESP al wifi.

Con dos simples lineas nos podemos conectar.

wifi.setmode(wifi.STATION) -- configurando modo cliente
wifi.sta.config("nombreWIFI","Contraseña")-- configuracion para conectarnos
ip = wifi.sta.getip()-- creamos una variable que almacenará la IP
print(ip)-- lo mostramos en pantalla.

putty 5

ejemplo 3

Modo punto de acceso (AP)
wifi.setmode(wifi.SOFTAP)
cfg={}
cfg.ssid="nombre"-- nombre del SSID
cfg.pwd="clave"-- clave del Wifi
wifi.ap.config(cfg)-- configuramos

putty 6

Es momento de escanear las redes wifi a nuestro alrededor.

redes

Liceo Santa Lucia es el lugar donde me dieron el espacio para poder hacer todas mis locuras muchas gracias 😀

Cuando nos conectemos a nuestro wifi nuevecito reluciente recien creado, nos dara una IP 192.168.4.2 siendo el ESP la ip 192.168.4.1 esto nos servira para poder crear dentro un servidor HTTP.

ejemplo 4

Montando un servidor.

servidor= net.createServer(net.TCP,30)
servidor:listen(80,function(c)
c:send("<h1>Node MCU 101 Bienvenido</h1>")
end)

putty 7

Una vez conectados al ESP nos vamos a la direccion ip, si no la sabemos poner en la consola la siguiente instrucción.

–modo cliente o station

wifi.setmode(wifi.STATION) -- configurando modo cliente
wifi.sta.config("nombreWIFI","Contraseña")-- configuracion para conectarnos
ip = wifi.sta.getip()-- creamos una variable que almacenará la IP
servidor= net.createServer(net.TCP,30)
servidor:listen(80,function(c)
c:send("<h1>Node MCU 101 Bienvenido</h1>")
end)
print(ip)-- lo mostramos en pantalla.
-- modo punto de acceso.
wifi.setmode(wifi.SOFTAP)
cfg={}
cfg.ssid="MicrofControl"
wifi.ap.config(cfg)
servidor= net.createServer(net.TCP,30)
servidor:listen(80,function(c)
c:send("<h1>Node MCU 101 Bienvenido</h1>")
end)

abrimos el navegador y vamos a esa direccion. En mi caso puse el servidor en un AP asi que tengo que ir a 192.168.4.1 su caso puede ser diferente dependiendo de la IP que les muestre y el modo que hayan configurado.

servidor send

 

Ejemplo 5

sensor dht11

Este es un sensor de humedad, temperatura muy usado y muy bueno :D, afortunadamente ya tenemos la librería para poder usarlo.

pin = 4-- pin de datos conectado al dht
status,temperatura,humedad,temperaturaDecimales,humedadDecimales = dht.read(pin)--variables para datos 
if(status == dht.OK) then--
print("temperatura: "..temperatura)
print("humedad: "..humedad)
print("temperatura en decimales: "..temperaturaDecimales)
print("humedad en decimales: "..humedadDecimales)
end

En este ejemplo nos va a mostrar la temperatura y la humedad del ambiente solamente si esta funcionando el sensor o esta bien conectado.

dht11

ahora vamos con ejemplos un poco mas complicados, recuerden que todos estos ejemplos cuando se reinicie o apague el dispositivo van a perderlos porque son comandos en tiempo real. Asi que pilas.

ejemplo 6

visualizando la temperatura y humedad desde un navegador.

pin=4
wifi.setmode(wifi.SOFTAP)
cfg = {}
cfg.ssid="ModuloDeTemperatura"
wifi.ap.config(cfg)
servidor = net.createServer(net.TCP,30)
servidor:listen(80,function(c)
status,temperatura,humedad,temperaturaDecimales,humedadDecimales = dht.read(pin)--variables para datos 
if(status == dht.OK) then
c:send("<h1>temperatura: "..temperatura.."</h1>")
c:send("<h1>humedad: "..humedad.."</h1>")
end
end)

 

server dht

Ustedes se encargan de que se vea mas bonito jaja.

Espero que esta guia les haya servido, cualquier duda sugerencia o comentario estan los comentarios mas abajo.

Recuerden este metodo es con comandos en tiempo real adelante vamos a usar ESPlorer para meter los archivos dentro del ESP y correrlos desde el encendido 😀

Gracias por leerme nos vemos en otro post 😀

20 Comments

Add yours →

  1. Este micro es genial, he pasado horas investigando sobre este modulo, mi experiencia con lua no fue muy buena porque se quedaba sin memoria, y en ocasiones se colgaba, por eso mismo me pase a programarlo en arduino y c++ aunque este ultimo es realmente difícil por la poca documentación que existe, cuando tenga tiempo volveré a intentar con lua porque según leí compilando los script se logra un 50% en mejora de rendimiento, excelente tutorial!

    Me gusta

  2. Jairo Sanchez 27 May, 2016 — 4:45 pm

    Muy buena selección de ejemplos.

    Me gusta

  3. Excelente Guia, gracias por tu Información, precisamente ando investigando mucho sobre el modulo NodeMCU, y apenas lo estoy aprendiendo, además quisiera trabajarlo en un proyecto de domótica, y quisiera usarlo como receptor y controlador de dispositivos, por medio de una App, parecido al sistema de Smart TV que se conecta mediante la Red, sin necesidad de conección con arduino o Raspberry, como ya se sabe hacer, y que no fuese conexión punto a punto.

    Me gustaría que nos mantuviesemos en contacto para compartir mas información.

    Me gusta

  4. Excelente, gracias!

    Me gusta

  5. Excelente tutorial, ya lo pude bajar y me funciono, ahora quiero leer entradas desde los gpio 0 y gpio 2 desde el modulo y verlas en el servidor como dos luces pilotos

    Le gusta a 1 persona

  6. HOLA MIRA ME GUSTARÍA SABER COMO CONFIGURO LOS PINES GPIO PERO DESDE ARDUINO IDE YA QUE LUA NO HE PROGRAMADO Y PUES SI ME GUTSARIA SABER MAS POR IDE Y A QUE HE LOGRADO TODO MENOS LEER ANÁLOGAS Y PODER CAMBIAN LOS PINES TANTO A ANÁLOGA COMO A DIGITAL o.O

    te dejo mi correo espero una pronta respuesta gracias
    andres.t15@hotmail.com

    Me gusta

  7. hola, tengo la placa nodemcu lolin v3, y tengo instalado micropython, quiero saber como puedo aplicar todos los ejemplos de arriba, pues cuando pongo wifi me dice que no esta definido, asi mismo quisiera saber como ver la IP de la tarjeta gracias

    Me gusta

  8. bueno he probado con putty en mi movil y no lo puedo conectar a la nodemcu que otro programa podria instalar en mi movil y como lo echo andar via wifi con la nodemcu gracias

    Me gusta

  9. muy buen tutorial! Ahora yo tengo una inquietud y es la siguiente: Sera posible interconectar 2 ESP8266 como si fueran XBEE, es decir en 1 ESP8266 poner pulsadores de entrada al puerto GPIO y al segundo ESP8266 ponerle leds de salida al puerto GPIO? de forma que si yo presiono un pulsador en el primer ESP8266 se encienda el led del GPIO correspondiente al segundo ESP8266, como en estas imagenes emisor: http://www.stretchmame32.nobody.jp/emisor.jpg y receptor http://www.stretchmame32.nobody.jp/receptor.jpg es asi exactamente como tengo esta inquietud de que se puedan utilizar de esta manera, sin necesidad de computador ni modem de internet, sino que se conecten punto a punto, uno como cliente y otro como servidor

    Me gusta

    • Hola antonio si claro
      Pon uno en modo server y el otro en cliente te conectas por medio de http y envias paquetes get o post al servidor c:
      Interesante propuesta la verdad,si lo logras me encantaria verlo.
      PD: el Nodemcu en modo server no aguanta muchas conexiones pero solamente un nodemcu si funcionaria
      Saludos

      Me gusta

Deja un comentario