Sin querer ponernos nostálgicos, pero sí haciendo un poco de historia, allá por 2007 llegó…
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. 🙂
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!
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.
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.
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
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 espartana, por lo que cuando empecé a mandar datos en tiempo real
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:
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.
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
La logística y el transporte están atravesando una revolución tecnológica que está transformando la manera…
Estamos observando una revolución silenciosa pero impactante, propiciada por el Internet de las Cosas (IoT).…
En un mercado inundado de opciones de servicio Cloud, las empresas deben decidir cuidadosamente cuál…
La Inteligencia Artificial (IA) uno de los temas más discutidos y fascinantes de nuestro tiempo.…
En un panorama empresarial marcado por una digitalización acelerada, la gestión de la información se…
Desde nuestros inicios hace 30 años, hemos observado de cerca la transformación de Internet, de…