Tabla de contenido:

Wake Me Up: un reloj despertador inteligente: 6 pasos
Wake Me Up: un reloj despertador inteligente: 6 pasos

Video: Wake Me Up: un reloj despertador inteligente: 6 pasos

Video: Wake Me Up: un reloj despertador inteligente: 6 pasos
Video: ☀️ Mejores Despertadores con Luz Solar | Despiértate con Energía 🌅 2024, Diciembre
Anonim
Wake Me Up: un reloj despertador inteligente
Wake Me Up: un reloj despertador inteligente

Wake me up es un reloj despertador inteligente que también se puede utilizar como luz inteligente.

La tira de luces incorporada simula la entrada de luz natural en su habitación. Esto permite comenzar el día de una manera tranquila y natural.

El despertador también está equipado con una pantalla de 4 * 7 segmentos para leer la hora, parlantes para despertarse con su música favorita, un botón táctil, un ldr para adaptar el brillo de la tira de leds y un sensor de temperatura que puede usar para ver el temperatura de su habitación.

Suministros

Aquí puede encontrar una lista de los precios exactos que pagué:

Microcontroladores y ordenadores:

Raspberry Pi 4Utilicé el raspberry pi 4 4GB sin embargo, cualquier modelo 3+ de raspberry pi debería estar bien

Arduino Uno

El arduino se utiliza para controlar la pantalla del reloj de 4 * 7 segmentos.

Sensores:

  • TMP36: sensor de temperatura
  • LDR: resistencia dependiente de la luz

Actuadores:

  • WS2801: Tira de leds direccionable individualmente
  • Pantalla LCD: una pantalla LCD de 16 * 2.
  • Pantalla de reloj de 4 * 7 segmentos

IC:

  • 74HC595: Shiftregister para la pantalla lcd
  • MCP3008: convertidor analógico a digital de 8 bits
  • Convertidor de nivel lógico: se utiliza para comunicarse entre raspi y arduino

Otras cosas:

  • Un amplificador adafruit MAX9744 para alimentar los altavoces
  • Para cualquier altavoz, utilicé un altavoz de rango completo Visaton 4Ohm 8Watt (Art. No. 2240)
  • Una fuente de alimentación de 9 voltios para alimentar el amplificador
  • Una fuente de alimentación de 5 voltios para suministrar la tira de leds y otros componentes. Tenga en cuenta que cada led en la tira de leds puede sumergirse 60 mA, así que asegúrese de que su fuente de alimentación sea suficiente.
  • Algunas resistencias de 220 ohmios
  • Una pequeña placa de pruebas para poner en tu estuche.

Instrumentos:

  • Un soldador.
  • Algo para hacer el estuche (utilicé una impresora 3d con PLA y PETG y algunas pegatinas de vinilo para obtener el efecto de madera).

Paso 1: Configurar la Raspberry Pi

El raspberry pi es nuestro microcontrolador principal.

El raspberry pi ejecuta nuestro servidor web local, base de datos, controla la tira de leds, altavoces,…

Parte 1: Instalación de Raspbian

Utilice este tutorial para instalar raspbian:

Asegúrese de que SSH esté habilitado

Parte 2: Conectarse

Para conectarse a Internet, necesita acceder a la terminal de su raspberry pi. Recomiendo usar masilla. En el tipo de terminal:

wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

"YourNetwork" es el nombre de su red wifi y "YourSSID" es la contraseña de la red.

Una vez que haya agregado la red, intente reiniciar la Raspberry Pi.

Escriba el comando 'ping 8.8.8.8', esto enviará un paquete a los servidores de Google si obtiene una respuesta: ¡su red está configurada y funcionando!

Parte 3: Instale los programas necesarios

Necesitaremos instalar algunos programas adicionales para poner en marcha este proyecto.

Antes de comenzar, ejecute estos 2 comandos para asegurarse de que todo esté actualizado.

actualización de sudo apt

actualización de sudo apt

Esto podría tomar un tiempo.

apache

sudo apt install apache2 -y

sudo apt install php libapache2-mod-php -y

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt install php-mysql -y

PHPMyAdmin

sudo apt install phpmyadmin -y

Pip de Python

Necesitamos instalar pip para habilitar algunas bibliotecas de Python

pip3 instalar mysql-connector-python

pip3 instalar flask-socketio

pip3 instalar flask-cors

pip3 instalar gevent

pip3 instalar gevent-websocket

Paso 2: Conexión de la electrónica

Conexión de la electrónica
Conexión de la electrónica
Conexión de la electrónica
Conexión de la electrónica

He agregado 2 esquemas, 1 es un esquema de tablero con fines de prueba. Recomiendo crear el primer esquema e intentar que el código funcione.

Agregué los archivos fritzing a continuación.

Paso 3: Diseño de la base de datos

Diseño de base de datos
Diseño de base de datos

Este es el esquema de base de datos que hice. Las palabras están en holandés, pero explicaré cada tabla en detalle.

Tabla 1: tblMuziek

Esta es una tabla bastante básica. Guarda el nombre del artista, el nombre de la canción y el nombre de archivo de una canción.

Tabla 2: tblLedstrip

Esta tabla realiza un seguimiento del estado actual del ledstrip y guarda el estado del ledstrip. Necesitamos esto para la función de luz inteligente.

Tabla 3: tblSensoren

