Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Proyectos Fusion 360 »
Este es un reloj basado en Arduino con una pantalla OLED que funciona como un reloj con la fecha, como un temporizador de siesta y como una luz nocturna. Las diferentes "funciones" están controladas por un acelerómetro y se seleccionan girando el reloj del cubo.
Quería un nuevo reloj de mesa de noche, pero no quería gastar dinero en un reloj elegante que tenía toneladas de funciones que no usaría. Además, había estado recopilando componentes y sensores que estaban por ahí, ¡así que decidí usarlos para hacer mi propio reloj!
Tenía algunos objetivos para este proyecto:
- Muestre esa hora con una opción para que se apague
- Incluir una función de luz nocturna
- Incluye un temporizador de siesta de 15 minutos con alarma.
- Poder mostrar la fecha
Suministros
- Arduino Pro Mini 5V
- Acelerómetro de 3 ejes ADXL335
- Reloj en tiempo real de precisión DS3231 AT24C32 IIC
- Mini altavoz
- Pantalla OLED SSD1306 IIC 0.96in
- Fuente de alimentación de 5 V CC
- LED x 2
- Resistencias 220ohm x 2
- Conector de barril de CC
- Cable
-
Instrumentos
- Cortadores / pelacables
- Soldador / soldador
- Impresora 3D (opcional)
- Programador FTDI para interactuar entre el Pro mini y el Arduino IDE
Paso 1: Prototipo y prueba del circuito
Conecte los componentes al Arduino. El diseño de la placa de pruebas o el esquema se muestran arriba. El RTC y OLED usan el protocolo I2C para interactuar con Arduino y utilizan los pines A4 y A5. El acelerómetro utiliza 3 pines analógicos. Usé A0, A1, A2. Los LED y el piezo pueden usar cualquiera de los pines digitales, usé 4 y 8 respectivamente.
Interfaz con cada componente. Tuve que instalar algunas bibliotecas de Arduino para interactuar con cada componente. Se muestran en la imagen de arriba.
Código usando el IDE de Arduino. Revisé algunos bocetos de ejemplo proporcionados por cada biblioteca para descubrir la sintaxis adecuada para cada componente en función de lo que quería que hicieran. Se me ocurrió un boceto para cada componente para probarlos individualmente. Se proporcionan a continuación. Empecé con el altavoz piezoeléctrico porque era el más fácil. En realidad, no necesitaba una biblioteca especial, solo una función específica que establece la frecuencia y el sonido. Hacer que los LED funcionaran solo requería tirar de uno de los pines digitales hacia arriba y hacia abajo. A continuación, pasé al OLED y esto también fue bastante simple de configurar. El boceto a continuación es una demostración de Adafruit que pasa por todas las animaciones / textos que se pueden mostrar. Luego, traté de que el RTC funcionara. El boceto que proporcioné fue parte de un ejemplo en la biblioteca que obtiene la hora actual y la imprime en el monitor en serie. Finalmente, utilicé el ejemplo proporcionado para probar el acelerómetro. Las salidas de cada eje se imprimen en el monitor en serie.
¡Ahora es el momento de poner todo junto!
Paso 2: Programa principal
Ahora que sé que todo funciona de forma individual, puedo empezar a crear un programa que reúna todo. Discutiré mi proceso para escribir el programa a continuación, pero siéntase libre de descargar el código completo a continuación para usarlo en su propio proyecto. Traté de dejar comentarios específicos para que pueda recorrer el código usted mismo.
Necesitaba mostrar la hora y la fecha en el OLED, lo cual era bastante simple. Solo tuve que imprimir la hora actual en la pantalla en lugar del monitor en serie. Hubo algunas cosas de formato que tuve que tener en cuenta para que mostrara un formato de 12 horas en lugar de 24 y agregar / eliminar ceros donde fuera apropiado. La fecha fue similar con la adición de mostrar el mes y el día dentro de rectángulos dibujados en la pantalla. Usé un bucle FOR anidado para crear el temporizador y activar el piezo después del final del bucle. Decidí hacer que la pantalla parpadeara mientras sonaba el timbre, que era una animación básica tomada de la demostración de Adafruit. Hice girar el cubo de nuevo a la posición del reloj como la única forma de apagar el timbre. Finalmente, quería una forma de apagar la pantalla, lo cual se logró simplemente borrando la pantalla. Ahora, necesitaba que todas estas funciones funcionaran en función de las salidas del acelerómetro. Usé el script Accel_Test para determinar las coordenadas del eje de cada posición que quería que se ejecutara cada función. Moví manualmente el chip del acelerómetro y registré las lecturas en el monitor en serie. El diagrama de arriba da las coordenadas de salida de cada posición en GRIS. Las coordenadas en ROJO son los límites entre cada posición y usé esos números para mi programa. En las 4 posiciones de visualización, solo se necesitan las coordenadas de los ejes X e Y. La quinta posición de la luz nocturna utiliza el eje Z. Usé declaraciones IF simples para las posiciones del acelerómetro antes de cada bloque de funciones. Si usa un acelerómetro diferente, estas coordenadas pueden variar y deberán ajustarse en el programa.
Paso 3: Impresión 3D del cubo
Pensé que un cubo sería el mejor diseño para adaptarse a cómo quería que funcionara el reloj. Usé fusion360 para hacer el modelo. Necesitaba un recorte para el OLED y el conector de barril. También quería un acceso fácil para reemplazar la batería de la celda en el RTC después de que todo estuviera cableado. Necesitaba una ranura para mantener el Arduino en una orientación que fuera fácil de reprogramar si fuera necesario. Además, el gabinete necesitaba ser fácilmente extraíble para poder acceder al Arduino. Puede ver el modelo CAD arriba y los archivos STL a continuación.
Imprimí el cuerpo en PLA negro con un 20% de relleno y una resolución de 0,2 mm.
La carcasa o funda se imprimió en filamento flexible Solutech con un 100% de relleno y una resolución de 0,3 mm. Utilicé este material porque tiene cierta flexibilidad que facilita el estiramiento sobre el cuerpo. También tiene una sensación más suave al girar el reloj. Por último, elegí un filamento transparente para que brillaran los LED de las luces nocturnas.
Paso 4: Montaje
Conecté todo junto usando el esquema del Paso 1. Usé una pequeña pieza de perfboard para conectar todos los cables comunes para no tener que soldar varios cables a un pin en el Arduino. Se usó pegamento caliente para asegurar todo en su lugar respectivo, excepto el Arduino. Simplemente fue empujado en su ranura designada. Me aseguré de que la placa del acelerómetro estuviera perpendicular y nivelada en la parte inferior del cuerpo para que las coordenadas del código no tuvieran que cambiarse.
Paso 5: ¡Cargue y listo
Ahora el programa final se puede cargar en el reloj para configurar la hora correcta. La batería de la celda debe mantener el tiempo incluso cuando la energía está desconectada. Deslice la funda impresa en 3D sobre el cuerpo para ocultar todos los componentes y tendrá un reloj de cubo completo.
Espero que disfrutes haciendo este proyecto y lo encuentres tan útil como yo. Lo bueno de este proyecto es que es muy personalizable. Siéntase libre de agregar sus propias funciones diferentes, como una función de alarma, usar diferentes componentes como un OLED más grande, un receptor de radio FM, etc.