Tu primer proyecto IoT Cloud (I): Tutorial para solución E2E con ESP32 y AWS IoT

11 de septiembre de 2020

En un anterior post a comienzos de verano exploramos en profundidad el catálogo de servicios disponibles en Amazon Web Services para la implementación de soluciones profesionales que permitan unir recursos de dispositivos inteligentes con capacidades de múltiple propósito de la nube.

Sentadas las bases teóricas, es turno de pasar a la acción: he aquí un tutorial paso a paso para la creación desde cero de un proyecto IoT basado en la conexión e interacción entre un microcontrolador ESP32 y el Hub de componentes asociados en la nube de AWS IoT.

Con la intención de facilitar la comprensión didáctica, el proyecto tendrá por finalidad simbólica el registro estadístico de profesionales a un evento tecnológico de vanguardia, discerniendo si cada persona de a pie acude en calidad de asistente regular, patrocinador o ponente. Lo prometido es deuda, ¡manos a la obra!

Visión global técnica de la solución

La propuesta plantea abordar todos los pasos necesarios para una comunicación bidireccional entre componente IoT físico y AWS IoT: registro del thing, incluyendo gestión de certificados y políticas, programación de lógica de publicación y suscripción básica a topics para mensajería segura a través del protocolo MQTT.

Posteriormente llevaremos a cabo el despliegue de una plantilla predefinida existente en AWS Serverless Application Repository (SAR), añadiendo dicha conexión e interacción entre entidad local e infraestructura Cloud. El flujo de trabajo completo que incorpora la aplicación SAR incluye:

  • Configuración de AWS IoT Rule para el reenvío o suscripción de los mensajes emitidos por el microcontrolador a una función AWS Lambda que permita actualizar una tabla en el servicio autogestionado de bases de datos NoSQL Amazon DynamoDB.
  • Endpoint REST que acepta peticiones de servicio POST mediante Amazon API Gateway, invocando una función AWS Lambda que publique mensajes personalizados en la propia pantalla del dispositivo.
Figura 1. Herramientas y tecnologías implicadas en solución IoT Cloud Figura 1. Herramientas y tecnologías implicadas en solución IoT Cloud

¿Qué se requiere para la Prueba de Concepto?

De cara a la realización de la PoC, asegúrate de contar con lo siguiente:

  • Cuenta de AWS, resultando más que suficiente para nuestras pretensiones de proyecto la capa de 12 meses de uso gratuito (Free Tier) de los servicios involucrados, no esperando sobrepasar las limitaciones de uso de los mismos. Puede hacer uso del siguiente enlace para proceder a un nuevo registro, así como entrar al detalle de las condiciones de uso de los servicios de la capa gratuita de AWS desde este otro link.
  • Una conexión WiFi estable.
  • Descarga e instalación de la versión más reciente del entorno de programación Arduino IDE, necesario para programar microcontroladores que nos permitan recoger datos de la sensórica integrada para su envío, persistencia y procesamiento en la nube.
  • Disponer de un módulo de la familia ESP32 compatible con Arduino, atendiendo a este listado oficial de placas admitidas.

ESP32

ESP32 es la denominación de familia de chips SoC ("System on Chip") que salió al mercado en 2016 de la mano de Espressif (de ahí su nombre) y TSMC. Evolución natural del SoC ESP8266, representan un diseño ideal para soluciones IoT al integrar un procesador de doble núcleo de 32 bits (ampliable a 240 MHz), conectividad WiFi y Bluetooth 4.0, encriptación por hardware, múltiples sensores ambientales, táctiles y posicionales, y una enorme comunidad a sus espaldas desarrollando firmwares, herramientas y documentación para popularizar su uso.

En nuestro caso, recurriremos para la prueba de concepto al kit de desarrollo integrado M5Stack Fire, el cual incluye: SoC ESP32, pantalla LCD a color, botones frontales programables, altavoz integrado, zócalo para tarjetas micro SD y capacidad de expansión de múltiples módulos funcionales magnéticamente.

https://www.youtube.com/watch?v=zzw_oGgEzSQ&feature=emb_logo
Video 1. Spot promocional oficial del kit de desarrollo y prototipado ESP32 M5Stack

Hitos para alcanzar la cima

Con el fin de establecer una composición de lugar para orientarnos en caso de pérdida, nuestra solución comprenderá los siguientes objetivos:

  1. Registro de nuevo tipo de dispositivo virtual AWS IoT ("thing"), certificados y políticas de seguridad; definición de plantillas de cosas o thing types, thing groups y billing groups (opcional).
  2. Instalación y configuración de placa ESP32 y librerías de soporte de protocolo de comunidad M2M MQTT y serialización de mensajes en formato JSON en Arduino IDE.
  3. Inclusión de certificados, implementación y flashing de código en SoC ESP32 para registro de paridad y operabilidad sobre AWS IoT Core y resto de servicios Cloud.
  4. Despliegue personalizado de aplicación AWS SAR para creación de Backend Serverless de envío, recepción y procesamiento en streaming de topics.
  5. Validación de workflow de solución IoT Cloud.

Este artículo es el primero de una serie de 3 capítulos, cuyo enfoque se centrará en completar los tres primeros pasos descritos anteriormente, reservando los dos últimos para la tercera parte de la función. La misión es clara: aportar un valor diferencial a partir de la captura de información del entorno que requiere de suplir carencias y aprovechar oportunidades gracias al Internet de las Cosas.

¿Te animas? Just do IoT!

Todos los post de esta serie:

Tu primer proyecto IoT Cloud (I): Tutorial para solución E2E con ESP32 y AWS IoT

Tu primer proyecto IoT Cloud (II): Registro en AWS IoT y puesta a punto de M5Stack

Tu primer proyecto IoT Cloud (III y fin): Procesamiento en streaming y validación final

Para mantenerte al día con el área de Internet of Things de Telefónica visita nuestra página web o síguenos en Twitter, LinkedIn y YouTube.