sabato 28 marzo 2015

PHP image to gcode laser online converter - software per generare gcode per cnc laser con Arduino + GRBL

Dopo aver terminato la realizzazione della mia cnc laser mi sono imbattuto nello sviluppo di un software per convertire le immagini (jpg, png, bmp) in codice macchina (Gcode).
Me lo sarei anche risparmiato se non per il fatto che online di gratuito non si trova praticamente niente.

L'unico software semplice da usare che ho trovato per incidere le immagini con il laser capace di generare il gcode è picengrave che oltre ad essere a pagamento è anche instabile, quantomeno sui miei PC.
Non mi andava di spendere altri 79 dollari per fare semplicemente delle prove.

Il PHP è il mio pane quotidiano così utilizzando le librerie PHP GD ho sviluppato un semplice programmino che legge le immagini pixel x pixel e in base alle loro coordinate regola la potenza del laser.

Prova il generatore

Image to Gcode Generator


Indicazioni sul procedimento adottato
Il procedimento è relativamente semplice, l'immagine viene caricata sul server, scalata se troppo grande e poi rielaborata graficamente applicando gli effetti di conversione in scala di grigi + filtro negativo + specchiata su entrambe le direzioni.

L'intensitá del laser viene calcolata in base all'intensitá della scala di grigi, su una scala di 255 tonalità dove il bianco rappresenta il laser è spento ed nero il laser alla sua massima potenza.

Ogni pixel rappresenta una riga di Gcode dal primo pixel in alto fino all'ultimo in basso per cui ci si rende facilmente conto che è molto facile generare un Gcode con più di 100.000 righe.
Ho anche aggiunto qualche ottimizzazione per ridurre sensibilmente il numero di righe e ne ho giá in mente altre che introdurrò prossimamente.



L'approccio che ho adottato non è sicuramente dei più ottimizzati perchè obbliga la macchina a fermarsi ad ogni pixel accendere il laser alla giusta intensitá per poi ripartire al pixel successivo.
Se qualcuno ha soluzioni migliori vi prego di segnalarmele con un commento.





In ogni modo senza spendere mezzo euro ho avuto la soddisfazione di vedere un qualcosa di funzionante con i risultati desiderati.