Rainbow Lamp

A student from a local university reached out to us earlier this year to create a light based object for a class project. I volunteered to help her and after many iterations, we decided to build a diffused RGB Lamp.

The finger-jointed acrylic body was designed using makercase.com and laser cut.


I used the addressable RGB LED strip from Adafruit, called Neopixels, to provide the lighting effects.  The LED strip was wrapped around a PVC pipe in a spiral so it could provide light on all four (4) sides. The spiral spacing gets tighter near the top to either to vary the lamp density for a cool effect or I got lazy since this was done at 1AM on a Monday morning – I’ll let you decide.


A Teensy 3.1 controls the strip using the Adafruit Neopixel library. Two (2) sets of three (3) rechargable NiMH batteries were used. At full charge, a bank provided 3.82 Volts. While the micro controller was running happily, the LEDs were noticeably dim. While the vellum paper diffused the lights effectively, the distance to the acrylic was relatively small, so brighter LEDs would have decreased the desired gradient effect anyway.


We cut the vinyl logo and border using a Silhouette CAMEO. The final design had to be mirrored since it would be adhered to the inside of the acrylic case using transfer paper. The text on the top did not cut very well so we’ll re-cut that bit with more optimized fonts. After seeing the results, I think I’ll create a lamp for myself as well.



Douglas – Update 3

All previous updates can be found here

As I mentioned last week, the project to build a dynamic scuplture using 480 balls is now called Douglas. What does Douglas stand for, you ask? It is Dynamic Objects Under Gravity Linearly Accelerating in Space. It took 2 minutes to define what the acronym means – perhaps we should have taken longer. Yes, in true Milwaukee Makerspace fashion, we found an acronym first, and then found a definition for it. In addition to this huge accomplishment, we made some other progress too!

Chris sent the slave controller boards pictured below to OSHPark for fabrication. Six (6) boards were ordered as a proof of concept. They should be here by the 30th.




I made a bending jig to get more repeatable acrylic motor mounts pictured in the last update. It’s made out of two 1/2 inch pieces of mdf connected together with a hinge. The two adjustable screws determine the bending angle. Currently, they are set for 90 degrees. But bent acrylic usually “snaps back” as it cools, so it will have to be bent more that the desired final angle. Further experimentation will yield that angle and the adjustable screws will serve as stops for the mdf board. In the picture below, you can see parallel pencil lines indicating depth of the bent “arm” of the mount. The acrylic will butt up again a fence to be placed along one of those lines.





One of the goals of this project is to get kids interested in making by actually building parts of installation. This past Thursday, kids actually cut, stripped, and crimped connectors for RJ11 cables! These four (4) conductor “telephone” cables will be used to communicate between the control boards. I hope to have pictures of this awesome event in the next update.

Dynamic Sculpture – Update 2

The first update can be found here.

The dynamic sculpture is affectionately called “Douglas” till we come up with a better name. Lance, Chris, and I have been working on different pieces of the project concurrently.

Chris has been designing the slave controller PCB. Each PCB will have a PIC micro controller, which will drive (2) stepper motor through a ULN2803 chip. The PIC controllers will communicate to a  chipKIT™ WiFire over SPI. The WiFire has built in SD Card and WiFi. Since Douglas will be hung in an atrium, this allows us to send new animations wirelessly to a SD Card.

Lance has been working on the PIC firmware and the communication protocol. The firmware interprets the “G-Code” like commands and drives each stepper at the specified acceleration and velocity.

I have been designing the motor mount and frame in Inventor. A few pics below.

mount_1 mount_2 mount_3

The bent acrylic mount will be mounted on aluminum extrusions. The limit switch has been integrated into the mount as well. I built the first prototype a couple of days ago.


Next, I will create a bending jig to replicate the mount accurately. Additionally, we will be doing some measurements to figure out power consumption. Currently, it looks like we will need two dedicated 120V, 20 amps circuits. We would like to do some real world combined power consumption tests to see if we can lower that requirement.

Video Wall of Terror

This weekend, I helped decorate for a Halloween Party at my sister’s house. There’s an odd hallway that connects their main large public room to the rest of the house. It’s used for storage, and has shelves on both sides.

This year, I decided to decorate that area by creating a video wall effect. Something like a Television Control Room of Terror!

To start with, I simply filmed my brother-in-law with a video camera – only from WAY TOO CLOSE! I shot macro video of his eye and mouth. Then I edited the footage to create a custom looping DVD.

In the hallway, I set up multiple monitors. These are old monochrome standard definition monitors that were on their way to the recycling center. They were professional monitors, which means that they can pass a video signal through from one monitor to another, making it easy to daisy chain several monitors.

