Los sistemas de seguridad para el hogar son una necesidad para los hogares modernos. Es posible diseñar una solución de seguridad doméstica sencilla utilizando Raspberry Pi y aprovechando el poder del Internet de las cosas. El sistema de seguridad para el hogar diseñado en este proyecto es un dispositivo sencillo y fácil de instalar, construido con Raspberry Pi 3, Web Cam y sensor de movimiento PIR. La Raspberry Pi 3 Modelo B viene equipada con Bluetooth (BLE) y Wi-Fi (LAN inalámbrica BCM43438) integrados, por lo que se puede conectar fácilmente a un enrutador Wi-Fi para acceder a un servicio en la nube.
El dispositivo diseñado en este proyecto se puede instalar en la entrada principal de una casa. Detecta el movimiento de cualquier visitante con la ayuda del sensor PIR y comienza a capturar imágenes con la ayuda de una cámara web USB. Las imágenes se almacenan temporalmente en la Raspberry Pi y se envían a Google Cloud, desde donde se envían como alerta por correo electrónico al propietario de la casa. Así, el usuario recibe inmediatamente por correo electrónico las imágenes de cualquier visitante, que podrá consultar en su smartphone. La Raspberry Pi se conecta a Google Cloud a través de la pila TCP-IP. Raspberry Pi 3 es una de las placas de IoT que viene equipada con una pila TCP/IP incorporada, por lo que se puede conectar fácilmente a una red de IoT. El Pi utiliza la biblioteca OpenCV para capturar imágenes de la cámara web y enviarlas a través de la dirección de correo electrónico registrada del usuario.
El sistema de seguridad para el hogar diseñado en este proyecto, aunque simple, es una aplicación poderosa. El usuario podrá vigilar su hogar desde cualquier lugar, en cualquier momento y siempre, simplemente instalando este pequeño dispositivo en la entrada principal. Muchos de estos dispositivos también se pueden instalar para agregar aún más capas de seguridad. La entrada de cualquier intruso se puede detectar y alertar vía correo electrónico en el smartphone, por lo que el usuario es libre de tomar las medidas oportunas, como llamar a la policía, informar a las autoridades, etc.
Figura 1: Prototipo de sistema de seguridad doméstica IoT basado en Raspberry Pi 3
Componentes necesarios –
Figura 2: Lista de componentes necesarios para el sistema de seguridad doméstica IoT basado en Raspberry Pi 3
Diagrama de bloques -

Fig. 3: Diagrama de bloques del sistema de seguridad doméstica IoT basado en Raspberry Pi 3
Conexiones de circuito –
El dispositivo IoT diseñado en este proyecto se basa en Raspberry Pi 3, que es una computadora de placa única con conectividad Bluetooth y LAN inalámbrica. El Pi interactúa con un sensor PIR, una cámara web USB y una fuente de alimentación para formar todo el sistema. El dispositivo se puede instalar en cualquier lugar que sea necesario. El sensor PIR está conectado a los pines GPIO de la Raspberry Pi. Se puede utilizar un monitor LCD para configurar el servidor web Raspberry. Las imágenes capturadas desde la cámara web USB se pueden guardar con información de fecha y hora en una tarjeta SD.
Figura 4: Imagen que muestra las conexiones del circuito del sistema de seguridad para el hogar IoT basado en Raspberry Pi 3
El dispositivo IoT diseñado en este proyecto tiene los siguientes componentes conectados a las conexiones del circuito que se mencionan a continuación:
Raspberry Pi 3: Raspberry Pi 3 es la Raspberry Pi de tercera generación. Es una maravilla en miniatura, que reúne una potencia informática considerable en un espacio no mayor que el de una tarjeta de crédito. El procesador central del sistema Raspberry Pi es un sistema en chip (SoC) Broadcom BCM2837 que alberga un procesador Quad Core ARM Cortex-A53 de 1,2 GHz. La gran mayoría de los componentes del sistema, incluidas sus unidades de procesamiento central y de gráficos, junto con el. El hardware de audio y comunicaciones está integrado en este único componente, junto con el chip de memoria LPDDR2 de 1 GB en el centro de la placa. No es sólo este diseño de SoC lo que hace que el BCM2837 sea diferente del procesador que se encuentra en una computadora de escritorio o portátil típica; sin embargo, también utiliza una arquitectura de conjunto de instrucciones (ISA) diferente conocida como ARM.
El Pi viene equipado con una toma Ethernet 10/100 BaseT integrada, un puerto compuesto HDMI y RCA para vídeo, un conector de salida de audio de 3,5 mm, una interfaz serie de cámara MIPI de 15 pines (CSI-2), una interfaz serie de pantalla, Bluetooth 4.1, 802.11 b. /g/n LAN inalámbrica, tarjeta Micro SDIO a Micro SD, 4 conectores USB 2.0, conector de 40 pines que contiene 27 pines GPIO y toma Micro USB para fuente de alimentación.
La Raspberry Pi es una computadora de placa única diseñada para ejecutar un sistema operativo llamado GNU/Linux Raspbian. En lo sucesivo denominado simplemente Linux. A diferencia de Windows u OS X, Linux es de código abierto, por lo que puedes descargar el código fuente de todo el sistema operativo y realizar los cambios que desees. Raspberry Pi 3 también puede ejecutar Windows 10 IoT y muchos otros sistemas operativos integrados, muchos de los cuales se derivan de Linux. El sistema operativo debe cargarse en una tarjeta MicroSD y arrancar desde ella. Con potentes capacidades informáticas, una gran cantidad de interfaces multimedia y pines GPIO, Raspberry Pi 3 es una opción adecuada para ejecutar un proyecto integrado o de IoT basado en software complejo que requiere suficiente potencia informática, así como conectividad de sensores a gran escala. Con Bluetooth y Wi-Fi integrados, este Pi de tercera generación se puede implementar fácilmente en una red IoT. Las principales especificaciones de Raspberry Pi 3 se resumen en la siguiente tabla:

Figura 5: Tabla que enumera las especificaciones técnicas de Raspberry Pi 3
El encabezado de 40 pines en Raspberry Pi 3 tiene la siguiente configuración de pines:

Fig. 6: Tabla que enumera la configuración de 3 pines de Raspberry Pi

Fig. 7: Tabla que enumera la configuración de 3 pines de Raspberry Pi
En este proyecto, la cámara web USB está conectada a uno de los cuatro conectores USB 2.0 y el sensor PIR está conectado al GPIO04 (pin 7) en el encabezado Pi 3.
Sensor PIR: el sensor PIR (infrarrojo pasivo) es un dispositivo piroeléctrico que detecta movimiento midiendo cambios en los niveles de infrarrojos emitidos por los objetos circundantes. Al incorporar una lente Fresnel y un circuito de detección de movimiento, el módulo ofrece alta sensibilidad y bajo nivel de ruido. El módulo proporciona un circuito optimizado que puede detectar movimiento a una distancia de hasta 6 metros. El sensor tiene dos ranuras, cada una de ellas hecha de un material especial sensible a los infrarrojos. En ausencia de alguien, ambas ranuras reciben la misma cantidad de radiación infrarroja. Cuando una persona pasa por el sensor, es interceptada por la mitad de las ranuras, provocando una diferencia de potencial positiva entre las ranuras. Cuando la persona sale del sensor, es interceptada por otra mitad de las rendijas, lo que provoca una diferencia de potencial negativa entre las rendijas. Este diferencial positivo y negativo genera un pulso que detecta el movimiento.
El módulo sensor tiene un regulador de voltaje integrado de 3,3 V, diodo de protección, ajuste de sensibilidad y ajuste de tiempo de retardo. Hay tres terminales en el módulo: tierra, VCC y salida digital. Se puede suministrar un voltaje de 5 V a 12 V en el pin VCC, aunque la fuente de alimentación recomendada es 5 V. Cuando el módulo detecta movimiento, la salida en el pin de salida digital pasa a ALTA. Esta es una señal alta activa estándar de 5 V. El pin de salida digital del sensor está conectado a los pines GPIO de la Raspberry Pi directamente para monitorear la señal. Está conectado al cuarto pin GPIO de la Raspberry pi 3. El pin VCC del módulo está conectado a uno de los pines de alimentación de 5 V CC del Pi 3 y el pin de tierra del módulo está conectado a uno de los pines de tierra de el PI.
Cámara web USB: un módulo de cámara web interactúa con Raspberry Pi a través de uno de los puertos USB de Raspberry pi 3. La biblioteca OpenCV se utiliza para proporcionar la funcionalidad para trabajar con esta cámara web estándar.
Fuente de alimentación: la fuente de alimentación está conectada a la Raspberry Pi. El Pi debe funcionar con un adaptador de 5 V con salida de corriente de 2 A. El adaptador se puede conectar a la toma Micro USB.
Cómo funciona el circuito –
El dispositivo IoT construido sobre Raspberry Pi 3 en este proyecto tiene un funcionamiento sencillo y directo. El dispositivo detecta movimiento a través del sensor PIR y a medida que detecta movimiento, comienza a capturar imágenes. Las imágenes se almacenan en la tarjeta MicroSD y se envían al correo electrónico registrado del usuario. Todo esto se gestiona mediante un script en Python que se ejecuta en el sistema operativo Raspbian. Antes de ejecutar el script de Python, es esencial instalar el sistema operativo en Pi 3 e instalar las bibliotecas necesarias, es decir, OpenCV en el sistema operativo. Al instalar el sistema operativo, instalar las bibliotecas y el script de Python, la Raspberry Pi debe estar conectada a un monitor mediante un cable HDMI.
Para instalar el sistema operativo Raspbian en una tarjeta MicroSD, primero descargue la imagen más reciente del sistema operativo Raspbian desde el sitio web de Raspberry Pi en el siguiente enlace:
sistema operativo raspbian
Copie la última imagen del sistema operativo Raspbian a la tarjeta MicroSD. Si la tarjeta MicroSD utilizada es de 32 GB o menos, se debe formatear en FAT32 (sistema de archivos) antes de copiar la imagen, o si la tarjeta MicroSD tiene más de 32 GB, se debe formatear en exFAT antes de copiar la imagen. Extrae el Zip del sistema operativo y cópialo en la tarjeta MicroSD. La imagen se puede escribir en la tarjeta conectándola a una computadora portátil o PC mediante un lector de tarjetas MicroSD. Después de copiar la imagen extraída, inserte la tarjeta en la ranura MicroSD como se muestra a continuación:
Figura 8: Imagen típica de la ranura para tarjeta MicroSD de Raspberry Pi 3
Conecte la Raspberry Pi a un monitor mediante un cable HDMI, un teclado y un mouse. Encienda la tarjeta conectándola a un adaptador de corriente. El LED rojo en la placa comenzará a parpadear y el sistema operativo comenzará a iniciarse desde la tarjeta MicroSD. El proceso de inicio se mostrará en el monitor y una vez que se complete el inicio, el LED verde se iluminará en la Raspberry Pi. Después de instalar con éxito el sistema operativo Raspbian en Raspberry Pi, se recomienda realizar una actualización de software. Esto se puede hacer ejecutando los siguientes comandos de Linux en la Terminal de Linux:
$ sudo apt-obtener actualización
$ sudo apt-obtener actualización
Ahora es el momento de instalar la biblioteca OpenCV. Hay varios métodos disponibles para instalar OpenCV. El método más sencillo para instalar OpenCV en Linux se proporciona en el sitio web de OpenCV. Echa un vistazo al siguiente enlace -
Instalación de OpenCV en Linux
Abra la terminal de Linux en Raspbian y ejecute los siguientes comandos:
1. Primero instale el compilador ejecutando el siguiente comando:
$ sudo apt-get install build esencial
2. Instale los paquetes necesarios ejecutando el siguiente comando:
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
3. Luego instale los paquetes opcionales ejecutando el siguiente comando:
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
4. Instale OpenCV en cualquier directorio ejecutando los siguientes comandos:
$cd
$ git clon https://:github.com/opencv/opencv.git
5. Luego cree un directorio temporal ( ) donde se deben guardar los archivos make, archivos de proyecto, archivos de objetos y binarios de salida generados. Esto se puede hacer ejecutando los siguientes comandos:
$cdopencv
compilación $ mkdir
compilación $ cd
$ cmake –D CMAKE_BUILD_TYPE=RELEASE –D CMAKE_INSTALL_PREFIX=/usr/local ..
6. Vaya a ( ) creado en el paso anterior e instale OpenCV ejecutando los siguientes comandos:
$ hacer
$ sudo hacer instalar
Después de instalar Raspbian y OpenCV, es hora de escribir y ejecutar el script Python en Raspbian. Se puede escribir un script de Python en Raspbian usando un editor de texto como Leafpad o GNU Nano. El script de Python también se puede escribir utilizando el IDE de Python estándar, como Python 2 IDLE o Python 3 IDLE. Abra Python 3 IDLE navegando por Menú -> Programación -> Python 3 IDLE. Se abrirá una ventana llamada Python 3.4.2 Shell. Escriba el script de Python y guárdelo en un directorio.
El script de Python escrito para este proyecto debe ejecutarse al inicio cuando el Pi 3 está encendido. El script ejecuta un bucle infinito para que nunca termine. Existen algunos métodos mediante los cuales se puede configurar Raspberry Pi para ejecutar un script de Python al inicio. Se puede utilizar cualquiera de los siguientes métodos:
1) Edición de rc.local –
Se pueden agregar comandos al archivo /etc/rc.local para ejecutar un programa o comando cuando se inicia Raspberry Pi. Esto es especialmente útil si el Pi necesita conectarse a una fuente de alimentación sin cabeza y ejecutar un programa sin configuración o inicialización manual. El archivo debe editarse con root ejecutando los siguientes comandos en la Terminal de Linux:
sudo nano /etc/rc.local
Ahora agregue comandos para ejecutar el script de Python usando la ruta completa del archivo y agregue un signo comercial al final del comando para que el script se ejecute en un proceso separado y la inicialización pueda continuar. Se debe agregar el siguiente comando donde se guarda el script de Python como securitysystem.py –
sudo python /home/pi/securitysystem.py &
salida 0
El comando debe agregarse justo antes de la línea de salida 0 en el archivo rc.local.
2) Edición de .bashrc –
El .bashrc es un archivo oculto en la carpeta de inicio que contiene opciones de configuración del usuario. Abra el archivo .bshrc ejecutando los siguientes comandos en la terminal de Linux:
sudo nano /home/pi/.bashrc
Agregue las siguientes líneas después de la última línea del archivo:
echo ejecutándose al inicio
sudo python /home/pi/securitysystem.py
3) Agregar script al directorio init.d –
El directorio init.d contiene los scripts que se inician durante el proceso de arranque (además, todos los programas aquí se ejecutan cuando el Pi se apaga o reinicia). Agregue el script que se ejecutará al inicio al directorio init.d usando los siguientes comandos:
sudo cp /home/pi/securitysystem.py /etc/init.d/
Vaya al directorio de inicio y abra el script de Python ejecutando los siguientes comandos:
CD /etc/init.d
sudo nano sistema de seguridad.py
Agregue las siguientes líneas al script de Python para convertirlo en una base estándar de Linux (LSB):
# /etc/init.d/sample.py
### INFORMACIÓN DE INICIO
# Proporcionar: muestra.py
# Inicio obligatorio: $remote_fs $syslog
# Parada obligatoria: $remote_fs $syslog
# Inicio predeterminado: 2 3 4 5
# Parada predeterminada: 0 1 6
# Breve descripción: iniciar el demonio en el momento del arranque
# Descripción: Habilita el servicio proporcionado por el demonio.
### INFORMACIÓN FINAL INICIO
Haga ejecutable el script de Python en el directorio de inicio cambiando su permiso ejecutando el siguiente comando:
sudo chmod +x sistema de seguridad.py
Luego ejecute el siguiente comando:
valores predeterminados sudo update-rc.d securitysystem.py
Luego reinicie el Pi ejecutando el siguiente comando:
reiniciar sudo
Cualquiera de los métodos anteriores se puede utilizar para ejecutar el script de Python al inicio. Ahora el Pi 3 se puede desconectar del monitor, teclado y mouse. La cámara web y el sensor PIR deben estar conectados para completar el circuito del dispositivo. Ahora, al iniciar, el script de Python se ejecuta junto con el proceso de inicialización.
El sistema de correo electrónico se implementa en la placa de desarrollo Raspberry pi en un entorno Linux, que admite SMTP (Protocolo simple de transferencia de correo), TCP/IP y HTTP. El sistema de archivos Flash del servidor web admite archivos generados dinámicamente que pueden incluir datos de salida de recursos de hardware. Este tipo de archivo se denomina página de servidor integrada (ESP).
Cuando el sensor PIR detecta movimiento en la entrada, su salida digital se configura en ALTA. En el script de Python, cuando el GPIO 4 sube, la cámara web conectada a la Raspberry Pi toma la instantánea de la entrada y envía las imágenes adjuntas al correo electrónico.
Guía de programación –
El script de Python escrito y ejecutado al inicio gestiona todas las funciones del proyecto. Al comienzo del código, las declaraciones de importación se utilizan para importar bibliotecas estándar como RPi.GPIO, time, cv2 y numpy. Estas bibliotecas se utilizan para acceder a los pines GPIO, extraer la hora del sistema y utilizar el módulo OpenCV para capturar las imágenes. Se declaran variables para el número PIN GPIO del sensor PIR y para proporcionar el ID de correo electrónico que se utilizará para enviar y recibir el correo electrónico de alerta. GPIO.setmode (GPIO.BCM) se utiliza para configurar la tarjeta en modo Broadcom.

