0% encontró este documento útil (0 votos)
43 vistas124 páginas

CCTV con Raspberry Pi y Detección de Movimiento

Este proyecto consiste en la implementación de un sistema de circuito cerrado de televisión con detección de movimiento para el laboratorio de computación de una unidad educativa. Se utilizó hardware Raspberry Pi para desarrollar un algoritmo basado en resta de fondo que detecta movimiento y envía alertas por correo electrónico. También incluye una interfaz web para configurar los horarios de alertas y una aplicación Android para supervisar el sistema y visualizar fotografías y videos capturados.

Cargado por

Leonardo Diaz
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
43 vistas124 páginas

CCTV con Raspberry Pi y Detección de Movimiento

Este proyecto consiste en la implementación de un sistema de circuito cerrado de televisión con detección de movimiento para el laboratorio de computación de una unidad educativa. Se utilizó hardware Raspberry Pi para desarrollar un algoritmo basado en resta de fondo que detecta movimiento y envía alertas por correo electrónico. También incluye una interfaz web para configurar los horarios de alertas y una aplicación Android para supervisar el sistema y visualizar fotografías y videos capturados.

Cargado por

Leonardo Diaz
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD POLITÉCNICA SALESIANA

SEDE GUAYAQUIL

CARRERA DE: INGENIERÍA ELECTRÓNICA

Trabajo de titulación previo a la obtención del título de:

‘‘INGENIERO ELECTRÓNICO’’

TEMA:

‘‘DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE CIRCUITO CERRADO DE


TELEVISIÓN CON DETECCIÓN DE MOVIMIENTO, SUPERVISIÓN REMOTA CON
APLICACIÓN ANDROID ALERTAS VÍA EMAIL Y SMS DE BAJO COSTO APLICANDO EL
SISTEMA RASPBERRY PI PARA EL LABORATORIO DE COMPUTACIÓN DE LA UNIDAD
EDUCATIVA RAMÓN BEDOYA NAVIA.’’

AUTOR:

Hellen Patricia Piña Narváez

TUTOR:

Msc. Teddy Jhennse Negrete Peña

GUAYAQUIL, ECUADOR 2021


Certificado de Responsabilidad y Auditoria

Los conceptos desarrollados en el presente proyecto de titulación, el desarrollo del tema,


el análisis y respectivas conclusiones de este, corresponden exclusivamente a Hellen Patricia
Piña Narváez con cédula de identificación 0802293829 y el patrimonio intelectual del mismo a la
Universidad Politécnica Salesiana.

Guayaquil, mayo del 2021.

_________________________

(f) Hellen Patricia Piña Narváez

C.I: 0802293829

ii
Documento Derechos de Autor

Yo Hellen Patricia Piña Narváez con cédula de identificación 08022938289, manifiesto


mi voluntad al ceder a la Universidad Politécnica Salesiana la titularidad sobre los derechos
del actual proyecto de titulación en virtud de que soy la autora del tema: ‘‘DISEÑO E
IMPLEMENTACIÓN DE UN SISTEMA DE CIRCUITO CERRADO DE TELEVISIÓN CON
DETECCIÓN DE MOVIMIENTO, SUPERVISIÓN REMOTA CON APLICACIÓN ANDROID
ALERTAS VÍA EMAIL Y SMS DE BAJO COSTO APLICANDO EL SISTEMA RASPBERRY PI
PARA EL LABORATORIO DE COMPUTACIÓN DE LA UNIDAD EDUCATIVA RAMÓN
BEDOYA NAVIA’’, el cual ha sido realizado para la obtención del título de: INGENIERO
ELECTRÓNICO, así quedando la universidad facultada para ejecutar y usar los derechos
cedidos anteriormente.

En aplicación a lo determinado en la Ley de Propiedad Intelectual del Ecuador, en mi


condición de autor me reservo el derecho moral a la obra anteriormente señalada.

En concordancia, suscribo este documento en el momento que haga entrega del trabajo
final en formato impreso y digital a la biblioteca de la Universidad Politécnica Salesiana.

Guayaquil, mayo del 2021

_______________________

(f) Hellen Patricia Piña Narváez

C.I: 0802293829

iii
Certificado de Dirección del Trabajo de Titulación

Yo, Ing. Teddy Jhennse Negrete Peña, que bajo mi dirección y asesoría fue desarrollado
el proyecto de titulación: ‘‘Diseño e implementación de un sistema de circuito cerrado de
televisión con detección de movimiento, supervisión remota con aplicación android
alertas vía email y sms de bajo costo aplicando el sistema Raspberry Pi para el laboratorio
de computación de la Unidad Educativa Ramón Bedoya Navia’’, para la obtención del título
de Ingeniero Electrónico.

Por medio de la presente certifico que el documento cumple con los requisitos
establecidos en el instructivo para la estructura y desarrollo de Trabajos de Titulación para
pregrado de la Universidad Politécnica Salesiana.

En virtud de lo anterior, autorizo su presentación y aceptación como una obra auténtica y


de alto valor académico.

Guayaquil, mayo 2021.

__________________________

(f) Teddy Jhennse Negrete Peña

C.I: 0912419611

iv
Dedicatoria

Dedico este proyecto de titulación primeramente agradeciéndole a Dios todopoderoso por


darme salud, fuerzas a lo largo de estos años de estudio y a mis abuelos Lcda. Matilde Quiñónez
Mina y Ab. Héctor Narváez Díaz, quienes siempre han estado apoyándome incondicionalmente
en cada momento de mi vida, por sus buenos valores y enseñanzas en todos estos años que
han estado conmigo, más que unos abuelos unos padres.

Hellen Patricia Piña Narváez

v
Agradecimiento

Quiero agradecer a la Unidad Educativa Ramón Bedoya Navia por haber permito el
desarrollo de este proyecto de titulación en sus instalaciones, y así contribuir al desarrollo de la
misma como ex alumna de la antigua escuela Patria Nueva la cual funcionaba allí y servir a
beneficio del plantel.

Hellen Patricia Piña Narváez

vi
Resumen

AÑO ALUMNO DIRECTOR DEL TEMA DE PROYECTO


PROYECTO
2021 PIÑA NARVÁEZ ING. TEDDY JHENNSE “DISEÑO E IMPLEMENTACIÓN DE
HELLEN NEGRETE PEÑA UN

PATRICIA SISTEMA DE CIRCUITO CERRADO


DE TELEVISIÓN CON DETECCIÓN
DE
MOVIMIENTO, SUPERVISIÓN
REMOTA
CON APLICACIÓN ANDROID
ALERTAS VÍA EMAIL Y SMS DE
BAJO COSTO
APLICANDO EL SISTEMA
RASPBERRY
PI PARA EL LABORATORIO DE
COMPUTACIÓN DE LA UNIDAD
EDUCATIVA RAMÓN BEDOYA
NAVIA”.

El presente proyecto consiste en la implementación de un sistema cerrado de televisión


que permita detectar movimiento a través de cámaras de video y realicé capturas y tramas de
video durante los eventos de movimiento detectados.

Para el desarrollo se ha usado computadores de hardware libre Raspberry Pi por su gran


capacidad de cómputo y bajo coste respecto a otros módulos de desarrollo. Además, por su
versatilidad en cuanto a la programación en lenguajes de bajo nivel.

Para el desarrollo del algoritmo de detección se implementó el modelo basado en resta


de fondo que consiste en realizar la diferencia de una fotografía base y otra de análisis para
conocer si hay variación en el sitio, dando lugar a una alerta de movimiento. Las alertas de
movimiento se realizan a través de correo electrónico, y para evitar el disparo y continuo envió
de alertas se ha añadido una interfaz web en la cual se puede configurar los horarios en los
cuales la alerta es enviada. Las fotografías y tramas de video capturadas son almacenadas en
un servidor central para visualización posterior del usuario a través de una aplicación Android
para supervisión del sistema.
vii
Abstract

DATE STUDENT DIRECTOR OF THESIS THESIS TOPIC


2021 PIÑA NARVÁEZ MSC. TEDDY "DESIGN AND IMPLEMENTATION
HELLEN JHENNSE NEGRETE OF A CLOSED-CIRCUIT
PATRICIA PEÑA TELEVISION SYSTEM WITH
MOTION DETECTION, REMOTE
SUPERVISION WITH ANDROID
APPLICATION, LOW COST ALERTS
VIA EMAIL AND SMS, APPLYING
THE RASPBERRY PI SYSTEM
FOR THE COMPUTER
LABORATORY OF THE
EDUCATIONAL UNIT RAMON
BEDOYA NAVIA”.

This project consists of the implementation of a closed television system that allows
detecting movement through video cameras and captures and video frames during detected
movement events.

Raspberry Pi free hardware computers have been used for development due to their high
computing capacity and low cost compared to other development modules. In addition, for its
versatility in terms of programming in low-level languages.

For the development of the detection algorithm, the model based on background
subtraction was implemented, which consists of making the difference between a base
photograph and an analysis photograph to know if there is variation in the site, giving rise to a
movement alert. The movement alerts are made through email and to avoid the triggering and
continuous sending of alerts, a web interface has been added in which you can configure the
times in which the alert is sent. The photographs and video frames captured are stored in a central
server for later viewing by the user through an Android application for system supervision.

viii
ÍNDICE GENERAL

CERTIFICADO DE RESPONSABILIDAD Y AUDITORIA ................................................................................. II

DOCUMENTO DERECHOS DE AUTOR ..................................................................................................... III

CERTIFICADO DE DIRECCIÓN DEL TRABAJO DE TITULACIÓN .................................................................. IV

DEDICATORIA ........................................................................................................................................ V

AGRADECIMIENTO ............................................................................................................................... VI

RESUMEN ........................................................................................................................................... VII

ABSTRACT .......................................................................................................................................... VIII

ÍNDICE GENERAL .................................................................................................................................. IX

ÍNDICE DE FIGURAS ............................................................................................................................ XIII

1 INTRODUCCIÓN................................................................................................................................... 2

1.1 DESCRIPCIÓN DEL PROBLEMA ............................................................................................................... 4

1.2 ANTECEDENTES ................................................................................................................................. 4

1.3 IMPORTANCIA .................................................................................................................................... 4

1.4 ALCANCE .......................................................................................................................................... 5

1.5 DELIMITACIÓN ...................................................................................................................................6

1.5.1 Espacial. ........................................................................................................................................ 6

1.5.2 Temporal .................................................................................................................................... 7

1.5.3 Institucional ................................................................................................................................ 7

1.6 JUSTIFICACIÓN ..................................................................................................................................... 7

1.7 OBJETIVOS .......................................................................................................................................... 8

1.7.1 Objetivo general ......................................................................................................................... 8

1.7.2 Objetivos específicos .................................................................................................................. 8

2 FUNDAMENTACIÓN TEÓRICA .............................................................................................................. 9

ix
2.1 CIRCUITO CERRADO DE TELEVISIÓN.......................................................................................................... 9

2.1.1 Definición. .................................................................................................................................. 9

2.1.2 Circuito cerrado de Televisión Analógico.................................................................................. 10

2.1.3 Componentes de un CCTV clásico. ............................................................................................ 10

2.1.4 Sistema de video IP................................................................................................................... 11

2.2 RASPBERRY PI ................................................................................................................................... 13

2.2.1 Introducción a Raspberry ......................................................................................................... 13

2.3 RASPBERRY PI 3 B+ ............................................................................................................................ 14

2.3.1 Hardware. ................................................................................................................................ 16

2.3.2 Procesador Broadcom BCM2837B0 ......................................................................................... 16

2.3.3 CPU ........................................................................................................................................... 16

2.3.4 Almacenamiento ...................................................................................................................... 17

2.3.5 GPIO ......................................................................................................................................... 17

2.3.6 Puerto HDMI ............................................................................................................................. 18

2.3.7 Puerto USB ............................................................................................................................... 18

2.3.8 Sofware. ................................................................................................................................... 18

2.4 RASPBIAN ......................................................................................................................................... 19

2.5 CÁMARAS ......................................................................................................................................... 20

2.5.1 Módulo de Cámara Pi V2 .......................................................................................................... 20

2.5.2 Pi NoIR Cámara V2. .................................................................................................................. 20

2.6 PYTHON ........................................................................................................................................... 21

2.7 APLICACIÓN ANDROID......................................................................................................................... 22

2.8 ROUTER ........................................................................................................................................... 23

2.9 WEB SERVER ..................................................................................................................................... 24

2.10 JAVA ................................................................................................................................................ 24

x
3 MARCO METODOLÓGICO .................................................................................................................. 26

3.1 DISEÑO E IMPLEMENTACIÓN DE LA SOLUCIÓN ........................................................................................ 26

3.2 ALGORITMO DE DETENCIÓN DE MOVIMIENTO ....................................................................................... 26

3.3 DIAGRAMA DE FLUJO DE FUNCIONAMIENTO .......................................................................................... 27

3.4 ALERTA DE EMAIL............................................................................................................................. 38

3.5 ALERTA POR SMS ............................................................................................................................ 39

3.6 INTERFAZ WEB DE CONFIGURACIÓN DE ALARMA. ................................................................................... 41

3.7 APLICACIÓN ANDROID PARA MONITOREO REMOTO .................................................................... 42

3.7.1 ESQUEMA DE BLOQUES DE LA APLICACIÓN ............................................................................. 42

3.7.2 CONTROL Y CONSULTA DE USUARIOS ...................................................................................... 43

3.8 EXPOSICIÓN DE INFORMACIÓN DE EVENTOS DETECTADOS ........................................................................... 48

3.9 ARQUITECTURA DE COMUNICACIÓN DEL SISTEMA ...................................................................... 51

3.10 ALMACENAMIENTO EN NUBE PERSONAL ..................................................................................... 52

3.11 ENCAPSULADO DEL SISTEMA DE VIDEO ........................................................................................ 54

3.12 DIAGRAMA ELÉCTRICO .................................................................................................................. 54

3.13 DIAGRAMA ELECTRÓNICO ............................................................................................................. 56

4 IMPLEMENTACIÓN Y ANÁLISIS .......................................................................................................... 57

4.1 INSPECCIÓN ................................................................................................................................. 57

4.2 PROVISIONAMIENTO DE ENERGÍA ELÉCTRICA ............................................................................. 59

4.3 MONTAJE DE CÁMARAS ............................................................................................................... 61

4.4 ANÁLISIS DE RESULTADOS ............................................................................................................. 64

4.4.1 ÁNGULOS DE VISIÓN DE LAS CÁMARAS ................................................................................... 64

4.4.2 DETECCIÓN DE EVENTOS DE MOVIMIENTO ............................................................................. 65

4.4.2 ALMACENAMIENTO DE DATOS ....................................................................................................... 78

4.4.3 APLICACIÓN MÓVIL ........................................................................................................................ 79

xi
4.4.4 ALARMA ......................................................................................................................................... 82

CONCLUSIONES ................................................................................................................................... 86

RECOMENDACIONES ........................................................................................................................... 87

PROYECTOS DE INVESTIGACIÓN VINCULADOS ..................................................................................... 88

REFERENCIAS BIBLIOGRÁFICAS............................................................................................................. 89

5 ANEXOS ........................................................................................................................................... 91

5.1 PRESUPUESTO ............................................................................................................................ 91

5.2 CRONOGRAMA ........................................................................................................................... 92

5.3 CÓDIGOS ..................................................................................................................................... 92

xii
Índice de Figuras

Figura 1 Diagrama de bloques de la solución, sistema de video vigilancia. ................... 4

Figura 2 Ubicación geográfica de la vivienda (Google, 2020). ........................................ 7

Figura 3 Circuito cerrado de televisión (University of Manitoba, 2019)............................ 9

Figura 4 Circuito cerrado de televisión análogo (Mata, 2010). .......................................10

Figura 5 Esquema de un sistema de Vigilancia IP (Mata, 2010). ...................................12

Figura 6 Raspberry Pi 1 Modelo A+ (Raspberry Pi Foundation, 2019) ...........................14

Figura 7 Modelo Raspberry Pi 3 B+ ...............................................................................15

Figura 8 Partes de un Raspberry Pi (Raspberry Pi Foundation, 2019) . .........................16

Figura 9 Pines de Raspberry Pi 3 B+ (The engineering projects, 2019). ........................17

Figura 10 Vista del Puerto HDMI en Raspberry Pi 3 B+ .................................................18

Figura 11 Interfaz gráfica de Raspbian (Raspberry Pi Foundation, 2019). .....................19

Figura 12 Módulo de Cámara Pi V2 ...............................................................................20

Figura 13 Cámara de Raspberry Pi NoIR V2 .................................................................21

Figura 14 Logotipo de Python (Python Sofware Foundation, 2019). ..............................21

Figura 15 Aplicaciones Android (Palmeiro, 2013). .........................................................23

Figura 16 Router (D-Link Corporation, 2019). ................................................................23

Figura 17 Web server (Sayeed, 2018). ..........................................................................24

Figura 18 Flujo de trabajo para el desarrollo .................................................................27

Figura 19 Flujo del proceso de detección de movimiento ..............................................28

Figura 20 Imagen base para la resta de fondo ..............................................................29

Figura 21 Captura con latencia .....................................................................................30

Figura 22 Captura con latencia reducida .......................................................................30


Figura 23 Filtro de cuantización a la imagen de fondo ...................................................31
xiii
Figura 24 Zonas vulnerables con filtro de cuantización .................................................32

Figura 25 Filtro de grises aplicado a la imagen de fondo. ..............................................33

Figura 26 Filtro de grises aplicado a la imagen del evento. ...........................................34

Figura 27 Resultado de la resta con filtro de grises .......................................................37

Figura 28 Imagen de evento con filtro de cuantización ..................................................38

Figura 29 Parámetros de servidor SMTP .......................................................................38

Figura 30 Texto de correo enviado ................................................................................39

Figura 31 Correo recibido en el destinatario ..................................................................39

Figura 32 Módulo SIM900 .............................................................................................40

Figura 33 Diagrama de flujo subproceso de envío de SMS ...........................................40

Figura 34 Diagrama de operación de interfaz. ...............................................................41

Figura 35 Visualización interfaz web de configuración de alarma. .................................42

Figura 36 Estructura del sistema de la aplicación. ........................................................43

Figura 37 Pantalla de inicio ...........................................................................................44

Figura 38 Pantalla de inicio de sesión. ..........................................................................45

Figura 39 Identification de credenciales. ........................................................................46

Figura 40 Lista de usuarios ...........................................................................................47

Figura 41 Creación de un usuario a través de la aplicación. ..........................................48

Figura 42 Proceso de visualización de datos en la app. ...............................................49

Figura 43 Directorio de cámaras....................................................................................50

Figura 44 Directorios de cámaras organizados por fechas. ...........................................51

Figura 45 Arquitectura del sistema CCTV ......................................................................52

Figura 46. Diagrama de flujo Sistema Nube personal ....................................................53


Figura 47. Bosquejo de carcasa para cámaras ..............................................................54

Figura 48 Diagrama eléctrico .........................................................................................55

xiv
Figura 49 Diagrama electrónico .....................................................................................56

Figura 50 Punto de inspección para a) cámara 1, b) cámara 2 y c) cámara 3 ...............58

Figura 51 Medición de intensidad de señal wifi en el sitio de instalación .......................59

Figura 52 a, b) y c) Instalación toma eléctrico en puntos inspeccionados. ....................60

Figura 53 a) Cámara 1, b) cámara 2, c) cámara 3, d) Montaje carcasa de cámaras, e)


Configuración de cámaras. .......................................................................................................63

Figura 54 Cámara 1, a) Punto instalación y b) Ángulo de visión ....................................64

Figura 55 Cámara 2, a) Punto instalación y b) Ángulo de visión ....................................64

Figura 56 Cámara 3, a) Punto instalación y b) Ángulo de visión ....................................65

Figura 57 a, b y c Evento detectado cámara1 ................................................................66

Figura 58 a) Filtro de grises imagen 58a, b) Filtro de grises imagen 58b y c) Filtro de grises
imagen 58c ...............................................................................................................................68

Figura 59 a) Filtro de cuantización en imagen de fondo, b) Filtro de cuantización en imagen de


evento cámara 1 y c) Filtro de cuantización en imagen de siguiente evento cámara 1
.................................................................................................................................................69

Figura 60 Sección de imagen que dispara la detección evento 1 ..................................70

Figura 61 Sección de imagen que dispara la detección evento 2 ..................................70

Figuras 62. Evento de movimiento cámara 2 .................................................................71

Figura 63 Filtro de grises cámara 2 ...............................................................................72

Figura 64 Filtro de cuantización cámara 2 .....................................................................73

Figura 65 Sección de imagen que dispara la detección, cámara 2 ................................74

Figura 66. Evento de movimiento cámara 3 ..................................................................75

Figura 67. Aplicación filtro de grises Cámara 3 ..............................................................76


Figura 68. Aplicación filtro de cuantización cámara 3 ....................................................77

Figura 69. Sección de imagen que dispara evento Cámara 3 ........................................77

Figura 70 Imágenes almacenadas de eventos de movimiento ......................................78

xv
Figura 71. Almacenamiento de tramas de video de eventos de movimiento ..................79

Figura 72. Pantalla Inicio sesión aplicación móvil ..........................................................80

Figura 73 Visualización de videos en aplicación móvil ...................................................81

Figura 74. Visualización interfaz de configuración alarmas ............................................82

Figura 75. Mensajes consola, evento detectado y envío de mail ...................................83

Figura 76. a) Envío de alerta, b) Contenido del mensaje ...............................................84

Figura 77. Alerta por SMS .............................................................................................85

xvi
1 Introducción.

En la actualidad el uso de los sistemas de circuito cerrado de televisión es una de las


herramientas de seguridad más adquiridas a nivel mundial y de vanguardia, su aplicación se la
puede observar a simple vista ya sea en el hogar, sitios públicos, establecimientos educativos
como escuelas, colegios, universidades, hospitales, locales comerciales, bancos, etc. Debido a
que estos brindan un cierto nivel de confianza y sensación de seguridad a las personas que se
encuentran a los alrededores de estos, ayudando así a prevenir algún tipo de delito.

En los últimos años una de las grandes problemáticas en Ecuador es el incremento de la


delincuencia, siendo los sitios ya mencionados los más afectadas, es por esta razón que este
proyecto va dirigido a áreas vulnerables como son los centros educativos fiscales, donde la
unidad Educativa Ramón Bedoya Navia ubicada en la cuidad de Esmeraldas, será beneficiaria y
contara con un sistema de circuito cerrado de televisión en el laboratorio de computación en el
que detectara movimiento, mediante el uso de cámaras conectadas a una tarjeta Raspberry Pi
en el área a monitorear, se enviaran alertas vía sms y email al personal asignado, en el instante
que se detecte un intruso, el personal de la institución podrá visualizar y acceder de manera
remota, en tiempo real usando su celular o computador mediante una aplicación Android a el
sitio protegido, siendo así un proyecto que busca ayudar a la sociedad.

2
El actual proyecto de titulación consta de 4 capítulos:

En el 1 capitulo se detalla el planteamiento del problema, la importancia, los antecedentes, objetivos,


beneficiarios y las delimitaciones que comprende el proyecto.

En el 2 capítulo se presenta el marco teórico en el que se fundamentó el proyecto y los distintos


materiales que se utilizó para la realización.

En el 3 capitulo se muestra el desarrollo técnico, diseño, montaje, programación, implementación


del proyecto.

En el 4 capitulo se expondrá los resultados de las pruebas del proyecto, conclusiones,


recomendaciones del mismo a su finalización.

3
1.1 Descripción del Problema

La vivienda se encuentra ubicada en la ciudad de Guayaquil en la actualidad no cuenta con


un sistema de circuito cerrado de televisión, el cual es indispensable para la seguridad del
inmueble debido a su costo de implementación y mantenimiento.

Esto hace que el predio al no contar con las seguridades adecuadas pueda ser víctima
de delincuentes, ante esta situación de vulnerabilidad resulta imprescindible la implementación
de un sistema de vídeo vigilancia que cubra todas áreas de el mismo.

Figura 1 Diagra ma de bloques de la solución, sistema de video vigilancia.

1.2 Antecedentes

En el año 2016 uno de los departamentos ubicado en el Condominio Salmón fue irrumpido, donde
malhechores sustrajeron dentro del inmueble bienes de valor para los residentes, a esto se suma
la falta de seguridad del sector y el crecimiento delincuencial de Guayaquil, teniendo las cifras
más altas de delitos en el país según un informe de la Policía Nacional del Ecuador en el año
2019, por esta razón la vivienda que se sitúa en la tercer planta del edificio se encuentra
desprotegida ante algún acto delictivo.

1.3 Importancia

El tema seguridad es uno de los más importantes a nivel mundial, el tener instalado un sistema
de circuito cerrado de televisión en una edificación ya sea un hospital, universidad, colegio, casa,

4
centro comercial, áreas públicas proporciona un estado de seguridad a las personas que se
encuentran en su entorno ya sean trabajadores, visitantes, etc.

El uso los sistemas de circuito cerrado de televisión con detección de movimiento y supervisión
remota es una de las tendencias de vanguardia que utilizan hoy en día la mayoría de sitios
mencionados.

Este sistema es un gran impedimento para la delincuencia ya que estos al percatarse de las
cámaras instaladas se retiraran del lugar inmediatamente, una de las grandes ventajas de este
proyecto es el monitoreo remoto que tiene la vivienda, donde está la implementación del
proyecto, dado que los beneficiarios pueden acceder de forma remota desde su celular por
medio de una aplicación Android, desde cualquier ubicación en tiempo real a las imágenes del
sitio y adicional reciben alertas vía sms y email, en el celular que se encuentra configurado con
el sistema, en el momento que se detecte movimiento en el sitio monitoreado.

1.4 Alcance

Se debe mencionar que este proyecto de titulación tendría como beneficiario a la Unidad
Educativa Ramón Bedoya Navia, ubicada en la cuidad de Esmeraldas, por la crisis del COVID19
que ha afectado a nivel mundial a la población y ha cobrado un sin número de vidas humanas,
desde el mes de marzo del 2020 a la fecha presente abril del 2021, el COE nacional de Ecuador
estableció un confinamiento a la ciudadanía siendo este desde marzo 2020 a mayo 2020, con un
sin número de restricciones en cuestión de movilidad entre ciudades, cada cantón maneja su
propio COE cantonal, adicional suspendió las clases de forma presencial en todo el territorio
nacional, viéndose así afectado la implementación de este proyecto, debido a que las escuelas
públicas y colegios se mantienen cerrados en la actualidad abril 2021, por lo expuesto el consejo
de carrera de ingeniería electrónica de esta Universidad aprobó la modificación del sitio de la
implementación en el domicilio del estudiante y el proyecto se lleve a cabo de una manera
satisfactoria, esperando la compresión de los lectores.

Se va a diseñar un sistema de circuito cerrado de televisión el cual detecte movimientos


mediante una cámara conectada a una Raspberry Pi, estos dos componentes formarán un solo
dispositivo, se instalarán tres de estos dispositivos en una vivienda ubicada en la tercera planta
del condominio Salmón.

La detección de movimiento se realizará mediante el análisis de fotos previamente tomadas por


la cámara para identificar la diferencia de posición de algún objeto en particular y poder enviar una

5
alerta, es decir, se tomarán dos fotos consecutivas y se analizará la diferencia entre las mismas,
estas diferencias serán encontradas con un algoritmo de visión artificial lo que permitirá detectar el
movimiento de un objeto.

El sistema de detección de movimiento dispondrá de un horario de funcionamiento el cual será


