Leer Primero

Como se utiliza este blog?

jueves, 2 de julio de 2020

Conociendo La Familia de los Módulos WiFi ESP8266

Bienvenido a mi blog, hoy hablaremos un poco del ESP8266, que se trata de un chip integrado con conexión WiFi, compatible con el protocolo TCP/IP y capacidad de MCU. El objetivo principal es dar acceso a cualquier microcontrolador a una red inhalambrica. La gran ventaja del ESP8266 es su bajo consumo. La empresa que lo creo y lo fabrica es Espressif, una empresa China situada en Shangai. Primero que todo debemos distinguir entre módulo y microcontrolador. El ESP8266 es un microcontrolador. Podemos trabajar con el suelto, o podemos comprarlo integrado dentro de un PCB (Printed Circuit Board o Circuito Impreso) donde lo encontraremos acompañado de un radio modem wifi con antena, una memoria flash y terminales para conectarlo. Ocurre lo mismo que con Arduino, tenemos la posibilidad de comprar un microcontrolador Atmel al que le podemos quemar el bootloader de Arduino o comprar una placa Arduino donde ya viene integrado.

Especificaciones de los chip's ESP8266

Lo primero que debemos hacer cuando adquirimos un nuevo componente es mirar la hoja de especificaciones técnicas o datasheet. La empresa Espressif nos facilita dicha hoja en Inglés. Hay 2 modelos de ESP8266 ESP-01 viejo y nuevo. El azul es viejo y el negro es nuevo. A continuación haré un resumen de lo más importante:

Hardware:
  • Utiliza una CPU Tensilica Xtensa LX106 32-bit
  • Voltaje de operación entre 3V y 3,6V de DC
  • Corriente de operación 80 mA
  • Temperatura de operación -40ºC y 125ºC
  • Frecuencia de reloj: 80 MHz
  • RAM de instrucción: 64 KiB
  • RAM de datos: 96 KiB
  • Memoria Flash: 512 KiB (se extiende hasta 16 MiB)
  • Protocolos Wi-Fi: 802.11 b/g/n
  • Voltaje de funcionamiento: 2,5 V ~ 3,6 V
  • Corriente de funcionamiento: 80 mA (valor promedio)
  • Temperatura de almacenamiento u operación: -40 ° C ~ 125 ° C

Conectividad:
  • Soporta IPv4 y los protocolos TCP/UDP/HTTP/FTP
  • No soporta HTTPS en un principio. Si que lo hace mediante software tanto en cliente como servidor TLS1.2. La primera implementación está todavía en desarrollo.

Puertos GPIO (de propósito general):


  • Pueden ser configurados con resistencia Pull-up o Pull-down.
  • Soportan los principales buses de comunicación (SPI, I2C, UART).

Características eléctricas
  • Voltaje de trabajo entre 2,5V y 3,6Vcc.

Consumos

Dependerá de diferentes factores como el modo en el que esté trabajando el ESP8266, de los protocolos que estemos utilizando, de la calidad de la señal WiFi y sobre todo de si enviamos o recibimos información a través de la red WiFi. Oscilan entre los 0,5 μA (microamperios) cuando el dispositivo está apagado y los 170 mA cuando transmitimos a tope de señal.

Modos de operación

Debido a los sectores a los que va enfocado, wereables, dispositivos del IoT y móviles, el ESP8266 requiere de una gestión de energía eficaz. Dispone de una arquitectura de bajo consumo que trabaja en 3 modos:
  • Active Mode o Modo Activo: A pleno rendimiento.
  • Sleep Mode o Modo Dormido: solo el RTC (Real Time Clock) está activo para mantener la sincronización. Se queda en modo alerta de los posibles eventos que le hagan despertar. Mantiene en memoria los datos de conexión y así no hace falta volver a establecer la conexión con la red WiFi. Consume entre 0,6 mA y 1 mA.
  • Deep Sleep o Modo en Sueño Profundo: el RTC está encendido pero no operativo. Debe pasar por el modo dormido antes de despertar. Hay que tener especial cuidado con los datos ya que en este estado es como si estuviera apagado y todos los datos que no estén almacenados se pierden. Consume alrededor de 20 μA.

Modelos de Módulos ESP;

Al igual que con Arduino, donde trabajamos con la placa o circuito integrado, con el ESP8266 ocurre exactamente lo mismo. El fabricante AI-Thinker proporciona la serie ESP con diferentes modelos para diferentes usos. A parte han ido surgiendo diferentes placas que incorporan algún módulo ESP como el NodeMCU.

ESP-01


Se trata del módulo más popular. El módulo ESP-01 tiene un precio muy reducido. Tiene disponible dos pines GPIO digitales para controlar sensores y actuadores. También se puede llegar a utilizar para este uso los pines Rx y Tx si no se utilizan para la comunicación a través del puerto serie. Se puede programar a través de un adaptador serie/USB o con el cableado adecuado, a través de Arduino. Lo podemos usar como un dispositivo autónomo o como complemento con Arduino.



Otra forma de instalar los pines macho si deseas conectar el modulo a un protoboard para realizar pruebas


IMPORTANTE:
  • El ESP8266 va alimentado a +3,3VDC ¡no alimentarlo con 5 voltios o lo quemaremos!
  • Dicha fuente de voltaje de 3V3 debe ser capaz de suministrar más de 200mA.
  • El ESP8266 necesita comunicarse vía serie a +3.3V y no tiene entradas tolerantes 5V, por lo que necesita la conversión de nivel para comunicarse con un microcontrolador 5V como la mayoría de los Arduinos. Sin embargo, esta segunda advertencia puede ser ignorada y conectar el puerto serie directamente a Arduino, pero existe el peligro de dañar el módulo. Con un programador FTDI que tenga salida a 3.3V podemos hacer lo mismo que con un Arduino pero sin correr ningún peligro:

En todos los módelos de ESP8266 si al arrancar el módulo, el GPIO cero está a GND, el módulo entra en modo de programación, por lo que el microcontrolador no inicia el programa, así que este pin no conviene usarlo como entrada sino como salida.



Que hay dentro de un módulo ESP8266?

ESP-05

Quizás sea el módulo más simple de toda la gama. Está destinado a ser un Shield WiFi para Arduino. La disposición de los pines nos permiten un fácil conexionado con el protoboard. Por el contrario no dispone de ningún puerto GPIO accesible. Solo tiene terminales para comunicación serie, es decir, convierte la señal wifi a comunicación serie.

ESP-12



Este módulo permite hacer bastantes más cosas que los módulos anteriores. Lo puedes conseguir por un precio muy reducido. Tenemos acceso a 11 puertos GPIO de los cuales uno es analógico con una resolución de 10-bit (1024 valores posibles). La configuración en modo sleep es muy sencilla. Esto nos permitirá ahorrar mucha energía. Por el contrario, la conexión con la protoboard no es muy amigable. Necesitamos soldar los pines o comprar un adaptador, aunque también hay que soldar. Quizás está sea la mejor opción si queremos hacerlo funcionar de forma autónoma.

ESP-201

Es el módulo preferido por los Makers para prototipar. En principio solo podemos acceder a 11 puertos GPIO pero tras unas modificaciones, podríamos acceder a un par más de ellos. Lo podemos encajar fácilmente en un protoboard y permite el acople de una antena externa para tener más alcance.

NodeMCU


NodeMCU es un nombre que recoge tanto un firmware Open Source, como una placa de desarrollo basados en el ESP8266. La página oficial de NodeMCU está disponible en https://www.nodemcu.com/index_en.html

En principio el nombre NodeMCU se refería principalmente al firmware. Actualmente esto se ha invertido y cuando hablamos de NodeMCU normalmente nos referimos a la placa de desarrollo. El firmware NodeMCU fue creado poco después de aparecer el ESP8266, el 30 de diciembre de 2013. Unos meses después, en octubre de 2014 se publicó la primera versión del firmware NodeMCU en Github. Dos meses más tarde se publicaba la primera placa de desarrollo NodeMCU, denominada devkit v0.9, siendo también Open Hardware. El firmware NodeMCU podía grabarse en un ESP8266, tras lo cual podíamos programarlo con el lenguaje script Lua. La programación en Lua permitía la conexión y programación del ESP8266 de una forma mucho más sencilla que las herramientas oficiales proporcionadas por Espressif.

Con el paso del tiempo y la aparición de otras alternativas para programar el ESP8266, como (especialmente) con C++ con el entorno Arduino IDE y otras como MicroPython, el interés en Lua disminuyo considerablemente.

El NodeMCU es el módulo más característico, a diferencia de los otros módulos, viene con todo lo necesario para empezar a trabajar de forma autónoma. Incluye un adaptador serie/USB, por lo general el famoso CP2102 o el CH340 y se alimenta a través de un puerto microusb y está basado en el ESP-12E, aunque tambien se encuentran otras versiones con el ESP12F. Lo más interesante del módulo nodeMCU es que puedes descargar un firmware que te permite programarlo en lenguajes como LUA, Python, Basic, JavaScript e incluso desde el mismo IDE de Arduino. Sin duda alguna este módulo es la mejor opción si queremos adentrarnos en el mundo del ESP8266.

Por resumir, tenemos tres principales fabricantes de NodeMCU: Amica, Lolin/Wemos y DOIT/SmartArduino. Las placas son muy similares (o incluso idénticas), aunque pueden tener alguna diferencia de designación de los pines.


Programación del ESP8266

En la actualidad es relativamente sencillo programar un ESP8266. Respecto al hardware ya hemos visto que dependerá del modelo que estemos utilizando, si incorpora o no el adaptador serie/USB o si deberemos usar un programador FTDI. Aún así, cabe la posibilidad de programarlo a través del IDE (Integrated Development Environment – Entorno de Desarrollo Integrado) de Arduino. Para eso hay que instalar lo que se llama un plugin, en el que está incluido todo lo necesario para compilar y subir programas que fueron escritos tal como si fuesen .INO de Arduino. Debemos incorporar bibliotecas y los programas de manejo de las placas con el chip ESP8266 a nuestro IDE. La versión del firmware que viene por defecto soporta comandos AT (conjunto de comandos estándar).

En GitHub encontramos una infinidad de librerías que nos facilitarán la vida con los módulos ESP8266.

Finalmente espero que este post te haya aclarado un poco qué es y para qué utilizar el ESP8266. Cabe destacar que la misma empresa Espressif Systems, ha desarrollado un nuevo chip SoC módulo ESP32, el cúal nos suministra conexión wifi y bluetooth en un solo módulo, de esta forma los módulos esp8266, aunque aún se utilizan y se venden, se iran descontinuando con el tiempo poco a poco.

ESP 32 Versión 38 pines


Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.



Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.




También te puede interesar:








2 comentarios:

  1. Gracias por compartir tus conocimientos, me gusta tu blog, me quedaré por aquí. Un saludo.

    ResponderBorrar
  2. Hola Ardo8266, gracias por comentar, actualmente estoy estudiando, así que iré subiendo mas post con nuevo contenido poco a poco.

    ResponderBorrar