Getting Itty Bitty With The Ice Breaker 2.0



About eighteen months ago (jesus, was it really that long?), I made the “Ice Breaker“, a small persistence of vision toy worn on the hand that displays “HELLO” or “GOODBYE” when waved back and forth.  It contained a “ghetto” accelerometer that determined the frequency and phase of the user’s hand motion and drew apparently stationary text on the forward swing.

Before the QR Clock, I was planning on turning this into the first commercial Ch00ftech product.  It’s a super small and relatively low-risk circuit (unlike the clock), which makes it great for the purpose.  I figured that with some clever engineering, I could get the bill of materials costs down to a minimum and improve the functionality while I’m at it.

Still not sure if I want to go through all the work of selling this thing since I’m still nursing my wounds from the QR clock experiment, but I thought designing it for such a purpose posed an interesting challenge.



The original Ice Breaker had a number of features that would make it very expensive to manufacture.  The biggest problem was the ghetto accelerometer.  Taking a tip from a similar device that I reverse engineered, I built my “accelerometer” using a drinking straw, a wad of paper, and an infra-red proximity sensor:


This whole system utilized the inherent properties of a mass inside a tube to function.  The wad of paper only moved when the retrograde acceleration was large enough to overcome friction.  It’s actually super convenient because it works out that the paper only moved at the absolute edges of the waving motion.

This solution is much cheaper than an accelerometer when you have access to the tools required to mass produce a plastic housing, but I’m not going to make thousands of these if I end up cutting up and gluing drinking straws for each one.


I wasn’t sure how exactly this part would behave in the context of a waving motion, so I ended up building a small breakout board that would let me run some experiments.  The part is a “Land Grid Array” (LGA) package which means that there are no leads and the solder points are on the bottom of the part; the pitch between pads is also very small (.65mm).


It’s gotten to the point where I’m pretty sure I can do anything with my current fab methods





This was good because all I would need to do is look for times when the accelerometer’s voltage dropped below around .75V to  locate the beginning of each cycle.

Satisfied, I moved on to the rest of the circuit.

On the Cheap


A lot of people don’t realize this, but it’s not very uncommon to see physical interface items like switches and plugs dominate the pricing of a BOM.  The double pole triple throw switch that I used for the original design which acted as both the power and mode switch cost a whopping $1.33 which places it a good $.20 above the microcontroller which…y’know…actually has the millions of transistors and does all the magic.

I replaced it with a simple tactile switch that lopped a good dollar off the price of the original.  Unlike the original switch, I wasn’t able to route power directly through this one, so I opted to use the technique I developed for my Longboard Display which involves sleeping the circuit when it’s not in use and waking it up from a button press.

One other area where I was concerned about manufacturing costs was the actual mechanism that holds the device on the user’s finger.  I ended up opting for two simple pieces of wire creating a finger loop.

I was originally planning on using some kind of thread, so I wasn’t too worried about the solder properties of my holes.  These holes doubled as ground plane vias, and they were printed with no thermals.  Thermals are the little gaps around solder points that help slow the flow of heat away from the solder pad.  Without them, it’s often too hard to heat up a pad hot enough to melt solder.


If I were to sell these, I’d probably leave it up to the end users to find a way to attach it to their fingers.  I might widen the holes a bit to help them.




Without access to a hot air gun at home, soldering the microcontroller and accelerometer wasn’t trivial.  I’ve done reflow soldering before, but this time, I couldn’t find a solder stencil for the packages I was using.  I read somewhere online that reflow soldering can be pretty forgiving, so I opted instead to just apply it by hand.

I purchased some “Chip Quik” solder paste:


And carefully placed my components on top:



Now, It wasn’t totally perfect.  I applied way too much paste which ended up creating a few shorts:


I imagine the precision of a good solder stencil is very important when you’re making hundreds or thousands of something, but I was excited to find that for small hobby projects, a toothpick and 5mL of paste will go a long way.


Still, I managed to shave the board area of the current design down to 65% of the original and that’s not even counting the space taken up by the drinking straw!


Unsurprisingly, the schematic is very simple, though there are a few notes I’d like to share.

R2 and R3 aren’t meant to be stuffed at the same time.  It’s always kind of disorienting trying to make sense of exactly how the output of an accelerometer will work.  Just take a look at this page from the datasheet:

Easy, right?

I figured that there was a fairly high chance that I’d mix up X and Y and mount the accelerometer at a 90 degree angle to where it needed to be, so I gave myself some options.  It’s not like I’d be able to do rework on a part that hides its terminals underneath it.  As it turns out, R3 was the correct stuffing option.

R13 is used to hold the accelerometer in standby mode when it’s not in use.  This drops its current consumption down to just 5$$\mu$$A which when added to the 2$$\mu$$A of the ATTiny gives me about 1.5 years of standby time on the 90mAh capacity of the CR2016.  This isn’t quite as amazing as the 13.6 years of the longboard display, but considering it’s powering more components with a smaller battery, it’s still pretty impressive.

Everything else you’ve seen before on the original Ice Breaker.

User Interface



The device can store eight twelve-letter patterns which it indicates by lighting up one of the eight LEDs when it’s at rest.  It could actually store a lot more than that, but I figured that most people would be displaying short messages anyway.  Besides, working the 8 LEDs into some mode that could indicate more than 8 patterns in a user friendly way is problematic.  Yes, I know what binary is, but a lot of people don’t.

When first powered up, the device is populated with 8 standard messages.  I haven’t decided what they should be yet, but of course “HELLO”, “GOODBYE”, “YES”, and “NO” will be included.  If you have any more recommendations, let me know.


I was originally planning on programming functions for “double tap” and “triple tap”, but I realized that they would interfere with the fact that the user is going to want to push the button as fast as possible to roll through the alphabet.  I even considered utilizing the accelerometer to have the user shake the device while holding the button down, but I quickly found that people have much more precision when pushing buttons than when shaking their hand.

The “cursor” is just a bar that replaces the current character every other cycle.  I went through a few different options such as having the letter disappear entirely every other cycle or inverting the letter’s colors, but I found that this method was the most visible especially considering cases like selecting a blank space:

The cursor still isn’t perfect though.  Depending on the lighting conditions, the users might wear themselves out just trying to figure out which letter they’re editing.  This is why I included the “clear current pattern” function.  It’s actually fairly easy (if time consuming) to enter an entire word without looking at the device if you keep everything straight in your head.  I figure that the user will just clear out the whole word at the first sign of trouble and start over rather than try to repair it.

Likewise, when editing a letter that’s already filled, pressing the button once always changes it to “A” no matter what letter was there before.






Not even close…







I couldn’t think of a more efficient way to draw W or G which are 7 pixels wide.  Most of the  other letters are 6, but some like S and of course the punctuation marks are smaller.  Using a fixed width font would totally destroy my kerning as I’d need to have enough space for a W in every letter slot.







The PCBs would be basically free.  They’re slightly more complex than the QR clock PCB, but they’re only 1.6% the size.  If I get them V-scored or tab routed and cut them apart myself, I might save a lot of money.

If I were to try to sell these, the most expensive part would probably be assembly.  After my very negative experience with Myro, I’m not exactly willing to dump a lot more money into foreign assembly houses unless I get a really solid recommendation.  Some quotes I found for domestic houses however put the assembly costs at around $8 a unit for quantities of over 1000.  Sort of demolishes my margin, doesn’t it?

I’ll keep poking around, but I really think a gadget like this has a good market if it’s sold for $10-15.  Until I can get it down to that price and keep my profit margin, I think I’m going to just sit on it.


Looking Forward

This project is sort of on the side burner at the moment.  I’m pretty proud of how polished the whole thing is, but at the end of the day, it’s not super useful.  The “HELLO” and “GOODBYE” features are fun, but programming custom messages can be downright tedious, and at twelve letters a pop, nobody’s going to be writing a soliloquy.

It was still a lot of fun though.  It’s certainly the smallest circuit I’ve ever built, and I’m sure I could make it even smaller if I had the right batteries.  Solder paste is something I’ll certainly be using in my future projects, and I want to try to start using smaller component packages to really cram stuff together.  Maybe even 4-layer boards?

If I were to sell them, I’d also need a better product name than “IceBreaker”.  I’ve got a few prototypes lying around, best three product name suggestions in my inbox get a free prototype mailed to their door.

Project files can be found here: IceBreaker 2.02

15 thoughts on “Getting Itty Bitty With The Ice Breaker 2.0


  2. I really enjoy reading your project write-ups–thanks for taking the time to write them!


    Also, at least for an initial release I think you might be surprised by how much people would be prepared to pay for a “toy” like this. Like many of the hacker persuasion I’m a cheapskate but apparently not everybody is, so you might still be able to make this work at a higher price-point like $20. (Perhaps a Kickstarter..? 🙂


      If I were to sell them, it’d want to learn how to “do it right” with a custom enclosure and a super cheap low-quality PCB.




    Just a thought. Seeing as you are already using an accelerometer which maxes out at 2g, couldn’t you implement a tap-to-change letter system (left towards ‘A’ – right towards ‘Z’ to make it quicker and more intuitive. I know you thought about waving left and right to do it and surely the implementation would be the same?

    • Interesting idea. Determining a “tap” would require a little bit of signal analysis though considering you have to determine the difference between a tap and a shake. It might make for a fun challenge. I might give it a shot, but I’m still not convinced it’d be easier than a button.


    • Like almost all of my projects, I’ve linked to the project files at the bottom of the post. Your eyes must have passed right over it! 😉



        avrdude: reading input file “main.hex”
        avrdude: input file main.hex auto detected as Intel Hex
        avrdude: read from file ‘main.hex’ failed

        I’m assuming that I did something wrong while compiling your main.c file, but I can’t figure it out. What was your compiling process. and is there a chance that you could post your finished main.hex?

        • Oh crap, I discovered this problem and forgot to update the files. The schematic lists the ATTiny24 which has 2k of flash. You actually need the ATTiny44 which has 4k. Your part doesn’t have enough space! I did the same thing when I ordered parts to stuff the rest of my order and ended up with a bunch of ATTiny24s.

          Sorry about that!

Leave a Reply

Your email address will not be published.