Electroensaimada DIY, Raspberry Pi, Arduino ...
  • Home
  • Raspberry Pi
    • Básico >
      • Primeros pasos
      • IP estática
      • Montar Pendrive
      • Escritorio remoto
      • Conexión Wifi
      • no-ip
    • Intermedio >
      • Openelec Xbmc
      • OwnCloud
      • Torrent
      • Parpadeo led
      • Xbee
    • Avanzado >
      • SPI con WiringPi
      • ADC
      • Control temperatura
      • Alarma con aviso por mail
    • Raspberry Pi Expansion Board >
      • Control temperatura
      • Alarma con aviso por mail
  • Arduino
    • Motor paso a paso
    • Servomotor
    • PWM
    • Sensor Infrarrojo
    • SPI
    • I2C
    • Relé y LDR
    • Mando Radiocontrol
  • Blog
    • Contacto
  • CNC
    • Material
    • Codigo Maquina >
      • Leer el fichero
      • Decodificar fichero
      • Entorno de usuario
    • Movimiento >
      • Recta a trozos
      • Taladrar o cortar
    • Estructura
    • Estructura(2º Version)
    • Modelo CAD 3D
  • Software
    • Qt
    • Eagle >
      • Instalación y primeros pasos eagle
      • Librerías
  • Utilidades
  • Laboratorio
    • Fuente alimentación >
      • Material
      • Montaje

Tutorial Raspberry Pi : Alarma con aviso por mail

En este tutorial vamos a realizar una alarma para nuestra casa, que en caso de detectar a alguien nos envié un mail de alerta. Usaremos la Raspberry Pi Expansion Board para interactuar con el sensor, disponible para comprar en nuestra Tienda. Dado que hoy en dia casi todo el mundo dispone de un smartphone es una manera de estar enterado al instante si han entrado en tu casa.
Para ello instalaremos el cliente de correo mutt, que nos permite enviar correos desde un gmail.

sudo apt-get update
sudo apt-get install mutt


Ahora con el paquete instalado lo vamos a configurar para enviar desde el root. Para ello creamos el siguiente fichero y rellenamos esta información. Donde pone electroensaimada poned vuestro usuario de gmail y donde pone password vuestra clave.

 sudo nano /root/.muttrc

Contenido de fichero

set from = "electrensaimada@gmail.com"
set realname = "Alarma electroensaimada"
set imap_user = "electroensaimada@gmail.com"
set imap_pass = "password"
set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set postponed ="+[Gmail]/Drafts"
set header_cache =~/.mutt/cache/headers
set message_cachedir =~/.mutt/cache/bodies
set certificate_file =~/.mutt/certificates
set smtp_url = "smtp://electroensaimada@smtp.gmail.com:587/"
set smtp_pass = "password"


Imagen
Ahora crearemos la siguiente carpeta:sudo mkdir -p /root/.mutt/cache
Ya estamos listos para enviar un correo, recordad que lo hemos configurado para enviar desde el root si lo queréis desde el usuario pi donde pone root lo cambiáis por pi.
Vamos a enviar nuestro primer correo para ello hacemos sudo su. Y tecleamos el siguiente código:
echo "Alarmaaaa" | mutt -s "Prueba" micorreo@gmail.com
Donde pone Alarmaaaa ira el contenido del mensaje y en Prueba ira el asunto del mensaje. Finalmente el ultimo correo es el destinatario del mail.
Ahora vamos a nuestra bandeja de entrada y allí tendremos el correo.

Imagen
Imagen
Ahora vamos a enviar un archivo adjunto para ello crearemos un archivo con nano adjunto.c y lo rellenamos con texto.
Para adjuntar-lo al correo se hace de la siguiente forma. Donde /root/adjunto.c es la ruta del archivo.


echo "Este correo incluye un adjunto" |  mutt -s "Archivo Adjunto" micorreo@gmail.com -a /root/adjunto.c

Imagen
Imagen

Sensor PIR

Para detectar si ha entrado alguien usaremos un sensor PIR, este sensor se basa en la lectura de los infrarrojos pasivos,detecta movimientos de personas,animales etc y tiene un amplio cono de acción de casi 180º.
pir.pdf
File Size: 51 kb
File Type: pdf
Descargar archivo

Imagen
El sensor consta de tres cables.
  • Rojo: VCC(de 5V a 12V) en algunos sitios he visto que solo les funciona a partir de 7V, en mi caso con 5V me detecta bien así que lo alimentare a 5V.
  • Marrón: GND 
  • Negro: Pin de alarma, este pin actúa como un colector abierto, es decir al detectar algo pone el pin a GND en caso contrario lo deja libre, por lo que podemos poner una resistencia de pull-up hacia Vcc o hacia 5V.
