Tabla de contenido
resumen
Este es uno fácil Domótica Proyecto usando Núcleo de IoT de Amazon AWS & ESP32 Módulo Wifi. Anteriormente, aprendió a comenzar a utilizar AWS IoT Core. ESP32 Y otra vez ESP8266.Además Rampa de AWS IoT Utilizamos ESP32 y controlamos la rampa a través del panel de AWS.
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. AWS IoT Core Mensajería MQTT El servicio le permite enviar y recibir mensajes MQTT hacia y desde AWS IoT Core. La característica de publicación/suscripción le permite enviar y recibir datos arbitrarios hacia y desde paneles de AWS IoT Core.
En este tutorial, Control de periféricos Como una bombilla como un aparato de aire acondicionado a través de relé remitente Panel de AWS IoT Utilice el módulo WiFi ESP32. Básicamente lo llamamos un proyecto de domótica. La domótica es el control automático de los dispositivos electrónicos en el hogar. Estos dispositivos se llaman Internet, que le permite controlarlo de forma remota. Antes, hacíamos tantos Proyectos de Domótica Esto es lo siguiente:
Lista de materiales
Para este proyecto, necesitará una placa ESP32, un relé de 4 canales, algunos cables de puente y una placa de pruebas. Puede usar 4 bombillas u otros electrodomésticos con 4 soportes para la demostración.
Todos los componentes se pueden comprar fácilmente en Amazon a través del enlace de compra de Amazon a continuación.
Esquemas y hardware
Circuito de Domótica uso AWS IoT Core y ESP32 Es así de simple. Utilicé Fritz Software para dibujar esquemas. La siguiente figura es solo para el ensamblaje de la placa de pruebas.
La placa ESP32 tiene tantos pines GPIO. En este proyecto, GPIO19, GPIO21, GPIO22 & GPIO23 Para controlar el relé. A lo largo de la salida del relé, use bombillas para pruebas y demostraciones. Puedes usar Adaptador de 9V DC Alimente el circuito como la salida de 7805 IC regulador de voltaje Conéctese a Vin ESP32.
Proyecto PCB Gerber File & PCB Ordering Online
Si no desea ensamblar el circuito en una placa de pruebas, Placa de circuito impreso Para el proyecto, y aquí está la PCB para usted. Diseñé la PCB usando EasyEDA. Placa PCB para Domótica con ESP32 Debería verse así:
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. En la pestaña de búsqueda de servicios en la esquina superior derecha, haga clic en “IoT Core” y presione Entrar.
Haga clic en IoT Core para ver el panel de AWS IoT.
En el lado izquierdo del tablero, hay muchas opciones. Pero aquí necesitas 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 una sola cosa o varias cosas. Sin embargo, en la solicitud,[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 Home_Automation.
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 “Automation_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[モノの作成]Volver a las 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/programas para la automatización del hogar con Amazon AWS IoT Core y ESP32 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 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 35s 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 | #include “Secret.h” #include <WiFiClientSecure.h> #include <PubSubClient.h> #include <ArduinoJson.h> #include “WiFi.h” #define AWS_IOT_SUBSCRIBE_TOPIC1 “ESP32/Lámpara 1” #define AWS_IOT_SUBSCRIBE_TOPIC2 “ESP32/Lámpara 2” #define AWS_IOT_SUBSCRIBE_TOPIC3 “ESP32/Lámpara 3” #define AWS_IOT_SUBSCRIBE_TOPIC4 “ESP32/Lámpara 4” #defineランプ1 19 #defineランプ2 21 #defineランプ3 22 #defineランプ4 23 Cliente WiFi seguro red = Cliente WiFi seguro(); Subcliente de pub cliente(red); No válido Controladores de mensajes(chamuscar* tema, byte* carga útil, Unsigned entero largura) { serial.Impresión(“Entrante: “); serial.Printrung(tema); /*### Si ( strstr(tema, “ESP32/Lámpara 1”) ) { Documentación estática de Json<200> …doc; Deserialización Json(…doc, carga útil); hilo Relé 1 = …doc[“status”]; entero r1 = Relé 1.toInt(); Si(r1==1) { Escritura digital(Lámpara 1, Bajo); serial.Impresión(“La lámpara 1 está encendida”); } de otra manera Si(r1==0) { Escritura digital(Lámpara 1, Alto); serial.Impresión(“La lámpara 1 está apagada”); } } /*### Si ( strstr(tema, “ESP32/Lámpara 2”) ) { Documentación estática de Json<200> …doc; Deserialización Json(…doc, carga útil); hilo Relé 2 = …doc[“status”]; entero r2 = Relé 2.toInt(); Si(r2==1) { Escritura digital(Lámpara 2, Bajo); serial.Impresión(“La lámpara 2 está encendida”); } de otra manera Si(r2==0) { Escritura digital(Lámpara 2, Alto); serial.Impresión(“La lámpara 2 está apagada”); } } /*### Si ( strstr(tema, “ESP32/Lámpara 3”) ) { Documentación estática de Json<200> …doc; Deserialización Json(…doc, carga útil); hilo Relé 3 = …doc[“status”]; entero R3 = Relé 3.toInt(); Si(R3==1) { Escritura digital(Lámpara 3, Bajo); serial.Impresión(“La lámpara 3 está encendida”); } de otra manera Si(R3==0) { Escritura digital(Lámpara 3, Alto); serial.Impresión(“La lámpara 3 está apagada”); } } /*### Si ( strstr(tema, “ESP32/Lámpara 4”) ) { Documentación estática de Json<200> …doc; Deserialización Json(…doc, carga útil); hilo Relé 4 = …doc[“status”]; entero R4 = Relé 4.toInt(); Si(R4==1) { Escritura digital(Lámpara 4, Bajo); serial.Impresión(“La lámpara 4 está encendida”); } de otra manera Si(R4==0) { Escritura digital(Lámpara 4, Alto); serial.Impresión(“La lámpara 4 está apagada”); } } serial.Printrung(); } No válido arreglo() { serial.empezar(115200);
Modo Pin (Lámpara 1, salida); Modo Pin (Lámpara 2, salida); Modo Pin (Lámpara 3, salida); Modo Pin (Lámpara 4, salida); Escritura digital(Lámpara 1, Alto); Escritura digital(Lámpara 2, Alto); Escritura digital(Lámpara 3, Alto); Escritura digital(Lámpara 4, Alto);
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_TOPIC1); cliente.subscribir(AWS_IOT_SUBSCRIBE_TOPIC2); cliente.subscribir(AWS_IOT_SUBSCRIBE_TOPIC3); cliente.subscribir(AWS_IOT_SUBSCRIBE_TOPIC4); serial.Printrung(「¡AWS IoT conectado!」); } 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. El nombre de la cosa en este proyecto es Home_Automation. 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[] profesionalGumem = 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.
Automatización del hogar con Amazon AWS IoT Core y 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 ESP32.
nota: desconecte el relé de la fuente de alimentación mientras se carga el código.
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 publicar un tema para controlar todos los electrodomésticos.
Para ello, debe publicar el tema. Para eso, escriba “esp32 / lamp1” en la sección de filtro de temas.[メッセージ ペイロード], escriba el siguiente comando:
Ninguna configuración adicional hace nada. próximo[公開]Clic. Puede ver inmediatamente el mensaje enviado al monitor serie.
En este punto, el relé 1 se encenderá inmediatamente. Además, todos los dispositivos conectados a Relay1 están encendidos.
Para desactivar Relay1 ahora, envíe 0 en lugar de 1 desde la ventana de publicación del panel de AWS. El relé se apaga inmediatamente.
Para controlar Relay2, Relay3 y Relay4 publican los temas “esp32/lamp2”, “esp32/lamp3” y “esp32/lamp4”. “1” envía un comando “on” y “0” envía un comando “off”.
Así es como puede utilizar el módulo WiFi ESP32 para controlar sus electrodomésticos en Amazon AWS IoT Core y crear sus propios proyectos de automatización del hogar. La demostración se llevará a cabo con 4 colores de LEDs. En lugar de LED, puede controlar cualquier aparato a través de relés.
Video Tutorial y Guía
Automatización del hogar con Amazon AWS IoT Core y ESP32