Abbiamo recentemente rilasciato una nuova versione del firmware 3.10 per tutte le stampanti 3D della nostra ammiraglia MK3. Ci sono un sacco di cose di cui vale la pena parlare, sia correzioni di bug che nuove caratteristiche interessanti. Tuttavia, prima di scendere nei dettagli, permetteteci innanzitutto di chiarire una cosa. Ci piacerebbe molto proporre un sacco di cose nuove, ma la scheda EINSY non ha più molta memoria. Prima di cominciare ad aggiungere nuove funzionalità, dobbiamo sempre ottimizzare quelle esistenti. Questa volta siamo riusciti a risparmiare ben 5 KB di memoria FLASH e quasi 400 B di RAM! È più di quanto sembri – in realtà, una dimensione di memoria comparabile era sufficiente per programmare l’atterraggio sulla Luna dell’Apollo! ( proposito, quel programma è anche disponibile su Github). Ciò significa che questa volta abbiamo avuto abbastanza spazio di manovra.

Come risparmiare spazio? Riscrivendo il supporto TWI, per sempio

Uno dei nostri metodi preferiti per risparmiare spazio è riscrivere un vecchio codice in una forma più intelligente e snella. La migliore occasione è quando il software non deve più svolgere qualcosa che invece viene fatto a livello hardware – per esempio, la comunicazione tra TWI (Two-Wire Interface) e il sensore ottico di filamento MK3. Per ragioni storiche, avevamo implementato il supporto software per la comunicazione del sensore ottico. Tuttavia, ora può occuparsene la TWI basata sull’hardware. Anche se questo ha un impatto solo sulla MK3 originale (poiché i modelli successivi hanno un sensore di filamento diverso), il codice è più breve per tutte le versioni e offre spazio a nuove funzionalità.

Riscrivere una caratteristica non è però l’unico metodo per risparmiare spazio. Abbiamo anche rivisto a fondo la lista ASM delle caratteristiche critiche e abbiamo cercato di “motivare” il compilatore a tradurre meglio il codice. A volte è stato un po’ difficile: per esempio, con la caratteristica Thumbnail Skipper, il compilatore ha resistito a tutti i nostri sforzi di ottimizzazione, così abbiamo dovuto usare un brute-force assembler .

Dunque, quali sono le nuove caratteristiche? La prima di esse è stata una richiesta molto popolare tra gli utenti da un po’ di tempo: mostrare il tempo rimanente al prossimo cambio di filamento – sia in modalità manuale che con l’aggiornamento della MMU. Ora è possibile pianificare in anticipo invece di affidarsi al disperato suono del bip della stampante. Ora stiamo aspettando gli aggiornamenti di PrusaSlicer (o altri slicer) per supportare questa funzione. È in arrivo anche per la stampante MINI.

Per quanto riguarda gli aggiornamenti minori, c’è ora una opzione di preriscaldamento per il filamento PVB e il supporto per ugelli da 0,8 mm.

Traduzioni della Community

Un’altra novità: il firmware ora supporta le traduzioni fatte dalla comunità. Le nostre stampanti parlano molte lingue, tuttavia, finora, abbiamo dovuto occuparci noi stessi di ogni traduzione. Quale delle oltre 2000 lingue del mondo dovremmo privilegiare, dato lo spazio di memoria limitato? Una lingua occupa circa 12 KB, quindi possiamo supportare solo 16 lingue alla volta. Alla fine, abbiamo deciso che la stampante arriverà con un set di lingue predefinito e permetterà le traduzioni della comunità. Ci sembra corretto: finché ci sono appassionati attivi che parlano quella lingua, ci sarà una traduzione disponibile. Grazie a 3d-gussner (anche l’autore del sistema di traduzione), adesso è disponibile una versione olandese. È possibile trovare il sottomenu “Community made” nella fase di selezione della lingua, con Nederlands come unica opzione (per ora). Se si sceglie questa traduzione, la stampante la copierà nella FLASH della CPU e ripartirà in quella lingua – come con qualsiasi altra traduzione “ufficiale”. Fate attenzione però, se non parlate l’olandese, potreste avere difficoltà a cambiare di nuovo la lingua 🙂 Attualmente stiamo sviluppando alcuni strumenti e modalità per i traduttori della community – rimanete sintonizzati.