configurable desde la interfaz web que se desarrollará en la Raspberry Pi, es decir el usuario
podrá configurar a partir de qué horas el sistema comenzará a funcionar, con la finalidad de evitar
que se envíen alertas durante las horas que se encuentren los habitantes del inmueble y crear
falsas alertas.

En el momento que se determine que hubo movimiento de un objeto en las fotos fuera de los
horarios permitidos, es decir, cuando se supone que no debería haber nadie en las instalaciones
se enviarán alertas vía email y SMS a los usuarios previamente definidos.

El beneficiario de este proyecto son los residentes de una vivienda ubicada en la tercera planta
del condominio Salmón en el centro de la ciudad de Guayaquil, donde se implementa tres
cámaras para el circuito cerrado de televisión, el cual cubre todos los ángulos de visión en los
escenarios a monitorear.

1.5 Delimitación

1.5.1 Espacial.

El actual proyecto se realiza en una vivienda en la tercera plata del condominio Salmón,
en La dirección Esmeraldas 400 entre Padre Vicente Solano y Luis Vernaza Lazarte, Barrio
Orellana, sector centro de la ciudad de Guayaquil.

6
Figura 2 Ubicación geográfica de la vivienda (Google, 2020).

1.5.2 Temporal

El presente proyecto se llevará a cabo desde abril 2019 hasta abril del 2021.

1.5.3 Institucional

En el actual proyecto se pondrá en práctica los conocimientos obtenidos a lo largo del


estudio de pregrado en la Universidad Politécnica Salesiana, siendo estas las materias de:
programación en tarjeta Raspberry Pi, redes de computadoras, seminarios académicos,
instalaciones civiles, CDA avanzados.

1.6 Justificación

En vista de los altos índices de delincuencia en la actualidad que se pueden observar en la ciudad
de Guayaquil, resulta imprescindible tomar todas las medidas de seguridad necesarias para
proteger la integridad física de las personas que habitan en el hogar y del mismo modo los activos
que se encuentran en él, sobre todo en zonas que tienen vulnerabilidad.

7
La vivienda en el condominio Salmón no cuenta con los recursos para la implementación
de un sistema de circuito cerrado de video vigilancia, siendo este indispensable para la seguridad
en las instalaciones del hogar.

Los activos en este inmueble tienen un costo elevado, y la seguridad física de quienes lo
habitan es una prioridad que hay que resguardar, debido a que el edificio anteriormente ha sufrido
actos delincuenciales es importante que cuente con un sistema de circuito cerrado de video
vigilancia.

1.7 Objetivos

1.7.1 Objetivo general

Desarrollar un circuito cerrado de televisión con envío de alertas vía email, sms y
supervisión remota a través de una aplicación Android en una vivienda por detección de
movimiento mediante el sistema Raspberry Pi.

1.7.2 Objetivos específicos

• Diseñar una interfaz web en la Raspberry Pi para gestionar horarios de alarmas.


• Diseñar un circuito cerrado de televisión usando Raspberry Pi.
• Reconocer movimiento en imágenes mediante el análisis de fotos previas tomadas por la
cámara de Raspberry Pi.
• Enviar alertas vía email y SMS cuando se detectan movimientos.
• Almacenar historial de fotos de la cámara en la memoria interna para posteriores
auditorías.
• Realizar un respaldo de fotos a la nube de forma automática.
• Desarrollar aplicación Android para supervisar remotamente las cámaras.
• Diseñar el diagrama eléctrico donde se detallan calibre de conductores, tuberías y cajas
de paso.
• Diseñar e implementar el módulo portador de tarjetas.
• Diseñar el diagrama electrónico del sistema en la cual incluyen cableado entre
dispositivos.

8
2 Fundamentación Teórica

2.1 Circuito Cerrado de Televisión

2.1.1 Definición.

Las siglas CCTV traducidas al español quieren decir circuito cerrado de televisión, el cual
está diseñado para supervisar, vigilar distintos tipos de ambientes y actividades, como protección
de personas, activos y sistemas, el cual permite visualizar de forma remota el área vigilada, la
transmisión en vivo se puede ver desde cualquier navegador web, incluso desde el móvil en
tiempo real, se denomina circuito cerrado porque a diferencia de la televisión abierta la señal no
se transmite abiertamente ya que permite un acceso limitado y restringido de las imágenes a
otros usuarios, se ha convertido en un dispositivo indispensable y un multiplicador de la fuerza
de seguridad común en la sociedad ya sea en un supermercado, hospital, hoteles, residencia,
etc.

Para el proyecto de tesis se implementará un circuito cerrado de televisión de bajo costo


que supervisará el laboratorio de computación de la unidad educativa Ramón Bedoya Navia, el
cual detectará movimiento y enviará notificaciones vía email y sms ante cualquier actividad
inusual en los interiores y exteriores del laboratorio de computo, teniendo como finalidad disuadir
robos así el usuario se sentirá con mayor seguridad y confianza al utilizar un sistema eficaz que
le permitirá monitorear los activos de la institución.

Figura 3 Circuito cerrado de televisión (University of Manitoba, 2019).

9
2.1.2 Circuito cerrado de Televisión Analógico.

En un circuito cerrado de televisión analógico las cámaras analógicas graban imágenes


de las zonas a monitorear según la necesidad del cliente, luego envían la señal utilizando un
cable coaxial a un DVR (Grabador de video digital), el DVR cambia el video de señales analógicas
a digitales, comprime el archivo y luego lo almacena en un disco duro, los monitores en el CCTV
deben estar conectados al DVR para ver el video o a su vez el DVR se conecta a un enrutador y
módem para transmitir a través de Internet utilizando una red interna.

Figura 4 Circuito cerrado de televisión análogo (Mata, 2010).

2.1.3 Componentes de un CCTV clásico.

El CCTV utiliza componentes que están conectados directamente para generar,


transmitir, mostrar y almacenar video datos de Un sistema CCTV puede ser tan simple como una
cámara comprada en una tienda minorista de electrónica conectado a un monitor de video. Sin
embargo, sistemas más grandes operados por seguridad profesional el personal se compone de
una serie de componentes:

• Cámara: Las cámaras son el ojo del sistema y es un componente esencial, su única
función es proporcionar una vista del sitio bajo vigilancia mediante el envío de una
señal electrónica a través de un cable de video, la selección efectiva de la cámara
requiere un conocimiento detallado de la cámara, aplicación, arquitectura de soporte y
entorno host.
• Lentes: La lente de una cámara CCTV es el primer elemento en la cadena de imagen,
que consiste en la lente, cámara, sistema de transmisión, software de gestión y análisis

10
de imágenes, y monitor. La lente enfoca la luz o la energía IR en el sensor de
imágenes. La función de una lente es entregar una imagen sin distorsión, precisa,
uniformemente enfocada al sensor de imágenes.
• Viviendas y monturas: Parte del diseño e instalación de un sistema de CCTV incluye
la selección de la cámara viviendas y soportes. La selección de la carcasa del CCTV
y los accesorios de montaje están directamente relacionados con los requisitos
operativos del sistema, que se desarrollan durante las fases de diseño y adquisición
de un proyecto de instalación de CCTV. En cualquier aplicación, la carcasa y los
accesorios de montaje son seleccionado sobre la base de varios criterios: como es el
caso de las condiciones ambientales, que incluyen temperaturas de operación y clima,
de igual forma la humedad y corrosión; no hay que olvidar las consideraciones
arquitectónicas, que son importantes para la estética del hardware y puede afectar el
diseño arquitectónico o cambiar el valor de la propiedad.
• El monitor: Recibe la señal enviada por la cámara y la convierte en una imagen en
una pantalla de televisión. Se debe proporcionar al menos un monitor en cada estación
de visualización en el sistema de CCTV para poder ver la vista proporcionada por la
(s) cámara (s)
• Conmutadores y multiplexores: En los sistemas de CCTV que tienen más cámaras
que monitores y dispositivos de grabación, se utilizan conmutadores y multiplexores
par el enrutamiento de la señal de video. Los conmutadores son más simples en
concepto que los multiplexores. Se pueden configurar de forma manual o automática
para enviar video analógico o digital a un monitor o una grabadora.
• Grabadoras de video: La capacidad de grabación es esencial para la evaluación,
investigación y recolección de evidencia. La grabación de video se ha transformado de
sistemas basados en cinta a sistemas de disco duro digital. Si bien algunos sistemas
aún utilizan cinta, la popularidad del video digital ha impulsado la demanda de
grabadoras con almacenamiento en disco duro. Los sistemas de CCTV analógicos
tradicionales en los que el video se graba en grabadoras de videocasetes (VCR) son
raros en el entorno actual y han sido controlados rápidamente por DVR y NVR en redes
IP.

2.1.4 Sistema de video IP.

Es un sistema de red de video basado en cámaras, el video es transportado sobre una red
IP a través de conmutadores de red y se registra en un servidor de PC con el software de gestión
11
de video instalado, el sistema es completamente digital, pues no se utilizan componentes
analógicos.

Figura 5 Esquema de un sistema de Vigilancia IP (Mata, 2010).

Características:

• Las cámaras IP se pueden mover a cualquier lugar de una red IP (incluso inalámbrica).
• Las cámaras IP pueden funcionar en una red inalámbrica PoE 1 , las cámaras IP
modernas tienen la capacidad de funcionar sin una fuente de alimentación adicional
así mismo pueden trabajar con el protocolo PoE que proporciona energía a través del
cable Ethernet.
• Cifrado y autenticación: las cámaras IP ofrecen transmisión segura de datos a través
de métodos de cifrado y autenticación como WPA, WPA2, TKIP, AES.
• Se pueden configurar cámaras de red y los servidores de video y acceder a ellos de
forma remota, lo que permite a diferentes usuarios autorizados a visualizar video en
vivo y grabado en cualquier momento y desde prácticamente cualquier ubicación en
red del mundo. En un sistema CCTV analógico tradicional, los usuarios necesitarían
encontrarse en un centro de control para ver y gestionar video, y el acceso al video

1 Quiere decir Alimentación a través de Ethernet, es una tecnología que permite que los cables de red

transporten energía eléctrica


12
desde fuera del centro no sería posible sin un equipo como un servidor de video o un
grabador de video digital de red (Mata, 2010).
• Poseen una gestión de eventos y video inteligente: Al usar tecnología IP posibilita la
utilización de software inteligente que puede facilitar el uso de incluyen funciones
integradas como la detección de movimiento por video, alarma de detección de audio,
alarma anti manipulación activa, conexiones de entradas y salidas y funcionalidades
de gestión de alarmas y eventos, estas funciones permiten que las cámaras de red y
los servidores de video analicen de mantera constante las entradas para detectar un
evento y responder automáticamente a este con acciones como la grabación de video
y él envió de notificaciones de alarma (Mata, 2010).
• Puede utilizar el cableado existente: debido a que las cámaras basadas en IP actúan
como su propio dispositivo de red, a menudo puede aprovechar el cableado de red
existente dentro de su hogar. Esto puede facilitar la tarea de instalación.

2.2 Raspberry Pi

2.2.1 Introducción a Raspberry

Raspberry Pi es un dispositivo similar a un microcomputador cuya adquisición


notablemente económica con respecto a los ordenadores comunes, este dispositivo tiene
embebido una placa con procesador ARM patentado por la fundación británica con el mismo
nombre Raspberry Pi. Estas tarjetas comenzaron su desarrollo en el 2006 siendo agosto de 2011
cuando se hizo posible en adquirir, aunque era de mayor tamaño del que actualmente podemos
adquirir, ya que empleaban dicho tamaño para poder realizar la depuración de esta.

El precio inicial en 2012 de su lanzamiento fue de 25 USD, “Raspberry Pi”, en la


actualidad su dimensión es parecida al de una tarjeta de crédito, dichas tarjetas se desarrollaron
con el propósito de facilitar e impulsar el conocimiento en programación en jóvenes en los centros
de enseñanza alrededor del mundo, por su costo accesible al público. La arquitectura ARM2 que
posee Raspberry Pi trabaja en diverso sistema operativo.

La utilización del microordenador Raspberry Pi actualmente está incrementando


velozmente en algunas aplicaciones y ejecución de proyectos que necesitan una capacidad de
programa permisible y costeable. Entre las aplicaciones de Raspberry es usarlo como servidor

2 Es una arquitectura de ordenador con conjunto reducido de instrucciones


13
de video. El monitoreo de video en tiempo real se los emplea comúnmente con los servidores,
así también en conferencias educativas.

Estas son varias de las aplicaciones de Raspberry Pi: en la protección del hogar, centro
de medios, aplicaciones de domótica, estación meteorológica, controlador de robots, rastreador
de robots, controlador de cámaras web, controlador de motor eléctrico, controlador de juego.

En esta tesis se implementa un sistema de monitoreo usando un Raspberry Pi 3 B+ y


una video cámara USB para la captura y procesamiento de datos de video, comprime y envía la
información a un cliente móvil a través de una red inalámbrica, el uso de Raspberry Pi en este
proyecto ha hecho que la solución sea más rentable.

Figura 6 Raspberry Pi 1 Modelo A+ (Raspberry Pi Foundation, 2019)

2.3 Raspberry Pi 3 B+

Este modelo Raspberry Pi salió al mercado en el año 2018 en el mes de marzo, compitiendo
con sus antecesores es el último de los Pi 3, tiene un costo de $35 dólares.

14
Figura 7 Modelo Raspberry Pi 3 B+

Sus principales características:

• CPU Broadcom Cortex-A53 (ARMv8) SoC 3 1.4 GHz 64 bits Memoria de 1 GB


de RAM.
• Para su conectividad posee 4 puertos USB 2.0.
• LAN inalámbrica IEEE 802.11.b / g / n / ac de 2.4GHz y 5GHz, Bluetooth 4.2, BLE.
• Puerto USB 2.0 (rendimiento máximo 300 Mbps).
• 40 pines en cabecera GPIO
• Puerto HDMI
• Puerto de audio estéreo, además enlace de video compuesto
• Salida de cámara CSI enchufable con cámara RaspBerry
• Salida de pantalla DSI enchufable a panel táctil Raspberry Pi.
• Acople Micro SD instalar almacenamiento de datos y S.O.
• Ingreso de energía de 5V / 2.5A DC con conector USB. Compatibilidad con
energización por red Ethernet (PoE) Es operable en temperaturas de 0 – 50 °C.

3 Es un circuito integrado que contiene todos los circuitos y componentes necesarios de un sistema
electrónico en un solo chip.
15
2.3.1 Hardware.

Este pequeño ordenador tiene las siguientes dimensiones en la de 8.5 por 5.3 cm, posee
un chip integrado de Broadcom BCM2837, con un procesador ARM 53, puerto HDMI, puerto
ethernet, puerto usb, ranura para micro SD, conectores de audio.

Figura 8 Partes de un Raspberry Pi (Raspberry Pi Foundation, 2019) .

2.3.2 Procesador Broadcom BCM2837B0

El procesador del modelo Pi 3 B+ es un BCM2837B0, los núcleos ARM son capaces de


funcionar a hasta 1.4GHz, el VideoCore IV funciona a 400MHz, el núcleo ARM es de 64 bits,
mientras que VideoCore IV es de 32 bits, posee un difusor de calor para mejores térmicas,
también funciona a voltajes más bajos para reducir el consumo de energía y un monitoreo, con
un control de temperatura más preciso en el chip.

2.3.3 CPU

El CPU de este modelo contiene ARM Cortex-A53 de cuatro núcleos y 64 bits, los cuatro
núcleos permiten que el procesador Cortex A53 realice actividades computacionales, de gestión
de datos y de procesamiento de entrada / salida de manera rápida y eficiente. El procesador
ARMv8 funciona a 1.4 GHz y a un bajo voltaje (3.3VDC).

16
2.3.4 Almacenamiento

A diferencia de sus antecesores como los primeros modelos Pi 1 se inició con una
memoria RAM de 256 Mb, posterior a esto el Pi 1 B aumento su RAM a 512 MB, debido al
incremento de los componentes la Fundación Raspberry Pi diseño sus nuevos modelos Pi y Pi 3
con 1 GB de RAM, para aumentar la gestión de datos.

2.3.5 GPIO

El puerto GPIO es un conector de 40 puntos es el medio proporcionado por Raspberry Pi


para permitir acceder a los puertos de entrada / salida del procesador BCM2837 además de ser
una computadora pequeña y potente, la Raspberry Pi 3 B + puede conectarse y controlar
dispositivos físicos, por lo que es una opción ideal para proyectos y aplicaciones de Internet de
las cosas (IoT) de bricolaje. Los pines de salida de entrada de propósito general (GPIO) permiten
que el SBC se use en una variedad de aplicaciones de control que van desde la automatización
del hogar hasta la robótica móvil. Hay un conector de encabezado macho doble de 40 pines
soldado a la placa de circuito impreso (PCB) Pi 3 B +. Los pines GPIO se pueden configurar
como entrada o salida o como una combinación de los dos métodos de conexión. Muchos de los
pines cumplen con 3.3VDC, aparte de la fuente de alimentación de + 5VDC que se proporciona
en la PCB Pi 3 B +.

Figura 9 Pines de Raspberry Pi 3 B+ (The engineering projects, 2019).

17
2.3.6 Puerto HDMI

Es una conexión totalmente digital capaz de transportar señales de audio y video


multicanal en un solo cable. HDMI también admite video de alta definición y audio de alta
resolución, y es la única conexión compatible con formatos, incluidos Dolby TrueHD, DTS-HD
Master Audio y video 3D.

Figura 10 Vista del Puerto HDMI en Raspberry Pi 3 B+

2.3.7 Puerto USB

El Raspberry Pi 3 B + proporciona cuatro puertos USB 2.0. Esos cuatro puertos son
compatibles con un concentrador combinado LAN9514 y un circuito integrado (IC) de controlador
Ethernet. El USB IC es fabricado por Microchip. El USB es compatible con el host On-The-Go
(OTG), lo que permite que el SBC alimente otros dispositivos y aplicaciones de Universal Serial Bus.
Los requisitos de fuente de salida para cada puerto USB son + 5V a 500mA.

2.3.8 Sofware.

La tarjeta Raspberry Pi es adquirida sin Sistema Operativo; el S.O. se debe cargar e instalar
en una tarjeta Micro SD, esta es introducida en uno de sus puertos el dispositivo. Existen dos

18
opciones: en primera opción es descargar de la fuente oficial de Raspberry y la segunda opción es
descargar de las diferentes fuentes educativas autorizadas (Raspberry Shop, 2019).

En medio de estos programas ubicamos a BerryBoot, un software que se ocupa de toda


la tarea instalar el programa a partir de nuestra propia Raspberry. Este Software debe ser
cargado en nuestro dispositivo por medio del puerto de comunicación y esta a su vez descargar
el sistema operativo y procederá con toda la instalación.

Otra elección interesante es Noobs, una herramienta aplicativa que permite la instalación
de las varias distribuciones Linux. Noobs, no necesita tener conexión a internet mientras se está
instalando. Este aplicativo tan solo se debe cargar en la tarjeta SD, esta tarjeta debe tener un
almacenamiento de al menos 4GB. Noobs también permite instalar aplicativos como RaspBMC
y Raspbian sin inconvenientes.

2.4 Raspbian

Raspbian es un sistema operativo que se basa en Debian4 optimizado para el hardware


Raspberry Pi. Raspbian brinda más que un sistema operativo puro ya que viene con más de
35,000 paquetes es gratuito al público, con un software pre compilado en un formato fácil al
instalarlo en un Raspberry Pi (Raspbian, 2019).

Figura 11 Interfaz gráfica de Raspbian (Raspberry Pi Foundation, 2019).

4 Es un Sistema operativo para computadoras.


19
2.5 Cámaras

2.5.1 Módulo de Cámara Pi V2

Para el presente proyecto se utilizarán dos módulos de cámara V2 dentro del laboratorio
de cómputo que será monitorizado, este módulo de cámara tiene como principales funciones
tomar fotos o videos de alta definición, el mismo funciona con todos los modelos de Raspberry
Pi en el mercado como es el 1,2,3,4, sus principales características:

• Sensor de imagen: Sony IMX219 de 8MPX.


• Resolución máxima fotográfica: 3280 x 2464 pixel.
• Resoluciones de video: 1080p30, 720p60 y 640x480p90.
• Dimensiones: 25mm x 23mm x 9mm.
• Interfaz: conector CSI.

Figura 12 Módulo de Cámara Pi V2

2.5.2 Pi NoIR Cámara V2.

La cámara Pi NoIR es una cámara que permite realizar tomas en ambientes de poca luz,
con un lente de enfoque fijo a bordo, posee 8 megapíxeles con sensor de imagen Sony IMX219,
es capaz de imágenes estáticas de 3280 x 2464 píxeles, y asimismo admite video 1080p30,
720p60 y 640x480p60 / 90. El filtro Infrarrojo está presente en la lente de la cámara NoIR la cual
facilita la captura de imágenes en ambientes con poca luz. En este proyecto se empleará cámaras
NoIR y todas tienen compatibilidad con Raspbian.
20
Figura 13 Cámara de Raspberry Pi NoIR V2

2.6 Python

Python es un lenguaje de programación fácil de usar para el usuario, este se puede


enseñar incluso a principiantes los cuales no tendrán problemas debido a su clara sintaxis y
legibilidad, es funcional tanto en plataformas como Linux, Windows o Mac, es popular para su
uso en ciencia de datos, computación científica, desarrollo web, aprendizaje automático,
infraestructura de nube.

Figura 14 Logotipo de Python (Python Sofware Foundation, 2019).

En este proyecto el reconocimiento de movimiento en las cámaras será realizado


mediante Python, se tomarán fotografías en intervalos de tiempos y luego se compararán las
mismas para detectar si algún objeto en ella se ha movido o no.

21
El intérprete de Python y la extensa biblioteca estándar están disponibles en formato
fuente o binario sin cargo para todas las plataformas principales, y se pueden distribuir
libremente. Todas las versiones de Python son de código abierto, históricamente, la mayoría,
pero no todas, las versiones de Python también han sido compatibles con GPL5 (Python Software
Foundation, 2019).

A menudo, los programadores se enamoran de Python debido a la mayor productividad


que proporciona. Como no hay un paso de compilación, el ciclo de edición, prueba y depuración
es increíblemente rápido. La depuración de los programas de Python es fácil: un error o una
entrada incorrecta nunca causará un error de segmentación. En cambio, cuando el intérprete
descubre un error, genera una excepción. Cuando el programa no detecta la excepción, el
intérprete imprime un seguimiento de pila. Un depurador de nivel de origen permite la inspección
de variables locales y globales, la evaluación de expresiones arbitrarias, el establecimiento de
puntos de interrupción, el paso por el código de una línea a la vez, etc. El depurador está escrito
en Python, lo que demuestra el poder introspectivo de Python. Por otro lado, a menudo la forma
más rápida de depurar un programa es agregar algunas declaraciones de impresión a la fuente:
el rápido ciclo de edición, prueba y depuración hace que este enfoque simple sea muy efectivo.

2.7 Aplicación Android

Es una aplicación de software que se ejecuta en la plataforma Android, está diseñada


para dispositivos móviles inteligentes o una PC que utilicen este sistema operativo. Estas
aplicaciones pueden estar a disposición del usuario en sus sitios web, aunque la mayoría de ellas
se cargan y publican en la play store que está en línea y es de fácil acceso para los usuarios que
tienen un teléfono inteligente con este sistema operativo, existen aplicaciones libres y con costo,
para todas las necesidades del consumidor como: conseguir un taxi, encontrar parejas, noticias,
salud, belleza, entretenimiento, etc.

5 Licencia Pública General.


22
Figura 15 Aplicaciones Android (Palmeiro, 2013).

Las aplicaciones de Android están escritas en el lenguaje de programación java y utilizan


bibliotecas centrales de Java, inicialmente se compilan en ejecutables de Dalvik6 para que se
ejecuten en la máquina virtual de Dalvik, diseñada para dispositivos móviles. Los desarrolladores
pueden descargar el kit de desarrollo de software (SDK) de Android desde su sitio web, el mismo
que contiene herramientas, código de muestra y documentos relevantes para crear aplicaciones
de Android.

2.8 Router

Es un dispositivo que analiza el contenido de los paquetes de datos transmitidos dentro


de una red u otra red. Los enrutadores determinan si el origen y el destino están en la misma red
o si los datos deben transferirse de un tipo de red a otro, lo que requiere encapsular el paquete
de datos con la información del encabezado del protocolo de enrutamiento para el nuevo tipo de
red, da soporte de seguridad contra intrusos de una red.

Figura 16 Router (D-Link Corporation, 2019).

6 Es la máquina virtual que utiliza la plataforma para dispositivos móviles Android.


23
2.9 Web Server

Web Server traducido al español significa servidor web, el cual es un sistema que entrega
contenido o brinda servicios, manteniéndose a la espera de peticiones de ejecución de manera
adecuada a usuarios finales través del internet, este consta de un servidor físico como una
máquina, un sistema operativo de servidor y un software utilizado para facilitar la comunicación
HTTP (protocolo de transferencia de hipertextos).

Figura 17 Web server (Sayeed, 2018).

2.10 Java

Java es un lenguaje de programación de una sola escritura y ejecución en cualquier lugar


desarrollado por Sun Microsystems. Es similar a C y C ++ pero mucho más fácil. Puede combinar
Java con una gran cantidad de tecnologías como Spring, node js, Android, Hadoop, J2EE, etc.
para crear aplicaciones completas, robustas, escalables, portátiles y distribuidas. Java también
promueve la integración y las pruebas continuas utilizando herramientas como Selenium
(hackr.io, 2018).

Java ofrece muchas características atractivas:

• Lenguaje independiente de la plataforma


• Biblioteca estándar rica que facilita la codificación. Puede crear una aplicación independiente
completa utilizando Java.
• Java admite la asignación y el borrado automático de memoria (lo que se denomina
recolección de basura).

24
• Ofrece un gran rendimiento ya que Java admite subprocesos múltiples y concurrencia, lo
que lo convierte en un lenguaje altamente interactivo y receptivo.
• Seguro y sencillo
• Independiente de la plataforma: podemos escribir código Java en una plataforma (sistema
operativo) y ejecutarlo en otra plataforma sin ninguna modificación.
• Orientado a objetos: Java es un lenguaje orientado a objetos. Esto ayuda a que nuestro
código Java sea más flexible y reutilizable.
• Velocidad: el código Java bien optimizado es casi tan rápido como los lenguajes de nivel
inferior como C ++ y mucho más rápido que Python, PHP, etc (programiz.com, 2019).

25
3 Marco Metodológico

3.1 Diseño e Implementación de la Solución

En el actual capítulo se muestran los aspectos metodológicos de la investigación y la


propuesta de solución que se plantea para los problemas mencionados anteriormente.

Las metodologías son todos los métodos, técnicas y procedimientos usados para abordar
un problema de forma ordenada y eficiente para hallar una solución adecuada al mismo.

3.2 Algoritmo de Detención de Movimiento

Una técnica muy utilizada en la detección de movimiento en video es la sustracción de


fondo. Esta técnica es válida solo en aplicaciones con cámaras estáticas, tal como se pretende
en este proyecto. Para aplicaciones de video vigilancia este método es idóneo ya que se
rápidamente se puede discriminar la ocurrencia de un evento y analizar el movimiento de objetos
en el entorno de vigilancia.

Como antecedente a la implementación se realizan pruebas básicas del algoritmo de


detección de movimiento. En la figura 18 se muestra los resultados en una matriz de imagen.

Para proceder estableceremos el siguiente flujo en el diseño, analizar diferencias entre


matrices. Implementar el algoritmo de resta de fondo, este usando las librerias de OpenCV vuelve
más fácil la implementacion de la funcion de probabilidad para cada pixel para este proceso.

26
Figura 18 Flujo de trabajo para el desarrollo

3.3 Diagrama de Flujo de Funcionamiento

En la figura 19 se muestra el flujo de funcionamiento del sistema. Cada cámara tiene su


procesador de imágenes que permite realizar la detección del movimiento.

27
Figura 19 Flujo del proceso de detección de movimiento

Para detectar el movimiento se debe obtener el fondo estático, esto en la captura de las
tramas fotográficas.

En las siguientes figuras se muestran resultados del siguiendo el diagrama de flujo y el

procedimiento de resta de fondo frame = imutils.resize(frame, width=500)

La base de la resta de fondo es tener una imagen sobre la cual se hará la referencia para
el cálculo del algoritmo. En la figura 20 se muestra la imagen base sobre la cual se obtendrá la
matriz de referencia.

28
Figura 20 Imagen base para la resta de fondo

Imagen capturada por el algoritmo donde se haya movimiento. En la figura 21 se muestra


la captura del evento, se nota una latencia entre el momento de ocurrido el desplazamiento y la
captura de la imagen. Esto, por el procesamiento realizado, se soluciona reduciendo la resolución
en pixeles de la imagen a capturar para que las matrices de resta sean más rápidas de procesar.
Esto no es problema ya que al interesar movimiento una menor resolución, aunque no
excesivamente baja, ayuda mucho. En la figura 22 se muestra menor latencia entre el movimiento
y la captura de la imagen de aquel evento.

29
Figura 21 Captura con latencia

Figura 22 Captura con latencia reducida

30
Un problema con la solución de bajar la resolución de la imagen es que se tenga menos
capacidad de identificación de rostros encado de algún evento de intromisión en el lugar. Para
solventar esto, otra solución es obtener una matriz sencilla de procesar aplicando un filtro para
escala de grises, mucho más sencillo que las matrices de una imagen a colores.

Aplicando filtro para cuantización de colores y tener una imagen bmp y reducir la complejidad
de la matriz, tal como se muestra en la figura 23.

Figura 23 Filtro de cuantización a la imagen de fondo

A vista simple no resulta buena idea ya que al cuantizar los colores se lleva al extremo a
tonos oscuros, suturando los valores rgb y dejando el mismo valor para dos tonos oscuros,
aunque sean diferenciales. La figura 24 muestra las zonas vulnerables donde se pierde detección
por la saturación de las matrices al aplicar el algoritmo con el filtro de cuantización.

31
Figura 24 Zonas vulnerables con filtro de cuantización

Una solución a lo anterior es usar la escala de grises, lo más cercano a una imagen bmp
para que la función de densidad de probabilidad de los pixeles sea más simple.

Las siguientes líneas permiten tener una matriz más simple y proceder a tomar la base
de fondo, la primera imagen de la trama es tomada como constante a partir de la cual se hace la
resta de fondo y se detecta el movimiento.

tono_gris = cv2.cvtColor(frame, cv2.COLOR_BGR2tono_gris)

tono_gris = cv2.GaussianBlur(tono_gris, (21, 21), 0) if

primera_trama is None: primera_trama = tono_gris continue

32
Figura 25 Filtro de grises aplicado a la imagen de fondo.

33
Figura 26 Filtro de grises aplicado a la imagen del evento.

Para hallar el movimiento se emplea la resta de fondo. El sistema luego de tener su


imagen de referencia procede a realizar filtro y resta de matrices constantemente hasta hallar el
evento y guardar esa captura, de lo contrario la descarta y continúa.

Las siguientes líneas realizan la diferencia usando las funciones para resta de fondo entre
la imagen actual y la anterior.

Diferencia_trama = cv2.absdiff(primera_trama, tono_gris) trillo

= cv2.trilloold(frameDelta, 25, 255, cv2.trillo_BINARY)[1]

Calcular la diferencia entre dos tomas es una simple resta, en la cual tomamos el valor
absoluto diferencias de intensidad de píxeles. La figura 27 muestra el resultado de la resta.

34
Parte de la matriz en la zona de movimiento antes de la captura:

Parte de la matriz en la zona de movimiento antes de la captura:

35
La diferencia en promedio de 10 puntos permite disparar la captura indicando que se ha
producido un movimiento.

36
Figura 27 Resultado de la resta con filtro de grises

En la figura 28 se muestra el resultado de aplicar el filtro de cuantización de colores a la


imagen donde se produjo el evento. Aunque se obtiene resultado por la diferencia de la resta de
fondo, aún se mantienen los lugares donde la detección resulta vulnerable.

Figura 28 Imagen de evento con filtro de cuantización

3.4 Alerta de Email

Para la implementación de la alerta por correo electrónico se realiza el envío de correo


electrónico a través de un servidor SMTP implementado en el Raspberry pi del proyecto. Este
protocolo nos permite iniciar una sesión entre el servidor y el usuario, por otro lado, el protocolo
MTA y MDA suministran servicios para la entrega en red local.

Los parámetros necesarios son configurados en un archivo de configuración donde se


muestra información de las credenciales a usar para el arranque del inicio de sesión entre el
servidor y el usuario que realiza la solicitud de autenticación tal cono se muestra en la figura 29.

37
Figura 29 Parámetros de servidor SMTP

El cuerpo del correo debe ser redactado en un archivo Python que se ejecute junto con
el programa principal, tal como en la figura 30 se configuran los parámetros de correo. Las líneas
de encabezado del emisor y remitente deben colocarse de lo contrario no se ejecuta el envío.

Figura 30 Texto de correo enviado

En el servidor de correo del destinatario debe comprobarse el envío del email cuando el
servicio es ejecutado. La figura 31 muestra el correo recibido en el destinatario enviado por el
cliente que realiza en envío desde el servidor SMTP en el Raspberry.

Figura 31 Correo recibido en el destinatario

3.5 Alerta por SMS

Para la alerta por SMS ha sido conveniente usar un módulo de comunicación GSM
compatible con microcontroladores comerciales como Arduino, ya que existen librerías que

38
permiten hacer más sencilla la implementación. El módulo usado es el SIM900 que se muestra
en la figura 32. Este módulo trabaja en cuatro bandas GSM de 850 / 900 / 1800 / 1900 Mhz, en
este Proyecto se empleó por la banda de 900 Mhz en la cual opera la telefonía celular en Ecuador.

Figura 32 Módulo SIM900

En la figura 33 se muestra el diagrama de bloques del proceso de envío de mensaje de


texto para alarma. El programa principal siempre llama al subproceso de envío de mensaje de
texto, y existiendo un evento que ha sido detectado el módulo GSM es activado con los
parámetros de número telefónico receptor y mensaje, según se expone en el código fuente del
programa. En los anexos se adjunta el código del subproceso de envío de mensaje de texto.

Figura 33 Diagrama de flujo subproceso de envío de SMS

3.6 Interfaz Web de Configuración de Alarma.

39
La interfaz web de configuración de alarma se realiza a través de solicitudes por el puerto
80, http. La hora se extrae de la sincronización NTP de la cual disponen los raspberries.
En la figura 34 y 35 se muestra un diagrama de operación de la interfaz y la interfaz gráfica
respectivamente.

Figura 34 Diagrama de operación de interfaz.

Figura 35 Visualización interfaz web de configuración de alarma.


40
3.7 APLICACIÓN ANDROID PARA MONITOREO REMOTO

3.7.1 ESQUEMA DE BLOQUES DE LA APLICACIÓN

En la figura 36 se muestra la estructura de la aplicación. La única tarea que tendrá la


aplicación será la visualización de datos, en este caso de video. No activará ningún actuador
adicional. Por otro lado, las seguridades de acceso a los datos se realizan con autenticación de
usuarios. Para que al alternar la dirección de la institución que implementará este sistema, no
haya conflictos por un único usuario o modo de acceso.

Figura 36 Estructura del sistema de la aplicación.

La implementación de la solución requiere un servidor en el cual se encontrarán centralizado


los vídeos capturados por las cámaras instaladas en la institución.

Para la exposición de los vídeos se implementa un micro servicio rest que permita
transmitir los vídeos en formato mp4, que se encargará de realizar la búsqueda de los vídeos en
el filesystem del servidor central.

Para el control del acceso a la app y creación de nuevos usuarios, se crea un micro servicio
con una conexión a la base de datos, para registrar y consultar usuarios.
41
A continuación, se muestran los rest implementados.

3.7.2 CONTROL Y CONSULTA DE USUARIOS

1. /api/buscar/{usuario}
Permite la realizar el login, por medio del nombre del usuario y contraseña establecida
al momento del registro como se muestra en la figura 37, figura 38 y figura
39.

Figura 37 Pantalla de inicio

42
Figura 38 Pantalla de inicio de sesión.

43
Figura 39 Identification de credenciales.

2. /api/listaUsuario
Este rest permite dar paso a la consulta de todos los usuarios registrados en la base
de datos del sistema y listarlos tal como se muestra en la figura 40.

44
Figura 40 Lista de usuarios

3. /api/guardar
Para la creación de nuevos usuarios se implementa el rest ahora mencionado, de ese
modo se lleva a cabo el registro de un usuario tal como en la figura 41, guardando toda la
información en la base de datos del servidor del sistema.

45
Figura 41 Creación de un usuario a través de la aplicación.

3.8 Exposición de información de eventos detectados

En el proceso de acceso y exposición de la información se sigue según el diagrama de la


figura 42, donde se ejecutan los apis rest para visualización de fotos y video. Primero se ejecuta
el listado de cámaras asociadas al sistema. Luego el directorio de la cámara que ha sido
seleccionada, en este directorio aparecen ordenados por fecha, de ese modo un directorio puede
tener más o menos información recopilada de eventos de detección de movimiento que otros
directorios. Después de usar los dos apis rest para listar y seleccionar cámaras y directorios, se
ejecuta el rest que lista toda la información en el directorio seleccionado.

46
Figura 42 Proceso de visualización de datos en la app.

1. /video/listaCamaras

En la figura 43 se visualiza la interfaz de listado de cámaras, usando el api rest


mostrado se puede realizar la consulta de todos los directorios de las cámaras
configuradas.

47
Figura 43 Directorio de cámaras

2. /video/listaDirCamaras/{camara}

Este rest permite realizar la consulta de los directorios internos de cada cámara y
exponerlos como se muestra en la figura 44, organizados por fechas.

48
Figura 44 Directorios de cámaras organizados por fechas.

3. /video/listaVideo/{camara}/{dir}
Permite realizar la consulta de toda la información alojada en un directorio interno de
la cámara.

3.9 ARQUITECTURA DE COMUNICACIÓN DEL SISTEMA

La conexión de los dispositivos a la red se detalla en la figura 45 donde se muestra


la arquitectura del sistema. Los dispositivos RPi1, RPi2, RPi3 son las cámaras de detección
de movimiento, estas se representan con un computador por usar un módulo Raspberry pi
Los dispositivos de video realizar tomas de video y capturas de eventos de movimiento y

49
todo lo alojan en el servidor local, al que accede el cliente desde la aplicación móvil descrita
en la sección anterior.

Figura 45 Arquitectura del sistema CCTV

3.10 ALMACENAMIENTO EN NUBE PERSONAL

En este proyecto se pretende implementar el concepto de nube personal, es por eso que
no se ha dispuesto del uso de nubes que pertenecen a los servicios conocidos como Google
drive, OneDrive, Dropbox, etc. Aunque existen muchas opciones similares se ha querido
aprovechar la arquitectura descrita en el capítulo anterior para realizar una nube personal y
entender el concepto de esta. El almacenamiento en la nube nos permite tener respaldo de
archivos y compartir los mismos en un espacio físico al que podemos acceder a través de la red,
eso es lo que se hace en GDrive y sus similares. Entonces para la nube personal de este sistema
se ha implementado un sistema que gestiona permisos y accesos por red para compartir archivos
desde un computador hacia otro a través de la red. Se ha usado el sistema SAMBA. Samba
permite compartir los archivos tal como se ha descrito anteriormente. En la figura 46 se muestra
un diagrama de flujo del proceso de respaldo de las imágenes y videos en el computador central
que a su vez gestiona los archivos para visualización desde la App móvil.

50
Figura 46. Diagrama de flujo Sistema Nube personal

El sistema arranca y a su vez con los procesos descritos en los apartados 3.7, 3.8 y 3.9
se ejecutan los programas de copia de archivos, los permisos de acceso con los que se arma la
nube personal. Todos los archivos de las cámaras se almacenan en el disco duro de la
computadora que actúa de servidor central.

3.11 ENCAPSULADO DEL SISTEMA DE VIDEO

El sistema CCTV dispone de un hardware libre Raspberry Pi y su módulo Picam, estos


vienen separados y necesitan ser encapsulados. Usando herramientas CAD y ayuda de equipos
de manufactura aditiva como la impresión 3D que permite la personalización y prototipo ágil se
ha implementado un soporte para las cámaras. En la figura 47 se muestra el bosquejo de la

51
carcasa de las cámaras. En el siguiente capítulo se muestra la implementación final de la
carcasa.

Figura 47. Bosquejo de carcasa para cámaras

3.12 DIAGRAMA ELÉCTRICO

Para la implementación de la red eléctrica se procedió a inspeccionar la disponibilidad de


espacio para el breaker de protecciones en el panel de distribución. Dentro del panel de
distribución se observó que existe 7 circuitos eléctricos para la energización de las diferentes
áreas del departamento como sala, comedor, dormitorio, baño. Por lo que el octavo circuito será
utilizado para el sistema de video vigilancia.

Una vez confirmado la disponibilidad se procede a situar los elementos de la red circuito
cerrado (servidor, cámara 1, cámara 2 y cámara 3) dentro del departamento, asegurando la
cobertura de total del departamento, minimizando los puntos ciegos.

Se realizó un plano arquitectónico del departamento sobre el cual se desarrolla únicamente


el circuito eléctrico de los elementos de seguridad tal como se muestra en la figura
48.
En los circuitos de tomacorriente de 120 V toda la tubería será de 1Ø ½ pulgada y llevará
2 conductores flexibles #2 (Fase y neutro) más un conductor flexible #12 (tierra). El breaker de
protección será de 1 polo – 20 Amperios, capacidad suficiente para la protección y
funcionamiento óptimo del circuito de video vigilancia.

52
3.13 DIAGRAMA ELECTRÓNICO

En la figura 49 se muestra el diagrama electrónico del sistema. En este proyecto no se


ha desarrollado electrónica, es decir, diseño de amplificadores, acondicionadores de señal,
sistemas de adquisición ADC, etc. El diagrama muestra la conexión de los módulos usados, cada
Raspberry se conecta a una fuente de alimentación de 5V, 10W de potencia, y a una cámara, la

53
comunicación entre ellos y el servidor central se realiza a través de la red inalámbrica wifi, como
se muestra en la figura 45 que expone la arquitectura del sistema.

Figura 49 Diagrama electrónico

4 IMPLEMENTACIÓN Y ANÁLISIS

4.1 INSPECCIÓN

Para la ubicación de las cámaras es necesario elegir puntos en los cuales la visión de la
cámara tenga buena cobertura. En las figuras 50a, 50b y 50c se muestran los puntos en los
cuales se ha considerado idóneo instalar las cámaras. Para la operación del sistema es necesario
suministrar de energía y cobertura de red de datos a los módulos de las cámaras de vigilancia.
En los puntos mostrados en las figuras 50a, 50b y 50c se han encontrado: buen ángulo de visión
para las cámaras y buena intensidad de señal wifi. La buena intensidad de señal wifi nos permite
economizar en el despliegue de una red ethernet para la cobertura. Sin embargo, por la falta de
un punto eléctrico en los sitios en mención ha sido necesario instalar un punto de tomacorriente
de 120 voltios para suministrar de energía eléctrica a cada parte del sistema cctv. En la figura 51
se muestra la medición de intensidad de señal wifi, usando un aplicativo móvil para escanear
redes wifi.
54
a)

b)

55
c)

Figura 50 Punto de inspección para a) cámara 1, b) cámara 2 y c) cámara 3

Figura 51 Medición de intensidad de señal wifi en el sitio de instalación

4.2 PROVISIONAMIENTO DE ENERGÍA ELÉCTRICA

Las figuras 52a, 52b y 52c muestran el despliegue de la instalación eléctrica hasta donde es
necesario energizar los puntos para energizar las cámaras.

56
a) b)

c)

Figura 52 a, b) y c) Instalación toma eléctrico en puntos inspeccionados.

4.3 MONTAJE DE CÁMARAS

Para la instalación de las cámaras del sistema se ha configurado el DHCP para evitar
problemas de conexión en caso de reconfiguración del router en el rango de las direcciones IP.
57
Esto para tener independencia de eventos de mantenimiento de la red wifi, situación que originó
un problema al perder conexión por usar una dirección IP que luego de la configuración del router
quedó fuera del rango establecido en el equipo router En las figuras 53a, 53b, 53c, 53d y 53e se
muestra el proceso de instalación y configuración de cámaras en los sitios mostrados en la
sección anterior.

a) b)

58
c)

d)

59
e)

Figura 53 a) Cámara 1, b) cámara 2, c) cámara 3, d) Montaje carcasa de cámaras, e) Configuración de


cámaras.

4.4 ANÁLISIS DE RESULTADOS

4.4.1 ÁNGULOS DE VISIÓN DE LAS CÁMARAS

El ángulo de visión de cada una de las cámaras desde el punto de instalación son los que
se muestran en las figuras siguientes. Punto de instalación de cámara 1 en la figura 54a y ángulo
de visión en la figura 54b. Punto de instalación de cámara 2 en la figura 55a y ángulo de visión
en la figura 55b. Punto de instalación de cámara 3 en la figura 56a y ángulo de visión en la figura
56b.

60
a) b)

Figura 54 Cámara 1, a) Punto instalación y b) Ángulo de visión

a) b)

Figura 55 Cámara 2, a) Punto instalación y b) Ángulo de visión

a) b)

Figura 56 Cámara 3, a) Punto instalación y b) Ángulo de visión

61
4.4.2 DETECCIÓN DE EVENTOS DE MOVIMIENTO

Una vez implementado el sistema cctv, se procede a visualizar los resultados obtenidos.
En las figuras 57a, 57b y 57c se muestra una imagen capturada y almacenada luego de un evento
de detección de movimiento en la cámara 1, se muestra el evento que causó la detección y la
imagen previa capturada por la cámara con la que se contrasta según el algoritmo desarrollado
y expuesto en el capitulo anterior.

a)

La figura 57a constituye en el caso de este evento la imagen de fondo respecto a la


imagen 57b para el algoritmo de resta de fondo. Y a su vez la 57 b constituye la imagen de
fondo respecto a la imagen 57c.

62
b)

c)

Figura 57 a, b y c Evento detectado cámara1

En las figuras 58a, 58b y 58c se muestra el filtro de grises aplicado a las imágenes durante
el evento. Según el algoritmo, el filtro es aplicado para obtener la matriz equivalente de la imagen,
en lugar de una matriz RGB que haría más complejo el proceso. Con las matrices equivalentes

63
de estas imágenes se puede hacer el proceso de resta de fondo, base del algoritmo
implementado, de este modo con el resultado de la resta de fondo se puede inferir el evento.

a)

b)

64
c)

Figura 58 a) Filtro de grises imagen 58a, b) Filtro de grises imagen 58b y c) Filtro de grises imagen 58c

En las figuras 59a, 59b y 59c se muestra el filtro de cuantización aplicado a el evento para
guía y contraste con el proceso de resta de fondo. Se observan la sección donde el evento se
detecta.

a)

65
b)

c)

Figura 59 a) Filtro de cuantización en imagen de fondo, b) Filtro de cuantización en imagen de evento


cámara 1 y c) Filtro de cuantización en imagen de siguiente evento cámara 1

66
Figura 60 Sección de imagen que dispara la detección evento 1

Figura 61 Sección de imagen que dispara la detección evento 2

En la figura 60 se observa la sección de la imagen que corresponde al evento de movimiento.

En las figuras 62a y 62b; 63a y 63b; 64a y 64b y 65 se muestran las imágenes capturadas
por la cámara 2 en los procesos detección, filtrado de grises, filtrado de cuantización y sección de
imagen que dispara el evento, respectivamente. Siguiendo el proceso de detección descrito para la
cámara 1 se tiene:

67
a) Imagen de fondo

b) Evento detectado

Figuras 62. Evento de movimiento cámara 2

En las figuras 63a y 63b se muestra la aplicación del filtro de grises a las imágenes que
fueron usadas por el algoritmo.

68
a) Imagen de fondo

b) Evento detectado

Figura 63 Filtro de grises cámara 2

En las figuras 64a y 64 b se muestra la aplicación del filtro de cuantización a las imágenes
procesadas por la cámara 2 para el evento de detección.

69
a) Imagen de fondo

b) Evento detectado

Figura 64 Filtro de cuantización cámara 2

70
Figura 65 Sección de imagen que dispara la detección, cámara 2

En las figuras 66a y 66b; 67a y 67b; 68a y 68b y 69 se muestran las imágenes capturadas
por la cámara 3 en los procesos detección, filtrado de grises, filtrado de cuantización y sección
de imagen que dispara el evento, respectivamente. Siguiendo el proceso de detección descrito
para la cámara 1 se tiene:

a) Imagen de fondo Cámara 3

71
b) evento detectado

Figura 66. Evento de movimiento cámara 3

a) Imagen de fondo

72
b) Evento detectado

Figura 67. Aplicación filtro de grises Cámara 3

a) Imagen de fondo

73
b) Evento detectado

Figura 68. Aplicación filtro de cuantización cámara 3

Figura 69. Sección de imagen que dispara evento Cámara 3

74
4.4.2 ALMACENAMIENTO DE DATOS

Según lo expuesto en el capítulo 3 las imágenes y tramas de video captadas durante un


evento de detección son transferidas y almacenadas en el servidor central que cumple la función
de nube local para lo cual accedemos usando las credenciales establecidas, como se habló en
el capítulo 3, de esa manera garantizamos la seguridad de la información del sistema, para
posterior uso y visualización. En la figura 70 se muestran varias tramas de video alojadas en el
servidor central.

Figura 70 Imágenes almacenadas de eventos de movimiento

En la figura 71 se muestra el almacenamiento en el servidor central de las imágenes de


captura del evento. Estas imágenes se guardan en formato JPG.

75
Figura 71. Almacenamiento de tramas de video de eventos de movimiento

4.4.3 APLICACIÓN MÓVIL

Los videos almacenados en el servidor central se pueden acceder a través de la


aplicación móvil cuya interfaz principal se muestra en la figura 72, y se visualiza una lista tal como
se muestra en las figuras 73a, 73b y 73c. Se muestra de manera secuencial el acceso a la
visualización de los videos desde la aplicación. La figura a muestra el menú de las cámaras
instaladas y seleccionando cada una de ellas se tiene la lista de los videos que se despliega
según se muestra en las figuras b, c y d para las cámaras 1, 2 y 3 respectivamente.

76
Figura 72. Pantalla Inicio sesión aplicación móvil

77
a) b)

c) d)

Figura 73 Visualización de videos en aplicación móvil

78
4.4.4 ALARMA

La alarma de aviso de un evento de movimiento se envía a través de un correo electrónico


y llega con el asunto y mensaje que me puede observar en las figuras 76a y 76b. No se han
percibido problemas en el envío de correo electrónico. Se pueden añadir más direcciones de
correo como destino para en envío de la alerta. En la figura 74, a continuación, se muestra la
interfaz web de configuración de alarmas en visualización móvil.

Figura 74. Visualización interfaz de configuración alarmas

79
En la figura 75 se muestra el flujo del programa, desde la línea de comandos, luego de
una detección y un mensaje de consola donde se indica que la rutina del servicio smtp para
envío de correo electrónico por alerta ha sido realizada con éxito.

Figura 75. Mensajes consola, evento detectado y envío de mail

La alerta por SMS se muestra en la figura 77, y la alerta por mail se puede visualizar en las
figuras 76a y 76b, donde se muestra el título del mensaje y el contenido del mismo.

80
Figura 76. a) Envío de alerta, b) Contenido del mensaje

81
Figura 77. Alerta por SMS

CONCLUSIONES

El sistema implementado en este proyecto es orientado para cámaras estáticas ya que al


haber movimiento relativo el algoritmo de resta de fondo lo detecta como evento de movimiento.

El filtro de grises reduce la complejidad del algoritmo de detección de movimiento ya que


al tener una matriz con valores unidimensionales al contrario de una matriz RGB que contiene
valores en matriz de tres valores.
82
El Filtro de cuantización ayuda a solventar el algoritmo de la resta de fondo para detección
de imágenes, debido a la cuantización de tonos, evitando que la susceptibilidad a variaciones de
poca luminosidad afecte al algoritmo de resta de fondo.

Se implementó una interfaz web que actualiza la hora de disparo de alerta mediante
actualizaciones por solicitudes http que recibe.

El módulo SIM900 tiene conexión estable a la red celular en comparación al módulo


SIM800, debido a que la red celular tiene predominancia 4G. Es mejor usar SIM900 respecto al
SIM800 en Ecuador.

Para hallar coincidencia en las alertas de las alarmas ha sido necesario incluir un
programa que constantemente escuche las solicitudes http para actualizar el horario de disparo
de alarma y sincronice con el servidor NTP la hora local.

Para este Sistema donde solo se requiere enviar es suficiente el empleo del protocolo
SMTP, que permite enviar correos de forma simple en una sola vía, no ha sido necesario
desarrollar un subproceso que reciba alguna instrucción por correo electrónico.

RECOMENDACIONES

Mejorar el algoritmo para realizar seguimiento de movimiento, lo que permitiría tener mejor
resguardo en el sistema cctv.

Mejorar el sistema para que permita validad el movimiento relativo y así poder colocar las
cámaras en movimiento y detectar movimiento de terceros objetos.

Usar módulo RTC en casos donde el sistema no tendría cobertura a internet impidiendo que
se sincronice la hora mediante el protocolo NTP.
83
Mejorar la carcasa de modo que se pueda implementar una carcasa de protección IP65 para
exteriores ya que el sistema actual es para interiores.

Es necesario desarrollar un programa machine learning que complemente el sistema y


permita tener un registro de rostros conocidos y evite falsas alertas o repetitivas.

Instalar un UPS en caso de suspensión del servicio de energía.

Desarrollar un sistema que complemente las alertas a través de protocolos de mensajería


instantánea, para usar una misma tecnología y obviar la parte de red celular.

PROYECTOS DE INVESTIGACIÓN VINCULADOS

Diseño e implementación de un sistema de seguridad de control local y remoto con


dispositivos de vigilancia, desarrollo local y remoto con dispositivos de vigilancia, desarrollado en
el software PYTHON, centralizándose en una tarjeta RASPBERRY PI, autores: Veliz Noboa
Bremnen; Campuzano Bulgarín Andy; Cedeño Vélez Vanessa.

Diseño de prototipo doctor Pi para la medición y monitorización de signos vitales en adultos


mayores utilizando sensores biométricos y médicos acoplados a Raspberry Pi, autores:
Valencia Zambrano, Wilson Andrés.

Diseño e implementación de una casa domótica para perros domésticos usando


tecnología Raspberry pi y Arduino con control a través de interfaz web, autores: Bastidas
Martínez Leonel Andrés, Rodríguez Sares Kerly Andrea.

Diseño e implementación de un sistema de circuito cerrado de televisión utilizando mini


ordenadores y Raspberry pi y cámaras para cubrir el concurso ecuatoriano de robótica dentro de
la Universidad Católica Santiago de Guayaquil, autores: Vicente Joaquín Gordon Chavarría y
Josselin Arianna Molina Ormaza.

