Reloj de punto, XP
Reloj de punto
descripción
Como de uno discusión por Oriolo20, miembro del foro, Desarrolle este proyecto, si queremos llamarlo así. De hecho, no es realmente un proyecto completo sino solo la prueba de un experimento que quiere demostrar un programa escrito.
Lo llamé XP, que significa Proyecto Experimental…. De hecho, notamos que no es una edición definitiva, pero solo para probar el funcionamiento de todos los programas y otros materiales utilizados. En particular, pude notar la frecuencia óptima para mantener los LED blancos encendidos sin notar parpadeo.
El desarrollo se basa en un boceto que debe gestionar una serie de elementos. En mi caso, preferí montar LED blancos simples. Sin embargo, el boceto está orientado a administrar sin cambios también los tubos nixie con alguna diferencia.

En parte por un descuido y en parte porque lo encontré más barato, Monté un decodificador 1 en 10 como el CD4028. De hecho, mi supervisión monté los cátodos comunes, en lugar de los ánodos que van a conducir el nixie.
Debo decir que el boceto no es portátil en otros modelos Arduino que no montan el ATmega328p. De hecho, este boceto aborda directamente los registros del microcontrolador.
La unidad ensamblada puede funcionar si funciona con la conexión USB que muestra el monitor en serie, pero excluye otras conexiones en los pines D0 y D1, o con un distribuidor de energía que monté.
Se prestó especial atención a que las líneas eléctricas eran muy seguras e incluso múltiples., ya que los cables de puente no son muy capaces y también los contactos del conector pueden crear resistencias o contactos falsos.
Una nota sobre cómo abordar el problema de las conexiones que desaparecieron. encontre eso “saltador” no son muy confiables y el conductor de cobre estañado. se detiene fácilmente.
Esquema

Observo los dos conectores que proporcionan la expansión de la comunicación a las fuentes de información necesarias para mantener el horario puntual.. Pensé que podría montar puentes por el momento que quieras programar o editar el boceto Arduino.
También hice otro desarrollo para el programa en un módulo ESP-01 que se comunica a través del bus I2C y envía el tiempo tomado de un
metroodulo DS3231 y sincronizado a través de WiFi a un servidor NTP.
No pude comunicarme a través de UART, pero creo que es mejor en I2C.

Como puede ver, también está conectado a la línea serial Arduino. Para que pueda enviar fuentes de tiempo adicionales a través de esa fuente. El paquete que he preparado incluye un ejemplo de un boceto que espera datos de la serie en el formato predeterminado. Para poder tomar información de un GPS u otro, este archivo adjunto debe ampliarse para convertir los datos recibidos en el formato que explico a continuación.
la formato debe consistir en 6 byte, pero el buffer hace 8. Estos seis bytes describen la hora y la fecha.
S.S:MM:SS por la hora y GG:em:Automóvil club británico para la fecha. Los demás 2 los bytes se pueden usar para desarrollos futuros que pueden contener los milisegundos de diferencia que recorren los datos. Sin embargo, esto no está incluido actualmente.
Programa
El programa está comentado en inglés.. Para quienes no están acostumbrados, Podría hacer una copia traducida, mientras que mi ambición sería poder divulgarlo incluso para aquellos que no saben italiano también porque es racional que esté escrito internacionalmente.
En la primera parte, como es mi costumbre, se recopilan varias definiciones (definir) que determinan cómo se puede compilar el boceto según sea necesario.
- A la linea 32, la dirección de Arduino se define en el bus I2C como esclavo, que en caso de que se pueda cambiar.
- A la linea 33, existe el período de actualización de la matriz en milisegundos. Creo que no es posible aumentar más, a menos que cambie el parámetro del temporizador preescalador 1. O cambie a usar la biblioteca TimerOne.
- A la linea 38, puedes elegir algunos niveles de depuración, que van desde 0 un 4. En este método, puede usar la información de serie y una pantalla de cristal líquido. El dispositivo de cristal líquido tiene una interfaz serial paralela con 74HC595 integrado. Por este motivo, puede elegir entre usar el método Arduino SPI o el método ShiftOut.
Debo decir que no tuve mucho tiempo para verificar completamente esta fase. Modifiqué las bibliotecas para el modelo de interfaz que usé, como se ve en el diagrama. Para esto, los he unificado para usar el mismo tipo de adaptador serial.
- A la linea 39, se espera si la información en serie se dirige a un terminal que acepta caracteres de escape ANSI o si se trata de una interfaz en serie simple.
- A la linea 41, existe el valor de seguridad de que el tiempo que desea cambiar no está atrás en el tiempo.
En cuanto a la elección de las conexiones de la pantalla de cristal líquido, También implica una variación del lugar donde desea conectar el decodificador 1 a 10. Obviamente si desea una pantalla LCD en las salidas D8 ~ D11 (usando SPI), no será posible conectar el decodificador desde ese puerto, por lo tanto, en el programa se eligen las salidas A0 ~ A3.
Viceversa si desea el decodificador en las salidas D8 ~ D11, entonces la pantalla se conectará a las salidas A0 ~ A2, pero con la posibilidad de poder elegir otras salidas libres.
El programa está bastante simplificado y se espera que también podamos agregar la administración de otras fuentes donde puede tomarse el tiempo con la precisión de un segundo sin correr el riesgo de perder segundos.
Partes de apoyo
la el resto del proyecto planea proporcionar las fuentes del tiempo exacto. Para esto he implementado una gestión vía micropython (MP, abajo) instalado en ESP-01.
Explico que la elección de usar MP se debe al hecho de que el firmware que se suministra con la compra no ha demostrado ser lo suficientemente estable.
Quizás también debido al hecho de que el módulo se montó precariamente en una placa de pruebas. En su lugar, se debe tener cuidado de que los contactos sean seguros y permitan los picos de corriente que ESP requiere durante la fase de conexión al enrutador. Para esto monté en una placa millefori con los accesorios necesarios para poder reprogramar el módulo.
También ensamblé un adaptador de nivel para el bus I2C. Tal vez no fue estrictamente necesario, pero entre las muchas pruebas, No podía entender por qué Arduino no recibió las señales que se le enviaron..
Pero ese circuito es de una simplicidad alarmante y lo logré en unos minutos.. Dado que desde el lado 5 voltios No puse las resistencias pull-up porque ya están presentes en el módulo RTC.

otras pruebas que puse en marcha fueron para conectar mi SBC (Tinker Board) para enviar los datos del horario. Todo funciona de manera muy elegante.. Si está interesado, puede encontrar el script de Python para cargar y ejecutar. He intentado con una instalación Armbiano, por qué el intento con el Brazo Archlinux no puede encontrar el autobús correctamente.
Sobre estos SBC, no es difícil probar la conexión y enviar los datos. En el paquete también hay un script de Python que se puede usar con una Raspberry o una computadora que se puede conectar al bus I2C.
El comando debe enviarse con privilegios de administrador, ya que debe acceder al hardware del bus I2C, este será un comando como:
sudo ./sendtime02.py 60 europe.pool.ntp.org
Puede excluir los dos parámetros después del nombre, entonces se usarán los valores predeterminados. Estos dos parámetros definen la pausa entre una consulta y otra en el servidor NTP. Mientras que el segundo parámetro define a qué servidor conectarse.
El paquete es disponible en mi disco.
Si hay alguna otra información que necesita o notas, Estaré encantado de poder opinar.
Si te interesa también hice un pequeño video manifestación.

Dejar un comentario
¿Quieres unirte a la conversación?Siéntete libre de contribuir