Esta tabla realiza un seguimiento de los sensores en nuestra alarma. Almacenamos el nombre del sensor y el canal del MCP3008

Tabla 4: tblMeting

Esta tabla almacena los valores de nuestros sensores junto con su tiempo.

Tabla 5: tblWekker

Esta tabla almacena la contraseña y el nombre de su despertador (por ejemplo, dormitorio). Esta tabla no es obligatoria, pero la agregué porque supongo que tendrá más de 1 despertador en su casa.

Tabla 6: tblAlarm

Esta es probablemente la tabla más importante. Realiza un seguimiento de las alarmas que ha configurado y lo que tiene que hacer el reloj (qué canción reproducir, qué secuencia de led, en qué días debe sonar,…). Es muy importante realizar un seguimiento de 2 fechas. 1 fecha se usa para almacenar a qué hora debe sonar la alarma. El otro realiza un seguimiento de la última vez que se activó la alarma. Para saber qué día de la semana debería apagarse, utilicé un varchar que contiene un número de 7 dígitos. El primer dígito es el lunes, el segundo martes… Si es un 1, entonces debería apagarse, si es un 0 no debería. Ejemplo: 1111100 esto significa que esta alarma debe sonar los lunes, martes, miércoles, jueves y viernes.

Paso 4: Configuración de Arduino

Este paso es muy sencillo. Habrá un enlace a mi github en el siguiente paso donde puede descargar el archivo arduino.

¿Qué hace el programa?

El programa espera a que lleguen datos en serie del pi.

Tan pronto como se reciben los datos, analiza la cadena y envía una confirmación al pi.

La cadena será algo como esto: '1201' esto significa que son las 12:01. Usé una pantalla de 7 segmentos de ánodo común, esto significa que los dígitos deben ser altos y los dígitos A, B, C, D, E, F, G y DP deben estar bajos para encenderlos. Si usa un cátodo común, simplemente debe cambiar HIGH a LOW y LOW a HIGH.

Aquí hay un enlace con más información sobre cómo funcionan las pantallas de 7 segmentos. (con el uso de la biblioteca):

www.instructables.com/id/Using-a-4-digit-7…

Aquí hay un enlace sobre pantallas de 7 segmentos sin el uso de una biblioteca:

create.arduino.cc/projecthub/SAnwandter1/p…

Paso 5: Backend de Raspberry Pi

Backend de Raspberry Pi
Backend de Raspberry Pi

Puedes descargar mi código usando Github. (https://github.com/VanHevelNico/WakeMeUp)

Cómo instalar el programa:

El backend está escrito en Python usando flask. Puede crear un servicio que inicie este programa (app.py) automáticamente.

Debe colocar el código de la interfaz en el archivo html del servidor apache que descargamos anteriormente. (/ var / html)

Cómo funciona el programa?

Cuando la alarma esté encendida, vaya a la dirección IP de su reloj (se mostrará en la pantalla LCD)

Tan pronto como vaya a esa dirección IP en su navegador, su computadora enviará una solicitud socket.io al backend diciendo que un cliente se ha conectado. Cuando el backend reciba esto, comenzarán algunos hilos que explicaré a continuación.

Configuración

Esto inicializa todos los objetos necesarios.

GetTemp

Esto lee el canal 0 del mcp3008 y convierte los datos binarios a la temperatura real y los coloca en la base de datos con la fecha y hora actuales.

GetTempGrafiek

Esto obtiene los últimos 20 valores del sensor de temperatura y los emite a la interfaz.

tijd_sturen

Este método obtiene la hora actual y comprueba si el minuto ha cambiado. Si ha cambiado, el programa envía la nueva hora al arduino mediante comunicación en serie

checkAlarmen

Este es el método más importante. Obtiene todas las alarmas que están encendidas y verifica si alguna de estas alarmas tiene que irse entre ahora y hace 5 minutos (este es un búfer para asegurarse de que cada alarma suene cuando sea necesario). Si la alarma tiene que sonar comenzaremos la música, la tira de leds, … Leemos la resistencia sensible a la fuerza continuamente y cuando el valor cae por debajo de 1000 (leemos que se presiona el fsr) Apagamos la alarma y actualizamos la alarma en el base de datos. Establecimos la fecha en que se activó la alarma por última vez en la fecha actual.

statusLight

Este método emite el valor del ledstrip y enciende el ledstrip si es necesario.

lichtAanpassen

Este es un método adicional para asegurarse de que la tira de leds y la luz de alarma no entren en conflicto.

Paso 6: Caso

Caso
Caso
Caso
Caso
Caso
Caso

El enlace a mis archivos se puede encontrar aquí:

Usé una impresora 3d para imprimir la carcasa. Está impreso en 4 partes diferentes:

  1. La placa frontal con orificios para el altavoz y algunas paredes para la pantalla de 7 segmentos.
  2. El anillo exterior de la tira de leds en PETG transparente.
  3. La parte media
  4. La placa posterior con un orificio para la pantalla lcd y un orificio para los cables.

En el modelo original no había ningún agujero para la pantalla de 7 segmentos, sin embargo, esto es necesario porque, de lo contrario, la luz de la pantalla de 7 segmentos no brillará.

Como puede ver, después de colocar todos los componentes, utilicé adhesivos de vinilo con aspecto de madera para que el resultado final se viera mejor. La pantalla del reloj brilla a través de la pegatina, lo que crea un efecto de aspecto muy agradable.

Recomendado: