Propeller Powered Costume Element Controller
JonnyMac
Posts: 9,105
A tad out of focus, but this little dude can read four PWM outputs from a wireless DMX LED dimmer and turn those values into animation and brightness controls for a costume element that uses APA102C LEDs.
The good news is that the DMX device uses open-drain outputs so I just chucked pull-ups on four pins and used counters to read the inputs. I've attached my Spin-only (no PASM required) code for reading PWM. The only requirement is that the sample window is at least 1x the PWM period, and should probably be a multiple of the period. In my case the PWM frequency is 20kHz so I used a 5ms sample window. This also works well in that DMX updates outputs every 23ms, so I'm sampling 4x times between DMX updates -- it's plenty responsive.
The costume element has strips of LEDs, the longest being eight pixels. The original device simply divided the 0..255 range into eight zones -- the output looked a little chunky, and sometimes fluttered around pixel-to-pixel threshold values. Rick (yes, Galinson, the paintball mini-gun guy) asked if I could fade in/out LEDs to create a smoother look. It took a little work, but it looks great (excellent call on his part). The controllers and new LED PCBs have been installed and everything looks great. Rick did a fantastic job with new mechanical pieces. Everything looks better, works better, and is serviceable.
Since ObEx wouldn't seem to let me post new objects, I've attached my PWM reader and APA102C objects here. Funny, I wrote the APA102C object for another movie project.
The reason the carrier PCB looks a little funky is that I etched it in my kitchen. For simple boards -- especially when there is an emergency -- I use the system from PCB Fab-In-A-Box (https://pcbfx.com/). Thus far I've only done single-sided boards, but I'm going to attempt a double-sided soon. It's great for emergency projects like this.
The good news is that the DMX device uses open-drain outputs so I just chucked pull-ups on four pins and used counters to read the inputs. I've attached my Spin-only (no PASM required) code for reading PWM. The only requirement is that the sample window is at least 1x the PWM period, and should probably be a multiple of the period. In my case the PWM frequency is 20kHz so I used a 5ms sample window. This also works well in that DMX updates outputs every 23ms, so I'm sampling 4x times between DMX updates -- it's plenty responsive.
The costume element has strips of LEDs, the longest being eight pixels. The original device simply divided the 0..255 range into eight zones -- the output looked a little chunky, and sometimes fluttered around pixel-to-pixel threshold values. Rick (yes, Galinson, the paintball mini-gun guy) asked if I could fade in/out LEDs to create a smoother look. It took a little work, but it looks great (excellent call on his part). The controllers and new LED PCBs have been installed and everything looks great. Rick did a fantastic job with new mechanical pieces. Everything looks better, works better, and is serviceable.
Since ObEx wouldn't seem to let me post new objects, I've attached my PWM reader and APA102C objects here. Funny, I wrote the APA102C object for another movie project.
The reason the carrier PCB looks a little funky is that I etched it in my kitchen. For simple boards -- especially when there is an emergency -- I use the system from PCB Fab-In-A-Box (https://pcbfx.com/). Thus far I've only done single-sided boards, but I'm going to attempt a double-sided soon. It's great for emergency projects like this.
Comments
Very Nice!. I look forward to seeing this in action.
That looks like a Prop Mini on top of your custom board which seems to keep things in a very small foot print and easy to hide.
Do you have any more cool movie stuff you can share? Is there a time limit on sharing something you've worked on that was in production?
Per the Adafruit description:
I think that what Jon's new software addresses.
Indeed, it is. We had to fit this into the same space as the Arduino Mini that was in the original piece. In this case, I oriented the headers vertically so that the assembly can lay on its side on one end of the DMX receiver. Since the receiver has four channel outputs, I made a 4-channel board.
Yes, higher PWM frequency is better for the movie business (especially slow-mo shots where the frame rate is over-cranked) and the APA102C strips come in white-only variants (warm and cool). Some lighting fixtures combine warm and cool strips with a balance adjustment to set the color temperature without gels.
Well, I often write bits of code for people and have no idea where it lands until someone tells me. In this case, I was asked to create a PCB for the costume piece. The original uses APA102C strips glued to a piece of craft paper and then soldered together with wire-wrap wire. This was embedded into an assembly that is mounted on the costume, but had problems. Since there was a break for Christmas and Rick was hired to fix the mechanics, he asked the shop to use me for electronics. For the lighting piece I drafted a proper schematic and designed a PCB using the mechanical plan Rick sent (this was taken from his 3D model). I sent the files to GoldPhoenixPCB on Monday morning, had them back on Friday afternoon, did a bit of toaster over reflow soldering on Saturday morning, and then took them to Rick who was at the shop. The shop owner was thrilled at the look of the PCB (photo is of my unpopulated spare with client and character info redacted).
By the time we knew what we needed to know about output from the DMX receiver it was too late to order the Propeller Mini boards; I ended up etching those in the kitchen. They're simple single-sided boards with a few jumpers.
I don't have any video of anything. When the project is released I will re-visit this thread to tell people where to look.
Admittedly, I work in an interesting business. Today I had lunch with my friend Camille who specializes in eyes -- she makes them for the Steve Wang projects that I often put Propellers into. She recently made the eyes for the Annabelle doll in the movie of the same name.
And a mutual friend of ours who makes costumes has a specialty fat-suit shop -- she's thrilled to have padded Gary Oldman for his turn as Churchill.
On Christmas eve I was shopping, turned a corner and nearly slammed into a lady's cart; that lady was actress Laurie Metcalf who plays Sheldon's mom on Big Bang Theory. The nerd connection was not lost on me!
My Pinterest page has a bunch of photos of projects I've worked on (many for the gaming industry).
-- https://www.pinterest.com/jonmcphalen/techno-art/
The original code had a very granular output:
-- All off
-- Ch 0 on
-- Ch 0 and Ch1 on
...
-- All on
Basically, nine steps in the sequence.
My version -- again, at Rick's suggestion -- does this:
-- All off
-- Fade Ch0 on
-- Ch 0 on, fade Ch 1 on
...
All on
I also added a dead band to each end of the range (DMX is 0..255) to allow the lighting operator to know that full deflection one way or the other would behave as expected. The second channel controls the 100% brightness level. The third channel acts as a brightness multiplier. These are white-only LEDs which are really bright. We believe that on set they will only use one LED chip per pixel. By adding the third channel they can select one, two, or all three chips. Going from one DMX channel in the original design to three in what Rick and I built gives the DP an director more flexibility on set.
That at-home kit is really sweet, less than what I thought it was going to be too. Are those boards transparent and under $100? haha Thats a pretty cool selling point. I have never tried the toaster for soldering, seen a couple videos and project highlights for creating hacker badges that uses an omelette pan; seems straight forward enough and worked like a charm.
Pretty cool day to day man; that doll is super creepy, i've seen the movie, and have been a total fan since her roll as Jackie on Roseanne.
Nice, I have not setup a Pin account, but visit for build ideas pretty regularly I fav'ed your pin and will check it out later.
If you're not accounting for your time, they are well under $100. You can get a package of two single-sided, 8"x10" panels from Digikey for $15. A 10-pack of toner-transfer paper is $12. I'm still on the original roll of green TRF film (this seals the slightly porous toner before etching). The materials are not expensive. For this project I used dry mix chemical tinning agent. That was another $10 but is supposed to be good for six months.
FTR, I bought the Pulsar kit because the first FireFall project...
https://i.pinimg.com/564x/74/5c/20/745c20bd40221477bedc1732350166ee.jpg
...required me to hand-build a few dozen boards for LEDs -- these were hand cut from perfboard, and then I hand-wired the LEDs (about 1000 in total). Since I knew we were going to build a second display, I invested some of my earnings from the first into the Pulsar system. Yes, the second display was easier for me, and I earned the same amount of money. For me, it's been a worthwhile investment
The standard PCBs from Pulsar are 0.032" fiberglass so they are translucent, but not transparent. Still, you can see well enough through them that you know when they're fully etched -- you can see clean traces through the board.
Since I sometimes have to do emergency boards (like this one), I find the Pulsar system worth it. And the owner, Frank, is amazing in terms of tech support.
Note that his web site says you can do a board in about 8 minutes -- for me it's really more like 30 since I'm not doing it every day. Still, if you have the materials and tools on hand, being able to knock out a PCB that fast is a blessing. Rick and I found this to be true when we did the Black badge for DEF CON two years ago (the 3D face). Instead of soldering wires to the male pin headers required for the servos, I popped back home and knocked out a board design. Using the panelizing tool in DipTrace I was able to make a sheet of them and get them etched in about an hour. I took this back to Rick's shop where he knocked out a little CNC program to drill the holes. We saved at least a day's worth of work.
I follow the Pulsar steps with a small addition to deal with the dissolved solids in my local water supply (which can interfere with the toner bonding to the PCB copper). After cleaning in the sink with 0000 steel wool and Dawn dish soap, I rinse the board, shake off the excess water, then drop it into a container of distilled water for a final rinse. After that, I pat dry and toss it into a container of 99% alcohol until I need it (always keep 99% alcohol covered). The distilled water rinse and 99% cleaning ensure that the toner bonds to the copper. Before I figured this out, traces would float off with the transfer paper (I think the dissolved solids in my water were creating a film that prevented good adhesion). No matter what your water situation, I suggest these steps because it will ensure a good transfer.
With advances in LEDs they are often used to create a bit of practical light that helps the VFX team. If you've seen the commercial for Destiny 2 (video game) then you've seen this. Rick Galinson added WS2812s with some programming to the props. This provided practical light to cast shadows on set, and the the VFX team took care of the rest. I also made fingertip lighting elements for Jamie Foxx (Electro) for The Amazing Spiderman 2 -- again, using the Pulsar system. Animating shadows on a moving actor is really difficult, hence expensive. When practical light can be provided on set, it's good for the project.
I'm going to use this technique myself in a short film where an angel has a glowing halo. An LED ring will cast shimmering light on her hair; VFX will cover the LED ring and remove the halo support. This is new territory for me (VFX), and I'm kind of excited about it. I did another short film with a hidden LED in a guy's hand -- it was used as kind of an ET healing light. That was easy; no VFX required.
VFX surely does create magic on the screen. It's great to hear from you a bit of what's behind it and how you accomplish what you do.
You can do that, though. What you have to do is make another transfer sheet with your "silkscreen" markings. You bond that to the board with the laminator after it's been etched. I could have done that on the top side of this board to mark the IO headers, but didn't for time. Pulsar also provides a white film to make your markings look like standard silkscreen.
The key, I've found, is like cooking: have everything put out in advance. I turn on the laminator to heat up and get my containers of distilled water, 99% alcohol (just enough to submerge the PCB), and ferric chloride. If it's cool as it is this time of year I will warm the FeCl in a water bath. Don't forget gloves (I prefer nitril), and some soft foam. I tend to put down some newspapers and do my etching work inside a large, plastic tray used to developing 8x10 photos -- this acts like a catch if I accidentally tip the FeCl container. Once the lamintor is heated, I clean the board and go through the process. The contact etching process is very fast and allows you to get very fine traces (Frank says down to 5 mils, but I always make mine at least 15).
On my to do list this year is to start making double-sided boards.
If you have any questions reach out to Frank at Pulsar (mail@pulsarprofx.com) -- an tell him Jon McPhalen sent you! I just had a short exchange with him today about his project. This is not the first time that his product has been helpful with a rush job.
Happy New Year and have fun making PCBs in 2018!
I don't know what will control it -- this PCB (there are two) provides rim lighting for a robot's eyes. Made in my kitchen last night using the Pulsar Pro system.
Looks nice; I only see 2 pads for each light, are you going to use RGB or regular leds?