ESP8266 - AWS IoT
Este tutorial te enseña cómo usar ESP8266 con AWS IoT Core. Específicamente, cubriremos en detalle los siguientes temas:
- Estableciendo la conexión entre el ESP8266 y AWS IoT Core.
- Programando el ESP8266 para transmitir datos a AWS IoT Core.
- Programando el ESP8266 para recibir datos de AWS IoT Core.
Al seguir estos pasos, obtendrás una comprensión integral de la integración del ESP8266 con AWS IoT Core para una comunicación fluida.

Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca de ESP8266 y AWS IoT
El ESP8266 establece una conexión con AWS IoT Core a través del protocolo MQTT. Aunque existen bibliotecas disponibles para simplificar esta conexión, es más complejo que conectarse a un broker MQTT local como Mosquitto en tu PC. Esta complejidad surge de las medidas de seguridad estrictas de AWS IoT Core, que requieren pasos de configuración para obtener credenciales de autenticación y autorización para la integración en el código del ESP8266. En esencia, el proceso implica dos pasos principales:
- Configurar AWS IoT Core: Este paso configura AWS IoT Core para generar las credenciales de autenticación requeridas, las cuales se incorporarán posteriormente al código ESP8266.
- Escribir el código ESP8266: Después de obtener las credenciales de autenticación de AWS IoT Core, el siguiente paso implica escribir el código ESP8266. Este código integra los protocolos de autenticación y comunicación necesarios para una interacción sin problemas con AWS IoT Core.
Echemos un vistazo más de cerca a cada paso para entenderlo mejor.
Configuración de AWS IoT Core para su uso con ESP8266
Los objetivos de este paso incluyen:
- Creación de una representación del dispositivo ESP8266 en AWS IoT Core, conocida como 'Thing'.
- Configuración de la autorización necesaria para permitir que el dispositivo ESP8266 se conecte, publique y se suscriba a AWS IoT Core, conocida como 'Policy'.
- Generación de las credenciales de AWS necesarias para la autenticación, conocidas como 'Certificados'. Estas credenciales se descargarán e integrarán en el código de Arduino ESP8266.
A continuación se presentan instrucciones para configurar AWS IoT Core para su uso con ESP8266 a través de la consola de AWS IoT. Tenga en cuenta que, aunque la interfaz de usuario pueda cambiar con el tiempo, el proceso debería permanecer similar a las instrucciones proporcionadas a continuación:
- Inicia sesión en la Consola de AWS IoT
- Crea un Thing accediendo a Gestionar Todos los dispositivos Things

- Haz clic en el botón Crear cosas.
- Selecciona Crear cosas individuales y haz clic en el botón Siguiente.

- Especifique el Nombre del dispositivo, por ejemplo, ESP8266-thing y haga clic en el botón Siguiente en la parte inferior de la página.

- Genera las credenciales al seleccionar la opción Autogenerar un nuevo certificado, y haz clic en el botón Siguiente.

- Ahora, se crea un Certificado y se vincula al Objeto.
- Crear una política haciendo clic en el botón Crear política.

- Se abrirá una nueva pestaña.

- Especifique el Nombre de la política, por ejemplo, ESP8266-policy y haga clic en el botón JSON.
- Copie el contenido de la política en formato JSON que se muestra a continuación y péguelo en el área documento de la política.
- Haz clic en el Crear botón en la parte inferior de la página para crear la política.
- Ahora, se crea una Política y se adjunta al Certificado. Cierra esa página y vuelve a la página del Dispositivo.
- Ver la ESP8266-policy y haz clic en el Crear objeto para crear el Dispositivo.

- Aparece una ventana emergente que te permite descargar los archivos de credenciales. Descarga todos los archivos y guárdalos en un lugar seguro de tu PC y mantén su confidencialidad.

- Luego, haga clic en el botón Hecho.
Entre los archivos descargados, hay tres archivos que se utilizarán en el código ESP8266 en los próximos pasos:
- AmazonRootCA1.pem
- xxxxxxxxxx-certificate.pem.crt
- xxxxxxxxxx-private.pem.key
Estos archivos se pueden abrir con cualquier editor de texto, como Notepad o Notepad++.
Escribiendo el código ESP8266 para conectarse a AWS IoT Core
Pasos R\u00e1pidos
Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:
- Consulta el cómo configurar el entorno para ESP8266 en Arduino IDE tutorial si es la primera vez que usas ESP8266.
- Conecta la placa ESP8266 a tu computadora usando un cable USB.
- Abre Arduino IDE en tu computadora.
- Elige la placa ESP8266 correcta, como (p. ej. NodeMCU 1.0 (ESP-12E Module)), y su puerto COM respectivo.
- Abre el Administrador de Bibliotecas haciendo clic en el icono Administrador de Bibliotecas en la barra de navegación izquierda de Arduino IDE.
- Escribe MQTT en la caja de búsqueda, luego busca la biblioteca MQTT de Joel Gaehwiler.
- Haz clic en el botón Instalar para instalar la biblioteca MQTT.

- Escribe ArduinoJson en el cuadro de búsqueda, luego busca la biblioteca ArduinoJson de Benoit Blanchon.
- Haz clic en el botón Instalar para instalar la biblioteca ArduinoJson.

- Copia el código anterior y pégalo en el IDE de Arduino.
- Crea el archivo secrets.h en el IDE de Arduino mediante:
- Haz clic en el botón justo debajo del icono del monitor serie y elige Nueva pestaña, o usa las teclas Ctrl+Shift+N.
- Escribe el nombre del archivo secrets.h y haz clic en el botón Aceptar
- Copie el código de abajo y péguelo en el archivo creado secrets.h.
- Actualice la siguiente información en el secrets.h
- El WIFI_SSID y el WIFI_PASSWORD de su red WiFi
- El AWS_CERT_CA, AWS_CERT_CRT y AWS_CERT_PRIVATE. Esta información se encuentra en los archivos que descargó en el paso anterior.
- El AWS_IOT_ENDPOINT. Esta información se puede encontrar en la Consola de AWS IoT yendo a Configuración como se muestra en la imagen a continuación:
- Compila y carga el código en la placa ESP8266 haciendo clic en el botón Cargar en el IDE de Arduino



Enviando datos desde ESP8266 a AWS IoT
El código ESP8266 anterior lee periódicamente datos de un pin analógico y los envía a AWS IoT cada 4 segundos. Si abres el Monitor Serial en el IDE de Arduino, verás el registro como el siguiente:
Para verificar si los datos son recibidos por AWS IoT o no, siga los siguientes pasos:
- En la consola de AWS IoT, navegue a Prueba Cliente de Prueba MQTT

- Haz clic en el botón Suscribirse a un tema.
- Escribe esp8266/esp8266-to-aws en el Filtro de temas. Puedes cambiar el tema pero DEBE coincidir con el tema en el código ESP8266.
- Haz clic en el botón Suscribirse.
- Podrás ver los datos enviados desde ESP8266 en la Consola de AWS IoT.
Enviando datos de AWS IoT a ESP8266
Es posible enviar los datos desde la Consola de AWS IoT al ESP8266 siguiendo los siguientes pasos:
- En el IDE de Arduino, abra el Monitor Serial
- En la Consola de AWS IoT, navegue a Prueba Cliente de Prueba MQTT

- Haz clic en el botón Publicar en un tema.
- Escribe esp8266/aws-to-esp8266 en el Nombre del tema. Puedes cambiar el tema, pero DEBE coincidir con el tema del código ESP8266.
- Opcionalmente, puedes cambiar la carga útil del mensaje, o simplemente dejarla como predeterminada.
- Haz clic en el Publicar botón.
- Abre el Monitor Serial en el IDE de Arduino; verás el mensaje enviado desde AWS IoT Console.
Haz más con AWS
Ahora, ya puedes establecer una comunicación bidireccional entre el ESP8266 y AWS IoT Core. Esto significa que puedes enviar datos desde el ESP8266 a AWS IoT Core y recibir datos de AWS IoT Core en el ESP8266. Además, tienes la capacidad de configurar IoTRules, lo que permite que el ESP8266 se conecte sin problemas con otros servicios de AWS como Lambda, DynamoDB, Amplify y RDS. Con IoTRules, puedes automatizar acciones basadas en datos recibidos desde el ESP8266, lo que posibilita una amplia gama de aplicaciones e integraciones de IoT.