Brushograph

Introduction
Doms' Brušografia
Brushology – Ways of painting with a mechatronic brush
https://mechatronicart.ch/brushology-ways-of-painting-with-a-mechatronic-brush/
Dominik Mahnič
Dominik Mahnič (Ljubljana, Slovenia), an emblematic figure nestled between the realms of academic painting, video mastery, technology, and street art insurgency, raises questions about the perpetual dialectics between classical artistry and the onslaught of contemporary technological modalities. Within this discourse emerges the Brushograph – a complex symbol not merely of art but also of the intersections between past, present, and anticipated futures.
Links:
- https://app.assembla.com/spaces/dominik-mahnic/wiki
- https://mgml.si/en/match-gallery/exhibitions/637/dominik-mahnic/
Upcoming Workshops
DIWO Week, Dresden, 15. May 2025

https://www.metaknoten.net/de/veranstaltungen/diwo-week-2025/penzlograf
Dominik Mahnič ist ein Maler mit akademischem Hintergrund, ein Meister der Videoästhetik, ein Technologe und eine aktive Figur der slowenischen Street-Art-Bewegung. Seine aktuellen Arbeiten werden mit eigens dafür konstruierten "Penzlografen" angefertigt. Speziell für die DIWO-WEEK 2025 hat er eine tragbare Version entwickelt, welcher mit Pinsel und Farbe funktionieren. Zur Umsetzung werden Grafiken in Maschinencode umgewandelt und dann von dem "Zeichenroboter" gemalt. Die Software läuft auf den gängigen Plattformen und es besteht die einmalige Möglichkeit einen eigenen Penzlografen zu bauen. Es wird montiert, verkabelt, programmiert und am Ende entsteht hoffentlich jede Menge Kunst.
MechArtLab / Bitwäscherei, Zürich, 6 & 7. December 2025
Who is interested?
Fill out this registration form: https://sgmkcloud.ocloud.de/index.php/apps/forms/Q7Qk6zxfoxMZyJWA
How to set it up
either: FluidNC (for ESP32 with webUI)
https://installer.fluidnc.com/
FluidNC is a CNC firmware optimized for the ESP32 controller. It is the next generation of firmware from the creators of Grbl_ESP32. It includes a web based UI and the flexibility to operate to a wide variety of machine types. This includes the ability to control machines with multiple tool types such as laser+spindle or a tool changer.
We have developed a modified version of FluidNC, that supports the uni-polar motors (again), see link below.
...or: Arduino (GRBL)
https://github.com/TGit-Tech/GRBL-28byj-48
Link above is a dirty hack of the "classic" GRBL to support those uni-polar servos. This is a modified fork from ruizivo/GRBL-28byj-48-Servo. This modification implements all 3-axises XYZ to a 28BYJ-48 stepper motor. The motors (28byj-48) are connected to a controller card (Arduino UNO) that uses the chip ULN2003. This board is connected to pins A0, A1, A2, A3 for the Y-Axis(IN4->IN1), 2, 3,4,5 Digital pins to the X-Axis(IN4->IN1), and 8,9,12,13 to the Z-Axis(IN4->IN1).
Grbl is a free, open source, high performance software for controlling the motion of machines that move, that make things, or that make things move, and will run on a straight Arduino. If the maker movement was an industry, Grbl would be the industry standard. Grbl is a no-compromise, high performance, low cost alternative to parallel-port-based motion control for CNC milling. It will run on a vanilla Arduino (Duemillanove/Uno) as long as it sports an Atmega 328.
Universal Gcode Sender
https://winder.github.io/ugs_website/
A free and full featured gcode platform used for interfacing with advanced CNC controllers like GRBL , FluidNC, TinyG, g2core and Smoothieware. Universal Gcode Sender is a self-contained Java application which includes all external dependencies and can be used on most computers running Windows, MacOSX or Linux.
Creating G-code
NEW: Webui of Brushograph

config file with comments of how to use it
NEW: Converting gcode 2 pick-up color

https://brushograph-lb2gcode.onrender.com/
Lightburn

Lightburn is a very easy way to start putting your ideas onto canvas. You can draw directly in the software or import .svg. As it's mainly for laser-cutters a few modifications have to be made to install your custom gcode device.
I hope the settings can be easily imported from this github repo: https://github.com/dusjagr/brushograph-lb2gcode

A custom python script can then be used to modify the Lightburn generated gcode to add the colour pick ups at a defined path length, choose from 3 different colours, by naming the layers in Lightburn accordingly. Just Save GCode from LB, run the script, and then Run GCode and your artwork will be painted....
To setup the Brushograph in Lightburn, "Create Manually" a new Device as "custom gcode (experimental)", set the working area (130 x 120mm shoudl be ok), then click click, GRBL (standard), and it should be ready to be controlled. Select your device, and choose the USB port to connect. As we are using FluidNC, you can also connect to it via wifi.
Then you can spend hours and hours, modifying the macros yourself, for picking up colours smoothly... and join the discussion on the Lightburn forum.
Inkscape
DrawingBot
https://github.com/SonarSonic/DrawingBotV3
For ESP32 - FluidNC version

Forked and reworked version of FluidNC to support uni-polar steppers
PCB for DIY etching to host the FluidNC on ESP32 and the ULN2003 drivers
Generating the gcode
Brushograph WebUI .svg to gcode
Image to gcode software
Making the machine / 3D models for printing
Doms repository with .stl 3d models for mini_Brushograph
Marc thingiverse Z axis,
Original "Arduino mini CNC plotter" and some interesting forks / remixes
- https://www.thingiverse.com/thing:4579436 ("original version")
- https://www.thingiverse.com/thing:4607077 (has source file for fusion360)
- https://www.thingiverse.com/thing:4796222 (redesigned with bigger tooth and gogs.)
- https://www.thingiverse.com/thing:5719788 (z-axes mod for up-and-down)
Possible Applications
Glass
The Brushograph could be used to paint open source paints containing coloured metal ions onto sheets of clear glass which could then be heated to above the softening point of the glass on ceramic paper in a furnace to allow the coloured metal ions to melt into the glass then cooled back down (cooling slowly through the annealing point) to give a unique but completely open source piece of glass art.
Because the Brushograph controls the speed and direction of each brushstroke it could be used to paint ceramic furnace shelf coating (also known as "kiln wash") onto a kiln shelf, with each brushstroke reflected in the texture of the shelf coating. After drying, a piece of glass could be placed on top and heated above the softening point of the glass so that the texture of the brushstrokes used to paint on the shelf coating transferred to the finished piece of glass.
Ceramics
The Brushograph could paint coloured commercial or open source ceramic glazes onto plain blank white tiles which could then be heated to leave a permanent glaze on the surface and turn the plain white tiles into pieces of open source art for tiling walls, etc..
Etching
Painting with a substance which resists chemical etching or sand blasting would allow the item to be etched or sandblasted afterwards then the etch resist removed to leave a permanent piece of art.
Painting With Light
An ultraviolet LED could be used instead of a paintbrush, with the ESP32 controlling the intensity of the LED as well as the position - this would allow painting onto surfaces coated in UV sensitive etch resist which could then be developed then etched or sand blasted.
Where a sheet of metal is used beneath the etch resist electrolytic deposition could be used to plate another metal onto the etched areas.
Where a sheet of glass is used beneath the etch resist a mirrored surface could be deposited on the etched areas.
Optional Add-Ons
Brush Washer and Dryer
Instead of a pot of paint at one of the stations, a funnel and drain tube could be placed at one of the stations with a small peristaltic or diaphragm pump switched on by the ESP32 to pump a stream of water over the brush and wash the brush before it goes to a new colour of paint. Optionally, the ESP32 could switch on a small but strong fan after washing the brush to blow air over the brush to dry it before it goes to the next colour.