Make: Projects

TRS Drawbot

Build a drawing robot using two servo motors operated by any audio player.


The servos in your R/C car, plane, boat, or ‘copter are controlled by a stream of electrical pulses sent from the onboard receiver. The length of these pulses tells the servo what angle to turn to. You can connect your R/C receiver to an audio input on your stereo or computer and listen to this control signal directly — it sounds like a harsh, rasping buzz pitched near the low “G” on a piano keyboard.

The signal output by a commercial R/C receiver (left) compared to that from an iPhone headphone jack at maximum volume. The iPhone is playing a sound synthesized to mimic a servo control signal. This type of variable-width "square wave" signal is called a pulse-width modulated, or PWM, waveform.

The signal output by a commercial R/C receiver (left) compared to that from an iPhone headphone jack at maximum volume. The iPhone is playing a sound synthesized to mimic a servo control signal. This type of variable-width square wave signal is called a pulse-width modulated, or PWM, waveform.

This trick works the other way, too: Plug a servo into an audio output (like a headphone jack), then play the right sound, and you can control the servo’s position directly, without a receiver. A “mono” signal can control a single servo, and a stereo feed can control two — one on each channel.

Two servos and a headphone jack are all there really is to TRS Drawbot's electronics. Robots don't get much simpler than this.

Two servos and a headphone jack are all there really is to TRS Drawbot’s electronics. Robots don’t get much simpler than this.

We first learned about this clever hack at Bay Area Maker Faire 2012, from exhibitor Kazuhisa Terasaki. Kazuhisa would go on to write Smartphone Servo for us in MAKE Vol 34. His Gluemotor app, which allows you to directly control the rotational positions of two standard hobby servos through your device’s headphone jack, is available as a free download for both iOS and Android. Here we’ve adapted the same basic idea to drive a super simple robot arm with two degrees of freedom.

CAUTION: Kazuhisa’s original schematic includes two 0.1μF ceramic capacitors — one between each servo and the headphone jack. He believes these capacitors should be included as a precaution to protect the controlling device from electrical damage. We have found that running the audio signal through these capacitors badly distorts the PWM waveform and limits both the variety of servos with which TRS Drawbot can be built and the accuracy of the drawings it can produce. We have built five prototypes and used them to create dozens of drawings from four separate devices without any problems. We believe that running TRS Drawbot, even without capacitors in the circuit, is very unlikely to damage your device, but we cannot guarantee that it won’t. Proceed at your own risk.


On a standard headphone plug, the left channel comes through the outer “tip” contact, the right channel through the middle “ring” contact, and the ground connection through the inner “sleeve” contact. The acronym for these so-called “tip-ring-sleeve” connectors is where TRS Drawbot gets its name. It has no microchips or circuit boards and uses free software to turn line graphics into sound files that make almost any audio device into an on-the-go robot controller.

The lower rail is grounded through the power jack case contact and provides a common ground connection for the TRS jack and servos.  The upper rail is held at Vcc through the power jack center pin jumper wire, and carries drive current to both servos.

The lower rail is grounded through the power jack case contact and provides a common ground connection for the TRS jack and servos. The upper rail is held at Vcc through the power jack center pin jumper, and carries drive current to both servos.

How it Works

Because we have only two channels to work with, we can’t send “pen up” or “pen down” commands to TRS Drawbot, and are thus confined to single- or continuous-line artwork. In practice, this is not as much a limitation as it might seem.


There are several ways to produce continuous line art, but perhaps the most interesting is to start with a normal raster image, create a “stippled” version (which represents the image as a large number of dots), then use a traveling salesman algorithm to find the shortest (or near-shortest) single path that connects them. This type of continuous line art is sometimes called “TSP art” (for Traveling Salesman Problem). Our pals over at Evil Mad Scientist Laboratories have produced a wonderful, elegant, easy-to-use program called StippleGen that makes producing TSP art from raster image files a breeze.


The Drawbot WAVE Synthesizer software reads in an ordered list of 2-dimensional Cartesian points from an SVG file (like those output by StippleGen) and scales it to fit the real dimensions of your paper. Then, using some simple trigonometry (plus basic user-defined data like the lengths of your Drawbot’s arm segments) it converts those points into a series of angles for the servos. It also adds an adjustable “easing” delay (to make sure new angles aren’t sent to the servos faster than they can react) and automatically interpolates points as needed, so that two distant endpoints will end up connected with a straight line (instead of the curved arc the servos would otherwise naturally produce). Finally, it encodes the servo angles as a series of PWM pulses and saves the result as a raw WAV sound file.


Step #1: Prep the base

TRS DrawbotTRS DrawbotTRS DrawbotTRS Drawbot
  • Measure and mark a drilling center 1" up and 1" in from the lower left-hand corner of the clipboard. Drill a small pilot hole, then step-drill to 5/16".
  • Drill out the outermost holes on the servo horn to 1/8". Position the servo arm in the clipboard hole, rotate the drilled-out holes "square" with the edges of the clipboard (as shown), and transfer drilling centers through them to the clipboard surface. Drill a 1/8" hole through the clipboard on each of these four spots.
  • Mount the servo horn to the base via the standoffs as shown using the bundled standoff screws, plus a lock washer on each side. The center hole will provide clearance for installing the servo arm mounting screw later on.
  • Decorate the underside of the clipboard with 12 stick-on rubber feet to provide clearance for the underside standoff screw heads. Make sure to distribute these so that the surface is evenly supported.

Step #2: Build the upper arm

TRS DrawbotTRS DrawbotTRS DrawbotTRS Drawbot
  • Use a hacksaw to cut your offset aluminum angle in half, and a file to smooth any rough or sharp spots on the cut ends. Position one of your two servos across these "rails," flush with the ends as shown. Transfer drilling centers from the servo case mounting holes to the rails, center-punch where marked, and drill out to 11/64". Mount the servo to the rails using four 6-32 × 1/2" machine screws with split washers, flat washers, and hex nuts as shown. This will be the lower or "elbow" joint.
  • Repeat the process with the second servo to make the upper or "shoulder" joint. The distance between the two servos, on their centers of rotation, should be 4." Measure a further 3.25" along each rail, as measured from the center of rotation of the shoulder servo, and cut them both off with a hacksaw. Smooth the cut ends with a file.
  • Install the battery pack across the free ends of the rails with SuperLock fasteners, leaving at least 1/2" of empty space from the shoulder servo for rotational clearance. You can go ahead and attach the battery pack to the rails using these strips immediately, but wait 24 hours before trying to remove it to give the adhesive time to bond.

Step #3: Wire the electronics

TRS DrawbotTRS DrawbotTRS DrawbotTRS Drawbot
  • The aluminum rails are not just structural—they also carry power and ground to the other components. The rail nearest the servo shafts is held at +6V, and the opposite rail at ground. Drill a 1/4" hole in the ground rail about halfway between the two servos and panel-mount the TRS jack as shown. Cut the connectors off the servo cables and separate the wires completely, then strip and solder the white signal wire from each servo to the nearest contact on the TRS jack. Make sure the ring contact (which carries the right audio channel) is connected to the lower "elbow" servo, and the tip contact to the "shoulder." Like the power jack, the TRS jack is grounded through its case connection to the metal rail.
  • Cut and strip the black and red leads from each servo to reach the mounting screws on the ground and power rails, respectively. Crimp and solder ring-tongue lugs to the leads, and secure them under the heads of the servo mounting screws as shown.
  • Panel-mount the power jack in the ground rail, right over the battery pack, and solder a red jumper wire (you can use leftovers from the servo cable wires) to its center-pin contact. Connect the other end of this wire to the power rail using a crimp-on ring tongue.

Step #4: Add the power plug

TRS DrawbotTRS DrawbotTRS DrawbotTRS Drawbot
  • Slip a length of 3mm heat-shrink tubing around the battery pack leads, leaving a bit of each exposed at the end. Use a cigarette lighter or other heat source to shrink the tubing in place.
  • Slip the threaded housing for the coaxial plug over the bundled battery pack leads, then strip and tin about 1/4" at the end of each wire. Solder these to the center pin and barrel contacts on the plug tip, then crimp the ears on the barrel terminal to hold the wires in place. Don't overdo the crimping or you may damage the insulation and short the two wires.
  • Slip the threaded housing back up onto the plug and screw it into place. To run TRS Drawbot on battery power, plug the battery pack into the power jack and use the battery pack's built-in switch to turn it on or off.
  • NOTE: You can also run TRS Drawbot from a 6V "wall wart" rated 300mA or better and a size M plug. In this case there's no power switch, and the 'bot is powered anytime the plug is connected.

Step #5: Build the forearm

TRS DrawbotTRS DrawbotTRS DrawbotTRS Drawbot
  • Use a hacksaw to cut an 8" length of 1" wide by 1/16" thick aluminum flat bar stock. Make perpendicular witness marks at 1", 3-1/4", and 3-3/4" from one end. Find the center of the 1" section at the end by connecting the corners with scribed diagonal lines. Center-punch at the intersection, pilot drill to 1/16", then step drill up to 5/16".
  • Center the servo horn in the hole in the aluminum flat, then rotate it until the holes are aligned with the scribed diagonals. Transfer drilling centers through the 2nd of 4 holes (starting at the hub) on each arm of the servo horn, then center-punch and drill out to 1/8". Mount the servo arm to the aluminum with four 4-40 × 1/4" machine screws inserted from above and secured with an inner-tooth lock washer and a hex nut on the opposite side.
  • NOTE: You may want to cut the ends of the servo horn off, just for looks, before mounting it on the aluminum flat bar. Use side-cutters to clip each arm off right through the outermost hole, then smooth the clipped edges and corners with a file.
  • Download the forearm template, print it out full-size, and bend the arm at the witness marks to match the printed profile. A bench vise is helpful for getting neat bends, but not essential.
  • To get the alignment and spacing of the cable clips right, clip them to your pen before attaching them to the forearm. If your pen is undersized for the clips, apply heat-shrink tubing and/or tape as needed to bulk it up and get a secure fit. If you're using a Zebra 301 series pen or pencil, a short section of 9mm diameter heat shrink tubing under each clip is perfect.
  • Clean the vertical section of the forearm with rubbing alcohol, then remove the adhesive backing from the cable clips, align the centerline of the pen with the centerline of the forearm, and press it into place.

Step #6: Put it all together

TRS DrawbotTRS DrawbotTRS DrawbotTRS Drawbot
  • Download the audio file calibration_90.wav. Load 4 freshly-charged NiMH batteries into the battery holder, plug the battery holder into the Drawbot power jack, and turn on the power at the battery holder switch (or connect your AC adapter between a wall outlet and the Drawbot power jack). Plug one end of the stereo cable into your audio device output, and the other end into the Drawbot TRS jack. Turn the headphone volume to maximum and play the file.
  • If everything's working correctly, your servos should come to life and rotate to their center-sweep positions. The audio file will hold them there for 10 seconds. While it's playing, fit the upper arm into the forearm at the elbow joint, getting the angle between them as close to 90 degrees as the servo gear teeth allow. The joint may jerk or move around after the audio file stops playing; that won't hurt anything. Secure the elbow joint by attaching the servo arm to the servo shaft with the mounting screw.
  • Play the calibration file again and, while it's playing, install the upper arm on the base, trying to align it as close to 45 degrees from each clipboard edge as the servo gear teeth allow. Again, it's OK if the joint moves around after the WAV has stopped playing, so long as the servo spline gear does not come out of the horn. Secure the joint, from underneath the clipboard, with the servo arm mounting screw. Your Drawbot is now complete.

Step #7: Calibrate the arm

TRS DrawbotTRS DrawbotTRS DrawbotTRS Drawbot
  • Secure a piece of paper under the clipboard clip, and make sure its edges are aligned parallel with edges of the clipboard. Play the calibration file, again, to position the arm in its "home" or "center" position. While the sound is playing, trace a line on the paper along one side of the upper arm, and another along one side of the forearm.
  • Separate the paper from TRS Drawbot, then use a protractor to measure the angle between the upper arm and the forearm in the "home" position. Mark that angle on the page.
  • Use the protractor again to measure the angle between the edge of the paper and the upper arm in the "home" position. Mark that angle on the page.
  • Calculate the difference between the ideal upper-arm/forearm angle (90) and the real angle you measured above. Then calculate the difference between the ideal upper-arm/baseline angle (45) and the real angle. Mark both "nudge" angles on the page, noting the sign conventions shown in the photo.

Step #8: Generate a test WAV

TRS DrawbotTRS DrawbotTRS DrawbotTRS Drawbot
  • We have prepared a set of ready-made SVG files for you to use in testing TRS Drawbot. From least to most complicated, these are:
    • square.svg – 4 points connected by 4 lines. Handy for diagnosing "skew" and other calibration problems.
    • star.svg – The file shown in this tutorial. Quick, easy, effective demonstration drawing.
    • radioshack.svg – The drawing shown in the title image. We ♥ RadioShack!
    • makey.svg – The MAKE magazine and Maker Faire mascot robot, shown in step 10. Looks good in thick-point marker.
    • about-the-author.svg – A TSP-style portrait of my co-author, Mikal Hart, who wrote the Drawbot WAVE Synthesizer software.
    Right-click the file of your choice, above, and save the link target to a convenient directory on your local computer.
  • Visit our TRS Drawbot Github repository and follow the instructions there to download and set up the Drawbot WAVE Synthesizer software on your computer. Once you have the application running, enter the upper/lower-arm "nudge" factor you calculated in Step 7 into the Arm Adj field, and the lower/baseline factor into the Baseline Adj field. Make sure to include the minus sign if either one of your "nudges" is a negative number.
  • NOTE: You'll probably want to experiment with the other values in this window, as well as the "hard-coded" parameters in the program itself, later on. Unless you have significantly deviated from the build described in this tutorial, however, just use the default values for now.
  • Select the input SVG file you just downloaded, then select a suitable output filename and location for the WAV file you're going to produce. Then Click Go! If everything works correctly, you should soon see a popup message indicating your WAV file has been successfully generated.
  • The easiest way to control TRS Drawbot, especially at first, is to just plug it into the headphone jack of the same desktop or laptop computer you're using to generate WAV files. If you are want to control TRS Drawbot from a portable device like a phone or tablet, you'll need to transfer your WAV file to that device now.
  • NOTE: It is highly recommended that you compress your sound files with a ZIP utility before transferring them to a mobile device, especially if you're sending files over an internet connection as email attachments or through a service like Dropbox. The raw WAV files generated by the Synthesizer software tend to be large; the good news is that they are mostly empty space, and get much, much smaller when compressed as ZIP archives. For example, the raw star.wav file used in this tutorial is 50MB as output by the Synthesizer, but compresses down to just 100KB (0.02% original size) as

Step #9: Create your first drawing

TRS DrawbotTRS DrawbotTRS DrawbotTRS Drawbot
  • Mount the pen in the cable clips. Adjust the pen height so that the tip reaches just slightly below the bent "skid" surface on the drawbot forearm when extended. Once you've got it right, retract the pen tip.
  • Mount a piece of paper in the clipboard, turn the power on at the battery pack, connect the Drawbot to your audio player, and play your WAV file at maximum volume.
  • The pen should move immediately to the drawing starting position, where it will wait for 10 seconds. During this time, manually extend the pen tip, being careful not to disturb the pen's height as you do so. Then let go, stand back, and wait.
  • It is common for the servos to "jerk" slightly when the audio file comes to an end. If the pen is extended when this happens, it can make a random ugly mark on your nice new drawing. To prevent it, the Drawbot WAVE Synthesizer automatically adds an adjustable "hold" time to the last point in each file. The default "hold" value is 10 seconds. When the drawing is complete, the pen will stop. Retract the pen tip within 10 seconds to avoid random scrawls from the "jerk" phenomenon.

Step #10: Make your own art

TRS DrawbotTRS DrawbotTRS DrawbotTRS Drawbot
  • Once you've got TRS Drawbot working, you'll probably want to create some original artwork. First, choose a raster image file to work from. It can be any of the types supported by StippleGen (PNG, JPG, or GIF). Simple two-tone images (like "Makey," here) may be best at first , but you should also experiment with shaded grayscale photographs—you'll be amazed at how well TRS Drawbot can render these as TSP art (especially when they're viewed from a distance).
  • Download and run the EMSL StippleGen application. The program will begin running on the default image immediately.
  • Once you have an SVG file, proceed as in Step 8 to use Drawbot WAVE Synthesizer to convert it to a sound file, and as in Step 9 to create the drawing itself.
  • NOTE: You can also generate continuous line art for TRS Drawbot manually using Inkscape. Here are a few guidelines:
    • Make sure "Allow relative coordinates" is unchecked in the SVG Output tab under File -> Inkscape Preferences.
    • Create the line as a single unbroken path using the pen tool. Use straight line segments only, not curves.
    • If you want, you can import a raster image and trace over it with the pen tool. Just make sure you delete the raster image before saving the SVG file.
    • Make sure that your path is not part of a group, as group-level transformations like reflections and rotations will not be parsed by the Drawbot WAVE Synthesizer. It's OK to apply these transformations to your path while editing, just make sure to select your path, then choose Edit -> Ungroup before saving.
    If you're looking for some inspiration, check out "one line" artist Quibe over at Society6.


Once you get the hang of using TRS Drawbot, experiment with the different effects you can create by changing pens, substituting in other marking tools like pencils or crayons, working on different types of paper, adjusting the hardware, and tweaking the WAVE synthesizer parameters. Pens that "bleed" into the paper can create interesting effects at slower drawing speeds. For instance, dramatically increasing the endpoint "dwell" time in the WAVE Synthesizer code to a second or longer causes an interesting "connect-the-dots" effect with a felt-tip marker.

Likewise, the amount of sliding friction under the forearm will affect line quality. If the forearm does not make contact with the page surface at all, and is resting only lightly on the pen tip, the pen's movements will be faster but less stable; sometimes a "shaking" phenomenon occurs that creates an interesting sketch-like effect. Contrariwise, if the forearm makes firm contact with the page, the pen will be less responsive, but will produce smoother lines. You can also adjust the weight of the line by setting the pen lower or higher in the cable clips. A pen set lower in the clips gets pushed harder into the page, and creates a heavier line.

Will it Work with My Device?

Almost any digital device with a headphone jack can be adapted to drive TRS Drawbot, but some will require more work than others, and some may be capable of producing higher-quality drawings. Here are some important factors to consider:

  • Volume – Some devices are louder than others, meaning they produce higher voltages at maximum volume. A handy test is to download the file sine-wave.mp3 and play it through your device at maximum volume while measuring the AC voltage across either the right or left channel, and ground, using a multimeter. As a general rule, your device should produce a reading of 0.6V or greater, under these conditions, to be usable. If your device is not loud enough, you'll need to add an external amplifier, or choose another.
  • Sampling rate – In theory, higher-sampling rate devices capable of 192kHz "high definition" audio output should produce more accurate drawings, since the width of a single sample at even 96kHz (the next-lowest common sampling rate) is a significant fraction of a normal servo "high" pulse width. Most current iOS devices are reportedly capable of 192kHz output. However, we have never actually observed a clear increase in drawing quality when using an HD-audio device.
  • Wave inversion – Some devices actually invert an audio waveform before sending it to the headphone jack. For acoustic purposes, this inversion makes no difference whatsoever. But for controlling a servo, an "upside down" PWM signal doesn't work at all! To figure out if your device inverts audio, connect it to an oscilloscope while playing the calibration_90.wav sound file. If you don't have an oscilloscope, download and install Christian Zeitnitz's Soundcard Scope, which lets you use your PC microphone jack for this purpose. If your device is inverting the audio waveform, check the "Invert Wave" box in Drawbot WAVE Synthesizer when creating your control WAVs.

As a general rule, a modern iOS device like a Macbook Pro, an iPad 2 or Mini, or a 5th-generation iPhone or iPod is going to be the best "sure fire" choice for controlling TRS Drawbot. These devices produce plenty of power at maximum volume, have high digital sampling rates, and do not invert waves. That said, you should not shy away from the challenge of adapting your device to the task — what you'll learn along the way will likely be worth the journey.

General Troubleshooting

Early TRS Drawbot prototype test. I had the servos wired backwards.

Early TRS Drawbot prototype test. I had the servos wired backwards.

TRS Drawbot is quite simple electrically; there's not too much that can go wrong. Here's a quick checklist of common glitches to watch out for:

  • No movement – Measure the DC voltage across the rails and make sure it's at least 5V. If not, make sure the batteries are freshly charged, the battery pack power switch is on, and the wiring is correct. You can always run TRS Drawbot from a wall wart if you don't want to mess around with recharging batteries. Also make sure the volume on your device is turned all the way up, the "mute" function is disabled, and that your device is loud enough to drive TRS Drawbot (see above).
  • Wildly erratic movements – Make sure you've got TRS Drawbot wired with the lower "elbow" servo connected to the TRS jack's "ring" (right channel) contact, and the upper "shoulder" servo connected to its "tip" (left channel). If the servos are wired backwards, TRS Drawbot is likely to produce wild sweeping arcs that bear little resemblance to the intended art.
  • Shaking – Make sure the servo spline gears are firmly seated in the horns and that the horn mounting screws are tight (but be careful not to overtighten or strip them). Increasing the sliding fiction between the forearm and the page — either by increasing the height of the drawing surface (a stack of blank paper underneath the working page is handy for this), lowering the pen in the clips, or (in the extreme case) demounting the forearm and bending it to a steeper angle — will correct most shaking problems. They can also be caused by failing batteries and low control signal voltages.
  • Skewing – If your drawings are off-center on the page or show strong "skewing" or other warping effects, it's a good bet TRS Drawbot is not properly calibrated. Check your math on the "nudge" angles and make sure you've got the positive/negative signs right. If that doesn't fix the problem, repeat the Step 7 calibration procedure in its entirety. If all else fails, try experimenting with the servo pulse width range fields in the Drawbot WAVE Synthesizer interface. We've found that some servos respond better to wider ranges than those listed on their datasheets or other sales literature.

Finally, if you encounter a problem we haven't listed here, please do leave us a comment below or send us an email at [email protected]. We'll do our best to help you (and others) figure it out!

Going Further

TRS Drawbot uses an "open-loop" control system, which is a quick way of saying that neither the hardware nor the software gets any feedback about the real positions of the servos, and that the system depends on dead reckoning for accuracy. While you could certainly add positional sensors or use feedback servos, these would require a more complicated interface than the 2-channel stereo TRS connector allows. To put it another way, adding sensors or extra controls would mean building not a TRS Drawbot, but something designed to communicate over a more robust interface — perhaps a USB Drawbot. Many mobile devices now use a 3-channel tip-ring-ring-shield (TRRS) connector to provide both stereo audio output and monoaural microphone input through the same connection. Though it would require a much more sophisticated real-time control application, this interface could theoretically be adapted to provide "closed-loop" feedback and produce a TRRS Drawbot capable of improved accuracy.

That said, there are lots of ways TRS Drawbot could be added to or expanded on without changing the hardware/software communication protocol.


If you're using a felt-tip or other marker that "bleeds" more into the paper the longer you hold it in one spot, you could create a more sophisticated WAVE synthesizer that would slow the pen down to create broader, more emphatic lines, and speed it up to create narrower, lighter ones. It could be written to parse the SVG "stroke-width" property (so you could specify wide or narrow lines naturally, e.g. in Inkscape) and slow down or speed up the pen's movement accordingly.

A real-time or near-real-time control application could be developed that would do more than just play prerecorded drawing files. Kazuhisa Terasaki's original Gluemotor program is an example of this kind of software; the Gluemotor app reads your finger's position on a touchscreen and converts it instantaneously to a pair of PWM signals — one that corresponds to your finger's X position on the screen, and one that corresponds to its Y position. These coordinates are mapped directly onto the angular ranges of the two servos on the right and left audio channels. Gluemotor, however, does not know anything about how the two servos are arranged with respect to each other in the physical world, and using it, for example, to manually draw a picture using TRS Drawbot would require a lot of practice to develop the hand-eye coordination to turn your input motions on the screen into the intended output motions on the page. A better solution would be a Drawbot-specific program that would map your touchscreen directly onto the TRS Drawbot page area, for instance, so that a gesture on your touchscreen was literally echoed by the Drawbot's pen on the paper.


Though the circuitry is quite simple, the accuracy of TRS Drawbot can likely be improved by using higher-quality, more expensive servos. Digital servos and/or servos with metal gears should offer improved angular precision and accuracy, and specialized servos with wider-than-normal pulse width ranges should allow improved precision in WAV file synthesis, especially at lower sampling rates, because the width of a single "high" sample will correspond to a finer angular adjustment.


Mechanical play in the arm assembly will cause some inaccuracies. Longer arms lengths will tend to amplify mechanical slop. Using higher-quality servos with ball bearings would likely reduce them. Likewise, more complex arm linkages — like "parallelogram arm" arrangements — should offer more accurate positioning even over longer distances.

Finally, though there is no direct way to issue "pen up" or "pen down" commands using the TRS interface, there may be clever mechanical tricks that would allow the software to move the pen across the page with or without making a mark, as needed, and thus to create more conventional line drawings of the "non-continuous" type. One such trick would be to develop a "slow pen," which would be a pen that only makes a mark when it is moving slowly across the surface of the page. Because the TRS interface can control both the position of the pen on the page and how fast the pen moves from one position to another, a "slow pen" could be directed to move quickly between endpoints where no mark was to be made ("pen up" movements) and slowly between endpoints that are supposed to be connected by a mark ("pen down" movements). Whether such a pen could be built easily enough to make it worth the trouble remains an open question.

Controlling Other Devices

What other projects could you talk to using a headphone jack? In the simplest case, what other two-servo robots could you build and control with just a headphone jack and the right audio synthesizer software? Or, could you develop more complicated onboard electronics for processing more complex or custom-designed audio-channel signals? Is the audio interface potentially a way "around" the iOS walled garden for hardware developers? Even if you can't get Apple to approve your device, can you design it to run from the headphone jack using audio commands? After all, even a web-based app can send sounds to the speakers...

Please Share Your Experiences

If you build TRS Drawbot or a project closely based on it, or if you just have ideas, insights, or comments to share, we want to hear from you! Please leave a comment below or get in touch with us by email to [email protected].

Sean Michael Ragan

Sean Michael Ragan

I am descended from 5,000 generations of tool-using primates. Also, I went to college and stuff. I am a long-time contributor to MAKE magazine and My work has also appeared in ReadyMade, c't – Magazin für Computertechnik, and The Wall Street Journal.

Mikal Hart

Mikal Hart

Computer scientist, inventor, writer, and musician Mikal Hart is a senior software engineer at Intel Corporation in beautiful Austin, Texas. He is the inventor of the reverse geocache puzzle, a founder of The Sundial Group, and has contributed articles on electronics development and prototyping to MAKE and several books. He writes about all things Arduino at


  • Ron Walker

    Hi I have had fun making this drawbot (I designed a 3d printed version) but im having troubles calibrating it. My computer is one that reverses the wave file so that calibration wave wont work correctly to setup the arm’s. would it be possible for a second file to be made for download that has a reversed wave? Seems all of my windows computers do this so it may be helpful for many folks.

    • Jay

      If your device is inverting the audio waveform, check the “Invert Wave”
      box in Drawbot WAVE Synthesizer when creating your control WAVs.

      • Ron Walker

        That helps me not at all. The calibration wave is not created by the wave synthesizer its for download above. I guess if there were a picture that were for download i could run it threw the synth and reverse the wave myself.

        • AdamTolley

          audacity, and don’t come back with some jerk ass ‘that doesn’t help me’ comment.

          • Ron Walker

            That worked really well i think. Get well soon

          • AdamTolley

            hmmm, perhaps I was a little harsh – I get super defensive around people who seem to complain about being helped – but maybe its just a misunderstanding. Sorry about that.

  • Zach Haag

    How do you download the Wave Software?

    • Alex Echeverria

      Link that works?

    • Dylan

      From the link in step 8 of Github click the button in the upper middle that says 3 releases. Click the green button to download. This should put the WAVE software right on your computer. If your on a Mac you’ll need a program called winebottler to open this .exe program.


    • Zach- I assume you figured this out? -Joe

  • Aidan

    when i try to make a drawing it just says no elements

    • Ron Walker

      Ive seen that when the baseline adj and arm adj settings were wrong or out of limits. I was trying to use too high of value

      • Aidan


  • Aidan

    in step 6 when i played the cal. file my motors didnt center they went to as far as they can right. did i wire it wrong or is it my servos. If it helps i have PARALLAX standard servos on mine.please help.

  • Guest

    The the Drawbot WAVE Synthesizer doesn’t work! (windows 8)

    An error message popups when you hot Go.

    I downloaded the code and debug it in visual studio express 2012. It loads the values from the svg file correctly but than catches an exception in line (492)

    MessageBox.Show(this, exc.Message, “Error”, MessageBoxButtons.OK, MessageBoxIcon.Error);

    The error message is something about “The sequence contains no data”

    • Alex Echeverria

      I cannot even find it in all the files included in download. Which one I have to click on? (I am a MAC user with a cheap PC)

      • Didier

        I have had a similar problem, it was due to the parsing of floats. I have modified the code to make it working:


        to :

        float.Parse(tbHubX.Text, System.Globalization.NumberStyles.Number, System.Globalization.CultureInfo.CreateSpecificCulture(“en-US”))

        Hope this helps.

        • Rex

          Didier, Do you have a compiled version of the modified code that you could share?

        • Faisal Muhammad

          Hi, Didier,
          could you please send me the working software, becasue i promiss to my younger brother to let make work his drawbot.
          Thanks in advance.

      • Guest

        Download a program called winebottler from This let me open .exe files on my Mac. This was the only way I could get the Wave Synthesizer program on my computer.

      • Joanne Cantuba

        mee too

  • Guest

    The Drawbot WAVE Synthesizer doesn’t work! (windows 8)

    An error message popups when you hit Go.
    downloaded the code and debug it in visual studio express 2012. It
    loads the values from the svg file correctly but than catches an
    exception in line (492)

    MessageBox.Show(this, exc.Message, “Error”, MessageBoxButtons.OK, MessageBoxIcon.Error);

    The error message is something about “The sequence contains no data”

  • Guest

    The the Drawbot WAVE Synthesizer doesn’t work! (windows 8)

    An error message popups when you hot Go.
    I downloaded the code and debug it in visual studio express 2012.

    It loads the values from the svg file correctly but than catches an exception in line (492)

    MessageBox.Show(this, exc.Message, “Error”, MessageBoxButtons.OK, MessageBoxIcon.Error);

    The error message is something about “The sequence contains no data”

  • Guest

    The Drawbot WAVE Synthesizer doesn’t work! (windows 8)

    An error message popups when you hit Go.
    I downloaded the code and debug it in visual studio express 2012. It loads the values from the svg file correctly but than catches an exception in line (492)

    MessageBox.Show(this, exc.Message, “Error”, MessageBoxButtons.OK, MessageBoxIcon.Error);

    The error message is something about “The sequence contains no data”

  • arximidis

    The Drawbot WAVE Synthesizer doesn’t work! (windows 8)

    An error message popups when you hit Go.
    I downloaded the code and debug it in visual studio express 2012. It loads the values from the svg file correctly but then catches an exception in line (492)

    MessageBox.Show(this, exc.Message, “Error”, MessageBoxButtons.OK, MessageBoxIcon.Error);

    The error message is something about “The sequence contains no data”

  • Domiking

    Hint: Replace the dots, in every field with a length specification, with a comma.
    It’s maybe because of your OS’s default language.

  • Aidan

    in step 6 when i played the cal. file my motors didnt center they went to as far as they can right. did i wire it wrong or is it my servos. If it helps i have PARALLAX standard servos on mine.please help.

    • Dylan

      My servos went to the far right position rather than centering. I was luckily able to randomly attach on the arm and rail, and have the drawbot draw a picture way off the drawing surface. I found the starting point of the sketch and lined it up with the center of my clipoard. I played the same drawing .WAV file and lined the pen tip up with that point(attaching the arm to the rail, and the rail to the servo horn). The bot now works great!

      • gary

        my servos are going to right end and getting struck what to d o ? i am using 9g servos

        • Hai

          do you try another type of servo like parallix ?

      • Loarri

        Hello Dylan sorry to disturb you but I’m bit desperated becase my drawbot doens’t work properly.
        and I’m not able to understand why…
        I’m using two hitec hs311 servos but when I run the calibration file my elbow servo goes to the far right position :-(
        and then….all signal I run produces only…noises – no picture :-(
        how can I solve it in your opinion?
        I read you met the same issue if I understand well but , scuse me, I don’t understand well how can we solve it.
        could you please help me in details?
        Many thanks for your help!!!!!!!


        • Trenton McCarty

          Did you ever figure this out? Because I am building it and I have the same issue. I just hear noise from the servos and they both turn all one way and stay there… I’ve also tried it on multiple different devices with no luck. Calibration .mp3 does nothing

    • gary

      when i played the wav file that draws circle one of my servos dont rotate and the other hits its 180 end and stays there , i dont understand anything what to do ?.i am using 9g motors and providing 5v dc supply from a mobile battery charger

  • Alex Echeverria

    Take the bright side of this project: “what you’ll learn along the way will likely be worth the journey”.

  • Maurizio Zelada


    Please, someone explain me how to download and install the Drawbot WAVE Synthesizer software.

    I do not find the instructions.

  • The Educated Robot

    I need to add stipple drawing and a TRS connector to PicassoBot ( This is cool!

  • hein0170

    The software doesn’t seem to work on Windows 7 either. I tried to use Visual Studio before I realised there is a “released” binary1.0.1. Same error as others describe:

    I load “star.svg” chose an output “star.wav” in documents folder and hit “GO”. A messagebox pops up: “Sequence contains no elements”.

    I build the robot without knowledge of other users difficulties with the software. Now I’m really eager to get this to work – and have NO clue to what is wrong with the software. Please Help.

    • Bitzl

      The default values in the programm work, when you replace the dots in the

      “Hub location” fields with a comma (tested with Windows 7 & 8).

      When your measured values of the arm-length and the angle are out of the maximum range, there is an error, too.
      Please let us know about your Progress.

      • hein0170

        Thank you for your answer. I tried the default settings and changed only the dots to commas as you suggested. Then the programme will make a wave-file. I cannot change the offset angles to anything other than zero though. I try to run the wave-file both from pc and iphone, but I see only a tension when I start the file, but no real movement. Could you make a generic “square” wave-file with the default settings from the “square.svg” and upload it (or send it to me)? Just to test if it is my servo-setup that makes errors too or the output from the software.

        • Alex Echeverria

          Makes sense to provide a sample file for all this mess.

        • Greg Smith

          Has anyone been able to successfully calibrate their bot?

          I’ve buit my TRS drawbot and everything on the hardware side seems to be working well (I couldn’t get my hands on ring terminal connectors for soldering or even crimping the correct gauge wire without resorting to mail order, so for now power and ground wires are connected to each other instead of using the “upper arm” rails).

          Being unable to correct for skew with calibration due to the apparent bug in the WAVE synth software is frustrating, though. I see that someone upthread seems to have remedied the issue with a snippet of code, but I’m not in a position to compile myself. Could the creators of this project perhaps fold this into the project and get a new release posted on github? It would be excellent to get everyone who’s made one of these drawing non-skewed stuff :)

          • Rex

            As best I can tell nobody has been able to calibrate their bot. The program has an error and the calibration doesn’t work. I wish the authors would jump in and fix it. Make Magazine even said, “we want to hear from you.” I sent an email to the editor account and never heard back – so I guess they want to hear – they just don’t want to respond. Maybe they don’t care and this is just a way to drive sales at Radio Shack.

          • Greg Smith

            Experimenting further it seems the WAVE synth will accept values between 1.9 and -1.9 (so, the values shown in the example screenshot won’t work without throwing an error, and neither will the values that I seem to require).

            Interestingly, entering the largest values the software will accept drives the arm way off the clipboard/drawing canvas. So it makes sense that the software won’t accept larger values (even though we think we need to enter them). Perhaps the values entered in theses fields are being multiplied by an unknown factor before affecting the generation of points in the software… I’m trying some very small values (0.05, 0.1, 0.2, etc.) to see what happens and the effect on the output is noticeable.

            I have a pretty bad headache and don’t have a protractor so I can’t really determine what the relationship between values entered in the software and output angles (using the square svg file) is. Could someone else give this a shot?

    • Rex

      I can get a .wav file if I don’t input an adjustment calibration. Unfortunately, the resulting drawing is pretty skewed. If I provide any arm adjustment I get an error (even if I use the same numbers they used in their example).

  • Alex Echeverria

    Drawbot WAVE generator download seems to be for PC, no MAC welcome here.

    • Alex Echeverria

      But MAC people have PCs around nevertheless :)

      • kristof de beer

        It seems to work with Wine on a Mac.

  • So far, so good (minus an issue with the coax power jack that caused a lil powerpack killing and reshaping.) It’s all together and I think I found all the s/w programs.
    Looks like I’ve got an inverted waveform, judging from the troubleshooting comments. my oscium o-scope … that tiny thing is lost in box somewhere, so I can’t see the waveform directly.
    My question is:
    How do I get my hands on or make my own Calibration SVG to feed into the wave synth program to make an inverted .wav cal file?
    Will keep looking.
    EDIT Nvm, I just emailed it to my iphone and played from there. it worked!

    Much thanks, btw. This drawbot is awesome in its simplicity.
    note: If anyone makes iphone apps for these programs let me know. It would be nice to use iphone camera -> stipple generator -> TS path generator -> Wav synth-> audio out all on one handheld device. -joe

    • Alex Echeverria

      YES! put some elbow grease in this App, you jackers and malers! I am still stuck in trying to open WAVE syntethizer…

  • Test 1
    Got it limping along.
    Found out that I couldn’t get the inverted wave form function to output anything useful for my dell laptop to output. Had to try and use iMac (no luck, these Radio Shack servos really are a tad annoying) Eventually (after abandoning trying to sync through iTunes) I put everythign on Google drive and pulled from Google drive and played through VLC on my iphone. seems to work.
    Wave synth: had issue with values other than “0” in the arm and base angle adjustments. I get that (object contains no elements) error. truth is I cheated on the binary and just downloaded the made binary off of github. So I actually need to do some reading here and target the source code to my machines. (apparently)
    So without adjustments, and using a Sharpie I got something that resembles the US map I put into it.
    Very nice!! I’m gonna try again and resize the paper.

  • Test 2
    same svg
    changed paper dim from 5×7 to 8×10
    I need to brush up on my geometry and pay attention to the bad points of the wave synth s/w. hilarious.

  • Test 3
    Moved hub y from default -0.8125 to 0
    This thing is too fun!

  • Last one of the night.
    7 tests, uncalibrated drawbot. Toooo much fun!
    Test 7 note: I couldn’t read the logo lettering in the drawbot drawing until I took this overview picture. You can barely make it out: “OHIO VALLEY” up top and “TESTING” along the bottom. That stipple gen program is pretty sweet! Thanks to all! -Joe
    P.S. how do I get that extra pic out of the post?!

  • Guest #2

    When I play the calibration file my servos go as far as they can to one side. Using Radio Shack Standard Servos. It would be greatly appreciated if you guys offered up some help for myself, and the numerous others struggling with similar issues.

    I thank you in advance for a prompt, accurate explanation and suggestion

    Also, Do you have an idea where one could look for a beginner crash course on the Gethub, despite a thorough search, the instructions mentioned were not found.

    • I had the same issue pushing audio from my dell laptop (servos moving all the way to one extreme.) From reading other posts, I inferred this was from an inverted audio waveform. I found that emailing myself the cal file and playing it from my iphone gave me the best results. See my other posts below. GL!

    • nicknormal

      Hi Guest,
      The Github request is a good point, something we’ve raised internally recently too to address user needs. I’ll add that to the Weekend Projects team’s agenda and look for that soon. Meanwhile, is your email [email protected]? I can’t tell if that’s a generic “Guest” account or your user account; if the latter I’ll be in touch with troubleshooting tips.

  • Rex

    I haven’t been able to get the Drawbot WAVE Synthesizer software to work. I downloaded it from the Github site but couldn’t get it to open. Also there are no instructions over there for how to make it work like the write-up said there would be. I guess I should have checked on that before making the darn thing!

    • nicknormal

      Rex have you since gotten the Drawbot to at least initialize? I see your comment above that you have a ‘loop’ drawing at the beginning.

      • Rex

        Nick, Thanks for checking in. Yes, I have been able to get it going – I just needed to find the right file on Github – the compiled version of the code wasn’t intuitively obvious for people to find. The loop isn’t a major problem – just a timing thing about when you put the pen tip down. My biggest issue is still the calibration of the arms in the Synthesizer software.

  • Guest #2

    3 phones, 2 computers, a transistor inversion circuit, an op-amp inverting, op-amp non inverting circuit, going to try a small headphone amplifier and if that doesn’t work, I’m throwing this thing out the window. Pretty lame to just be left hanging, like so many others. A schematic for a inverted signal amplifier or something that is known to work I guess is too much to ask for. I was wondering why this project was labeled moderately difficult, because it sure was not the build. I’m reminded of the adage if it’s too good to be true, it probably is. My glorious polished creations function us officially thwarted by a lack of pertinent info, that these guys seemingly intentionally remain super vague on.
    Kinda excited a bunch of people, only to disappoint once we all came to find out the truth. Can’t really call it false advertising, although RS did get $60 out of me, but really guys, do you feel good about misleading so many people, and refusing to put forth a tiny bit of effort sharing some knowledge so a higher percentage of success can be realized?

    • Are any of the phones you tried to use iPhones? These MAKE guys specifically said iphones and ipads seem to work. I tried it and it works. (i also have Radio Shack servos) I’ve had no luck any other way (iMac didn’t work, laptops and desktops didn’t work, wave synth inverting waveform didn’t work) Good luck.

      • Use basic non inverting Op-AMP LM324 IC for amplify the signal from any device to servo

    • Devvrat Arya

      Try using USB SOUND CARD. it gives an amplified output which is sufficient enough to drive servos.

  • More uncalibrated TRS drawbot fun!

    • Rex

      Joe, I’m getting the same loop at the start of my drawings. I wonder where that is coming from and if there is a way to “hold” the servos at the starting point for a pause prior to putting the pen down.

      • Yeah. I got sick of that start-up loop. What I do is I
        LIFT/adjust the pen so it’s not touching paper,
        THEN start the audio file,
        WAIT for it to jerk,
        THEN lower the pen down to the proper adjustment.
        There’s usually 10 secs or so to get pen tension right before it starts drawing. Pretty significant differences with different Sharpie tension.
        It’s very cool that you got yours running!

        • nicknormal

          Sorry that you two are getting that jerk-loop at the beginning of the file; I’ll investigate this with our Drawbot and marker setup.

    • mustafa

      how to do that
      how working

  • Rex

    Finding DrawBot Wave Synthesizer on Github.

    Seems like lots of people (myself included) are having trouble find the needed DrawBot .WAV file generator from Github. It is there – just hard to find. First, go to the linked Github site and then at the top you will see a box showing the number of “commits”, “branches”, “releases” and “contributors”. Click on the one that says “3 releases”. From there it will take you to a page where you can download three different versions of the needed executable file. I’m not sure which is the best one to use, but the “Latest Release” is version “V1.01-binary”.

    Good luck!

    • Alex Echeverria

      Thank you Rex! Now I was able to open WAVE in a windows 8 PC and will start to make some files and play them over an oscilloscope. Then I will make the Drawbot with micro servos I have around…

    • Shailendra

      Thanks a lot! I have been trying to get it to work since past hour! You saved me a bunch of time.

  • Chabaz The Great

    c an someone link to an Amplifier circuit that is proven working since the creators obviously are not going to?
    Such a shame when “any audio player” has come to mean Only Apple Products.
    Maybe a good Samaritan can also link a few compiled waves for testing.
    Seriously guys, change the title already, “I-PHONE DRAW-BOT” or help the rest of us out. Just because we prefer our phones have more than one button, and actual settings that we can change does not make us any lesser of people. Either you’re helping or you’re not.
    I know I’m not the only one dropped money, and way more time in this than i ever thought, not to get even a single line out of it.

    Would the capacitors help somehow with dc-dc coupling? I don’t know, just grasping for straws at this point, and I’m sure not going to go apple for this thing. I’ll stick with my Samsung Note line of electronics thank you.

    • Hi, a use LM324 OP-AMP for PWM amplifier , My servo is MG90S. its work.

  • Seth

    Sweet project! It’s actually already closed loop – RC servos get their name because they use feedback to travel to the correct position.

  • jonah

    The the Drawbot WAVE Synthesizer is not working windows 7
    when i press “go” i am always getting an error message
    “error parsing XML: Object reference not set to an instance of an object”
    when using the stipple file and
    “sequenz contains no elements”
    when using the tsp PATH
    can someone help me?

  • Guest

    I am a mac user and I have had no problems downloading the files, but when I try to open one it either says that OS X does not support Microsoft programs or it directs me to text edit. Is this because I’m doing something wrong, or does the WAVE Synthesizer only work on Windows?

  • Guest

    I have found the files and had no problem downloading them, but the WAVE Synthesizer is in a .exe format so I can’t open it on my mac. Is there a way to open it in OS X or a download that works with OS X?

  • Guest

    I have had no problem downloading the Drawbot files, but they are in .exe format so I can’t open them on my mac. Is there a way around this or another download for mac?

  • A couple more drawings. I haven’t been able to delve into the coding side to get the calibration issue figured out. I still plan on making another and sliding the hub to the bottom center of the the clipboard

  • Hai

    I have a drawbot made​​, the software can I boot and load svg file but when I go busy he just stops and an error “the format of the input string is incorrect”
    does anyone know what I’m doing wrong

    • Erwin-
      Did you figure out the software? Just wondering. -Joe

      • No, what should I see in the software, are there things I need to change
        Can you maybe help me
        Kind Regards

        • So it seems you have both the Stipplegen_2 and the WAVE syth programs running. Correct?

          In the stipplegen_2 program, be sure to save the svg with the TSP path. It’s the bottom-most button on the left. Is that how you are saving it?

          • Thanks for the quick response to my question
            Yes I use both programs, Stipplegen 2 and Wave sync
            The problem is if i loading a program of the stipplegen 2 in the Wave sync program i see no codes and if I want to save the wave code , I do not see the code back in my files box
            I just got a new computer and it is on Windows 8.1???
            Callibration my drawbot is okay, the sound is okay
            What’s wrong, it seems that wave sync programma is not working properly
            Kind Regards

          • Windows 8.1! uh oh! I do not know if these programs work on 8.1. I have windows 7 running on the 2 PCs I’ve used.
            Can you take a screen shot of you loading the Drawbot wave synth program with an svg file? maybe I can see something if you upload a windowed screenshot of the application.

          • Hai Joe,

            This is what I do, I open ” drawbot Wave prog sync ” and charge a known file ” STAR “from the directory, and then I click on GO and nothing changes
            If I StippleGen use and dowload the figure in svg , happens the same, nothing

            Kind Regards

          • Hai Joe,

            If I set Hub location x and y to 1, then I load the square file and press GO afterwards, then I have a wave file with sound on it, the wave file is 16.9 MB large
            If I then play it my drawbot react with small shocks to the file is done, the sound of my laptop stand on maximum

            So I think the prog works, but somewhere in the source is incorrect calculation by or for Windows 8.1

            I think we have made ​​some progress, I hope so because this is a great project and I love it

            It works with the square file and not wilh the STAR file ?????

            Kind Regards

          • Stipplegen2 doesn’t work for you? hmmm.

            That definitely seems like progress. looking at my hub locations,

            I have it set to the default x=0.4375 and y= -0.8125

            I have the same paper size

            arm lengths are the same.

            I do see you got some bad points (lower right window.) I think you should adjust your hub location.

            Be sure you are entering a good output file name, it does not update automatically.

            My .wav files are very large 6-8 minutes ~160MB

            That “small shocks” sounds like an indication that the output audio power is too low.

            The only thing that I’ve found that works as an audio source is an iPhone! PC’s didn’t work, iMac didn’t work.

            If you enter angle adjustments, be sure to enter the angles in radians!

          • Erwin-email me about this (joe.balint @ and I’ll share my google drive folder with you that has all my project files in it. It might help. -Joe

  • Hai

    With the calibration wave file’ll arm left to stand, is this correct?

    Great job
    Kind regards

  • Jonathan Bailey

    Anyone else wondering what would happen if you put it at half volume and played a song such as “Scary Monsters and Nice Sprites” by Skrillex?

  • FYI: CALIBRATION VALUES MIGHT NEED TO BE IN RADIANS. I had a coder look at it, that’s what he suggested since it looks like the text field values are not multiplied by anything before being added to Pi/4. I’m going to check it when I get home. Fingers crossed!
    EDIT: it worked! -9 degrees = -0.157 radians. (See pic)

    -9 degrees = -0.157 radians. (See pic)

  • dwight

    does anyone have a wav file that they can post so I can test this thing without the wave synthesizer? (I do not get how to download the synthesizer)

  • VincentP

    Where is .app for MAC? I tried various ways to find it, including Rex’s instructions below, but find nothing that I can run on my MAC. Hardware works, but I have noting to drive it with.

    • Dylan

      Use this This is the only way I could get the wave synthesizer program to open.

      • VincentP

        Thanks, Dylan. IS able to open drawbot.exe on my MAC.
        I’ll see if I can get the rest of it to work together.

  • Close Knil

    I have the “Input string was not in correct format” in the WAVE synthetiser everytime I press “GO”.
    Does someone have a solution ?

    • Are you saving it in the correct .svg format? With the TSP not just the dots. Read Erwin’s posts he had a similar issue.

      • Close Knil

        I read your posts there. And i have the same conclusion as Erwin : using a well-generated .svg file, the WAV synth only wants to generate a file when the hub’s x and y are set to 1. I can’t get it..

  • lvdinh

    Please help me. I downloaded and build the C# project but my servo did not turn. I think the freq. was not sync.

  • Jim Darlack

    Im interested in scanning the wave form and lones that is generated in by audio speakers, when a series of frequencies are output to the speakers. Typically, a series of wave patterns and lobes can be detected when scanned with a moving arm, microphone, and level detector in a Raspberry PI or Android, and used to drive a LED that is displayed as a real time plot mimicking the speakers wave forms / lobes.

    The project would require one or more arms driven by servos, or linear motors.

    This was an old project in a small book lots required lots of home brew “stuff” to detect and plot the wave-forms/lobes, using a microphone, wooden gears driven by motors, and was a pain to make, and very inaccurate. Sounds like it a project that would work very well with small servos and OTS parts.

    Hope this makes sense…. My dog Wippit seems to understand it.. snicker.

  • Sean Hatfield

    Could you use micro servos to build this instead of normal servos?

    • Try it. Should work, Same control signals, h/w is just less powerful and smaller.

  • Bernat Felip

    Dear all,
    I have been attempting to build this drawbot for the past week but right now I’m desperte. Although when I use the tester, everything seems to be fine, when I play the calibraton file nothing happens. I used an iPhone, amongst many other Apple devices, and none works. I am certain that the servos are functional because in one ocasion they randomly spun for about one second when I was plugging in the audio cable.
    i would very much appreciate if anyone could help me find the problem with my Drawbot.
    Thank you.

    • Bernat- You can hear audio when you play the file with your iphone and no cable plugged in? Can you upload a couple of pics of your drawbot? Specifically the wiring. Maybe we can figure something out. -Joe

    • Ale Rastita

      Bernat! hi! im alejandro, i have the same problem… nothing happends when i play the audio files. The servos are working fine, i tested with an arduino. could you resolve that problem?.

  • Erick Valenzuela

    hi works for windows 7 or just for mac?

  • Dylan


    I was unable to open the .exe file for the WAVE Synthesizer program on my mac. I found that you can’t open .exe files on Macs which did not let me generate .WAV files on my computer. If you download a program called winebottler from you can open the .exe files. This program tricks your computer so you can open windows programs. I was successful with using this, but I can not speak for the security of winebottler.

  • Dylan


    At first I was unable to open the .exe file for the WAVE Synthesizer program on my mac. I found that you can’t open .exe files on Macs which did not let me generate .WAV files on my computer. If you download a program called winebottler from you can open the .exe files. This program tricks your computer so you can open windows programs. I was successful with using this, but I can not speak for the security of winebottler.

  • David Bucur

    when i try to open DrawBot.vshost, the PC tells me that “vshost32.exe has stopped working”
    what should i do?

  • JohnP636

    Hi! I’ve built up TRS DrawBot using HiTec HS-322HD servos. My Meizu M6 MP3 player did not output a high enough level, so I feed its left and right channels into two channels of an LM339 comparator, using a reference level set by a voltage divider between the power supply and ground at about 5% of the power supply voltage. This gives me nice full-height pulses and drives the servos well.

    I got DrawBot.exe running on Arch Linux using mono 3.4.0. My servos appear to match up with the 600us to 2400us range in the defaults. When I play the calibration WAV file (downsampled to 44100Hz for the M6 with Audacity), my arm goes to the position shown in the authors’ photo. However, all of the drawings generated from DrawBot.exe are wildly out of calibration, with the pen mostly off the left edge of the paper. (I’m taking the clipboard’s clip to be “up” even though most of the photos show it at left.) I’ve double-checked that I don’t have L and R swapped. I’ll keep experimenting and reading through the code to see where I’m going wrong.

    • JohnP636

      I think I found the problem. Parallax servos, for which DrawBot.exe is written, use the opposite rotation direction convention from my HiTec servos. As a result, my calibration at 90 deg. looks OK, but all the movements are in the opposite direction from where they should be. Shame on me for assuming these things are standardized!

      All I had to do is swap the values in the uS 0 deg and uS 180 deg inputs. Now I get a slightly skewed square! Time to tune the hub location and angle adjustments, and then get drawing!

    • Chabaz The Great

      Any chance you could includea schematic for your signal boosting circuit?

      • JohnP636

        I won’t be able to get to it until next week, but in the meantime, the gist of it is to supply a 1V signal from a potentiometer to one input of the LM339 and feed the MP3 player’s signal into the other input. I added a 4.7k resistor to pull up the LM339 output and connected the LM339 output to the servo signal input. Repeat for the other MP3 player channel, although I just connected both channels to the same potentiometer output for the 1V reference level.

    • Loarri

      Hello John sorry to disturb you but I’m bit desperate becase my drawbot doens’t work properly.
      and I’m not able to understand why…
      I’m using two hitec hs311 servos but when I run the calibration file my elbow servo goes to the far right position :-(
      and then….all signal I run produces only…noises – no picture :-(
      how can I solve it in your opinion?

      could you please help me ?
      Many thanks for your help!!!!!!!


  • Electronicbeast720

    How much does it cost for the entire project? In US Dollars?

  • Dylan

    Anybody who had an issue with the servos centering while calibrating:

    My servos went to the far right position rather than centering. I was luckily able to randomly attach on the arm and rail, and have the drawbot draw a picture way off the drawing surface. I found the starting point of the sketch and lined it up with the center of my clipoard. I played the same drawing .WAV file and lined the pen tip up with that point(attaching the arm to the rail, and the rail to the servo horn). The bot now works great!

  • jesus

    help¡ the wave syntheser shows this “the sequence contains no data”

  • jesus

    hey i have the solution to the problem “the secuence contains no data” if you are in windows 8 you onli have to change in hub location x and y you change the dot for a comma and thats it it works¡¡

  • Zilvinas Kovaliovas

    i try to load a svg file, but nothing happens. program just stays blank. any sugestions?

  • Dean

    Can’t get the wave synthesiser to work on windows 8
    When I hit go it displays a message saying
    error input not in correct format
    however the input file is an .svg file

    • Pavol Novák

      Put comma ” , ” instead of decimal dot it will work

  • Noam Hagai

    the servo not moving…
    where im wrong?

    • din chan

      the mounting jack should be on the other rail instead.

  • Kevin

    Would it be possible to create both a high frequency wave and a low frequency wave on, say, the right channel? Then you could split the channel, and apply a high pass filter on one, and a low pass filter one the other. Then you could have a third cahnnel of control to lift the pen.

  • Tejas P

    I want to implement this project. I’m from India and I’m not able to find Parallax servo motors here, so please list out the specifications of the parallax servomotor so that I can buy a similar one.
    Thank you.

  • Tejas P

    I want to construct a trs drawbot.
    I am from India and I’m not able to find parallax servo motors here. Please list out the specifications of the parallax servo so I can buy a similar one.
    Also, can a micro servo motor be used?

    • as long as the servo is not a continuous rotation and doesn’t take too much power to run, they should work in this project.

  • Ian Tyers

    has anyone actually made a working one of these, mine still wont work and I have been fiddling with it for months…

    • Which part are you having an issue with?

      The drawbot hardware

      The stipplegen_2 software from

      or the

      Drawbot WAVE program?

      Most of the people I have been helping (and I don’t work for MAKE) have been having proplems with the WAVE software. So far I only know of it to work on Windows 7 machines.

      Let me know. Maybe I can help troubleshoot. -Joe

      • gary

        sir one of my servo didnt rotate and my other servo keeps on hitting its 180 end side if i play the svg of circle.i have calibrated the servos to centre

        • are you playing .wav from an iphone?

          • gary

            sir no, i have been using the media player in windows xp, the 9g servo rotates according to the analog signal, do you suggest is there any wrong in analog signal, i have rotated the servos to the center manually. i have been fighting with this for a week now. does reducing volume have any effect?

          • I don’t think anyone has gotten anything other than an iDevice to work on this project. iPhone or iPod. The rest of the devices seem to invert the waveform and the “invert waveform” function does not seem to work. Max volume on a charged iPhone is all I’ve gotten it to work on. I tried Dell desktop, Dell laptop, iMac and iPhone. Only iPhone worked.

          • gary

            sir i have inverted the wave using Audacity and tried but the same result almost , thing is if servo is placed in -180 its going to +180 and still trying to go further but the gears are stopping.

          • tamjidalnaim
          • gary

            sir does it matter from where we play the file?

  • rishil

    in software when i click go it say error sequence contains no elements

    • dont use the parameters more than 2(two) because it in radian

  • Guest

    I’ve been trying to use illustrator to make small alterations to the SVG file but i can’t find a file format to save with that the drawbot wav synth software likes. Other than editing the cooridinates by hand, can anyone offer a solution?

  • marblemad

    I’ve been trying to use illustrator to make small alterations to the SVG file but i can’t find a file format to save with that the drawbot wav synth software likes. Other than editing the cooridinates by hand, can anyone offer a solution?

  • ლევან კობახიძე

    hello everyone, I really need your help, i have made all stuff , i have download all software, but i have one problem, when I’m inserting SVG file my WAVE says : (input string wasn’t in a correct format) I don’t know what to do and I really need to build this robot. so please please please if someone can help me, do it. :)

    • Are you able to open the .svg file in Internet Explorer to see if it looks ok? It looks like you are pulling one of the default files, so it should work.
      What version of Windows are you using? Right now I only know of this working on win7. But it looks like someone got it to work on a Mac.

      • ლევან კობახიძე

        I.m using windows 8 and visual studio 2012 of cource

        • ლევან კობახიძე

          i’ll tray on windows 7 i have second computer with windows 7

    • I had the same problem, but solved it! Just change your computer regional settings from decimal “comma” to decimal “point”.

  • ლევან კობახიძე

    hello everyone, I need your help very much. I have made all stuffs and have downloaded all software but when I try to generate sound from SVG file my WAVE said input string wasn’t in a correct format, what can i do?

    • Have you tried pulling the input from a different folder/directory? I noticed in your picture that the path has some non standard letters. i don’t know if that would affect pulling in the file, but it’s worth a shot. Put it on the desktop and see if it will input.

    • Pavol Novák

      you are probably outside of US. The problem is in decimal dot in hub location. We use comma as decimal , I tried it , it works.

  • guest

    hello i am student from kuwait i liked the project very much and i tried it. But the servos i got have a 360 degree continuous turn. Can you tell me how can i restrict it from turning full 360 and make it turn 180. we have limited resources in kuwait so i cant buy a 180 degree servo. thank you

    • It’s not just the mechanical restriction… you need the potentiometer feedback so that the servo knows where it is. If there is no pot inside to reconnect, i don’t think it will be possible.

  • George K

    I have a pair of Prallax “continious Rotation”… will they fit for this drawbot?

  • Chilukuriharsha Harsha
  • polo

    what’s the purpose of “Hub location” in DrawBot Wave Synthesizer ?

  • gary

    after i download from github i dont file .exe files , where are they present ? are they in bin folder ? it says it is not a valid win32 application i am using xp

  • Pavol Novák

    after couple hours of searching coments I downloaded all important stuff (At least I think) but It doesnt work. Im using MG995 servos, also tried 9g servos but didnt work.Servos dost even move.I measured output voltage from my Android phone (LG G3) and it was 1.5 Volts. Arduino is usualy giving about 2,5 and ipad 2 gave 0.6 Volts. Also those svg files dont work. It shows that Index wa out of range.It is so frustrating. This tutorial ist really long but its not showing that most important part … getting it work . :-( any ideas ? Maybe using arduino to read the audio and then giving it to servos (something like amplifier ) ? Please help

  • venish

    how to fix “quance contain no element” error

  • Alvina

    Hello, one of my students is doing this project for our upcoming science fair. Her partner and her made the robot, but she is having a hard time accessing one of the audio files they need on page 9 and page 11 of the project. She found out about this project from radioshack. Please help!!

    • sophiacamille

      Hi Alvina, sorry for the trouble. We’re looking into the issue for you!

      • Alvina

        Thank you so much!! We are all anxious, with the approaching deadline. I really appreciate any assistance.

        • sophiacamille

          the links hosted on this project page should work for you. Unfortunately the radioshack pdf has links from before our website migration. Please let me know if you still have issues :)

    • ccouden

      Hi Alvina, please ask your students to follow the links from this project webpage, not the PDF on RadioShack’s site. These links should work, but the links in the PDF are out of date.

      Good luck to your students in the science fair!

  • Vinu V

    I am using Fitec Fs5106b analog servos… and a battery i have got from my garage… when i am connecting its jerking but no expected movement i have tried everything and all the software are ready.. and i have made wav files and played it from my laptop .. still no constant movements except jerks… I made a custom trs jack by soldering directly onto the pins… my wiring appears to be correct… but i am unlucky….. and i need help… please i wanted to do this for a project.. and hats off to guys who discovered this amazing easy technology… Please i need help.!

    • hi, you need make some PWM amplifier from your device to servo because some output signal less than the requirement of servo signal input,
      i use a LM324 op-amp to amplify the signal then its work.

  • Athul Krishna

    there is no .exe file in the zip. Can anyone help me to open Drawbot WAVE Synthesizer?
    I am really into this anyone plz reply.
    God bless science!

    • Vinu V

      in the link they gave, there is only the code of the software… but on the top there is a RELEASES tab. click on it… then download the latest version… you’ll get the software withe .exe I had this same problem! :) But unfortunately if u see my post below u would understand that something is wrong in my drawbot.

      • Athul Krishna

        thank u buddy.

      • Athul Krishna

        can you please snd me that link?
        i am not getting it !

  • hi, somebody asking why their servo not moving , if your circuit nothing wrong but servo not moving , you may need build a PWM booster/amplifier for amplify the signal from device to servos, I build one using a LM324 Op-amp ,it work for me, my servo is towerpro MG90s microservo.

    • Loarri

      Hello guy could you please send me the final schema of ampli and the value of resistances? Then….whichsupply? I did one with lm324 but it didn’t work even if i think it’s correct. Many thanks and bye
      Then sorry another question: do we need a decupled inpu and output For the ampli???tnx

      • use 1k and 10k resistor, did you try use invert wave yet?

        the schema is in this url

        • Loarri

          hello thank you very much for your answer. Yes I tried but nothing. anyway I think the waveform is right as it is.
          Then, except that I have as input a “poor” signal, the mai issue (I thibk) is the fact that when I run the calibration sample my elbow servo goes to the far right position insted of setting in the middle :-(
          do you know why? I’m not able to undesrtand where is the problem,,,, :-(
          uff…maybe my Hitec HS311 are not “good” for this application?!?!? uff..
          ok let me know your feeling please!
          Many thanks again for your help and bye

          • how many bad point that you have? did you use adj in radian?

          • Loarri

            zero !
            but what is the purpose of this baseline adj? I don’t undersant well….
            the problem is that when I run the calibration sound “calibration_90.wav” my elbow servo goes to far right position.:-(
            this is the main issue I have I think.:-(
            I think it’s not due to “poor” signal from my pc…right?
            thanks again for your help

          • before answer that, what power source you use? dc adaptor or battery?
            first, double check that you connect proper arm signal,

            i had same problem like you facing before (noise and elbow goes to right also),
            then i try this :
            1. make sure signal connection ring=arm1 tip=arm2
            2. use stabilize power source, just before i use phone charger with USB cable to powerup the servos,
            3. detach the second arm while run calibration90 wav, then attach 90 degre after the servos stop.

            baseline adj is to compesate how many degre , your arm1 and arm2 to get 90 degree.

          • Loarri

            that’s good !!
            in fact, until yestarday when I run the calibration I used a dc supply form my old nokia mobile phone (5.7v, 800ma) but today I use the recommended battery pack.!
            just ot understand better: tip=arm1=shoulder right?
            ring=arm2=elbow right?
            then sure asap I’ll run again the calibration with your suggestions!
            but just one question: first I need to run the calibration with arm1 detached right?just to set the middle of elbow servo right?
            then, If I understand well your suggestion, I’ll do the same with arm2=shoulder right?
            then I ‘ll fix arm at 45 degrees right?
            Many thanks fior your help !!!!thank you so much!

          • right, arm1=near battery pack, arm2=pencil

            for first time detach arm2 then attach arm2 just after calibration 90 wav file done.

            ok, you are welcome,
            i am sorry,with my english

          • Loarri

            ok many thanks again for your help Roni ! (and …no problem for your english :-)).

            I have a doubt anyway: ok for the calibration but when I run a sample (like square.wav or circle.wav) it doesn’t work…only only small scratches :-(

            maybe the problem could be the poor input signal also.what do you think?

            because if it’s only a calibration issue… I would expect to see drawings not centered but…drawing!

            now agai…I don’t see drawing but only small scratches
            what do you think on it/
            then….agai…at the beginning of each sample….elbow servo should go in the middle position (I think!) but now…it goes, as you know, to far right position.
            what is your feeling on it?
            Many thanks for all again and regards

          • Loarri

            Hello Roni !!
            :-) nice to “see” you again! I have a good news for you !or better…little update on my issue. so I found last week that the issue regarding servo calibration (servos that go to far right position) was due to my laptop (HP) !!!
            and I don’t know why but…changing the source device(now asus tablet) and after making the suggested ampli, everithing seems better and servo seems to move in the right directions!
            Anyway now I think the problem is calibration (I think but I’m not so sure) so please could you have a look on my attached picture? it’d be sqare!!
            but of course it isn’t. :-(
            what do you think on it? do you think it’s a calibration issue?
            ho can I solve it ?
            Many thanks again for your help and…thanks for your ampli schema!!!!!!

          • hallo Loarri , I ‘m glad to hear you have resolved the issue yesterday , congratulations , when seen from the picture you sent this , I think it’s just a matter of calibration or baseline adj arm only, if you ‘ve been watching videos on youtube about this robot ? there is explained how to do the calibration both parameters

            Have nice day’s ;)

          • Loarri

            tha’s good !!thank you !!

            as soon as possible I’ll check it and I’ll do the calibration.

            at the same time…I will be ‘happy to occupy my time with my newborn daughter last week!:-) see you and thanks again,


          • sorry i wrong, baseline adj is for 45 degree not 90 degree,

  • Loarri

    Hello guys,

    Could someone please help me?!?!
    I’m bit desperate because I made the drawbot following your instructions but it
    doesn’t work L

    I’m using two Hitec HS-311
    supplied by old mobile phone charger (5.7v, 800ma) and everything seems ok.

    But as you can see in my picture
    drawbot doesn’t draw well !! when I run calibration from my laptop (HP) the servo
    arm moves at right till the end of its rotation instead of placing in the
    middle L

    Then I don’t understand the
    meaning of us 0deg and us 180 deg in the draw wave synth: could someone help me
    to understand what I need to fill in?

    So at the end I’m suspecting I
    need to make an ampli right? L

    Could someone post the full
    schema of it using lm324?

    Many thanksssss for your help



  • Jinu Jibu

    can you plz send me a pictures wav file plz plz plz

  • omihoshbin

    The software doesn’t work for me (win7 64bit). it keeps saying ‘string does not contain element’ when i hit go. is there any way around this?

    • Shadi Halabi

      The adj angles must be strictly less than 2 degrees to work ,apparently theres a glitch in the software that still waiting to be fixed.

  • Shadi Halabi

    seeing the numerous troubleshooting you

    people are doing ,i decide to test everything before going on with this project. so i created a .wav file from the star.avg file and it worked but when i hooked everything up i got nothing but a jitter when i pressed the play button.
    i’m using mg995 servos and 4X AAA energizer batteries to give me 6

    volts , servos power are connected in parallel , ground of the jack is connected to the ground of the battery pack ,and the right and the left channel wires are connected to either servos since i’m just testing everything out.
    any help please!?

  • Loarri

    Hello guys ! at the end…my drawbot seems working +- fine !!!! :-)
    so….issues I found were:
    1) with my HP laptop even if songs play well…it doesn’t work for this project,…servos go at far position and so they don’t work. With my ASUS tablet everything is fine.
    2) audio output was not enough to control servos so I implemented very easy ampli following good schema from Roni Andria (thanks a lot !!!!!)
    3) HITEC servos work differently from other servos !!!!!!!!!! you need to invert us !
    from 600 to 2400 and viceversa.

    ok I hope my feedbacks will be useful for someone. now I need to spend time tuning better my drawbot.
    thanks for all a nd bye

  • Damian Setunge

    Wht type of servo must be used? 9g….digital or analog. ….? Really hope the u woulf help me out

  • Loarri

    Hello i used analog and economic hitec hs-311. Everything work fine with these servos if we invert …from 600um to 2400 and viceversa. Let me know. Bye Lo

  • jimmy brasfield

    Lead me through downloading the wave synthesizer program. cannot find anywhere.

  • Shuvra Podder

    I didn’t found the “Drawbot wave synthesizer” in the zip file. may be it is deleted.

  • tamjidalnaim

    my software is not working!!help me.

    • Ale Rastita

      change every dot, by a comma, and it will work!

  • Stev Jareckie

    You said “There are several ways to produce continuous line art” what are some methods other than TSP I could you to make a line art from an image?

  • jessica

    I made one for science fair at school I’m so proud it took a lot of work but it works. :)

    On the program when i put in the calibration numbers it crashes


    I did everything like is said in top but because my servos aren’t PERTALLAX i needed to make some changes like from degree to radian but is still one problem, servo goes till maximum and only arm 2 moves little bit (like 2°) only when i pause the music (.wav and more)
    Please help me

  • vats

    Can we use DC motor in Place of servo motors.