Tabla de contenido:

Temporizador de reloj Arduino Dusk / dawn: 15 pasos
Temporizador de reloj Arduino Dusk / dawn: 15 pasos

Video: Temporizador de reloj Arduino Dusk / dawn: 15 pasos

Video: Temporizador de reloj Arduino Dusk / dawn: 15 pasos
Video: HOW TO PROGRAM AN ARDUINO CLOCK USING ONLY PUSH BUTTONS (SPANISH) 2024, Noviembre
Anonim
Temporizador de reloj Arduino Dusk / dawn
Temporizador de reloj Arduino Dusk / dawn

Resumen:

Este temporizador basado en Arduino puede cambiar una luz de 220 V al anochecer, al amanecer o en un momento específico.

Introducción:

Algunas de las luces de mi casa se encienden automáticamente al anochecer, hasta una hora preestablecida o hasta el amanecer (toda la noche).

La ubicación de las luces no permite el uso de un sensor de luz. Los temporizadores regulares disponibles se encienden a una hora específica. Por lo tanto, para encenderlo al anochecer es necesario ajustar regularmente la configuración del programa del temporizador.

Como un buen desafío, decidí construir un temporizador independiente basado en Arduino personalizado en su lugar. Utiliza un reloj en tiempo real y la biblioteca Dusk2Dawn para determinar la hora a la que se deben encender o apagar las luces. El gabinete de este temporizador está impreso en 3D y se puede encontrar en Thingiverse. El código Arduino para este proyecto se puede encontrar en GitHub.

En la creación de este temporizador me inspiré en muchos diseños y circuitos en Internet. Mi agradecimiento a todos los colaboradores que no se mencionan explícitamente.

Para facilitar la legibilidad, se muestran diagramas parciales en los pasos donde sea necesario, en lugar de un diagrama de circuito completo.

Soluciones alternativas:

En lugar de un temporizador independiente, existen muchas soluciones en las que un sistema de automatización del hogar inteligente controla las luces. Mi objetivo era tener una solución independiente, que no dependa de la conectividad WIFI (u otra).

Restricciones:

El código proporcionado con este proyecto incluía una implementación de cambios de horario de verano basada en el sistema de horario de verano europeo.

Paso 1: Lista de piezas y herramientas

Lista de piezas y herramientas
Lista de piezas y herramientas

Partes:

Los costos totales de las piezas (excluyendo la impresión en 3D) aproximadamente € 30, -.

  • Arduino Nano V3 (compatible) sin encabezados
  • Fuente de alimentación 5V 0.6A (34 x 20 x 15 mm)
  • Relé de estado sólido 5V - Activo bajo - 2A 230VAC
  • Reloj de tiempo real DS3231 (pequeño)
  • Pantalla OLED de 0,96 "SPI 128 * 64 píxeles
  • Codificador rotatorio - EC11 - 20mm
  • Perilla 6mm eje 15mm * 17mm
  • Placa de circuito impreso de tablero,
  • 4 * tornillos M3x25mm
  • Recinto impreso en 3d
  • Tubo termoretráctil
  • Alambres
  • Bloque de terminales de tornillo (para conectar cables neutros)

Herramientas necesarias:

  • Soldador
  • Alambre de soldar
  • Bomba desoldadora
  • Pelacables
  • Cortadores
  • Impresora 3D (para imprimir carcasa)
  • Pequeñas herramientas surtidas

ADVERTENCIA

Este circuito funciona con 230 V CA y si no está acostumbrado a trabajar con voltaje de red o no tiene una amplia experiencia trabajando con voltaje de red de 230 V CA, manténgase alejado de este proyecto

No asumo ninguna responsabilidad por cualquier pérdida o daño que surja directamente o como consecuencia de seguir este proyecto

Siempre se recomienda tener el cuidado y las precauciones adecuadas al trabajar con la red de CA

Paso 2: Prepare la pantalla OLED y el reloj en tiempo real

Prepare la pantalla OLED y el reloj en tiempo real
Prepare la pantalla OLED y el reloj en tiempo real

La carcasa impresa en 3D está diseñada para un tamaño mínimo. Como resultado, es necesario eliminar los encabezados de la pantalla OLED y el reloj en tiempo real.

En preparación para el siguiente paso, elimine cualquier resto de soldadura de los orificios con la bomba desoldadora.

Paso 3: Prepare el codificador rotatorio

Prepare el codificador rotatorio
Prepare el codificador rotatorio

El codificador rotatorio tiene conectores endebles. Para evitar daños, monte un trozo de placa de circuito impreso en el codificador.

En la imagen, la conexión a tierra (en la parte superior derecha e inferior central) también está preparada.

