Oggi voglio presentare un piccolo progetto scritto in Node.js per controllare tramite i GPIO del Raspberry Pi, una ventola posta direttamente sul SoC del Raspberry Pi.
Sul mercato è facile ormai infatti reperire case di questo tipo, con acclusa una ventolina a basso voltaggio:

raspberry pi fan 5v

Il progetto è molto semplice. Si suddivide in parte Hardware e parte Software. Nella prima si mostra lo schema di collegamento. Nella seconda la procedura per scaricare e installare il software per pilotare e gestire la ventola in modo corretto. Lo scopo è quello di avere un sistema in grado di attivare in modo dinamico e controllato, la ventola qualora raggiunga una certa temperatura di soglia.

NB. Come ben noto, il raspberry pi non ha necessità di dissipatori o ventole aggiuntive, guide di questo genere hanno una finalità puramente didattica per lo più.

Hardware

Il progetto deve poter pilotare una ventola in modo dinamico, a “comando”. Dunque è necessario effettuare un collegamento a ponte utilizzando un transistor. Infatti non possiamo collegare il polo positivo della ventola direttamente a un pin GPIO, perchè il voltaggio e l’amperaggio fornito non sono sufficienti ad alimentarla. Rischieremmo di danneggiare la board.

Utilizzare un transistor è la strada giusta. Questo progetto funziona con qualsiasi versione di Raspberry Pi si stia utilizzando.

– Il modello di transistor per cui ho optato è il 2N7000.
– La ventola invece ha questa tensione di funzionamento: 5V 0.2A.

Lo schema di collegamento è il seguente:

schema collegamento ventola raspberry pi

Raccomando prima di effettuare eventuali saldature e collegamenti definitivi, di testare correttamente il funzionamento del sistema. Infatti è importante che il transistor sia orientato nel verso giusto!

Software

Per installare il software innanzitutto è importante verificare di avere Node.js installato sul proprio RPi.
Basta lanciare da terminale il comando node -v, se la risposta è un numero di versione, allora potete procedere. Altrimenti se il comando è sconosciuto dovete assicurarvi di installare Node.js per piattaforme ARM.

Installato Node.js siamo pronti a proseguire.

Cloniamo la repository che contiene il codice sorgente, direttamente da github. Se volete clonare la repo sul desktop allora lanciate prima il comando cd /home/pi/Desktop, dopodichè possiamo lanciare il comando che avvierà il download: git clone https://[email protected]/roccomuso/rpi-fan.git

Il software è pronto e scaricato sul vostro Desktop. Dentro la cartella troverete un file di configurazione chiamato config.json che conterrà voci del tipo:

"PIN_NUMBER" : 18,     // Il GPIO a cui è connesso la base del transistor
"REFRESH_TIME" : 60,    // tempo di controllo della temperatura, 60 secondi di default.
"TEMPERATURE_THRESHOLD" : 40.0,  // soglia temperatura, oltre il quale viene attivata la ventola
"WEB_SERVER": true,    // se impostato su true aprirà un web server sulla porta specificata
"SERVER_PORT": 4949    // porta di apertura del web server.

Se avete dubbi su quale sia il pin GPIO giusto a cui far riferimento, date un’occhiata alle varie mappature dei pin, in base al vostro modello di RPi specifico (nel mio caso Raspberry Pi 2 pinout).

Se l’impostazione del server è impostata a ‘true’, potrete vedere i vari log di esecuzione e delle informazioni generiche sulla temperatura direttamente all’indirizzo: http://ip_address:SERVER_PORT/

Eseguiamolo all’avvio

Per aggiungere la possibilità che questa applicazione venga eseguita all’avvio del sistema, è sufficiente da terminale lanciare il comando:
crontab -e
Dopodichè aggiungere la seguente linea:

@reboot /usr/local/bin/node /home/pi/Desktop/rpi-fan/index.js >/tmp/fan_output 2>/tmp/fan_error

In particolare gli ultimi 2 parametri servono a indicare di scrivere rispettivamente l’output del programma e gli output di errore nei file indicati dentro la cartella /tmp.

Se avete incontrato difficoltà, non esitate a commentare. Se lo avete trovato utile, condividete pure 😉