DIY Carved Eraser QR Code Stamp

After some modest success carving some neat designs into pink erasers, I tried making a QR code stamp.  It didn’t work well at all, with exactly just one impression working … sometimes.

The first attempt took a really long time and turned out terribly.  After a few days break, and some mental distance from the project, I returned with some new ideas and inspiration.

Here was my new approach and plan:

1. The Stamp

  1. Go Slow.  Proceeding slowly and methodically is always a good idea with sharp instruments.  I went fairly slowly the first time, but this time I would be even more methodical.
  2. Cutting.  Rather than using the carving blades for the QR code features, I switched to using a craft knife.  It was just too hard to cut precise lines with a V or U shaped blade, managing not just the direction and speed of the cut – but the depth as well – for both sides of the blade.  The craft blade let me focus on just one side at a time.  I used the blade to cut at about a 45 degree angle along one side, then other side.
  3. Don’t Cut Too Much.  I used calipers to measure the pixels cut into my first attempt as well as the stamped result.  I discovered \the stamp pixels were very slightly larger than their rubber counterparts.  This tells me it would be better to cut too little rubber – and cut more later if necessary.
  4. Removing Scraps.  Rather than sticking my big old fingers into the eraser or trying to pop it out with the blade, I used a pair of 3D printed tweezers to pluck them out.

2. The QR Code

  1. Optimize the QR Code.  There are several ways to optimize a QR code for eraser / stamp carving. 1.  I used as many of these methods as I could:
    1. “Pixel” Size.
      1. As you add more information into a QR code, the QR code generator will need to use more black and white units2 to encode the information.  After some tinkering it seems like the smallest QR code that can be generated is 441 total pixels, 21 wide by 21 tall.  The absolute largest QR code I could generate looks like one of those “magic eye” posters.  I didn’t even try to count how many pixels wide this thing was.  It’s 9,216 pixels, 96 wide by 96 tall.

        This slideshow requires JavaScript.

      2. I was having a hard time carving a stamp 21 pixels wide into a 24.5 mm3 wide eraser, so the idea of carving more than 21 lines into an eraser by hand seemed not feasible.  The very next step up from the 21×21 grid would be a 25×25 grid, so I knew I had to find a way to limit the data, find the best error correction, and find a way to cut these small pixels and thin features.
    2. Proper Error Correction.
      1. QR Codes have built in “error correction” that allows the user’s scanning device to scan information from a partially formed, damaged, or obscured code.  These settings range from L (low), M (medium), Q (quality), and H (high quality) able to error correct from up to 7%, 15%, 25%, and 30% damage respectively.  Lowering the error correction allows you to create a smaller QR Code, but it will also be less robust.
      2. I fiddled with these settings a lot to find the maximum amount of data I could put into a QR code while still retaining a maximum size of 21×21 pixels.  I was able to encode about 16 characters in a L, 13 characters in a M, 10 characters in a Q, 6 characters in a H.  The code stores numeral easier and requires more pixels to store letters and special characters.
      3. My first attempt used an error correction level of L, but was basically unusable as there must have been more than 7% distortion.  This time, I decided to try for a very high level of error correction with the Q setting for 25%.
    3. Reducing Data.  This is where I used some tricks you may, or may not, be able to replicate.
      1. URL Shortener.  A TinyURL link to my Instagram page requires 29 characters.  Looking above, this would immediately suggest a 21×21 pixel QR code would not be possible.
      2. Trimming a Link.  After some fiddling, I realized that as long as the data encoded looked like a URL (as in some characters separated by a “.”), the QR code scanner would interpret it as a link.  This means we can skip the “http://” and “https://”, saving 7-8 characters!  Unfortunately, this still doesn’t let me encode the shortest URL that TinyURL could give me which requires 20 characters after discarding the “http” stuff.
      3. Maybe Just a Domain?  Maybe you just wanted to point someone to your website and not a big long link, shortened with a URL shortener.  Let’s work the numbers backwards.  Most commonly used domains end with “.com”, “.org”, “.biz” – with 4 characters each.  Using the information above, this means we could use a domain name with up to 12 characters for an L encoded QR code, 9 for an M, 6 for a Q, and just 2 for an H.  While it would be easy to find a 12 character domain, you’re stuck with only a 7% margin for your error correction.  A domain with 6 to 9 characters for Q and M would allow for 25% and 15% error correction.  You can still find 6 character “.com” domain, but… they’re unlikely to be very memorable.  This isn’t necessarily a problem.  You might be able to find a good short domain with an unmemorable name, but forwards the user to your real website.  The problem, of course, is that no one is going to want to click on that link.
      4. How About a custom URL Shortener?  It’s still possible to purchase a short URL, but they’re pricey.  I happened to buy a good one several years ago and have hung on tightly to it.  I slapped a YOURLS install on it, and have been using it ever since.  Using my own URL shortener means I can keep the URL down to just 9 characters – including the TLD!

Okay, back to carving.  I grabbed my headphones, put on some music, and took it very slowly – a little under two hours.  Here’s some progress photos:

This slideshow requires JavaScript.

Here’s how it looked (with some additional shots to show the original design overlaid):

This slideshow requires JavaScript.

I stamped this design 9 times – and all 9 were more or less easily scannable.  The neat thing about this design is that it points to a URL shortener I own, so not only is it about as tiny as possible, but I can change the destination if I ever needed – without having to spend two hours recarving an eraser stamp!

Eraser Stamp Carving
  1. Carved Eraser Stamping
  2. Further Adventures in Eraser Carving
  3. DIY Carved Eraser QR Code Stamp
  1. I won’t get too much into the weeds on the actual method of generating QR codes, mostly because I haven’t studied the math in it, but I did find a great article which has a lot of good background info and explanations []
  2. I’ll call them “pixels” from this point forward []
  3. Just barely under an inch []

Further Adventures in Eraser Carving

I thought it would be neat to try cutting a QR code stamp.  (Skip to the end to see the one time I was able to get the stamp to work)

Getting the pattern ready for carving

Getting the pattern ready for carving

The obvious problem is this would require an incredibly detailed and precise approach to carving.  To get the smallest QR code that can still contain a URL, it would be limited to 16 characters, the lowest error correction (7%) rate, and would still have 21×21 pixels (441 total).  After a little testing, I realized the code needs a little white space around the QR code to read properly.  This means 23×23 pixels all carved into a less than 1″ square area.  I know from the design of the eraser carving station that the eraser is 24.5 mm wide… so each pixel is roughly 1mm square.

I tried several things that definitely did not work well:

    • Printing the design in one of my templates, trimmed, colored in with a pencil, taped in place, then rubbed onto the eraser to transfer the design.
    • This didn’t really work very well since the pencil trace to rubbing process introduces a lot of error.  I tested this by trying to scan the reversed drawing on the eraser.  Didn’t work at all.
    • The 1mm wide pixels would have been a nightmare to cut with even the smallest carving blade, so I switched to my craft blade.  The blade is so sharp and incisions so thin, that many times it was difficult to see where or whether I had made a cut.  Once I switched from a vertical cut to a 45 degree angle, it seemed to get a little bit easier and cleaner.
    • After I was about a quarter done I tried using a fine tip sharpie to color in the pixels.  After a lot of hassle, I could get this to scan, so I kept going.
    • The darkened pattern was still a bit messy and my cutting wasn’t significantly better.
    • I flipped the eraser over and tried a new tactic.  I taped a template to the eraser and tried to cut the design through the paper.  This didn’t work well because when I cut very small pixels out of the design, the paper quickly lost cohesion and then became useless.
    • Finally I pulled up a large picture of the QR code on my laptop and tried to keep to the design as best I could.  It wasn’t pretty – but I was done.

The results were less than stellar.  The leftover ink from the sharpie discolored the inkpad a little and got transferred onto the first few stamp impressions.  Out of a dozen different impressions, only one could be scanned by my phone.

Darkened with a sharpie, partially carved

Darkened with a sharpie, partially carved

If I tried this again (and, let’s be honest, I probably will) I would use the template / pencil transfer method just to place “landmarks” and then refer back to the large display on the laptop.

Stamp, stamp, stamp

Stamp, stamp, stamp

Lastly, I was able to get just one impression that could be scanned:

One single scannable stamp impression

One single scannable stamp impression

The reason the bit of paper is a little oddly shaped is that I had stamped onto a piece of scrap cardstock.  I’d stamped on other pieces of paper, cards, and even on that same piece of cardstock.  This was the one time it worked.

Eraser Stamp Carving
  1. Carved Eraser Stamping
  2. Further Adventures in Eraser Carving
  3. DIY Carved Eraser QR Code Stamp

How to caliberate and tune Skeinforge for your MakerBot

Update 4/21/2011: This post is more than a year old.  Since then I’ve created ProfileMaker which should eliminate the need for almost all of these steps.  Share and enjoy!


A MakerBot Operators group member, Cliff Biffle, has posted a very comprehensive list his Skeinforge tuning and calibration procedure.  Cliff owns MakerBot #69 from Batch#4, named Kallisti.  Although Cliff has a MakerBot Skeinforge tuning page, it looks like he hasn’t had a chance to transcribe his lab notebook yet.  However, Cliff has been patient enough to type up his Skeinforge calibration information twice for the benefit of the MakerBot Operators group.  Here are links to his original postings on 1/6/2010 and another on 1/15/2010.

The other day I wanted to go back and find his calibration procedure, but had forgotten who had posted it, when it was posted, and which thread it was posted.  Having now found it, I don’t want to lose it again.  It turns out that Cliff had posted it once in response to my own question about dialing in Skeinforge settings in order to print up lego pieces!  Thanks Cliff!

I’ve mashed his two posts together to put together this checklist:

  1. Adjust Temperature:  Skeinforge -> Raft
    1. Find a temperature that allows you to extrude quickly and easily without too much popping or smoking
    2. MakerBlock: I have one of the 1mm thermistors, use the Zach 1 temperature table, and print reliably at 220
  2. Adjust Layer Height: Skeinforge -> Carve -> Layer Thickness (mm)
    1. Cliff uses the default of 0.36
  3. Adjust Extrusion Speed: Skeinforge -> Speed -> Flowrate PWM Setting (if PWM Setting is Chosen)
    1. Make the extruder go slower and lower the PWM value
    2. Cliff uses 230
  4. Adjust Feedrate: Skeinforge -> Speed -> Feedrate (mm/s)
    1. Too fast and you lose the fine detail and introduce errors.  Too slow and it will be too… slow.
  5. Adjust Skeinforge to understand how much plastic is being extruded
    1. Raise the Z axis and perform a test extrusion into the air
    2. Do not pull or stretch the extrusion
    3. Using calipers, measure its diameter, D
    4. Go into Skeinforge and look up the configured layer thickness, T, from Skeinforge -> Carve -> Layer Thickness (mm)
    5. Divide the diameter by the thickness, D/T
    6. Set Skeinforge -> Speed -> Extrusion Diameter Over Thickness (ratio) to D/T
    7. Print a test piece with thin walls
    8. Measure the width, W, of a single extrusion somewhere above the first few layers
    9. Divide the width by the thickness, W/T
    10. Set Skeinforge -> Carve -> Extrusion Width Over Thickness (ratio) to W/T
      • Cliff said this setting may be in Fill, but I think he may have meant Carve

    11. Nick Ames has suggested setting Skeinforge -> Carve –> Extrusion Width over Thickness (ratio), Skeinforge -> Inset -> Extrusion Perimeter Width over Thickness (ratio), and Skeinforge -> Speed -> Extrusion Diameter over Thickness (ratio) all to the same value.  His post also has a lot of information and links about other potential Skeinforge tuning resources.
  6. Adjust other Skeinforge settings
    1. Overlap of grid corners
    2. Infill density
    3. Unpause
    4. Stretch