domingo, 23 de octubre de 2016

Componentes (7): Dispositivo Wifi ESP8266

Pues sí, tenéis razón: tengo el blog completamente abandonado desde hace casi un año. Pero es que ha sido un año muy complicado y cargado de todo tipo de cosas.

Así que hoy que es Domingo, está lloviendo y estamos encerrados en casa, he decidido desempolvar el arduíno, el portátil y el blog y ponerme a escribir un ratito.

Retomo hoy la serie que empecé hace tiempo acerca de componentes electrónicos que conectar a nuestros "cacharros" y le dedico hoy un rato al ESP8266.

Introducción

El ESP8266 es un dispositivo (SoC o System on a Chip) que permite incorporar funcionalidad Wifi a cualquier aparato. Se trata de un componente de muy bajo coste y alta miniaturización producido por el relativamente recién llegado fabricante chino Espressif.

El chip en sí mide 5x5 mm e incorpora:
  • Una unidad microcontroladora (MCU) a modo de CPU, de 32 bits.
  • Memoria RAM para instrucciones de 64KB, y para datos de 96KB.
  • Memoria Flash.
  • Un sistema operativo integrado de tiempo real.
  • Una pila de controladores software y hardware para WIFI b/g/n.
  • Conectores para antena y otros (entre ellos 16 puertos de entradas y salidas).
  • Amplificadores de potencia, filtros y gestión de energía de bajo consumo.
De hecho, el dispositivo posee tres modos de funcionamiento: activo, suspendido y sueño profundo (deep sleep), que permite un aprovechamiento óptimo de la energía, motivo por el cual ha sido adoptado en muchos dispositivos como "TV Sticks" que vienen de China.

El dispositivo puede funcionar conectado a un controlador, como un Arduino por ejemplo, o bien de manera autónoma puesto que es programable.

En el caso de funcionar conectado a un controlador, su manejo se realiza mediante comandos "AT" como si se tratase de un modem, utilizando el protocolo Hayes.

Presentación y conexiones

Como  hemos dicho, el chip mide 5mm de lado, y se puede soldar directamente sobre la placa, pero para nuestros propósitos, existe una presentación que se denomina ESP-01 (o ESP8266-01) que incluye el módulo ESP8266, un oscilador, y un interfaz con 8 pines de control (ver foto del párrafo anterior).

El conexionado de esta presentación es el que se muestra en la siguiente imagen:
  • RX: Recepción de datos.
  • GPIO0 y GPIO2: Estos dos pines son de entrada/salida, y se utilizan para arrancar el módulo en distintos modos: modo normal, programación, etc. Hay quien dice que deben conectarse a una alimentación de 3,3V con una resistencia de "pull-up", pero para las pruebas que yo he hecho (tengo uno funcionando desde hace más de un año) simplemente los dejo sin conectar y el módulo arranca correctamente.
  • GND: Tierra
  • VCC: Alimentación. OJO: debe recibir una alimentación de 3,3V (en las especificaciones indica un máximo de 3,6V).
  • RESET: Alimentar para reiniciar el dispositivo.
  • CHPD: Si este pin recibe un valor lógico de 1, el dispositivo se mantendrá en modo activo, mientras que si recibe un 0 permanecerá suspendido. En mis experimentos, sueldo este pin directamente con el VCC de alimentación, a 3,3V.
  • TX: Transmisión de datos.

Funcionamiento

El dispositivo puede funcionar tanto como un cliente, para conectarse a una red Wifi, o como un servidor (por ejemplo para montar un minúsculo servidor web).

Todas las funciones se pueden controlar por medio de comandos AT (también conocido como Hayes), que son comandos de texto que se envían mediante una conexión serie y comienzan todos con las letras "AT". La lista completa de comandos se puede consultar en este enlace, pero a continuación hago un pequeño resumen para ver qué podemos llegar a conseguir con él:

  • AT+CWLAP: Permite obtener una lista de las distintas redes Wifi disponibles.
  • AT+CWJAP: Nos permite conectarnos con una red especificando su SSID y contraseña.
  • AT+CIFSR: Nos permite consultar la dirección IP obtenida.
  • AT+CIPSTART: Inicia una conexión con una dirección IP remota.
  • AT+CIPSEND: Envía datos a la dirección especificada anteriormente.
  • AT+CIPCLOSE: Termina la conexión con la dirección remota.
  • AT+CIPSERVE: Inicia o finaliza el modo servidor.
Como se puede ver, su utilización es muy simple. Además, siempre podemos utilizar una librería que nos permita enviar los comandos necesarios.

Librerías

Para utilizar este módulo con Arduino, hay numerosas librerías; sobre todo considerando la posibilidad de utilizarlo como dispositivo independiente o como dispositivo serie conectado al Arduino.

La librería "oficial" de la comunidad ESP8266 es la siguiente:


Aunque la que yo he utilizado hasta ahora es esta otra (de James Sleeman) que es muy fácil de utilizar:


Precios

Finalmente, este módulo está disponible en una gran cantidad de sitios. Como siempre yo lo compré directamente a China en este enlace de Aliexpress, aunque parece que ya no lo tienen disponible. Da igual, en este otro enlace lo tienen aún más barato, a 1,70$ y es un éxito de ventas.
Related Posts Plugin for WordPress, Blogger...

No hay comentarios:

Publicar un comentario