Usaremos la Raspberry Pi Expansion Board y conectaremos el sensor PIR al pin 2 con dos pull-up de 4.7K, para ello la soldaremos en el área de prototipado de la placa. El uso de dos resistencias d 4.7K es porque he ido probando valores con una de 1K se me quedaba en 1 todo el tiempo, con una de 4.7K me leía 0, en este caso dos de 4.7K en paralelo es como una de 2.3 K que parece que funciona. Eso puede ser debido al TXB0108. Tenemos un conector de 4 pines, el cuarto pin esta conectado al pin de alarma así con un cable lo pinchamos con el pin 2 de la placa.
Imagen
Imagen
Ahora crearemos un pequeño programa para que nos lea cada segundo el valor del pin 2. Recordad con 0 nos ha detectado con 1 no.
pir.c
File Size: 0 kb
File Type: c
Descargar archivo

Compilamos y ejecutamos.

cc -o PIR PIR.c -L/usr/local/lib -lwiringPi


sudo ./PIR
Imagen
Ahora vamos a modificar un poco el programa vamos a usar una interrupción para detectar la Alarma, en este caso no tiene mucho sentido ya que el evento no es algo rápido y ademas el programa no tiene que realizar nada mas así que podríamos hacer polling a una frecuencia aceptable y funcionaria igual. En mi caso he tenido que actualizar la librería wiringPi ya que tenia una versión obsoleta aquí explica como se hace.

Usaremos una interrupción por flanco de bajado en el pin 2. Esta activara una variable llamada alerta, y en el main se comprobara que esta variable este a 1, en ese caso haremos parpadear el led 5 veces. El sensor es muy sensible y al mínimo movimiento que se haga se activa. La siguiente función activa la interrupción en el pin 2, como flanco de bajada y esta llamara a Interrupt que es el nombre de una funcion que he creado.wiringPiISR (2 ,INT_EDGE_FALLING , &Interrupt);
alarma.c
File Size: 0 kb
File Type: c
Descargar archivo

Aquí podéis ver como se activa la alarma. Cada vez que sale el mensaje activado es que ha detectado un flanco, pero en realidad nosotros actuamos en función de la variable alerta, así nos aseguramos de entrar solo una vez cada 2.5 segundos, que es el tiempo que parpadea.
Imagen
En el siguiente video podéis ver como me detecta la mano y parpadea el led.
El ultimo caso consiste en enviar el correo cuando salte la Alarma. Para que no se empiece a volver loco enviando correos limitaré el numero de mails por programa a 3. Es decir en cada ejecución de programa solo puede enviar 3 mails como máximo  Ademas modificamos el tiempo de parpadeo, en este caso a 30 segundos. 
Fijaos que usamos la función system, esta permite ejecutar comandos de la consola directamente en el codigo. Asi que usamos los ejemplos de envió anteriores y los ponemos dentro de la función system. Dado que dentro de system tiene que ir un string entre " " y el comando a escribir tiene comillas, se sustituyen la comillas del comando por \".
alarma_2.c
File Size: 0 kb
File Type: c
Descargar archivo

Hemos finalizado el tutorial y tenemos una alarma simple pero efectiva que se puede mejorar. Por ejemplo haciendo ruido mediante un zumbador, complementar la información del PIR con una webcam para poder ver que esta pasando y una buena opción seria hacer una foto cada vez que detecta algo y mandarla por mail.
Con tecnología de Crea tu propio sitio web único con plantillas personalizables.
  • Home
  • Raspberry Pi
    • Básico >
      • Primeros pasos
      • IP estática
      • Montar Pendrive
      • Escritorio remoto
      • Conexión Wifi
      • no-ip
    • Intermedio >
      • Openelec Xbmc
      • OwnCloud
      • Torrent
      • Parpadeo led
      • Xbee
    • Avanzado >
      • SPI con WiringPi
      • ADC
      • Control temperatura
      • Alarma con aviso por mail
    • Raspberry Pi Expansion Board >
      • Control temperatura
      • Alarma con aviso por mail
  • Arduino
    • Motor paso a paso
    • Servomotor
    • PWM
    • Sensor Infrarrojo
    • SPI
    • I2C
    • Relé y LDR
    • Mando Radiocontrol
  • Blog
    • Contacto
  • CNC
    • Material
    • Codigo Maquina >
      • Leer el fichero
      • Decodificar fichero
      • Entorno de usuario
    • Movimiento >
      • Recta a trozos
      • Taladrar o cortar
    • Estructura
    • Estructura(2º Version)
    • Modelo CAD 3D
  • Software
    • Qt
    • Eagle >
      • Instalación y primeros pasos eagle
      • Librerías
  • Utilidades
  • Laboratorio
    • Fuente alimentación >
      • Material
      • Montaje