Calificación:
  • 1 voto(s) - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
ESP8266: Ahora en tu WiFi
#1
resim

¿Qué es?
El ESP8266 es un integrado de bajo coste y que a pesar de su pequeño tamaño es capaz de conectarse a redes WiFi (como las que todos tenemos en casa). Nos ofrece además múltiples GPIO que abren un sinfín de posibilidades.

Tipos
El atractivo de este pequeño, funcional y barato integrado ha echo que alrededor de el haya crecido (y siga creciendo de forma exponencial) toda una comunidad que ha echo posible que actualmente se distribuyan multitud de módulos que hacen su uso más completo y sencillo. El más sencillo y famoso de todos ellos es el denominado como ESP-0; que presenta un formato similar a otros módulos inalámbricos, como los famosos nfr24l01.

resim
resim

Pero no es el único, existe ya toda una gama de módulos. Las principales diferencias entre ellos son el número de puertos GPIO que ofrecen y el tamaño de memoria Flash:

resim

También existen opciones más robustas, enfocadas al desarrollo y la simplicidad en nuestras pruebas en las que a través de una placa estilo arduino no tenemos más que conectarla a nuestro PC a través de un cable microUSB y empezar a flashear, programar y cacharrear. Este es el caso de la DevKit de NodeMCU, que monta una de los módulos más completos; el ESP-12:

resim

De otra forma, tenéis que tener que tener en cuenta que el ESP funciona a 3.3v y necesitaréis un programador FTDI (también de muy bajo coste) para programarlo.

¿Qué puedo hacer con el?
Estos módulos se gestionan típicamente por comandos AT (cómo los módulos Bluetooth), pero gracias a la comunidad que está creciendo con el existen ya herramientas firmwares más completos que podemos flashear en ellos, como nodemcu, que permite que podamos hasta hacer de nuestro ESP un servidor http con el que a través del navegador podemos interactuar con el módulo y sus GPIO. El ejemplo típico (equivalente al archiconocido blink de Arduino) es el de encender unos leds desde el navegador.
[spoiler]
resim
Código:
wifi.setmode(wifi.STATION)
wifi.sta.config("NOMBRE RED","CONTRASEÑA")
print(wifi.sta.getip())
led1 = 3
led2 = 4
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
    conn:on("receive", function(client,request)
        local buf = "";
        local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
        if(method == nil)then
            _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
        end
        local _GET = {}
        if (vars ~= nil)then
            for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
                _GET[k] = v
            end
        end
        buf = buf.."<h1> ESP8266 Web Server</h1>";
        buf = buf.."<p>GPIO0 <a href=\"?pin=ON1\"><button>ON</button></a>&nbsp;<a href=\"?pin=OFF1\"><button>OFF</button></a></p>";
        buf = buf.."<p>GPIO2 <a href=\"?pin=ON2\"><button>ON</button></a>&nbsp;<a href=\"?pin=OFF2\"><button>OFF</button></a></p>";
        local _on,_off = "",""
        if(_GET.pin == "ON1")then
              gpio.write(led1, gpio.HIGH);
        elseif(_GET.pin == "OFF1")then
              gpio.write(led1, gpio.LOW);
        elseif(_GET.pin == "ON2")then
              gpio.write(led2, gpio.HIGH);
        elseif(_GET.pin == "OFF2")then
              gpio.write(led2, gpio.LOW);
        end
        client:send(buf);
        client:close();
        collectgarbage();
    end)
end)
[/spoiler]

Enlaces útiles
ESPlorer: Un completísimo explorador y entorno de desarrollo para nuestros ESP:
http://esp8266.ru/esplorer/

GitHub NodeMCU: Aquí encontrarás todo lo que necesitas, desde los últimos firms, documentación y herramientas de flasheo:
https://github.com/nodemcu
Citar
#2
Acabo de probar esta tarde por fin estos módulos de los que tanto habla la gente (he empezado con el DevKit) y me ha parecido que debíamos empezar a hablar de el, le veo un potencial enorme. A ver si entre todos podemos hacer un hilo lleno de información y experiencias e ir completando el primer post.

De momento he empezado con el ejemplo del servidor http (experiencia 0 en Lua aún) que os dejo en el primer post y me ha parecido práctico y lleno de posibilidades.

Me he saltado la parte de los comandos AT, ya que lo que realmente me atraía de estos ESP era la ejecución de scripts y tengo que recomendar la herramienta ESPlorer, muy completa y sencilla de utilizar.
Citar
#3
Por mi parte escribí dos artículos sobre programación del ESP8266.

En el primero explico cómo instalar la SDK: http://www.sistemasorp.es/2015/05/10/pro...olador-12/
En el segundo hago un programa en C que utliza las funciones más comunes (wifi, gpio, puerto serie, temporizadores, tareas...) y voy explicando el código fuente del ejemplo: http://www.sistemasorp.es/2015/05/19/pro...olador-22/
Citar
#4
Muy buenas entradas.

Sigo a menudo tus publicaciones y no puedo mas que darte la enhorabuena por el blog. Los que no lo conozcan los animo a pasarse, las guías y tutoriales son de temas muy atractivos explicados de forma muy amena.
Citar
#5
Muchas gracias. Con gente como tu me anima mucho a que siga escribiendo artículos.

Sería genial que aquí entre todos podamos sacar provecho de estos módulos. Así, todo lo que podamos aportar mejorará al final la comunidad.

Como decía en el artículo todo lo que se ahora del ESP8266 es por leer muchas páginas y probar una y mil veces las cosas hasta lograr que funcionen. Entre todos podemos desgranar el funcionamiento de estos módulos, ya sea en C, usando LUA, los comandos AT o lo que se quiera.
Citar
#6
Interesa mucho!, Me quedo por aquí!

