WeggUp - un dormir del ciclo y la luz despertador (9 / 11 paso)

Paso 9: Software

Usé un steack "significa" (mongodb, express.js, js angular y nodo js) para implementar todo en software.

Usted puede encontrar la corriente (realmente, realmente alfa) fuente código en github

Hay varias razones por qué probé esta combinación:

  • Quería probar en un proyecto real
  • Es el mismo idioma en frontend/backend/db
  • JavaScript es bastante bueno en prototipado rápido

Conceptos:

En un proyecto integrado como este tenemos el problema de los recursos compartidos (sonido y luz en nuestro caso). Tan sólo un proceso puede tener acceso al recurso en un momento dado, ya que tenemos varios modos de funcionamiento (luz, luz del humor, alarma, modo de audiolibro), podrían bloquear esos servicios mutuamente. Para mantener todo simple me decidí por una estrategia muy fácil: cuando un proceso quiere acceder a un recurso, otro proceso posiblemente ejecutando se detenga, para que el recurso puede ser utilizado otra vez por el nuevo proceso. En nuestro caso, esto es posiblemente también una de las mejores soluciones: ninguno de los procesos realmente necesita un recurso + la única vez que proceso disparada es la alarma: la alarma siempre debe recibir el recurso, cuando se inicia, también cuando la cosa está funcionando. Otros procesos usuario activada (y sólo tenemos un usuario), por lo que probablemente el proceso para reclamar los recursos.

Conexión de los LEDs: pwm con Pi-blaster

La frambuesa Pi sólo tienen generalmente 1 o 2 puertos pwm. Para este proyecto sin embargo, necesitaba por lo menos 4 de ellos por lo que utiliza el proyecto pi-blaster para conducir varios puertos con pwm. Tuve el problema de parpadeo mientras dimmer LED, así que tuve que cambiar a una versión anterior que no tiene el problema. Además tuve que cambiar las fuentes para utilizar el pcm-modo por defecto, tendrian pi-blaster utiliza el módulo de sonido para producir pwm que realmente asqueroso ruido en los altavoces. Además tuve que ajustar los puertos de: puerto 21 fue retitulado a 27 en la última versión de Pi frambuesa.

Registro

Como se explica en la introducción he decidido conectarse todos los valores del sensor en mongodb para verlas más tarde y analizarlos. Hay un gran biblioteca para interactuar con el mcp3008 chip para nodo. Las entradas del registro se pueden consultar con una api REST. En el frontend usé flot, una librería de jquery para trazar gráficos.

Registro de los acelerómetros fue un poco más difícil, porque básicamente quería entrar hay movimiento"no"Cuál es la dirección del movimiento". Por lo tanto, continuamente registran la diferencia absoluta entre 2 mediciones y construido un desplazamiento promedio más de 100 muestras (1 muestra cada milisegundo) a 10 mediciones por segundo. Cuando la media excede un cierto threashold (empíricamente determinada) se desencadena un evento, para que el programador de alarmas y otros módulos pueden actuar según. Como muestra la frecuencia de movimiento es bastante alto, que sólo de registrar valores cuando cambio de una cantidad determinada desde el último valor guardado. tendrian sería demasiado entrada-salida para la frambuesa todo retraso (más que llevaría para siempre para mostrar los datos).

Alarmas

Alarmas son también almacenadas en mongodb y la biblioteca de nodo-cron se utiliza para el inicio. Puede ser editados mediante una api REST. En el front-end usé un selector de degradado y un selector de sonido para configurar la luz del sol y los sonidos del estado de ánimo.

Para tener una vista previa del color seleccionado sin demasiada demora, añadí soporte socket para garantizar una comunicación rápida al escoger valores de color. al editar el gradiente de la luz, el color seleccionado es siempre obtener una vista previa en el weggup. El gradiente de luz/sonido también puede ser completamente vista previa y todos los sonidos se pueden reproducir por separado. El volumen de cada sonido puede ser ajustada por separado, así si se debe repetir o no.

Los archivos de sonido se leen de un cierto directorio en la frambuesa Pi, que es también compartido por samba.

Para realizar la funcionalidad del ciclo de sueño el programador alarma escucha el evento de movimiento de la bitácora y comprueba si la luz próxima fase de sueño se encuentra en un cierto plazo entre tiempo de despertador y un tiempo definido con anterioridad a reprogramar la alarma. El problema principal es predecir el siguiente semáforo durmiendo fase. Actualmente utilizo una duración constante de 3 horas por ciclo del sueño. Cuando habrá se reunieron datos de movimiento más que ajustarlo en consecuencia o encontrar otro método de predicción de la próxima fase de sueño ligero (dependiendo de los datos recogidos).

Reproducir sonido

Para reproducir sonido mplayer procesos se generó en el fondo en modo de esclavo, por lo que se pueden controlar fácilmente desde nodo. Posiblemente se cambie a otro jugador, como requerimientos de hardware, y por lo tanto, los retrasos son bastante altos con mplayer.

La interfaz de botón

Al pulsar la parte superior de la caja, consigue presiona el botón interno. Este evento causa la weggup encender la luz, actuando como una lámpara. Al presionar el botón, mientras se está ejecutando nada, este proceso se detiene de inmediato. Es decir, el botón actúa como un "cierre todo lo que se está ejecutando" cambia, y cuando nada se ejecuta, actúa como un interruptor de "luces".

Otros módulos:

Todos los módulos pueden ser iniciados y detenidos desde una interfaz web. La configuración de todos los parámetros puede controlarse también allí. He implementado un simple administrador de configuración común para todos los módulos, por lo que puedo añadir nuevos fácilmente (cuando encuentro algún tiempo, crearé páginas de configuración para todos los módulos, que son más cómodos de utilizar).

  • Audiolibro: el módulo de audiolibro Lee un archivo tras otro de un cierto directorio. Después de 10 minutos de lectura baja el volumen en un 50%. Cuando el oyente se mueve en la cama y se desencadena un evento de movimiento, el volumen aparece y sigue otro 10 minutos. Cuando el oyente ha dormido no disparará ningún caso movimiento y el audiolibro para jugar. La posición de la última vez que movimiento se almacena para que la reproducción comience en un punto donde el oyente era ciertamente despierto.
  • moodlight: cambia su color cada 10 segundos rand(5) desvanecimiento de color a color, la luminosidad total puede ser configurada (el vector de color está normalizado para tener aproximadamente el mismo brillo todo el tiempo).
  • luz: se enciende la luz con un color configurable. Este módulo se inicia al pulsar en la parte superior del recinto.

Artículos Relacionados

3D impreso protector del interruptor de la luz

3D impreso protector del interruptor de la luz

El objetivo de este ible es mostrar que cómo hacer un 3D impresión protector del interruptor de la luz para que accidentalmente no puede voltear un interruptor. Esto es útil en escenarios de automatización del hogar con bombillas inteligentes, circui
Cubierta del interruptor de la luz medida

Cubierta del interruptor de la luz medida

Con este Instructable, te mostraré cómo he creado una cubierta de medida interruptor de la luz. Es una buena manera de personalizar el dormitorio de un hijo o añadir algo a su propio.La hice en TechShop.Paso 1: medida Mediante un conjunto de calibrad
Protector del interruptor de la luz

Protector del interruptor de la luz

¿tienes un interruptor de pared que siempre debe estar en? ¿Usted o los miembros de su familia olvidarse y apagarla? Hacer Es de donde vino esta corrección de 5 minutos. Este es un instructivo que es tan simple, casi no tuvo tiempo para publicarlo.Te
Sustitución de un contraluz del LCD con la luz solar a través de cables de fibra óptica

Sustitución de un contraluz del LCD con la luz solar a través de cables de fibra óptica

una prueba de horas de duración. Bien. Esto podría ser una adición regular LED backlighting muestra potencialmente. Un monitor de intensidad constante tendría que ajustar los LEDs para compensar por la inconsistencia de Solanas.Preveo un techo cubier
Del mundo mejor oscuro / luz Sensor! (No NPN, PNP o IC!)

Del mundo mejor oscuro / luz Sensor! (No NPN, PNP o IC!)

Del mundo mejor oscuro / luz Sensor!No hay Chips integrados!!No NPN, los transistores PNP!!Sólo una LDR y una resistencia!!Paso 1: Enlace vídeohttp://youtu.be/dh01O22A0XgPaso 2: pasos1 sólo tiene que conectar cualquier pierna de LDR a cualquier patit
Placa del interruptor de la luz

Placa del interruptor de la luz

He diseñado esta placa del interruptor de la luz después de ir a Lowe y mirando y su selección bastante limitado. VI algunos diseños de línea pero encajaba bastante mis necesidades. Así que, diseñé uno personalizado. Y ahora usted también puede!Paso
Cargador de batería del ciclo

Cargador de batería del ciclo

Tal vez tu ciclo va en las colinas, tal vez haya un Apocalipsis zombie, donde combustible y energía son lo más importante, usted da vuelta a con su ciclo. Ciclo, uno de los mayores inventos del hombre, nos muestra cómo algo tan simple puede lograr ma
ENERGÍA del uno mismo accionado luz DIY 01 de abril de 2013

ENERGÍA del uno mismo accionado luz DIY 01 de abril de 2013

esta luz de alta potencia funciona un panel solar y el grupo acciona la luz y entonces la luz alimenta el panel que se ilumina la bombilla, luego los fotones son absorbidos por el panel y convertidos en energía que es consumida por la lámpara que emi
Luz del acuario del LED con la luz de la luna

Luz del acuario del LED con la luz de la luna

tengo un acuario de 55 galones lleno de peces nativos que compré en una tienda de peces. Tengo el tanque de un amigo gratis y no se dio cuenta de lo caros pudiera llegar a pescado. Empecé con un par de luces fluorescentes baratos que consegui por 5 d
Extractor de humos de cuello del viejo laptop USB luz de LED (baratísimo) del ganso

Extractor de humos de cuello del viejo laptop USB luz de LED (baratísimo) del ganso

recientemente hice algunos de soldadura y notado que los gases mantienen va derecho a mi cara.Así que esta vaina de gorila - extractor de humos de estilo vino a mi mente:Materiales:ventilador (viejo)barato / roto (o ambos) cuello de ganso de luz LED
Titular del PVC de la luz Solar

Titular del PVC de la luz Solar

recientemente conseguí algunas luces solares y pegado en la jardinera.  Yo planté unas semillas de flores y unos meses más tarde pudimos ver apenas la luz solar.  así que después de unos diseños ocurrió esto.  Pone las luces de la tierra y los pone e
Estrellas Topper del árbol de la luz

Estrellas Topper del árbol de la luz

Si no he mencionado esto antes, me encanta de las ferreterías. También me encanta hacer lámparas. Así que como parte de mi plan de árbol de vacaciones, me la estrella luz árbol Topper utilizando solamente piezas de mi almacén local del hardware. Esto
Marco del PVC del sistema crece la luz

Marco del PVC del sistema crece la luz

Esta es una alternativa eficaz de costo para un sistema de interior crece la luz, el costo aproximado es de $44.Decidí hacer esto porque mi esposa quería empezar a sus plantas para el jardín en el interior.Paso 1: Herramientas y materiales PVC es el
Casa de la tapa de tabla del usb 5 minutos luz

Casa de la tapa de tabla del usb 5 minutos luz

en este Instructable te voy a mostrar cómo hacer una divertida casa de usb mesa superior la luz.por favor comenten.Paso 1: materiales 1. chatarra de papel de construcción2. taza de dixie3. la cinta scotch4. macho usb cable5. cuchillo o tijeras6. blan