3D printers have been in hobbyist hands long enough now that many people have upgraded from their original printers to newer models. Some of us have even done so several times. If you’ve got a 3D printer sitting around that is getting long in the tooth, it can be difficult to decide what to do with it. Old, used models aren’t worth much, considering people can buy new printers for very little money these days. But you also don’t want to just toss it in the trash — there are good parts in there! That’s why Sunnyspeed Studio wrote some code that converts a 3D printer into a typewriter-style pen plotter, and they’ve made it available for you to use.
Pen plotters used to be common in the days before inkjet printers, because they were capable of producing relatively high-quality line drawings. They have mostly fallen out of favor, but large-format pen plotters are still sometimes used to create technical drawings and engineering blueprints. Computer-controlled cutting machines, like those made by Cricut, also have pen attachments that can be used to “print” cards that look hand-written. This project works in almost exactly the same way by taking advantage of the fact that your 3D printer is already designed to move in three axes. But, instead of sending a pre-rendered image or set of instructions to plot, this code will write out characters in real time as you type them.
To take advantage of this code, you’ll need a 3D printer (any model will do) with OctoPrint running. OctoPrint is open source software that provides a web interface that you can use to control your 3D printer remotely. Most people run OctoPrint on a Raspberry Pi or similar single-board computer connected to their 3D printer via USB. Follow the instructions on the 3D Typewriter GitHub page to configure the computer and OctoPrint, and then grab the Python scripts. Remove your 3D printer’s extruder and replace it with a slightly-modified pen. Then simply connect a keyboard to your computer, run the Python script, and start typing! A number of configuration options are available to adjust parameters like the text size, line spacing, margins, and so on. The Python script is essentially just sending small chunks of g-code, each representing a character, to OctoPrint, which the printer then follows to move the pen around. 3D printer hardware is overkill for a project like this, but it’s better than leaving your printer in a closet to get coated in dust.