Stampante 3D da remoto! Semplicissimo con RaspberryPi


Informatica, Stampa 3D / sabato, Febbraio 8th, 2020

La mia esperienza

Nell’agosto del 2017 dopo aver aver sperimentato l’incisore laser, decisi che fosse l’ora di passare allo step successivo, le incredibili stampanti 3D.

La scelta su quale stampante 3D acquistare per un principiante è sempre complessa, per il semplice fatto che la quantità di tipologie, marche e prezzi è smisurata e poco documentata, supprattuto in italia.
Scegliendola per uso hobbistico, optai per una versione economica, quindi senza tutti gli optional delle blasonate Sharebot e simili.

La mia Anycubic Delta, e la successiva Creality Ender 3, andavano alla grande: creavo i miei disegni con Zbrush o Thinkercad, salvavo il bel file STL (STereo Lithography interface format o acronimo di “Standard Triangulation Language” ), lo copiavo su SD, avviavo la stampa e me ne andavo a lavorare. La prima lezione che ho imparato: le stampe non sempre vanno per il verso giusto.

Dopo 8 ore di stampa e filamento utilizzato, trovavo i pezzi sparati in giro per la casa, o rovinati per la mancanza di qualche supporto, nonchè la fragranza non propio salutare di plastica sciolta in casa.

La necessità era quindi di monitorare e poter fermare la stampa da remoto tramite smartphone o sito web.

La fantastica soluzione è creata e gestita da Gina Häußge che suggerisco di sostenere, la sua opera si chiama OctoPrint.

OctoPrint un software in grado di monitorare in tempo reale il Gcode, gestire le stampe e visualizzarle in streaming con tanto di timelapse.

OctoPi è installabile su tutte le piattaforme, ma la mia preferita è OctoPi, l’immagine di Raspbian, preconfigurato pronto da usare con i nostri RaspberryPi.

OctoPi supporta tutte le versioni di RapsberryPi, ma per le buone prestazioni, soprattutto video, è consigliato un RaspberryPi 3B o superiore.

Cosa fa OctoPi

OctoPi offre un interfaccia web per la gestione totale delle stampe:

  • Invio file STL da remoto, con scelta se salvarli su SD della stampante o SD del RaspberryPi
  • Pulsante di emergenza per fermare la stampa, grazie al Gcode M112 (una lista di gcode del firmware Marlin la possiamo trovare a questa pagina)
  • Una dettaglio apprezzato, è un messaggio di allerta nel caso il firmware della stampante, non avesse un codice di sicurezza in caso di malfunzionamento e rischio incendio. Personalmente la mia Ender 3 è circondata da estintore a forma di palla, pronti a spegnere l’incendio.
  • Streaming della webcam usb o raspicam e salvataggio del timelapse
  • Abbiamo un Raspbian lite a tutti gli effetti, quindi possiamo installare tutto quello che vogliano, compreso il controllo di una multipresa wifi, pronta a spegnere la stampante a fine lavori.
  • la fantastica App per smartphone, utile per chi non ha sempre un pc sottomano
  • i plugin, molteplici pluginsono pronti e facili da installare, per aumentare le sue funzionalità
  • pubblicando i miei disegni su MyMiniFactory, ho trovato utile il plugin OctoPrint-MyMiniFactory, il quale abilita la funzione Click & Print .
  • OctoPi possiede altre funzionalità, come lo slicing, ma personalmente sono convinto che vada fatto con un pc e uno slicer completo.

Requisiti

Partiamo dunque con i requisiti

Preparazione

Scarichiamo i software necessari. Un software che apprezzo molto e consiglia la stessa fondazione RaspberryPi, è il software Etcher , semplice, pratico e disponibile per tutte le piattaforme necessario per copiare le immagini su RaspberryPi.

Ovviamente ci servirà l’immagine di OctoPi  , pronta a partire subito ed in grado di auto espandere la partizione dopo l’avvio.
L’app per smartphoneOctoRemote for Octoprint .

Installazione

Avviamo Etcher come amministratore, selezioniamo l’immagine di OctoPi, poi la schedina SD da formattare e per finire Flash. La velocità di scrittura dipende dalla classe della scheda SD.


Nel caso usassi il wifi, è necessario da pc, entrare nella partizione denominata Boot ed editare solo il file 

octopi-wpa-supplicant.txt
 , usando gli editor consigliati. Io preferisco notepad++ . È necessario eliminare solo i cancelletti delle voci necessarie, senza cancellare gli spazi. I commenti vanno letti con attenzione, ed in fine si modifica la voce

