IEEE Spectrum October, 2012 - 24

hands on

Work IN ProGrESS: the prototype mouse engraver uses
a microcontroller and a laser lashed to a uS $10 mouse [left]
connected to a pc. initial testing with a checkerboard image
[above left] produced almost random marks, but reducing
the load on the pc leads to improvement [above right].
Photos: Paul Wallich

LASER MOUSE
A quick-and-dirty tool for engraving
large images

P

reviously, I've written
about how to build
a low-power laser
engraver from the guts of a
DVD burner [see "Laser Cuts
Paper," IEEE Spectrum, June].
My fully automated setup
was similar in spirit to that
of a commercial engraver,
and while effective for small
areas, this approach quickly
becomes unwieldy if you want
to burn larger areas. You need
longer rails and leadscrews,
bigger stepper motors, more
structure, and more space.
As I don't often require
a high level of precision on
larger areas, one evening I
had an inspiration, and a
new laser mouse was born.
Normally, a "laser mouse"
shines a laser onto a surface
in order to track its position.
24

My laser mouse does
something different: When
I move the mouse across a
surface, it uses its tracking
mechanism to make sure
that an attached engraving
laser is shining when it
should be. The resulting
engraving should look a
little like a stone rubbing.
(Note that even a small area
of charred wood or paper
can produce a remarkable
amount of smoke.)
So how does it work?
The laser mouse requires
a host computer, so I coded
up something ugly but
functional in Lisp on my
trusty basement Ubuntu
Linux box (you can use the
computer and language of
your choice, so long as you
can get access to a USB port

NA * iEEE SpEctrum * OctObEr 2012

and can read mouse-position
information). The Lisp code
converts a digital image into
an array of brightness values;
then it reads "/dev/mouse0"-
Linux's standard software
interface for an attached USB
mouse-to decode incoming
three-byte messages from
the mouse into incremental
x and y movements. These
incremental movements
are continually tallied to
determine absolute position.
Then my program consults
the brightness array, and
if the corresponding value
for that position in the array
is less than a threshold set
when the program is started,
it sends a 1 along a second
USB connection to the
microcontroller driving the
laser. Otherwise it sends a 0.
On the mouse side, I
taped a prototyping board
fitted with a microcontroller
to a US $10 Logitech mouse.
The microcontroller I used is
a Teensy, a controller slightly
shorter and narrower than
my thumb, that's mostly
compatible with the popular
but much bulkier Arduino
microcontroller. The Teensy
listens to its USB connection,

decodes the packets being
sent by my Lisp program,
and, as needed, puts a high
or a low voltage on an output
pin that enables or disables
a leftover laser driver
connected to a 100-milliwatt
red laser I had lying around.
Ideally, I'd like a more
powerful laser to draw
faster, but did I mention
that even a small area of
charred wood or paper can
produce a remarkable amount
of smoke? And even this
100-mW laser draws more
power than the Teensy can
supply, so I have to use an
additional external power
supply for the laser driver.
As a consequence, instead of
powering the Teensy from
the USB connection as I
might normally do, I also
had to connect the Teensy to
the external power supply
to ensure a common ground.
Otherwise I'd have run
the risk of unpredictable
voltages on the connection
between the controller
and the laser driver.
So far I've been using a
checkerboard pattern as my
test image. Initial results
produced more or less
spectrum.ieee.org


http://spectrum.ieee.org

Table of Contents for the Digital Edition of IEEE Spectrum October, 2012

IEEE Spectrum October, 2012 - Cover1
IEEE Spectrum October, 2012 - Cover2
IEEE Spectrum October, 2012 - 1
IEEE Spectrum October, 2012 - 2
IEEE Spectrum October, 2012 - 3
IEEE Spectrum October, 2012 - 4
IEEE Spectrum October, 2012 - 5
IEEE Spectrum October, 2012 - 6
IEEE Spectrum October, 2012 - 7
IEEE Spectrum October, 2012 - 8
IEEE Spectrum October, 2012 - 9
IEEE Spectrum October, 2012 - 10
IEEE Spectrum October, 2012 - 11
IEEE Spectrum October, 2012 - 12
IEEE Spectrum October, 2012 - 13
IEEE Spectrum October, 2012 - 14
IEEE Spectrum October, 2012 - 15
IEEE Spectrum October, 2012 - 16
IEEE Spectrum October, 2012 - 17
IEEE Spectrum October, 2012 - 18
IEEE Spectrum October, 2012 - 19
IEEE Spectrum October, 2012 - 20
IEEE Spectrum October, 2012 - 21
IEEE Spectrum October, 2012 - 22
IEEE Spectrum October, 2012 - 23
IEEE Spectrum October, 2012 - 24
IEEE Spectrum October, 2012 - 25
IEEE Spectrum October, 2012 - 26
IEEE Spectrum October, 2012 - 27
IEEE Spectrum October, 2012 - 28
IEEE Spectrum October, 2012 - 29
IEEE Spectrum October, 2012 - 30
IEEE Spectrum October, 2012 - 31
IEEE Spectrum October, 2012 - 32
IEEE Spectrum October, 2012 - 33
IEEE Spectrum October, 2012 - 34
IEEE Spectrum October, 2012 - 35
IEEE Spectrum October, 2012 - 36
IEEE Spectrum October, 2012 - 37
IEEE Spectrum October, 2012 - 38
IEEE Spectrum October, 2012 - 39
IEEE Spectrum October, 2012 - 40
IEEE Spectrum October, 2012 - 41
IEEE Spectrum October, 2012 - 42
IEEE Spectrum October, 2012 - 43
IEEE Spectrum October, 2012 - 44
IEEE Spectrum October, 2012 - 45
IEEE Spectrum October, 2012 - 46
IEEE Spectrum October, 2012 - 47
IEEE Spectrum October, 2012 - 48
IEEE Spectrum October, 2012 - 49
IEEE Spectrum October, 2012 - 50
IEEE Spectrum October, 2012 - 51
IEEE Spectrum October, 2012 - 52
IEEE Spectrum October, 2012 - 53
IEEE Spectrum October, 2012 - 54
IEEE Spectrum October, 2012 - 55
IEEE Spectrum October, 2012 - 56
IEEE Spectrum October, 2012 - 57
IEEE Spectrum October, 2012 - 58
IEEE Spectrum October, 2012 - 59
IEEE Spectrum October, 2012 - 60
IEEE Spectrum October, 2012 - 61
IEEE Spectrum October, 2012 - 62
IEEE Spectrum October, 2012 - 63
IEEE Spectrum October, 2012 - 64
IEEE Spectrum October, 2012 - 65
IEEE Spectrum October, 2012 - 66
IEEE Spectrum October, 2012 - 67
IEEE Spectrum October, 2012 - 68
IEEE Spectrum October, 2012 - 69
IEEE Spectrum October, 2012 - 70
IEEE Spectrum October, 2012 - 71
IEEE Spectrum October, 2012 - 72
IEEE Spectrum October, 2012 - 73
IEEE Spectrum October, 2012 - 74
IEEE Spectrum October, 2012 - 75
IEEE Spectrum October, 2012 - 76
IEEE Spectrum October, 2012 - 77
IEEE Spectrum October, 2012 - 78
IEEE Spectrum October, 2012 - 79
IEEE Spectrum October, 2012 - 80
IEEE Spectrum October, 2012 - Cover3
IEEE Spectrum October, 2012 - Cover4
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1217
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1117
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1017
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0917
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0817
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0717
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0617
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0517
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0417
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0317
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0217
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0117
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1216
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1116
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1016
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0916
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0816
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0716
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0616
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0516
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0416
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0316
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0216
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0116
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1215
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1115
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1015
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0915
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0815
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0715
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0615
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0515
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0415
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0315
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0215
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0115
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1214
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1114
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1014
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0914
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0814
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0714
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0614
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0514
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0414
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0314
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0214
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0114
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1213
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1113
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1013
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0913
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0813
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0713
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0613
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0513
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0413
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0313
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0213
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0113
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1212
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1112
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1012
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0912
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0812
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0712
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0612
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0512
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0412
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0312
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0212
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0112
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1211
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1111
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1011
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0911
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0811
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0711
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0611
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0511
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0411
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0311
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0211
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0111
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1210
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1110
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1010
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0910
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0810
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0710
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0610
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0510
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0410
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0310
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0210
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0110
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1209
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1109
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1009
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0909
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0809
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0709
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0609
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0509
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0409
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0309
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0209
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0109
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1208
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1108
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1008
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0908
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0808
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0708
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0608
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0508
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0408
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0308
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0208
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0108
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1207
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1107
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_1007
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0907
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0807
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0707
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0607
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0507
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0407
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0307
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0207
https://www.nxtbook.com/nxtbooks/ieee/spectrum_na_0107
https://www.nxtbookmedia.com