Diseño e implementación de un sistema de seguridad mediante
notificaciones de mensajes de texto y notificaciones a correo
electrónico
Design and implementation of a security system using text message notifications and
email notifications
Leandro Esteban García Rodríguez, Gonzalo Andrés Chávez Beltrán
Director
Lic. Hermes Javier Eslava Blanco
Universidad Distrital Francisco José de Caldas
Resumen
En el presente artículo se expone el estudio e implementación de un sistema de seguridad, que utiliza
notificaciones de mensajes de texto y correos electrónicos, dicho diseño se realizó en un prototipo el cual
consta de una red de sensores cuyos parámetros a medir son humo, apertura, golpes y movimiento, variables
que son determinantes para un adecuado monitoreo; la parte de control de los sensores se realizó por medio
de un microcontrolador ARDUINO UNO, que está comunicado mediante el puerto serial a una tarjeta
RASPBERRY PI; en la que se encuentra un servidor web encargado de enviarnos las alertas de seguridad
cuando alguno de los sensores haya sido activado. En cuanto al diseño del servidor fue necesario determinar
que placa se acomodaba mejor a las necesidades del sistema de seguridad. Dentro de los resultados se
registra una comparación de precios y rendimiento los cuales fueron clave para que se lograra el correcto
funcionamiento de éste sistema.
Palabras clave: sistema de seguridad, servidor web, sensores, Raspberry pi.
Abstract
In this paper the study and implementation of a security system that uses notifications of text messages and
emails is exposed, this design was performed on a prototype which consists of a network of sensors, the
parameters to be measured are smoke, opening, strokes and movement, variables that determine adequate
monitoring; the control part of the sensors was performed by an ARDUINO UNO microcontroller, which
is connected via the serial port to a RASPBERRY PI board; in which you can be found a web server
responsible for sending security alerts when any of the sensors has been activated. Regarding the server
design was necessary to determine which board is accommodated to the needs of the security system.
Among the results we find a price comparison and performance which were key to the proper functioning
of the system is achieved. This project was conducted with the help of TELETECNO research group of
University Francisco José de Caldas.
Keywords: security system, web server, sensors, Raspberry Pi.
1. Introducción
Teniendo en cuenta que, aunque los hurtos en propiedades privadas como casas, apartamentos y locales
comerciales ha disminuido, se ha demostrado que no basta con una persona encargada de la seguridad de
todo un conjunto residencial, ya que ésta no está capacitada en su totalidad para brindar la vigilancia
adecuada. Son muchas las modalidades usadas por los criminales para violentar la seguridad de un recinto,
entre ellas el uso de llaves maestras, la violación de cerraduras y la ruptura de ventanas. Según datos del
Centro de Estudio y Análisis en Convivencia y Seguridad Ciudadana de la Secretaría de Gobierno de Bogotá
el hurto a residencias disminuyó en un 27,3% en cuanto a residencias y un 7,1% en locales comerciales
entre 2014 y 2015. La principal premisa con la cual se realizó el diseño de un sistema de seguridad es brindar
confianza al propietario de que su inmueble se encuentra asegurado; dicho sistema aprovecha los beneficios
que proporciona un ordenador de bajo costo, así como también la facilidad que brinda internet para
manipular y transmitir datos. [1]
Con el auge de los hosting ( que es el servicio que provee a los usuarios de Internet un sistema para poder
almacenar información, imágenes, vídeo, o cualquier contenido accesible vía web.), muchos dominios web
ofrecen éste alojamiento por un bajo costo (oscilante entre 2 y 14 € por mes, dependiendo del espacio y la
cantidad de correos corporativos asociados), pero estos dominios no ofrecen las herramientas necesarias
para el diseño del sistema de seguridad, además su principal desventaja radica en su estabilidad, un servidor
de éste tipo está propenso a caerse; por otra parte el servidor propio permite gestionar mucho más contenido,
así como también acceder a bases de datos y entrelazar aplicaciones y recursos útiles.
En éste caso el servidor fue alojado en una tarjeta de desarrollo RASPBERRY PI, la cual podría describirse
como un ordenado de bajo costo, o un computador de placa reducida; la gran ventaja de ésta es la cantidad
de aplicativos libres que pueden ser instalados dependiendo de la tarea que se vaya a desarrollar, en ella
pueden ser trabajados lenguajes y herramientas libres.
Las alertas deben ser tomadas por medio de una red de sensores, para ello se usaron sensores tales que
puedan monitorear las variables deseadas (Humo, apertura, ruptura en la venta, movimiento), Para ello se
utiliza un microcontrolador ARDUINO UNO que sensará las diferentes variables. En las variables como el
humo se utilizó un sensor detector de monóxido de carbono, para monitorear el estado de una ventana en
la que se detectará si esta fue rota o si tuvo algún movimiento brusco se usó un sensor de vibración, para el
detectar movimiento un sensor PIR y para el de apertura un sensor magnético.
2. Fundamentos teóricos para Diseño del sistema
El sistema fue desarrollado principalmente en RASPBERRI PI B+, donde se encontrará el servidor y será
el controlador en la gestión de las bases de datos como en él envió de las notificaciones, adicionalmente
contará con un microcontrolador ARDUINO UNO, que es el encargado de monitorear los sensores y enviar
los datos al servidor en el caso de que alguno fuese activado. En la figura 2-1 se observa un esquema general
del sistema.
FIGURA 2-1: Diagrama del sistema
El diseño del sistema se basa en la topología de red estrella. En una red de tipo estrella todos los dispositivos
se encuentran conectados a un punto central, el cual se encarga de establecer comunicación entre ellos, es
decir toda comunicación debe pasar por una estación central y las demás estaciones no están conectadas
entre sí, ésta topología tiene similitud con la topología bus, con la diferencia que en la estrella la estación
central es la única que puede leer los mensajes transmitidos a las demás estaciones.
La gran ventaja de éste tipo de red es que otros dispositivos pueden ser conectados de manera más fácil
logrando que la configuración pueda ser más rápida, además que en ella se pueden detectar de manera más
eficientes los fallos, en contraparte, las redes comunicadas de ésta forman tienen la desventaja de que si la
estación central falla, toda la red se verá seriamente resentida. [2][3]
2.1 Raspberry Pi B+
Posee un procesador ARM ARM1176JZF-S con velocidad de reloj de 700MHz, un procesador gráfico, 512
MB de memoria RAM y la posibilidad de tener un almacenamiento externo. El costo de montar un servidor
en ésta plataforma es muy bajo en comparación de contratar un servicio de Hosting que no proporcionará
los recursos necesarios, además de brindar la libertad de usar cualquier sistema y herramienta sin
limitaciones. En la figura 1-6 se puede observar una placa reducida RASPBERRY PI 2. [4][5]
Figura 2-2: Raspberry pi 2.[5]
2.1.1 Raspbian.
Raspbian es un sistema operativo libre para la plataforma RASPBERRY, se deriva de Linux, basado en
unix, en éste entorno se promueve la programación en plataformas como Python. Viene con unos 35 mil
paquetes, precompilados, de forma tal que sea fácil instalar el que necesitemos en la RASPBERRY PI. Se
puede modificar comandos mediante terminal.
2.1.2 Python
Python es un entorno de programación multiparadigma, es decir puede permitir varios estilos de
programación (a objetos, imperativa, funcional). El intérprete de Python estándar incluye un modo
interactivo en el cual se escriben las instrucciones en una especie de intérprete de comandos: las expresiones
pueden ser introducidas una a una, pudiendo verse el resultado de su evaluación inmediatamente, lo que da
la posibilidad de probar porciones de código en el modo interactivo antes de integrarlo como parte de un
programa. Esto resulta útil tanto para las personas que se están familiarizando con el lenguaje como para
los programadores más avanzados.
Existen otros programas, tales como IDLE, bpython o IPython,17 que añaden funcionalidades extra al modo
interactivo, como el autocompletado de código y el coloreado de la sintaxis del lenguaje. [6][7]
2.2 Sensado de variables.
2.2.1 Arduino uno.
Es una plataforma de programación de tipo Open Source que se basa en el uso fácil de Software y Hardware
libre, a través de los años Arduino ha sido el cerebro de miles de proyectos, a partir de una placa electrónica
basada en el ATmega328P. Cuenta con 14 pines digitales de entrada / salida (de los cuales 6 se podrán
utilizar como salidas PWM), 6 entradas analógicas, un cristal de cuarzo de 16 MHz, una conexión USB, un
conector de alimentación, un controlador de ICSP (In Circuit Serial Programing) y un botón de reinicio. En
la figura 2-3 se observa un arduino uno el cual fue utilizado en el desarrollo del sistema de seguridad, ye
en la tabla 2-1 una comparación entre las características de las dos plataformas que se usaron. [8]
Figura 2-3: Arudino uno [8]
Tabla 2-1: Tabla comparativa entre arduino y Raspberry [9]
Sistema.
Características.
Arduino Raspberry Pi
Precio en dólares.
$30 $35
Tamaño 7.6 cm*1.9 cm*6.4cm
8.6 cm*5.4 cm*1.7 cm
Memoria 0.002 MB 512 MB
Velocidad de reloj
16 MHz 700 MHz
On Board Network
Ninguna 10/100 wired Ethernet RJ45
Multitarea No Si
Voltaje de entrada
7 a 12 V 5 V
Memoria Flash 32 KB Tarjeta SD( 2 a 16 G)
Puertos USB Uno Dos
Sistema operativo
Ninguno Distribuciones de Linux
Entorno de desarrollo integrado(IDE)
Arduino Scratch,IDLE, cualquiera con soporte Linux
2.2.2 Sensor MQ.
La serie MQ de sensores de gas utilizan un pequeño calentador en el interior con un sensor electro-químico. Son
sensibles para una gama de gases y se utilizana en interiores a temperatura ambiente. Éstos pueden ser calibrados
gracias a la resistencia de carga presente en el módulo, pero se necesita saber con cual tipo de gas se está
trabajando, además de su concentración. En la tabla 1-2 se encuentran relacionados algunos sensores MQ y el
gas que detectan.y en la figura 2-4 el esquema de un sensor de éste tipo. [10]
Tabla 2-2: Relación de sensores MQ.[10]
Sensor Sensibilidad
MQ2 Metano, butano, humo
MQ3 Alcohol, etanol, humo
MQ4 Metano, gas natural
MQ5 Gas natural
MQ6 Gas licuado de petróleo, gas butano
MQ7 Monóxido de carbono
MQ8 Gas de hidrógeno
MQ9 Monóxido de carbono, gases inflamables
MQ131 Ozono
Figura 2-4: Circuito de conexión del MQ-7 sensor usado. [10]
2.2.3 Sensor PIR (Passive Infrared).
Los detectores PIR o Pasivo Infrarrojo, se caracterizan principalmente por su reducido tamaño, bajo costo,
indiferencia a la luz natural, bajo consumo de energía y fácil manejo. Reaccionan sólo ante determinadas
fuentes de energía tales como el calor del cuerpo humano o animales. Contiene un filtro llamado lente de
Fresnel, que centra las señales infrarrojas sobre el elemento, si estas cambian, el amplificador cambia. En la
figura 2-5 un sensor PIR y en la 2-6 su esquema interno. [11] [12]
Figura 2-5: Sensor PIR.[11]
Figura 2-6: Esquema interno de un PIR [12]
2.2.4 Sensor de vibración
El sensor de la vibración SW-420, es un dispositivo con un Comparador LM393 que utiliza para detectar si
hay alguna vibración o golpe brusco que va más allá de un nivel adecuado. El nivel puede ser ajustado por el
potenciómetro a bordo. Cuando ni hay ninguna vibración, la lógica de salida del módulo se encuentra en BAJO
y se indica en la señal de luz del LED incorporado, al igual que cuando se detecta una vibración. El módulo
cuenta con un elemento piezoeléctrico el cual es el encargado de detectar la vibración. En la figura 2-5 se
puede ver esquema del sensor mencionado. Un sensor de vibración es un dispositivo que reacciona ante
movimientos bruscos, golpes, o vibraciones, pero no a movimientos constantes o progresivos. En el caso de
detectar una vibración genera una señal digital, que cesa al finalizar la vibración.
El principio de funcionamiento es muy sencillo. El dispositivo dispone de un cilindro, con dos contactos. Uno
de los contactos está unido a una varilla metálica ubicada en el centro del cilindro. A su alrededor, el otro
contacto se arrolla a su alrededor en forma de muelle.
En caso de una vibración, el muelle se deforma por efecto de la inercia, estableciendo contacto en varios
puntos con el contacto fijo. De esta forma, se establece una conexión eléctrica entra ambos contactos, que
puede ser leída con un microcontrolador. [13]
Figura 2-5: Esquemático del sensor SW-420[13]
2.2.5 Sensor magnético
Un sensor que detecta campos magnéticos que provocan los imanes o las corrientes eléctricas, básicamente en
forma de interruptor que consiste en dos laminas ferromagnéticas que se atraen y hacen contacto cuando están
en presencia de un campo magnético cerrando el circuito, debido a que es un interruptor, éste no necesita
ningún tipo de acondicionamiento. La figura 2-6 muestra el símbolo del sensor [14]
Figura 2-6: Símbolo del sensor [14]
2.3 Acondicionamiento de los sensores
Para obtener las lecturas deseadas en el microcontrolador es necesario realizar un acondicionamiento para la
señal de salida de cada uno de los sensores, en el caso del sensor de apertura, éste acondicionamiento puede
ser obviado, ya que éste se comporta como un simple interruptor, en cuanto a los otros tres sensores, se puede
notar que dos de ellos son lógicos, es decir tienen dos estados; uno en alto (1) y otro en bajo (0), éste es el
caso del sensor de golpe y el sensor PIR; por otro lado el sensor de humo es de salida análoga; esto significa
que a distinta concentración de gas o PPM (partes por millón) el sensor arrojará un valor distinto de voltaje;
para éste caso, desde el microcontrolador se asignará un valor de voltaje de referencia, a partir de éste valor,
se determinará si la concentración de gas o humo es peligrosa y pueda ocasionar algún tipo de contratiempo
(incendio en éste caso). Aunque el sensor de golpe y PIR sean de salida lógica, ellos deben tener un
acondicionamiento para trabajar en un rango adecuado de valores que sean de fácil lectura para el
microcontrolador.
Para el acondicionamiento del sensor de vibración encontramos un circuito comparador, que se compone de
un amplificador operacional LM-393, el umbral puede ser ajustado mediante la resistencia variable que hace
parte del módulo, en la figura 2-7 se encuentra el circuito comparador utilizado en la mayoría de módulos de
sensores utilizados.
Figura 2-7: Circuito comparador utilizado por los sensores. [15]
El circuito hace una comparación entre los voltajes de entrada del amplificador operacional, en la entrada
no inversora se obtiene la señal del transductor, mientras que en la no inversora un voltaje de referencia, el
cual es ajustado con la resistencia variable del módulo, cuando la entrada no inversora es mayor que la
inversora por una cantidad mayor a una pequeña fracción de voltio, la salida salta a un voltaje de saturación
positivo estable, es decir un uno lógico, o sea que el sensor no se ha activado, adicionalmente a la salida se
encuentra un LED el cual indica el estado del sensor.
En el sensor PIR se cuentan con dos resistencias variables con las cuales se puede ajustar la distancia de
operación o sensibilidad, y con la otra el tiempo en el cual se envía el pulso, la sensibilidad de éste módulo
es a la radiación, gracias al lente de Fresnel se le puede dar un rango de operación más alto. Al igual que el
sensor de vibración el circuito de comparación se basa en un LM 393.
2.4 Características de los sensores.
A continuación se presentará en la tabla 2-3 las principales características de funcionamiento de los sensores
a utilizer
.
Tabla 2-3: Características de los sensores. [16][17][18]
Sensor Parámetro
PIR (HC-SR501)
HUMO (MQ7)
VIBRACIÓN (SW-420)
APERTURA
Voltaje de operación
5V-20V±0.1
5V±0.1
5V±0.1
5V-20V
Voltaje de calentamiento (Alto)
3.3V
5V±0.1
3.3V
N.A.
Voltaje de calentamiento (Bajo)
0V
1.4V±0.1
1.4V±0.1
N.A.
Consumo de corriente
50µA
60mA
15mA
10mA
Potencia
25mW
350mW
75mW
50mW
Resistencia
0-20KΩ
0-20KΩ
0-20KΩ
N.A.
Sensibilidad
2m-7m en un ángulo cónico de
100°
100-330 ppm*
360° de inclinación
N.A.
Delay
5s-300s
60s-90s
5s-200s
N.A.
*Ppm: (partes por millón): es una unidad de medida con la que se mide la concentración. Se refiere a la cantidad de
unidades de una determinada sustancia (agente, etc) que hay por cada millón de unidades del conjunto.
3 Implementación.
El servidor web se alojó dentro de una placa RASPBERRY, el tipo de servidor que se instala es LAMP
(Linux + Apache + MySQL + PHP), mediante la consola de raspbian se dan las órdenes para que se instalen
los paquetes necesarios. Apache es el servidor HTTP libre en lenguajes basados en UNIX, PHP nos
permitirá la generación de páginas de una manera dinámica y MySQL facilitará el tratamiento de
información mediante bases de datos.
A pesar de que haya muchas maneras de montar un servidor en RASPBERRY, el servidor LAMP es el que
mejor se acomoda al diseño, por ser ligero y además la simplicidad y solidez que éste tiene. Además del
servidor LAMP se deberán instalar servicios complementarios como MUTT, el cual es un cliente libre de
correo electrónico, Mutt se enfoca en ser un Mail User Agent, y fue originalmente escrito sólo para ver
correo. Debido a esto, la recuperación de correo, características de envío y filtrado implementadas
posteriormente son básicas comparadas con otras aplicaciones. La mayoría de las instalaciones de Mutt
dependen de programas externos para estas tareas.
3.1 Instalación De Servidores.
3.1.1 Servidor Local
En la creación de las páginas web se necesita un lugar propicio donde se deberán alojar los archivos web,
este proceso se podría realizar en un hosting. Esta función del hosting presta el servicio para guardar estos
archivos y subirla a la red como un valor, pero el tiempo que termine en realizarla, se hace más
recomendable iniciar un servidor local que puede ser cualquier ordenador con un sistema operativo y una
serie de aplicaciones instaladas. Alojándola en un servidor local se podrá corregir cualquier error y tenerla
en perfectas condiciones para después pueda ser alojada en el servidor ftp y sea online.
3.1.1.1 Aplicaciones instaladas en un servidor local:
Sistema operativo (SO) : servirá de plataforma para instalación de las aplicaciones. Podría ser
Windows que es normalmente la más usada, pero por demanda usaremos Raspian Jessie basado en
Debian Linux.
Apache: es una aplicación que crea un servidor http de código abierto para sistemas UNIX y
Windows, un sistema robusto, de grado comercial y open source (código abierto). [19]
SQL: para la transición de datos necesitamos una memoria o un sistema que guarde estos datos
para después ser consultados y tener actualizada la información que se maneja, para poder resolver
este problema se creó las bases de datos y toda su arquitectura. Así para interactuar con los datos
de los formularios y datos recibidos con la base de datos usa consultas, estas se hacen para acceder
a la base de datos, pero para ello se usan los lenguajes de manipulación de datos la más utilizada
es la SQL, aunque existen varios DML son los usados por bases de datos IMS/DL1, CODASYL u
otras. Es la aplicación que usa un lenguaje de consulta que crea, modifica y consulta las bases de
datos mediante QUERYS soportados por apache.
PHP: Éste tipo de lenguaje puede programar scripts desde el lado del servidor, lo cual puede ser
útil para recopilar los datos de un formulario y para generar páginas de contenido dinámico. PHP
puede ser utilizado en todos los sistemas operativos.
3.1.2 Configurando el Servidor Local
Para no tener problemas en sus librerías y propio sistema cause conflicto en las instalaciones necesarias, se
debe actualizar la Raspberry debidamente conectada a internet, en este caso esta comunicada por cable
Ethernet. Esto se realiza mediante comandos en la terminal del ordenador Raspberry, estos comandos son:
sudo apt-get update
sudo apt-get upgrade
Ya actualizada y lista conectada a internet, se instala el apache por su poder y sencillez en la creación del
servidor, adicional los módulos puede ser usado como servidor dinámico utilizando php.
3.1.3 Instalación de apache y php
En la terminal de la Raspberry, llamada LXTerminal se instala en primer lugar apache2,
Sudo apt-get install apache2
Se deben añadir varios módulos y más Para que este pueda ser un sitio dinámico con sus funciones php, se
instala php y las librerías necesarias, para esto se debe ejecutar estos comandos:
sudo apt-get install php5 libapache2-mod-php5 libapache2-mod-perl2 php5-cli php5-cgi php5-common
php5-curl
3.1.4 Instalación de MySQL
Para el uso de las bases de datos, se debe referenciar Mysql como el programa que gestiona aquellas bases
de datos que se utilizara. Para ello se instala mediante comandos en la terminal:
sudo apt-get install mysql-server mysql-client php5-mysql
Siguiente a ello, la aplicación solicitara que se le coloque una serie de medidas de seguridad. Como
contraseña, nombre de usuario y unas restricciones.
3.1.5 Instalación del PhpMyadmin
Para administrar estas bases de datos, phpmyadmin es un gestor muy sencillo para las bases de datos y la
instalamos con este comando
sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
Al igual que el MySQL el pedirá contraseña que sea agregada por el usuario, ya instalado todas las
aplicaciones. Se debe reiniciar la Raspberry, se ejecuta con este comando.
Sudo reboot
3.1.6 Agregando al servidor los archivos de página WEB
Ya instalado el servidor con sus respectivas herramientas con éxito, se debe agregar la página web hecha
para la verificación de los datos y ser una interfaz con el usuario para que este pueda acceder a ella y pueda
conocer su información así como habilitar y deshabilitar el sistema.
Generalmente este compendio de archivos que forman una página web, en el sistema operativo rasbian es
la carpeta: /var/www. En la carpeta www se agregan estos archivos, una forma de verificar, es especificar
la ip de la Raspberry acompañada de la dirección del directorio de los archivos, ejemplo:
“ http://192.168.0.7/html/ProyectoWeb”.
3.2 Estructura de directorio y archivos.
Previo al desarrollo de un sitio web es necesario preparar la estructura de archivos y carpetas con el
fin de obtener un rápido y fácil acceso a los datos y aplicaciones que se necesitan, en el caso del sitio
web desarrollado para el sistema de seguridad, la tabla 3-1 muestra la estructura necesaria
para el funcionamiento de dicho sistema.
CACHE
CSS
MOVIL
PC1
PCHD
TABLET
ESTILOS
TEMPLATES
PUBLIC
ACTIVAR
DESACTIVAR
INDEX
IMG
INCLUDES
LIBS
CLASS.ACCESO
CLASS.CONECTION
CLASS.ESTADOALARMA
COMUNES
JS
JQUERY
ACCESO.PHP
INDEX.HTML
SESION.PHP
3.3 Bases de Datos
3.3.1 Estructura de bases de datos
El tipo de base de datos es una base relacional, para el proceso de formación de las bases de datos se
usan3 bases, como se puede observar en las figuras 3-1 a 3-3.
Figura 3-1: El estado de la alarma: la base de datos que indica si está encendida o
apagada.
Figura 3-2: El estado de los
sensores.
Figura 3-3: La base de datos de los usuarios para que ellos inicien
sesión.
3.3.2 Estructura Relacional.
Ésta herramienta nos permite establecer interconexiones entre los datos guardados en tablas, y a
través de dichas interconexiones relacionar los datos de las tablas. En la figura 2-4 observamos la
estructura relacional del sistema planteado.
Figura 3-4: Estructura relacional del
sistema
3.4 Recepción de señales y transmisión de datos de los
sensores.
La Raspberry pi b+ cuenta con diferentes puertos GPIO para hacer la recepción de las señales enviadas
por los sensores, se podrían conectar de forma sencilla y obtener estas señales pero su cableado lo hace
engorroso y siendo un dispositivo de seguridad lo que se realiza, algunas de las ubicaciones de los
sensores podrían estar lejanas de la Raspberry. Así el arduino recepciona las señales de los sensores y
solo envía por serial una cadena de estado de los sensores luego la Raspberry consulta la base de datos
de encendido y decide si inserta los datos o no respecto a su estado de actividad (activado / desactivado).
El arduino realiza la recepción de las señales. Así éste transmite los valores dados; en el caso del sensor
MQ7 el cual es un sensor análogo se debió hacer una parametrizacion de esta señal para dejarlo en un
nivel digital. El arduino envía señal por señal en una cadena de datos string el estado de cada una
separadas por tabulaciones (\t) , cuando el estado publicado de los cuatro sensores esta se hace un salto
de línea (\n) y así se sabra el final de la línea información como visualiza en la imagen de la terminal
usb. La forma como funciona la recepción de señales digitales y análogas del arduino, en el flujograma
de la figura 3-5. En la figura 3-5 se pueden ver los datos que se transmiten por serial.
Figura 3-5: Flujograma de programación del arduino
Figura 3-6: Imagen del terminal serial del arduino
3.5 Recepción de datos e inserción a la base de datos
La Raspberry al conectar el arduino lo detectará automáticamente e iniciará la transmisión, el puerto
serial conectado será el '/dev/ttyACM0' por defecto. Ya en python se crea un script usando un módulo
python- serial. Este se podrá instalar por la terminal del rasbian con los comandos
sudo apt-get install python-serial
El script lee los datos por serial que llegan desde el arduino, el dato recibido por serial llega como
una cadena completa, por serial se guarda en una variable
datosrecibidos=ser.readline()
Con el método Split que devuelve una lista de las palabras en cadena separadas en vectores o tupla [20]:
dato=datosrecibidos.sp
lit( )
Así, ya se tiene una tupla de 4 posiciones cada posición guarda un dato de las señales de los datos,
ahora solo es guardar cada dato en la base de datos para ello debemos importar otra librería de python
MySQLdb, esta librería es la interfaz con mysql desde python.[21]
Para acceder a ella se debe conectar iniciando a la base de datos que se desea entrar, usuario y
contraseña y nombre donde está alejado la base de datos que es por defecto localhost Se adicionan los
datos por un método basededatos.execute() ese ejecutara el comando MySQL que se agregue, para
ingresar estos nuevos
datos .[22]
curs.execute ("""INSERT INTO sensores (ruptura, humo, apertura, rif)
VALUES ('%s','%s','%s','%s')"""%(dato[0],dato[1],dato[2],dato[3]))
3.6 Envío de Notificaciones SMS y
correo.
En las notificaciones para mensaje de texto, tigo y claro ofrecen una función al público que es enviar
mensajes de texto desde correo electrónicos, este servicio desde claro es el número de celular seguido
con el @clarocolombia.com.co. y tiene un costo adicional. El problema se limita sólo a enviar dos
correo electrónicos por alerta. Se usa la aplicación mutt, usando la librería os desde python que escribe
desde el Shell de python a la terminal de linux:
os.system("echo \"Sensor activado\" | mutt -s \"Alarma activa\" [email protected]")
os.system("echo \"Sensor activado\" | mutt -s \"Alarma activa\"
Los correos y sms notificaran siempre cuando este la alarma activada y no se halla desactivado desde
el administrador web. Cuando la alarma se encuentre desactivada, no enviara estados de los sensores
ni alertara. Así como se muestra en el flujograma de la figura 3-6. La figura 3-7 muestra como se envían
las notificaciones en terminal.
Figura 3-6: Flujograma de la programación del script en python por la Raspberry Pi
B+
Figura 3-7: Notificación en terminal de
Raspberry
En la figura 3-8 y 3-9 podremos observar que las alertas son enviadas por el sistema al correo y a
celular respectivamente.
Figura 3-8: Alerta enviada a correo
Figura 3-9: Alerta enviada a celular
En la figura3-9 se puede observar el funcionamiento de la página web en donde se administra
el sistema de seguridad. Se puede observar que cuando un sensor es activado se muestra un 1,
mientras los demás se encuentran a la espera de una interrupción.
Figura 3-9: Interfaz de usuario
3.7 Prototipo.
La implementación del sistema se llevará a cabo en un prototipo, el cual será la réplica de una oficina, la
cual posiblemente podría ser el lugar más óptimo para la instalación de dicho sistema. A continuación en
la figura 3-9 se tendrá el plano de la oficina donde se implementará el sistema.
Figura 3-10: Plano de la oficina.
4. Conclusiones y recomendaciones
4.1 Conclusiones
1. A pesar de no tener las mismas características de un computador de escritorio o un laptop, la
RASPBERRY PI es una herramienta de gran desarrollo en la actualidad, un sin número de
aplicaciones se han realizado gracias a ésta pequeña pero poderosa herramienta de programación.
A comparación de ARDUINO, Raspberry cuenta con la posibilidad de incluir periféricos así como
un almacenamiento, lo que es fundamental para el desarrollo del sistema, puesto que se necesita
espacio de almacenamiento para que puedan ser procesados por la base de datos.
2. El sistema fue principalmente considerado en ARDUINO, pero al constatar que éste no ofrecía la
velocidad adecuada en el procesamiento de datos, se decidió tomar otra alternativa, y teniendo en
cuenta que la RASPBERRY contaba con la posibilidad de llevar un sistema operativo, además de
contar con puertos para entradas digitales se eligió como mejor opción; aunque en el proceso, se
logró observar que era mejor utilizar un microcontrolador para que tomase las medidas de los
sensores y que trabajara de forma independiente.
3. Ya que los puertos GPIO de la RASPBERRY no soportan voltajes mayores a 3.3 voltios, y dado
que los sensores con los que se contaban funcionaban a más de 5 voltios, se tomó ARDUINO como
la parte de control para nuestra red de sensores.
4. Gracias al open source se puede considerar realizar muchos más proyectos de ésta índole, ya que
se le da al usuario la libertad de elegir desde el hardware que va a utilizar y que se acomodará mejor
a sus condiciones.
5. A pesar de ser un recurso muy utilizado en la actualidad, los servicios de hosting no ofrecen los
suficientes recursos que pueda necesitar un usuario para poder realizar alún proyecto de éste tipo,
ya que están orientados al manejo de cuentas de correo.
4.2 Recomendaciones
El proyecto actual podría ser complementado adicionando sensores a la red, sólo que se tendría que cambiar
el microcontrolador por alguno que tuviese una mayor cantidad de puertos tanto análogos como digitales. A
futuro se piensa mejorar el proyecto agregando mayor capacidad para el procesamiento de datos, así como
la adición de más sensores para mejorar la seguridad, que en sí es el objetivo principal del mismo.,
al igual se considerará utilizar las tecnologías actuales en cuanto a transmisión de información, como las
que se pueden observar a diario en los teléfonos inteligentes.
Bibliografía
[1] “Balance Delitos de Mayor Impacto Enero noviembre 2014 - 2015.” [Online]. Available:
http://www.ceacsc.gov.co/index.php/que-hacemos/informes/balances-estadisticos [Accessed: 27-Mar- 2016].
[2] M. Acosta, “ESTUDIO DEL ESTÁNDAR IEEE 802.15.4 ‘ZIGBEE’ PARA COMUNICACIONES INALÁMBRICAS DE ÁREA PERSONAL DE BAJO CONSUMO DE ENERGÍA Y SU COMPARACIÓN CON EL ESTÁNDAR IEEE 802.15.1 ‘BLUETOOTH,’” pp. 1–151, 2006.
[3] “Topología estrella” [Online]. Available: http://www.uazuay.edu.ec/estudios/ sistemas/teleproceso/apuntes_1/estrella.htm [Accessed: 27-Mar-2016].
[4] Upton, E., & Halfacree, G. , “Raspberry Pi user guide”, John Wiley & Sons. pp. 1-312, 2004.
[5] Valera, A., Soriano, A., & Vallés, M. (2014). Plataformas de Bajo Coste para la Realización de Trabajos
Prácticos de Mecatrónica y Robótica. Revista Iberoamericana de Automática E Informática Industrial RIAI, 11(4), 363–376. http://doi.org/10.1016/j.riai.2014.09.002
[6] “Python” Página oficial de Python [Online]. Available: https://www.python.org [Accessed: 27-Mar-
2016].
[7] Beazley, D. M. (2009). Python Essential Reference. Addison-Wesley Professional. Retrieved from
https://books.google.com/books?id=Chr1NDlUcI8C&pgis=1 [Accessed: 27-Mar-2016].
[8] “ARDUINO” Página oficial del proyecto ARDUINO [Online]. Available: https://www.arduino.cc/ [Accessed: 27-Mar-2016].
[9] Mican P. E., Sánchez M. A. ,” PROTOTIPO DE AUTOMATIZACIÓN DOMÓTICA DEL SISTEMA
DE ILUMINACIÓN DE UNA CASA MEDIANTE COMUNICACIONES VÍA INTERNET.”, Universidad
Distrital Francisco José de Caldas, Colombia, 2015.
[10] “Sensores MQ”, [Online], Available: http://playground.arduino.cc/Main/MQGasSensors [Accessed: 27-Mar-2016].
[11] [1] A. Goransson and D. C. Ruiz, Professional Android Open Accessory Programming with Arduino. John Wiley & Sons, 2013.
[12] “Sensor PIR con Arduino” [Online]. Available: http://www.omniblug.com/index.php/blog/122- sensor-de-movimiento-pir-arduino [Accessed: 27-Mar-2016].
[13] “Sensor SW-420” [Online], Available: http://www.elecrow.com/vibration-sensor-module-sw420-p-
525.html [Accessed: 27-Mar-2016].
[14] “Sensor magnético” [Online], Available: http://recursostic.educacion.es/secundaria/edad/
4esotecnologia/quincena11/4quincena11_contenidos_3f.html [Accessed: 27-Mar-2016].
[15] “Sensor de vibración” [Online], Available: http://www.mactronica.com.co/sensor-de-vibracion-
46681979xJM [Accessed: 27-Mar-2016].
[16] “MQ-7” [Online], Available: https://www.sparkfun.com/datasheets/Sensors/Biometric/MQ-7.pdf
[Accessed: 27-Mar-2016].
[17] “HC-SR501 PIR MOTION DETECTOR” [Online], Available: https://www.mpja.com/download
/31227sc.pdf [Accessed: 27-Mar-2016].
[18] “SW-420”[Online], Available: http://www.elecrow.com/vibration-sensor-module-sw420-p-525.html
[Accessed: 27-Mar-2016].
[19] “Sensor magnético” [Online], Available: [http://recursostic.educacion.es/secundaria/
edad/4esotecnologia/quincena11/4quincena11_contenidos_3f.htm [Accessed: 27-Mar-2016].
[20] “Apache server”, página official de apache [Online]. Available: https://httpd.apache.org/ABOUT_APACHE.html [Accessed: 27-Mar-2016].
[21] “Método Split” [Online]. Available :http://www.tutorialspoint.com/python/string_split.htm
[Accessed: 27-Mar-2016].
[22] “Librería MySQL-Python” [Online]. Available: http://mysql-python.sourceforge.net /MySQLdb.html]
[Accessed: 27-Mar-2016].
Top Related