Tabla de contenido
resumen
En este tutorial, aprenderá a utilizar el módulo WiFi ESP32 para controlar relés/LED/lámparas en Amazon AWS IoT Core. Anteriormente, aprendió a comenzar a utilizar AWS IoT Core. ESP32 Y otra vez ESP8266. AWS IoT Core está administrado. Servicios en la nube Le permite operar dispositivos conectados de manera fácil y segura Aplicaciones en la nube y otros dispositivos.
Este tutorial tiene como objetivo utilizar el módulo WiFi ESP32 para controlar aparatos de CA como lámparas y LED y periféricos como relés desde el panel de AWS IoT. Este tutorial se divide en varias secciones
- Configuración de hardware ESP32
- Registro y configuración de Amazon Web Services
- Instalación requerida biblioteca IDE de Arduino y escribir un boceto de Arduino para el proyecto
- Creación de un cosa es AWS.
- creación política Adjuntar a una cosa
- generación Certificado
- Modifique Arduino Sketch de acuerdo con los datos y credenciales de la cosa
- Exponer datos desde el panel de AWS
Lista de materiales
Para trabajar en este proyecto, necesita los siguientes componentes: Puede utilizar el enlace de compra dado para comprar todos estos componentes de Amazon.
Configuración de hardware y conectividad
Conectar el módulo WiFi ESP32 y los LEDs es muy sencillo.
Conecte el terminal positivo del LED a GPIO23 en el ESP32 a través de una resistencia de 560 ohmios. Conecte el terminal negativo a GND. Puede utilizar una placa de pruebas para la conexión.
Para una demostración simple, puede usar LED. Sin embargo, si desea controlar algunos aparatos de CA, puede utilizar un módulo de relé de 5V. Sin embargo, el pin GPIO ESP32 solo proporciona una salida de 3.3V, por lo que el relé no funciona usando lógica de 3.3V.
Por lo tanto, es necesario utilizar un transistor NPN que actúe como un interruptor y controle el relé incluso con lógica de 3.3V. Aquí está el diagrama de conexión para esta parte.
Proyecto PCB Gerber File & PCB Ordering Online
Si no desea ensamblar circuitos en una placa de pruebas y desea una PCB para su proyecto, aquí está la PCB. Las placas PCB para AWS IoT son EDA fácil Herramientas de diseño de PCB y esquemáticos en línea. Diseñe primero el esquema y luego conviértalo en PCB.
El archivo Gerber de la PCB se muestra a continuación. Simplemente descargue el archivo Gerber y solicite la PCB. Todas las placas de circuito impreso Y $1$ Solamente.
Puede usar este archivo Gerber para solicitar una PCB de alta calidad para este proyecto. Para ello, Todas las placas de circuito impreso Visite el sitio web oficial haga clic aquí: https://www.allpcb.com/.
Con esto[今すぐ引用]Puede seleccionar una opción para cargar su archivo Gerber. De estas opciones, puede seleccionar el tipo de material, las dimensiones, la cantidad, el grosor, el color de la máscara de soldadura y otros parámetros requeridos.
Una vez que haya ingresado todos los detalles, seleccione su país y método de envío. Finalmente, puede realizar un pedido.
Configuración del panel de Amazon AWS IoT Core
La parte de registro de Amazon Web Services ya se ha discutido en la publicación anterior. Puedes seguir Introducción a AWS IoT Core Tutorial.
Después de iniciar sesión correctamente, se abre la ventana de la Consola de administración de AWS. Escriba “IoT Core” en la pestaña de búsqueda de servicios en la parte superior y presione Entrar.
Haga clic en IoT Core para ver el panel de AWS IoT.
En el lado izquierdo del tablero, hay muchas opciones. Sin embargo, aquí debe usar dos opciones. Una es control Opción y la otra es cárcel Opción.
Creando cosas
A continuación, debe crear algo asociado con el proyecto. Para ello, siga estos pasos:
- Especificación de propiedades Things
- Configurar certificados de dispositivo
- Adjuntar una directiva a un certificado
Haga clic en Cosa en Administrar opciones. A continuación, necesitas crear una cosa aquí. Entonces, haga clic en Crear cosas aquí.
Puede elegir crear uno solo o varios, pero en la aplicación,[1 つのものを作成する]Escoger próximo[次へ]Clic.
Especificación de propiedades Things
Aquí debe especificar la propiedad Thing. Primero, dale un nombre a la cosa. Puedes nombrarlo cualquier cosa. Por ejemplo, nombre ESP32_LED.
Para una configuración adicional, no se requieren cambios.
En la opción Device Shadow, seleccione Sin sombra como primera opción. próximo[次へ]Clic.
Generar un certificado de dispositivo
A continuación, debe configurar el certificado del dispositivo. Por lo tanto, aquí puede generar automáticamente un nuevo certificado, usar su propio certificado, cargar una CSR u omitir esto.
Sin embargo, la recomendación de AWS es elegir generar automáticamente un nuevo certificado. próximo[次へ]Clic.
Crear y adjuntar política
A continuación, debe adjuntar una política a la que creó. Pero actualmente no hay una política aquí. Por lo tanto, primero debe crear una directiva.
por consiguiente[ポリシーの作成]Clic. Aquí, asigne cualquier nombre a la política. Por ejemplo, asígnele el nombre siguiente “ESP32_Policy“.
Aquí es donde la parte de la instrucción add es muy importante. En Acciones, escriba IoT. Por lo tanto, aparecerán múltiples opciones. Desde aquí, solo necesita suscribirse, conectarse y recibir.
próximo[作成]para crear una directiva. Ahora ha creado correctamente la directiva.
próximo[モノの作成]Vuelve a Opciones. Por lo tanto, verá las opciones de directiva. Debe adjuntar una directiva al certificado. Por lo tanto, seleccione la directiva mostrada y haga clic en[モノの作成]Clic.
Descargar certificados y claves
A continuación, debe descargar el certificado requerido de esta lista.
Al principio Certificados de dispositivo A continuación, cámbiele el nombre como certificado de dispositivo para su identificación.
Además, descargar Clave pública Cámbiele el nombre como clave pública. próximo Clave privada Cambie el nombre y cambie a clave privada.
El certificado de CA raíz tiene dos certificados aquí. Pero solo necesitamos Certificado CA1 raíz, descárgalo también.
Por lo tanto, descargamos todos los certificados necesarios para el proyecto.
Código fuente/Programa
El código fuente/los programas para usar ESP32 para controlar relés/LED/lámparas en AWS IoT Core están escritos en el IDE de Arduino. Antes de pasar a la parte de código, debe instalar algunas bibliotecas en el IDE de Arduino. Descargue las siguientes bibliotecas y agréguelas a la carpeta Biblioteca IDE de Arduino:
1. Biblioteca Arduino JSON: https://github.com/bblanchon/ArduinoJson
2. Biblioteca PubSubClient: https://github.com/knolleary/pubsubclient
El código se divide en dos secciones. Uno es el archivo principal y el otro es el archivo de cabecera.
Ino principal
Abra un nuevo boceto en el IDE de Arduino, pegue el siguiente código y guárdelo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | #include “Secret.h” #include <WiFiClientSecure.h> #include <PubSubClient.h> #include < ArduinoJson.h> #include “WiFi.h” #define AWS_IOT_SUBSCRIBE_TOPIC “ESP32/SUB” #defineランプ 23 Cliente WiFi seguro red = Cliente WiFi seguro(); Subcliente de pub cliente(red); No válido Conecte AWS() { LAN inalámbrica.modo(WIFI_STA); LAN inalámbrica.empezar(WIFI_SSID, WIFI_PASSWORD); serial.Printrung(“Conectarse a Wi-Fi”); mientras (LAN inalámbrica.posición() != WL_CONNECTED) { demorar(500); serial.Impresión(“.”); } Configuración de WiFiClientSecure para utilizar credenciales de dispositivo de AWS IoT red.setCACert(AWS_CERT_CA); red.Establecer certificado(AWS_CERT_CRT); red.Establecer clave secreta(AWS_CERT_PRIVATE); Conéctese al agente MQTT para el punto de enlace de AWS que definió anteriormente cliente.Establecer servidor(AWS_IOT_ENDPOINT, 8883); Crear un controlador de mensajes cliente.Establecer devoluciones de llamada(Controladores de mensajes); serial.Printrung(Conexión a AWS IoT); mientras (!cliente.conectar(Nombre de la cosa)) { serial.Impresión(“.”); demorar(100); } Si (!cliente.conexión()) { serial.Printrung(¡Tiempo de espera de AWS IoT!); devolución; } Suscribirse a un tema cliente.subscribir(AWS_IOT_SUBSCRIBE_TOPIC); serial.Printrung(「¡AWS IoT conectado!」); } No válido Controladores de mensajes(chamuscar* tema, byte* carga útil, Unsigned entero largura) { serial.Impresión(“Entrante: “); serial.Printrung(tema); Documentación estática de Json<200> …doc; Deceria Rizedison(…doc, carga útil); constante chamuscar* Mensaje = …doc[“message”]; serial.Printrung(); para (entero Yo = 0; Yo < largura; Yo++) { serial.Impresión((chamuscar)carga útil[i]); Contenido de la carga útil de Pring } chamuscar Led = (chamuscar)carga útil[62]; Extraiga comandos de control de la carga útil de AWS al LED de control serial.Impresión(“Comando: “); serial.Printrung(Led); Si (Led == 49) 49 es un valor ASCI de 1. { Escritura digital(lámpara, Alto); serial.Printrung(“Lamp_State cambiado a alto”); } de otra manera Si (Led == 48) 48 es un valor ASCI de 0. { Escritura digital(lámpara, Bajo); serial.Printrung(“Lamp_State cambiado a BAJO”); } serial.Printrung(); } No válido arreglo() { serial.empezar(115200); Conecte AWS(); Modo Pin (lámpara, salida); Escritura digital(lámpara, Bajo); } No válido bucle() { cliente.bucle(); demorar(1000); } |
secret.h
Abra una nueva pestaña en el IDE de Arduino y asígnele el nombre Secrets.h. Y pegue el siguiente código en este archivo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <pgmspace.h> #defineシークレット #define Nombre de la cosa “************” // Cambiar esto constante chamuscar WIFI_SSID[] = “***********”; Cambiar esto constante chamuscar WIFI_PASSWORD[] = “***********”; Cambiar esto constante chamuscar AWS_IOT_ENDPOINT[] = “***********”; Cambiar esto CA raíz de Amazon 1 estático constante chamuscar AWS_CERT_CA[] Programa = R“EOF( —– iniciar el certificado—– —–Terminación del certificado—– )EOF”; Certificados de dispositivo Cambiar esto estático constante chamuscar AWS_CERT_CRT[] Programa = R“clave( —– iniciar el certificado—– —–Terminación del certificado—– ) clave”; Secreto del dispositivo // Cambiar esto estático constante chamuscar AWS_CERT_PRIVATE[] Programa = R“clave( —– inicia la clave privada RSA—– —–Terminación de clave privada RSA—– ) clave”; |
Cambiar el boceto de Arduino según la cosa
A continuación, modifique el archivo de boceto de Arduino. Ir secret.h Haga clic en la pestaña para iniciar el cambio.
Debes incluir el nombre de la cosa aquí. Puede copiar el nombre de un objeto en la sección de objetos de la consola de AWS.
Pegue el nombre del objeto en la siguiente línea de código:
#define Nombre de la cosa “******” |
[WiFi SSID]y[パスワード], introduzca el SSID de WiFi y la contraseña de su red local.
constante chamuscar WIFI_SSID[] = “***************”; constante chamuscar WIFI_PASSWORD[] = “***************”; |
A continuación, debe insertar un punto de enlace de AWS IoT aquí. Para obtener el punto de enlace, vaya a la parte de configuración del panel de AWS. Yow obtiene el punto final.
Haga clic en el icono de copia para copiar el punto de enlace. Vuelva al IDE de Arduino y péguelo en la siguiente línea:
constante chamuscar AWS_IOT_ENDPOINT[] = “***************”; |
Debe insertar el CA1 raíz de Amazon entre las siguientes líneas:
CA raíz de Amazon 1 estático constante chamuscar AWS_CERT_CA[] Programa = R“EOF( —– iniciar el certificado—– —–Terminación del certificado—– )EOF”; |
Por lo tanto, para ello tendremos que volver al certificado que hemos descargado previamente. Abra este archivo en Notepad ++ y copie todo el texto.
Luego regrese al IDE de Arduino e inserte el texto copiado entre los certificados de inicio y fin.
「Certificados de dispositivo, debe pegar el texto del certificado del dispositivo. Allí, abra el archivo de certificado de dispositivo que descargó anteriormente. A continuación, copie el texto de nuevo y péguelo entre las secciones de certificado inicial y final del certificado.
Certificados de dispositivo estático constante chamuscar AWS_CERT_CRT[] Programa = R“. ..KEY( —–empezar certificado—– —–Fin certificado—– |
「Clave secreta del dispositivo, debe insertar la clave privada del dispositivo. Así que vaya a la carpeta descargada nuevamente y use Notepad ++ para abrir el archivo de clave privada en su dispositivo. Copie el texto de nuevo y péguelo entre las partes inicial y final.
Clave secreta del dispositivo estático constante chamuscar AWS_CERT_PRIVATE[] Programa = R“. ..KEY( —–empezar Teletipo privado . ..KEY—– —–Fin Teletipo privado . ..KEY—– |
Por lo tanto, todas las modificaciones del boceto de Arduino para AWS IoT Lamp / LED / Relay están completas.
Control de relés/LED/lámparas con AWS IoT Core con ESP32
Una vez realizados todos los cambios, conecte el ESP32 al ordenador. Luego vaya a la herramienta que está utilizando para este proyecto y seleccione la placa ESP32. Además, seleccione el puerto COM. Luego haga clic en la opción de carga para cargar el código en la placa ESP 32.
Una vez que el código haya terminado de cargarse, abra el monitor serie. El ESP32 intentará conectarse a la red WiFi. Cuando está conectado a una red WiFi, intenta conectarse a un servidor de AWS IoT. El monitor serie muestra este mensaje.
A continuación, debe verificar si puede exponer un tema para controlar los LED.
Para ello, debe publicar el tema. Para eso, escriba “esp32 / sub” en la sección de filtro de temas.[メッセージ ペイロード], escriba el siguiente comando:
{ Mensajes: Hola desde la consola de AWS IoT 「led_Control」: “1” } |
Ninguna configuración adicional hace nada. próximo[公開]Clic. Puede ver inmediatamente el mensaje enviado al monitor serie.
En este punto, el LED se encenderá inmediatamente.
A continuación, para apagar el LED, envíe 0 en lugar de 1 desde la ventana de publicación del panel de AWS. El LED debe apagarse inmediatamente.
Así es como puede utilizar el módulo WiFi ESP32 para controlar relés/LED/lámparas en Amazon AWS IoT Core. La demostración se realizará con LEDs. LEDEn su lugar, puede controlar cualquier dispositivo a través de un relé. La versión avanzada de este proyecto es Automatización del hogar de AWS IoT Proyecto.
Video Tutorial y Guía
Lámpara de AWS IoT ||Relés/LED/lámparas de control (con Amazon AWS IoT Core con ESP32)