84
Implementación de un sistema de video vigilancia remota para hogares, utilizando
herramientas de software libre, autores: Bryam Genaro Abril Sarmiento y Patricio Xavier Cuzco
Arévalo.

REFERENCIAS BIBLIOGRÁFICAS

D-Link Corporation. (1 de Julio de 2019). Wireless AC750 Dual Band Router. Obtenido de D-Link
: https://www.dlink.com/en/products/dir-819-wireless-ac750-dual-band-router

Google. (5 de 6 de 2020). Google Map. Obtenido de https://www.google.com/maps/@-


2.1857399,-79.8927977,21z hackr.io.

(2018). https://hackr.io/blog/what-is-java.

Mata, F. J. (2010). VIDEOVIGILANCIA: CCTV USANDO VIDEOS IP. España: Vértice. Recuperado
el 7 de Agosto de 2019

Palmeiro, E. (16 de Enero de 2013). Mobile Analytics en aplicaciones Android. Obtenido de


Analitica Web: https://www.analiticaweb.es/mobile-analytics-en-aplicaciones-android/

programiz.com. (2019). programiz.com. Obtenido de


https://www.programiz.com/javaprogramming

Python Software Foundation. (26 de 6 de 2019). What is Python? Executive Summary. Obtenido de
Python: https://www.python.org/doc/essays/blurb/

Python Sofware Foundation. (26 de 6 de 2019). Python. Obtenido de Python:


https://www.python.org/

Raspberry Pi Foundation. (27 de 6 de 2019). Conoce a la Raspberry Pi. Obtenido de Raspberry :


https://projects.raspberrypi.org/es-ES/projects/raspberry-pi-getting-started/3

Raspberry Pi Foundation. (27 de 6 de 2019). Introducing PIXEL. Obtenido de Raspberry:


https://www.raspberrypi.org/blog/introducing-pixel/

Raspberry Pi Foundation. (26 de 6 de 2019). Raspberry Pi 1 Model A+. Obtenido de Raspberry


Pi: https://www.raspberrypi.org/products/raspberry-pi-1-model-a-plus/

Raspberry Shop. (12 de 8 de 2019). Obtenido de https://www.raspberryshop.es/

Raspbian. (1 de Julio de 2019). Welcome to Raspbian. Obtenido de Raspbian:

85
https://www.raspbian.org

Sayeed, A. (2 de Enero de 2018). Web Server Configuration in Linux with Apache, MariaDB and
PHP. Obtenido de System Zone: https://systemzone.net/web-server-configuration-inlinux-
with-apache-mariadb-and-php/

The engineering projects. (4 de Agosto de 2019). Obtenido de Introduction to Raspberry Pi 3 B+:


https://www.theengineeringprojects.com/2018/04/introduction-to-raspberry-pi-3.html

University of Manitoba. (7 de Agosto de 2019). Obtenido de


https://umanitoba.ca/campus/security/safety/cctv.html

86
5 ANEXOS

5.1 PRESUPUESTO

Descripción Cant Precio Subtotal


.
Raspberry Pi 3B+, KIT 3 $ 79.98 $ 239.64
Cámara Raspberry pi 2 $ 24.80 $ 49.60
Tarjeta Micro SD 32Gb 3 $ 9.00 $ 27.00
Case para Raspberry Pi 3 $ 15.00 $ 45.00
Router 1 $ 60.00 $ 60.00
Repetidor wifi 1 $ 30.00 $ 30.00
Arduino Nano 1 $ 20.00 $ 20.00

SIM 900 ARDUINO 1 $ 43.00 $ 43.00


Cámara Raspberry pi V2 1 $ 29.88 $ 29.88
Laptop DELL 1 $ 1,045.00 $ 1,045.00
Canaleta 10-15 3 $ 0.60 $ 1.80
Broca concreto 5/16
1 $ 1.65 $ 1.65
L 400
Tomacorriente 110V 3 $ 2.50 $ 7.50
Taco Fisher F6 24 $ 0.02 $ 0.48
Enchufe de plástico 15
Amp. 3 $ 1.85 $ 5.55

Movilización a 4 $ 12.00 $ 48.00


Esmeraldas

Costos de Importación 2 $ 42.00 $ 84.00

Subtotal $ 1,738.10

87
5.2 CRONOGRAMA

17 18 19 20 21 a 24
Actividad 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Adquisición
de los
equipos

Diseño del
circuito de
CC-TV

Diseño e
implementa
ción del
sistema de
seguridad

Instalación
del sistema

Diseño y
configuraci
ón del
sistema

Pruebas de
reconocimi
ento de
imágenes

Prueba final
del sistema

5.3 CÓDIGOS PROGRAMA DE

DETECCIÓN:

88
from imutils.video import VideoStream
import argparse import datetime
import imutils
import time import
cv2

ap = argparse.PasoArgumento() ap.add_argument("-v", "--video", help="ruta del


archivo") ap.add_argument("-a", "--min-area", type=int, default=500, help="minimo
tamaño") args = vars(ap.parse_args())

if args.get("video", None) is None: vs


= VideoStream(src=0).start()
time.sleep(2.0)

else:
vs = cv2.CapturaVideo(args["video"])

primera_trama = None
while
True:
# text
trame_f = vs.read() trame_f = trame_f if args.get("video", None) is
None else trame_f[1] text = "no cipiado"
if trame_f is None:
break

trame_f = imutils.resize(trame_f, width=500) gray =


cv2.Color_cvt(trame_f, cv2.COLOR_BGR2GRAY) gray =
cv2.GaussianBlur(gray, (21, 21), 0)

if primera_trama is None:

89
primera_trama = gray
continue

trame_fDelta = cv2.absdiff(primera_trama, gray) thresh =


cv2.threshold(trame_fDelta, 25, 255, cv2.THRESH_BINARY)[1]

e thresh = cv2.dilate(thresh, None, iterationes=2) cnts =


cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)

for c in cnts: if cv2.contourArea(c) <


args["min_area"]:
continue

(x, y, w, h) = cv2.boundingRect(c)
cv2.rectangle(trame_f, (x, y), (x + w, y + h), (0, 255, 0), 2)
text = "Occupied"

cv2.putText(trame_f, "Room Status: {}".format(text), (10, 20),


cv2.Fuentes, 0.5, (0, 0, 255), 2)
cv2.putText(trame_f, datetime.datetime.now().strftime("%A %d %B %Y %I:%M:%S%p"),
(10, trame_f.shape[0] - 10), cv2.Fuentes, 0.35, (0, 0, 255), 1)

cv2.imagen_sh("seguridad Feed", trame_f)


cv2.imagen_sh("Thresh", thresh) cv2.imagen_sh("trame_f Delta",
trame_fDelta) key = cv2.waitKey(1) & 0xFF
if key == ord("q"):
break
90
vs.stop() if args.get("video", None) is None else vs.release() cv2.cerrarVentanas()

PROGRAMA DE ALERTA:

import smtplib from email.mime.text


import MIMEText

correo_origen='[email protected]' contrasena='Hpina2020'
correo_destino='[email protected]'

msg = MIMEText("Se ha detcetado movimiento inusual")


msg['Subject'] = 'ALERTA CCTV' msg['From'] =
correo_origen msg['To'] = correo_destino

server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls()


server.login(correo_origen,contrasena)
server.sendmail(correo_origen,correo_destino,msg.as_string())

print("mail enviado")

server.quit()

CODIGO INTERFAZ WEB:

WiFiServer server(80);

91
// Variable to store the HTTP request
String header;

// Auxiliar variables to store the current output state


char d0 = '0'; char d1 = '0'; char d2 = '0'; char d3
= '0'; char d4 = '0'; char d5 = '0'; char d6 = '0';

char h00 = '0'; char


h01 = '0'; char h02
= '0'; char h03 =
'0'; char h04 = '0';
char h05 = '0';
char h06 = '0';
char h07 = '0';
char h08 = '0';
char h09 = '0';
char h10 = '0';
char h11 = '0';
char h12 = '0';
char h13 = '0';
char h14 = '0';
char h15 = '0';
char h16 = '0';
char h17 = '0';
char h18 = '0';
char h19 = '0';
char h20 = '0';
char h21 = '0';
char h22 = '0';
char h23 = '0';

92
// Assign output variables to GPIO pins
const int output26 = 26; const int
output27 = 27; int dia=2; int hora=20;
int minuto=15; int segundos=0;

//int dia; int


hora_set;

// Current time unsigned long


currentTime = millis(); // Previous
time unsigned long previousTime =
0;
// Define timeout time in milliseconds (example: 2000ms = 2s) const
long timeoutTime = 2000;

hw_timer_t * timer = NULL; portMUX_TYPE timerMux =


portMUX_INITIALIZER_UNLOCKED;

void IRAM_ATTR onTimer() {


portENTER_CRITICAL_ISR(&timerMux);
//interruptCounter++;
segundos++; if(segundos>59)
{
minuto++; segundos=0;
}
if(minuto>59)
{
hora++; minuto=0;
}
if(hora>23)
93
{
dia++; hora=0;
}
if(dia>7)
{
dia=1;
}
portEXIT_CRITICAL_ISR(&timerMux);

void setup() {
Serial.begin(115200); timer =
timerBegin(0, 80, true);

// Initialize the output variables as outputs


//pinMode(output26, OUTPUT); pinMode(4,
OUTPUT); pinMode(19, OUTPUT);

// Set outputs to LOW


// digitalWrite(output26, LOW);

// Connect to Wi-Fi network with SSID and password


Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password); while
(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
94
// Print local IP address and start web server
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); server.begin();

