Saltar a contenido

🥚 Ponedero Inteligente de Registro Genealógico

Proyecto de hardware abierto — Trazabilidad del huevo desde la puesta

Cada huevo sabe de qué gallina viene. Sin tintas, sin marcas, sin intervención humana. Un ESP32, una antena RFID, una celda de carga. La genealogía se construye sola.

Versión 1.0 · Mayo 2026


1. Resumen

El Ponedero Inteligente es un dispositivo de hardware abierto que registra automáticamente qué gallina ha puesto cada huevo, sin necesidad de observación humana ni marcaje físico del huevo. Forma parte del proyecto Gallinero de El Salto y está diseñado para integrarse en los tractores modulares del sistema avícola.

Cada unidad de ponedero inteligente es autónoma y replicable: se instala en la zona de descanso de un tractor, monitoriza los nidales con sensores RFID y peso, y asigna cada huevo a la gallina ponedora mediante correlación temporal. Los datos se transmiten vía MQTT a farmOS, donde se construye automáticamente el pedigrí.

La unidad está pensada para funcionar en modo isla: si pierde conexión WiFi, almacena los eventos en buffer local y los sincroniza al reconectar.


2. Hardware y Componentes

2.1 Placa base

Componente Especificación Notas
Microcontrolador ESP32-WROOM-32E WiFi 802.11 b/g/n, Bluetooth 4.2, 4 MB flash
Lector RFID RDM6300 (125 kHz) o PN532 (13.56 MHz) Conectado vía UART o SPI. Rango de lectura: 5-10 cm
Celda de carga HX711 + celda de 1 kg Precisión ~1 g. Detecta incrementos de peso >30 g (huevo)
Antena RFID Bobina de cobre esmaltado 0.2 mm, ~30 vueltas Montada en el marco de entrada al nidal
Alimentación 5V DC vía microUSB o bornes Puede compartir fuente con el ESP32 del tractor
Carcasa Caja estanca IP65 Protegida del polvo del gallinero y salpicaduras

2.2 Esquema de conexiones

ESP32
├── GPIO16 (RX2) → RDM6300 TX (lectura RFID)
├── GPIO21 (SDA)  → HX711 DATA (celda de carga)
├── GPIO22 (SCL)  → HX711 SCK
├── GPIO5         → LED indicador de evento
├── 5V            → Alimentación RDM6300 + HX711
└── GND           → Masa común

2.3 Ubicación en el tractor

El ESP32 del ponedero se sitúa junto a los nidales en la zona de descanso del tractor. La antena RFID se enrolla en el marco de entrada a cada nidal — cuando la gallina atraviesa el umbral para poner, su anilla RFID es leída automáticamente. La celda de carga HX711 se coloca bajo la base del nidal.

Zona de descanso del tractor
├── Perchas elevadas
├── Nidal 1
│   ├── Antena RFID en marco de entrada
│   └── Celda de carga HX711 bajo la base
├── Nidal 2
│   ├── Antena RFID en marco de entrada
│   └── Celda de carga HX711 bajo la base
├── Nidal 3
│   ├── Antena RFID en marco de entrada
│   └── Celda de carga HX711 bajo la base
└── ESP32 + HX711 + RDM6300 (caja estanca)

3. Funcionamiento

3.1 Flujo de detección

sequenceDiagram
    participant Gallina as 🐔 Gallina con RFID
    participant Antena as 📡 Antena RFID (nidal)
    participant ESP32 as 🔌 ESP32
    participant MQTT as 📶 Mosquitto MQTT
    participant NodeRED as ⚙️ Node-RED
    participant farmOS as 📋 farmOS

    Gallina->>Antena: Entra al nidal
    Antena->>ESP32: Lectura RFID: ID_ANILLA
    ESP32->>MQTT: gallinero/{raza}/gallina/{id}/ponedero/entrada

    Note over ESP32: Inicia temporizador<br/>Espera 10-30 min

    Gallina->>Antena: Sale del nidal

    ESP32->>ESP32: ¿Hubo incremento de peso >30 g?

    alt Huevo detectado
        ESP32->>MQTT: gallinero/{raza}/gallina/{id}/ponedero/puesta
        ESP32->>MQTT: peso_nidal: +62g
        NodeRED->>farmOS: POST /api/log/egg_harvest<br/>{gallina_id, peso, timestamp}
        Note over farmOS: Huevo asignado a gallina<br/>Pedigrí actualizado
    else Sin huevo
        ESP32->>MQTT: gallinero/{raza}/gallina/{id}/ponedero/visita
        Note over ESP32: Inspección sin puesta
    end

3.2 Lógica de asignación huevo → gallina

  1. La gallina entra al nidal. La antena RFID lee su anilla. El ESP32 publica evento de entrada y arranca un temporizador.
  2. Mientras la gallina está dentro, la celda de carga HX711 monitoriza el peso del nidal cada 5 segundos (media móvil de 3 lecturas para filtrar movimiento).
  3. Cuando la gallina sale (la antena RFID deja de detectar la anilla por más de 30 segundos), el ESP32 evalúa:
  4. ¿El peso del nidal aumentó más de 30 gramos desde la entrada de la gallina?
  5. Si es así: huevo asignado a esa gallina.
  6. Si no: fue una visita sin puesta.
  7. El umbral es configurable por tractor según la raza alojada: 30 g para razas enanas (Flor de Almendro), 50 g para razas estándar.
  8. El huevo se numera digitalmente en farmOS. No se marca físicamente (se vende como huevo ecológico sin tintas). La trazabilidad es lógica: timestamp + ID gallina + ID tractor.

3.3 Modo isla

Si el ESP32 pierde conectividad WiFi con Mosquitto:

  • Los eventos se almacenan en un buffer circular en SPIFFS (sistema de archivos flash del ESP32)
  • Capacidad: ~200 eventos (aproximadamente 3-4 días de puesta normal)
  • Al reconectar, el ESP32 vacía el buffer publicando los eventos en orden cronológico con el timestamp original
  • Un LED parpadea en naranja cuando hay datos pendientes de sincronizar

4. Registro Genealógico Automático

4.1 Pedigrí sin intervención humana

Gracias a la arquitectura de tractores del Gallinero, cada tractor tiene un único gallo activo como reproductor. Esto significa que:

  • Cada huevo fecundado tiene padre conocido (el gallo del tractor)
  • Cada huevo tiene madre conocida (la gallina que lo puso, identificada por RFID)
  • El pedigrí se construye automáticamente sin necesidad de observación ni pruebas genéticas

4.2 Datos registrados por huevo

Campo Origen
ID del huevo Generado por farmOS (autonumérico)
ID de la gallina madre RFID + asignación automática
Raza de la madre Ficha de la gallina en farmOS
Tractor Configuración del ESP32 (fija por instalación)
ID del gallo padre Registro del tractor en farmOS (un único gallo por tractor)
Fecha y hora de puesta Timestamp del evento MQTT
Peso del huevo Celda de carga HX711

4.3 Trazabilidad pública (QR)

Los huevos se venden con un código QR que enlaza a una página pública con:

  • Raza de la gallina ponedora
  • Fecha de puesta del lote
  • Tractor y parcela de origen
  • Certificación ecológica de El Salto
  • Datos de la raza (origen, estado de conservación)

Datos NO publicados (anonimización): - ID individual de la gallina (protección del patrimonio genético) - ID del gallo padre (línea genética reservada) - Ubicación exacta del tractor (redondeo a 0.01°)


5. Integración con SmallCountry

5.1 Servicios que usa

Recurso Para qué
ESP32 + RFID Controlador del ponedero, lectura RFID, conexión MQTT
Mosquitto Bus MQTT para eventos de puesta
Node-RED Procesamiento de eventos RFID + lógica de asignación
farmOS Registro genealógico, fichas de gallinas, pedigrí
Grafana Dashboard de puesta por gallina, raza, tractor
n8n Pipeline: registro → trazabilidad QR → tienda
ntfy Alertas: ausencia de puesta prolongada, huevo sin asignar

5.2 Roles implicados

Rol Función
Fauno — Ganadería Supervisión del ponedero, recogida de huevos
Argos — Observabilidad Configuración de alertas, dashboards
Para el administrador

Datos del servicio

Dispositivo ESP32 + RDM6300 + HX711 × N (uno por tractor)
Red vmbr3 (IoT finca), solo MQTT a Mosquitto
Tier B — Importante
Impacto 🟡 Caída = un tractor sin registro automático de puesta

Firmware

PlatformIO + Arduino framework
├── WiFi Manager (conexión a red IoT vmbr3)
├── MQTT client (Mosquitto, topic raíz configurable)
├── RFID reader (UART, polling 500 ms)
├── HX711 load cell (lectura cada 5 s, media móvil 3 muestras)
├── Buffer SPIFFS para modo isla (~200 eventos)
├── Watchdog hardware (reinicio si se cuelga)
└── LED de estado (verde=ok, naranja=pendiente sync, rojo=error)

Firmware versionado en Forgejo y desplegado OTA vía PlatformIO.

Healthcheck

# Verificar que el ESP32 publica en MQTT
mosquitto_sub -t 'gallinero/+/ponedero/status' -C 1

# Verificar asignaciones en farmOS
curl -s https://farm.elsalto.sc/api/farm/log/egg_harvest \
  | jq '.data | length'

Problemas comunes

Síntoma Causa probable Solución
Huevos sin asignar RFID no detectó entrada al nidal Revisar antena del nidal. Posible gallina sin anilla
Falsos positivos de puesta Vibración o movimiento del nidal Ajustar umbral de peso (>30g → >45g). El umbral es configurable por tractor según la raza alojada: 30 g para razas enanas (Flor de Almendro), 50 g para razas estándar
ESP32 no transmite Sin WiFi o sin alimentación Verificar fuente 5V, cobertura WiFi en el tractor
Buffer SPIFFS lleno Modo isla prolongado >4 días Conectar WiFi, forzar sincronización

6. Hoja de Ruta

Fase 1 — Prototipo funcional

  • [ ] Montar prototipo en breadboard: ESP32 + RDM6300 + HX711 + celda de carga
  • [ ] Desarrollar firmware base: lectura RFID, pesaje, lógica de asignación
  • [ ] Probar con anilla RFID de prueba (simular paso de gallina y puesta)
  • [ ] Publicar eventos MQTT y verificar en Node-RED

Fase 2 — Integración con tractor real

  • [ ] Construir 1-2 unidades para instalar en los tractores de prueba
  • [ ] Anillar gallinas reales con RFID
  • [ ] Validar asignación huevo → gallina durante 2 semanas de puesta real
  • [ ] Conectar con farmOS y verificar pedigrí automático

Fase 3 — Escala y publicación

  • [ ] Construir unidades para todos los tractores (10 en total)
  • [ ] Publicar esquemas, firmware y lista de componentes en Forgejo (open hardware)
  • [ ] Escribir guía de construcción para otros criadores

7. Construye el Tuyo

Lista de materiales

Componente Cantidad Coste aprox. (€)
ESP32-WROOM-32E Dev Board 1 5
RDM6300 + antena 1 3
Módulo HX711 1 2
Celda de carga 1 kg 1 3
Anilla RFID pasiva 125 kHz 15 (para las gallinas) 0.30/ud
Cable cobre esmaltado 0.2 mm 2 m (bobina antena nidal) 1
Caja estanca IP65 1 4
Regulador 5V + cables 1 2
Total por unidad ~25 €

Firmware

Repositorio en Forgejo: firmware/ponedero-inteligente/. Escrito en C++ con PlatformIO y Arduino framework. Incluye:

  • main.cpp — bucle principal, tareas FreeRTOS
  • rfid.cpp / rfid.h — driver RDM6300 vía UART
  • hx711.cpp / hx711.h — driver celda de carga con media móvil
  • mqtt.cpp / mqtt.h — cliente MQTT con reconexión automática
  • buffer.cpp / buffer.h — buffer circular en SPIFFS para modo isla
  • secrets.example.h — plantilla de configuración WiFi/MQTT

Próximo paso: Montar el prototipo, probar con una anilla RFID y ver el primer huevo asignado automáticamente en farmOS.


Secciones relacionadas