Robert Zacharias

17 Feb 2016

I made a drawing machine that takes the pulse of a user as an input.

Drawing with a US Cutter MH871-MK2 pen plotter, the system reads a user’s pulse with a simple, low-cost pulse oximeter via Arduino. There are a few built-in modes to make prebaked patterns using the wiggly lines of a pulse.

pulsetrace

Detail of a large (10″ diameter) circle drawn with pulse. The maximum pulse height here is 1/4″.

As of this writing, the prebaked modes include drawing:

  • a series of straight pulsed lines (mostly useful as a diagnostic),
  • a circle,
  • a spiral, and (of course)
  • a heart.
spiralpulse

Spiral pulse drawing. Note that the beats are much more crowded in near the center, and spread out at the periphery; this is because the radial speed is constant during drawing.

The Processing sketch (available on Github) that retrieves pulse data from the Arduino and transmits instructions to the plotter needs to juggle a few timing events successfully, but thankfully seems to do so without any trouble. The sketch needs to be listening on one serial port for Arduino data, which is constantly streaming in fairly fast, and also needs to do math on that incoming data and transmit plotter instructions—but no faster than the plotter can execute the instructions. (The plotter does not send back any acknowledgement, ready, or not-ready signals, so I had to find empirically what wait time is appropriate between instruction transmissions. Twenty milliseconds works for my application, but if you’re making the pen go farther you should give the plotter more time to get there.)

Classic heart image, drawn at about 8" diameter. As in the spiral drawing, the beats are more closely spaced closer to the center. However, the polar graph math that defines the heart puts the center at the point of the cleft of the heart, rather than the centroid of the figure—hence the funny spacing.

Classic heart image, drawn at about 8″ diameter. As in the spiral drawing, the beats are more closely spaced closer to the center. However, the polar graph math that defines the heart puts the center at the point of the cleft of the heart, rather than the centroid of the figure—hence the funny spacing.

The next step I’d like to take with this project: I’d like the base drawing to be the contours of the face of a loved one, loved place, loved thing, etc. The idea is that you’d be able to watch the image of this thing you care about being composed on paper, with own heartbeat animating the drawing as it proceeds.