IoT: Parte III

Share:

IoT: Parte III

Figura 1. Módulo Al Thinker ESP8266.



En la parte I se comentó sobre lo que es el IoT, y en la parte II lo referente a la tecnología del RFID como punto de partida y cuya evolución ha conducido a las tecnologías del Wifi y del Bluetooth.

En esta parte se ha querido presentar y estudiar un dispositivo que nos permitirá realizar proyectos de IoT de forma muy rápida y muy sencilla.

Haciendo IoT con el: ESP8266

El ESP8266 es un chip microcontrolador fabricado por una empresa llamada Espressif en Shanghai, China. Las características principales de este dispositivo son:

  • CPU microntrolador de 32 bits, Tensilica Xtensa LX106. Su reloj base es de 80 MHz y puede llevarse a 160 MHz, en modo overclock. 
  • RAM tipo Flash de 64 kB para programas y 96 kB para dato expansible. 
  • Soporta IEEE protocolos 802.11 b/g/n 2.4 MHz Wifi. 
  • Capas de protocolo: TCP/IP, UDP. 
  • Soporta cifrado: WEP y WPA/WPA2. 
  • Modos de conexión: estación (STA), punto de acceso (AP) y estación + AP. 
  • Antena y Hardware amplificador de RF integrados. Potencia de salida: +19.5 dBm 
  • Puertos de propósito general GPIO. Soporta PWM. 
  • Sensor de temperatura integrado (no accesible en el modulo ESP-01) 
  • Interfaces: SPI, IPC, I2C, SDIO, I2S, UART. 
  • Conversor ADC de 10 bits (no accesible en el módulo ESP-01). 
  • Tensión de alimentación: 3.6 V a 2.5 V. Recomendado: 3.3 V (típico).
  • Consumo promedio de corriente: 80 mA.
  • Consumo en baja energía: 10 uA. 
  • Temperatura de funcionamiento: -40°C hasta 125°C. 
  • Interfaz UART de comunicación serial. 
  • Reprogramable (Flashing memory).

Preparando el Hardware:



Figura 2. Identificación de pines en el módulo ESP8266-01.


La figura 2 muestra un módulo fabricado por la empresa AI-thinker que utiliza el chip ESP8266 fabricado por Espressif.
Se debe alimentar el módulo con una fuente DC de +3.3 V y que suministre una corriente máxima de 300 mA.
Debe cuidarse que la fuente no exceda en ningún momento los 3.6 V, ya que se corre el riesgo de quemar el módulo.
La fuente debe estar filtrada y regulada adecuadamente. No debe presentar oscilaciones o fluctuaciones ya que estas pueden ocasionar el reset o atasco ocasional en el  funcionamiento del módulo.
Cuando el módulo está bien polarizado una luz roja se enciende en modo fijo.
Debe cuidarse que en el momento de arranque del módulo, la fuente ya haya alcanzado previamente su estabilidad o tensión nominal. Para asegurar un arranque o boot exitoso, es aconsejable que el pin CH_PD (ver figura 2) llegue a la tensión de fuente luego de que ésta sea estable. 
El pin CH_PD actúa como un habilitador o enable que permite arrancar o iniciar el programa en la memoria flash o firmware del módulo.
Para lograr un arranque seguro del módulo se debe colocar una red RC que proporcione un retraso de al menos 200 useg. Se aconseja una R de 10 kOhm y un capacitor de 100 nF, Véase  la figura 3.
El retraso proporcionado en este caso es de alrededor de 1 mseg.



Figura 3. ESP8266. Preparando el Hardware: CH_PD.


El pin de GPIO00 debe estar al aire o a la tensión de rail 3.3 V a través de una resistencia de pull-up, si se desea que el módulo ejecute el programa o firmware cargado en la memoria. Si GPIO00 esta conectado a tierra durante el encendido del módulo, este entrará en modo flash para ser programado.

También es aconsejable colocar un resistencia de 180 a 200 ohmios entre el pin TXD del cable de UART del PC y el pin RXD del módulo. Para realizar conversión de nivel o level shifting de 5 a 3.3 V, si la interface del cable tiene voltaje de salida TTL. Véase la figura 4.



Figura 4. ESP8266. Preparando en Hardware: TXD-RXD.


