Habiendo recibido un par de tablas Arduinoy varios componentes de radio para familiarizarse con los microcontroladores, el autor decidió hacer algo interesante y al mismo tiempo útil. Teniendo en stock una gran cantidad de LED, surgió la idea de crear un reloj binario.
En el lado de la electrónica, un reloj binario no es particularmente complicado, pero el autor complicó la tarea y decidió no guardar botones y LED. Inicialmente, el proyecto consistía en usar 22 LED, 6 botones y un tweeter. También hubo una idea de armar un reloj en el Arduino Mega debido a una mayor cantidad de pines, pero los registros de cambio 74HC595 resultaron ser una salvación.
Materiales:
- Arduino Uno
- 2 placas de pan de tamaño completo
- LED rojo 7 piezas
- LED verdes de 7 piezas
- LED azules 6 piezas
- 2 LED amarillos y blancos
- Resistencias 220 ohmios 25 piezas
- Piezo zumbador 1 pc
- 6 botones botones táctiles
- La salida de desplazamiento registra 74HC595 en DIP-16 paquete de 3 piezas
- Cables de conexión 90 piezas
- Módulo de reloj en tiempo real basado en el chip DS1307 RTC
Cómo funcionará todo.
Hay alrededor de 10 tipos de relojes binarios. Algunos muestran el tiempo en formato decimal binario (BCD), otros como números binarios. Como al autor no le gusta particularmente el reloj BCD, decidió hacer su binario puro. A algunas personas les resulta más difícil de leer, pero la diferencia no es grande, porque traducir números de binario a decimal es fácil. También un requisito previo para el creador del reloj era una indicación de los segundos en el reloj.
Además, el reloj tiene 6 botones:
Set: es responsable del modo de configuración del reloj / alarma y de guardar el parámetro en el modo de configuración.
Modo: responsable de cambiar entre los modos de reloj, alarma y temporizador.
Arriba: en la configuración de reloj / alarma / temporizador, aumenta el parámetro en uno. En la alarma y el temporizador, es responsable de activar y desactivar el modo seleccionado. Cuando se activa una señal, apagará la señal de alarma / temporizador.
Abajo: en la configuración de reloj / alarma / temporizador, disminuirá el parámetro en uno. El temporizador lo pausará sin reiniciar la cuenta regresiva. Cuando la alarma se apaga, transferirá la señal durante 5 minutos.
24/12 - cambia el formato de hora.
Dim: responsable de encender y apagar los LED (cuando los LED están apagados, los botones restantes dejan de funcionar).
Diagrama de posicionamiento LED:
Conexión de componentes
El autor conectará todos los LED en serie y con una resistencia. La resistencia está soldada a uno de los terminales de los LED, no importa cuál. Los LED se conectarán a través de registros de desplazamiento, este chip tiene 16 contactos.Este número de pines le permite usar una gran cantidad de pines, tomando solo 3 pines en el Arduino.
Registro de cambios Pinout 74HC595:
Q0-Q7 son los resultados del registro al que se conectarán los LED.
Vcc - Se le aplicará un pin de fuente de alimentación de 5V.
GND - tierra conectada a GND en Arduino.
OE: el pin es responsable de la activación invertida de los pines, pero no se usará, simplemente está en cortocircuito a tierra.
MR: limpieza invertida del registro, no es necesario controlarlo, por lo tanto, se conectará a una fuente de alimentación de 5V.
ST_CP: el pin es responsable de actualizar el estado del registro. Al grabar el estado, es necesario aplicar BAJO, después de grabar - ALTO, para actualizar el estado de las salidas. Necesita estar conectado a un pin en el Arduino. Puede conectar este pin en tres registros en paralelo.
SH_CP - pin, responsable del desplazamiento en 1 bit del registro. Necesita estar conectado a un pin en el Arduino. Están conectados en microcircuitos también en paralelo.
DS: los datos se envían a este pin, se conecta al pin en el Arduino.
Q7 ': este pin se utiliza para la conexión en cascada con otros registros 74HC595.
Diagrama de cableado:
El zumbador piezoeléctrico se conectará al tercer pin Arduino en serie con la resistencia. Antes de incluir el tweeter en el circuito, el autor observó qué pines admiten PWM, ya que esto es obligatorio para ella. En el Arduino Uno, PWM admite 3, 5, 6, 9, 10 y 11 pines.
Los botones se conectan mediante resistencias integradas en Arduino, con un lado de los botones conectado a tierra y el otro a los pines Arduino.
Entonces, el diseño final se ve:
Construir en tablero
Después de adquirir detalles adicionales, el autor comenzó a armar el proyecto en una placa de prueba de acuerdo con los esquemas. La apariencia estaba a punto de esperarse, porque el tablero de pruebas limita la libertad en la colocación de componentes, y los alambres sobresalientes no crearon un placer estético. Pero la placa de pruebas, después de todo, está diseñada para modelos de placas de prueba, pero no para dispositivos terminados.
Código de programa
Al tener conocimientos de programación, el autor decidió escribir código por su cuenta, sin utilizar los desarrollos de otras personas. El primer paso fue escribir una subrutina, es responsable de parpadear todos los diodos y dar la señal piezoeléctrica cuando se enciende. Esta función ayuda a verificar la integridad del circuito, similar a la implementada en muchos dispositivos.
El boceto salió bastante grande, entonces puede considerar sus características principales.
LED de trabajo.
Dado que se accede a los LED a través del registro de desplazamiento, en primer lugar, era necesario implementar más rutinas para los LED. Para una operación más fácil con diodos, se han implementado varias funciones adicionales. Se implementan varios efectos de animación de diodos. Cuando el reloj no está configurado, los diodos responsables de las horas y minutos comenzarán a parpadear (como un reloj normal parpadea cuando no está configurado). Los LED responsables por segundos también tienen su propia animación, el diodo puede funcionar a izquierda y derecha en el modo de alarma o en el modo de configuración del reloj.
Bucle principal
El programa está configurado para funcionar de la siguiente manera: el reloj muestra información según el estado actual y cambia su estado según el uso de botones y eventos. Todo parece una cantidad considerable de condiciones anidadas. El estado de los diodos se actualiza cada vez que se verifica el estado de los temporizadores y botones con una llamada a su controlador.
Además, el autor hizo un gran trabajo para el correcto funcionamiento de los botones y temporizadores de entrada. El código fuente del boceto se puede descargar en el artículo.
Diseño de lanzamiento
Después de encender el proyecto, a primera vista, el dispositivo funcionó de manera correcta y estable. Pero el autor encontró una falla, el reloj estaba retrasado un segundo por hora, por mucho tiempo sería un gran error.
Después de estudiar este problema, se descubrió que el Arduino Uno original usa un resonador de cerámica, y carece de precisión para medir el tiempo en largos períodos. La solución más racional era comprar un reloj en tiempo real, además, debido a este módulo, la hora en el reloj no se extraviará cuando se apague. El autor compró el módulo Grove RTC de Seeed Studio. Es un tablero terminado con un chip de reloj. El autor conectó los pines del módulo SDA y SCL al Arduino en los pines de A4 y A5, GND a tierra. Como la placa del reloj ocupa la potencia de 5 V, no había ningún lugar para conectar el módulo. El autor decidió alimentar el módulo desde uno de los pines digitales, que se energizará constantemente.Además, el autor necesitaba modificar el código fuente y agregar una biblioteca de relojes en tiempo real.
Asamblea de reloj
Después de completar un largo trabajo en el código, es hora de darle al dispositivo un aspecto completo y transferirlo desde la placa de pruebas a la placa de circuito impreso. En primer lugar, era necesario realizar el cableado de la placa. Fritzing se usó para esto, ya que el autor ya tenía una idea de la apariencia del reloj, y construyó un diagrama de dispositivo. El autor también rastreó manualmente el tablero, tomó mucho tiempo.
Proyecto para la producción de placas de circuito impreso:
La fabricación de PCB se ordenó en China. Seeed Studio tiene un servicio de placa Fusion PCB. A través de Fritzing, el archivo se exportó al formato Gerber extendido, muchos fabricantes de placas trabajan con él. Dos semanas después, el autor recibió la tan esperada tarifa por correo.
Solo quedaba soldar algunas piezas polvorientas en la placa. El resultado final después de soldar se veía mucho mejor que el diseño en el tablero.
El autor del proyecto trabajó duro durante mucho tiempo y obtuvo lo que quería: un reloj binario único con temporizador y despertador. Usando el compartimento de la batería, el reloj se puede colocar en cualquier lugar. Arduino cumplió con las expectativas y hizo frente completamente a la tarea.