Introduction: Alarma Inteligente De Humos

Gracias al sw de Cayenne es posible construir equipos muy avanzados sin necesidad de programar nada con un aspecto gratamente muy profesional. Ademas, si sospesamos la gran potencia de calculo de la Raspberrry Pi, junto sus grandes posibilidades de expansión y conectividad ,obtenemos una gran combinación de hardware y software, las cual sin duda nos va a permitir realizar proyectos realmente interesantes .

Sabemos la gravedad que puede suponer un incendio, por lo que es sumamente importante disponer de medidas en los edificios para protegerlos contra la acción del fuego.


Detectando a tiempo un incendio conseguimos cuatro cosas :

  • Lo mas importante : salvar vidas humanas
  • Minimizar las pérdidas económicas potencialmente producidas por el fuego.
  • Conseguir que las actividades del edificio puedan reanudarse en el plazo de tiempo más corto posible.
  • Evitar generar mas contaminación de todos tipo al medio ambiente producida por la combustión de todo tipo de materiales algunos altamente tóxicos

Es evidente que salvar vidas humanas es el fin principal y primero ante la detección de incendios ,pero evitar perdidas económicas o reducir posible contaminación puede ser también buenas razones para poner un cuidado especial en los sistemas de detección contra incendios

En este proyecto vamos a intentar abordar el grave problema de los incendios desde una perspectiva completamente diferente usando para ello una Raspberry pi 2, un hardware especifico y el software de Cayenne

Tradicionalmente los detectores de incendios difieren en función de los principio de activación siendo los mas habituales los de Tipo Óptico basado en células fotoeléctricas ,las cuales, al oscurecerse por el humo o iluminarse por reflexión de luz en las partículas del humo, disparando una sirena o alarma.

Asimismo existen detectores de calor ,los cuales son los menos sensibles, puesto que detectan la última etapa del desarrollo del fuego aunque generalmente tienen una mayor resistencia a condiciones medioambientales.

Este tipo de detectores se clasifica en:

  • Detectores térmicos: disparan un alarma al alcanzarse una determinada temperatura fija en el ambiente.
  • Detectores termovelocimétricos: disparan un señal o alarma cuando detectan un incremento rápido de la temperatura ambiente,por lo este tipo de sensores son más adecuados cuando la temperatura ambiente es baja o varía lentamente en condiciones normales.
  • Detectores de llama : se basan en la detección de la radiación ultravioleta o infrarroja presente en la combustión en los incendios. Se usan en zonas exteriores de almacenamiento, o para zonas desde se puede propagar con gran rapidez un incendio con llamas (por la respuesta mas rápida) . Dada su incapacidad para detectar incendios sin llama, esto hace que no se consideren estos detectores para uso general.

La solución que se propone se basa en detectores ter micos al ser los mas precisos ,al que se ha añadido para aumentar la fiabilidad y mejorar la flexibilidad un doble sensor permitiendo de esta manera poder modificar los parámetros de disparo con un enorme facilidad como vamos a ver aparte de poder transmitir las información en múltiples formatos y formas hasta nunca vistas.

COMPONENTES NECESARIOS

Para montar la solución propuesta necesitamos los siguientes elementos:

  • Zumbador de 5V
  • DS18B20
  • Resistencia de 4k7 1/4 w
  • Sensor de Co2 basado en MQ4
  • Raspberry Pi 2 o superior
  • Fuente 5V /1A para la Rasberry Pi

Otros

  • Cable de red
  • Caja de plástico para contener el conjunto
  • Cable de cinta ( se puede reusar un cable de cinta procedente de un interfaz ide de disco)

Step 1: Instalación Raspbian

La solución propuesta se basa en usar una Raspberry Pi y un pequeño hardware de control que conectaremos a los puerto de la GPIO,pero, antes de empezar con el hardware adicional, deberemos ,si aun no lo ha creado todavía , generar una imagen de Raspbian para proporcionar un sistema operativo a la Raspberry Pi.

Raspbian trae pre-instalado software muy diverso para la educación, programación y uso general, contando además con Python, Scratch, Sonic Pi y Java

Para instalar Raspbian se puede instalar con NOOBS o descargando la imagen del SO desde la url oficial

Vemos que hay dos versiones:

  • RASPBIAN JESSIE :Imagen de escritorio completo basado en Debian Jessie de mayo de 2016 ,publicada el 27/05/2016 y versión de kernel: 4.4
  • RASPBIAN JESSIE LITE: versión mínima de la imagen basada en Debian Jessie de mayo de 2016 ,publicada el 27/05/2016 y versión de kernel: 4.4

Obviamente si la SD es suficiente grande, lo interesante es descargar la primera opción, en lugar de usar la versión mínima (Lite)

Una vez descargada la imagen correspondiente en su ordenador siga los siguientes pasos:

  1. Puede utilizar la ranura para tarjetas SD si usted tiene soporte en su PC (normalmente habrá que instalar un adaptador de SD a micro-usb) o bien usar un adaptador usb a SD. Inserte la tarjeta SD en el lector de tarjetas SD de su ordenador comprobando cual es la letra de unidad asignada. Se puede ver fácilmente la letra de la unidad, mirando en la columna izquierda del Explorador de Windows.
  2. Descargar la utilidad Win32DiskImager desde la página del proyecto en SourceForge como un archivo zip.
  3. Extraer el ejecutable desde el archivo zip y ejecutar la utilidad Win32DiskImager (puede que tenga que ejecutar esto como administrador, para lo cual tendrá que hacer clic derecho en el archivo y seleccione Ejecutar como administrador).
  4. Seleccione el archivo de imagen que ha extraído anteriormente de Raspbian.
  5. Seleccione con mucho cuidado letra de la unidad de la tarjeta SD ( tenga cuidado al seleccionar la unidad correcta pues si usted selecciona otra unidad por error, esto puede destruir los datos en el disco duro de su ordenador)
  6. Haga clic en Escribir y espere a que la escritura se complete.
  7. Salga del administrador de archivos y expulse la tarjeta SD.
  8. !A terminado de instalar el SO en su Raspberry Pi !

Step 2: Prueba De Acceso Y Creacion De Cuenta

Creada la iamgen del SO ,ahora debemos insertar la micro-SD recién creada en su Raspberry Pi en el adaptador de micro-sd que tiene en un lateral . También deberá conectar un monitor por el conector hdmi, un teclado y ratón en los conectores USB, un cable ethernet al router y finalmente conectar la alimentación de 5V DC para comprobar que la Raspberry Pi arranca con la nueva imagen

Para comenzar la configuración de su Raspberry, lo primero es crear una cuenta gratuita en el portal cayenne-mydevices.com que servirá tanto para entrar en la consola web como para validarnos en la aplicación móvil. Para ello, vaya a la siguiente url http://www.cayenne-mydevices.com/ e introduzca lo siguintes datos:

  • Nombre,
  • Dirección de correo elctronica
  • Una clave de acceso que utilizara para validarse.

NOTA: las credenciales que escriba en este apartado le servirán tanto para acceder via web como por vía de la aplicación móvil

Step 3: Instalacion Agente

Una vez registrado , solamente tenemos que elegir la plataforma para avanzar en el asistente. Obviamente seleccionamos en nuestro caso Raspberry Pi pues no se distingue entre ninguna de las versiones ( ya que en todo caso en todas deben tener instalado Raspbian).

Para avanzar en el asistente deberemos tener instalado Raspbian en nuestra Raspberry Pi que instalamos en pasos anteriores .

Concluido el asistente , lo siguiente es instalar la aplicación móvil , que esta disponible tanto para IOS como Android.

En caso de Android este es el enlace para su descarga en Google Play.

Es muy interesante destacar que desde la aplicación para el smartphone se puede automáticamente localizar e instalar el software myDevices Cayenne en su Raspberry Pi, para lo cual ambos ( smarphone y Raspberry Pi ) han de estar conectados a la misma red,por ejemplo la Raspberry Pi al router con un cable ethernet y su samartphone a la wifi de su hogar ( no funcionara si esta conectada por 3G o 4G) .

Una vez instalada la app , cuando hayamos introducido nuestras credenciales , si está la Raspberry en la misma red y no tiene instalado el agente, se instalara éste automáticamente .

Hay otra opción de instalar myDevices Cayenne en su Raspberry Pi, usando el Terminal en su Pi o bien por SSH.

Tan sólo hay que ejecutar los dos siguientes comandos :

NOTA:la instalación del agente en su Raspberry Pi por comando, no es necesaria .Solo se cita aquí en caso de problemas en el despliegue automático desde la aplicacion movil.

Step 4: Instalación Del Sensor Temperatura

Para poder hacer de nuestra Raspberry Pi un detector eficaz de incendios necesitamos añadir sensores que nos permitan medir variables físicas del exterior, para en consecuencia actuar posteriormente

En primer lugar se ha optado por utilizar el sensor DS18B20 creado por Dallas Semiconductor. Se trata de un termómetro digital, con una precisión que varía según el modelo pero que en todo caso es un componente muy usado en muchos proyectos de registro de datos y control de temperatura.

Existen tres modelos, el DS1820, el DS18S20 y el DS18B20 pero sus principales diferencias se observan en la exactitud de lectura, en la temperatura, y el tiempo de conversión que se le debe dar al sensor para que realice esta acción.

Cada sensor tiene un número de serie único de 64 bits grabado en él lo cual permite un gran número de sensores que se utilizarán en un bus de datos.

La temperatura se obtiene en un formato de módulo y signo de nueve bits. El bit más significativo (MSB) corresponde al signo y el bit menos significativo tiene un peso de 0.5 °C, el subsiguiente en sentido creciente 1°C, el bit 2 estará asociado a 2°C, hasta el bit 7 cuyo peso será de 64°C. Para la comparación con los valores de máxima y mínima se toman sólo los 8 bits más significativos (incluyendo al signo), descartando el 0.5°C.

El DS1820, tiene, además del número de serie y de la interfaz de un conductor, un circuito medidor de temperatura y dos registros que pueden emplearse como alarmas de máxima y de mínima temperatura.

Internamente cuenta con un microprocesador ,un par de osciladores de frecuencia proporcional a la temperatura (uno de ellos de frecuencia proporcional a la alta temperatura actúa como habilitación (gate) del conteo del oscilador de frecuencia proporcional a la baja temperatura )y un circuito (Slope Accumulator) encargado de compensar las alinealidades de la variación de frecuencia de los osciladores con la temperatura.

A los comandos tradicionales de los botones como: lectura de ROM, búsqueda de ROM, coincidencia de ROM, salteo de ROM, se agregan nuevos comandos por el bus de un conductor, como convertir temperatura, leer, copiar o escribir la memoria temporaria (scratchpad) y buscar alarmas(estas alarmas son comparadas con el valor de temperatura medido inmediatamente de terminada la medición, es decir que el flag de alarma será actualizado después de cada medición).


CONEXIÓN DEL DS18B20

El DS18B20 envia al bus I2C la información de la temperatura exterior en grados C con precisión 9-12 bits, -55C a 125C (+/- 0.5C).a.

Para aprovechar las ventajas de la detección automática de Cayenne de sensores 1-wire, conectaremos este al puerto 4 GPIO (PIN 7) dado que el DS1820 transmite vía protocolo serie 1-Wire

Asimismo es importante conectar una resistencia de 4k7 de pull-up en la línea de datos ( es decir entre los pines 2 y 3 del DS18B20) .

La alimentación del sensor la tomaremos desde cualquiera de las dos conexiones de +5V de nuestra Raspberry (pines 2 o 4 ) y la conexión de masa por comodidad podemos tomarla del pin 9 de las Raspberry

¡Listo! Encienda su Raspeberry Pi y Cayenne automáticamente detectará el sensor DS18B20 y añadirá este a su panel de control

NOTA : Es importante reseñar que los dispositivos 1-Wire se identifican mediante un número (ID) único, razón por la que podríamos conectar varios en cascada, viajando la señal de todos ellos por la misma línea de datos necesitando una única resistencia de pull up para todo el montaje conectándose todos ellos en paralelo (respetando los pines obviamente). El software se encargará de “interrogar” al sensor/dispositivo adecuado.

Step 5: Instalación De Sensor De Co2

Para complementar nuestro detector se ha añadido un detector de gases basado en el circuito MQ4.

Se puede montar un circuito con el sensor , o bien se puede adquirir con el sensor y el modulo de disparo con un led ya soldado, lo cual por su bajo coste es la opción más recomendada.

Estos módulos permiten Dual-modo de señal de salida, es decir cuentan con dos salidas diferenciadas:

  • Salida analógica
  • Salida con sensibilidad de nivel TTL (la salida es a nivel alto si se detecta GLP, el gas, el alcohol, el hidrógeno y mas)

Estos módulos son de rápida a respuesta y recuperación ,cuentan con una buena estabilidad y larga vida siendo ideales para la detección de fugas de gas en casa o fabrica .

Estos detectores son muy versátiles , pudiendo usarse para múltiples fines ,detectando con facilidad lo siguientes gases:

  • Gas combustible como el GLP
  • Butano
  • Metano
  • Alcohol
  • Propano
  • Hidrogeno
  • Humo
  • etc.

Algunas de las características del módulo:

  • Voltaje de funcionamiento: 5V DC
  • Rango de Detección: 300 a 10000 ppm
  • Salida TTL señal valida es baja
  • Tamaño: 32X22X27mm

CONEXIONES

Para conectar el modulo a nuestra Raspberry Pi, optaremos por usar el puerto GPIO18 ( pin12) que conectaremos a la salida digital 2 del sensor ( marcado como OUT).

La alimentación del sensor la tomaremos desde cualquiera de las dos conexiones de +5V de nuestra Raspberry (pines 2 o 4 ) conectándo al pin 4 del sensor (marcado como +5v) y la conexión de masa por comodidad podemos tomarla del pin 9 de las Raspberry conectando este al pin1 del detector ( marcado como GND)

Respecto a Cayenne deberemos configurarlo como una entrada genérica como vamos a ver mas adelante.

PRUEBA DEL SENSOR

Para hacer una prueba rápida de que nuestro sensor es funcional :simplemente apuntar a unos cm del sensor con un bote de desodorante (no importa la marca), justo con un sólo disparo hacia el cuerpo del sensor. En ese momento debería encenderse el pequeño led que integra el sensor durante unos minutos para luego apagarse marcando de esta forma que realmente ha detectado el gas .

Ademas simultáneamente si podemos medir con un polímetro, veremos que el pin Out pasa a nivel alto , es decir pasa de 0V a unos 5V , volviendo a cero en cuanto se haya diluido el gas

Step 6: Zumbador Y Montaje Final

Ya tenemos los dos sensores , así que aunque podemos intereactuar ante variaciones de las lecturas de los sensores enviando correos o enviando SMS's (como vamos a ver en el siguiente paso),es muy interesante añadir también un aviso auditivo que podemos activar cuando decidamos.

Para los avisos acústicos, lo mas sencillo es usar un simple zumbador de 5V que podemos conectar directamente a nuestra Raspberry Pi sin ningún circuito auxiliar.

La conexión del positivo del zumbador normalmente de color rojo , lo haremos al GPIO 17 ( pin 11 ) de nuestra Raspberry y la conexión de masa por comodidad podemos tomarla del pin 9 de las Raspberry conectando este al pin de masa del buzzer ( de color negro)

Respecto a Cayenne deberemos configurarlo como un actuador genérico como vamos a ver mas adelante en el siguiente paso.

En cuanto a las conexiones dado las poquísimas conexiones de los dos sensores y el zumbador, lo mas sencillo ,a mi juicio, es usar un cable de cinta de 20+20 , que por ejemplo puede obtener de un viejo cable IDE de los usados para conectar antiguos discos duros cortándolo en la longitud que interese y conectando los cables a los sensores y al zumbador (observe que es muy importante respetar el orden de los pines del cable siendo el rojo el pin 1 y cuenta correlativamente).

El siguiente resumen indica todas las conexiones realizadas:

CABLE DE CINTA --> UTILIZACIÓN

  • pin9 (Gnd) --> pin1 DS1820,pin1 MQ4,
  • pin 7 (GPIO4)--> pin 2 DS1820 , resistencia 4k7
  • pin1 (+5V) -->pin 3 DS1820, resistencia 4k7, pin4 MQ4,cable rojo buzzer
  • pin 12(GPIO18)--> pin2 MQ4
  • pin11(GPIO17) --> cable negro buzzer

Step 7: Configuracion Cayenne

Montado el circuito y nuestra Rasberry corriendo con Rasbian y el agente Cayenne ,únicamente nos queda configurar el sensor de gas y el buzzzer así como las condiciones o eventos que harán que disparen los avisos

Del sensor DS1820 no hablamos precisamente porque al estar conectado al bus one wire , el agente Cayenne lo detectara automáticamente presentándolo directamente sobre el escritorio sin necesidad de ningún acción más.

CONFIGURACION SENSOR GAS

Dado que no existe un sensor de estas características en la consola de Cayenne, lo mas sencillo es configurarlo como entrada genérico del tipo Digital Input y subtipo SigitalSensor.

Si ha seguido el circuito propuesto, los valores propuestos que debería configurar son los siguientes

  • Widget Name: Digital Input
  • Widget: Graph
  • Numero de decimals:0

En el apartado "Device Settings" pondremos:

  • Select GPIO: Integrated GPIO
  • Select Channel: Channel 18
  • Invert logic :check activado

Obviamente añadiremos estos valores y pulsaremos sobre el boton "save" para hacer efectiva esta configuración


CONFIGURACION ZUMBADOR
Dado que no existe un zumbador como tal en la consola de cayenne, lo mas sencillo es configurarlo como salida genérico del tipo RelaySwitch . Si ha seguido el circuito propuesto, los valores propuestos que debería configurar son los siguientes

  • Widget Name: Buzzer
  • Choose Widget: Button
  • Choose Icon: Light
  • Number de decimals:0

En el apartado "Device Settings" pondremos:

  • Select GPIO: Integrated GPIO
  • Select Channel: Channel 17
  • Invert logic :check deactivado

Obviamente añadiremos estos valores y pulsaremos sobre el boton "save" para hacer efectiva esta configuración

TRIGGERS
Si ha seguido todos los pasos anteriores tendremos en la consola de Cayenne nuestra placa Rasberry Pi con la información en tiempo real de la temperatura o detección de gas e incluso un botón que nos permite activar o desactivar a voluntad el zumbador .

Ademas por si fuera poco gracias a la aplicación móvil , también podemos ver en esta en tiempo real lo que están captando los sensores que hemos instalado y por supuesto activar o desactivar si lo deseamos el zumbador..

Pero aunque el resultado es espectacular todavía nos queda una característica para que el dispositivo sea inteligente : el pode interaccionar ante los eventos de una forma lógica,lo cual lo haremos a través de lo triggers , los cuales nos permitirán desencadenar acciones ante cambios en las variables medidas por los sensores.

A la hora de definir triggers en Cayenne podemos hacerlo tanto desencadenado acciones como pueden ser enviar corres de notificaciones o envio de SMS's a los destinatarios acordados o bien actuar sobre las salidas.

Para definir un disparador en myTriggers,pulsaremos "New Trigger" y nos presentara dos partes:

  • IF ; aqui arrastraemos el desecadenante, lo cual necesariamene siempre sera la lectura de un sensor ( en uestro caso el termometro o el detector de gas)
  • THEN: aqui definiremos lo que queremos que se ejecute cuando se cumpla la condición del IF. Como comentábamos se pueden actuar por dos vías : se puede activar /desactivar nuestra actuador ( el buzzer) o también enviar correos o SMS's

Como ejemplo se pueden definir lo siguientes triggers:

  • IF DS1820 <42º THEN RELE(channel17) =OFF
  • IF Channel18=ON THEN RELE(channel17) =ON
  • IF Channel18=ON THEN Send e-mail to...
  • IF DS2820>90º THEN Send e-mail to..
  • etc

Es obvio que las posibilidades son infinitas ( y las mejoras de este proyecto también), pero desde luego un circuito así es indudable la gran utilidad que puede tener.¿Se anima a replicarlo?

IoT Builders Contest

Participated in the
IoT Builders Contest