12 July 2015

An Arduino/accelerometer controlled LED dance suit (2 of 3)

This is part 2 of a three part series on an LED light dance suit (harness?). It's Arduino-based, and the lights are controlled by the motion of an accelerometer.
- Part 1: motivation, result, and parts list
- Part 2 (this post): making the harness, board, and enclosure
- Part 3 (coming): code and further ideas/plans

This post will cover making the suit, board and enclosure. It's not a full instructable style explanation. I'll just show some details of the project for any who want to try and replicate something from it, or are just curious how it went together.

The harness
I'll start here, as it's the cruder of the components. I looked at a couple of thrift shops for suspenders, figuring it's the sort of item that surely gets donated but rarely purchased. Both that I checked didn't have any! I decided to just make something instead and picked up 3m of nylon webbing. I didn't want a stretch material, as the LED strips don't stretch and it might trash whatever attachment mechanism I used.

I would never do it this way again, but lacking a better idea at the time, I opted to sew a couple of loops around both sides of the LED surface mount packages. Horrible idea: cumbersome, ridiculously time consuming, not even a great hold, and likely prone to coming loose/stretching/breaking. In any case, this is what I did:

If and when I do this again, I'll opt for hook and loop of some sort, an idea I picked up at this awesome project.

For the harness, I wanted to add something besides just suspender straps, so I came up with the square in the middle (at the time was thinking sort of an Iron Man or Tron look):

For the suspenders and center piece, there are only two types of intersections. Nothing special, but just wanted to illustrate how I sewed these together.

1) Angled pieces that "bridge" from the center square to the edges
  • Simply put the angled piece behind the main side straps to hide the cut edge on the backside.
  • You end up with a parallelogram intersection, and I stitched around all four sides
  • I cut the back piece flush with the strap edge and singed it with a lighter
  • I'll also note here that anywhere I had any length of wires to run between LED pieces, I poked holes through the webbing and ran them on the backside as shown to hide them. A little seemed tasteful (like in the center square), but I didn't think long runs would look as good.

2) Angled bridge to corners of center square
  • I first constructed the square, just sizing it so that it would be long enough for a 3-light strip on each side. Overlapped at corners and sewed all four edges of the square intersection
  • Next, I lined up the bridge pieces with the square and "pinned" them to the square with a single pass of needle/thread. This way they could rotate, but were still attached.
  • I put on the suspender portion and held up the square/bridge assembly in the mirror. When it looked good (centered, all pieces reasonably taught), I used pins to hold the intersections in place and then stitched them permanently.
  • I started by hanging it at the top of the shoulders, verifying fit, and then attaching the bottom to pieces after putting it all back on

I ran my sewing machine by turning the wheel manually. It was definitely time-consuming and annoying, but my thread would break otherwise. I tried playing with the tensions, as this seemed to be the most likely candidate from reading online, but couldn't get it right. I can sew through a single ply of a cotton shirt scrap, so I think it might just be cramming that needle/eyelet through 3 layers of beefy webbing.

Just a quick shot of the attachment between the back and front attached to elastic/adjustment buckle/hardware:


I wanted two circuits of LEDs to eventually allow for toggling just the side straps or the center by themselves, an I wanted to run as little wire as possible behind the straps (more bulk, rigid section...). Here's playing around with some different patterns:


I ended up using the following. Above, I was trying really hard to keep parallel/series runs equal as I wasn't sure if it would affect the brightness at the beginning/end of each run. After fiddling a bit, I don't think it matters for something this short (30 LEDs on side straps, 24 use in center array):

The dotted line represents a run of wires from the power source behind the strap, linking up to the first diagonal "bridge" piece that supplies the center section. The dots represent soldered jumper wires between sections.

The board
I wanted the board to look super clean and well-laid out. I was also pretty aggressive on size, shooting for really small. This meant quite a lot of effort to optimize all the component placements so they would 1) fit and 2) look cool (hopefully). I was going to do this in software, but just didn't find it that easy. I looked at Eagle, perhaps kicad and another open source application, and fritzing.

