Tabla de contenido:

Reloj de entrenamiento del sueño para niños: 6 pasos (con imágenes)
Reloj de entrenamiento del sueño para niños: 6 pasos (con imágenes)

Video: Reloj de entrenamiento del sueño para niños: 6 pasos (con imágenes)

Video: Reloj de entrenamiento del sueño para niños: 6 pasos (con imágenes)
Video: Quizás NO SABÍAS esto del SENSOR cardiáco de tu RELOJ INTELIGENTE 2024, Mes de julio
Anonim
Reloj de entrenamiento del sueño para niños
Reloj de entrenamiento del sueño para niños
Reloj de entrenamiento del sueño para niños
Reloj de entrenamiento del sueño para niños
Reloj de entrenamiento del sueño para niños
Reloj de entrenamiento del sueño para niños
Reloj de entrenamiento del sueño para niños
Reloj de entrenamiento del sueño para niños

Necesitaba un reloj para ayudar a mis gemelos de 4 años a aprender a dormir en un poco más de tiempo (he tenido suficiente de tener que despertarme a las 5:30 de la mañana los sábados), pero aún no pueden leer la hora. Después de examinar algunos artículos en un sitio de compras muy popular, pensé: "¿Qué tan difícil sería hacer uno?"

Así que esto es lo que pensé que quería en este proyecto. Usaría algunos LED RGB (principalmente porque tengo unos cincuenta de otro proyecto) para mostrar tres colores diferentes. Rojo significaría volver a dormir, es demasiado temprano para despertar. El amarillo significaría que pueden levantarse y jugar tranquilamente en su habitación. Verde, por supuesto, significa que puedes levantarte. También quería poder ajustar el tiempo, porque me gustaría dormir más tiempo algunos días (fines de semana / días festivos vs días laborables y demás).

Suministros

Raspberry Pi Zero W

Dos LED RGB

Seis resistencias de 220 ohmios

Archivos (.stl, python, html) encontrados aquí

Varios pequeños tornillos, cables y piezas pequeñas según sea necesario.

Paso 1: Impresión 3D

Impresión 3d
Impresión 3d
Impresión 3d
Impresión 3d
Impresión 3d
Impresión 3d

A mi hija le gustan mucho los unicornios, así que para este proyecto remezclé Unicorn Nightlight de Riven02, que es una remezcla del Trofeo Unicornio de Apachcreation, que se puede encontrar en Thingiverse.com y se utiliza bajo una licencia Creative Commons no comercial. Modifiqué la base del unicornio para que se ajustara a un cable de alimentación para la raspberry pi zero. Tenía algo de AMZ3D Red PLA por ahí, por lo que la base y la cabeza del unicornio serán rojas. Usé PLA transparente / translúcido para la bocina. Los archivos.stl y la configuración que utilicé son:

Unicorn.stl

  • Altura de la capa: 0.02
  • Espesor de pared:.8
  • Recuento de líneas de pared: 2
  • Relleno: 15%
  • Patrón de relleno: cuadrícula

UnicornBase.stl

  • Altura de la capa: 0.02
  • Espesor de pared:.8
  • Recuento de líneas de pared: 2
  • Relleno: 15%
  • Patrón de relleno: cuadrícula

Horn.stl

  • Altura de la capa: 0.02
  • Espesor de pared: 0.8
  • Recuento de líneas de pared: 3
  • Relleno: 0

Paso 2: el circuito

El circuito
El circuito
El circuito
El circuito
El circuito
El circuito

El circuito es bastante sencillo. Elegí seis pines GPIO diferentes para controlar el encendido / apagado de los diferentes colores del RGB. Esos pines y los colores LED correspondientes son:

  • Pin 11 a RGB 1 ROJO
  • Pin 13 a RGB 1 VERDE
  • Pin 15 a RGB 1 AZUL
  • Pin 16 a RGB 2 ROJO
  • Pin 18 a RGB 2 VERDE
  • Pin 36 a RGB 2 AZUL
  • Pin 39 a tierra

Cada pin está conectado a la resistencia a través de una resistencia limitadora de corriente de 220 ohmios (con la excepción de la tierra, por supuesto). Soldé la resistencia en línea y la cubrí con un tubo termorretráctil.

Paso 3: Preparación de Raspberry Pi

Quería poder establecer horas para el reloj del entrenador de sueño mediante una interfaz web. Entonces necesitaba configurar un servidor Apache y PHP en la Raspberry Pi. Lo primero que debe hacer siempre al instalar un nuevo software en una Raspberry Pi es asegurarse de que esté actualizado escribiendo:

sudo apt-get update

Después de eso, realmente podemos ponernos manos a la obra. Lo haremos instalando Apache2:

sudo apt-get install apache2 -y

esto debería instalar el servidor web Apache. Puede probar esto usando un navegador en la Raspberry pi y navegando a:

localhost /

o navegando desde el navegador de otra computadora a la dirección IP de su Raspberry Pi. Para encontrar su tipo de dirección IP:

nombre de host -I

Hacer esto conducirá a una página predeterminada del servidor web Apache. Esto se puede cambiar reemplazando index.html ubicado en el directorio / var / www / html /. Se puede reemplazar con mi propio archivo index.html.

A continuación, configuraremos el servidor web Apache para poder ejecutar archivos PHP. Empiece escribiendo:

sudo apt-get install php libapache2-mod-php -y

ahora debería poder colocar el archivo sleepset.php en / var / www / html con el archivo index.html.

Para navegar a esta página en su propia red, deberá configurar su Raspberry Pi con una dirección IP estática (o simplemente puede intentar averiguar la nueva dirección IP cuando su red la renueve de vez en cuando). Deberá editar un par de archivos para que esto funcione. Deberá editar el archivo /etc/dhcpcd.conf con lo siguiente:

interfaz wlan0

static ip_address = 192.168.1.enrutadores estáticos = 192.168.1.1 static domain_name_servers = 192.168.1.1

Reemplácelo con la información de su red. Lo único que tendrá que hacer ahora es reiniciar.

sudo reiniciar

La ubicación de los archivos del enlace de la unidad de Google debe ser la siguiente:

  • index.html y sleepset.php deben colocarse en el directorio / var / www / html
  • sleepset.txt y sleeptrainer1_1.py deben colocarse en el directorio / home / pi / pythoncode (pista: tendrás que crear este directorio)

Después de colocar estos archivos en el directorio correcto, el archivo rc.local debe modificarse para ejecutar el programa sleeptrainer1_1.py al inicio. Necesitará acceso de nivel raíz para modificar el archivo rc.local, así que escriba:

sudo nano /etc/rc.local

En el editor, desplácese hacia abajo y, justo antes de la línea de salida 0, agregue:

python /home/pi/pythoncode/sleeptrainer1_1.py &

Hay dos cosas para recordar aquí:

  1. Utilice la ruta de archivo absoluta para que LINUX no crea que el archivo sleeptraner1_1.py se encuentra en el mismo directorio que rc.local.
  2. No olvide el ampersand (&) al final. esto permitirá que LINUX ejecute este archivo en segundo plano y continúe arrancando.

Ahora, guarde el archivo escribiendo ctrl-x y luego y cuando se le solicite guardar y luego ENTER.

Luego escriba sudo reboot.

Debería mencionarse en algún lugar de aquí que (como mínimo) debe cambiar su contraseña de Raspberry Pi usando el comando passwd. Si aún no lo ha hecho, ahora sería un buen momento.

Paso 4: el código

El siguiente es el código del archivo sleeptrainer1_1.py. Usé un objeto de fecha y hora para comparar los tiempos con los leídos en el archivo sleepset.txt. El archivo de texto consta simplemente de dos líneas, la primera por hora y la segunda por minuto. sleeptrainer1_1.py duerme durante un minuto entre iteraciones de bucle para no inmovilizar el procesador. La luz verde originalmente salía demasiado brillante, así que usé modulación de ancho de pulso para atenuarla cuando se usaba con rojo para hacer amarillo.

Código Python:

importar RPi. GPIO como GPIO

from datetime import datetime como dt import time GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (False) red1 = 11 red2 = 16 green1 = 13 green2 = 18 blue1 = 15 blue2 = 36 GPIO.setup (red1, GPIO. OUT) Configuración de GPIO (rojo2, GPIO. OUT) Configuración de GPIO (verde1, GPIO. OUT) Configuración de GPIO (verde2, GPIO. OUT) Configuración de GPIO (azul1, GPIO. OUT) Configuración de GPIO (azul2, GPIO. OUT) p1 = GPIO. PWM (verde1, 100) p2 = GPIO. PWM (verde2, 100) def readset (): setfile = open ("/ home / pi / pythoncode / sleepset.txt", 'r') a = setfile. readline () b = setfile.readline () a = int (a) b = int (b) return a, b def ledlight (color): if (color == "red"): GPIO.output (red1, GPIO. HIGH) GPIO.output (red2, GPIO. HIGH) p1.stop () p2.stop () GPIO.output (azul1, GPIO. LOW) GPIO.output (azul2, GPIO. LOW) elif (color == "azul"): Salida. GPIO (rojo1, GPIO. LOW) Salida. GPIO (rojo2, GPIO. LOW) p1.stop () p2.stop () Salida. GPIO (azul1, GPIO. ALTA) Salida. GPIO (azul2, GPIO. ALTO) elif (color == "verde"): GPIO.output (rojo1, GPIO. LOW) GPIO.output (rojo2, GPIO. LOW) p1.start (100) p2.start (100) GPIO.output (azul1, GPIO. LOW) GPIO.output (azul2, GPIO. LOW) elif (color == "amarillo"): p1.start (60) p2.start (60) GPIO.output (rojo1, GPIO. HIGH) GPIO.output (rojo2, GPIO. HIGH) GPIO.output (azul1, GPIO. LOW) GPIO.output (azul2, GPIO. LOW) elif (color == "apagado"): GPIO.output (rojo1, GPIO. LOW) GPIO.output (rojo2, GPIO. LOW) GPIO.output (azul1, GPIO. LOW) GPIO.output (azul2, GPIO. LOW) p1.stop () p2.stop () while True: settime = readset () hora, minuto = settime if minuto == 0: if dt (dt.now (). year, dt.now (). month, dt.now (). day, hour-2) <dt.now () <dt (dt.now ().year, dt.now (). month, dt.now (). day, hour-1, minute + 30): ledlight ("rojo") elif dt (dt.now (). year, dt.now ().mes, dt.now (). día, hora-1, minuto + 30) <dt.now () <dt (dt.now (). año, dt.now (). mes, dt.now ().día, hora, minuto): ledlight ("amarillo") elif dt (dt.now (). año, dt.now (). mes, dt.now (). día, hora, minuto) <dt.now () <dt (dt.now (). year, dt.now (). month, dt.now (). day, hour + 1, minute): ledlight ("verde") else: ledlight ("off") elif dt (dt.now (). año, dt.now (). mes, dt.now (). día, ho ur-2) <dt.now () <dt (dt.now (). año, dt.now (). mes, dt.now (). día, hora, minuto-30): ledlight ("rojo") elif dt (dt.now (). año, dt.now (). mes, dt.now (). día, hora, minuto-30) <dt.now () <dt (dt.now (). año, dt.now (). mes, dt.now (). día, hora, minuto): ledlight ("amarillo") elif dt (dt.now (). año, dt.now (). mes, dt.now ().día, hora, minuto) <dt.now () <dt (dt.now (). año, dt.now (). mes, dt.now (). día, hora + 1, minuto): ledlight ("green") else: ledlight ("off") time.sleep (60)

El archivo index.html es un formulario básico diseñado en HTML. Toma el contenido de dos cuadros de texto y los pasa al archivo sleepset.php para el manejo de formularios. El archivo PHP simplemente sobrescribe el archivo sleepset.txt con datos actualizados.

Paso 5: Poniéndolo todo junto

Poniendolo todo junto
Poniendolo todo junto
Poniendolo todo junto
Poniendolo todo junto
Poniendolo todo junto
Poniendolo todo junto

Con la codificación terminada y todas las piezas impresas, llega el momento del montaje. Seguí estos pasos para ponerlo todo junto:

  1. Taladre dos orificios pequeños del tamaño de los LED RGB en la parte inferior de la bocina y coloque los LED en estos orificios.
  2. Coloque el cuerno en el orificio de la cabeza del unicornio y jálelo hasta que quede apretado. Use pegamento desde el interior para asegurar el cuerno.
  3. Coloque la Raspberry Pi Zero W en el interior de la cabeza del unicornio. (Quizás use pistola de pegamento caliente)
  4. Coloque la cabeza del unicornio en la base del unicornio.
  5. Conecte el cable de alimentación y fije todo el conjunto a la pared.
  6. Conecta el reloj.

En este punto, tengo un reloj de entrenamiento del sueño para niños en funcionamiento.

Paso 6: Un año después …

Un año después …
Un año después …

Un año después:

Mis chicas duermen un poco más. Nos hemos acostumbrado a despertarnos con niños pequeños en nuestra habitación diciendo: "Papá, la luz es verde". y eso es genial. En pocas palabras, solo nos despertamos a las 5:30 a.m. un sábado cuando ya lo planeamos.

Cosas que planeo mejorar en el futuro:

  • Tal vez agregue algunos sensores u otros elementos como un micrófono y parlantes.
  • Tal vez edite el código para que funcione con un altavoz para usarlo como reloj de alarma, ya que mis hijos comenzarán la escuela pronto.

Recomendado: