[RISOLTO] Eggbot/Spherebot controller

Ciao forum,
mi sto cimentando nella costruzione di uno spherebot, un aggeggio che disegna sulle sfere/uova.
Tipo questo: http://egg-bot.com/
(dopo averlo visto mi sono stupito di non averlo trovato nei megatopic, nel forum non ho trovato gran che. è una cosa divertente che si mette insieme con 4 pezzi e due motori, mi sembra ottima per cominciare a muovere qualcosa)

Nel caso qualcuno lo volesse realizzare suggerisco questo design da Thingeverse, nel caso si abbia una stampante 3D: Improved printable eggbot by nglasson - Thingiverse

Per l'elettronica ho optato per un arduino uno con una shield per GRBL bella pronta con i driver A4988 per gli stepper, ho avuto esperienze con una motor shield della adafruit e (va bene che la usavo inizialmente male io) ho capito che dei driver sono qualcosa di UN PO' più prestante di un ponte H, anche se sono cinesi.

Ho testato il tutto con un firmware GRBL standard, e l'elettronica è a posto, i motori motorano e l'unica cosa che devo risolvere è dove attaccare il servo, ma questo si risolve con una piccola modifica al firmware.

Adesso il problema è che non riesco a trovare una coppia firmware/controller che sia funzionante, ho provato tutti i principali progetti:

GitHub - coredump-ch/eggbot: An Arduino Eggbot implementation. Work in progress. (per la shield adafruit)
GitHub - zaggo/SphereBot: Arduino Firmware for the SphereBot, an EggBot inspired robot

Il problema è che a parte thunderbug sono progetti vecchi di anni, per vecchi ide, vecchie librerie, e soprattutto vecchi protocolli di comunicazione.
Mi sto concentrando sul progetto di thunderbug, ma non risolvo.
Carico il firmware e, se apro un monitor seriale, l'arduino mi risponde correttamente.
Se uso il controller non si muove niente.

Ho scritto a thunderbug ma dice che è un baco software che "non trova da molto tempo" e finchè è firmware ancora posso pensare di metterci mano, sul software del controller non saprei da dove cominciare.

Comunque, non mi interessa avere le ultime feature degli egg bot commerciali, mi basta iniziare a muovere qualcosa. Nessuno nel forum ha mai realizzato una macchinetta del genere?
Se qualcuno avesse una software toolchain completa sarebbe molto apprezzata. :slight_smile:

Se ti può essere utile qualche mese fa ho modificato il grbl per gestire un servo.
Qui trovi il sorgente: GitHub - robottini/grbl-servo: grbl 0.9i with Servo motor support

Per quanto riguarda l'eggbot, io l'ho fatto un paio di anni fa. Avevo scritto ad un amico la procedura seguita che ti riporto. Avendo un paio d'anni, non assicuro che tutti i link siano funzionanti. Non avevo usato GRBL ma un altro firmware. Ecco quello che avevo scritto:

"tra i vari link che ci sono su thingiverse, ti consiglio di usare quello di open-electronics (SphereBot - Full Project by BorisLandoni - Thingiverse) che punta a questo sito:
http://www.open-electronics.org/spherebot-reloaded-customize-your-xmas/

Questo sito è di elettronica in, quindi a breve immagino faranno anche un articolo sulla eggbot sulla rivista. E' spiegato abbastanza bene tutto quanto il procedimento ed è allegato il sw da scaricare, comprese le librerie.
Io ho usato la versione 0.22 di Arduino e non ho avuto problemi. Naturalmente devi adattare la mappatura dei pin ai tuoi driver degli stepper, perchè loro usano addirittura una ramps con l'arduino mega.
Io ho usato dei tradizionali stepstick collegati direttamente ad un arduino uno. Ho usato come sistema operativo windows 7 ma se vuoi posso provare anche con windows 8.

Per la parte meccanica ho stampato i pezzi presi da Revised Fully Printable Eggbot by Glasswalker - Thingiverse. Ho visto però che era necessaria la molla di richiamo del pennarello, come nel progetto di open-electronics, però invece della molla di metallo usata da open-electronics ho preferito usare quella stampata. La molla l'ho presa da qui:Finucane Derivative Eggbot by FinucaneDesignLLC - Thingiverse insieme al braccetto che sorregge il pennarello.

Per il resto basta seguire le indicazioni del sito open-electronics. L'unica modifica che ho fatto è quando salvi il gcode, ti compare una scheda in cui devi settare gli angoli del servo up e down e le velocità. Quella di open-electronis (2000 mm/min) è una velocità alta (XY axes feedrate), se vuoi precisione nel tratto devi scendere molto, anche fino a 200. Chiaramente il tempo è proporzionale.

Poi rimane da impostare la dimensione sul inkscape del 'foglio' (l'uovo o la palla) su cui scrivere. Segui la guida di open-electronics, dovrebbe funzionare. Dico dovrebbe, perchè devo dire che non ho trovato il modo per capire bene la dimensione. Ho 2pigrecor per capire la circonferenza. Ma non mi sembra che funzioni bene, soprattutto con i disegni già fatti che scarico da thingiverse.

L'altro problema che ho è che alle volte, quando inizia a disegnare, invece di 'volare' fino al punto in cui iniziare a disegnare, fa una linea che rovina il disegno. Alle volte lo fa, alle volte no, non ho capito il criterio. Dovrei studiarmi meglio il .pde dell'Arduino e vedere se trovo qualcosa, perchè nel merito del plug-in di inkscape non sono in grado di entrare. Il g-code mi pare pulito e corretto, ma dovrei verificare meglio.

L'ultima cosa sono i pennarelli. Io ho fatto le prove con uno solo e mi pare che il cambio pennarello comunque non funzioni, perchè quando ho impostato 'cambia pennarello' per ogni layer, lui se ne è fregato. Se tu fai qualche prova e trovi la quadra, magari dimmelo."

Grazie per la risposta,
per la meccanica e l'elettronica standard ci sono, la macchina è già stampata e montata.
Ho visto il sito di elettronica in, l'avevo visto ma alla fine nella pagina thingeverse rimandavano al repo github di thunderbug (che, ripeto, ha ammesso di avere qualche baco nel programma host, che è lo stesso che usano sul sito di elettrinica in) e quindi ho pensato di andare diretto con quel progetto.

NB:

Ho provato il firmware del progetto x-mas, per chi volesse provare ad usarlo segnalo che c'è da patchare una libreria se si usa il nuovo ide: prima di caricare le librerie tramite il solito sketch/libraries... c'è da cambiare WProgram.h in Arduino.h .

domani proverò con quel firmware il software host di thunderbug e inkscape con unikorn, ma sono curioso anche dell'estensione per inkscape dell'eggbot ufficiale. (Installing software - Evil Mad Scientist Wiki)

Piccolo dubbio: la mia shield grbl ha un pin di enable per tutti i motori, tutti i firmware però ne prevedono due. Che tu sappia, c'è qualche controindicazione vincolante ad usare lo stesso enable per i due motori? Giusto per capire se devo già pensare di cambiare elettronica di potenza. :o
Devo anche riuscire a capire se è sufficiente assegnare lo stesso pin ai due enable, ma dubito, o se devo mettere mano più in profondità nel codice per usare la stessa variabile per i due stepper.

Intanto devo risolvere il problema del comandare correttamente il bot dal software host, poi mi concentrerò sul "CAM" (inkscape), se trovo come controllare il tutto con precisione e come cambiare penna ti faccio sicuramente sapere! :wink:

Non credo che usare lo stesso pin nei due enable possa in qualche modo danneggiare lo shield o i driver. Puoi fare una prova prendendo un minimo di rischio oppure metti mano al codice.

Dunque, piccolo aggiornamento:

ho provato il codice xmas riadattandolo un po', la questione del pin di enable in comune si risolve facilmente dichiarandone uno solo da assegnare alle istanze dei due stepper:

#define STEPPER_ENABLE_PIN 8
StepperModel xAxisStepper(XAXIS_DIR_PIN, XAXIS_STEP_PIN, STEPPER_ENABLE_PIN, XAXIS_ENDSTOP_PIN,         XAXIS_MIN_STEPCOUNT, XAXIS_MAX_STEPCOUNT, 200.0, 16);
StepperModel rotationStepper(YAXIS_DIR_PIN, YAXIS_STEP_PIN, STEPPER_ENABLE_PIN, YAXIS_ENDSTOP_PIN, 0, 0, 200.0, 16);

Anche attaccare il servo alla shield grbl è facile, basta dichiare il pin del servo su qualcosa di libero, tipo lo spindle-enable:

#define SERVO_PIN 12 // pin dello spindle-enable nelle schede cnc grbl

Via monitor seriale tutto si muove correttamente, l'elettronica è a posto.
Invece con lo Spherebot control 2.0 non ne vengo fuori, ho dovuto cambiare anche il baudrate della seriale dell'arduino su 57600 per farlo vedere all'host (che ha fastidiosamente il baudrate hardcoded).
Nella finestra received data mi appare infatti "SphereBot modified By Boris Landoni 1.0", ma poi se mando gli stessi comandi sul prompt seriale appena sopra non funge niente. >:(

C'è evidentemente almeno un problema di comunicazione seriale, lato host.
Ma guardando i commenti sotto alla pagina xmas sembra che il bot si riesca a comandare, qualcuno lamenta problemi dopo tot righe di codice, io non muovo proprio niente con l'host.
(poi, nella pagina xmas mettono un codice con cui non comunicano proprio col software che propongono, non mi torna proprio questa cosa)
Non capisco tutta questa differenza di problemi con un solo programma.
Vabbè, continuo a provare...

Spherebot completato! :smiley:

Alla fine ho usato il firmware di cocktailyogi e il software dell'Eggbot originale:

Il software host non è stato toccato, a parte la patch suggerita da coctailyogi, il firmware è stato un po' adattato per funzionare con una grbl cnc shield. Farò un po' di prove e poi magari pubblicherò un fork del firmware su github in modo da avere una versione specifica per le schield grbl-compatibili (in realtà cambia davvero poco, qualche assegnazione di pin e la gestione dell'enable dei motori in comune).

ps: il software dell'eggbot permette il cambio penna in base ai layers dell'immagine
Non è male come software, anche se questo kit di software mi piace di meno perchè lascia tutto il controllo della cinematica all'estensione inkscape e quindi lo rende meno adattabile a varie macchine. Avrei preferito che fosse solo un CAM e che si occupasse solo di tracciare e trasmettere il percorso.
In più non mi piace il fatto che non dia nessun feedback su cosa stia succedendo durante la stampa. Una volta cliccato "applica" lui stampa e non comunica niente fino a stampa conclusa.

Complimenti per avercela fatta!
Io ho una Sperebot pronta a disegnare ma non riesco a caricare eggDuino.

Ci sono delle procedure da fare tipo caricare librerie extra?
Io ho dovuto togliere Function.ino e metterlo nella stessa cartella di eggDuino, perchè non caricava delle funzioni. Ho notato che avr/eeprom.h non cambia colore, incuriosito ho cominciato a cercare e penso di aver capito che non sia una libreria ma un richiamo a funzioni interne di avr. Però penso che non funzioni bene perchè ricevo errori in verifica

Con ide 1.6.6
EggDuino:60: error: 'setprgButtonState' was not declared in this scope
Button prgButtonToggle(prgButton, setprgButtonState);
EggDuino:63: error: 'doTogglePen' was not declared in this scope
Button penToggle(penToggleButton, doTogglePen);
EggDuino:66: error: 'toggleMotors' was not declared in this scope
Button motorsToggle(motorsButton, toggleMotors);
exit status 1
'setprgButtonState' was not declared in this scope

Con ide 1.0.6
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows NT (unknown)), Board: "Arduino Uno"
Helper_Functions.ino: In function 'void storePenUpPosInEE()':
Helper_Functions:26: error: 'eeprom_update_word' was not declared in this scope
Helper_Functions.ino: In function 'void storePenDownPosInEE()':
Helper_Functions:30: error: 'eeprom_update_word' was not declared in this scope

Qualcuno riesce ad aiutarmi non so più cosa fare?

Dunque, intanto facciamo finta di usare l'ultima versione di arduino, che non ha senso sistemare qualcosa di vecchio.

Che software usi?
Io ho usato questo e immagino sia anche quello che vuoi usare tu: GitHub - cocktailyogi/EggDuino: Arduino Firmware for Spherebot / Eggbot integration in Inkscape

In realtà si, delle librerie servono, ma sono già inserite nella cartella del progetto e quindi dovrebbero andare bene così.

Ho appena provato a scaricare il progetto, ricompilare per un arduino 2009, e nella cartella delle librerie di arduino (documenti/arduino/librerie) non ho le due librerie, quindi direi proprio che se le pesca direttamente dalla cartella.

Prova a rifare tutto daccapo facendo un passo alla volta, reinstallando l'ide e riscaricando il progetto fresco.

daysleeper:
Dunque, intanto facciamo finta di usare l'ultima versione di arduino, che non ha senso sistemare qualcosa di vecchio.

Che software usi?
Io ho usato questo e immagino sia anche quello che vuoi usare tu: GitHub - cocktailyogi/EggDuino: Arduino Firmware for Spherebot / Eggbot integration in Inkscape

In realtà si, delle librerie servono, ma sono già inserite nella cartella del progetto e quindi dovrebbero andare bene così.

Ho appena provato a scaricare il progetto, ricompilare per un arduino 2009, e nella cartella delle librerie di arduino (documenti/arduino/librerie) non ho le due librerie, quindi direi proprio che se le pesca direttamente dalla cartella.

Prova a rifare tutto daccapo facendo un passo alla volta, reinstallando l'ide e riscaricando il progetto fresco.

Grazie funziona tutto ho reinstallato l'ide e il progetto e ora gira a meraviglia.