Tabla de contenido:

Un reloj de Regreso al futuro: 8 pasos (con imágenes)
Un reloj de Regreso al futuro: 8 pasos (con imágenes)

Video: Un reloj de Regreso al futuro: 8 pasos (con imágenes)

Video: Un reloj de Regreso al futuro: 8 pasos (con imágenes)
Video: VIAJERO DEL TIEMPO advierte de lo que PASARÁ EN 2028 🕰👽 #shorts 2024, Mes de julio
Anonim
Un reloj Regreso al futuro
Un reloj Regreso al futuro

Este proyecto nació como un reloj despertador para mi hijo. Hice que pareciera el circuito del tiempo de Regreso al futuro. La pantalla puede mostrar la hora en varios formatos, incluido el de las películas, por supuesto. Es configurable a través de los botones en la parte superior del gabinete, pero también a través de una página web servida por Raspberry Pi Zero en el interior. En uno de los modos de visualización, mostrará el clima local (de mi estación meteorológica con Arduino), así como el pronóstico y los recordatorios diarios, configurados a través de la interfaz web. También tiene audio gracias a un DAC y transmitirá música usando el protocolo AirPlay. El sonido de la alarma puede ser cualquier archivo de audio que elija. Atenuará e iluminará la pantalla automáticamente en determinados momentos del día (por ejemplo, al amanecer y al anochecer).

Paso 1: antecedentes

El año pasado estaba buscando un nuevo proyecto de Arduino y acababa de terminar el primero, una estación meteorológica doméstica. Mi hijo de 11 años acababa de ver las películas de Regreso al futuro por primera vez, así que pensé que sería divertido construirle un reloj despertador que se pareciera al circuito del tiempo en el Delorean para su cumpleaños. Esta no es una idea nueva, hay bastantes proyectos similares (este, por ejemplo), así que pensé que sería un buen proyecto aprender de los demás y adquirir nuevas habilidades.

La primera versión funcionó bastante bien (no estaba lista para su cumpleaños: lo terminé en Navidad) pero me volví bastante ambicioso en lo que quería que hiciera y descubrí que mi boceto seguía llegando al límite de memoria del Arduino. También tenía varios módulos de hardware externos pequeños (WiFi, reproductor MP3, amplificador de audio, RTC, etc.), por lo que todo se estaba volviendo un poco difícil de manejar. Al final, decidí cambiarme a una plataforma Raspberry Pi que simplificó el hardware y me permitió incluir muchas más funciones y características.

Paso 2: Componentes de hardware principales

Dentro de la caja

Aquí están los componentes electrónicos que utilicé. La mayoría de ellos provienen de Core Electronics en Australia pero, por supuesto, también están disponibles en otros lugares:

  • 4 x pantalla alfanumérica cuádruple - amarillo-verde
  • Raspberry Pi Zero W
  • Pimoroni pHAT DAC para Raspberry Pi Zero
  • Amplificador de audio (PAM8403 IC)
  • Fuente de alimentación Raspberry Pi 3+
  • 4 x Jumper Wire - 0.1 ", 5 pines, 12"
  • Cable plano de 40 pines (2 x 20)
  • Cabecera macho GPIO de Raspberry Pi
  • Raspberry Pi Modelo B - Cabecera protegida GPIO (2X20)
  • Cabecera apilable GPIO para Pi A + / B + / PI 2 / PI 3 - extralargo 2X20
  • Cabezal macho de 4 x 5 pines
  • 2 pequeños altavoces de 3 W
  • 2 x cables coaxiales para conexión de audio analógico DAC a Amp
  • Veraboard o PCB personalizado para manejar Rpi a un amplificador, LED, botones
  • 5 x interruptores pulsadores momentáneos
  • 4 bloques de terminales de tornillo de montaje en PCB de 2 vías

La caja

  • Trozos y trozos de MDF, tornillos y pernos para hacer el 'chasis'
  • Perspex teñido de verde, proveedor local
  • Estireno, pegamento para modelar, pintura en aerosol (color aluminio) de una tienda de pasatiempos local
  • Pegatinas (archivo disponible a pedido - impreso por Redbubble)

Paso 3: Poniéndolo todo junto

Poniendolo todo junto
Poniendolo todo junto

