martes, 13 de octubre de 2015

Alarma de hogar con arduino

Con Arduino es realmente posible hacer proyectos complejos, en particular mediante el uso de Internet. En este artículo, vamos a ver cómo hacer un sistema de alarma profesional con Arduino.

Este sistema será capaz de grabar todos los movimientos que se detecta en la casa y guardarlos en una base de datos, que se puede acceder de forma remota desde cualquier dispositivo, utilizando un simple navegador o aplicaciones dedicadas.

Requisitos para el proyecto

Hardware

· Mega 1x Arduino

· 1 x Ethernet Shield

· N x Arduino Uno

Kit · n x inalámbrica 433 MHz

· N + 1 x sensor PIR

· PC

Software

· MySQL Connector para Arduino https://launchpad.net/mysql-arduino

· Wireless 433 MHz VirtualWire Biblioteca https://github.com/bosgood/arduino-playground/tree/master/lib/VirtualWire

· Datos inalámbricos  
http://bayesianadventures.wordpress.com/2013/09/20/arduino-rf-communications-data-encoder-for-virtualwire/

· Biblioteca Webduino https://github.com/sirleech/Webduino

· Código para mi desde gitub repo https://github.com/jackbell16/Arduino_System_Alarm

Paso 1: ¿Cómo funciona el sistema?

 ¿Cómo funciona el sistema?
El sistema de alarma se basa en el uso de una especie de estación central, que están conectados a los clientes. Cada dispositivo está equipado con un sensor PIR, que es capaz de detectar el paso de una persona, a través de la variación de calor. Los diversos clientes tienen un TX inalámbrico, que enviará una señal a la estación central, para advertir de la detección de una persona. El servidor principal no es más que un Arduino Mega que está conectado a Internet a través de la tarjeta Ethernet, que contiene más de un sensor PIR, un RX inalámbrico, que es capaz de recibir señales que los clientes envían. Para averiguar qué cliente envía la señal, que estará equipado con algún tipo de identificador, establecido por el usuario al registrarse el cliente. En cuanto a la grabación / ahorro de lecturas, que va a utilizar una base de datos, que puede ser instalado en un PC o incluso en la Raspberry Pi. La carga se hará directamente desde la estación central, que es lo único que está conectado a Internet. La recuperación de la información, puede hacerlo a través de una página web, o por medio de una aplicación construida en Java. Además, la estación central está equipada con un servidor web, con el que puede activar / desactivar el sistema de alarma. Vamos a ver cómo es posible, con un teléfono Android, automatizar la activación / desactivación del sistema de alarma.





Paso 2: Instale el DB de MySQL

El primer paso para hacer el fin de utilizar el sistema de alarma, es la instalación de un servidor MySQL en su PC. Conviene precisar que el equipo debe permanecer con acceso al arduino para que pueda completar el almacenamiento adecuado de las detecciones. Puede instalar el servidor en  Windows / Mac / Linux, descargue el paquete desde el sitio web oficial de http://dev.mysql.com/downloads/mysql/ MySQL. Con el fin de completar los siguientes pasos del proyecto, tales como la creación de credenciales de acceso y mucho más, debe instalar el Workbench. Este último es un programa que permite hacer interfaz fácilmente con el servidor MySQL. Workbench, se puede descargar desde esta página web http://dev.mysql.com/downloads/mysql/

Raspberry PI

Para instalar el servidor MySQL en la Raspberry Pi, debe escribir en una terminal:

sudo apt-get install mysql-server

Para instalar el cliente Workbench:

sudo apt-get install mysql-workbench

Durante la instalación del servidor, se le pedirá que introduzca un nombre de usuario y una contraseña, que se utilizan para tener acceso a del servidor de la base de datos.

Por defecto, el servidor está configurado para acceder a las conexiones que se realizan en la máquina, es decir, el modo de localhost. Para poder llevar a cabo el acceso de forma remota, debe crear una nueva cuenta, con la posibilidad de activarla fuera del dispositivo. Para ello, abra el menú Workbench Raspberry Pi. Seleccione la opción "Nueva instancia de servidor" y la siguiente página, seleccione localhost y escribe los datos de acceso, que introdujo cuando instaló el servidor MySQL. Ahora que ha creado una conexión con la base de datos, podemos crear un usuario para que pueda acceder remotamente a la Raspberry Pi.

Para ello hacemos doble clic en la conexión que ha creado y se abrirá una nueva página, donde veremos un poco de «estadísticas relacionadas con la utilización del servidor. Seleccionamos con un clic el "Usuarios y privilegios" y crear una nueva cuenta. Se debe tener cuidado de que en el "Desde host" será uno con el fin de permitir  todos los tipos de conexiones entrantes.

Paso 3: MySQL esquema

Ahora que tenemos el servidor MySQL instalado, configurado las credenciales de acceso para el acceso desde cualquier dispositivo a la base de datos, podemos crear nuestro "plan" para el sistema de alarma. El esquema no es más que el conjunto de relaciones que conforman nuestro proyecto. Cada informe contiene los atributos. En nuestro caso, el patrón será la siguiente:

