Raspberry – Accendiamo un led da remoto

Raspberry - node

In questo articolo vedremo come accendere un led da remoto usando un raspberry, per chi fosse interessato trova un progetto simile fatto con Arduino a questo link.
Il progetto può sembrare banale ma in questo articolo vedremo tutto quello che ci serve per poter controllare il raspberry da remoto andando a pilotare a piacimento i suoi pin.

Prima di partire con il codice voglio parlavi di alcuni concetti importanti che useremo in questo progetto:

  • Node.js
  • NPM

Partiamo da Node.js la cui definizione ufficiale presente sul sito Node.js è la seguente:

Node.js® è un runtime Javascript costruito sul motore JavaScript V8 di Chrome. Node.js usa un modello I/O non bloccante e ad eventi, che lo rende un framework leggero ed efficiente. L’ecosistema dei pacchetti di Node.js, npm, è il più grande ecosistema di librerie open source al mondo.

Capisco che da questa definizione forse non avete capito molto per questo vi rimando al video di Alberto Olla che spiega in maniera veramente esaustiva e semplice cos’è Node.js e come funziona.

Come secondo punto vediamo cos’è NPM (Node Package Manager), come dice la definizione sopra citata è il più grande ecosistema di librerie open source al mondo , dove trovare  repository di librerie, o moduli, scritti da terze parti per il linguaggio server-side JavaScript.

CODICE RASPBERRY

Ora passiamo a scrivere il codice che ci permetterà di accendere da remoto il led collegato al raspberry.
Per prima cosa dobbiamo installare node.js sul nostro raspberry quindi apriamo un terminale e digitiamo

Dopo aver installato node eseguiamo il reboot del raspberry, per verificare la corretta installazione lanciamo il comando node -v che ci restituisce la versione corrente di node e npm -v che restituisce invece la versione corrente del node package manager, necessario per l’installazione rapida di librerie.

Ora quello che dobbiamo fare e tirare su un server su raspberry che rimanga in ascolto e risponda alle nostre chiamate per accendere il led, il codice per farlo è il seguente:

Per creare questo server utilizzeremo la libreria express quindi digitiamo

Per comunicare con i pin  del raspberry invece abbiamo bisogno della libreria pigpio

Ora che abbiamo entrambe le librerie passiamo a vedere il codice, in particolare dopo aver definito le variabili app e Gpio per le nostre due librerie non ci resta che definire il pin dove collegare il led, in questo caso il 18 e specificare che è un pin di output.

Avviare il server in ascolto sulla porta 8080

e infine definire la rotte a cui l’app deve rispondere che in questo caso è /light/:status

dove status è un parametro che assumerà il valore definito dalla request.

A questo punto non ci resta che avviare il server quindi lanciamo il seguente comando (index.js è il nome del file dove è presente il nostro codice)

Per accendere e spengere il led ci basterà aprire un browser e digitare:

Led ON

Led OFF

Con questo abbiamo visto come accendere il raspberry all’interno della nostra rete locale se volessimo raggiungere il raspberry da remoto possiamo semplicemente creare un tunnel in modo da esporre il nostro localhost al mondo, per far questo basta semplicemente installare localtunell

E successivamente lanciare in un’altra shell

Ci verrà mostrato un indirizzo, usiamolo come indirizzo del raspberry in questo modo potremmo accedere da qualsiasi parte del mondo al nostro server :).