Il software Cybeer
Entriamo ora nella terza ed ultima parte di questo processo di automazione ossia nell’implementazione di un software che possa leggere le temperature della nostra sonda e che possa leggere e scrivere sui nostri relè. Ovviamente in questa fase è necessaria una conoscenza di un qualsiasi linguaggio di programmazione e la scelta del linguaggio va un attimo pensata e ponderata. Io programmo da circa 30 anni (mamma mia come passano gli anni) e ho sempre avuto la convinzione che un linguaggio vale l’altro, l’importante è che il software faccia il compito per il quale è nato, tuttavia questa volta non è proprio cosi… Vi riporto alcuni pensieri che ho fatto sulle diverse tecnologie, ovviamente sono pareri personali dove altri informatici potrebbero non essere d’accordo con me.
- Interfaccia WEB: oggi vanno molto di moda e molti sanno programmare per il web, tuttavia una soluzione del genere richiede l’installazione di un server web su un raspberry. Tecnicamente la cosa è possibile, sul raspberry è possibile installare un server LAMP (Linux Apache MySQL PHP) però pretendere che con l’hardware limitato che ha, abbia anche delle buone prestazioni sarebbe chiedere troppo. Dall’altra parte se per leggere la temperatura, valutare se spegnere la resistenza elettrica e successivamente spegnere la resistenza elettrica richiedesse del tempo di latenza alto, pensiamo anche solo 6 secondi (che sono 2 secondi per attività) per lo scopo che abbiamo potrebbe essere troppo.
- Python : E’ un linguaggio di programmazione molto usato in questi anni grazie alla sua semplicità, tuttavia ho scartato questa opzione perchè non ha la possibilità in maniera nativa di creare interfacce grafiche (a meno di non fare salti pirotecnici creando interfacce WEB ma si torna al punto precedente), altro vincolo, questo linguaggio rientra nella categoria dei linguaggi interpretati che richiede un framework per girare quindi anche in questo caso non è il massimo come performance.
- Linguaggi compilati: Cadono in questa categoria tutti quei linguaggi che una volta compilati generano codice macchina (i file .exe per Windows o binari per Linux). Sono linguaggi compilati linguaggi come il C/C++, Pascal etc. Va da sé che da un punto di vista delle performance questa sia la soluzione migliore.
La mia scelta è caduta sull’uso del Pascal (che non è più il vecchio Pascal degli anni ‘90) appunto perchè è un linguaggio compilato e perchè ho usato questo linguaggio a livelli professionali per anni quindi lo conosco molto bene. Per il mondo Linux (quindi per il raspberry) esiste un progetto open source clone del più famoso Delphi che si chiama Lazarus (link : https://www.lazarus-ide.org/) è un progetto maturo ed io lo uso tuttora al lavoro perchè mi permette di creare interfacce grafiche con estrema facilità e la libertà di programmare in Pascal. Un’altra alternativa valida potrebbe essere la programmazione C/C++, ma questa l’ho scartata perchè non ho esperienza nella creazione di interfacce grafiche con questo linguaggio.
Entriamo nel merito dell’interfaccia grafica, all’avvio del software viene selezionata la ricetta (precedentemente inserita) e verranno visualizzati i vari step di Mash
nell’esempio, la mia Weiss esegue i seguenti step di mash:
- 5 minuti a 54 gradi
- 30 minuti a 63 gradi
- 30 minuti a 68 gradi
- 10 minuti a 78 gradi
La temperatura dell’acqua di sparge è settata a 78 gradi e il tempo di bollitura è 60 minuti. Una volta che sono stati settati i parametri apparirà la seconda videata, quella della cotta
Nella parte superiore è visibile la temperatura dell’acqua o del mosto con il relativo valore settato. Cliccando il tasto a destra “Start Mash” inizierà la fase di mash portando la temperatura al valore settato (nell’esempio 54 gradi). Durante tutta la fase di Mash e bollitura verrà graficato la temperatura, questo è molto utile perchè si vedrà se ci sono dei cali termici Non mancano ovviamente alcuni tasti fondamentali, come il tasto di emergenza dove si spengono tutte le resistenze, o pulsanti per accendere o spegnere la singola resistenza. Altra caratteristica utile è la visualizzazione del tempo impiegato nella cotta, dal momento che si preme il tasto Start Mash fino alla fine del fase di bollitura. Io faccio cotte da 15 litri e ci metto 3 ore e 20 minuti, naturalmente poi va aggiunto il tempo di raffreddamento mosto e travaso nel fermentatore.
Codice Mostrare e spiegare tutto il codice in un singolo articolo è una impresa impossibile, ad ogni modo per chi fosse curioso o volesse collaborare alla stesura di questo progetto mi può contattare privatamente, al momento attuale il codice è eternamente “work in progress” tuttavia ho una versione stabile e una in sviluppo che conta ormai oltre 1200 righe di istruzioni. Le parti fondamentali sono leggere la temperatura della sonda e scrivere il valore 0 o 1 sui relè (con 0 si apre il circuito quindi si spegne la resistenza con 1 l’opposto). Vediamo qualche pezzo di codice che reputo interessante al fine della birrificazione. Per quanto riguarda la temperatura, io ho fatto una sola funzione che prende come input la sonda alla quale siamo interessati di leggere il valore, questo comporta che quando si chiama la funziona bisogna sapere quale pin della GPIO (trattato nel precedente articolo) vogliamo leggere.
In maniera analoga, quando vogliamo spegnere una resistenza ho implementato una funzione che prende in input la resistenza e il suo valore (OFF)
Caso diverso invece quando vogliamo accendere una resistenza, in un caso siffatto prima è necessario spegnere tutte le altre resistenza (ad esclusione della pompa), diversamente si supera il voltaggio che ho a disposizione in casa e questo mi farebbe saltare la corrente.
Infine questo codice mostra come viene eseguito il controllo in fase di Mash, se la temperatura corrente è uguale o maggiore di quella impostata allora viene spenta la resistenza di Mash. Qua va tenuto presente un aspetto che forse migliorerà in futuro, al momento attuale ogni 20 secondi leggo la temperatura e valuto il da farsi, questo comporta che la resistenza potrebbe essere stata accesa per 19 secondi oltre la temperatura impostata, da aggiungere che al suo spegnimento esiste comunque un aumento della temperatura dovuto al fatto che la resistenza resta calda per un certo arco temporale. Al momento mi regolo ad occhio, se voglio impostare 53 gradi, io setto 52 o 51.
Conclusioni E’ una passione e un bellissimo passatempo, da soddisfazione vedere la produzione di birra in modo automatizzato e sapere di aver creato il tutto da zero. Come dicevo il software cambia di cotta in cotta e per testarlo, evitando di usare pentole e litri di acqua, alla presa attacco 4 lampadine che si accendono e spengono (simulando di fatto l’accensione o lo spegnimento delle resistenze). Per testarlo in tempi celeri, ho una cotta di test dove gli step di Mash sono solo 2 entrambi di un minuto e le temperature sono di 20 e 25 gradi (velocemente raggiungibili da una lampadina) e il boil è settato a 30 gradi dalla durata di un minuto. In questo modo la cotta di test dura 4 o 5 minuti e so se il software funziona o meno. Inutile nascondere che un po’ di agitazione il giorno della cotta c’è.
Un pensiero su “Il software Cybeer”
Sei un grande!!!! Forza Beghem&Co.