Esquema Sistema_allarme

Relazione1 Dispositivi (idDispositivi, Luogo, Citta)

Relazione2 Rilevamenti (ID, DATOS, ORA)



En la primera "tabla" se han reunido todos los dispositivos que están presentes en nuestro sistema de alarma. Por ejemplo, podemos instalar un Arduino Uno con Sensor PIR en la sala de estar, mientras que podemos poner otro Arduino Uno en el dormitorio.

En la segunda  "tabla" son las diferentes encuestas que se han registrado, con la fecha y la hora. El ID se utiliza para identificar los diferentes dispositivos en su hogar. Para la creación de las diversas "mesas" sólo tienes que abrir una conexión con el MySQL Workbench, a través de las "Conexiones de MySQL". Los datos incluidos son los que se han creado en el paso anterior, como el nombre de usuario y contraseña. La IP también puede dejar el localhost (127.0.0.1). Entonces se abrirá una página en la que podíamos controlar nuestra base de datos. Lo que hay que hacer es seleccionar la opción "Crear nuevo esquema" en la parte superior y dar el nombre de Sistema_allarme. Una vez creado el esquema, podemos crear las "tablas", es nuestra relación. Para ello, seleccione el botón en la esquina inferior derecha "Sistema_allarme" y, seleccione la opción "Crear una tabla". Los siguientes pasos se utilizan para introducir los datos que han sido reportados previamente. El único elemento que se añade a este respecto, es insertar idDispositivi como la clave principal de los dispositivos relación / mesas. De esta manera no habrá dos dispositivos con el mismo identificador.

Paso 4: Cómo conectar los distintos dispositivos

Como se mencionó anteriormente, en la base del proyecto, hay dos tipos de dispositivos, la estación / servidor central que se compone de Arduino Mega, lo que le permite subir sus datos a DB utilizando una conexión a Internet, mientras que el cliente está formado por de un Arduino Uno y es capaz de enviar el movimiento detectado en el servidor, usando el sensor PIR y los componentes inalámbricos.

Servidor / Estación Central

PIR

VCC -> 5V

OUT -> PIN de 4

GND -> GND

RX inalámbrico 433 MHz

GND-> GND

DATOS -> PIN 11

DATA-> Ninguno V

CC -> 5V

Cliente

D.E.P

VCC -> 5V

OUT -> PIN 3

GND -> GND

Wireless 433 MHz TX

ATAD -> PIN 11

VCC -> 05/12 V (aumenta el puerto de la señal, el aumento de la tensión)

GND -> GND

Paso 5: Instalación de componentes de software para Arduino

Como se informó anteriormente, con el fin de compilar correctamente los códigos me di cuenta de que es necesario descargar las bibliotecas que no están presentes de forma predeterminada en el IDE de Arduino. La instalación es muy simple, usted puede descargar el archivo. Zip, descomprimir y moverlos a las Arduino / bibliotecas de su equipo.

Aquí están los códigos de los programas de la versión del sistema de alarma 1.0

Server

Usted puede encontrar el código de Arduino para el servidor aquí https: //github.com/jackbell16/Arduino_System_Alarm ...

Cliente

/ **

Este código debe ser instalado en todos los clientes, que quieren detecta un movimiento a través de PIR sensor.

Si el PIR detecta un movimiento, el cliente deberá enviar de forma inalámbrica un mensaje al Maestro, quien hará una inserción a la base de datos MySQL

Versión 1.0

Autor Giacomo Bellazzi