Il processo di lettura della scheda SD è stato riprogettato molte volte, e adesso è dieci volte più veloce! Creare la lista di file e usarla è molto veloce, non importa se ci sono una decina o un centinaio di elementi. Fino ad ora, creare liste lunghe era un problema. Per alcune ragioni, stiamo usando l’algoritmo Bubble Sort, dove l’ordinamento potrebbe richiedere anche 30 secondi. L’algoritmo Shell Sort, scelto tra diverse possibilità, è notevolmente più veloce, anche se è più difficile da implementare. Il suo unico svantaggio sostanziale è che ordina anche le cartelle. Abbiamo risolto questo problema eseguendo l’algoritmo due volte, per cartelle e file separatamente. Per il momento, il firmware funziona ancora con il Bubble Sort, che ora è molto più veloce grazie al nuovo processo di lettura della scheda SD. Tuttavia, non appena avremo testato tutto correttamente, sarà probabile che passeremo allo Shell Sort.

Supporto di host di stampa

Un’altra risposta alla richiesta di molti: un migliore supporto di vari software esterni, che comunicano con la stampante attraverso una linea seriale (Octoprint, Pronterface, o Repetier-Host), in modo che gli utenti possano personalizzare tutto come vogliono. In questo caso, anche noi avevamo l’idea già da tempo ma abbiamo dovuto attendere di avere lo spazio di memoria disponibile.

Per esempio, la funzione Thumbnail Skipper, la principale origine dell’aumento della velocità di lettura della scheda SD. Prusa Slicer genera miniature per la MINI, che fanno parte del GCODE. Sul display della MK3, queste non si vedrebbero ovviamente. Non venivano nemmeno generate per evitare problemi (anche respingendo il firmware da parte del watchdog) e ritardando l’inizio della stampa. Tuttavia, un software esterno potrebbe effettivamente utilizzare queste miniature, in quanto un’immagine dà sempre un’idea migliore di un semplice nome di file (spesso piuttosto criptico). In Octoprint, ci sono già dei plugin che rendono possibili le miniature, quindi abbiamo avuto molte richieste dalla comunità a questo proposito.

Abbiamo usato il nuovo processo di lettura della scheda SD (aumentando la velocità di quasi dieci volte). Questo processo può anche saltare le linee di commento nel GCODE, comprese le miniature. Un tale cambiamento deve essere testato a fondo. Sembra banale, ma era necessaria una sostanziale revisione di un’ importante sezione del firmware.

Un’altra caratteristica focalizzata sulla comunicazione con le piattaforme esterne sono le Host Actions. Questo comporta una priorità uguale sia per il controllo locale che per quello a distanza – essere in grado di avviare la stampa sia con la manopola di controllo della stampante che con il software esterno, ottenendo la stessa risposta in entrambi i casi. Di nuovo, questo sembra banale, ma è qualcosa che non era previsto all’inizio. Ad esempio, è presente una routine che ferma la ventola per permettere all’utente di pulirla in caso di malfunzionamento. Naturalmente, questo non avrebbe senso se si è lontani dalla stampante… Abbiamo dovuto ripensare e rielaborare molte cose.

Grazie a Host Actions, i pezzi di codice responsabili della comunicazione sono adesso riordinati. Speriamo che il software esterno adesso riesca a comunicare con la stampante in modo più fluido. Questo significa meno necessità di interventi da parte dell’utente e più opportunità di personalizzare e mettere a punto il tutto per un flusso di lavoro specifico. A proposito, questa è una dimostrazione dell’importanza dell’open source, che rende possibili tali modifiche facili e veloci.

Questo è tutto. Quasi! Potete trovare tutti i dettagli meno stravaganti (ma comunque importanti) nelle molto accurate Note di Rilascio del firmware 3.10. Il supporto degli sviluppatori della comunità non consiste solo nel vantarsene agli eventi e alle riunioni, ma nel preparare una documentazione accurata. Continueremo a lavorare su questo!

Speriamo che il supporto esteso di Printer Hosts aiuti a far progredire tutti i software di controllo delle stampanti esterne. A proposito, fateci sapere qual è il vostro software preferito e per quale motivo, così possiamo concentrarci meglio sulle cose più importanti.

Ultimo ma non meno importante, un piccolo teaser per le future versioni del firmware: ci sarà un “contachilometri”, chiamato opportunamente “Maintenance menu”. Traccerà il chilometraggio dei singoli stepper e informerà l’utente di lubrificare i cuscinetti, controllare o sostituire le parti, ecc. Questo è importante sia per la qualità di stampa che per la longevità della stampante. Approfondiremo l’argomento la prossima volta! Nel frattempo, se avete qualche idea su come migliorare la MK3, fatecelo sapere nel thread di discussione dedicato sul nostro forum!

Buona stampa!