As you take on or create projects, some will be easy and some will be difficult. Some will be one-offs and others will need to be made at scale. In this write-up, we will be exploring my biggest project to date, Distributed Symphony, and how the micro-controller at its core was built in a browser.
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: The Opprotunity
The Distributed Symphony is the largest and most complex project I have pulled off. Once a year I have the unique opportunity to bring a fun experience to a corporate offsite for an audience of 600 executives. The past few installments, the "fun" has been packaged as a design challenge. The prompt for the first iteration was to build a ball machine that sends a ball on its path for exactly two seconds. Each successive year had an increasing complexity and technical presence. This year I decided it was time to architect an experience that was awe inspiring.
Step 2: Distributed Sypmony
The project consisted of one hundred and twenty kits containing all the ingredients needed for a team of five to create a percussive instrument. Each kit included the following items.
- Connected Micro-controller
- Solenoid Ball Dropper
- Instrumented resonator from a Glockenspiel
- Trigger button
- Ten Wooden Balls
- Building materials
- Artistic elements
Central to this project was the micro-controller. Adding logic and cloud connectivity was intended to enhance the experience and not get in the way. The controller board had considerable functionality exposed in the simplest way possible. Resistor values, power concerns, diodes and capacitors were baked into the board design so that the participants were free to focus on the challenge and not the technology.
Step 3: Take Chances
This project presented the opportunity to build a swarm of custom SMT micro controller boards. This was new to me but seemed like something worth learning and a major challenge. To design the boards I used Upverter. It is a very cool browser based end to end solution for PCB design and production. Once you get used to finding components in their library, it is easy to use. The boards were based around the very capable ESP32 micro controller. The boards were designed to out last this project as they were marked for donation to help children learn code and circuit design. Each board has the following features:
- ESP32 Micro Controller - Wifi and Bluetooth Capable
- Two PWM Solenoid/Motor headers
- Four Grounded 3.3V GPIO headers
- Two Neopixel Strip Drivers
- Two Capacitive Touch Pads and Optional Headers
- Onboard LCD Display
- Onboard Single Neopixel
- Onboard USB to UART Programmer -
- 5V Power Bus
- 3V power Bus
The project only used a single Solenoid Driver, the LCD Display, onboard Neopixel and three of the GPIO headers. The additional functionality has since been used as part of hands on teaching workshops for kids.
Step 4: Plan It Out
The first step in making your custom PCBs is to plan it out. When it comes to circuit design, that means creating your schematic. I used my breadboard to design each feature of the larger project. As each circuit started working, I carefully translated it into the Upverter Schematic tool. After that I cleared the breadboard and got to work on the next section until the controller board was logically complete.
Step 5: Lay It Out
The next step in hardware production is the PCB layout. This was way more fun than I thought it was going to be, it was like playing SimCity with electricity. The Upverter layout tool is pretty cool and fun to use. The more I worked with it, the more I polished the design and went for style points wherever possible. It is your job to add wires between on the components. There are green lines that highlight connections not traced with copper. The most exciting part of PCB layout is the ability skip ground traces. All they have to do is touch the bottom layer and they are grounded, easy! While we are talking about the bottom layer, that is another thing of beauty. If you have a lot of traces getting getting in the way, all you need to do is drop to the bottom layer, go around the traffic and pop back up on the other side.
Step 6: Make It Real
Once you go to production, things get real and really expensive. Find a production house you feel comfortable with or one that someone you know has used before. You will be sending them files to create your boards and optionally doing the full assembly. The bulk of the cost is in buying the parts and assembly. Since this project required many units as well as using a surface mount components, I opted for the production house to do the assembly.
Upverter has download section where you can generate the files you need to handoff to production. To help save some back and fourth, here is the list of files I exported:
- NC Drill (Excellon)
- XYRS (Pick and Place)
- Bill of Materials
Be ready to do one or two smaller test runs before sending out your big order. My design went to two small production runs each with errors before the big one hundred and thirty piece order. I padded the order by ten just incase some of the boards were produced with errors. As you can see in the second image, I had to use green jumper wires to fix the boards from one of the earlier production runs. Thats it, you are now the proud owner of 5 to 50,000 custom controller boards.
Step 7: The Reveal
This was the bittersweet ending to a long long road. The kits were distributed and prompt was given. The teams set out to build a percussive instrument that could reliably drop a ball onto the resonator with each button press. As the build went on, we revealed that the projects were cloud connected and had corresponding mobile dashboards. The teams used the mobile dashboard to play patterns into their devices. "Save and a Haircut" was now the goal. Once the bulk of the teams were able to play "Shave an a Haircut", we were ready for the recital.
Everyone loaded their ball hoppers and stepped back. We used our administrative console to calculate individual machine offsets and play songs across all the machines as if they were a single instrument. We tested with Guns and Roses and went on to play some Bach. The room filled with faint music and it was a success.
Keep building and don't let custom PCB projects scare you or get in the way. They are totally doable and there is a whole world of support out there.