Fritzing was great for components, as it has a great pre-populated library, but I really didn't care for it's connection drawing and part sizing/placement/orientation. If you try it, you'll see what I mean.

  • Components are always at an angle (not a top-down view), so they take up a ton of room and hide anything behind them.
  • Trying to draw connections with all right angle bends (remember, I'm trying to keep this neat looking), is really tedious. If you move things, you might lose a connection/intersection between sections of your bent path. Then you have to reconnect them.
  • You can't seem to make right angle bends if you're not actually on a PCB or breadboard template.

In the end, I just took to drawing prototype layouts on graph paper, using each grid as a 0.1" space between solder holes on the board. This was great; I was able to quickly try a lot of different layouts until I found what I liked best:

Trying to keep MOSFETs near their associated pins

Having MOSFETs against bottom long edges

Who knows...

The final design, with audibles called afterward for the encoders/switch

You can see that initially I was trying to just put those MOSFETs near the pins that controlled them, however the layout I ended up with was more tidy with respect to having to cross wires over each other. I can't recall if I really planned it or not, but the MOSFETs off to the side gives me space for the nice encoder/switch placement in the lid. They protrude a good deal below the lid, and the MOSFETs would have made it impossible to get them in there.

The DIN connectors were quite challenging to wire up. Lots of patience required! I knew I needed to clear the MOSFETs with the cover, and needed a little space below the board for wires and clearance between it and the back plate. I also knew I wanted the enclosure ~1/16 - 1/8" bigger than the board. I used some scrap wood cut to allow for these dimensions to hold the connector at the right height while I bent up little jumper wires to solder in. Here's the connectors soldered and in the scrap wood:


Here's the near-final board soldered up (just no encoders/switch at this point):

The bottom isn't quite as pretty...

At this point, things between the board and enclosure became a bit symbiotic, as I couldn't place the encoders/switch without knowing how high the enclosure walls/lid were going to be, where the holes in the lid would be placed, etc. But I couldn't drill holes in the lid without knowing how the board would sit, constrained/hanging by those connectors. Since I'm focused on the board here, I'll just let you know the above happened and that this was the final wiring:

Note the red electrical tape on the switch and far encoder. You might not be able to see it, but there's also a small piece on the top of the 16MHz crystal. Things got pretty tight, and I didn't want to risk inadvertently jumping neighboring MOSFETs together via the metal on the encoder/switch, or solder lugs on the bottom of the switch via the metal case of the crystal. I wanted to use clear electrical tape spray, but I was getting close at this point and just didn't feel like taking the time to spray a puddle somewhere an dab it on with a Q-tip...

The enclosure
This was probably the most fun, and best result of the project. I was originally targeting an Altoids tin as my enclosure. After making some progress on the board and realizing how big it would turn out, particularly in height and length with the connectors, I started having second thoughts. Plus, the tin just felt a bit too flexible on the top and bottom for something like a knob or switch. I bought a couple of cans of sardines, as I recalled those to be pretty rigid containers... either my childhood memory is bad, or they've cut costs on sardine cans over the past ~15yrs. They were pretty flexible, too.

Then I started thinking wood. Wood has it's perks in that it's easy to work with and available. The main downside is that it's so heavy/thick compared to other materials. I could have planed or sanded mine down, but that amount of work just wasn't worth it. The scrap I had around was some Goncalo Alves that I picked up from the amazing scrap bins kept at my lumberyard: Forest Products Supply. I hadn't had an opportunity to use it for a cribbage board, so I decided now was the time. And wow was it more beautiful than I ever expected.

You saw the prototype ends above, which I used to make the final pieces as well. I found it was easier to cut the recess first, then cut the piece to length. I used simple mitered corners, but probably would have used rabbeted joints if I had a router table. I glued everything up and clamped it with rubber bands. Worked like a champ.

I drilled holes for the top and back covers, and drilled/tapped them with a #4-40 threads. I did this before finishing, and even before some rough work, so that I could pin them together and sand everything at once to keep it all aligned. Sort of like this, but without the board in there:

I hunted around for some time trying to find some really small machine thread inserts that I could use to avoid using machine threads directly into wood. No real luck. They make inserts, but I was amazed at how thick the walls were! In other words, you'd need a relatively huge hole in the wood to receive the male threads of the adapter, just to let you attach a teeny little 4-40 machine screw. Somewhere along the way, I picked up a tip to drill the hole, coat it with super glue, and then tap it (possibly doing a second super glue coating and re-tapping). This is what I did, and the theory is that the wood soaks up the super glue to give it some hard/toughness and not chip out via tapping or simply inserting the screws.

Here's the sides/back before finishing:

For finish, I opted for some automotive 2-part clear coat. I wanted a super shiny, mirror-like finish. Trying to read about doing this is quite tough. There are a lot of opinions about using automotive clear on wood, and in both directions. I asked a former automotive paint rep, and he said he'd been using clear on wood for years. Good enough for me!

This was right after painting (clear is still tacky):

For the lid, I googled things like "clear coat on polycarbonate" or "clear coat on acrylic" and found a thread claiming that ~600-800 scratches would disappear once cleared. This is critical, as you don't get good adhesion to polymer without scuffing, but scuffing clear polymer makes it look cloudy (as shown above). I wanted a nice design of some sort on the cover, so needed to paint it, and thus scuff it. But if the scuffs didn't come out with the clear, it would all be for nothing.

I took my chance and masked a pattern I came up with just fiddling around. I wanted it to look sort of electronic, but also to resemble an equalizer/music impulse looking thing. I was pretty happy with the result. After I pulled the masking tape from the red, I cleared over everything:

Then came wet sanding and buffing. Paint collects around any hard edges/corners, so you need to wet sand and flatten it out. I did that with 2000 grit WetOrDry, followed by 3000 and 5000 grit 3M Trizact, followed by steps 1-3 of the 3M Perfect-It buffing system. Turned out amazing, and here's the final finish on the wood:

Everything still looks pretty good, but it's a month later and compare the above to the pictures from part 1:

See the little dots in the reflection of my ceiling lights? That's the wood grain showing as a texture, and I think it's the result of continued solvent evaporation from the clear coat. They say clear coats take a good 30 days to full harden and do their thing. I'm thinking if shrinking is involved, it's conforming to the wood grain more, causing it to show.

This view is good to point out the clear elastic cord stuff I stole from my kids' necklace making kit to use for belt loops. It's just threaded in/out of those four holes and tied on the inside. The four tiny holes with nothing in them were meant to mount the board to the bottom using some polymer spacers between the metal plate and board. In the end, the holes were off and the board is held plenty well as a result of the 17 wires soldering it to the connector plugs, which are screwed to the box.

Odds and ends
I started with the sorts of 9/15-pin connectors I could find at the surplus store and just hacked away until I liked them. For example, here's the blue 15-pin connector that's on the suit itself:

Cutting off tabs and sanding

I also wanted to keep the encoders and switch straight/square with respect to the lid edges while tightening on them from the top. But I couldn't hold the nuts on the inside of the box for the connector plugs with the lid on... how to accomplish both attaching the board and the encoders/switch!?

I took to scuffing a washer/nut for each connector screw (4 sets) as well as the wood around the hole from the inside. Then I popped in the board, put screws through the outside connector mounts, and actually glued the washer/nut to the wood on the inside with a 2-part polyurethane. After I knew it was cured, I removed the screws. Now I could blindly attach the board from only the outside without having to hold the nut on the inside, allowing me to pre-attach the lid to the board.

Here's a shot where you can see the washer/nuts glued to the inside of the box on the far connector through the lid:

And from the outside it's just a couple of button head cap screws:

Notice how I have a 9-pin connector for the power side, but only use 3 pins during use (GND, +6V, and +12V). You might also notice from the pics of the bare board that there are more than three wires soldered to it. Well, to flash an atmega328 on a board, you need to connect an Arduino with it's chip removed to some of the pins on the standalone board. For a breadboard, this is easy enough, but I surely didn't want to have a bunch of loose jumper wires permanently attached to the board to program it. Or solder/de-solder connections each time.

I used the spare pins to give me access to the reset and TX/RX pins of the atmega328. When I want to program it, I use some jumpers where I have 18ga leads (about the size of the DIN pins) soldered to 22ga wires (Arduino's header size). I thought this was pretty clever :) These yield the following setup for programming (yes, the soldered connections are now heat shrinked!):

And that's it for the build. Next, we're on to the code and some future ideas/plans. Check out part 3 (coming soon) if you're interested!

No comments:

Post a Comment

formatting help: <i>italics</i>, <b>bold</b>