SmartCoop: automatitzar el teu galliner i controlar-lo amb Java

  • SmartCoop combina Raspberry Pi, ESP32-S3 i una PCB SMD pròpia per automatitzar portes, aigua, aliment i monitorització d'un galliner domèstic.
  • El sistema utilitza Java, base de dades H2, servidor web Javalin i MQTT per a control remot, gràfics i registre detallat de sensors i esdeveniments.
  • Integra RFID UHF, previsió meteorològica, GPS i estratègies d'estalvi energètic per millorar la seguretat davant de depredadors i autonomia.
  • És un projecte de codi obert orientat a aficionats avançats, sense finalitat comercial, fruit de més de deu anys d'iteracions i millores reals.

SmartCoop controlar gallines amb Java

Gestionar un petit galliner dia rere dia pot convertir-se en una tasca força pesada: obrir i tancar portes, revisar que hi hagi aigua i menjar, vigilar que els depredadors no s'hi acostin… Quan, a més, vols poder anar-te'n d'escapada uns quants dies sense dependre d'un veí o un cuidador, comença a tenir molt sentit plantejar-se una solució de automatització completa del galliner amb tecnologia i programació.

D?aquí neix SmartCoop, un projecte d?un aficionat amb molta experiència en electrònica i desenvolupament embegut que ha anat evolucionant durant més d?una dècada fins a convertir-se en un sistema molt sofisticat. El seu autor viu en una petita granja a Nova Gal·les del Sud, a prop de Canberra (Austràlia), i manté un ramat d'unes 30 gallines. El seu objectiu era reduir al mínim les tasques rutinàries, millorar la seguretat davant de guineus molt llestes i, de passada, donar-se el gust de dissenyar maquinari i escriure codi aprofitant Raspberry Pi, ESP32-S3 i programari a Java i C++.

Què és SmartCoop i quina és la seva filosofia

SmartCoop és bàsicament un controlador integral per a galliners, construït al voltant d'una Raspberry Pi i un mòdul ESP32-S3 muntats en una PCB SMD dissenyada a mida. No és un producte comercial ni pretén ser-ho: el seu creador el manté com a projecte personal i de codi obert, sense intenció de convertir-lo en negoci perquè ja té una feina exigent a la indústria de defensa australiana.

La solució ja va per la seva quarta generació (GEN4.x), dissenyada després de molts anys de proves, errors i millores iteratives. Durant aquest temps, el sistema ha anat abordant problemes molt concrets, des del consum energètic a l'hivern fins a l'astúcia de les guineus, passant per les limitacions dels sensors o la incomoditat d'haver de soldar components de forat passant. Tot s'ha traduït en un disseny actual de PCB amb components SMD, alimentació per USB-C i múltiples interfícies de sensors i actuadors.

L'enfocament de SmartCoop és lluny dels típics obridors automàtics de porta que pots comprar per Internet. Aquí es persegueix la automatització gairebé total del galliner: portes, aigua, aliment, registre de dades, monitorització remota i fins i tot lectura RFID de les gallines. El sistema està pensat per a un entorn semirural amb un nombre moderat d'aus i amb problemes reals de depredadors i climatologia.

A més, l'autor comparteix tant el codi com els esquemes de maquinari sota una llicència de codi obert. Qualsevol que s'animi es pot descarregar els fitxers des del repositori a Bitbucket, fabricar les seves pròpies plaques i fins i tot intentar replicar el muntatge. De vegades, el creador pot arribar a facilitar alguna de les seves PCB ja poblades, cobrant únicament el cost de fabricació i ajudant en tant que sigui possible amb dubtes tècnics.

Arquitectura maquinari: Raspberry Pi, ESP32-S3 i PCB SMD

El cor del sistema és una combinació d'una Raspberry Pi Compute Module (en la cinquena generació) i un ESP32-S3 integrats en una placa personalitzada. La Raspberry s'encarrega de la lògica d'alt nivell, la interfície web, la base de dades i la integració amb serveis externs. L'ESP32-S3, per la seva banda, assumeix tasques de temps real, gestió d'interrupcions, control directe de motors i sensors i funcions de baix consum.

En les primeres versions de la placa s'utilitzaven components de forat passant i un microcontrolador molt senzill (PICAXE-14M2) que amb prou feines resolia l'encesa i l'apagada nocturna de la Raspberry Pi. Amb el salt a la quarta generació i al muntatge SMD, es va decidir fer un pas gran: substituir aquest micro per un mòdul ESP32-S3 d'Unexpected Maker, amb major potència, baix consum, bona comunitat de desenvolupament i abundants llibreries obertes a C++.

El canvi a SMD va tenir diversos efectes positius. Per una banda, les plaques són més compactes i econòmiques; de l'altra, la disponibilitat i el preu dels components de muntatge superficial milloren respecte als equivalents de forat passant. A més, en externalitzar el muntatge en un fabricant com a PCBWay, l'autor va poder rebre diverses PCBs totalment poblades per un cost similar al que abans pagava només per les plaques buides, aconseguint un muntatge més professional, amb menor consum i alimentat còmodament per USB-C.

Un detall curiós que es va aprendre “a les dolentes” té a veure amb el cablatge extern: les cacatues locals van arribar a picotejar i destrossar el mall de cables, així que ara tot el muntatge de camp va protegit dins de tub corrugat o conducte similar. Aquest tipus de problemes reals han anat modelant el disseny del projecte i expliquen per què la versió actual inclou connectors robusts, proteccions físiques i decisions molt pràctiques d'instal·lació.

La PCB, a les seves iteracions més recents, incorpora també interfícies sèrie addicionals per parlar amb lectors RFID UHF, connectors per a sensors de pes, entrades de sensors inductius de porta, relés per a motors, contactes de botons físics i altres connexions necessàries per gestionar el galliner amb total flexibilitat.

Funcions clau de la quarta generació de SmartCoop

La GEN4 de SmartCoop reuneix un ampli conjunt de característiques pensades per alliberar l'usuari de tasques diàries i millorar la seguretat de les aus. El sistema inclou una porta principal completament automàtica, l'obertura i el tancament de la qual es governen combinant un sensor de llum amb dades de sortida i posta de sol calculats segons la ubicació GPS. Així s'adapta tant a l'època de l'any com a les condicions concretes d'il·luminació.

A més de la porta principal que dóna accés a l'interior del galliner, hi ha una segona porta (yard door) que controla l'accés a un pati o zona exterior. En aquest cas, la decisió d'obrir o no es basa en la previsió meteorològica oficial del Bureau of Meteorology (BOM) australià. Si el pronòstic supera cert llindar de probabilitat de pluja configurable a la base de dades, el sistema manté aquesta porta tancada durant el dia perquè les gallines no envaeixin el porxo de la casa a la recerca de refugi… i deixin tot perdut.

El controlador es complementa amb una interfície web molt completa que permet gestionar manualment les portes, ajustar paràmetres de configuració, revisar historials de sensors i visualitzar dades en gràfiques. A la mateixa placa hi ha diversos botons físics per obrir o tancar portes, omplir el tanc d'aigua o alimentar la Raspberry Pi en cas que es vulgui actuar sense entrar a la interfície web.

Un altre bloc important és la gestió de l'aigua: el sistema monitoritza el nivell d'un dipòsit i en controla l'ompliment automàtic. Si es combina amb el disseny de tanc i filtre que va idear l'autor, s'aconsegueix disposar sempre d'aigua neta per a les gallines, reduint al mínim la necessitat de buidar i fregar abeuradors plens de fang o algues. En paral·lel, l'electrònica incorpora una lògica d'apagada i encesa programada de la Raspberry Pi per reduir el consum nocturn i evitar que la bateria i el panell solar hagin de ser sobredimensionats.

El conjunt es completa amb una base de dades relacional de codi obert (H2), on es registren dades de sensors, valors de configuració, esdeveniments històrics, informació horària i altres paràmetres. A més, el sistema disposa d'una interfície GPS que proporciona hora exacta per sincronitzar el rellotge de temps real i coordenades de latitud i longitud, útils per calcular automàticament els horaris de clarejar i capvespre fins i tot quan el accés a Internet falla i no es poden consultar serveis externs.

Per a la supervisió avançada, SmartCoop publica informació en temps real mitjançant un broker MQTT, permetent que altres aplicacions, panells o dashboards externs representin consums, estats i alertes. Amb tot això, el sistema es converteix en un autèntic centre neuràlgic del galliner, capaç de funcionar pràcticament sense intervenció humana durant diversos dies.

Automatització i seguretat davant de guineus i altres depredadors

Un dels mals de cap recurrents a la granja del projecte són les guineus. Tot i que la porta es tancava automàticament al capvespre, es van detectar situacions perilloses: tempestes vespertines que empenyien les gallines a l'interior del galliner abans de l'hora programada, mentre la porta seguia oberta i les guineus tenien via lliure per colar-se. D'aquí va sorgir la idea d'utilitzar etiquetes RFID UHF per identificar individualment cada gallina.

La lògica és senzilla però molt potent: si totes les gallines porten un tag RFID barat (fàcil d'aconseguir en plataformes com AliExpress), el sistema pot comptar quantes ja han entrat al refugi. Quan detecteu que estan totes dins, podeu avançar el tancament de la porta principal, sense esperar a l'horari de tancament automàtic. Així es redueix molt la finestra d'oportunitat que té una guineu per colar-se aprofitant un canvi brusc de temps o qualsevol altra circumstància imprevista, una cosa molt valuosa en contextos on els depredadors es tornen ràpidament “experts” als patrons del galliner.

Amb les versions PCB4.4, el disseny incorpora un lector RFID UHF amb quatre antenes, connectat a la Raspberry Pi Compute Module mitjançant un enllaç RS‑232 gestionat per l'ESP32-S3. Aquesta arquitectura permet interrogar de forma contínua les etiquetes i saber a cada moment quins animals es troben a l'interior o al pati. L'autor comenta que la part de consulta de tags ja funciona i que està en ple procés de integrar aquestes dades amb l'aplicació Java que corre a la Raspberry i amb la base de dades H2.

Un altre ús curiós de la lectura RFID és el control de posta d'ous. Col·locant antenes als nidals es pot associar cada ou amb la gallina que l'ha posat, registrant quins animals hi posen, amb quina freqüència i en quina caixa. Encara que el creador fa broma amb què no pensa exigir acords de nivell de servei a les seves gallines ni imposar objectius de producció, aquesta informació pot ser útil per a petits criadors que treballen amb races de patrimoni genètic o programes de selecció específics.

L?experiència amb les guineus també va portar a replantejar-se la lògica d?obertura matutina de la porta principal. Durant un temps, el sistema sempre obria a la mateixa hora, cosa que va permetre a un d'aquests depredadors situar-se estratègicament al costat de la porta uns minuts abans de l'obertura. Per trencar aquesta rutina, es va desenvolupar una millora que incorpora un component aleatori en el moment dobertura.

Ara, el programari baixa des d'una web pròpia una taula amb horaris d'alba i ocàs per a la ubicació concreta de la granja, amb totes les variacions estacionals. Cada matí, en arribar l'hora d'alba aproximada, el controlador comença a monitoritzar el sensor de llum fins que s'arriba a un llindar de lluminositat definit. Si supereu un temps màxim (per exemple, 60 minuts) sense arribar al valor llindar, la porta s'obre igualment. El resultat és un horari dinàmic que combina canvis d'estació, variacions de llum ambiental i un timeout de seguretat, fent molt més difícil que una guineu pugui anticipar l'instant exacte d'obertura i abusar del patró fix.

Gestió avançada de l'aigua: d'un estany brut a un sistema gairebé autònom

A la instal·lació original, les gallines s'abastien d'aigua provinent d'una petita tolla o estany. El problema era evident: segons l'època de l'any i el nivell de l'aigua, la qualitat variava molt i l'abeurador s'embrutava amb rapidesa, obligant a buidar, netejar i tornar a omplir el recipient massa sovint. Per evitar aquestes tasques tan repetitives, l'autor va dissenyar un sistema complet amb dipòsits de PVC, filtrat per sorra i automatització de l'ompliment.

L´esquema parteix d´un gran tanc fabricat amb canonada d´aigües pluvials, on s´integra un filtre de sorra que millora significativament la qualitat de l´aigua. Des d'aquest dipòsit principal s'alimenta un segon tanc, més petit, fet també amb tub de 90 mm de PVC, des del qual se subministra aigua a les gallines a través de petits gots o tetines automàtiques, de l'estil de què fan servir les granges comercials.

El controlador SmartCoop monitoritza el nivell d'aigua disponible i activa una bomba o vàlvula per emplenar el dipòsit de servei quan cal. D'aquesta manera es redueix gairebé a zero la necessitat que l'amo s'hagi d'acostar cada pocs dies a buidar, fregar i omplir els abeuradors, mantenint un circuit més higiènic i homogeni. En unir aquesta part hidràulica amb l'electrònica, la solució aconsegueix un subministrament d'aigua estable, net i gairebé lliure de manteniment quotidià.

Aquesta millora es combina amb el control energètic nocturn: si a la nit no cal moure bombes ni fer servir la pantalla de la Raspberry Pi, es programa l'apagat parcial del sistema per estalviar consum. L'equilibri entre potència disponible dels panells solars, capacitat de la bateria i requeriments de l'electrònica era un problema seriós durant els hiverns ennuvolats de Canberra, i l'estratègia triada va ser gestionar l'encesa i apagat de forma intel·ligent en comptes d'invertir en panells i bateries més cars.

Control de l'aliment i dispensadors amb sensors de pes

Un altre front crític per a qualsevol que tingui un galliner és l'aliment. Si es vol poder sortir de viatge diversos dies, no n'hi ha prou d'omplir una menjadora petita i esperar que aguanti. L'autor es va plantejar com aconseguir que el sistema “avisés” de manera fiable quan el pinso estigués cada cop més just i va decidir integrar sensors de pes basats en el xip NAU7802 a la versió més recent de la PCB.

La idea és utilitzar aquests convertidors i cèl·lules de càrrega per pesar el contingut dels dispensadors daliment. Amb aquesta informació, SmartCoop pot estimar quants dies de menjar queden, detectar si hi ha consums anòmals (per exemple, per presència d'altres espècies o rosegadors) i disparar avisos precisos quan s'arribi a un llindar baix. La intenció del disseny és que aquests dipòsits continguin com a mínim un parell de setmanes d'aliment, de manera que el propietari i la seva parella puguin absentar-se uns dies sense haver de demanar favors a ningú.

A més, el sistema registra el consum a la base de dades, de manera que es poden revisar patrons a mitjà termini: quant mengen les gallines segons l'època de l'any, si canvia la despesa quan s'hi afegeixen o es retiren animals, etc. Això pot ser útil per ajustar racions, preveure compres de pinso o fins i tot detectar problemes de salut al ramat si s'observen variacions estranyes. Tota aquesta lògica està pensada perquè la gestió de l'aliment deixi de dependre exclusivament de mirades ràpides a la menjadora i passi a recolzar-se també en mesures objectives.

Consum energètic, apagat nocturn i variants mòbils

Un dels reptes inicials va ser aconseguir que el sistema pogués alimentar-se amb una combinació raonable de panell solar i bateria sense quedar-se sense energia cada pocs dies de mal temps. Amb una Raspberry Pi i una pantalla funcionant les 24 hores, durant els hiverns de Canberra n'hi havia prou uns quants dies ennuvolats perquè el nivell de bateria es desplomés. Abans de llançar-se a comprar un panell i una bateria molt més grans, l'autor va decidir introduir una gestió intel·ligent de l'encesa i l'apagada.

A les primeres iteracions es va fer servir un petit microcontrolador PICAXE per tallar l'alimentació de la Raspberry Pi i altres elements en determinades franges horàries, aprofitant la informació d'un rellotge de temps real (RTC). La lògica era que, mentre les gallines dormen, no cal tenir tota l'electrònica encesa, els sensors en funcionament continu ni la pantalla mostrant informació.

Amb la migració a la placa SMD ia l'ESP32-S3, aquesta responsabilitat es va traslladar al nou mòdul, permetent estratègies més refinades i flexibles. Fins i tot es va arribar a contemplar una manera d'operació mòbil, pensada per a un “Chicken Tracker” portàtil que es desplaçaria d'un punt GPS a un altre, on durant el dia estaria apagat ia la nit s'activaria per registrar posicions o estats. Aquesta forma de treballar demostra una mentalitat d'optimització energètica molt centrada en l'ús real i les limitacions del maquinari disponible.

Gràcies a aquest enfocament, es van solucionar els problemes de bateries descarregades recurrents sense veure's obligat a muntar instal·lacions solars sobredimensionades. El sistema ara s'apaga durant hores en què no aporta valor, però segueix complint totes les funcions crítiques d'automatització i seguretat en els moments clau: obertura i tancament de portes, verificació nocturna i canvis d'estat importants.

Interfície web en Java, monitorització remota i notificacions

Més enllà de la part purament física, SmartCoop integra una capa de programari molt treballada. Aprofitant l'experiència de l'autor amb Java, es va desenvolupar una aplicació que corre a la Raspberry Pi i que inclou un servidor web lleuger basat en Javalin per oferir una interfície de control i supervisió. Aquesta interfície permet obrir o tancar portes, forçar omplir aigua, consultar estats de sensors i revisar gràfiques generades amb Google Charts.

Aquesta millora va sorgir després d'un incident en què el sistema va detectar una fallada de porta (un timeout en intentar tancar) i va enviar un correu avisant que la porta principal podia no haver-se tancat del tot. Fins aleshores, per diagnosticar aquest tipus de problemes calia estar físicament davant de la pantalla tàctil local i navegar per les pantalles del sistema. Per reduir aquesta dependència, es va optar per crear una interfície web accessible des de qualsevol lloc amb connexió a Internet, delegant a Java ia Javalin la tasca de servir pàgines senzilles amb botons de control i estats en temps real.

Cada dia, els correus electrònics que envia el sistema inclouen la IP pública de l'encaminador que dóna sortida a Internet. D'aquesta manera, el propietari es pot connectar al panell web des de fora de casa i actuar com si estigués davant del galliner. A futur, l'autor planteja ampliar aquesta interfície per exposar funcions de diagnòstic més detallades i accés a configuracions avançades, però ja al seu estat actual, la possibilitat d'obrir o tancar portes, revisar nivells i validar alarmes des de qualsevol lloc resulta clau per anar-se'n de vacances amb tranquil·litat.

L'aplicació en Java es recolza a la base de dades H2 per persistir informació de llarg termini i al broker MQTT per a la distribució de lectures i esdeveniments. Això obre el camí a integrar SmartCoop en altres plataformes domòtiques o dashboards genèrics, que es poden subscriure als tòpics MQTT i mostrar l'estat del galliner al costat d'altres dispositius domèstics o agrícoles.

Un afegit especialment útil és la “comprovació nocturna final”. Aquest mòdul recorre l'estat de totes les portes, els dipòsits i els sensors en arribar una hora determinada i envia un resum per correu a una llista configurable de destinataris. Així, si el fill adolescent es va oblidar de tancar una porta manual o si algun actuador ha tingut un problema, és possible detectar-ho just abans de desconnectar parts del sistema per al mode de baix consum nocturn i corregir-ho encara a temps.

Integració amb previsió meteorològica i vida diària amb les gallines

SmartCoop també s'integra amb fonts de dades externes, especialment amb la previsió meteorològica del servei oficial australià (Bureau of Meteorology). De forma periòdica, l'aplicació descarrega un fitxer XML de predicció i analitza si la probabilitat de pluja per a la zona supera un cert llindar establert a la base de dades. Si això passa, el sistema decideix mantenir tancada la porta secundària que dóna accés al pati, per evitar que les gallines es reparteixin per la zona de la casa i, de passada, omplin d'excrements el porxo quan plou o fa fred.

Aquesta lògica es va dissenyar després d'observar que, en dies incòmodes, les gallines preferien passejar-se per la terrassa de fusta, enganxades a la casa, en lloc de moure's pel prat. El resultat era haver de fer servir la hidronetejadora contínuament per deixar la zona en condicions. Amb la decisió automàtica basada en la previsió de pluja, s'aconsegueix que les aus es quedin molt més a l'interior del galliner oa zones menys problemàtiques, reduint les tasques de neteja que ningú vol fer cada setmana.

A més, el sistema recull totes aquestes dades meteorològiques i de comportament a la base H2, cosa que permet analitzar a posteriori com responen les gallines a diferents patrons de clima o si s'observen correlacions curioses entre pluges, canvis d'horari, consum de pinso i freqüència de posada.

La combinació de sensors interns, dades externes (com el temps o els horaris de clarejar/vespre) i capacitat de decisió en la lògica de Java fa que SmartCoop sigui alguna cosa més que un simple automatisme de portes. A la pràctica es comporta com un petit “gestor d'explotació avícola domèstica”, capaç de ajustar-se de manera dinàmica a les condicions de l'entorn ia les necessitats reals del ramat.

Viure amb un sistema així també implica certa disciplina digital: revisar els correus periòdics, controlar que la IP pública no canviï sense saber-ho, vigilar la salut de la Raspberry Pi i el panell solar, etc. Però, a canvi, es guanya la possibilitat d'absentar-se fins a una setmana sense que ningú s'hagi d'acostar a obrir, tancar, omplir aigua o comprovar si les guineus segueixen rondant al voltant.

En conjunt, SmartCoop demostra com la combinació d'electrònica embeguda, programació en Java i C++, sensors variats, comunicació MQTT i disseny de maquinari a mida permet convertir un galliner d'aficionat en una instal·lació altament automatitzada, segura davant de depredadors, eficient en consum i molt més còmoda de gestionar, tot mantenint l'esperit de projecte obert i sense pretensions comercials que el va veure néixer.