Using a GRBL powered Drawing Machine (e.g. EleksMaker)

There is an interesting variety of drawing machines available utilizing Open Source firmware.

AxiDraw, EggBot, WaterColorBot and others use EBB as their controller firmware ( https://www.axidraw.com ,

https://wiki.evilmadscientist.com ... )

However many self built machines, and machines such as EleksMaker ( https://www.banggood.com/EleksMaker-EleksDraw-XY-Plotter-Pen-Drawing-Writing-Robot-Drawing-Machine-p-1125222.html ), use GRBL as the controller firmware.

Here is a workflow for talking to a GRBL based machine.

Install Inkscape 092. They changed from Python 2 to Python 3 with version 1, so the Eleksmaker extension does not work with Inkscape 1.x yet. If you are on Mac, you will need to install Xquarts as well for Inkscape to run.

Install the EleksMaker Inkscape gcode extension, e.g. from here: https://github.com/jmattsson/eleksmaker-inkscape-extension

Instructions on how to use it are e.g. here: https://wiki.eleksmaker.com/doku.php?id=inkscape

Install Universal Gcode Sender from here: https://winder.github.io/ugs_website/

And now the important points that do not seem to be in any other guides :)

  • Remember to convert objects to paths (path -> object to path) in inkscape, if your document only includes e.g. text which is not converted to paths, the g-code will be generated but will just be empty.
  • Remember to rotate everything 45 degrees. The EBB firmware does this, but the GRBL firmware does not do this on an axidraw type design, GRBL is only intended for a simple XY design.
  • Connect the USB cable
  • If you don't already have a CH340 USB driver installed, you may need to install one, depending on what Arduino (nano) is driving the machine.
  • In Universal Gcode Sender, press the "refresh ports" button and select the correct serial port.
  • Click on the "connect" button.
  • Remember to send A1 to GRBL before anything else. Just type A1 in the Console command box and GRBL should answer "ok" If you don't send A1, GRBL will be in laser control mode and will be sending about 7.8kHz out of the servo/laser control port instead of the 1kHz PWM the servo wants.
  • Now you should be able to just press "play" in Universal Gcode Sender and the drawing machine should spring into action.
  • If you are doing algorithmic art, it is quite easy to generate g-code in e.g. Processing or Python.

Yes, I had to use a 'scope to figure out why the servo was misbehaving.

The Eleksmaker inkscape extension for creating g-code is useful for any GRBL bot.

Single line fonts/One line fonts/Engraving fonts - and especially the Hershey text extension (extensions -> render -> Hershey text) are useful.

Thanks to especially Axibot and Evilmadscientist.com for doing a lot of work.