Para conectar el módulo a la PC se puede utilizar un cable USB serial standard o un cable FTDI, la figura 5 muestra la configuración de pines para ambos casos. 
Se debe instalar el driver o controlador del respectivo cable en el PC. Una vez instalado, se debe ir a "administrador de dispositivos" o device manager y  buscar el controlador instalado y ver en que número el puerto COM serial esta instalado. Tome nota del número del puerto.




Figura 5. ESP8266.  Peparando el hardware: identifican de pines cables USB serial. Arriba USB-UART genérico, abajo USB-FTDI.


Debe asegurarse de conectar TXD (cable USB) con RXD (ESP8266)  y RXD (cable USB) con TXD (ESP8266). Recuerde que se debe usar el resistor (180 Ohm)  de la figura 4 para el caso TXD---RXD.

El pin de reset se puede dejar al aire. Cuando este pin es llevado a tierra  de mantera momentánea,  el módulo entra en  estado de reset y se reinicia el programa instalado en la memoria flash. Ses puede llevar al voltaje de rail por medio de un resistor de pull-up (3k),


Preparando el Software:

Abundante información acerca de herramientas para el desarrollo de software para desabolladores se encuentra disponible en el sitio web de Espressif. No obstante,  se presenta aquí una guía resumida de los pasos esenciales que deben llevarse a cabo para lograr cargar un Firmware en la memoria flash, establecer comunicación desde una consola serial y cargar programas de desarrollo IoT. El usuario podrá experimentar herramientas más avanzadas según sus propios requerimientos .

Actualizando el Firmware:

Lo más recomendable para iniciarse con el módulo ESP8266 es actualizando el Firmware por una versión más estable, nueva y conocida. Ciertos módulos en el mercado poseen versiones de Firmware muy viejas, por lo tanto, obsoletas, limitadas y con posibles fallas de estabilidad. Las versiones que presentan buen desempeño y estabilidad son las superiores o iguales a la 0.9.
En el sitio web Espressif/descargas se puede descargar la última versión de Firmware para el ESP8266. 

Para instalar una nueva versión de Firmware se necesitan dos cosas:

  • Firmware de actualización en formato binario (Firmware_XX.bin)
  • Herramienta de software para flashear o cargar el Firmware a la memoria de arranque o boot.

Aquí se puede descargar algunas versiones de Firmware:


Para flashear la memoria tenemos varias herramientas de software que pueden lograr este propósito, aquí recomendamos dos que han resultados probadas y exitosas en todos los casos.

El procedimiento para flashear es:
  1. Llevar el pin GPIO00 a tierra en el ESP8266-01
  2. Aplique reset al dispositivo. Alternativamente, puede apagar y encender de nuevo el módulo. El mismo entrará en modo de flasheo.
  3. Previa instalación del controlador o driver  del cable USB-UART, identifique el COM donde fue instalado el controlador, se recomienda que este ubicado dentro de los primeros 6 COM, aunque esto no es restrictivo.
  4. Abra el programa Nodemcu flasher o el de elección para la versión de su PC. A continuación, iindique el COM. En la opción "Config" seleccione la ubicación del archivo .bin del Firmware que desea cargar. Seguidamente, en la opción "Operation" seleccione el boton "Flash(F)". Si todo  esta bien se mostrará las direcciones MAC del hardware de estación (station) y de punto de acceso (AP) del dispositivo. Una barra verde de progreso y un indicador visual mostraran  si ha sido exitosa la operación de flasheo.
  5.  De ser exitoso el punto 4, proceda a desconectar el pin GPIO00 de tierra y reinicie el dispositivo. De lo contrario, intente repetir el proceso verificando los pasos anteriores.
  6. Con cualquier monitor serie como el PuTTY por ejemplo, coloque el COM indicado en la opción serial, seleccione 9600 baudios, deje el resto de las opciones por defecto. Escriba el comando: AT+GMR en mayúscula. Debe obtener como respuesta un mensaje legible conteniendo la versión del Firmware.
  7. Si resulta exitoso el punto 6, usted ya tiene control del dispositivo ESP8266. De lo contrario, modifique la velocidad a 115200 baudios e intente de nuevo. En algunos monitores serie es necesario agregar la opción NL+CR al final de cada comando de consola.



Figura 6. Captura de pantalla del programa Nodemcu Firmware Programmer.


Figura 7. Captura pantalla del programa PuTTY.