Next to the monitors, I set up three DVD players (including one car DVD player – hey I use what I got!) to play the three different custom DVDs – Right Eye, Left Eye, and Mouth. Each of the three videos is a different length, so they will continue to drift out of sync. That way, as they loop, the visuals are a continuingly changing experience through the whole evening.

Above the monitors, I set up a video camera on a tripod and fed it to some of the monitors. That way, when party-goers look at the monitor, they also see themselves. Having feedback on some of the monitors adds a sense of interactivity to the project.

After the monitors and DVD players were all set up, I covered the rest of the shelving with black paper. In a dark hallway, lit only be black lights, it’s a great effect of creepy images floating in the hall.

If you want more details on this project, I made a full step-by-step write-up on Instructables.

Dynamic Sculpture – Update 1

I am collaborating with the Betty Brinn Children’s museum to create something similar to this.

This sculpture has 844 balls hanging from strings wound around a pulley on a DC motor shaft. Ours will feature somewhere between 320 to 500 balls. I am currently working on a prototype to test and qualify different electronic and control platforms. It’s made out of 40mm x 40mm aluminum extrusion, laser cut wood motor mounts, 5V steppers, and ULN2003 based stepper drivers. I have been using an Arduino mega for now to test the motor and drivers.



The next step is to write software to create “voxels” with instructions akin to G-code. Additional software will be necessary to simulate the animation. G-code like instructions will be used by microcontrollers to control steppers in order to create an animation.

Gothic Arch Room Divider is Finished (Sort of….)

Sanctuary and More 102Silversark put together an amazing fashion show on Friday to showcase pieces she made inspired by church architecture and her trip to the Netherlands. This is something I cooked up for a background piece for the show.

The design work took several months and the actual creation of the piece took about a week, working 12-16 hours a day.  The frame is made from CNC routed aspen (thanks, Jason H.!) which is a rather “fuzzy” wood and required two days to hand finish, including the use of a set of needles files to smooth out the inset edges.

The acrylic panels were hand-stained with Gallery Glass stain and simulated liquid leading. They’re not quite finished yet, but I plan to complete the staining within the next week.

I’ll also be using this as a backdrop for various events including the Sustainability Summit coming up as well as the Concinnity sci-fi/gaming convention on April 5th. Additionally, this might be making its way to Embellishments in the Grand Avenue Mall for a window decoration.

I can’t wait to make another one!

How To Laser Cut Really Big Halftone Photos

Wanting to up the ante a bit after having the Makerspace laser cutter chop out hundreds of city blocks to form a big map of MKE, I decided to laser cut a  24” by 18” halftone image!  As it required the laser cutter to carve 10368 circles out of an off-yellow piece of 98 Lb paper, the cutting took 1.3 hours and produced quite a bit of confetti.  I’ll display this with a purple (rather than black) paper behind the off-yellow laser cut paper.  In person there is an interesting transition from an abstract purple/yellow shape into a black and white image as one moves further away from the image.  You may even want to sit back from your monitor to improve the “image quality.”


Check out this video of the laser cutter in the middle of cutting 10000 circles!  Note the mysterious logic employed by the laser cutter to determine the order of its cuts.

I imported a photo into GIMP, and desaturated it to produce a black and white image.  After bumping up the contrast and darkening it slightly to nearly saturate the darkest areas (and avoid any totally white areas), I brought it into Inkscape.  Inkscape can create halftones in a two step, manual process.  The first step is to draw an 8 pixel by 8 pixel circle in the upper left corner of the 1133×720 pixel image, and select Edit->Clone-> Create Tiled Clones.  To create a rectangular grid of halftone dots whose sizes are set by the color of the image below, use these settings:


From a quick test cut of a particularly dark area, I found that I needed to add an offset between each row and each column to account for the kerf of the laser.  I.e. the laser beam has a cutting width that is wider than that of the line, and so in the darkest areas of the photo the halftone dots overlapped, causing a large section of the paper to fully detach. That led me to make this test strip with 11 shades of grayscale, evenly spaced between pure black and white.  I laser cut this test strip with various offset distances between the rows and columns in order to arrive at the optimal 10% extra offset between adjacent rows and columns shown in the above settings. Note also that the smallest size circles may not even be exported from Inkscape due to their infinitesimal dimensions (i.e. if you export as a .pdf).  The minimum gap between circles with 42% speed and 100% power on an 1133 pixel wide image blown up to 24″ is 0.79 pixels, which is 0.017″.

