Once we had our housing printed and a working circuit we were ready to begin the assembly process. Then we realized we missed something, the use of the A3BU microcontroller. We were not entirely sure if the project needed to incorporate the A3BU but we decided to use it just to be safe. The sole purpose of the A3BU in this project is to act as a button.
Implementing the A3BU:
On the Saturday night before the project was due Marcus and David began the process of adding the A3BU to our project. We started by trying to write a program that would output a high voltage from a pin on the A3BU to be read by the Arduino to start the sounds and lights routine. Soon it was clear that we were not going to get this method to work without the ICE-3, which we conveniently left in the ECE lab and didn’t have with us at the First Build facility. The next option was to bypass the software of the A3BU all together.
We noticed on some of the A3BU schematics that when a 5v source was connect to the power in of the A3BU the buttons on the chip became active. In particular, there was one button that exposed its output on the back of the board. We tested this by using a multimeter with one end on the ground and the other on the TP304 (see below) plate. When the button was pressed the TP304 plate would drop to 0.0v from the steady 3.3v it was at. This means that we could use this A3BU button without any software at all.
Diagram of the A3BU button we hacked.
We soldered a wire to the back of the A3BU board and lead it to a digital input pin on the Arduino to trigger the routines we wanted. At this point we had the Arduino powered by a battery but the A3BU still needed to be connected to a computer for power. We wanted to eliminate this connection to the computer. This is where we got really fancy.
Again, we used a multimeter to check where the 5v from the power source was leaving the usb connection to the voltage regulator on the A3BU chip. We discovered the one of the legs connecting the mini-usb port to the board was carrying 5v when power was connected. We used a continuity test with that leg and the TP304 plate and discovered thats how the 5v travels to the rest of the chip. With this new knowledge we were able to solder a wire from the 5v output on the Arduino to the leg on the A3BU that distributes the power on the A3BU. We were able to successfully power both microcontrollers with a single 9v battery connected to the Arduino.
In the code we used an interrupt to set a variable to either “on” or “off” when the button on the A3BU was pressed. Essentially, we created the most complicated button of all time.
How it looks:
To make the components fit into the housing better we ditched the large bread board for a small piece of protoboard. Once we had the entire project working exactly how we wanted, we soldered the pieces to the protoboard permanently. We used the ground and the 5v source from the Arduino to create hot and ground rails on the protoboard. Once the entire circuit was contained on the protoboard we started the difficult and delicate process of stuffing the components into the housing. After a lot of concentration the below picture shows the final result of the component compartment:
The only thing hanging out of the housing is the battery supply cord so we can turn the entire project on or off easily.
When the project is first powered on it is in a standby mode. The LED array “breathes” and changes colors as time goes by. Once the button on the A3BU (which is accessed from the components compartment opening) is pressed the A3BU sends an interrupt and starts the music and lights routine. A tone will begin to play and a certain number of LEDs will light up on the array. As the knob is turned the tone changes pitch and the amount of LEDs that are lit up change. The LEDs change color as more LEDs are lit. For example the left most LED column is all green, the middle few are yellow, then orange, and the right most are red. See the video below for a short demo:
This project was an overall success. The device works exactly how we envisioned it from the start. The team was exposed to many new electrical and programatic challenges along the way but we were able to work together to overcome the obstacles. We were also introduced to the First Build community from spending so much time there, we now all feel comfortable with using their resources more ofter.
We think that the use of an Arduino allowed us to push the limits of what this project was capable of. The ease of use allowed us to rapidly prototype and trouble shoot without wasting a lot of time fighting with a more robust microcontroller. Although we did not use the A3BU extensively in this project I think we gained a new understanding for it by using its internal hardware against itself to supply us with a button without the use of software. We think that future projects in this course will benefit from using a more popular microcontroller like the Arduino Uno. This is mainly because students will not have to spend their time setting up a project and getting familiar to the complicated environment of Atmel Studio and just dive right in to reading digital input or pushing a desired voltage to external components.
We are very happy with our end result and are extremely proud of it. The 3D printed housing give the project the esthetic component we were looking for from the start.