Diese Software verwendet an der Schnittstelle zwischen PC/Mac und Spherebot-Controller ein G-Code Protokoll.
Mein erster Versuch war die Benutzung der bei http://pleasantsoftware.com/developer/3d/spherebot/ verlinkten Software in github https://github.com/zaggo/SphereBot. Die recht alte Software benutzt die Bibliotheken SoftwareServo und TimerOne. Speziell TimerOne ist nicht mehr im Arduinobibliothekenspeicher zu finden.
So sollte man in den Bibliotheken und auch im Programmsketch
#include “WProgram.h”
durch
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h" #else
#include "WProgram.h"
#endif
ersetzen - die recht alte Software wurde unter einer Uralt-Arduino-Version entwickelt und nicht weiter gepflegt. Nach dieser Aktion hat Arduino 1.8.19 das Programm fehlerfrei compiliert. (Ein Test auf der Hardware ist nicht erfolgt).
Die in dem Artikel genannte Inkskape-Erweiterung “MakerBot Unicorn G-Code Output for Inkscape” ist jedoch abgekündigt und nur bis Inkskape 0.48.5 getestet (aktuell in 1/2023: 1.2.2). Daher habe ich diesen Weg nicht weiterverfolgt.
Beschrieben ist dieser unter https://www.engineeringspot.de/2020/05/eggbot-mit-arduino-steuerung/. Wie ich das verstanden habe, benutzt diese jedoch nicht G-Code zum Steuern, sondern das propriotäte Eggbot-Protokoll. Speziell die im Kommentar von Reinhard Schlesinger genannte Anleitung ist hier sehr hilfreich:
Software:
– Firmware
1. Download: https://cdn.thingiverse.com/assets/b3/48/50/fa/25/EggDuinoslowservo_final.7z
Inhalt des Ordners „EggDuinoslowservo_final“ nach entpacken:
AccelStepper.cpp
AccelStepper.h
button.h
EggDuinoslowservo_final.ino
Functions.ino
Helper_Functions SerialCommand.cpp
SerialCommand.h
Dem Ordner „EggDuinoslowservo_final“ wurden folgende Dateien aus dem 2. Download „https://github.com/Yura80/EggDuino“ hinzugefügt und anschließend wurde alles hochgeladen:
.gitattributes
.gitignore
LICENSE.md
README.md
VarSpeedServo.cpp
VarSpeedServo.h
Mit dieser Firmware ist es bei mir möglich die PenSpeed über EggBotControl einzustellen!!!
– Inkscape Version 0.92.4 – Inkscape Plugin „EggBot_281-r1.exe (https://github.com/evil-mad/EggBot/releases/download/v2.8.1/EggBot_281_r1.exe) )
– Vorhandene Datei „ebb_serial.py“ im Verzeichnis „…Inkscape/Share/Extensions“ wurde ersetzt durch die Namensgleiche aus „https://github.com/plex3r/plotink“ (siehe Ordner „libraries); Timeout in „ebb_serial.py“ habe ich wie empfohlen auf 2s gesetzt.
Ob der Austausch und die Veränderung der Datei „ebb_serial.py“ notwendig ist habe ich nicht weiter hinterfragt. Habe mich da an gängige Prozeduren im WEB gehalten. Ein Wermutstropfen verbleibt beim mehrfarbigen Plotten: Beim Restart mit dem neuen Layer werden die Stepper kurz stromlos. Ich halte daher den Penarm kurz fest und vermeide somit ungewollte Verschiebungen.
Die Anleitung für die Firmware habe ich einmal 1:1 durchgeführt und konnte damit den Sketch fehlerfrei mit Arduino 1.8.19 (und auch 2.0.4) kompilieren. Anschließend habe ich die Dateien auf den Spherebot-Controller angepasst und die AccelStepper-Bibliothek auf die aktuelle Version hochgezogen.
Nach Anpassung auf die Pins des Spherebot-Controllers läuft die Software problemfrei. In späteren Test wurde festgestellt, das der Rotationschrittmotor falsch herum läuft (Texte wurden von rechts nach links gedruckt), das wurde jedoch per Arduino-SW geändert (hätte man auch in der Eggbot-Inkscape-Plugin machen können, wäre dort aber wahrscheinlich fehlerträchtiger gewesen).
Es empfiehlt sich jedoch, zum einem Test der Hardware einen eigenen kleine Testsketch zu schreiben, der die Schrittmotoren und den Servo ansteuert. Der lässt sich auch zum Einstellen der Strombegrenzung auf der StepSticks (die Schrittmotor-Treiber) verwenden und zeigt schonmal an, dass auf der Eggbotseite alles geht. Aus diesem Grund habe ich diesen Sketch mit beigefügt (eggbot_test_easy.ino).
Um das Progamm auf verschiedenen PC/Laptops ohne Installation zu benutzen, habe ich mich zu einer portablen Installation auf einem USB-Stick entschieden. Das hat zwar den Nachteil, dass der Start des Programmen (in Python geschrieben) recht lange dauert, aber man kann den Eggbot jemanden leihen ohne groß eine komplizierte Installationsorgie zu verlangen.
Diese Anforderung, alles auf einem USB-Stick ablauffähig zu haben, ist unter Inkscape ziemlich kompliziert, weil auch die portable Version immer noch auf dem PC Dateien abspeichern will (unter c:\benutzer\xxx\appdata\roaming\inkscape), so zum Beispiel die eggbot-Extension. Und dennoch gab es immer wieder Probleme, dass die Software nicht lief wegen nicht gefundener lxml-Bibliothek. (Anmerkung: Mit einer Inkscape-Normalinstallation treten die Fehler nicht auf.)
Letztlich funktionierte nur die Inkscape Portable Apps version 1.2.2 (und der Vorgänger 1.1) (InkscapePortable_?.?.?.paf.exe) vernünftig. die ich auf einem USB-Stick (mit dem Laufwerknamen F:) unter F:\InkscapePortable installiert habe. Diese Version speichert alle Daten und auch die eggbot-extension auf dem USB-Stick.
Die Eggbot-Erweiterung “ad-ink_381” wurde wie in https://wiki.evilmadscientist.com/Installing_software beschrieben installiert, indem das Zipfile https://cdn.evilmadscientist.com/dl/ad/public/ad-ink_381.zip herunter geladen und der Inhalt aber wegen der PortableApps-Version in F:\InkscapePortable\Data\settings\extensions\ad-ink_381 auf dem USB-Stick kopiert wurde. (Im Normalfall wäre es in C:\Users\benutzername\AppData\Roaming\inkscape\extensions\ad-ink_381 gewesen).
Bei https://martin-prochnow.de/projects/sphere-o-bot sind die Änderungen des ebb_serial.py beschrieben. Es geht hierbei um die unterschiedlichen USB VID/PID’s des Original-Controllers sowie des Arduinos sowie die Änderung einer Zeitschleife.ebb_serial.py befinden sich dann unter F:\InkscapePortable\Data\settings\extensions\ad-ink_381\axidraw_deps\plotink (oder in Normallfall C:\Users\benutzername\AppData\Roaming\inkscape\extensions\ad-ink_381\axidraw_deps\plotink) mit den Änderungen (links sind die Zeilennummern angegeben):
Unser chinesischer Arduino Nano mit CH340 USB_Seriell-Konverter fällt übrigens unter VID:PID 1A86:7523.
Zu guter letzt: Die Kombination mit der Inkscape-Erweiterung und dem Eggbot-Sketch läuft auf dem Spherebot-Controller ohne Probleme. Natürlich muss der Stift vor Benutzung in der Eggbot-Extension eingerichtet werden (Winkel des Servos für hochgehobenen Stift bzw. Stift auf Ei). Aber Achtung: Stift auf dem Ei ist in Richtung Spitze oder Boden weiter weg, lieber ein paar mm Reserve dazugeben! Und das Ei schön mittig einlegen sonst wird das Bild noch mehr verzerrt.
Erste Frage beim “Es geht nicht”: Ist der Treiber für den USB-Seriell-Wandler auf dem Arduino richtig im Gerätemanager zu sehen? Es sollte etwa so aussehen (bei einem China-Arduino nano):