En este post veremos un sistema de control de acceso básico, con notificaciones de intruso en tiempo real, empleando Python, Arduino, Esp32cam , Telegram y otros componentes electrónicos.
En siguiente imagen puedes ver el esquema general de conexión y funcionamiento del sistema. En el cual el cuenta con un sensor de proximidad que se encarga de la detección de una persona y enviar una alerta hacia un chat Bot creado en telegram y Python . Además, se integra un Arduino que simboliza o hace de la parte física del sistema en el cual están conectados los actuadores y alarmas.
En este post no se indicará el procedimiento completo del sistema, simplemente se indicará los códigos empleados en el sistema y como utilizarlos. No te preocupes porque te estaremos dejando toda la información necesaria y los enlaces de donde se obtuvo la información.
Así que sin mas empezamos con el sistema , para lo cual seguiremos los siguientes pasos:
1. Creación del bot de telegram
En esta parte no se indicara como crear el chat Bot desde el inicio , ya que solo necesitareremos USERID y KEY que nos proporcionara telegram para nuestro Bot.
Aquí te dejo una guía completa de como puedes crear desde cero tu chatbot y puedas obtener tu id y key para posteriormente utilizarlo en el código de Python. https://randomnerdtutorials.com/telegram-esp32-cam-photo-arduino/
2. Configurar la esp32cam
En este apartado no encargaremos de configurar nuestra cámara esp32cam, como este es un dispositivo wifi se le deberá asignar una dirección ip , para posteriormente visualizarla en el navegador o en Python.
Aquí te dejo el código , copia y pega en la ide de Arduino . Deberás colocar el nombre de tu wifi y contraseña para poder obtener una dirección IP , cargar y sube a la esp32cam de la siguiente manera.
Desde el punto de vista físico, hay que alimentar el dispositivo usando los pines 5v y GND del programador, interconectar los puertos UOR-TX y OUT-RX, y para iniciar el dispositivo en formato de grabación, puentear el GPIO0 y el GND de el plato mismo. Una vez conectado de esta manera, puede conectar el programador a la PC e iniciar la carga del firmware.
Asegúrate de tener configurado tu esp32cam a la ide de Arduino , aquí te dejo una guía de como conectarlo : https://programarfacil.com/esp32/esp32-cam/
Una vez cargado el código en la esp32cam , deberás ver la ip asignada a la cámara y escribirla en el navegador como se ve a continuación :
Con nuestra cámara lista, ahora configuraremos el Arduino uno.
3. Configurar el Arduino uno
El Arduino uno servirá como dispositivo actuador el cual se encargará de recibir y enviar señales al servidor de manera serial. Esta estera encargada de captar la señal analógica del sensor, y enviarla serial mente al servidor de Python, también será el encargado de hacer sonar la alarma y prender las luces (led) simbolizado que se abre o se cierra el sistema.
Aquí te dejo el código empleado para el Arduino uno, en esta parte de emplean otros módulos para generar el sonido de la alarma, pero estos módulos no los describo en este post ya que solo se necesitan para cargar el sistema . Los módulos los podrás encontrar en el repositorio github completo si lo necesitas.
4. Creando el bot
Para la creación del Bot emplearemos Python, el cual funcionara como un servidor que estará encargado de escuchar las señales del sensor, Arduino uno, y conectar como cámara esp32cam. Este servidor estará conectado al mismo tiempo con la cámara, sensor, Arduino, y telegram al mismo tiempo.
A continuación te dejo el código en Python del servidor de bot :
Se emplea el módulo de telepot para conectar Python con telegram , para mandar mensajes y recibir notificaciones desde el Arduino . Además se hace el uso de otras modulos para el chatbot .
En la linea 167 deberas colocar tu token obtenido en el primer paso y ademas deberas colocar la ip de la esp32cam .
Funcionamiento
Originalmente el chatbot de telegram funciona con comandos de texto , pero en este cado hemos decidido ocupar emojis para mandar mensajes y notificaciones.
Cuando el sistema inicia o detectar el Arduino un señal manda una señal al servidor y este manda un mensaje a telegram con un menú de opción que lo que se desea hacer en ese momento.
Aquí se puede ver todas las opciones que el usuario puede realizar, el tiene que mandar el emoji que ve para cada opción como el siguiente ejemplo. Y así el usuario puede hacer cualquier opción que el desee:
Aquí te dejo un video del funcionamiento completo del sistema, funcionado en tiempo real con todos los componentes conectados.
Este es un prototipo pequeño de control de acceso, en el cual se emplea pequeños elementos de bajo costos.
En el código original encontrara la posibilidad de guardar las imágenes capturadas, pero en este post no se habla porque se empleo un maquino virtual en la nube instalando un servidor LAMP. Te recomendamos usar una maquina virtual para que puedes guardar las imágenes en una base de datos, solo deberás ingresar la ip de la máquina virtual, todos los documentos que deberás cargar en la maquina y códigos del Bot lo encontraras en mi GitHub.
Comments