Jardín y AgriculturaTécnico

Puerta automática del gallinero al amanecer y atardecer

Un actuador lineal de 12 V abre el gallinero al amanecer y lo cierra después del atardecer, calculado para tu ubicación exacta.

NivelTécnico
Tiempo4 h
Costo est.~$141
Pasos5

Los depredadores atacan al anochecer. Este proyecto calcula el amanecer y el atardecer cada día con la librería astral y mueve un actuador lineal con un puente H de dos relés, con un interruptor magnético que confirma que la puerta cerró.

⚠ SEGURIDAD
Asegúrate de que la puerta no pueda atrapar a un animal: usa un actuador de fuerza moderada, una puerta liviana y un camino despejado. Revisa el gallinero a mano hasta que confíes en el sistema.

Video tutorial

▶ El campesino electrónico (Cotarejo)Ver en YouTube ↗

Video de El campesino electrónico (Cotarejo), insertado desde YouTube. Los pasos escritos abajo son nuestros y coinciden con la lista de piezas.

Pasos de la misión

  1. Construye la puerta

    Una puerta corrediza vertical en un riel, conectada a un actuador lineal de 12 V con finales de carrera integrados.

  2. Conecta el puente H

    Dos relés invierten la polaridad del actuador: uno para abrir y otro para cerrar. Nunca actives ambos; el código lo impide.

  3. Agrega el interruptor magnético

    Móntalo para que el imán lo toque solo cuando la puerta está totalmente cerrada.

  4. Instala astral

    Instala astral con pip en un entorno virtual y pon tu latitud, longitud y zona horaria.

  5. Alerta si falla

    Si el interruptor no confirma el cierre un minuto después del comando, envía una notificación al teléfono.

Código

import datetime, time
from zoneinfo import ZoneInfo
from astral import LocationInfo
from astral.sun import sun
from gpiozero import OutputDevice, Button

TZ = ZoneInfo("America/New_York")
home = LocationInfo("Coop", "US", "America/New_York", 27.27, -80.35)   # set your own lat/lon
up = OutputDevice(17, active_high=False); down = OutputDevice(27, active_high=False)
closed = Button(22)

def move(relay, other, secs=25):
    other.off(); time.sleep(0.2); relay.on(); time.sleep(secs); relay.off()

while True:
    now = datetime.datetime.now(TZ)
    s = sun(home.observer, date=now.date(), tzinfo=TZ)
    should_open = s["sunrise"] <= now < s["sunset"] + datetime.timedelta(minutes=30)
    if should_open and closed.is_pressed:
        move(up, down)
    elif not should_open and not closed.is_pressed:
        move(down, up)
    time.sleep(60)

Code comments are in English, like most libraries and docs — a good habit for makers.

Preguntas

¿Puedo usar un microcontrolador?

Sí: un ESP32 con reloj de tiempo real y una tabla de amaneceres funciona muy bien y consume mucho menos, algo importante con energía solar.