Colin Karpfinger


Functional art with Arduino: A painting that displays the surf report



I made a piece of functional art with the LightBlue Bean! It uses python to pull the report, and the LightBlue Bean (essentially a BLE Arduino) to receive the data over bluetooth low energy and set the LEDs.

The general conditions are indicated by the color of the LED (blue is poor, green is fair, orange is good, red is epic), and the size by the intensity of the LEDs.

Read more about it on the Bean examples page: Surf Report Notifier


Rusty Forks (not spoons)

It's cool living blocks from the ocean, except in San Francisco, where that just means cold-ass fog.  Being San Francisco, that could also be cold ass-fog.  Either one is bad for your motorcycle.  (for all you TLDR people, note the hyphen)

I replaced my front forks on my Kawasaki Ninja 500R about 10 months ago, and they were pitting again.  I read a bunch of info on forums on how people are solving this, and decided to give it a shot myself.  I'm not going to cover the standard steps to remove the front forks, as there are plenty of other places to find that.  Clymers manuals will work, or this place:

Rusty Fork

look at those nasty things


Looks pretty funny without a front wheel

Before you get started you're going to need a 12mm Allen Wrench.  No problem, right? Just head down to the local hardware store.  Wrong.  Okay, maybe the auto parts store.  Also wrong.  None of those bastards had it, so order it in advance from McMaster (71285A196), or call ahead of time.

First I sanded down the pitted spots using 800 grit sandpaper (McMaster PN: 4611A315). Then a bit with 1200 grit (McMaster PN: 4611A313).

After Sanding

Rust gone, pits remain

I wiped it down a bit with a towel and decided to try my luck with some metal epoxy.  This stuff is epoxy, but with metal in it.  In my case, aluminum.  Not sure on which is best, but mine was certainly the cheapest.   It also sets up in 7 minutes and is fully machinable / sandable in 2 hours.  Pick some up here: 7500A4.

Aluminum Epoxy

Spread the two part epoxy on something and then dab it on the pitted spots.  Then I used a piece of cardboard to smooth it over and remove the excess.   I should have removed more excess as you can see in this picture:

After applying (too much) epoxy

After a couple hours, get ready to sand.  I used some 600 grit to move it a bit faster (McMaster PN:  4611A314).

After drying


Halfway through sanding

Finished sanding. Nice and cleeeaaan

Finished, another view

Finally, I coated it with an anti-rust coating that you can pick up here: 1370K34.  It's fairly cheap and seems to leave a waxy finish protecting it from rust.

No more rusty forks

That's it!  I'll update you in 6 months how this has held up.  Happy riding.


Announcing Thumbies – Solving all your iPhone gaming frustation

I'm quite happy to announce that Thumbies are now available nationwide at BestBuy locations, and online!

Thumbies Standard Pack at BestBuy - $14.99

Thumbies Pro Pack at BestBuy - $19.99

The iPhone was clearly not built specifically for gaming.  Not having tactile buttons that you can feel is a major problem for any serious gamer.  In addition, making mistakes in games in infinitely more frustrating, than say, writing an email.  In an email you can just backspace and fix it, whereas in a game you are penalized much more.

Thumbies solve this problem by sticking onto your screen, and providing a tactile D-Pad and buttons.  It feels just like a game controller, and it works out of the box.  Since it interacts through the screen, it is incredibly easy for developers to support.

Thumbies Pro Pack

Thumbies Standard Pack

I started working on this concept over a year and a half ago.  I first built a playstation to iPhone adapter, and had that 90% complete when this idea struck me.  I figured, the user's thumbs are already taking up space on the screen, why can't you just put a button pad ontop of the screen?  Within 30 minutes I had my first prototype, loaded up Mario, and I knew I was onto something.

It's a very simple concept, which results in interesting responses from people.  I got quite a lot of people scoffing at the idea "Why would you put buttons on a TOUCH screen?".  But those who took time to think it through, saw the advantages:

  1. It's a simple product, making the development cycle short.
  2. Since there are no electronics, the cost is fairly low, making a $14.99 price point possible.
  3. Developers don't need to write additional code to support it; don't have to depend on developers for it to be adopted.
  4. The market for iPhone, iTouch, and iPad gaming is HUGE.
  5. The most common complaint about iPhone games is the lack of tactile feedback.  The market is clamoring for a solution.

We are contacting more developers, who so far are thrilled.  It will be interesting to see how it is adopted over time.


The Dropout’s Guide to PCB Trace Antenna Design

"There are 2 ways to learn antenna design.  One way is to go to grad school.  I'll teach you the other way"

-A mentor of mine

Engineers love to refer to wireless as 'black magic'.  Which is partly true.  But with the right tools and the willingness to fuck it all up (a few times), you'll be making your mark on the 2.4GHz band in no time.  This guide is a 'Trial and Error' approach to antenna design.  It won't be perfect, and won't cover a lot of the 'hard' topics.  You probably won't even feel smart after reading it.  You may even feel a little dirty.  But you WILL be able to design an antenna to 'good enough' standards, for 2.4GHz communication (wifi, zigbee, ANT+, etc).


New Punch Through Design Website

I had the Punch Through Design website re-done, and I'm loving the clean new look.  I was referred to the designer, Norm Orstad of Orstad Design, by a mutual friend, and I'm very happy with the results.  Now I need to work on publishing the other projects we've completed!

Click through to the site if you haven't seen it:


Clients Mentioned in Minneapolis Star Tribune

I'm happy to see a couple Punch Through Design clients getting press.  Both Pedal Brain and Shepherd are mentioned in the article:

The iPhone and the iPod Touch, it's a pretty cheap platform and it has a lot of power behind it," said Colin Karpfinger, owner of hardware and software developer Punch Through Design.  "It's a really nice building block to do other things with."


Ordering PCBs Designed With EAGLE

So you've figured out EAGLE's design quirks, you've routed all your airwires and you're wondering what next.  This guide will take you from a .brd file in EAGLE to a professionally made PCB.


Moving Cross-country via UPS / Fedex

I moved cross country from Minneapolis to San Francisco in February 2010.  I arrived to an empty room with 3 bags, and a debit card that Wells Fargo thought was stolen.  A few days later UPS delivered the rest of my life, mostly intact.  Learn from my mistakes:

  1. Throw it away
    Anything you haven't used since you last moved.  Remember that you're paying shipping for each pound.  This helped me toss the extra crap.
  2. Number your boxes
    I labeled each box with a number then made a google doc of the contents.  Then when you're looking for one specific thing you don't have to tear through all your boxes.
    I had one box that had those huge metal staples on the bottom, and it was one staple away from tearing open when it arrived.  This was holding my main computer and one LCD monitor!  I got lucky.  Tape every single edge of your box.
  4. Greyhound Freight for Heavy, Unbreakable Stuff
    Greyhound offers a super cheap, super slow shipping service.  If you're moving to a city, there is a good chance you have a greyhound station close by.  Ship your heavy non-fragile items on the bus.
  5. Carry Your Hard Drives
    If you have a desktop computer, take out the hard drives and pack them with you.  Everything worked when I arrived.
  6. Move in with Randoms
    I moved in with 3 other people, none of whom knew each other beforehand.  I've had some friends who've moved in with people who already lived together for awhile, and they became 'the new guy'.  If you're all new, you'll be more willing to go out, meet people, see the city, and get to know each other.
  7. Tell your Bank!
    Wells Fargo decided some bum stole my debit card and headed west.  Turns out that bum was me, trying to buy groceries.
  8. Clean Up, Take Pictures, Sublease
    Right before you move out, do your best to clean your room and take some pictures.  I got about a 5x higher response rate on craigslist with pictures in my listing.
  9. It's Not Hard
    Once you do it once, you'll get rid of your crap and keep only the essentials.  At that point you could sell your furniture on craigslist and be moved out within a week.

The second shipment of stuff

My Room after Picking up my Bed:

My 3 bags

Making Coffee on Day 1:

A minimalists french press

Made damn good coffee!

Filed under: Uncategorized 1 Comment

Zero-Op Mercenary Automated Paintball Sentry Gun

Like the best of projects, this started with a question- "I wonder if it's possible...".

It turns out the answer is YES!, but not without a lot of hard work.  This project alone was my crash course in C++, Linux, Computer Vision, Servo Control, and designing circuit boards.  I can't think of a more exciting way to learn.  Although I can think of a few less painful ways.

What is it?

The Mercenary is a robot that can 'see' the world through a single camera, and can interact with the world by aiming and firing its paintball gun. Basically, the goal is to replicate the behavior of a person guarding an area, with a robotic system.


Using the Pololu Servo Controller in .NET

Controlling Servo Motors

Using the Pololu Servo Controller in .NET
Tutorial and Example Program

Step 1: Buy a servo Controller.

In this guide I'll be providing code for the Pololu 8 Servo Serial Controller, which I highly recommend. It has a protocol which provides around 5,000 unique positions, as compared to the 255 provided by most other controllers.

You can buy the 8 servo controller for $23.95, its a good deal.

Pololu 8 Servo Serial Controller

 Click for More

Step 2: Find a Power Source.

The Pololu 8 Servo Controller takes a 5-16V input. You could use any power supply in that range, as long as it can source enough current for your purposes.

I used an old AT power supply. I bet you can find one on ebay for 10$ or less. Chances are you can find a really old computer and steal its power supply. The 5V lines work perfect. Some of the newer power supplies (ATX) have something called current sensing, which will not output a voltage unless there is some continuity between the supply wires and ground. I'm not quite sure these work, but you can read up on current sensing here:

You could also use 4xAA or 4xAAA batteries, or you could use a 5V wall wart (one of those power adapters w/ the bulky plug) from some old device. Get creative. You need to provide power to the servos (anywhere from 4-6 Volts) and to the controller (anywhere from 5-16 V). If the servo battery pack is above 5V, it can also power the controller by placing a jumper on the board. (Vcc=Vs).

Step 3: Find a serial cable

A standard DB9 (9 pin) Female to Male serial cable will work. Do not use a NULL Modem Cable, as it will not work.

Here is one for $1.68 if you can't find any:

Step 4: Connect up the power, serial port and your servo!

As stated before, you need to provide power to the servos (anywhere from 4-6 Volts) and to the controller (anywhere from 5-16 V). If the servo battery pack is above 5V, it can also power the controller by placing a jumper on the board. (Vcc=Vs). Plug in your power to the pins on the servo controller. Connect your servo to pin 7 (furthest from the servo power pins). You could use another pin, just remember to change it in the software later.

Diagram taken from the Users Guide PDF

Step 5: Determine which serial (COM) port you will use.

Go to Control Panel -> System -> Device Manager, and browse your Ports. If you have a serial port built in, it will most likely say Communications Port. If its a USB or PCI adapter, it may say something different. Try to determine which one you are using. Don't worry if you pick the wrong one, your servos just won't move, and you can try another port.

Step 6: Download and install MS Visual C#

Its a free download, and an extremely easy environment to program in. The example program provided is programmed in C#.

Visual Studio Download Page

Step 7: Download PololuServoExample

Extract it and open PololuServoExample.sln

Step 8: Set your COM Port, and Test it out!

First, set the COM Port to what you determined it was from the control panel. Then either put a number in one of the coordinate text boxes, and hit the Go button, or move the trackbar. The servo connected to pin 7 will move!

Take note that the Top Box and trackbar use pololu protocol, and the bottom ones use MiniSSC. You cannot switch between them without resetting your controller. You can do this buy turning off the power to the controller, and turning it on again.

Pololu mode has a MUCH higher resolution than miniSSC, and therefore you should use Pololu mode. But both examples are given just in case.

Take note that once you have added the serialport class to your project, turning the servos takes only 3 lines of code for both protocols:

Pololu Mode:

SerialPortClass serialPort1 = new SerialPortClass(); //create an instance of our class so we can access its functions
serialPort1.Pololu(comPort, baudRate, 7, servo, servoSpeed); //this function will move servo 7, at the quickest speed,
//via a certain COMport and baud rate


Thats it!

All your code is shown there. Notice that in the example program the declaration of serialPort1 occurs at the top of the form. If you need to access it from another form you could either declare a new instance, or make serialPort1 public.

If you have problems, try changing the COM port around. Also, you can increase the baud rate for quicker performance. I haven't had any problems at 38400.