test_tripApplying these same settings to the image created a 128 by 81 array of circles, for a grand total of 10368 vector objects.  In my first trial run last weekend, I found that sending this much data to our 60 Watt Universal Laser takes 5 minutes and results in a print error I noticed only after hitting start!  After 1.3 hours of vector cutting, I found that a few of the rows and columns were shifted a bit from their intended location.  It’s not clear whether this had to do with the print error, or if the paper moved slightly during the cutting process.

In order to improve the second version (shown at top), I chose to move away from the rectangular grid of halftone dots – recall that Kays and London teach that hexagonal close packing is for champions.  The reason to abandon the rectangular spacing is to improve the dynamic range (i.e. to make the blacks blacker).  For example, rectangular grids of circles pack at an “efficiency” of Pi/4, which is 79%, whereas hexagonal close packing results in a pi/6*sqrt(3) packing, or 91%.  That means that the darkest sections of the image will be darker, as more of the light colored “front” piece of paper can be cut away.  See the image below, and note that the hexagonal pattern does indeed appear darker.


It turns out that Inkscape doesn’t easily permit this.  I ended up spending an hour or two fiddling with the column and row offset settings using my 11 black/white tone test strip to find settings that gave the hexagonal offset with the closest, even hexagonal spacing between adjacent circles.  The following settings worked great for an 8 by 8 dot on the darkest square of the test strip:

hex_arrayI test cut this yesterday, sending ¼ of the data at a time to the laser to avoid printing errors. However, part way through the cutting, cut-out paper circles stuck to the long air assist nozzle of the laser head (ironically) hit a washer I was using to weigh down the paper to prevent movement while cutting. The paper shifted by about 1mm, which was enough to make some adjacent halftone dots overlap and cause others to have a visibly wider spacing.

In the process of cutting that photo, Shane happened by and mentioned that vector cutting 10368 objects may be just as fast as the typically-very-slow raster cutting time.  With three clicks, I turned off the vector outline of the halftone dots, and selected a fill color.  After test cutting a row, I found that he was right.  Check out the difference between raster  (100% speed, 100% power) and vector (42% speed, 100% power) in the darkest section of the image – the area with the closest spaced circles:


The vector halftone dots are perfectly circular, though the edges are a bit rough.  Some of them have a very small border and so are a bit fragile.  The raster halftone dots are not very circular, but the edges are very smooth and the boarders are slightly wider.  I chose to raster cut the 24″ x 18″ image, and found that the raster cutting time of 1.4 hours was nearly equal to the 1.3 hour vector cutting time.

Note that many programs can create halftones, though often the results will not be suitable for laser cutter use:


The next step is to laser cut this image into wood.  Also, Inkscape will let you draw any shape to create tiled clones from – so please do share photos of any halftone images you create with star shapes!

Giant Laser Cut Map of Milwaukee

I’ve been on a laser cutting kick lately.  In the last two weeks, I made 9 travel coasters, two of which feature neighborhood maps of places I’ve lived.  Though I could have just raster cut these very small coasters, generating the vector version allowed me to create this big map of Milwaukee, Wisconsin!  This wall hanging map is the maximum size of our largest laser cutter: 24″ by 18″!  Boom!


This map was inspired by a project made by my friend NJStacie a while back.  While she has both the infinite patience and the limitless awesome that allowed her to use an X-acto knife to cut out all the city blocks of Boston from an actual map, I used a laser cutter and software. To create images for my roadtrip coasters, I simply took screen captures of google maps, and processed them into vector files using GIMP and Inkscape.  There are so many extraneous details in google maps (lines for buildings, the text labeling street names, etc), that it was clear I needed an alternate approach for making this map.

Its easy to get a small google map without text labels, check out the url of this page.  My first approach to get more than 512×512 pixels was to use the Google Maps API, which is a toolset to imbed an interactive google map into webpages using Java.  The great thing about it is that the rendering style is completely configurable. Even better, there is a GUI to quickly configure your desired style, and automatically generate the JSON object to pass to the style property of the MapOptions on your webpage.  Instead of investing 10 or 15 minutes reading about how to integrate all these steps, I just created the style, and took a few .png screen captures.  I opened them as layers in GIMP and combined them to create the following grey and black image:


I saved it as a .png, and imported it into Inkscape, selecting Embed Upon Import. I created vector data from this raster image by first selecting Path -> Trace Bitmap, opening a dialog box with many choices.  I really only experimented with the top two import choices, Edge Detect and Brightness Cutoff.  I found that Edge Detect gives two outlines, one of the streets and one of the city blocks.  For this reason, Edge Detect seems to be the best choice to create the widest streets, and therefore the strongest paper cutout.  It required some cleanup though, so I selected Path -> Break Apart, adjusted the Fill and Stroke, and then just deleted all the street outlines (thereby widening the spaces between buildings, which is effectively the streets).  As some of the streets were to narrow to really form one continuous outline, they formed a lot of smaller street segments that I deleted in five or ten minutes of fast and furious clicking.  After all those steps, a vector version of the following image was produced:


I did a few test cuts to find a power/speed that cut all the way though some colorful, 98lb, 25″ by 19″ acid-free archival paper I picked up.  The goal is to use enough power to cut though, without using too much power, which widens the kerf (laser cut width), thereby undesirably narrowing the streets.  This ended up being 100% power, with 52% speed. Check out the laser cutter in this real-time (not sped up) video.  Note that one typical problem of having both air assist and super-power fume-removal suction while cutting is that the laser cut bits tend to flip over into the cutting path, potentially resulting in an incomplete cut.  That meant when the laser cutting was complete, I had to carefully punch out the 15 or 20 stubborn city blocks that weren’t completely cut though.

I also cut this design into a coaster, and made one with my old Massachusetts neighborhood too.  Naturally this was a lot of data on a small surface, but the results are pretty good despite the vector cutting time approaching that of the raster cutting time! I cut these at 100% power, 100% speed, like the other coasters.


After I completed all these steps, I learned about a way to access vector map data directly.  The Open Street Map site allows export of .svg vector data just by clicking the share button on the right side of the page!  Even better, one can zoom in to Milwaukee, and press the big green Export button on the upper left to export an .osm database of the visible section of the map.  This OpenStreetMap archive can be opened in Maperative! and a style can be applied to the rendered map.  Maperative has several styles built-in, and I simply edited the google maps-like style to omit all the buildings, and draw all roads, highways, on-ramps, etc in a black with no border.  Maperative can export .svg files, but I found the content of these files are a bit of a wreck.  For example, each different road type is a separate vector path, meaning that there are many separate paths in the file.  Ultimately I found I’d taken the wrong approach, as I should have rendered all the city blocks as black vector outlines, and omitted the roads – as that is what I really need to laser cut.  With a bit more work, using Maperative would likely be a quite quick path from map to laser cutter. However, I abandoned this approach as I’d already created a somewhat reasonable workflow.

Laser Cut Road Trip Coasters: Improved!

I used the Makerspace 60 Watt laser cutter to make coasters that show the path of some road trips I’ve taken.  That way I can enjoy the sweet irony of sitting on my couch enjoying a tasty beverage while having thoughts of travel!  This project was somewhat inspired by mmassie’s OpenPaths Zurich vacation keep sake project.

As I don’t use OpenPaths, I used Google maps to plot the course of past road trips, and simply took screen captures.  I wanted to create vector images with hairline width (0.001″) lines so the laser cutter can make each coaster in 45 seconds instead of 20 minutes. There are many ways to generate vector data using these raster .png images. I chose to semi-manually edit out unnecessary parts of the images using GIMP, and then used Inkscape to extract vector data from the resulting simplified images.  If you’re new to these tools, just search for “Inkscape raster to vector” tutorial videos.  An alternate approach is to just import the raster image into Inkscape, and use the Bézier line tool to trace the important paths.  Yes it is manual, but this alternate method also only takes 5 minutes to complete.

The coasters are cut from 3/16″ 4″ x 24″ solid basswood using fairly standard settings of 100% power, with 100% speed for etching, and 3.5% speed for cutting.


I made quite a few coasters, and above is a photo of three of them. The coaster on top is a rail trip through Italy, the second is a 1000 km, 12 day (right hand) drive through Ireland, and the last is a much longer than 12 day road trip through the southwest – note the vertical and horizontal lines are the state borders of NV/NM/CO/UT.

A few days later, after polishing my vector editing skills in Inkscape, I made an improved version of the above three coasters.  I added circles to more clearly highlight each stop, and I etched the names of each stop on the reverse side of each coaster.  One group of raster to vector settings I used in Inkscape resulted in the creation of two sets of (closely spaced) hairlines for the outline of Italy, as shown in the coaster above.  I really liked how distinct the outline of Italy is relative to the path of the trip.  I chose to intentionally create two offset hairlines for the other country or border outlines, using Inkscape’s linked-offset path command.

Check out the new and improved design of the front, with dual country/border outlines and circles to denote the stops:


Check out the reverse sides of these coasters shown below, with names of each stop etched on them. Albuquerque.