Copyright (C) 2014 Giacomo Bellazzi (http://ismanettoneblog.altervista.org/)

*

* Este programa es software libre: usted puede redistribuirlo y / o modificarlo

* Bajo los términos de la Licencia Pública General de GNU según lo publicado por

* La Fundación para el Software Libre, ya sea la versión 3 de la Licencia, o

* (A su elección) cualquier versión posterior.

*

* Este programa se distribuye con la esperanza de que sea útil,

* Pero SIN NINGUNA GARANTÍA; ni siquiera la garantía implícita de

* COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Vea el

* Licencia Pública General GNU para más detalles.

* /

#include

#include

const int baudrate = 800;

int pinPIR = 3;

int llevó = 13;

int timeLed = 800;

int pinTX = 12;

int ID = 2; // El ID del cliente

void setup ()

{

Serial.begin (9600); // Depuración única

Serial.println ("Configuración");

SetupRFDataTxnLink (pinTX, velocidad de transmisión);

}

void loop ()

{

si (motionDetected ()) {

flotar outArray [1]; // Esta matriz guardan los datos para enviar

outArray [0] = ID; // Enviar el ID del cliente

unión RFData outDataSeq;

EncodeRFData (outArray, outDataSeq);

TransmitRFData (outDataSeq);

ledOnOff (dirigido, timeLed);

while (motionDetected ()) {

// Permanecer en este estado, no enviar movimiento dos veces

}

}

}

// Este método detecta la presencia de personas

boolean motionDetected () {

si (digitalRead (pinPIR)) {

return true;

} else {

return false;

}

}

// Este método se enciende un led, por el tiempo

void ledOnOff (INT llevó, int timeLed) {

digitalWrite (led, HIGH);

retardo (timeLed);

digitalWrite (led, LOW);

}



El código es bastante comprensible desde el punto de vista del mecanismo de la detección de movimiento.
Paso 6: Cómo activar / desactivar la alarma

En cuanto a los sistemas de alarma tradicionales, esto también es capaz de ser desactivado, por ejemplo estamos en  casa y es normal que hay movimiento, para ello, se realizó un servidor web dentro de la estación de tren, desde donde se puede gestionar el sistema. Al escribir la dirección IP del servidor, se abrirá una página Web protegido por un nombre de usuario y contraseña. En el caso de este código, las credenciales son:

usuario = admin

contraseña = admin

La codificación utilizada es la base 64 y se ha implementado utilizando la excelente Webduino biblioteca, con el que es posible simplificar el proceso de creación de páginas web con Arduino. Para cambiar las credenciales para el acceso a la página protegida del sistema de alarma, puede modificar el código para reemplazar la cadena = YWRtaW46YWRtaW4, con el que desee. Para crear su cadena, que representa la base de codificación de 64 de sus credenciales es posible utilizar las herramientas en línea, como http://www.base64encode.org/. Por ejemplo, si desea crear las siguientes credenciales;

user = nomeutente

password = contraseña

Insertar en "codificar" nomeutente: contraseña de correo y el resultado será bm9tZXV0ZW50ZTpwYXNzd29yZA ==.



En la página protegida del servidor web, puede activar y desactivar el sistema de alarma pulsando el botón central, que cambiará de color según el estado.
Debe tener en cuenta que, por defecto, al iniciar Arduino, el sistema está activo, incluso si se ha desactivado previamente. Esto se debe al hecho de que la memoria en la que el Arduino es variables, estática y volátil. Después de reiniciar el dispositivo, se pierden los datos. Sin embargo, está disponible en el repositorio, un programa que resuelve este problema, que mantiene el estado elegido, incluso después de reiniciar Arduino. Sin embargo hay un pequeño problema, la memoria donde se guardan los datos, y sin embargo, llamar EPROM tiene una "vida" en la parte inferior de la RAM Arduino. Por lo tanto, el uso excesivo de la escritura, que puede dañarlo. Por lo tanto le recomiendo usar el programa estándar. Como alternativa, puede desactivar el sistema a través de un interruptor, sin embargo, sería garantizar un menor nivel de seguridad, ya que cualquier persona podría apagarlo. Sin embargo, en una versión futura, está la posibilidad de activar el sistema manual, a través de la página web.

Paso 7: ¿Cómo recuperar los datos?
El método más fácil para recuperar los datos es realizar una consulta a la base de datos que hemos instalado. La consulta no es más que una consulta que devuelve tuplas, que son nada más que nuestras observaciones. Para ello, escribimos esta consulta en workbench:

SELECT DI.Luogo, DI.Citta, RI .DATA, RI.ORA

DESDE Sistema_allarme.Rilevamenti como RI unirse Sistema_allarme.Dispositivi como DI en (RI.ID = DI.idDispositivi)



Para acceder desde teléfonos inteligentes a esta lista de detecciones, puede instalar una especie de banco de trabajo en el dispositivo e introduzca la consulta anterior.

Cómo activar / desactivar el sistema automático?

El sistema ofrece la posibilidad de automatizar el procedimiento para activar / desactivar el sistema de alarma, gracias a un programa disponible para Android llam pueden descargar desde este enlace https://play.google.com/store/apps/details?id=com. kebab.Llama. Esta necesidad se debe al hecho de que el sistema de alarma es perder funcionalidad cuando estamos en casa. Con el fin de automatizar el sistema, podemos decidir para encenderlo cuando la posición GPS está fuera de casa, o para apagarlo cuando lleguemos en la casa. Para configurar lo que se ha dicho, es necesario abrir la aplicación, van a los eventos que añada uno, las características para ser activados son:

Dentro de la zona - aplicación de corto plazo - preferido (http: //ipwebserver.private.hmtl/ apagado)

Dejo la zona - aplicación de corto plazo - preferido (http: //ipwebserver.private.hmtl/ en?)

Aplicación Java para PC

Además de utilizar el Workbench para poder grabar / ver las distintas encuestas, puede utilizar la aplicación Java que he hecho. El primer procedimiento que debe hacer es introducir el nombre de usuario y la contraseña del servidor MySQL. A través del menú, puede seleccionar las dos operaciones autorizados a registrarse un cliente en un área y para ver las encuestas, filtrando por ID, fecha y hora.

Paso 8: Descargar la aplicación para activar / desactivar la alarma de Android

Si desea activar / desactivar la alarma con Android, se puede descargar la aplicación desde la tienda Play, escribiendo AlarmON o mediante este enlace https://play.google.com/store/apps/details?id=com. ...


Recuerde que una vez que lo haya descargado, usted tiene que configurar el nombre de usuario, contraseña y IP del Arduino de las preferencias.

No hay comentarios:

Publicar un comentario