To create AMUP air I redesigned the circuit from scratch with three goals in mind. I wanted to fix all the bugs from the initial design to make the system reliable enough for live performance; to add support for functionality such as direct feedback on the device itself; and, to make the system more modular and extensible, so that I could change the components in a set-up, and even create new ones.
Before getting into the schematics of each individual components, I am going to provide an overview of the architecture for the entire circuit – this is definitely the first time I have been able to honestly use the word architecture to describe one of my circuits. Here is an image of the circuit architecture for the AMUP air:
In order to make the system more modular and expandable I gave each component its own Arduino. Based on size and price considerations I decided to use a set of bootloaded atmega328 microprocessors rather than full-featured Arduino protoboards, except for the main console that features an ArduinoMega 2560. It’s easy to make your own Arduino protoboard, this tutorial from the Arduino website shows how.
The process of learning how to bootload the chips was rather painful until I figured out how to solve the issue that was driving me crazy. Now I can set-up a personal bootloading factory. Soon I will create an arduino bootloading tutorial with tips gained from my personal suffering (at which point I will add a link here).
In order for this new approach to work I had to find a way to connect the three existing AMUP air components: the main console, button pads, and air sensors. I decided to connect the air sensors to the button pads using serial, since only one air sensor is connected to each button pad. For the connection between the button pads to the main console I have chosen i2c because it enables multiple components to be connected using the same two pins on the Arduino.
For comparison, above is a diagram that illustrates the circuit architecture of the AMUP classic. As you can see, the classic used a single ArduinoMega2560, which was directly connected to all the components using four 16-channel multiplexers.
To enable AMUP air to provide direct feedback I decided to use rgb leds – the button panel features 8 rgb leds, while the air sensor panel features 10 rgb leds. To drive such a large number of rgb leds from a single Arduino you can either create an led matrix, use a demultiplexer, or use an led driver. I decided to go with the last approach because it provides the most control, and saves processing power on the Arduino to do other stuff.
After testing several different components I came across Texas Instrument’s tlc5940. These led drivers are awesome. Each one provides 16 dimmable pins and connects to Arduinos using a daisy chainable serial interface. An arduino library exists that makes it really easy to integrate these chips into your code. I bought a bunch of extra ones to play around with on other projects. Here is a link to more information about using the tlc5940 with Arduinos.
In order to design circuit boards for the button panel and air (prox) panel, I needed to create a full schematics of each circuit. Creating a full schematic using application such as Eagle CAD or Fritzing is a really great way to plan out your circuit. In the past I had used hand-scribbled schematics, which are fine for simple projects, but for big projects these software packages make a big difference.
If you are interested in learning how to use Eagle CAD to build schematics for your own project I strong recommend Sparkfun’s Eagle schematic tutorial. This tutorial guided my own schematic design work for this project.
Here is a slide show with the schematics for the button panel and air sensor panel. Note that multiple schematics refer to each one of these components.
The process for developing the final schematics, which were used as the basis for the printed circuit boards, took several rounds of prototyping, testing and revisions. It is important to test your entire schematic before you finalize the design of your pcb; and even so, you will likely discover issues with your first draft. I have already done one round of revisions to the pcbs and the button board still contains a few minor issues.
Printed Circuit Boards
My decision to integrate printed circuit boards into this project was driven by several considerations. I wanted to make the circuit more robust and clean by reducing the use of wires; I wanted to minimize the footprint of the circuit; and, I wanted to continue to develop my pcb design skills.
I have fabricated two different sets of protoboards for AMUP air. The two boards pictured above are from the first set. Before ordering the second set of boards I made sure to set-up the initial version, making all of required fixes to get them working properly. To get both boards working I had to scratch off a few short circuits and use wire to connect a few components that were left stranded.
Once the first prototypes were working, I updated the pcb design files and sent the second prototypes out for production. I haven’t yet assembled the new prototypes but I already know that some of the issues from the first boards have persisted.
I have limited experience working with printed circuit boards. Before AMUP air, I had only designed and fabricated a circuit board for my Emote project. To help me develop, fabricate and test my pcbs I relied on guidance from Sparkfun’s Eagle CAD pcb design tutorials. These tutorials were invaluable.
I also used Sparkfun’s SMD soldering tutorials to help me learn how to solder small surface-mounted components onto the PCB. These tutorials helped me to finally learn to use a desoldering braid to remove jumpers from existing solder joints.