Propagand-Eye Soldering Workshop
Apogaea art grant to design a custom PCB for soldering workshop.
In 2017, I received an art grant from Colorado's regional Burning Man festival, Apogaea. The grant money was used to put on a soldering workshop for the Apogaea attendees. The workshop consisted of a custom printed circuit board that the participants would assemble at the event. As a special bonus, the PCBs, when finished, became badges that could be worn and interact with one another creating a scavenger hunt-like experience for the remainder of the event.
The Propagand-Eye, named for the that year's theme, Propaganda, is an eyeball-shaped PCB onto which participants soldered through-hole addressable LEDs as well as a variety of other components. The badges communicate with one another via infrared (IR) communication, with each badge having an IR transmitter and receiver, all powered off a single AA battery with a 5V boost converter. Each badge was initially programmed with a single LED pattern and color pallet. Once the scavenger hunt began, when two badge were brought into proximity, the LEDs would flash white indicating they "saw" each other. Pressing the mode button would initiate a "genetic" swap, and after the sequence each would have the other's pattern and pallet. This could be done with any of the badges in the wild, allowing users to collect as many modes as they liked, cycling through them with the on-board button.
What seemed like a simple task evolved into a full project with two people, one hardware and one software, putting in countless hours to create a truly interactive experience.
Hardware
As with any good hardware project, the first step was to order prototypes before the full production run. For the protos, I pitted three fab houses against one another: OSHPark, BasicPCB, and ALLPCB. You can see the results in the table below. Keep in mind that all three orders were placed on 4/11/17.
Total Order Cost | # of PCBs | Fab House | Cost/PCB | Date Arrived |
---|---|---|---|---|
$39.70 | 3 | OSHPARK | $13.23 | 4/21 |
$40.46 | 10 | ALLPCB |
$4.05 | 4/17 |
$86.75 | 5 | BASICPCB |
$17.35 | 4/17 |
ALLPCB proved to be the best option. Those boards arrived just as fast as the ones from BasicPCB, but they had more options for mask colors and board finishes than BasicPCB, which only offered traditional green.
The final production boards were ordered through ALLPCB. Here is photos of the fron and back of the final product. To make the workshop as painless as possible, I assembled the surface mount components beforehand, leaving just the through-hole parts for the participants to solder.
I got my stencil from OSHStencil, which I can't recommend enough. There were enough changes from the proto to the final to mandate a second order, but the stencil turnaround time was negligible to the PCB turnaround times.
The last major piece of hardware needed was a test fixture. One was ordered not too long ago. However, between it being combined with other orders and the most recent Chinese holidays, it got held up. With little to no time left to order one from even the fastest fab house, I set out to build my own using an OtherMill PCB mill and was able to piece together a functional pogo bed with no problem.
A Raspberry Pi was added, and *POOF* instant programming testing station.
Software
Adding the IR communication was in no way new or novel; the idea came from the DefCon 23 Hardware Hacking Village Badge. And, unbeknownst to me, the Propagand-Eye was being developed around the same time as the SparkFun Roshamglo Badge , which uses IR communication to play Rock, Paper, Scissors between two users. In the case of the Propagand-Eye, the IR communication is used to participate in a "gene" collection game.
Using the 10 addressable LEDs in the center of the eye, 16 unique animations and 16 unique color sets were coded to create 256 unique gene combinations. Each board has that gene stored in EEPROM, so it always remembers its base gene. That is the only animation and color set available to the participant when his or her badge is completed and first powered. But once the badge "sees" another badge, they flash white to indicate that they would like to initiate an exchange of genes. All the users have to do is press the button after a white flash. That gene is then stored in EEPROM, and if/when the badges see each other again, they flash red indicating they have already exchanged genes.
A Python script was written to allow for batch programming of the EEPROM to give each eye a unique gene out of the bag. It uses a list of genes generated by another script.
Engineers Hate Surprises
One big hiccup occurred with the ATMEGA328p's used. That chip was chosen to allow the board to be Arduino compatible and allow for both experienced and inexperienced users to hack their badges after the event.
The lesson, shared here first, is never mix different batches of any part if you can avoid it. Several ATMEGA328p's were scavenged to save money, and about 2/3 were bought new. When it came time to batch program, the new ones would not accept the bootloader, which resulted in a large game of find the source of the problem. The issue was overcome, but not with a solution that provided any answer as to why the ICs did not behave as the ones found so regularly elsewhere. Rather, it was a chaotic menagerie of different programmers, swapping parts and using all three major operating systems. The working theory is a bad batch of internal oscillators was plaguing the newer ICs. But what matters is that they all got programmed and are sitting here, kitted, awaiting a plethora of participants to build them, play with them, and hopefully learn from them at Apogaea.
Who knows what'll happen if you get a bunch of them together...
The Workshop
This project is open source under the Creative Commons license. Check out the hardware files here and the code here. There you can also find information about the previous years' badges.
Propagand-Eye by Joel Bartlett is licensed under CC BY-SA 4.0