OctoPrint accende stampante e lampada

OctoPrint è una interessante installazione per Raspberry Pi per il controllo remoto della propria stampante 3D, perché contiene sia la possibilità di eseguire file gcode che lo slice dei file slt in quanto al suo interno troviamo Cura. Altra chicca è la possibilità di utilizzare una Pi camera o una Camera USB per monitorare la stampante 3D.
Per incrementare il controllo è utile utilizzare un modulo relè per accendere la stampante stessa e una lampada, quest’ultimo è utile se avete come me la stampante in una stanza che generalmente è al buio e non volete tenere sempre accesa una lampada.
Ho preso spunto dalla un tutorial ufficiale https://github.com/foosel/OctoPrint/wiki/Controlling-a-relay-board-from-your-RPi, poi ho reso più potabile il concetto.
Come modulo relè consiglio uno della sainsmart.com oppure un clone cinese che si trovano su Amazon, Ebay o Aliexpress per meno di 5 euro.

Parte elettrica e camblaggio

per il cablaggio elettrico potete vedere direttamente sul sito http://www.sainsmart.com/arduino-pro-mini.html, io ho preferito usare i GPIO 2, 3 che sono molto vicini a PIN per l’alimentazione.
RaspberryPI gpio
Il utto poi è stato inserito in una scatola da derivazione per esterni che permette di fare un lavoro abbastanza pulito.

Lato software

Per poter comandare i GPIO è necessario installare la libreria WiringPi, che poi è alla base di tutte le librerie per la gestione dei GPIO anche nei vari linguaggi di programmazione.
WiringPi non è solo una libreria ma mette a disposizione dei comandi per il controllo diretto da terminale e proprio usando questi comandi e inserendoli in OctoPi otteniamo il nostro risultato.
Vi segnalo alcuni siti per comprendere l’uso di WiringPi:
Per installare WiringPi seguite questi comandi, non serve essere sudo user
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
cd wiringPi
./build
Poi c’è una spetto da mettere a punto è quello per cui al riavvio perdiamo la configurazione dei GPIO PIN al riavvio. Quindi si crea un script SH molto grezzo lo rendiamo eseguibile e poi lo diamo in pasto a CRONTAB con l’opzione @reboot.
per editare consiglio nano che è meno ostico di vim
nano gpio.sh
E poi aggiungete il seguente test
gpio -g mode 2 output
#gpio -g write 2 1
gpio -g mode 3 output
#gpio -g write 3 1
con i commenti all’avvio i due cosi sono accesi 
salvando con crtl + o e uscento con crtl + x
lo script deve essere reso eseguibile con:
chmod +x gpio.sh
editiamo crontab con:
crontab -e
 e poi aggiungiamo la riga:
@reboot /home/pi/gpio.sh
per il percorso del file ho previsto di metterlo in /home/pi
poi si deve andare modificare il file config.yaml di OctoPrint al fine di aggiungere i comandi nuovi al menù System. Per ora ho capito solo che si può lavore facile solo su questo anche se vorrei spostarli altrove.
aprite il file
  nano .octoprint/config.yaml
aggiungere queste righe
dopo system:
  actions:
- action: printer on
    command: gpio -g write 2 0
    name: Turn on the printer
 - action: printer off
    command: gpio -g write 2 1
    confirm: You are about to turn off the printer.
    name: Turn off the printer
  - action: lamp on
    command: gpio -g write 3 0
    name: Turn on the lamp
  - action: lamp off
    command: gpio -g write 3 1
    name: Turn off the lamp
Per il mio caso ho previsto :
al pin 3 ci va la lampada
al pin 2 ci va la stampante

Immagini Varie

Schermata OtcoPrint con i nuovi comandi scheda relè in una scatolaRaspberryPi dettaglio collegamenti al GPIO

P.S.

Visto che OctoPi comunica con la stampante 3D attraverso il cavo USB, è necessario un piccolo hack sul cavo. In pratica si deve isolare il pin 1, quello che porta il V+ altrimenti la scheda di controllo rimane alimentata dalla RaspberryPi.
pin out usb
Sono possibili due vie, quella di recidere il cavo specifico oppure usare del nastro isolante e coprire il PIN corrispondente. Io ho scelto la seconda via che è meno definitiva anche se si deve fare un lavoro da certosini, consiglio di fare l’operazione sul connettore A.