country=IT # italia
 .

Prepariamo il nostro RaspberryPi inserendo la schedina, collegando la webcam e nel mio caso un pulsante per lo spegnimento, alle porte GPIO.

Le porte GPIO sono pienamente sfruttabili, quindi se vuoi cimentarti con le automazioni, collegando relè, luci, sensori di fumo, telecomandi perché non sfruttarli.

Di basilare importanza è il cavo usb da RaspberryPi a stampante, mentre totalmente opzionale sono monitor, tastiera e mouse, visto che sfrutteremo l’ssh, nel mio caso con MobaXTerm Free.

Si parte

Stampante accesa? Tutto collegato? Pronti via! Accendi il RaspberryPi!
Al primo avvio bisogna aspettare un po’ più del solito, per dargli il tempo di configurarsi.
Per collegarsi al RaspberryPi ti servirà il nome o ip.

La mia preferenza è sempre assegnare nel router un ip statico, cosi ogni volta che lo formatto, cioè dopo ogni tutorial, troverò sempre lo stesso ip ed i Nat sempre pronti.

Per accedere al RaspberryPi serve il suo nome o indirizzo. Se hai installato il protocollo bonjour, ti basterà aprire il sito 

https://octopi.local
 o tramite ssh 
pi@octopi.local
.
In alternativa, se non hai usato l’ip statico sul router, sarà sufficiente scansionare la rete con ad esempio MobaXTerm Free  , menù Tools -> network scanner. Oppure su Windows installare Bonjour  . Mentre se usi tastiera e monitor, digita semplicemente
 hostname -I
 .

Interfaccia Web

Ottimo! Tutto operativo. Alla prima apertura della pagina https://octopi.local o 

https://[ip del RaspberryPi]
 verrà avviato il wizard. Nella seconda pagina è importante scegliere una password complessa, o i pericoli saranno gravi.

Una volta premuto “Keep Access control Enabled” ed abilitato “Enable anonymous Usage Tracking” per aiutare gli sviluppatori a migliorare il package Octoprint; proseguiamo con il test di internet e della porta, abilitando “enable connectivity check” .

Abilitiamo “enable plugin blacklist processing” per proteggerci da plugin problematici, ed in fine configuriamo i dati della stampante predefinita, anche se successivamente ne potremmo aggiungere molte di più.

Sulla sinistra troviamo i comandi fondamentali, per la connessione alla stampante, selezioniamo tutto automatico e save connection setting.

Per gli amanti dell’interfaccia in italiano, premendo la chiave inglese, selezionando Appearance, language pack, manage, “the Wiki” potremmo scaricare la traduzione applicabile col pulsante browser.
Premendo connect comunicheremo con la stampante, e nel mio caso, vengo avvisato del pericolo del firmware.

Attenzione col l’opzione “auto connect on system startup“, se il RaspberryPi si riavvierà, la scheda della stampante si riavvierà bloccando la stampa, finora non ho trovato soluzioni per la Ender 3, ma la spiegazione è che la scheda madre è creata cosi.

Pronti per la stampa? Trascina il file STL sopra la pagina web, lo schermo si divide in due, e scegli dove caricare il file.


Attenzione: se carichi localmente puoi vedere e gestire i comandi gcode in tempo reale, ma un cavo usb di scarsa qualità o qualche rallentamento o blocco del RaspberryPi di rovinerà la stampa. Mi è successo varie volte purtroppo.
Se carichi su SD (interna alla stampante), ci vorrà un po’ a caricare, ma sarà indipendente dal RaspberryPi.

Attualmente preferisco caricare localmente ed usare un buon cavo usb, ed incrociare le dita.
Il Tab Control di permette il controllo tramite gcode e webcam della stampante, se clicchi sull’immagine tramite le frecce della tastiera muoverai motori ed estrusore.

I tab gcode viewer e terminal daranno accesso ai layer e comandi gcode, anche se personalmente non li ho trovati interessanti. In Terminal abilitate la soppressione dei vari messaggi offerti, per evitare una miriade di informazioni poco utili.

Il tab timelapse scatta una foto ogni tot secondi o cambio layer, salvando il tutto per caricarlo comodamente su youtube una volta completato. Qui trovate alcuni esempi che avevo creato usando RaspberryPi e raspicam NoIr non originale  .

Consiglio vivamente di leggere tutte le opzioni disponibili, perché sono tante e molto utili.
Inizierei con la sezione PlugIn -> get more… from plugin repository, per installare tutto ciò che serve per espandere OctoPi. Il mio preferito è “Simple Emergency Stop”  .
Il menù Webcam ci informa invece che il link diretto al solo streaming è

https://[ip o nome]/webcam/?action=stream
 .
La sezione API sarà fondamentale per gestire tramite software di terze party quali Ultimaker Cura o App per smartphone.

Gestione remota tramite browser

Dopo aver predisposto tutto, vogliamo gestire da remoto tutto quando, ma come fare?
Ovviamente ci sono vari modi per farlo, installando una vpn col fantastico e semplice PiVpn

curl -L https://install.pivpn.io | bash

o semplicemente creando dei NAT o PortForwarding nel Router verso l’ip del RaspberryPi.

Nel caso avessimo un adsl domestica senza ip pubblico statico, consiglio l’uso del ddns gratuito duckdns, installabile copia-incollando i comandi che ci proporrà nella sezione “install”, una volta registrati e creato il nome host univoco.

Se abbiamo optato per i NAT, ricordo che sarà obbligatorio l’uso di un ip fisso nel RaspberryPi, configurabile da riga di comando tramite sudo raspi-config, oppure tramite la mia preferita, prenotazione nella sezione DHCP del router.

Successivamente accedi da remoto tramite 

https://[nome host ddns]
 ad esempio 
https://stampante3d.duckdns.org
 .
per lo streaming
 https://[nome host ddns]/webcam/?action=stream
 .
Se hai seguito la via della sicurezza, una volta creato il NAT per Openvn verso il RaspberryPi con ip fisso, accederai tramite 
https://[ip LOCALE del RaspberryPi]
.

NAT da configurare

Senza PiVpn (OpenVpn)

Porta 443 verso ip del RaspberryPi

Con PiVpn (OpenVpn)

Porta scelta durante l’installazione (default 1194, consiglio di usare la 20000 per aumentare un pochino la sicurezza) verso ip del RaspberryPi

Gestione remota tramite Ultimaker Cura

Un altro tipo di interazione interessante è usare Ultimaker Cura installato sul pc remoto, nel mio caso in ufficio.

Ultimaker Cura per usare OctoPi necessita dell’installazione del relativo plugin. Esso si trova nel menù Mercato (Market).

Entriamo nella sezione preferenze, stampanti, e per ogni stampante selezionando il pulsante “Connect OctoPrint” potremmo selezionare la stampante, e infine request.

Si aprirà la pagina web di octopi con la richiesti di autorizzazione del codice API precedentemente visto, clicchiamo “Allow” ed apparirà in cura, infine “collega“.

Perfetto! Gestione tramite Cura attiva e funzionante. Guardiamo tramite la webcam, muoviamo i motori ed estrusore, preriscaldiamo ed inviamo gcode direttamente, come M112 per il blocco di emergenza.

Gestione remota tramite App

Spiacente utenti Apple, ma ho solo Android per i test, quindi andiamo su OctoRemote for Octoprint .
Una volta installato aggiungiamo

  • nome stampante a vostra scelta
  • ip locale se tramite vpn o solo localmente, altrimenti nome host ddns creato in precedenza, ad esempio stampante3d.duckns.org, oppure ip pubblico fisso.
  • La porta sarà 443
  • Api key, va selezionato il simbolo del QRCode, se scansionato quello nella pagina web octoprint, menù opzioni -> Api .
  • Abilitiamo enable webcam
  • su Advanced Option, abilita la voce http autentication, inserendo utente e password creati inizialmente

Clicchiamo il menu hamburger, settings, Nome della stampante, “Trust all self-signed certificates“.

Configuriamo tutto ciò che preferiamo, come la rotazione della telecamera e l’aspect ratio.

Verifica che nel campo url sia scritto httpS e non solo http, cosi verrà criptato il traffico, utente e password compresi.

Torna nella home, seleziona connect e goditi la tua stampante 3D in modalità mobile.

Bonus

Io ho collegato la stampante ad una multipresa WiFi comandabile da google home, un pulsante gpio per spegnere il RaspberryPi ed un display oled, un giorno aggiungerò il sensore di fumo.

Tu cosa hai aggiunto?

Spero vi sia piaciuta la guida e vi invito a seguirci per non perdere le prossime novità.

La guida è stata testata con

Riferimenti