Nota: Asegúrese de que el codificador rotatorio con placa de circuito impreso encaje en la caja sin tocar el Arduino. Es posible que sea necesario pulir la placa de circuito impreso para lograr un ajuste perfecto.

Paso 4: Recinto

Recinto
Recinto
Recinto
Recinto

Imprima las tres partes del gabinete con una impresora 3D. Consulte las instrucciones en Thingiverse.

Paso 5: deshabilite el LED de encendido de Arduino (opcional)

Desactivar el LED de encendido de Arduino (opcional)
Desactivar el LED de encendido de Arduino (opcional)

Para evitar tener un brillo verde en el temporizador, el LED de encendido del Arduino puede desactivarse.

Tenga en cuenta que esta modificación es opcional.

La modificación al Arduino Nano consiste en quitar la resistencia junto al led de encendido (ver círculo rojo en la imagen).

Paso 6: Fuente de alimentación + relé de estado sólido

Fuente de alimentación + relé de estado sólido
Fuente de alimentación + relé de estado sólido

En este paso, la fuente de alimentación y el relé de estado sólido se combinan y montan en la parte inferior del gabinete.

Las conexiones entre la fuente de alimentación y el relé se realizan en la parte inferior de estos componentes. El bloque de terminales de tornillo del relé se utilizará para conectarse al Arduino.

Nota: Al realizar las conexiones, asegúrese de que los orificios de montaje del relé de estado sólido se mantengan libres.

  • Suelde un cable de conexión entre el relé de estado sólido A1 a una de las conexiones de CA de la fuente de alimentación
  • Suelde un cable a la otra conexión de CA de la fuente de alimentación (esto se conectará al bloque de terminales de tornillo neutro en el paso 7)
  • Suelde un cable entre la fuente de alimentación -Vo al relé DC-
  • Suelde un cable para conectar la fuente de alimentación + Vo al relé DC +

Nota: Es posible que sea necesario acortar los cables de la fuente de alimentación y el relé para poder encajar en el gabinete.

Paso 7: Arduino Nano + Fuente de alimentación + Relé de estado sólido

Arduino Nano + Fuente de alimentación + Relé de estado sólido
Arduino Nano + Fuente de alimentación + Relé de estado sólido

En este paso, el Arduino Nano está conectado a la fuente de alimentación y al relé de estado sólido.

  • Corta dos cables de aproximadamente 70 mm de longitud. Pele 30 mm de aislamiento en un lado y 4 mm en el otro lado.
  • Suelde el lado con aislamiento pelado de 30 mm al Arduino + 5V y GND, con el cable pegado
  • Corte dos tubos termorretráctiles de 20 mm de longitud y móntelos sobre la parte pelada de 25 mm. Esto aísla los cables hasta la conexión con el bloque de terminales de tornillo de montaje DC + y DC- del relé de estado sólido.
  • Tenga en cuenta que los cables para GND y + 5V deben cruzarse para conectarse correctamente al bloque de terminales de tornillo del relé.
  • Cortar un cable de aproximadamente 40 mm de largo y pelar 4 mm de aislamiento en ambos extremos. Suelde un lado a la conexión A2 en la PARTE POSTERIOR del Arduino y conecte el otro lado a la conexión CH1 del bloque de terminales de tornillo de montaje de estado sólido.

ADVERTENCIA

El Arduino se alimenta directamente de la fuente de alimentación estable de + 5V en lugar de utilizar el regulador de potencia interno de Arduino. Por lo tanto, no es seguro conectar USB cuando el Arduino recibe energía de la fuente de alimentación.

Siempre desconecte la red de 230 VCA antes de usar la conexión USB Arduino.

Paso 8: Arduino Nano + Reloj en tiempo real

Arduino Nano + Reloj en tiempo real
Arduino Nano + Reloj en tiempo real

En este paso, el reloj de tiempo real se conecta al Arduino, en parte mediante el uso de los cables preparados en el paso anterior.

  • Suelde el cable procedente de Arduino GND (también conectado a DC- del relé) a "-" del reloj de tiempo real.
  • Suelde el cable proveniente de Arduino + 5V (también conectado a DC + del relé) al "+" del reloj de tiempo real.
  • Corte dos cables de aproximadamente 40 mm de longitud y pele 4 mm de aislamiento en ambos extremos.
  • Suelde un cable entre Arduino A4 y el reloj de tiempo real D (SDA).
  • Suelde un cable entre Arduino A5 y el reloj en tiempo real C (SCL).
  • Dé forma a los cables del reloj en tiempo real para asegurarse de que no interfieran con el codificador rotatorio. Para esto, los cables deben estar en la parte inferior del gabinete.

Paso 9: conecte la pantalla OLED

