RPi Remote Switch

Controllo remoto GPIO di Raspberry Pi da Web con PHP e WiringPi

Tempo fa avevo sviluppato un progetto di controllo remoto GPIO RaspberryPi da Web utilizzando Flask, un micro framework per la realizzazione di pagine web e la libreria RPi.GPIO di Python. Flask è un’ottima soluzione, in quanto perfettamente integrato con Python e quindi con la gestione dell’hardware di RPi.

Tuttavia ho voluto sperimentare una strada diversa, utilizzando gli strumenti a disposizione di un web server tradizionale, ovvero Apache o Nginx con PHP e l’ausilio della libreria C/C++ WiringPi. C’è da precisare che allo stato attuale, Gordon, l’autore di tale libreria, ha deciso di terminarne lo sviluppo, tuttavia l’ultima release 2.52 è pienamente compatibile con tutte le versioni della board Raspberry Pi, fino alla 4B.

Installazione

Web server

Come ho già accennato, occorre installare sul Raspberry Pi le applicazioni necessarie alla creazione di un web server. Alla pagina Web Server con Raspberry Pi troverete le istruzioni del caso.

Wiring Pi

La libreria WiringPi è solitamente già presente sulla distribuzione Raspbian. Per verificare, dalla linea di comando digitare:

gpio -v

che mostra la versione installata.

L’utility gpio consente di configurare, leggere e scrivere lo stato dei pin della porta GPIO e verrà richiamata dal PHP per interfacciarsi con l’hardware. Inoltre non richiede i privilegi di amministratore, quindi può essere eseguita senza problemi dal server PHP. Non è un modo molto efficiente, ma non c’è alternativa e, considerato il tipo di utilizzo, è più che sufficiente. Esistono un paio di librerie in PHP per la gestione della GPIO, ma sono ormai obsolete.

Remote Switch

Scaricare RPiRemoteSwitch dalla tabella sottostante, copiarne i file in una sotto-cartella del web server (solitamente /var/www/html).

Aprire e modificare, nella parte indicata di seguito, il file index.php specificando, per ogni riga, numero pin e descrizione della porta, lasciare a 0 l’ultima colonna. Per la numerazione delle porte GPIO fare riferimento a quanto indicato alla pagina WiringPi pins. Aggiungere o togliere righe in base al numero di controlli che necessitano.

$relay = array(
  array(1,"Switch1",0),
  array(4,"Switch2",0),
  array(5,"Switch3",0),
  array(6,"Switch4",0)
);

Digitare dal browser l’indirizzo IP del proprio Raspberry Pi, eventualmente seguito dal nome della sotto-cartella, e si aprirà la pagina web dell’applicazione. Premendo sul pulsante on / off , si accende o spegne la rispettiva porta. Lo stato delle uscite attive è indicato in colore verde, bianco quelle spente, rosso se si verifica qualche errore legato alle impostazioni o ad un problema di esecuzione dello script sul server.

A questo punto sarà possibile controllare da remoto qualunque utenza connessa all’interfaccia GPIO del Raspberry Pi, tramite dispositivi che siano in grado di navigare sul web.

Download

VersioneDataChange log
1.006/2020Prima release
Legenda: + Nuovo; – Rimosso; * Aggiornato.

Hardware

La parte hardware è composta, oltre che dal Raspberry e suo alimentatore, da una scheda relè 5V optoisolata, di quelle che si trovano comunemente sul web. La scheda andrà opportunamente interconnessa ai pin della GPIO per il pilotaggio e l’alimentazione.

Modulo relè - Raspberry Pi
Modulo relè – Raspberry Pi

Riferimenti

  1. Simple and Intuitive Web Interface for Your Raspberry Pi, TheFreeElectron su instructables;
  2. Wiring Pi, GPIO Interface library for the Raspberry Pi;
  3. Raspberry GPIO, su www.raspberry.org.

Argomenti correlati


Licenza Creative Commons Questa opera è distribuita con:
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Italia.

Si declina ogni responsabilità per eventuali errori ed omissioni e gli eventuali danni che ne dovessero conseguire. Per ulteriori informazioni consultare le note legali.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *