Tabla de contenido:

NeoClock: 7 pasos (con imágenes)
NeoClock: 7 pasos (con imágenes)

Video: NeoClock: 7 pasos (con imágenes)

Video: NeoClock: 7 pasos (con imágenes)
Video: [SUB ESP]ENHYPEN 'EN-O'CLOCK' EP.44 2024, Junio
Anonim
Image
Image

Se trata de construir un reloj utilizando los fantásticos anillos de neopixel de Adafruit. Lo divertido de este reloj es que en realidad tiene dos anillos de neopíxeles, uno para contar las horas y otro para los minutos, segundos y milisegundos. El reloj mantiene la hora perfecta con el chip DS3234 DeadOn Real Time Clock de Sparkfun. Fácil de construir y divertido de modificar. Mi esperanza es que inspire a otros a construir relojes u otro arte usando los anillos de neopixel.

Para aquellos de ustedes que quieran obtener todos mis archivos en un formato simple de administrar, no duden en descargarlos de mi repositorio de github para este proyecto en

Paso 1: diseñar el reloj

Diseñando el reloj
Diseñando el reloj
Diseñando el reloj
Diseñando el reloj
Diseñando el reloj
Diseñando el reloj
Diseñando el reloj
Diseñando el reloj

Sabía desde el principio que quería utilizar al menos dos anillos de neopíxeles. Después de un poco de trabajo, decidí que el mejor diseño sería tener un anillo dentro del otro, lo que mantiene la forma original de un reloj. El anillo más pequeño serían las horas y el tiempo restante se mantendría en el anillo más grande. Algunas consideraciones de diseño incluyeron el costo de los neopíxeles, el requisito de potencia, el tamaño de las piezas cortadas con láser y el tipo de arte que quería poner en ellas.

Con este paso completado, decidí que necesitaba comprender la electrónica antes de crear los planes para cortar con láser el cuerpo del reloj.

Paso 2: diseño de la electrónica

Diseñando la Electrónica
Diseñando la Electrónica
Diseñando la Electrónica
Diseñando la Electrónica
Diseñando la Electrónica
Diseñando la Electrónica
Diseñando la Electrónica
Diseñando la Electrónica

Diseñar la electrónica se redujo a conocer de antemano los elementos que quería en el reloj:

  • Anillos de neopixel (60 y 24)
  • Arduino (el cerebro)
  • Regulación del reloj (los arduinos no marchan bien)
  • Gestión de energía

El tamaño y los requisitos de potencia de los neopíxeles están bien documentados. Como funcionan con 5V DC, decidí ir con un Arduino de 5V y simplificarme las cosas. Teniendo en cuenta el espacio, decidí hacer un prototipo en un Arduino Uno normal, pero para la electrónica final elegí un Arduino Mini.

La primera versión de este proyecto provino directamente de la página de conexiones básicas NeoPixel de Adafruit. He incluido el diagrama del sitio web para facilitar las cosas. Dos cosas son importantes a partir de esto:

  1. Se necesita un condensador de 1000uF para evitar que la sacudida de corriente inicial dañe los píxeles.
  2. Se necesita una resistencia de 470ohm en el primer píxel del anillo de 60 cuentas (esta resistencia está integrada en el anillo de 24 cuentas)

Adafruit también tiene un conjunto de mejores prácticas de NeoPixel que debe leer antes de continuar con el diseño.

Mantener el tiempo en el reloj es otro problema. El reloj incorporado en el arduino no es suficiente para mantener un buen tiempo durante largos períodos de tiempo. Un problema peor es que el tiempo en el arduino puede necesitar ser reiniciado cada vez. Las computadoras resuelven este problema usando una pequeña batería en el chip del reloj para mantener el tiempo entre apagones. En el pasado, usaba algo como ChronoDot de Adafruit. Pero en este caso quería una excusa para usar el DS3234 (DeadOn RTC) de SparkFun. También puede mantener la información de la fecha en DeadOn RTC si desea integrarla en el reloj.

Finalmente, la administración de energía necesitaba cierta consideración. Ya sabía que todo tenía que ser de 5 V, pero la cantidad de corriente necesaria parecía ser un misterio. Un regulador de voltaje común en la mayoría de los proyectos es el L7805. Esto tomará voltajes de hasta 24 V y una corriente máxima de hasta 1,5 A. Sabía que tenía un mosto de pared de 12V 1.5A por ahí, así que decidí que este sería el regulador de voltaje perfecto (¡y barato!) Para el proyecto.

Las piezas restantes iban a venir de mi caja de piezas o Radio Shack. Incluían los cables, los interruptores y el conector de alimentación de CC.

Paso 3: construcción de la electrónica

Construyendo la Electrónica
Construyendo la Electrónica
Construyendo la Electrónica
Construyendo la Electrónica
Construyendo la Electrónica
Construyendo la Electrónica

Una lista completa de la electrónica que compré para construir este proyecto se puede encontrar en mi repositorio de github aquí: Lista de piezas de electrónica. Tiene enlaces a la página del producto para cada pieza e incluye información adicional, incluido el SKU del producto. Hice un prototipo de esto rápidamente en una placa de pruebas y pasé al corte y la construcción con láser antes de tomar fotografías. Sin embargo, lo construí para que fuera fácil de desmontar, así que desglosé las piezas en las fotos de arriba para ti.

Mire de cerca las imágenes, ya que los cables se doblaron intencionalmente para que sean fáciles de seguir y para mantener delgado todo el perfil de la electrónica. Hacer este prototipo inicial antes del diseño del corte con láser me permitió verificar el grosor de las piezas para poder determinar las dimensiones finales del cuerpo del reloj.

Notarás que hice un par de tablas de pruebas personalizadas. Intenté tomar fotografías de la parte posterior de esas tablas para que puedas repetirlas. Puede comprar una variedad de placas de prueba como estas por un par de dólares y hacer que se adapten a su proyecto.

El cableado es sencillo, pero las cosas importantes para recordar de las imágenes son estas:

  • Los interruptores Mode y Set necesitarán resistencias desplegables. Usé resistencias de 2.21Ohmios que tenía por ahí, pero cualquier pequeña resistencia funcionará (preferiblemente no menos de 1kOhm). Esto estabiliza los pines de entrada Arduino conectados para que cuando suban se distingan del ruido.
  • La onda cuadrada (SQW) del DS3234 estaba conectada a tierra porque no está en uso.
  • La energía del L7805 se coloca en el Arduino Mini en el pin RAW. Pon siempre la potencia que entra en el Arduino en RAW.
  • El primer píxel del anillo de 60 neopíxeles tiene una resistencia de 470 ohmios para reducir cualquier daño al primer píxel por picos de datos. Esto no debería ser un problema ya que el neopixel de 24 conteos ya tiene una resistencia incorporada para esto, pero es mejor prevenir que curar.
  • Los interruptores de modo y ajuste son interruptores de botón pulsador momentáneo SPST

Los colores de los cables son:

  • Rojo: + 5VDC
  • Negro: Tierra
  • Verde: datos
  • Amarillo, azul, blanco: cables especiales para DS3234

Si es la primera vez que usa neopixels, debe recordar que se pueden considerar como una cadena larga. Por lo tanto, puede parecer extraño hablar de un "primer píxel" en un anillo, pero de hecho hay un comienzo y un final para cada cadena en los anillos. En este proyecto, los 24 píxeles del anillo pequeño son lo primero y los 60 píxeles del anillo más grande vienen después. Esto realmente significa que tengo una cadena de 84 neopíxeles.

Para el cableado del Arduino Mini:

  • DS3234 se conecta en los pines 10-13
  • Los interruptores Mode y Set están en los pines 2 y 3
  • Los datos de neopixel provienen del pin 6.

También recomiendo colocar los 6 encabezados en la parte inferior del Arduino Mini para que pueda programarlo a través de un cable FTDI.

Una nota importante sobre la corriente: este reloj requiere mucho. Estoy seguro de que podría resolverlo, pero mi experiencia práctica es que cualquier cosa igual o inferior a 500 mA eventualmente causará apagones. Esto se manifiesta como el reloj parpadeando con colores locos y no marcando el tiempo. Mi mosto de pared final es de 12V y 1.5A y nunca he tenido un apagón con él. Sin embargo, 1,5 A es el límite que tomará el regulador de voltaje (y otras partes). Así que no exceda esta cantidad.

Paso 4: codificación del reloj

Codificación del reloj
Codificación del reloj

El código completo del reloj se puede encontrar en NeoClock Code en GitHub. He incluido el archivo aquí, pero se producirán cambios en el repositorio.

Creo que escribir código puede ser abrumador si intentas hacer todo a la vez. En lugar de ir por eso, trato de comenzar con un ejemplo funcional y desarrollar funciones a medida que las necesito. Antes de entrar en eso, quiero señalar que mi código proviene de la combinación de muchos ejemplos de los siguientes repositorios y el foro Arduino CC. ¡Siempre dé el crédito donde se debe!

  • https://github.com/adafruit/Adafruit_NeoPixel
  • https://github.com/zeroeth/time_loop
  • https://github.com/sparkfun/DeadOn_RTC

Algunos ejemplos de código de estos repositorios se pueden encontrar en mi directorio de ejemplos de código

El orden de operaciones que usé para construir el código fue algo como esto:

  • Confirme que los neopíxeles funcionan con el ejemplo de prueba de hebras
  • Intente ejecutar un reloj con el código de ciclo de tiempo
  • Modifique el reloj para que funcione en dos anillos en lugar de solo uno
  • Agregue el DS3234 para mantener el tiempo a través del ejemplo DeadOn RTC
  • Agregue los interruptores de modo y ajuste
  • Agregue código de Debounce con la ayuda del Tutorial de Debounce de Arduion
  • Agregue algunos temas de color para los LED del reloj
  • Agregue algunas animaciones para las marcas de 0, 15, 30 y 45 minutos
  • Agregue puntos de la brújula al reloj para orientar las marcas de 0, 15, 30 y 45 minutos

Si quieres ver cómo construí este código, puedes usar GitHub para ver cada confirmación de código. El historial del reloj se encuentra en el historial de compromisos.

Fue divertido agregar esquemas de color, pero al final solo incluí cuatro de ellos en el menú. Cada tema establece un color específico en las "manecillas" de las horas, los minutos, los segundos y los milisegundos. Realmente, las opciones son infinitas aquí, pero incluí los temas (se enumeran los nombres de los métodos):

  • setColorBlue
  • setColorRed
  • setColorCyan
  • setColorOrange

Sin embargo, puede encontrar estos métodos adicionales en el código:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

Se agregaron animaciones porque me gustó la idea de los relojes viejos repicando en los cuatro puntos de quince minutos en el reloj. Para este reloj hice las siguientes animaciones:

  • 15 minutos: Colorea los anillos de rojo
  • 30 minutos: Colorea los anillos de verde
  • 45 minutos: Colorea los anillos de azul
  • Top of the Hour: haz un arcoíris en los dos anillos

La usabilidad resultó ser un problema con el reloj porque nadie podía orientarlo. Después de todo, son solo dos anillos de LED. Entonces, para resolver el problema, agregué los puntos de la brújula al reloj. Esto mejoró mucho la capacidad de decir la hora. Si hubiera sabido de esto antes de enviar las piezas cortadas con láser, podría haber agregado algo al arte. Pero resulta que no puedes ver el arte tan bien en la oscuridad, por lo que tener los puntos de la brújula realmente ayuda. Una consideración con esto es que cuando decide colorear un píxel, primero debe capturar el color actual y crear un nuevo color mezclado. Esto le da una sensación más natural.

Un último dato es sobre los milisegundos. Los milisegundos en el Arduino provienen del cristal interno de Arduino y no del DS3234. Depende de usted si desea mostrar milisegundos o no, pero yo lo hice para que el reloj siempre pareciera estar haciendo algo. Sin embargo, puede que te moleste que los milisegundos y los segundos no siempre se alineen, pero en la práctica nadie me lo ha mencionado al mirar el reloj y creo que se ve bien.

Paso 5: Diseño de archivos cortados con láser

Diseño de archivos cortados con láser
Diseño de archivos cortados con láser
Diseño de archivos cortados con láser
Diseño de archivos cortados con láser
Diseño de archivos cortados con láser
Diseño de archivos cortados con láser
Diseño de archivos cortados con láser
Diseño de archivos cortados con láser

Hay dos consideraciones que tuve que hacer al diseñar los archivos cortados con láser. El primero fue el material con el que quería construirlo y el segundo fue cómo se construiría. Sabía que quería un acabado de madera con acrílico para difundir los neopíxeles. Para averiguar el material, primero ordené algunas muestras de Ponoko:

  • 1x Chapa de MDF - Nogal
  • 1x Chapa de MDF - Cerezo
  • 1x Acrílico - Gris claro
  • 1x Acrílico - Ópalo

Las selecciones de madera me permiten ver cómo se vería la rasterización y cómo se vería la quemadura en el costado del reloj. El acrílico me permitiría probar la difusión de los neopíxeles y comparar cómo se vería contra la madera. Al final me decidí por la madera de Cerezo con acrílico Opal.

Las dimensiones del reloj fueron determinadas principalmente por el tamaño de los anillos de neopixel. Lo que no sabía era el grosor que tenía que tener para encajar en la electrónica. Habiendo construido la electrónica y sabiendo que la madera tenía un grosor de aproximadamente 5,5 mm, determiné que necesitaba unos 15 mm de espacio dentro del reloj. Eso significaba tres capas de madera. Pero como el frente y la parte posterior ya ocupaban la mayor parte del espacio en mi diseño, necesitaba romper esos anillos en "nervaduras" que podría pegar más tarde.

Usé InkScape para dibujar en la plantilla proporcionada por Ponoko. Después de sacar el cuerpo del reloj, me puse a dibujar el árbol a mano. No pude importar la imagen original que me inspiró, pero no fue terrible descubrir cómo hacer algo similar yo mismo.

El costo de los materiales fue de solo $ 20, pero el costo del corte resultó ser de aproximadamente $ 100 más. Dos cosas contribuyeron a esto:

  • Las curvas y los círculos cuestan más porque la máquina se mueve en dos ejes y este diseño tiene muchas curvas.
  • La rasterización requiere muchas pasadas hacia adelante y hacia atrás a través de la pieza. Dejar esto habría ahorrado más dinero, pero me gustó.

Después de finalizar el diseño, envié los archivos EPS a Ponoko y mis piezas se terminaron aproximadamente una semana después.

Tenga en cuenta que no incluí los interruptores Mode y Set ni el DC Power Jack en el diseño. Cuando envié esto, todavía no había decidido esas partes. Para darme más flexibilidad, los dejé y decidí perforarlos más tarde a mano.

Paso 6: construcción del reloj

Construyendo el Reloj
Construyendo el Reloj
Construyendo el Reloj
Construyendo el Reloj
Construyendo el Reloj
Construyendo el Reloj
Construyendo el Reloj
Construyendo el Reloj

Cuando llegaron todas las piezas construí el reloj. El primer paso fue el cuerpo del reloj, que me obligó a perforar las costillas y pegarlas en la parte trasera y delantera. Puse dos capas de costillas en la parte posterior y una capa en la parte delantera y las puse con pegamento para madera. Para el frente, usé pegamento para madera para unir los anillos acrílicos y los círculos de madera. Tenía una pieza central de repuesto que corté como un espacio en blanco que fue útil durante la construcción. Lo pegué a la parte posterior de la pieza del árbol y eso me dio un lugar donde podría pegar los neopixels más tarde.

Con el cuerpo construido, decidí perforar agujeros para los interruptores y el conector de alimentación. Un poco de geometría (como se ve en la imagen) me ayudó a alinear todo. Usando una pieza de madera separada en el exterior mientras perforaba (¡con mucho cuidado!), Hice los agujeros y pegué los interruptores y el conector.

Todos los componentes electrónicos fueron los siguientes. Primero pegué los neopíxeles seguidos del condensador. Estos los conecté a la placa de ruptura de energía de neopixel. Luego, para la parte posterior, coloqué los cables en los interruptores y el conector de alimentación. También incluí el regulador de voltaje L7805.

Una nota rápida sobre la orientación de los anillos. Para el gran anillo de 60 píxeles, debe orientar el reloj de modo que uno de los píxeles esté exactamente en la parte superior para marcar los cero minutos. Qué píxel no importa y llegaré al por qué en un minuto. Para el pequeño anillo de 24 píxeles, debe orientar el reloj de modo que la parte superior esté entre dos píxeles. La razón de esto es que si quieres marcar 12 horas, terminas iluminando dos píxeles en lugar de uno. Al tener el desplazamiento y la difusión del plástico, parecerá que realmente tienes 12 píxeles de ancho.

En cuanto a qué píxel designa el código como "superior" para cada anillo, debe editar un poco el código. Tengo dos valores en mi código llamados "inner_top_led" y "outer_top_led". En mis relojes, el "inner_top_led" era de 11 píxeles desde el inicio del anillo pequeño y el "external_top_led" era de 36 píxeles desde el inicio del anillo grande. Si orienta los anillos de manera diferente, cambiaría estos valores para que sean los de su orientación. Un poco de experimentación y encontrará el valor correcto con bastante rapidez.

En este punto probé que todo funcionaba como se esperaba.

Pero al igual que con todos los proyectos, me encontré con un problema cuando me di cuenta de que no había descubierto cómo se mantendría. Noté que tenía aproximadamente 3/8 de pulgada de espacio entre los neopíxeles y las costillas, así que me dirigí a Home Depot y obtuve una clavija de 3/8 de pulgada y varios imanes de neodimio. Construí pequeños soportes de madera en tres lugares y los lijé para poder poner dos imanes en cada soporte (usando superpegamento). Terminé con 3 pares de 2 stands cada uno. Luego los pegué en el marco y lo mantuve todo en su lugar con una abrazadera. Hice esto mientras el pegamento de los soportes estaba húmedo para que todo se alineara y luego se secara en el lugar correcto. Esto funcionó a la perfección y me encanta que todo el lanzamiento esté oculto.

Por último, me di cuenta de que necesitaba colgarlo en la pared, así que perforé un pequeño hangar en la parte posterior para poder colocarlo en la pared.

Paso 7: Pensamientos finales

Este proyecto fue muy divertido de construir y disfruté aprendiendo sobre neopixels y el DS3234. Disfruté especialmente finalmente construir un proyecto que se veía bien de principio a fin. Hay un par de cosas que actualizaría si volviera a hacer esto, pero son menores:

  • Elegí dos botones en lugar de tres por simplicidad. Pero tener un botón que me permitiera bajar y subir habría sido bueno para configurar el reloj.
  • El botón de modo y el botón de ajuste son indistinguibles. A menudo los mezclo. Quizás los pondría en lados opuestos en el futuro.
  • Nunca terminé el frente de madera. Al principio me gustó el aspecto crudo y luego me preocupé de que si estropeaba el acabado, costaría mucho arreglarlo.
  • Rasterizar el árbol estaba bien, pero podría haber dibujado más detalles para el árbol en el futuro.
  • Atenuar el reloj también sería una buena característica, ya que es bastante brillante en la oscuridad. Sin embargo, la atenuación está ligada al color y me di cuenta de que ese bit estaba tardando demasiado, así que lo dejé caer. Probablemente volvería a invertir en esa función en el futuro.

Gracias por leer este instructivo. Espero que hagas tu propio proyecto de reloj o neopixel y lo compartas conmigo. ¡Feliz edificio!

Recomendado: