cyborg ring

cordwood + smt + jewelry + blinkies + zinc-air batteries

Similar projects worth following
This project evolved from Splinter, the SMT cordwood project I did last summer/fall. The ring is powered by tiny size 10 hearing aide batteries which should give 4-6 weeks of intermittent use, once I come up with a design that doesn't break after a few days of wear and update the firmware to put the ATtinyx5 to sleep. The first rev (labelled 'blink-ring') used deep red 650nm LEDs. Searching for particular component lengths gave me an excuse to use strange 0508 resistors. And somehow, this is my first Charlieplexing project. Yaay novelty soldering!

  • OSHWA certification, much better documentation

    zakqwy11/07/2018 at 18:42 0 comments

    OSHWA certification. Yay! The cyborg ring is US000141. That means as of this posting, I'm responsible for around 4% of all certified projects. Wait that is bad, it means more people should get certified. Certify your projects! Don't let Open Source Hardware become a stupid marketing term (or at least, continue to be that).

    I also did a major documentation update which can be seen in the in the GitHub repo, available here. The repo now contains all the instructions of record, and will likely be the thing I update first whenever I get around to a fresh cyborg ring iteration. But I'll keep this project updated too, so don't worry.

  • build live stream recording . . . and kits . .

    zakqwy10/10/2018 at 04:17 0 comments

    I did a live stream of a ring build and it went pretty well. Certainly better than the first recording I made. Just shy of two hours with shitty audio:

    Also, I made ten kits. 

    they are simple but hopefully well instructioned enough for an intermediate solderer to enjoy over the course of an evening or two. also they come with lots of extra parts.

    goodbye kits. enjoy the protection offered by my favorite corrugated box:

    more on this development in a few weeks...

  • slack group!

    zakqwy07/20/2018 at 14:40 0 comments

    A few folks on Twitter ordered PCBs and wanted to start a cyborg ring build slack channel, so I obliged. Link to join, if you are interested:

    I think this invite expires in a month, so.. if you read this afterwards, remind me to update it!

  • A wild ring, plus a better diagram

    zakqwy06/04/2018 at 19:23 0 comments

    @F0cks built a cyborg ring and proposed to his girlfriend! Awesome. He made a few excellent improvements (sized down to 6.5-7, programming pads on one side, etc); check out his excellent build log here:

    Also I added a programming diagram to the repo, as the previous text description was difficult to follow. And wrong.

  • Design files released!

    zakqwy05/17/2018 at 20:25 0 comments

    CC-BY-SA 4.0

    Someday this will end up on Crowd Supply as a kit, but if you're impatient.. have fun!

  • assembled, put to sleep, in daily use.

    zakqwy05/05/2018 at 15:59 8 comments

    I assembled the new ring version some time ago but didn't get a chance to putz with the programming until now. Gross, programming. But yay, yellow LEDs:

    Used a pin change interrupt on the button to wake up the t85; previously, resting current draw ("resting") was nearly a milliamp which nuked the batteries in a few days. Now down in the microamp range, which should make Zn-air life the limiting factor (4-6 weeks depending on use):

    Note that I kept the pogo rig together but soldered wires on for iterative programming. It's fussy to repeatedly align.

    Reinforcement wires worked like a charm. I took a few traces dangerously close to the PCB edge which bit me this time, but nothing a few jumpers couldn't fix:

    The ring also has a bit of conformal coating, and I used the largest spring tabs from the previous order (A108284CTs). Assuming the ring doesn't break in the next week, I'll wear it to Teardown. 

  • some next rev freshness

    zakqwy02/01/2018 at 23:25 10 comments

    I intend to tackle a few problems with this revision. None of the changes are huge, and thankfully didn't require any rework in Inkscape and only needed a bit of re-routing.

    First, none of the battery contacts I ordered previously really worked. I tried a few flat gold-plated plates (they lacked any 'give'); various bits of RF gasket material (unreliable connection due to size, I think); and wimpy spring-loaded finger joints (batteries fell out). Here they looked in my Digi-Key cart:My experience with the gaskets in particular leads me to believe that a soldered-in solution is best here. The batteries measure 3.45mm long but the spec suggests this can vary between 3.30 and 3.60mm, so I need a solution that covers a reasonable range. I considered using a stubby pogo-type pin, but it would need to be thru-hole soldered and would probably stick out a bit. So I selected a variety of spring clips:
    Datasheet quality varies here; some give recommended closed height, some give typical force numbers, etc. I selected the six specimens above based on these bits of info where available, and otherwise based on uncompressed heights in the 1.0 - 1.3 mm range. Since the footprints vary a decent amount, I also changed the battery cathode pad to a fully exposed copper disc like the anode.

    Second, I fixed that stupid capacitor pad that required a minor bodge to get the LEDs connected. I took another look at the PCB layout and I clearly hand-labelled the netlist incorrectly on that pad:
    Serves me right for not including the structural caps on the schematic. Manual netlist stuff is never a good idea, it's just asking for trouble down the road. Fixed, with fills displayed:
    Third, I need to add some tensile strength -- the 0805 resistors in particular come apart quite easily. I'm using lengths of 30 AWG wire wrap wire as reinforcements. The wire should be 0.254mm diameter (my crappy calipers suggest less, but... I believe the spec), so I added some slightly larger plated through holes in strategic spots:
    None of the wires (8 in all) are electrically connected to anything, so it won't matter if the battery slides around a bit and hits one. During assembly, I'll rig up some kind of scheme to keep the wire under tension during soldering. Mechanical strength is really important, especially when changing batteries!

    Boards are ordered. They should be here in a few weeks, at which point I will post an assembly log.

  • assembly, breakage, next rev plans

    zakqwy01/25/2018 at 23:29 4 comments

    I used OSHpark's 0.8mm / 2oz double-sided service to save a bit of width on the ring. When the boards arrived, they were nicely routed but required a decent bit of clean-up with a file as mousebites aren't nice to fingers:

    Note the holes on each positive battery contact; these are Zn-air cells, so the vents should be exposed to the atmosphere.

    The circuit includes two board-to-board jumpers along with four high-resistance structural resistors, all made from standard 0805 components. I pre-assembled these on a heat-resistant surface (in this case, my PTFE-jawed Stickvise):

    Easiest method here is to carefully align the two components with tweezers...

    ... dab a tiny bit of flux at the junction...

    .... and touch the junction with a tinned iron tip.


    Once I had the 0805 jumpers sorted, I started soldering the vertical components onto the switch side of the ring. I followed my standard SMT soldering procedure here: a drop of flux on the pad...

    ... careful alignment with tweezers...

    ... and a touch with a tinned iron tip.

    The same procedure works for the QFN ATtiny, too, although the iron 'touch' turns into more of a 'scrub'. If this doesn't make sense, I made a QFN hand-soldering video a few months ago that explains the concept a bit better. Note that in both cases, holding the part near the bottom helps a lot to ensure the component is square. Practice makes perfect...

    Examination through the loupe ensures we've got a good fillet (not yet defluxed...):

    The rest of the parts go on in a similar manner. The LEDs live on either side of an 0508 stubby resistor, so I soldered these onto each side before mating the halves, as shown in this picture from an earlier log:

    [keen observers will notice that this is a different copy of the board with the QFN rotated 90 degrees. This was wrong, and I actually had to rework this component after the two halves of the ring were assembled. Yes, solder braid can work miracles.]

    Since the batteries are a bit under 4mm tall -- more like 3.3mm, give or take -- I used a set of tiny spring tabs to fill the gap:

    [yes, I didn't really plan the PCB footprint around these tabs, so they hang over a bit. And the QFN definitely needs to be straightened out. Soldering under the camera is a pain.]

    These worked for a time, but eventually the batteries fell out; the tabs plastically deformed after a few insertions and eventually broke. During one of the periodic tab tightenings I attempted over the course of a few days, I pried a bit too hard and the back of the ring actually broke. It seems that I need to treat 0805 resistor stacks like unreinforced concrete columns -- not so great in tension, as the caps tend to pop off:

    Fortunately none of the pads were damaged, so I replaced the resistor jumpers with lengths of wire. I used tiny scraps of self-adhesive conductive RF gasket for the batteries, which seems to work but still doesn't seem ideal:

    Just popped in a new set of batteries, so I'll wear the repaired ring for a bit and see if any other weaknesses pop up. I'm starting to make a list of improvements for the next rev which I'll share next time, as this log is already long enough.

  • more (specific) design notes

    zakqwy01/18/2018 at 16:54 3 comments

    I started this project by measuring my wedding ring. I like its form factor and it fits well enough, and the wide curved stone on the top seemed like a nice element to replace with LEDs:

    That got me in the ballpark; my fingers are all different sizes and I figured the PCB edge wouldn't be nearly as accommodating as a smooth gold band, so I decided on a ~19.5mm opening. After creating initial footprints in KiCad and pulling them into Inkscape (via *.svg export), I putzed about for a few hours and came up with a reasonable PCB outline:

    A few things to note here:
    • I'm using Inkscape, not a nice parametric CAD program that allows dimensioning and complex constraints. As such, I depend heavily on guidelines and snapping to ensure dimensional consistency and (in this case) symmetry. Like all things, using this tool rather than something like Fusion360 or FreeCAD is a tradeoff.
    • I tend to design organic shapes using the minimum number of points possible; in this case, the ring outline has 8 nodes, six of which are smooth. Again, I used guidelines to ensure node alignment and approximate handle positioning. But if you zoom in close enough, the ring isn't perfectly symmetrical.
    • I keep critical footprints in their own layer, and move them around as needed to get other dimensions correct. In this case, those footprints are mainly the batteries (the large red circles, one of which has a large hole for the Zn-air vent), the side-mounted pushbutton switch, and the LEDs. Note that the LEDs are linear-spacing-equalized but not rotated to final position; as fas as I can tell you can't do circular arrays in Inkscape, and in any case I wanted KiCad to identify them as discrete footprints rather than an imported graphic. The critical dimension here was width, so I used one footprint as a rough ruler and rotated it as needed to approximately equalize clearance between the inner and outer edge cut.
    Once I was satisfied with the profile, I printed it out at full scale and glued it to a piece of cardboard for a fit check. This would have worked well if I had a laser cutter for the inner line; it was difficult to precisely cut the circle but I was able to verify that the ring was roughly the right size. And finally, since KiCad doesn't like Bezier curves, I copied the outline to a new layer (in case I needed to modify the original down the road) and cut it into tiny straight segments:

    I then imported the outline as a *.dxf file (twice) into KiCad and got the two halves aligned on the same grid:At some point, "the perfect is the enemy of the good" applies here. I added centerlines and moved the respective outlines until they were aligned within 25 microns or so, but they aren't perfect. It doesn't really matter. Next, I created a circular array of LED footprints (again, twice...), tweaking spacing and radius until they seemed to fit nicely:

    Note that I added the specs to the PCB comment layer, and manually named each LED footprint to its appropriate net. Then I deleted all the originally imported LED footprints. Probably a simpler way to do this, but it worked for me.

    Routing was straightforward. I arranged the Charlieplexed LEDs in such a way that I minimized vias and was able to run the four signal lines as four pours around the skinny part of the ring, which avoided awkward jointed traces:
    Note the four 0805 footprints above and below each of the side pours -- these were added post-netlist for the 20M structural resistors. I used a high value here since they short out the LED signal lines; I suppose I could have pushed the pours to the outside of the ring, but this worked well enough. This also caused one screw-up, as I improperly specified one of the front-layer pours resulting in an unintended gap:
    After assembly and programming and still not being able to light up the center four LEDs, I discovered the problem, scraped away a bit of solder mask, and added a blobby bridge:

    Good enough. And yes, the ring does tend to pick up glove fuzz (seen on the LED), but...
    Read more »

  • design process notes

    zakqwy01/16/2018 at 19:51 0 comments

    I build weird PCBs. Most include copper- and mask-layer graphics, and they often feature complex routed outlines beyond the normal 'this-needs-to-fit-in-an-enclosure'. My tools of choice are Inkscape and KiCad, following a clunky but effective workflow:

    I usually lead with KiCad: throw together a preliminary schematic, make footprints as needed, pull them into Pcbnew, right-click-global-spread-and-place, and export the grid of components into Inkscape. Starting this way ensures the graphical work gets done at scale; most graphics and board outline decisions are bounded by component sizes so it's nice to have this in place up front. Then I put together a first pass at graphics and board outline, export to KiCad, and start high-level routing. Inevitably this results in numerous minor changes that drive the iterative loop until I get sick of the process and send the board out for fabrication. It's no PCBmodE, but I don't think I could live without real-time DRC and push-and-shove routing.

    Fundamentally, this process doesn't change with SMT cordwood construction beyond a few extra considerations.

    First, cordwood design is confusing. You are designing a circuit in which every component is split in half on the schematic, so it's a lot to keep track of. Between this project and #Splinter, I have found that (a) drawing the schematic (and potentially testing the circuit) in a conventional manner is helpful; and (b) keeping components precisely laid out across from their counterparts is a necessity:

    As you can see, I've made a few schematic symbols that are specifically designed to minimize confusion; they even look like they're supposed to interlock across the gap. Remember, KiCad knows how to handle routing on a single PCB, but you have to keep track of routing between the two boards. Note that this means you can't just drop GND and VCC labels everywhere -- keep them on one side if you use them at all!

    This layout strategy extends to the part placement process, since opposing boards must be inverted and perfectly aligned. The strategy here is to sort parts into two piles, flip half to the back side, align the two PCB outlines to the same grid, and use comment-layer lines and visual cues to ensure component alignment:

    Second, component selection is driven by component length in addition to the usual myriad of other characteristics that one finds via parametric search. SMT cordwood doesn't have the luxury of component leads to absorb small differences between components; everything has to be pretty much spot-on. In the case of this project (and #Splinter for that matter), the key gap of 4mm is based on the dimension of the QFN version of the ATtiny85. Why this part?

    Beyond the general excellence and simplicity of the ATtiny series, the QFN version of the ATtiny85 in particular is great for cordwood construction because it uses a 20-pin package for an 8-pin part. Atmel wisely chose to only utilize pins on two opposing sides of the package, meaning one can access the chip's full functionality in a cordwood design (using a jumper wire for the ground pad, which seems to work without tapping Pin 8). Furthermore, QFNs have square edges, meaning one can solder the chip to half the board and be fairly confident in its alignment and mechanical strength:

    [above, the resistors marked '106' are 10M each -- effectively insulators for the part of the circuit they short out. They are purely structural elements. The resistors marked '0', on the other hand, are jumpers and quite important for circuit operation!]

    Once this chip was selected, I worked backwards using Digi-Key's parametric search and a good bit of datasheet examination. I'll put up a Page later on with an updated list, but for now my 4mm span cordwood compatibility guide looks something like this:

    • 4mm QFN (i.e. ATtiny85)
    • two 0805s, end-to-end (resistors, capacitors, or LEDs)
    • one 0508, one 0603, and another 0508, all...
    Read more »

View all 10 project logs

Enjoy this project?



morgan wrote 01/16/2018 at 21:04 point

Nice work Zach!

  Are you sure? yes | no

zakqwy wrote 01/16/2018 at 21:55 point


  Are you sure? yes | no

Mike Szczys wrote 01/16/2018 at 17:38 point

Wow, fantastic execution Zach. I love it!

  Are you sure? yes | no

zakqwy wrote 01/16/2018 at 20:29 point


  Are you sure? yes | no

Mike Szczys wrote 01/16/2018 at 21:33 point

This really is some black magic... "purely structural" SMD resistors? You've added more details since I looked last and I'm still just flabbergasted by this hardware art.

  Are you sure? yes | no

Ted Yapo wrote 01/16/2018 at 02:19 point

Light emitting diamonds? :-)

  Are you sure? yes | no

Jarrett wrote 01/16/2018 at 00:43 point

If you want to bring it back around to its "bare metal" roots, call it Ring0

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates