Team DND – The Final Product

team logo

 

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.

 

A3BU Hack diagram

 

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:

11125478_10205078254768678_625303218_n

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:

Conclusion:

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.

Nokia’s LCD display

For our project, we decided to purchase and use a Nokia Graphic LCD display to have a bigger display. At first it seemed easy to just plug the right wires in and make the LCD to work. Here’s a graphical representation of what the LCD looks like connected to an Arduino.

We hooked up the A3BU accordingly. When it came to converting the code for Arduino to a code that’d work with A3BU, we noticed we would need to write a driver from scratch for the Philips PCD8544 display controller to work with A3BU.

We started developing a simple driver for the PCD8544 display. Upon more research we realized that the LCD protocol is 9-bit SPI verses the AVR microcontroller series only support 8-bit mode. The LCD display could work with the 8-bit AVR microcontroller but we would need to implement additional software SPI output for it. Since the project scope doesn’t allow us to spend more time on it, we decided to go back to the good old LCD display for the A3BU which it’d make things much easier since we’re familiar with ST7565R LCD controller :).

(See Fall 2015 flappy bird project for a creative workaround to using the Nokia LCD with the A3BU!)

Traffic Light- Schematic Post

Traffic Light SchematicThis is the schematic we are using for this project. The circuit has two sets of lights. Each set is made up of three traffic lights (red, yellow, green) and two crosswalk lights (red, green). There are also two buttons for a “pedestrian” to prompt the crosswalk lights. This is a simple circuit which allows for full functonality.

Schematics Schmematics!

 

 

 

 

 

 

 

 

 

 

If you notice something familiar about our setup, its because we are using a similar schematic from lab 4! Currently our sound output is basically using the same buzzer output from the A3BU only with an infrared distance sensor (pictured below) controlling what sort of pitch is coming out!

Infrared distance sensor

It may be a little hard to see, but we have included several capacitors in our design in order to stabilize current and voltage being fed to the device!

 

 

Schematic 1

 

 

 

 

 

How the Simon Game works

CeladonPost2Image1
Here’s the circuit schematics for the Simon game’s input/output. We put four LEDs as output, and each LED was wired as an input as illustrated above. Transistors were used here for two reasons: we might have all four LEDs on at once, and transistors can handle all that current while the A3BU might not. Also, the LEDs from Adafruit ran on 12V, and the A3BU’s 3.3V would not light them. (We discovered that these LEDs have an integrated resistor, that’s why 12V doesn’t blow them up). The transistor can be connected to the ground side, and will switch fully on at 3.3V, completing the circuit through the LED to ground.

The project code is available at our github project repository.

Continue reading How the Simon Game works