Fig. 9: Captura de pantalla del código de inicio en script Python para el sistema de seguridad para el hogar Smart IoT basado en Raspberry Pi
Mientras se ejecuta el script, entra en un bucle infinito donde el sensor PIR monitorea continuamente y una vez que se detecta el cambio en la entrada, la cámara se enciende y captura la foto. La imagen capturada se guarda con fecha y hora como picname usando el módulo datetime y la imagen se envía por correo con asunto y cuerpo.

Fig. 10: Captura de pantalla de la función Loop en script Python para el sistema de seguridad doméstica Smart IoT basado en Raspberry Pi
Consulte el script de Python completo para comprenderlo mejor.
Código fuente del proyecto
###
//Programa para importar RPi.GPIO como GPIO tiempo de importación importar numpy como np importar cv2 desde fecha y hora importar fecha y hora importarlos importar smtplib desde correo electrónico.MIMEMultipart importar MIMEMultipart desde correo electrónico.MIMEBase importar MIMEBase desde email.MIMEText importar MIMEText desde codificadores de importación de correo electrónico gmail_user = "DESDE CORREO (correo electrónico protegido)" #Dirección de correo electrónico del remitente gmail_pwd = "CONTRASEÑA DE CORREO" #Enviar contraseña de correo electrónico to = "TO MAIL (email protected)" #Dirección de correo electrónico del destinatario asunto = "Alerta de seguridad" text = "Hay alguna actividad en su casa. Vea la imagen adjunta." sensores = 4 GPIO.setmode(GPIO.BCM) GPIO.setup(sensor, GPIO.IN, GPIO.PUD_DOWN) estado_anterior = Falso estado_actual = Falso mientras es cierto: estado_anterior = estado_actual estado_actual = GPIO.entrada (sensor) si estado_actual! = estado_anterior: new_state = "ALTO" si estado_actual en caso contrario "BAJO" print("El pin GPIO %s es %s" % (sensor, nuevo_estado)) si estado_actual: tapa = cv2.VideoCapture(0) ret, marco = cap.read tapa = cv2.VideoCapture(0) imprimir "Guardando foto" picname = datetime.now .strftime("%y-%m-%d-%H-%M") picname = picname+'.jpg' cv2.imwrite(nombre de imagen, marco) imprimir "Enviando correo electrónico" adjuntar = nombre de imagen mensaje = MIMEMultiparte msg('De') = usuario_gmail mensaje('Para') = para msg('Asunto') = asunto msg.attach(TextoMIME(texto)) parte = MIMEBase('aplicación', 'octeto-flujo') part.set_payload(open(adjuntar, 'rb').read ) Codificadores.encode_base64 (parte) part.add_header('Disposición-de contenido', 'adjunto; nombre de archivo="%s"' % os.path.basename(adjuntar)) msg.attach(parte) Servidor de correo = smtplib.SMTP("smtp.gmail.com", 587) servidordecorreo.ehlo servidordecorreo.starttls servidordecorreo.ehlo servidordecorreo.login(gmail_user, gmail_pwd) mailServer.sendmail(gmail_user, a, msg.as_string) # Debería ser mailServer.quit, pero falla... servidordecorreo.cerrar imprimir "Enviar correo electrónico" os.remove(nombre de imagen)###
Diagramas de circuito
| Diagrama-de-circuito-sistema-de-seguridad-doméstica-IoT-basado-en-Raspberry-Pi-3 | ![]() |