Tengo un par de ellos volcando datos a thinkspeak por AT desde un arduino, a veces se come algún dato, puede que sea del codigo (seguramente sea esto), el modulo o el router, tengo que ir viendo poco a poco

Yo también entro de vez en cuando a tu blog sistemasorp, me parece muy completo, para mi es de gran ayuda Mola

Con respecto a LUA no tengo ni idea, pero es muy interesante que trabajen como nodos independientes, encima con varias entradas gpio, el problema que le veo es el consumo que es más elevado que un nrf24, aunque supongo que se podrá meterlos en modo sleep y despertarlos por interrupciones

Saludos Mola
Citar
#7
Esperando uno desde hace un mes a ver si llega, es el esp-2
Citar
#8
La gente de la comunidad de esp8266 se lo han currado y han añadido la posibilidad de programarlo mediante el IDE de Arduino como si fuere una placa más.

Os dejo un par de enlaces que os serán de utilidad Sonrisa

Si lo programáis con el IDE de Arduino perderéis el firmware LUA, pero se puede volver a cargar.

Un saludo!
Citar
#9
Había leído algo acerca de lo del IDE de Arduino, aún no me he puesto a estudiarlo.

De lo que sí me enteré hoy gracias a un tweet, que también comenta dcp1985 es thinkspeak. Pero creo que bien merecería un hilo a parte porque para el IOT tiene muchísimo potencial. Me ha recordado al easyIOT que probé hace poco en una raspberry.
Citar
#10
dcp1985 escribió:Yo también entro de vez en cuando a tu blog sistemasorp, me parece muy completo, para mi es de gran ayuda

Gracias, siempre intento plasmar lo que a mi me gusta para que otros puedan hacerlo igualmente.

Por cierto, ya ha salido el SDK 1.1.2 http://bbs.espressif.com/viewtopic.php?f=5&t=591

Dentro de la carpeta documents\EN del fichero zip esta la documentación en inglés del módulo:

Código:
2A-ESP8266__IOT_SDK_User_Manual__EN_v1.1.0.pdf
2B-ESP8266__SDK__IOT_Demo__EN_v0.6.pdf
2C-ESP8266__SDK__Programming Guide__EN_v1.1.2.pdf
4A-ESP8266__AT Instruction Set__EN_v0.25.pdf
4B-ESP8266__AT Command Examples__EN_v0.4.pdf
Citar
#11
Un manual interesante sobre los comandos AT del ESP8266

http://www.pighixxx.com/test/wp-content/...266_11.pdf
Citar
#12
Alguien probado este dispositivo con micropython? Por lo que he podido leer por ahí el firmware para su uso con este lenguaje aun no esta totalmente maduro.
Citar
#13
Yo tengo un par de ellos pero aún he lidiado poco con ellos. Las pruebas las he hecho con comandos AT. En general he tenido un funcionamiento inestable, creo que debido a una mala regulación de los 3,3v. Tengo q pillarme un FTDI pq quiero meterles un firm que soporta nativamente MQTT y eso sí que le veo potencial....

Estoy con vosotros, a ver si entre todos hacemos virguerias con el jejeje.

Alguien me recomienda unFTDI q le rule bien y sea BBB?
Citar
#14
Un FTDI es para poder usar USB, es decir, con un ordenador. Yo uso un conversor Serial2USB.
Citar
#15
Ya, por lo que tengo entendido, con el FTDI puedo firmwardearlo, de ahí mi pregunta. Cual es el modelo que usas? Miré por encima en ebay hace unas semanas y vi muchos tipos, además de mucha disparidad de precios.... Yo lo quiero para cambiarle el firm al ESP y poco más.
Citar
#16
http://www.dx.com/p/cp2102-usb-to-ttl-us...ZbnQRjaOrU este no es un FTDI, sino un cp2102 pero te sirve perfectamente, incluso funciona a 3,3v. Lo único es que el modulo esp8266 consume hasta 200mA. por lo que necesitaras un regulador aparte ya que la salida 3,3v del conversor no es suficiente para alimentar el modulo.
Citar
#17
Genial muchas gracias!
Citar
#18
Ahora, ademas, se puede programar desde el entorno ARDUINO:
https://github.com/esp8266/arduino
Citar
#19
rubendito escribió:Ahora, ademas, se puede programar desde el entorno ARDUINO:
https://github.com/esp8266/arduino
Unos mensajes más arriba ya lo ha puesto JRodrigo
Citar
#20
La versión 1.2.0 de la SDK ha sido publicada http://bbs.espressif.com/viewtopic.php?f=5&t=680
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
Fotografía Termostato wifi FINALIZADO jgarridc 13 1,712 02-11-2018, 09:36 AM
Último mensaje: jgarridc
  [Guia] ESP8266 (NodeMCU) + sensor BME280 + MQTT grafisoft 17 3,735 09-10-2018, 09:49 PM
Último mensaje: grafisoft
  [SpainLabsIoT2018] Caso real: Nodos ESP8266 grafisoft 38 4,382 03-08-2018, 11:45 PM
Último mensaje: grafisoft
  [SpainLabsIoT2018] Nodo ESP8266 - Smart Sensors Shield grafisoft 16 1,864 02-07-2018, 08:55 PM
Último mensaje: grafisoft
  APORTE [SpainLabsIoT2018] ESP8266 NodeMCU - Ajustando su consumo (hack) grafisoft 4 955 15-06-2018, 06:47 AM
Último mensaje: grafisoft