void loop(){

timerAlarmWrite(timer, 1000000, true); timerAttachInterrupt(timer, &onTimer, true);


timerAlarmEnable(timer);
WiFiClient client = server.available(); // Listen for incoming clients
if (client) { // If a new client
connects, currentTime = millis(); previousTime =
currentTime;
Serial.println("New Client."); // print a message out in the serial port
String currentLine = ""; // make a String to hold incoming data from the client
while (client.connected() && currentTime - previousTime <= timeoutTime) { // loop while
the client"s connected
currentTime = millis(); if (client.available()) { // if there"s
bytes to read from the client, char c = client.read(); // read a
byte, then
Serial.write(c); // print it out the serial monitor
header += c; if (c == '\n') { // if the byte is a
newline character
// if the current line is blank, you got two newline characters in a row.
// that"s the end of the client HTTP request, so send a response:
if (currentLine.length() == 0) {
// HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
// and a content-type so the client knows what"s coming, then a blank line:
95
client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html");
client.println("Connection: close"); client.println();

if (header.indexOf("GET /00/d/on") >= 0) {d0 = '1'; }


else if (header.indexOf("GET /00/d/off") >= 0) {d0 = '0';}
else if (header.indexOf("GET /01/d/on") >= 0) {d1 = '1';}
else if (header.indexOf("GET /01/d/off") >= 0) {d1 = '0';} else if
(header.indexOf("GET /02/d/on") >= 0) {d2 = '1';} else if
(header.indexOf("GET /02/d/off") >= 0) {d2 = '0';} else if
(header.indexOf("GET /03/d/on") >= 0) { d3 = '1'; }
else if (header.indexOf("GET /03/d/off") >= 0) { d3 = '0'; }
else if (header.indexOf("GET /04/d/on") >= 0) { d4 = '1'; }
else if (header.indexOf("GET /04/d/off") >= 0) { d4 = '0'; }
else if (header.indexOf("GET /05/d/on") >= 0) { d5 = '1'; }
else if (header.indexOf("GET /05/d/off") >= 0) { d5 = '0'; }
else if (header.indexOf("GET /06/d/on") >= 0) { d6 = '1'; }
else if (header.indexOf("GET /06/d/off") >= 0) { d6 = '0'; }

else if (header.indexOf("GET /00/ma/on") >= 0) {h00 = '1';}


else if (header.indexOf("GET /00/ma/off") >= 0) {h00 = '0';} else
if (header.indexOf("GET /01/ma/on") >= 0) {h01 = '1';} else if
(header.indexOf("GET /01/ma/off") >= 0) {h01 = '0';} else if
(header.indexOf("GET /02/ma/on") >= 0) {h02 = '1';} else if
(header.indexOf("GET /02/ma/off") >= 0) {h02 = '0';} else if
(header.indexOf("GET /03/ma/on") >= 0) { h03 = '1'; } else if
(header.indexOf("GET /03/ma/off") >= 0) { h03 = '0'; } else if
(header.indexOf("GET /04/ma/on") >= 0) { h04 = '1'; } else if
(header.indexOf("GET /04/ma/off") >= 0) { h04 = '0'; } else if
(header.indexOf("GET /05/ma/on") >= 0) { h05 = '1'; } else if
(header.indexOf("GET /05/ma/off") >= 0) { h05 = '0'; } else if
(header.indexOf("GET /06/ma/on") >= 0) { h06 = '1'; } else if
96
(header.indexOf("GET /06/ma/off") >= 0) { h06 = '0'; } else if
(header.indexOf("GET /07/ma/on") >= 0) { h07 = '1'; } else if
(header.indexOf("GET /07/ma/off") >= 0) { h07 = '0'; } else if
(header.indexOf("GET /08/ma/on") >= 0) { h08 = '1'; } else if
(header.indexOf("GET /08/ma/off") >= 0) { h08 = '0'; } else if
(header.indexOf("GET /09/ma/on") >= 0) { h09 = '1'; } else if
(header.indexOf("GET /09/ma/off") >= 0) { h09 = '0'; } else if
(header.indexOf("GET /10/ma/on") >= 0) { h10 = '1'; }

else if (header.indexOf("GET /10/ma/off") >= 0) { h10 = '0'; }


else if (header.indexOf("GET /11/ma/on") >= 0) { h11 = '1'; }
else if (header.indexOf("GET /11/ma/off") >= 0) { h11 = '0'; }
else if (header.indexOf("GET /12/ma/on") >= 0) { h12 = '1'; }
else if (header.indexOf("GET /12/ma/off") >= 0) { h12 = '0'; } else
if (header.indexOf("GET /13/ma/on") >= 0) { h13 = '1'; } else if
(header.indexOf("GET /13/ma/off") >= 0) { h13 = '0'; } else if
(header.indexOf("GET /14/ma/on") >= 0) { h14 = '1'; } else if
(header.indexOf("GET /14/ma/off") >= 0) { h14 = '0'; } else if
(header.indexOf("GET /15/ma/on") >= 0) { h15 = '1'; } else if
(header.indexOf("GET /15/ma/off") >= 0) { h15 = '0'; } else if
(header.indexOf("GET /16/ma/on") >= 0) { h16 = '1'; } else if
(header.indexOf("GET /16/ma/off") >= 0) { h16 = '0'; } else if
(header.indexOf("GET /17/ma/on") >= 0) { h17 = '1'; } else if
(header.indexOf("GET /17/ma/off") >= 0) { h17 = '0'; } else if
(header.indexOf("GET /18/ma/on") >= 0) { h18 = '1'; } else if
(header.indexOf("GET /18/ma/off") >= 0) { h18 = '0'; } else if
(header.indexOf("GET /19/ma/on") >= 0) { h19 = '1'; } else if
(header.indexOf("GET /19/ma/off") >= 0) { h19 = '0'; } else if
(header.indexOf("GET /20/ma/on") >= 0) { h20 = '1'; } else if
(header.indexOf("GET /20/ma/off") >= 0) { h20 = '0'; } else if
(header.indexOf("GET /21/ma/on") >= 0) { h21 = '1'; } else if

97
(header.indexOf("GET /21/ma/off") >= 0) { h21 = '0'; } else if
(header.indexOf("GET /22/ma/on") >= 0) { h22 = '1'; } else if
(header.indexOf("GET /22/ma/off") >= 0) { h22 = '0'; } else if
(header.indexOf("GET /23/ma/on") >= 0) { h23 = '1'; } else if
(header.indexOf("GET /23/ma/off") >= 0) { h23 = '0'; }

// Display the HTML web page


client.println("<!DOCTYPE html><html>");
client.println("<head><meta name=\"viewport\"
content=\"width=device-width,
initial-scale=1\">");
client.println("<link rel=\"icon\" href=\"data:,\">");
// CSS to style the on/off buttons
// Feel free to change the background-color and font-size attributes to fit your
preferences
client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px
auto; text-align: center;}"); client.println(".button { background-color: #4CAF50; border:
none; color: white;
padding: 10px 25px;");
client.println("text-decoration: none; font-size: 20px; margin: 2px; cursor:
pointer;}"); client.println(".button2 {background-color: #555555;}</style></head>");

// Web Page Heading client.println("<body><h1>CONFIGURACION DE


ALARMA CCTV HPINA</h1>"); client.println("<body><h2>SELECCIONE LOS HORARIOS
EN LOS CUALES SE ACTIVARAN LAS ALARMAS</h2>");

//CONFIGURACION DE DÍAS

//LUNES
// Display current state, and ON/OFF buttons for GPIO 26
// client.println("<body><h2>DIAS</h2>");

98
client.println("<body><h2>_________________________________</h2>");

// client.println("<p>LUNES - State " + lunes01 + "</p>");


// If the lunes01 is off, it displays the ON button
if (d0=='0') {client.println("<a href=\"/00/d/on\"><button
class=\"button\">LUNES</button></a>");} else {client.println("<a
href=\"/00/d/off\"><button class=\"button button2\">LUNES</button></a>");}

99
if '0') "><button class=\"button\ "><button class=\"button button2
"><button "><button
(d1== {client.println("<a href=\"/01/d/on\
">MARTES</button></a>");} else {client.println("<a href=\"/01/d/off\
\">MARTES</button></a>");}
if (d2== '0') {client.println("<a href=\"/02/d/on\
class=\"button\">MIERCOLES</button></a>");} else {client.println("<a href=\"/02/d/off\
class=\"button button2\">MIERCOLES</button></a>");} if (d3== '0')
{client.println("<a href=\"/03/d/on\"><button
class=\"button\">JUEVES</button></a>");} else {client.println("<a href=\"/03/d/off\"><button
class=\"button button2\">JUEVES</button></a>");} if (d4== '0')
{client.println("<a href=\"/04/d/on\"><button
class=\"button\">VIERNES</button></a>");} else {client.println("<a href=\"/04/da/off\"><button
class=\"button button2\">VIERNES</button></a>");}
if (d5== '0') {client.println("<a href=\"/05/d/on\"><button
class=\"button\">SABADO</button></a>");} else {client.println("<a href=\"/05/d/off\"><button
class=\"button button2\">SABADO</button></a>");} if (d6== '0')
{client.println("<a href=\"/06/d/on\"><button
class=\"button\">DOMINGO</button></a>");} else {client.println("<a href=\"/06/d/off\"><button
class=\"button button2\">DOMINGO</button></a>");}
client.println("<p></p>");

//h
// Display current state, and ON/OFF buttons for GPIO 27

client.println("<body><h2>____________________________________________________</h2
>");
//client.println("<p>h - State " + h00 + "</p>");
// If the h00 is off, it displays the ON button
if (h00=='0') {client.println("<a href=\"/00/ma/on\"><button
class=\"button\">00:00</button></a>");} else {client.println("<ahref=\"/00/ma/off\"><button
class=\"button button2\">00:00</button></a>");}
if (h01== '0') {client.println("<a href=\"/01/ma/on\"><button
class=\"button\">01:00</button></a>");} else {client.println("<ahref=\"/01/ma/off\"><button
class=\"button button2\">01:00</button></a>");}
if (h02== '0') {client.println("<a href=\"/02/ma/on\"><button
class=\"button\">02:00</button></a>");} else {client.println("<ahref=\"/02/ma/off\"><button
class=\"button button2\">02:00</button></a>");}

100
if '0') "><button class=\"button\ "><button class=\"button button2
"><button "><button
if (h03== '0') {client.println("<a href=\"/03/ma/on\"><button
class=\"button\">03:00</button></a>");} else {client.println("<ahref=\"/03/ma/off\"><button
class=\"button button2\">03:00</button></a>");}

(h04== {client.println("<a href=\"/04/ma/on\


">04:00</button></a>");} else {client.println("<a href=\"/04/ma/off\
\">04:00</button></a>");}
if (h05== '0') {client.println("<a href=\"/05/ma/on\
class=\"button\">05:00</button></a>");} else {client.println("<ahref=\"/05/ma/off\
class=\"button button2\">05:00</button></a>");}
if (h06== '0') {client.println("<a href=\"/06/ma/on\"><button
class=\"button\">06:00</button></a>");} else {client.println("<ahref=\"/06/ma/off\"><button
class=\"button button2\">06:00</button></a>");}
if (h07== '0') {client.println("<a href=\"/07/ma/on\"><button
class=\"button\">07:00</button></a>");} else {client.println("<ahref=\"/07/ma/off\"><button
class=\"button button2\">07:00</button></a>");}
if (h08== '0') {client.println("<a href=\"/08/ma/on\"><button
class=\"button\">08:00</button></a>");} else {client.println("<ahref=\"/08/ma/off\"><button
class=\"button button2\">08:00</button></a>");}
if (h09== '0') {client.println("<a href=\"/09/ma/on\"><button
class=\"button\">09:00</button></a>");} else {client.println("<ahref=\"/09/ma/off\"><button
class=\"button button2\">09:00</button></a>");}
if (h10== '0') {client.println("<a href=\"/10/ma/on\"><button
class=\"button\">10:00</button></a>");} else {client.println("<ahref=\"/10/ma/off\"><button
class=\"button button2\">10:00</button></a>");}
if (h11== '0') {client.println("<a href=\"/11/ma/on\"><button
class=\"button\">11:00</button></a>");} else {client.println("<ahref=\"/11/ma/off\"><button
class=\"button button2\">11:00</button></a>");}
client.println("<p></p>");
if (h12== '0') {client.println("<a href=\"/12/ma/on\"><button
class=\"button\">12:00</button></a>");} else {client.println("<ahref=\"/12/ma/off\"><button
class=\"button button2\">12:00</button></a>");}
if (h13== '0') {client.println("<a href=\"/13/ma/on\"><button
class=\"button\">13:00</button></a>");} else {client.println("<ahref=\"/13/ma/off\"><button
class=\"button button2\">13:00</button></a>");}
if (h14== '0') {client.println("<a href=\"/14/ma/on\"><button
class=\"button\">14:00</button></a>");} else {client.println("<ahref=\"/14/ma/off\"><button
class=\"button button2\">14:00</button></a>");}
if (h15== '0') {client.println("<a href=\"/15/ma/on\"><button

101
if '0') "><button class=\"button\ "><button class=\"button button2
"><button "><button
class=\"button\">15:00</button></a>");} else {client.println("<ahref=\"/15/ma/off\"><button
class=\"button button2\">15:00</button></a>");}
if (h16== '0') {client.println("<a href=\"/16/ma/on\"><button
class=\"button\">16:00</button></a>");} else {client.println("<ahref=\"/16/ma/off\"><button
class=\"button button2\">16:00</button></a>");}
(h17== {client.println("<a href=\"/17/ma/on\
">17:00</button></a>");} else {client.println("<a href=\"/17/ma/off\
\">17:00</button></a>");}
if (h18== '0') {client.println("<a href=\"/18/ma/on\
class=\"button\">18:00</button></a>");} else {client.println("<ahref=\"/18/ma/off\
class=\"button button2\">18:00</button></a>");}
if (h19== '0') {client.println("<a href=\"/19/ma/on\"><button
class=\"button\">19:00</button></a>");} else {client.println("<ahref=\"/19/ma/off\"><button
class=\"button button2\">19:00</button></a>");}
if (h20== '0') {client.println("<a href=\"/20/ma/on\"><button
class=\"button\">20:00</button></a>");} else {client.println("<ahref=\"/20/ma/off\"><button
class=\"button button2\">20:00</button></a>");}
if (h21== '0') {client.println("<a href=\"/21/ma/on\"><button
class=\"button\">21:00</button></a>");} else {client.println("<ahref=\"/21/ma/off\"><button
class=\"button button2\">21:00</button></a>");}
if (h22== '0') {client.println("<a href=\"/22/ma/on\"><button
class=\"button\">22:00</button></a>");} else {client.println("<ahref=\"/22/ma/off\"><button
class=\"button button2\">22:00</button></a>");}
if (h23== '0') {client.println("<a href=\"/23/ma/on\"><button
class=\"button\">23:00</button></a>");} else {client.println("<ahref=\"/23/ma/off\"><button
class=\"button button2\">23:00</button></a>");}

client.println("</body></html>");

102
if '0') "><button class=\"button\ "><button class=\"button button2
"><button "><button
// The HTTP response ends with another blank line
client.println();
// Break out of the while loop
break;
} else { // if you got a newline, then clear currentLine
currentLine = "";
}

103
} else if (c != '\r') { // if you got anything else but a carriage return character,
currentLine += c; // add it to the end of the currentLine
}
}
}
// Clear the header variable
header = "";
// Close the connection
client.stop();
Serial.println("Client disconnected.");
Serial.println("");
}

alarma();

Serial.print("día: ");Serial.print(dia);Serial.print(" hora:


");Serial.print(hora);Serial.print(" minuto: ");Serial.print(minuto);Serial.print(" seg:
");Serial.println(segundos);

void alarma()
{
switch (dia)
{ case 1:
if(d0=='1'){comp_hora();}
break; case 2:
if(d1=='1'){comp_hora();}
break;

104
case 3:
if(d2=='1'){comp_hora();}
break; case 4:
if(d3=='1'){comp_hora();}
break; case 5:
if(d4=='1'){comp_hora();}
break; case 6:
if(d5=='1'){comp_hora();}
break; case 7:
if(d6=='1'){comp_hora();}
break;
}
}

void comp_hora()
{
switch (hora)
{
case 0:
if(h00=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 1:
if(h01=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 2:
if(h02=='1'){digi
talWrite(19,
LOW);di
gitalWrite(4,

105
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 3:
if(h03=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 4:
if(h04=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 5:
if(h05=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 6:
if(h06=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 7:
if(h07=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 8:
if(h08=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 9:
if(h09=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 10:
if(h10=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;

106
case 11:
if(h11=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 12:
if(h12=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 13:
if(h13=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 14:
if(h14=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 15:
if(h15=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 16:
if(h16=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 17:
if(h17=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 18:
if(h18=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 19:
if(h19=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
107
break;
case 20:
if(h20=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 21:
if(h21=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 22:
if(h22=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
case 23:
if(h23=='1'){digitalWrite(19, LOW);digitalWrite(4,
LOW);Serial.println("ALARMA");}else{digitalWrite(19, HIGH);digitalWrite(4, HIGH);}
break;
}

}
//CODIGO ENVIO DE ALERTA SMS void envioMensaje() //FUNCION PARA
ENVIO DE MENSAJES DE TEXTO
{
Serial2.print("AT+CMGF=1\r"); // comando AT para configurar el Serial2 en modo texto
delay(200);
Serial2.println("AT + CMGS = \"0986780896\"");//reemplzar por el número a enviar el
mensaje
delay(200);
Serial2.println("HOLA");// Reemplzar por el texto a enviar delay(200);
//Finalizamos este comando con el caracter de sustitución (→) código Ascii 26 para el
envio del SMS
Serial2.println((char)26);
delay(200);
Serial2.println();
108
}
Guía de usuario de aplicación android https://drive.google.com/drive/folders/10GpuiGn-

DkQSgWLsFdwzu5G8U8R0nVM3?usp=sharing

Link de la apk https://drive.google.com/file/d/1ZbNMvnWaesmEj2ViUHeFYfdbDfy-

SSvp/view?usp=sharing

Configuración de la aplicación android https://drive.google.com/drive/folders/10-

4xbt2_2NQ0scpki1CWDLw4WgBXJayG?usp=sharing

109

También podría gustarte