El programa Putty se puede descargar aquí: www.putty.org/

Nota: En caso de usar Putty, luego de presionar Enter, presionar CTL+J para enviar la secuencia NL+CL. Así: Comando AT + Enter + (CTL+J).

El siguiente paso será ahora programar una aplicación de prueba en el ESP8266.

Programando el ESP8266:

Existen básicamente dos modos de programar el módulo ESP8266:

  • Sin Sistema Operativo conocido como: Non.-OS SDK: En esta opción se incluyen los comandos AT, Programación en bloques como el TUNIOT, programación en C++. El usuario desarrolla su propio software acorde a un conjunto de reglas de la interface espconn.
  • Sistema operativo abierto u open source llamado RTOS SDK. En esta opción el usuario saca provecho de un sistema operativo que le permite realizar operaciones más complejas y/o dedicadas como: multitarea, sincronización, tareas orientadas a procesos, usos directo de las API para desarrollar software de aplicación, entre otros.

La opción Non-OS SDK puede ser la opción preferida para pequeñas o poco complejas aplicaciones IoT, o para el caso de principiantes.

Los comandos AT pueden ser un buen punto de arrancada para comenzar a programar con el ESP8266.

Una guía completa de comandos AT se encuentra disponible aquí.
Los comandos AT se deben escribir siempre en mayúsculas.
La guía anterior describe detalladamente cada comando y proporciona también ejemplos.

Otra forma de programar el ESP es utilizando un modelo de programa en bloques. En el sitio web:  Coding is easy...pueden encontrar información y tutoriales acerca de este método. El autor de este programa y del sitio web es Adel Kassah.
Con este método se pueden desarrollar aplicaciones con muy poca experiencia en programación.

Para programar el ESP8266 deben elegir la opción TUNIOT FOR ESP8266. Como se ve en la figura 8.


Figura 8. Sitio web para programar el ESP8266 con TUNIOT.


EL programa TUNIOT genera código C para Arduino.

Los programas elaborados con TUNIOT se pueden abrir en el IDE Arduino, sin el uso del módulo Arduino.
Se puede descargar la última versión del IDE Arduino aquí. La versión IDE 1.85 se puede descargar directamente aquí.

Para que el IDE de Arduino pueda utilizare con el TUNIOT es necesario ir al gestor de tarjetas o board manager e incluir como tarjetas las librerías del ESP8266.

El siguiente link debe copiarse en la opción de archivo-preferencias. En la casilla de URL para buscar tarjetas. Luego cerrar la ventana anterior y abrir el gestor o manager de tarjetas en la opción herramientas . Hacer clic en gestor de tarjetas. Seguidamente se abrirá una ventana en la que debe escribirse "ESP" y aparecerá "esp8266 by ESP8266 Community", seleccionar la última versión y darle a instalar.
Al finalizar, las tarjetas ESP8266 aparecerán ya incluidas en el gestor de tarjetas.

Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json

Cuando se programa con el ESP8266 hay que seleccionar como tarjeta la más parecida a versión disponible en físico. Véanse las figuras 9 y 10.


Figura 9. La librería de tarjetas ESP8266 agregada.


Figura 10. Seleccionando del gestor o tarjetas la placa: ESP8266 genérica.


Cuando se elaboran los programas con TUNIOT estos se pueden abrir en el IDE de Arduino y desde allí se puede descargar al ESP8266 mediante la opción "subir", como se ve el la siguiente imagen:



Figura 11. Subiendo el programa al ESP8266.


Cuando el programa se comienza a subir, en la parte inferior de la ventana de la figura 11 se muestra el progreso en porcentaje. Al finalizar el proceso se muestra en mensaje:  "subido"o uploaded

Una vez programado el módulo ESP8266 este permanece con esta programación hasta que se cargue una nueva. De modo que se puede reiniciar el módulo y este volverá a cargar el programa contenido en la memoria.


En la siguiente parte veremos algunos ejemplos de programación y aplicaciones IoT con este interesante módulo: ESP8266.





Referencias:
1. EPS8266 SDK Getting Started Guide. 
2. ESP8266 AT Instruction Set.
On-line: http://www.espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf. Visistado: 2017
3. Coding is easy. On-line: http://easycoding.tn/index.php/nodemcu/. Visitado: 2017




No hay comentarios