La pantalla LED del reloj consta de pantallas alfanuméricas de 16x14 segmentos, afortunadamente la misma cantidad de caracteres que el circuito de tiempo Regreso al futuro. Si bien solo los primeros tres caracteres deben ser alfanuméricos y el resto podrían ser pantallas numéricas de 7 segmentos para emular el accesorio de la película, decidí hacerlos todos alfanuméricos para permitir cierta flexibilidad en lo que podría mostrarse y para que todos se vean bien. mismo. Las mochilas cuádruples Adafruit son una gran solución aquí y se pueden ejecutar en el bus I2C de la Raspberry Pi. Puede encontrar más información sobre estas unidades y cómo conectarlas aquí en el sitio web de Adafruit. La única cosa ligeramente no estándar que tuve que hacer fue cambiar las direcciones de tres de ellos para que cada mochila fuera única.

Para reproducir audio (en estéreo), incluí el Pimoroni pHAT DAC y un amplificador de audio estéreo de 2 x 3 W basado en el chip PAM8403. El pHAT DAC es realmente fácil de conectar al Pi. Puse un encabezado macho de 2 x 20 pines en el Pi y un encabezado de apilamiento GPIO en el DAC para que pudieran enchufarse uno encima del otro. Los pines del cabezal macho pasan por la parte superior del DAC, lo que me permite ejecutar un cable plano con conectores hembra, inicialmente a una ruptura de Raspberry Pi para probar la placa de pruebas, pero finalmente a un encabezado cubierto en una PCB hecha a medida.

Para el amplificador de audio, hay muchas opciones (incluso obtener el chip y ensamblar el suyo). Este tiene la opción de silenciar la salida simplemente cambiando el estado de uno de los pines (alto está encendido, bajo está apagado) y lo conecté para que esto pudiera controlarse desde el Pi. En mis intentos iniciales de conectar esto, descubrí bastante ruido de fondo cuando el audio estaba encendido. Después de jugar mucho con la conexión a tierra, finalmente intenté mover el voltaje de suministro de entrada de los 5V del Pi a 3.3V y eso lo solucionó. Supongo que hay mucho ruido generado por las diversas señales digitales que vuelan, pero parece que el suministro de 3.3V está aislado de alguna manera.

Otras conexiones incluyen el audio analógico desde el DAC al amplificador (usé un cable coaxial aquí para ayudar a administrar la captación de ruido) y la salida de audio a un par de parlantes pequeños de 3W que encajan en el gabinete. También hay conexiones GPIO para los cuatro interruptores momentáneos en la parte superior de la caja y conecté un botón momentáneo a los pines "RUN" de restablecimiento completo (consulte la sección Conexiones adicionales en esta página). El botón de reinicio está montado fuera de la vista en la parte posterior del gabinete. Aquí hay un diagrama que muestra las conexiones:

Paso 4: una PCB personalizada

Un PCB personalizado
Un PCB personalizado

Si bien no hay nada demasiado complicado en el circuito, hay bastante cableado y una placa de pruebas puede parecer un espagueti con bastante rapidez. Así que diseñé un PCB para mantenerlo todo bajo control. Es una tabla de una cara hecha en casa y tengo un amigo que me ayudó a prepararla. Después de que se hizo y se conectó, me di cuenta de que olvidé incluir conexiones para los bloques de terminales para el audio y luego hice un cambio para mover el suministro del amplificador de audio de 5V a 3.3V, por lo que no es ideal y tuve que agregarlo. algunos Veroboard para permitir las conexiones de audio. Además, los pines de la placa del amplificador de audio tienen una separación no estándar (incluso varían entre pines), por lo que la conexión para esto a la PCB principal es un poco horrible con 11 cables de conexión cortos de ~ 1 cm.

Si hiciera otra placa, incluiría todas estas modificaciones y también cambiaría el conector de los cuatro botones a algo un poco más agradable. El DAC y Pi se apilarían en la parte superior, por lo que no se necesita cable plano. El diagrama de arriba muestra cómo podría verse.

Paso 5: el recinto

El recinto
El recinto
El recinto
El recinto
El recinto
El recinto