Conecte la pantalla OLED
Conecte la pantalla OLED

En este paso, la pantalla OLED SPI se agrega al Arduino.

  • Corte 2 cables de 65 mm de longitud y pele 4 mm de aislamiento en ambos extremos.
  • Suelde un cable a la conexión GND de la pantalla OLED. Suelde este cable al cable aislado del tubo termorretráctil procedente del Arduino GND (consulte el paso 4) y conecte ambos cables al bloque de terminales de tornillo de montaje de CC del relé de estado sólido.
  • Suelde un cable a la conexión VCC de la pantalla OLED. Suelde este cable al cable aislado del tubo termorretráctil que proviene del Arduino + 5V (consulte el paso 4) y conecte ambos cables al bloque de terminales de tornillo de montaje DC + del relé de estado sólido.
  • Corte 5 cables de 65 mm de longitud y pele 4 mm de aislamiento en ambos extremos.
  • Suelde un cable para conectar D0 (CLK) a Arduino D10
  • Suelde un cable para conectar D1 (MOSI / DATA) a Arduino D9
  • Suelde un cable para conectar RES (RT) a Arduino D8
  • Suelde un cable para conectar CC a Arduino D11
  • Suelde un cable para conectar CS a Arduino D12

Nota: El orden de los cables de la pantalla no es lógico. Este es el resultado de usar primero el ejemplo de Adafruit y luego cambiar las conexiones porque el uso de D13 da como resultado un LED rojo en el Arduino todo el tiempo.

Alternativa

Es posible utilizar un orden "normal" para las conexiones SPI. Para ello, la definición de salida digital del programa Arduino en oledcontrol.cpp debe ajustarse en consecuencia:

// Usando software SPI

// definiciones de pines

#define CS_PIN 12

#define RST_PIN 8

#define DC_PIN 11

#define MOSI_PIN 9

#define CLK_PIN 10

Paso 10: codificador rotatorio

Codificador rotatorio
Codificador rotatorio

El diagrama muestra las conexiones del Arduino al codificador rotatorio (codificador visto desde arriba).

  • Cortar 4 cables de 45 mm y pelar 4 mm de aislamiento de ambos extremos.
  • Conecte Arduino GND a los conectores centrales superior derecho e inferior del codificador
  • Conecte Arduino D2 a la parte inferior izquierda del codificador
  • Conecte Arduino D3 a la parte inferior derecha del codificador
  • Conecte Arduino D4 a la parte superior izquierda del codificador

Paso 11: instalación en el gabinete

Instalación en el envolvente
Instalación en el envolvente

Instale toda la electrónica en la parte inferior del gabinete:

  • Deslice el Arduino en la ranura vertical
  • Deslice el reloj de tiempo real en el compartimento inferior
  • Deslice la fuente de alimentación y el relé en el compartimento superior, asegúrese de que el relé se asiente en sus soportes.

Paso 12: Conexión a la red eléctrica / luz que se cambiará

Conexión a la red eléctrica / luz a conmutar
Conexión a la red eléctrica / luz a conmutar
Conexión a la red eléctrica / luz a conmutar
Conexión a la red eléctrica / luz a conmutar

ADVERTENCIA

Asegúrese de tener el cuidado y las precauciones adecuadas al trabajar con la red de CA, asegúrese de que la red de CA esté desconectada

No asumo ninguna responsabilidad por cualquier pérdida o daño que surja directamente o como consecuencia de seguir este proyecto

  • Conecte la fase de la red de CA al bloque de terminales roscados A1 (izquierda) del relé.
  • Conecte la fase de la luz a conmutar al bloque de terminales de tornillo B1 (derecho) del relé.
  • Utilice un bloque de terminales de tornillo separado para conectar el cable neutro de la red de CA, el cable neutro de luz y el cable neutro de la fuente de alimentación.
  • Para aliviar la tensión, monte una brida alrededor de cada uno de los cables de alimentación.

Paso 13: acabado del armario

Terminando el Recinto
Terminando el Recinto

En este paso se completa el montaje en el armario.

  • Deslice la pantalla OLED a través del orificio de montaje de la pantalla en la parte central del gabinete.
  • Deslice el codificador rotatorio a través del orificio en la parte central, asegúrese de que la antirrotación se alinee. Monte el codificador rotatorio con la arandela y la tuerca incluidas.
  • Monte la parte superior del gabinete y cierre el gabinete montando los cuatro tornillos M3x25mm desde la parte inferior.

Paso 14: Programando el Arduino

ADVERTENCIA

El Arduino se alimenta directamente de la fuente de alimentación estable de + 5V en lugar de utilizar el regulador de potencia interno de Arduino. Por lo tanto, no es seguro conectar USB cuando el Arduino recibe energía de la fuente de alimentación.

Siempre desconecte la red de 230 VCA antes de usar la conexión USB Arduino.

Recupere el programa de temporizador Arduino de GitHub.

Este programa utiliza el IDE de Arduino, que se puede obtener aquí.

El programa utiliza las siguientes bibliotecas adicionales:

SSD1303Ascii

Biblioteca de cables Arduino

Tenga en cuenta que también se utiliza la biblioteca anochecer2dawn, pero se incluye como código debido a un cambio en su interfaz.

Para garantizar un cálculo correcto del anochecer / amanecer, se deben configurar la longitud, la latitud y la zona horaria.

Como se describe en el ejemplo de sunset2dawn, una manera fácil de encontrar la longitud y latitud de cualquier ubicación es buscar el lugar en Google Maps, hacer clic con el botón derecho en el lugar en el mapa y seleccionar "¿Qué hay aquí?". En la parte inferior, verá una tarjeta con las coordenadas.

La longitud y la latitud están codificadas en el programa, en las líneas 19 y 20 de Dusk2Dawn.cpp:

/ * Aquí debe establecer la latitud y la longitud de su ubicación.

* * SUGERENCIA: Una manera fácil de encontrar la longitud y latitud de cualquier ubicación es * buscar el lugar en Google Maps, hacer clic derecho en el lugar en el mapa y * seleccionar "¿Qué hay aquí?". En la parte inferior, verá una tarjeta con las coordenadas *. * / #define LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrecht

La zona horaria también está codificada en la línea 24 de Dusk2Dawn.cpp. De forma predeterminada, está configurada en Holanda (GMT + 1):

/ * Ingrese su zona horaria (desplazamiento a GMT) aquí.

* / #define TIMEZONE 1

Al programar el Arduino por primera vez, es necesario inicializar la memoria EEPROM. Para ello, cambie la línea 11 de timer.cpp para realizar la inicialización de EEPROM:

// cambia a verdadero para la primera programación

#define INITIALIZE_EEPROM_MEMORY falso

Sube el programa al Arduino e inicia el Arduino.

Deshabilite la inicialización de EEPROM y cargue el programa en Arduino nuevamente. El temporizador ahora recordará la configuración del tiempo de conmutación cuando se reinicie.

Paso 15: Configurar la hora y los tiempos de cambio

Conceptos de interacción con el usuario:

  • Se utiliza una pulsación corta para confirmar las selecciones. Además, en la pantalla principal del temporizador, una pulsación corta enciende o apaga la luz.
  • La pulsación larga se utiliza para acceder al menú desde la pantalla principal del temporizador. En cualquier lugar del menú, una pulsación larga volverá a la pantalla principal del temporizador.
  • ‘>’ Curso de selección. Este cursor indica la opción seleccionada en un menú.

Pantalla principal del temporizador

La pantalla principal del temporizador muestra:

Día de la semana Su

Hora actual 16:00

Estado actual del temporizador y próxima hora de conmutación Temporizador APAGADO hasta las 17:12

Hora del amanecer y anochecer Amanecer 08:05 Atardecer 17:10

Establecer la hora correcta

Mantenga pulsado para entrar en el menú. Se muestran las siguientes opciones:

AtrásConfigurar horaPrograma de día de la semanaPrograma de fin de semanaOpciones

Seleccione configurar hora para configurar la fecha y la hora del reloj de tiempo real. Ingrese los valores correctos para:

Año Mes Día Hora

El temporizador determina automáticamente el día de la semana. El cambio al horario de verano también se realiza automáticamente. El horario de verano se implementa solo para la zona horaria europea.

Configurar el programa del temporizador

El temporizador tiene 2 programas, uno para los días de la semana y otro para los fines de semana. Tenga en cuenta que el viernes se considera parte del fin de semana, las luces pueden permanecer encendidas un poco más.

Cada temporizador tiene un momento de encendido y apagado. El momento puede ser:

  • Hora: hora exacta especificada
  • Amanecer: cambia según la hora calculada del amanecer.
  • Anochecer: interruptor basado en la hora calculada del anochecer

Para el anochecer y el amanecer es posible introducir un valor de corrección de 59 minutos antes o después.

Ejemplos:

Para encender una luz toda la noche, seleccione encender a las (anochecer + 10min), apagar a las (amanecer - 10min)

Para encender una luz por la noche, seleccione encender al anochecer, apagar a las 22:30.

Opciones

En la pantalla de opciones se puede establecer un tiempo de espera para cambiar de pantalla.

Cuando la pantalla está apagada, al presionar la perilla del codificador giratorio se volverá a la pantalla principal del temporizador.

Recomendado: