Introduction: Alarma ESP32
Proyecto de alarma casera con micro ESP32 y programa arduino.
Se trata de montar una caja con el micro, la pantalla, el lector RFID, el buzzer y demás componentes. También habrá que añadir los componentes externos a la caja de control: la sirena con relé, el sensor de movimiento PIR y el sensor magnético de la puerta.
Funciones principales:
- puesta en marcha - activación de vigía mediante pulsado de tecla en pantalla - desactivación con pulsado mientras no se ha llegado al final del timeout
- alarma en vigilancia: estado de la alarma una vez se ha puesto en modo vigía: si se abre puerta o se detecta movimiento se activa la cuenta atrás para poder desactivarla mediante un llavero o tarjeta RFID. Si no se desactiva, la alarma sonará durante el tiempo configurado.
- configuración, permite personalizar totalmente la alarma: tema en pantalla, timeouts, idioma, usuarios permitidos, wifi, ...
- envío de eventos: si se prepara adecuadamente, todos los eventos se envían a un servidor en la nube para poder notificar por email o aplicación al usuario administrador.
Todos los elementos se pueden adquirir en tiendas de electrónica y amazon. en cuanto a la caja, habra que construirse una, o bien hacer bricolaje con alguna que tengamos en casa. En mi caso he realizado una con una impresora 3D (archivo STL adjunto).
La lista de materiales necesarios:
- caja para la electrónica de la consola archivo STL TinkerCad
- caja para sensor PIR modelos de archivo Thingiverse
- micro ESP32 Dev link
- pantalla táctil ILI9341 link
- lector RFID RC522 link
- placas de montaje pcb link
- terminales de tornillo para placa pcb link
- buzzer para pitidos link
- cables de conexiones arduino
- sensor PIR link
- sensor magnético link
- sirena link
- relé link
- pins macho y hembra para pcb link
- conector USB para pcb link
- alimentador de móvil con salida USB 5V llaveros o tarjetas RFID
Herramientas:
- soldador + estaño
- pistola de silicona + barras de silicona
- cables y mangueras
- tornillos, tuercas de varias medidas M2 y M3
- cinta aislante
- tubos termoretráctil
Step 1: Caja De Conexiones
Usa el archivo adjunto para imprimir la caja en una 3D. Tiene el fondo y la tapa.
Si no dispones de una impresora 3D puedes usar una caja ya hecha o hacerla tu mismo. Las dimensiones son 120mm x 140mm x 40mm aprox.
Las medidas de la ventana para la pantalla son de 55mm x 45mm aprox.
Attachments
Step 2: Montaje De Placas Pcb
Para el uso final, es conveniente montar el ESP32 en placas PCB para poder organizar mejor todas las ocnexiones.
Hay que colocar un condensador 10uF entre el EN y GND de la placa ESP32 para poder cargar los programas de forma cómoda, sin tener que pulsar el boton Boot cada vez.
Igualmente, también se deberia preparar una placa con los terminales de tornillo para el acceso a las conexiones de los elementos exteriores de la caja (sensores de puerta, de movimiento y alarma).
Las conexiones de los terminales son:
- alarm 3.3V
- alarm GND
- alarm signal (output)
- door sensor (0-3.3V input)
- door sensor 3.3V
- PIR motion sensor (0-3.3V input)
- PIR motion sensor 5V
- PIR motion sensor GND
Step 3: Montaje De Elmentos En Caja Y Cableados
Vamos montando los elementos en la tapa de la caja, siguiendo este orden y cableando a medida que avanzamos. Usa silicona o tornillos para colocar los elementos.
Examinar el dibujo del cableado para seguir las conexiones. Se adjunta archivo Fritzing para edición.
- Leds de funcionamiento y alarma
- placa pcb de conexiones
- modulo RFID
- pantalla táctil
- placa pcb de ESP32
- buzzer
Attachments
Step 4: Subida De Programa Arduino
Es preciso instalar algunas librerias para poder subir el programa, entre ellas las de rfid, de ntp, wifi, las de pantalla:
- lv_arduino
- Adafruit_ILI9341
- Adafruit_GFX
- Adafruit_TFTLCD
- Adafruit_TouchScreen
- ESPAsyncWebServer
- AsyncTCP - MCUFRIEND_kvb
- TFT-eSPI
- MFCR522
- NTP_Client
Debemos localizar algunas librerias en nuestro pc para permitir el uso de las fuentes programadas en la pantalla y los temas permitidos. Normalmente las librerías se ubican en la carpeta \documentos\arduino\libraries.
lv_arduino:
Puedes usar el archivo adjunto o modificar el archivo lv_conf.h para permitir los temas y fuentes usados.
TFT_e-SPI:
Hay que poner los pines correspondientes para el uso de la pantalla en nuestro sistema, para ello edita el User_Setup.h y habilita la pantalla (ILI9341) y fíjate en los pines, puede que tengas que cambiarlos. Dejo el archivo modificado.
Step 5: Prueba Y Configuración De La Alarma
Una vez montada la caja y antes de colgarla en la pared deberíamos probar las funciones básicas para asegurarnos que todo está correctamente cableado.
La pantalla principal muestra la hora y el estado de la alarma, la conexión wifi y los sensores.
En cuanto a la configuración, es sencilla y se sigue en las 6 pestañas de configuración disponibles a la que se acceden pulsando la tecla de configuración:
- WIFI
- configuración de red y contraseña
- IP/PHP
- Nombre del dispositivo (se toma en cuenta si se envía la info a la nube)
- IP local
- Puerto remoto (para abrirlo en el router de casa y que se redirija al puerto 80 de la IP local)
- PHP: página php del servidor donde vamos a enviar la información de los eventos
- RFID
- desplegable de usuarios, con botón de eliminación del usuario seleccionado
- añadir nuevo usuario en 3 pasos:
- escribir nombre
- leer llavero o tarjeta rfid
- guardar
- MISCELÁNEA
- Tema de presentación (5e idioma (Català, Castellano, English)
- Zona horaria para la hora recgida por servidor NTP.
- definir hora de verano
- test de alarma y sensores
- TIEMPOS
- tiempo disponible después de activar
- tiempo disponible para desactivar
- tiempo que sonará la alarma
- SALIR
- volver a parámetros iniciales
.
Step 6: Montaje En Pared Y Conexion De Elementos Externos
Buscar un sitio cerca de la puerta para poner la caja y cablar los elementos externos a ella: sirena, sensor de movimiento y de puerta.
Colocar el sensor de movimiento en el techo o encima de la puerta. Se puede usar una cajita para ponerlo dentro y disimularlo. En thingiverse hay multiples opciones para realizar la caja en 3D. Cablear los 3 pines (5V, GND y Salida). Aunque alimentamos a 5V, la salida será a 3.3, por lo tanto es válido para el ESP32, que solo puede manejar entradas y salidas de 3.3V.
El sensor de puerta debe colocarse una parte en la propia puerta y la parte que va cableada en el marco de la misma, de forma que queden encarados. Cuando la puerta está cerrada, hay continuidad en el cable, por lo que en la entrada del micro tendremos 3.3V (HIGH). Cuando se abre la puerta, se corta el cable, por lo que en la entrada del micro tendremos 0V (LOW).
La sirena estará alimentada por una pila de 9V, y un relé permitirá el paso o no de este voltaje a la sirena. Cuando el micro envie una señal alta de 3.3V, el relé se cerrará y permitirá la alimentación de 9V. Cuando haya una señal baja, el relé se abre y no deja pasar los 9V.
Step 7: Preparación Servidor PHP/MySQL
Opcionalmente se puede preparar un servidor para que la alarma publique los eventos, y poder usarlos mediante una aplicación web o una app para móvil.
En nuestro caso vamos a configurar el sistema web php y enviar un email a un buzón.
Hay que contratar en algún proveedor de servicios un espacio con MySQL y PHP. Luego, habilitar los usuarios y dejar las páginas que están disponibles en un directorio de la web.
El programa hace una llamada a la página add-item.php, pasándole los parámetros de nombre, estado, motivo del evento, .... En la base de datos se añade automáticamente la hora y fecha del evento.
Finalmente, el disponer de una bbdd en la nube, nos permitirá realizar cualquier app para móvil o para browser. Hay disponible una app android que puede manejar estos datos, se publicará proximamente.