Quería hacer un recinto que pareciera una fila del circuito de tiempo de una película. Tres filas de pantallas LED habrían sido demasiado para un reloj despertador y habrían aumentado significativamente el costo. Pensé en hacer el cerramiento de aluminio, pero no tengo ninguna habilidad en esa área. Sin embargo, he hecho bastantes modelos de plástico en mi vida y tengo algo de experiencia en carpintería, así que decidí hacer un marco con MDF para montar los LED y los altavoces y fijar el metacrilato en la parte delantera, luego cubrirlo con un estireno de 5 lados. caja con bisel en la parte frontal, pintada con pintura en aerosol de aluminio metalizado. El plástico y la pintura se obtuvieron en una tienda de modelos local. Eché un vistazo de cerca a las etiquetas en el accesorio de la película e hice todo lo posible para copiar los colores, el tipo de fuente y el tamaño. Usé Photoshop para construir las etiquetas y las imprimí como pegatinas de Redbubble.

Las imágenes de arriba muestran:

  1. La parte delantera del chasis de MDF. Las 4 mochilas LED están montadas en la parte delantera con metacrilato teñido de verde
  2. Dentro de la caja. Mochilas todas montadas y alineadas, Raspberry Pi y PCB personalizado, altavoces a cada lado.
  3. Cableado instalado y carcasa exterior lista para funcionar. ¡Fue un poco apretado!

Paso 6: Configuración de la Raspberry Pi

Tuve algunos problemas de compatibilidad con Raspbian Stretch (que pueden haber sido solucionables si hubiera persistido) pero Jessie funciona bien, así que decidí seguir con eso.

Configuré el Pi como una unidad sin cabeza con acceso VNC y SSH. Esto podría haberse hecho sin tener que enchufar un teclado o monitor, pero tomé prestado el televisor y busqué un teclado, y lo dejé sin cabeza con bastante rapidez. A partir de ese momento, usé VNC a partir de ese momento.

Mi código de reloj usa Python 2.7.9 y se basa en bastantes bibliotecas, que se enumeran a continuación. Además de esto, estoy ejecutando un servidor web Flask y MQTT para control remoto y Shairplay para transmisión de música. Solo seguí las notas de instalación en línea para todos estos y no tuve ningún problema. Aquí están las bibliotecas de Python y otros paquetes, etc. que necesitaba instalar con enlaces a notas de instalación o simplemente el comando que necesita ejecutar para obtenerlo:

Bibliotecas de Python

  • Adafruit_LED_Mochila
  • Rpi. GPIO (apt-get install python-rpi.gpio)
  • alsaaudio
  • paho.mqtt.client (instalación de pip paho-mqtt)
  • frasco (apt-get install python-flask)

Otros paquetes, etc

  • mosquito (apt-get install mosquito)
  • aeropuerto
  • El sitio web de Pimoroni tiene buena documentación sobre cómo configurar el DAC, así que simplemente lo ejecuté.

Paso 7: software

Image
Image
Software
Software

El código del reloj se escribió en Python y utiliza subprocesos para reproducir la alarma y pitidos ocasionales en segundo plano sin bloquear las actualizaciones de la pantalla. Utilicé la biblioteca ConfigParser y el archivo de configuración que mantiene se lee y escribe mediante el código del reloj, así como la aplicación web Flask, de modo que cada vez que se cambia la configuración a través de la interfaz web o el reloj, se sincroniza. El software del reloj también incluye un intermediario MQTT para permitir que el control del modo de visualización y el silenciamiento se controlen de forma remota. Mi motivo oculto es eventualmente escribir una aplicación de iOS para el control remoto, pero la interfaz web funciona lo suficientemente bien por ahora.

La primera imagen de arriba muestra cómo se ve el reloj en sus diversos modos de visualización, y hay un video corto que lo muestra en modo de desplazamiento.

Si bien el código no es bonito a la vista, es agradable y estable. Me complace enviárselo a cualquiera que lo solicite y lo pondré en línea cuando esté mejor organizado y comentado.

La aplicación web

La siguiente imagen muestra cómo se ve la interfaz web del reloj. También hay páginas de configuración y control que hacen que sea mucho más fácil jugar con el reloj sin tener que presionar mucho los botones:-).

Paso 8: ¿Qué sigue?

¿Qué sigue?
¿Qué sigue?

Hay un decodificador de metadatos de Python shareport disponible, así que creo que agregaré algo de código para mostrar información como el título y el artista cuando se reproduzca música. También sería bastante fácil calcular las horas de salida y puesta del sol para que la pantalla se pueda iluminar y atenuar automáticamente, en lugar de configurarla manualmente. Quizás agregar una función de radio por Internet también sería divertido. La pantalla de desplazamiento también podría ser más configurable.

Recomendado: