Aprende a aplicar el Internet de las Cosas (IoT) a la producción artesana de cerveza

Una de mis pasiones es la cerveza. Cuando empiezas a entrar en el mundo de las cervezas artesanas siempre aparece esa vocecita que te lleva hacia la cerveza casera, así que tras un par de cursillos me puse a ello.

Hoy os presento un proyecto personal desarrollado fuera de mi trabajo en Sarenet; un bonito ejemplo de aplicación de Internet de las Cosas (IoT), ya que muchas veces escuchamos el término pero no sabemos muy bien cómo se podría llegar a desarrollar en casos prácticos. Os voy a explicar cómo controlar la temperatura de un fermentador de cerveza mediante un arduino conectado a Internet. Además es muy friki. 🙂
 

Así se produce la cerveza artesana

 
El proceso de hacer cerveza es relativamente sencillo: Se hace una infusión con la malta y se genera un mosto; se hierve con los lúpulos, se le añade la levadura y se deja que fermente y genere alcohol. Una vez que ha fermentado se pasa a botellas o barriles y se deja un tiempo para que se genere CO2 y las botellas tengan gas. A nivel comercial o industrial el proceso es similar aunque a gran escala.

Aunque no se necesita mucho sitio (se puede hacer con un par de ollas en casa) la parte de la fermentación sí que necesita de unas condiciones especiales y es aquí donde entra en juego este proyecto de Internet de las Cosas (IoT), en el control de esa fermentación.

Las cervezas se pueden dividir en dos grandes clases dependiendo de la levadura usada en su fermentación: Ales y Lagers. En las Ale la levadura que se usa trabaja a una temperatura más o menos ambiente, entre 14ºC y 25ºC, mientras que la Lager lo hace a una temperatura distinta, sobre los 5ºC. Por este motivo, las personas que se deciden por producir cerveza casera suelen elegir siempre el Ale, por la sencillez de su fermentado.

En mi caso ocurría que no tenía sitio en casa para tener una o dos semanas fermentando la cerveza así que tuve que hacerlo en un garaje que tengo habilitado como txoko, del cual desconocía su temperatura habitual, por lo que se me encendió la bombilla y me dije: “pon un arduino un par de semanas recogiendo la temperatura y así puedes saber si te va a servir”. ¡Así que me puse a ello!
 

Arduino, el corazón del Garagarduino

 

Un arduino es un microcontrolador simple que se usa para hacer prototipos en electrónica. Es muy barato y ampliable, y su diseño es además libre y se programa en C. Recoger la temperatura con este dispositivo es un ejemplo típico por lo que no me costó mucho tenerlo listo.

Tras tener ya los datos vi que el sitio era ideal pero su temperatura era bastante fluctuante, con varios grados de variación entre el día y la noche, así que me puse a investigar. Lo que suele hacer la gente es reconvertir viejas neveras en “cámaras fermentadoras” y usarlas para enfriar o calentar según las necesidades particulares de la cerveza que se esté haciendo. Se suelen utilizar elementos que enfrían (la propia nevera) y que calienten (desde bombillas en botes de pintura, a cables calentadores para terrarios), así como un simple termostato o algo más avanzado y dedicado como BrewPi.

En mi caso opté por construir una pequeña caja con corcho aislante que me estabilizase la temperatura. Para la parte del enfriado utilicé una vieja nevera portátil enchufable que no utilizaba y un cinturón calefactor para calentarlo en caso de que la temperatura bajase demasiado. Como quería aprender y trastear con todo el proceso no utilicé la opción de BrewPi ya que además tiene opciones para controlar otras partes del proceso que yo no necesitaba, por lo que me decanté por el arduino.

En su primera versión el arduino únicamente controlaba la temperatura mediante una sonda y guardaba los datos en una tarjeta microSD para la que tenía que ir, copiar los datos y posteriormente volcarlos para ver como avanzaba el proceso.

Como es un proceso algo tedioso, para la segunda versión lo mejoré añadiéndole una conexión a Internet mediante un router Mikrotik y una SIM con datos 3G. Una vez que tenía eso empecé a mandar los datos a un PHP en un servidor remoto para así poder guardarlos, a parte de seguir almacenándolos en la microSD ya que la conexión 3G no era muy estable por su ubicación. Por supuesto que todo esto era un bonito lío de cables, sobre todo los prototipos.
 

¡Listo para conectarse a Internet!

 
Y fue en este momento cuando las cosas se pusieron más interesantes: Un arduino Uno tiene muy poca memoria para los programas, apenas 2Kb, por lo que con todo lo que quería hacer (guardar datos en una tarjeta microSD, enviarlos por Internet, varias sondas y relés, etc.), ¡me quedaba sin memoria! Parece increíble que pueda ocurrir esto hoy en día, acostumbrados a ordenadores con gigas y gigas de memoria. En sistemas embebidos, sin embargo, es algo bastante habitual. A pesar de probar algunos trucos que me sabía de cuando hice mis pinitos de programación para la videoconsola Sega Dreamcast, no conseguía esos pocos bytes que necesitaba para que funcionase, por lo que tuve que pasar a un arduino más grande, la versión Mega.

Ya con este arduino la cosa fue mucho mejor así que una vez que tenía menos limitaciones y aprovechando un día muy productivo con uno de los meetups de ElComité, cambié la forma en que enviaba los datos para reducir el consumo de datos en las transferencias.

Al principio fui a lo fácil y lo hice mediante peticiones GET usando HTTP, pasando todos los parámetros de temperatura, estado de los relés, etc. pero eran bastantes kilobytes para enviar esta información por lo que lo cambié por el protocolo MQTT. Este protocolo fue diseñado por IBM para controlar oleoductos de forma remota mediante conexiones satélite y liberado hace unos años para su dominio público (recomiendo esta charla de Vigo Labs sobre él), siendo por lo tanto perfecto para este tipo de proyectos. No me costó demasiado montar un servidor de MQTT y cambiar el arduino para que enviase los datos.

¿Y cómo visualizar estos datos? En un principio importaba los datos directamente en un servidor Graphite, sin embargo su interfaz es bastante espartanapor lo que cuando empecé a mandar datos en tiempo real mediante HTTP hice una pequeña web para visualizar los datos (imagen de la izquierda).

Pero aprovechando esto y alguna cosa más empecé a usar Grafana y ahora tengo un dashboard chulísimo para ver los datos en tiempo real.

Tras todos estos cambios ahora mismo la pinta del Garagarduino  se puede ver en la siguiente galería:

 

¿Qué nos depararán las nuevas versiones del Garagarduino?

 
Una vez llegados a este punto la siguiente actualización del Garagarduino pasará por tener un contador de burbujas. En la fermentación, la levadura genera alcohol y CO2 al “comerse” el azúcar del mosto. Este CO2 sale por una válvula conocida como airlock que permite que salga el gas pero sin contaminar el mosto. Al salir el gas genera burbujas (sobre todo los 2-3 primeros días de la fermentación) y es una forma de controlar que la fermentación está ocurriendo, así como su potencia: “¿Tengo que ajustar las temperaturas? ¿He elegido la levadura correcta y la cantidad correcta?”

Todo esta información la tenéis “condensada” en esta presentación y por supuesto el código del arduino y alguna cosilla más está disponible de forma libre en Github.

Por si alguien se lo pregunta, el nombre me lo sugirió un amigo y viene de juntar Garagardo (“cerveza”, en euskera) y Arduino. Y sí, la cerveza que sale es totalmente bebible y está muy rica según me han contando.
 

Contacta ahora con Sarenet

 

Créditos de las imágenes:
Foto cervecera: Simpsons Wiki – Fox Broadcasting Company, CC BY-SA.

Foto cabecera: Stocksnap , CC0
Imagen meetup ElComite: elcomite.bio , CC Attribution ShareAlike 3.0
Imagen Arduino: Arduino.cc , CC Attribution ShareAlike 3.0

Sobre este Autor

Administrador de Sistemas en Sarenet.

1 Comentario

Puedes enviar comentarios en este post.

Enviar una respuesta

No hay comentarios