El ESP8266

Smelpro > Tutoriales  > NodeMCU  > El ESP8266

El Esp8266 es un modulo que tiene conexión Wifi y un procesador de 32 bit de la serie L106 Diamond de Tensilica. Es uno de los chips WiFi más integrados en la industria; integra balun RF, amplificador de potencia, amplificador de recepción de bajo ruido, filtros, módulos de administración de energía y solo requiere de un mínimo de circuitos externos.

La empresa que los fabrica es Espressif Systems

Su reducido tamaño, precio y características lo hacen un modulo muy potente para proyectos de Internet de las Cosas.

 

Características

 

Voltaje de trabajo3V a 3.6 V DC
Temperatura-40°C a +125°c
Corriente OperaciónValor promedio: 80 mA
Wifi Protocolo802.11 b/g/n
SeguridadWPA/WPA2
PeriféricosUART/SDIO/SPI/I2C/I2S/IR Remote Control

 

El modulo Esp8266 tiene diversas versiones desde el esp-01 hasta el esp-14, estos varían en cantidad de GPIO( pines ) , memoria y mejora en estabilidad.

 

 

En nuestro caso la versión con la que trabajaremos este tutorial es el ESP-12 el cual tiene las siguientes características:

 

Gpio8
Entrada Analógica1
PeriféricosUART/SDIO/SPI/I2C/I2S/IR Remote Control
Memoria Externa Flash 4 Mb
Procesador 32 Bit
Velocidad procesador80 Mhz

 

                                                                                                  Esp8266 -12F

 

Esta versión tiene distintas actualizaciones que son el esp-12E , esp-12F, esp-12Q y el esp-12S , este ultimo es mas pequeño y tiene menos pines.

Puede revisar más información al respecto visitando el area de documentación de este modulo en el siguiente link

 

Primeros pasos

Elección del modelo a usar

 

Vamos a realizar nuestras primeras pruebas para lo cual debemos usar alguna versión de las ya mencionadas anteriormente.

Tenemos 3 opciones.

 

  • Opción1: Usar el esp8266-01, su ventaja es que viene con espadines machos lo cual es facil de conectar cables jamper. Su desventaja es que solo dispone de 2 GPIO.

 

  • Opción2: Usar la versión 12, 13 o 14, de las cuales la versión 12 es la más popular, su ventaja es que tiene más de 2 GPIO para usar así como una entrada ADC. Su desventaja es que debemos de soldar cables o soldarla en una placa donde sea facil de manipular sus GPIO. Para utilizar la opción 1 y opción2 debemos contar adicionalmente con modulo de TTL a USB, podemos usar el FTDI232 el cual es muy practico.

 

                                                                                                    Modulo FDTI232

 

  • Opción3: Usar una tarjeta que tiene todo lo necesario para trabajar asi como un puerto USB listo para conectar a nuestra computadora, esta tarjeta se llama NODEMCU y existen 2 modelos, uno es  AMICA( oficial ) y el otro es LOLIN que esta en su versión3. La desventaja de este ultimo es que ocupa todo el ancho de un protoboard y no deja pines libres para conectar, comparado con el AMICA que es más delgado y cabe en un protoboard dejando una linea por lado libre para conectar cables y usar los GPIO. Además el driver TTL-USB del Amica es el CP2102 y del Lolin es el CH340. Las tarjetas NodeMCU tienen como chip al esp8266 -12E.

 

                                                                               Izquierda: NodeMCU Lolin, Derecha: NodeMCU Amica

 

Para nuestros tutorial vamos a utilizar la Opción3 para lo cual usaremos el NodeMCU Amica.

 

Comunicación por comandos AT

 

El esp8266 puede configurarse mediante comandos AT, esta es la forma básica con la cual podremos comunicarnos con este modulo.

Vamos usar la tarjeta NodeMCU , conectamos un cable con puerto micro USB a nuestro NodeMCU y el otro extremo a nuestra computadora, deberá automáticamente  instalarse el driver , de no suceder esto debemos de instalar manualmente su driver.

 

 

 

Para nuestro caso estamos usando el NodeMCU Amica.

 

 

Luego debemos descargar un programa de comunicación serial, en este caso usaremos el software PuTTy (Link Descarga ) , ya sea para windows  ó Linux, debes elegir según tu sistema operativo.

Una vez descargado debes abrilo y configurar en la opción Serial y colocar el puerto COM que fue reconocido por nuestra computadora( en nuestro caso es el COM9 ) y la velocidad de transmisión que es 115200 ( hay casos que podría ser 9600).

 

 

Configurado le damos Open y nos debera abrir una venta negra en donde debemos escribir AT+GMR  y presionar las teclas ENTERCTRL+J.

 

 

Vemos que nos devuelve la versión del firmware instalado en el NodeMCU, el cual es de Nov del 2015, existen versiones más modernas, pero es esta la que viene por defecto en nuestra tarjeta NodeMCU cuando recién se compra.

 

Nota: Si compraste tu tarjeta y lo programaste con Arduino ó Lua no podrás usar comandos AT mediante PuTTy, para lo cual tendrás que flashear la memoria del esp8266, esto lo veremos en otro tutorial.

 

Bueno finalmente podremos ejecutar un comando para ver que redes wifi estan disponibles a nuestro alrededor.

Para esto debemos de escribir el comando AT+ CWLAP , seguido presionar las teclas ENTER y  CTRL+J.

 

 

Si deseas explorara más comandos  AT  te sugerimos revises el siguiente documento. Link

 

Programación

El esp8266 es un modulo que puede ser programado fácilmente haciendo uso de lenguajes de programación como Arduino, Python, Lua y JavaScript, va depender mucho del programador elegir cual de estos se le acomode mejor  y ademas de los tipos de proyectos a implementar.

Hemos tenido experiencia programando con Lua Arduino y Python , cada uno de ellos tiene ventajas y desventajas, lo cual hemos podido observarlo cada vez que realizábamos un proyecto nuevo.

Para este tutorial hemos elegido usar el IDE de Arduino el cual es sencillo de programar y  tiene un mayor número de librerías disponibles para usar con sensores y módulos.

 

Programando con el IDE de Arduino

 

El primer paso que debemos hacer es instalar el IDE de Arduino, el cual pueden descargarlo de la pagina oficial.

Link descarga

Una vez instalado vamos a  Archivo >> Preferencias  y procederemos a escribir la url: http://arduino.esp8266.com/stable/package_esp8266com_index.json

 

 

 

 

Luego vamos a Herramientas >> Placa >> Gestor de tarjetas  y en la ventana que nos sale escribimos esp8266 e instalamos la tarjeta en su ultima versión disponible.

 

 

 

Parpadeo de un diodo led

El ejercicio que realizaremos es el parpadeo de un diodo led, para lo cual primeramente armaremos el circuito electrónico

 

Circuito Electrónico

 

La tarjeta NodeMCU tiene identificado sus pines diferente al del esp8266, su configuración de pines es el siguiente

Ejemplo: El pin D0 del NodeMCU es el GPIO16 del esp8266,

 

El ejercicio que realizaremos es el parpadeo de un diodo led,  para lo cual necesitaremos:

 

  • 1 Diodo led
  • 1 resistencia de 330Ω a 1/4 watt
  • 1 NodeMCU v1.0
  • 1 Protoboard
  • Cables macho-macho

 

El circuito es el siguiente:

 

 

Programación

Realizaremos un codigo que encienda y apaga un diodo led por un intervalo de tiempo, este diodo led estará conectado en el pin D0 que para el esp8266 es el GPIO16, por lo cual en la programación de Arduino tenemos que configurar el pin 16 como salida, el codigo es el siguiente.

 

/* Codigo que realiza el encendido de un diodo led conectado 
 en D0, ademas puede hacerlo parpadear por un tiempo definido
 por el usuario
 */

const int led = 16;           // GPIO16 -- D0
 
 void setup() {        
   pinMode(led,OUTPUT);        // Declara el GPIO16 como salida
 }  
 
 void loop() {                // bucle
   digitalWrite(led,HIGH);     // pone en nivel alto el pin D0
   delay(2000);               // espera 2 segundos
   digitalWrite(led,LOW);      // pone en nivel bajo el pin D0
   delay(2000);               // espera 2 segundos
  }
 

Ahora procederemos a configurar la placa NodeMCU para descargar nuestro código.

 

 

Verificamos y subimos nuestro código en el NodeMCU

 

 

 

Una vez subido el código podemos ver que el diodo led se enciende y apaga cada 2 segundos.

Esperamos haberte ayudado a conocer el esp8266 , si tuvieras algún comentario no dudes en escribirnos.

informes@smelpro.com
No Comments

Sorry, the comment form is closed at this time.