Find all your DIY electronics in the MakerShed. 3D Printing, Kits, Arduino, Raspberry Pi, Books & more!

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.

amazing grace TRS Drawbot

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.

wave synthesizer TRS Drawbot

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.

TRS-Drawbot

Related

Steps

Step #1: Prep the base

PrevNext
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

PrevNext
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

PrevNext
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

PrevNext
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

PrevNext
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

PrevNext
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

PrevNext
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

PrevNext
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 star.zip.

Step #9: Create your first drawing

PrevNext
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

PrevNext
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.

Conclusion

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.

Software

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.

Electronics

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.

Mechanics

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

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 makezine.com. 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 arduiniana.org.


blog comments powered by Disqus
Follow

Get every new post delivered to your Inbox.

Join 26,587 other followers