GRBLhal su SKR 2 per un MPCNC

Qualche tempo fa, io e mio cognato avevamo deciso che sarebbe stato un progetto divertente costruire i nostri MPCNC, uno ciascuno. Dato che all’epoca eravamo entrambi in Svizzera, procurarsi i pezzi non era banale, né economico. Raggruppare gli ordini aveva senso, e io ho tutta l’esperienza e le macchine necessarie per la stampa 3D.

Abbiamo acquistato i kit hardware da un posto in Germania che all’epoca vendeva la variante M4/M8 dei kit MPCNC Burly. Poi la vita si è messa in mezzo, come sempre. Io sono diventato padre, lui ha accettato un nuovo lavoro e si è dovuto trasferire oltre confine.

Ma di recente ho avuto bisogno di un router CNC basato su Grbl e ho pensato: “Aspetta, ho quelle scatole di pezzi e tubi pronte per l’uso!” Così ho rispolverato la scatola, ho tirato fuori i tubi d’acciaio dal seminterrato e sono andato a cercare un mobile su cui montare la macchina.

Dopo qualche giorno di assemblaggio, il mio MPCNC era pronto per il cablaggio e l’elettronica. Il cablaggio non è ancora completo, dato che testerò la macchina utilizzando un portapenne invece del mandrino Aliexpress da 500W, dotato di ER-11.

Inizialmente avevo ordinato una scheda RAMPS Mega2560 da Aliexpress per far girare Grbl. Ops. Non ha superato la prova del fumo. Letteralmente.

Quindi mi sono messo alla ricerca di un controller di qualità decente su cui far girare GRBL o GRBLhal. Ho trovato una scheda SKR 2, dal prezzo decente e abbastanza vicina, con step stick TMC2209 che faceva al caso mio.

Una volta arrivata, ho iniziato a lavorare per flashare GRBLhal su di essa. Il metodo è simile a quello con cui si flasha il firmware di Marlin o della MCU Klipper su una qualsiasi scheda BTT: si mette il firmware.bin sulla scheda SD, si lascia che si avvii e si estrae la scheda SD, si verifica che il file si chiami FIRMWARE.CUR e il gioco è fatto.

Solo che… non proprio. Il dannato dispositivo non viene visualizzato su USB! Il che è molto strano. L’ho testato dalla scatola e il firmware di prova è stato visualizzato, quindi sapevo che l’hardware era a posto. Ma la configurazione di platformio aveva tutti i flag necessari che ho trovato nelle documentazioni di platformio e GRBLhal.

Dopo 24 ore di frustrazione, un po’ di sonno e molte ricerche su Google, mi sono imbattuto in questo particolare thread del forum di platformio che illustrava come i parametri di compilazione predefiniti di platformio non configurino correttamente il driver CDC USB sul controller.

Un indizio è stato trovato, un thread è stato tirato e un mistero è stato svelato. Subito dopo, la macchina era in qualche modo funzionante. L’unico problema in cui mi sono imbattuto è stato quello di una delle fastidiose crimpature dei connettori JST-XH che non funzionava correttamente, facendo sì che uno degli stepper non si muovesse mai correttamente.

Una volta risolto il problema, era ora di andare avanti. E così è stato!

Tadaaaa!