How to Set Up an iDraw 2.0 Plotter and a Raspberry Pi for Headless Operation

Come configurare una plotter iDraw 2.0 e un Raspberry Pi per il funzionamento headless

Questo articolo è stato scritto da @Erez Zukerman

Mi piace molto usare il mio plotter iDraw 2.0, ma preferisco farlo andare piano – quindi i miei disegni possono richiedere un po' di tempo. Ho usato la configurazione Inkscape pronta all'uso per un bel po', ma dovevo tenere acceso e collegato al plotter il mio computer principale mentre lavorava. Non era l'ideale – così ho deciso di vedere se riuscivo a mettere a punto una configurazione “headless” usando un Raspberry Pi.
Si è rivelato molto più facile di quanto pensassi, e anche divertente. Ecco cosa faremo:
●Configurare il Pi stesso.
●Installare CNCjs e le sue dipendenze. Questo è ciò che useremo per controllare effettivamente il plotter, inviando GCode via cavo.
●Prenderemo anche un momento per configurare tutto in modo che CNCjs si avvii automaticamente ogni volta che il Pi si accende, senza che tu debba fare il login o altro.
●Capire come convertire i nostri SVG in GCode (con controllo della velocità della penna).
Nota che questo tutorial presuppone che tu sia a tuo agio nell'usare la riga di comando Linux. Se lo stai seguendo mesi o anni dopo la prima pubblicazione, potresti incontrare vari errori lungo il percorso – è la natura della cosa. Al momento della scrittura, il sistema descritto ha funzionato bene per me.
Iniziamo!

Configura il Pi

È meglio se puoi dedicare un Pi solo a questo progetto, così sarà il tuo “controller del plotter”. Se non puoi, nessun problema – funzionerà comunque, ma potrebbe essere meno comodo col tempo.
Un altro buon motivo per dedicare un Pi solo a questo progetto è che puoi configurarlo da zero con impostazioni predefinite sensate. E così ho fatto: ho preso una scheda SD da 32GB e ho usato lo strumento ufficiale Raspberry Pi Imager per flasharla con Raspberry Pi OS.
Una cosa che lo strumento ti permette di fare, e che consiglierei, è impostare alcune configurazioni predefinite fin da subito. Ho usato l'installer per configurare quanto segue:
●Il mio nome utente e password
●Un nome host locale per il controller del plotter (plotter.local nel mio caso)
●La mia chiave SSH pubblica, così potevo accedere subito alla macchina via SSH
●Il mio SSID/password WLAN, così il Pi si sarebbe connesso alla mia rete all'avvio
Ho configurato tutto questo e poi ho lasciato che Imager facesse il suo lavoro. Quando ha finito, ho espulso la scheda microSD e l'ho inserita nel Pi. Solo per il primo avvio, ho collegato il Pi a una tastiera e a un display – ma non era strettamente necessario. Il nome host plotter.local che ho scelto ha impiegato qualche istante per registrarsi sulla mia rete, quindi ho usato tastiera e display per prendere l'IP corrente (eseguendo ifconfig dal terminale).
Ho fatto SSH sulla macchina, ed era ora di passare al passo successivo: installare CNCjs

Installa CNCjs

Come puoi intuire dal nome, CNCjs si basa su Node. Quindi dobbiamo prima installare Node.
●Effettua l'SSH sul Pi
●Installiamo NVM:
○curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
●Esci dal terminale e poi rientra via ssh. Questo carica NVM.
●Ora installiamo node:
○nvm install node
●Ottimo! È ora di installare CNCjs:
○npm install -g cncjs
●Se tutto ha funzionato fino a questo punto, eseguiamo CNCjs una volta sola. Questo creerà il nostro file di configurazione, ~/.cncrc:
○Dalla riga di comando, nella tua home, esegui cncjs
○Premi Ctrl+C per uscire
●Ora sei il fiero proprietario di un nuovo ~/.cncrc, congratulazioni. Modifichiamolo, principalmente per permettere l'accesso remoto:
○vi .cncrc
{
    "allowRemoteAccess": true,
    "state": {
        "allowAnonymousUsageDataCollection": false,
        "checkForUpdates": true,
        "controller": {
            "exception": {
                "ignoreErrors": false
            }
        }
    },
    "secret": IL_TUO_SECRET_QUI
}
La riga cruciale da aggiungere qui è la prima, allowRemoteAccess.
●Esegui di nuovo cncjs sul Pi.
●Usando il browser sulla tua macchina principale, vai su plotter.local:8000. Dovrebbe aprire CNCjs.

Ora è il momento di collegare il plotter e vedere se CNCjs riesce a comunicare con esso.
●Collega il plotter iDraw 2.0 alla porta USB del Pi.
●Accendi il plotter.
●In CNCjs, trova il widget Connessione (in alto a sinistra di default).
○Premi il pulsante Aggiorna sotto Porta.
○Apri il menu a tendina e scegli la porta.

●Clicca su Apri. Se tutto ha funzionato, la console Gcode dovrebbe ora mostrare del testo.

Muoviamo i motori!


●Usando il widget Assi, premi + e - sui vari assi per muovere i motori. Puoi anche abilitare il “jogging con tastierino” e poi usare le frecce per muovere il plotter. Se inserisci una penna e abbassi l'asse Z, è come un costoso Etch-a-Sketch.


Una nota è che la posizione 0 sull'asse Y è l'opposto di quello che potresti aspettarti: va verso il fondo dell'area di disegno. Torneremo su questo più avanti.

Fai avviare CNCjs all'avvio

Andando avanti, ora vogliamo tornare in questo punto ideale ogni volta che il Pi si riavvia, senza che tu debba fare nulla. Quindi:
●Tornando alla sessione SSH sul Pi, termina CNCjs premendo Ctrl-C.
●Assicurati che sia davvero spento aggiornando il browser (plotter.local:8000, supponendo che sia il nome host che hai configurato). Ora dovrebbe fallire.
●Sul Pi, installa pm2: npm install -g pm2
●Avvia CNCjs con pm2: pm2 start cncjs --name cncjs
●Assicurati che sia davvero avviato e funzioni come previsto: aspetta qualche istante, poi vai su plotter.local:8000 e verifica che si carichi.
●Crea uno script di avvio: pm2 startup. Questo ti fornirà un comando da eseguire con sudo, quindi fallo.
●Salva la lista dei processi: pm2 save
●Riavvia il Pi per verificare se ha funzionato: sudo reboot
●Aspetta che si riavvii, circa 3-5 minuti, poi vai su http://plotter.local:8000/ per vedere se riesci a riaprire CNCjs. Se hai fatto tutto correttamente, dovrebbe riavviarsi senza problemi.
Vittoria! Siamo quasi arrivati – CNCjs è ora completamente configurato. Ma per disegnare qualcosa, dobbiamo fornirgli un file GCode – non gestisce nativamente gli SVG.

Crea una pipeline per convertire SVG in Gcode

Per convertire il nostro SVG in Gcode, useremo Juicy-Gcode, un piccolo strumento da linea di comando.
Una grande novità qui è che stiamo azzerando rispetto all'angolo in basso a sinistra del foglio, non in alto a destra! Questo cambiamento potrebbe richiedere un po' di abitudine. Te lo ricorderò più avanti.
●Sulla tua macchina principale, scarica il file binario di Juicy-Gcode per il tuo sistema operativo: https://github.com/domoszlai/juicy-gcode/releases
●La configurazione di Juicy-Gcode è salvata in un file chiamato "flavor file". È semplicemente un file yaml. Ecco un buon file di partenza, puoi copiarlo/incollarlo in flavor.yaml sulla tua macchina:
begin: |
  G21 ; Imposta unità in millimetri
  G17 ; Seleziona piano XY
  G90 ; Imposta posizionamento assoluto
  F600  ; Imposta la velocità a 600 mm/min -- è molto lento, potresti voler modificare
  G00 Z0 ; penna sollevata
  G92 X0 Y0 ; considera la posizione attuale come 0,0 -- questo è l'angolo in BASSO A SINISTRA
end: |
  G0Z0 ; penna sollevata
  G00 X0 Y0 Z0
toolon: |
  G0Z6 ; penna abbassata sul foglio
tooloff: |
  G0Z0 ; penna sollevata
  
Un paio di cose importanti da notare su questo file di configurazione:
●Faccio funzionare il plotter a 600 mm/min, che è molto lento. Potresti voler aumentare la velocità, a seconda delle tue penne e preferenze.
●L'altra linea importante è quella che inizia con G92. In questa linea, stiamo dicendo al plotter "ovunque tu sia in questo momento, quello è il punto di origine". Quindi, per calibrare un disegno, ci aspettiamo che tu sposti manualmente (e delicatamente) la testina del plotter nell'angolo in basso a sinistra del foglio.
Vuoi che la dimensione del foglio sia impostata correttamente nell'SVG, questo è importante.
Per eseguire Juicy-Gcode, il comando è qualcosa del genere:
juicy-gcode -f flavor.yaml image.svg -o image.gcode
È un po' lungo da digitare ogni volta, quindi ho creato questo piccolo script per rendere le cose un po' più comode:
#!/bin/bash
# Uso: ./run-juicy.sh input.svg [speed]
# Se la velocità non è fornita, il valore predefinito è 600

# Controlla se è stato fornito almeno un argomento

if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then
echo "Uso: $0 <input-svg> [speed]"
echo " Se la velocità non è fornita, il valore predefinito è 600"
exit 1
fi

inputfile="$1"

# Imposta la velocità predefinita a 600 se non fornita
speed="${2:-600}"

# Costruisci il nome del file di tipo
flavor_file="flavor-${speed}mm-speed.yaml"

# Genera il nome del file di output sostituendo l'estensione .svg con .gcode
outputfile="${inputfile%.*}.gcode"

# Esegui il comando juicy-gcode

juicy-gcode -f "$flavor_file" "$inputfile" -o "$outputfile"
Ora puoi avere più file di diversi tipi, ognuno con una velocità di esecuzione diversa, e specificare facilmente la velocità passando il numero che corrisponde al nome del file di tipo.
Ora che hai un file GCode, è il momento di caricarlo e tracciare!

Carica il GCode e traccia

CNCjs ci offre due modi per caricare un file GCode: possiamo caricarlo tramite il browser cliccando su “Upload G-code”, oppure possiamo impostare una cartella di monitoraggio (così ogni volta che un file GCode vi viene inserito, il plotter inizia a funzionare).
Quest'ultimo suona bene in teoria, ma non ha molto senso: ogni tracciamento richiede comunque una configurazione manuale. Dobbiamo posizionare il foglio, installare la penna, ecc. Quindi per me ha molto più senso caricare manualmente il file tramite il browser.
Una volta fatto ciò, fai zoom out per vedere l'anteprima. 

Questo ci dà un paio di controlli di coerenza importanti:
●Ci viene ricordato ancora una volta (…) che il tracciamento inizierà dall'angolo in basso a sinistra del nostro foglio.
●Vediamo le misure sia sugli assi X che Y. Vale la pena prendersi un momento per leggerle e verificare che non superino l'area di tracciamento. Se lo fanno, c'è un problema con il tuo SVG – non iniziare a tracciarlo, altrimenti i tuoi servomotori non saranno affatto contenti.
Assumendo che la tua penna sia nell'angolo in basso a sinistra del foglio e che le misure abbiano senso, è il momento di tracciare! Premi il pulsante Play e guarda il tuo plotter. Ora puoi spegnere il computer o portarlo in un'altra stanza mentre il Pi e il plotter lavorano. Vittoria!

Torna al blog

Lascia un commento

Si prega di notare che i commenti devono essere approvati prima di essere pubblicati.