Bicycle North Indicator

by amandaghassaei in Circuits > Arduino

11119 Views, 27 Favorites, 0 Comments

Bicycle North Indicator

IMG_9680 copy.jpg

Magnetoception is the ability of some animals to detect magnetic fields as a means of orienting themselves.  Although humans do not seem to posses the same biological mechanisms that allow other animals to sense magnetic fields, there are still many ways that we can improve our sense of spatial orientation. 

This project is an attachment to your bicycle that beeps to let you know that you are moving in the direction of magnetic north.  It uses a parallax digital compass module, an Arduino, and a piezo buzzer to give you directional feedback as you bike.  The basic idea here is that by providing a constant source of stimuli in a certain direction, you might find yourself becoming more aware of other visual or sensory cues in your commute that indicate your orientation: geographical landmarks, air currents, inclines, or the position of the sun, moon, and stars.


(1x) Parallax 3-Axis Compass Module Radioshack 276-123
(1x) 85dB Piezo Buzzer Radioshack 273-060
(1x) Arduino Uno REV 3 Radioshack 276-128
(1x) 9V Alkaline Battery Radioshack #23-866
(1x) Heavy-Duty 9V Snap Connectors Radioshack #270-324
(1x) PC Board with Copper Radioshack #276-147
(1x) SPST PC-Mountable Submini Toggle Switch Radioshack #275-645
(2x) Male Header Pins Jameco 103393
(1x) Female Pin Sockets Jameco 308567
(1x) 9-Volt Battery Holder Radioshack 270-326


Additional Materials:

Heat Shrink Radioshack #278-1611
22 Gauge Wire Radioshack #278-1224
Solder Radioshack #64-013
zip ties
Drill
Screwdriver
4-40 x 1" nuts and bolts

Schematic

final schematic.jpg
The schematic above shows how simple this project is.  A 9V battery and switch are connected in series to the Vin and ground pins of the Arduino- this is the power supply for the project.  The Arduino supplies power to two pins of the compass module (see note in the image above) and analog pins A4 and A5 are used to receive data from the compass module.  the piezo buzzer is controlled by Arduino digital pin 7.

Solder Header Pins to Perf Board

IMG_2471 copy.jpg
IMG_2470 copy.jpg
Solder three rows of header pins to the copper side of the perf board so that the Arduino snaps on.  The headers pins should fit inside the Arduino's power pins, analog inputs, and digital i/o 0-7.  I did not solder header pins for pins 8-13 because the spacing between digital pins 7 and 8 is not the standard 2.54mm spacing.  It is a little challenging to solder the header pins to the copper side  of the board (I got some extra solder on some of the copper pads), but it is necessary so that the compass module can snap on the perf board without touching the Arduino.

Parallax Compass

IMG_2475 copy.jpg
IMG_2472 copy.jpg
IMG_2473 copy.jpg
IMG_2476 copy.jpg
IMG_2477 copy.jpg
IMG_2478 copy.jpg
IMG_2479 copy.jpg
Screen shot 2012-07-30 at 12.10.15 PM copy.jpg
Screen shot 2012-07-30 at 12.19.25 PM.jpg
Solder a row of 5 female sockets on the protoboard as shown in the images above.  The Parallax compass chip should fit nicely in this socket.  Connect the pin labelled ground to Arduino's ground, Vin to Arduino's 5V, SCL to Analog 5, and SDA to Analog 4 as indicated in the schematic above.

Upload the following code onto the Arduino.  It will print the raw x, y, and z data from the compass chip (the directions are indicated on the chip in figure 4).  If you have wired everything correctly you should see the raw data printed on your serial monitor (control/command+shift+m) in the Arduino IDE.  I found this code on the parallax website.

Piezo Buzzer

IMG_2481 copy.jpg
The piezo buzzer says that it should run off a 9-16V supply, but if you hook it up to 5V it will still run, just somewhat quieter.  I didn't necessarily want it to buzz at maximum loudness so it worked out well to hook it directly to one of the Arduino's digital pins for this project.  If you really want to run the buzzer at 9V, you can wire it up with a transistor to the battery supply and use a transistor to switch it on and off.

Solder the red lead from the piezo buzzer to digital pin 7.  Solder the black wire to Arduino ground.

Power Connections

IMG_2528 copy.jpg
IMG_2527 copy.jpg
Connect the switch in series with the battery so that it becomes an on/off switch.

Solder the red lead from the battery snap to one of the outside pins on the switch.  Solder a red wire between the middle pin of the switch and the Vin pin on the Arduino.  Solder the black lead from the battery snap to Arduino ground.

Firmware

arduino_logo1.png
Here is the final firmware.  I chose the values of xVal, yVal, and zVal based on the output I saw from the code from step 3 when I had the +x direction pointed vertically up, and the -y direction pointed towards north and parallel to the ground.  You might find that different values work better for you.  When the incoming directional values from the compass module equal the values of xVal, yVal, and zVal, the Arduino turns the piezo buzzer on.  The variable "tolerance" sets the sensitivity of the device, you may want to increase or decrease this depending on what you like.

The piezo buzzer automatically buzzes at ~1Hz.  You can upload the code below if you want to hear the full buzzing potential of the buzzer.


I found this buzzing to be a bit much so I pulsed power on and off to the buzzer to quiet it a bit.  See the code below:

Secure Arduino, Buzzer, and Battery Clip to Enclosure

IMG_9705 copy.jpg
IMG_9704 copy.jpg
IMG_9703 copy.jpg
IMG_9702 copy.jpg
IMG_9701 copy.jpg
IMG_9698 copy.jpg
IMG_9697 copy.jpg
IMG_9695 copy.jpg
Lay out the arduino, piezo buzzer, and battery clip onto the lid of the project enclosure and mark out the position of the mounting holes.  Drill these holes fasten the components down with nuts and bolts as shown in the images above.

Make sure to orient the arduino so that the x axis of the parallax chip is parallel to the long edge of the project enclosure (fig 3).

Install Switch

IMG_9692 copy.jpg
IMG_9690 copy.jpg
Drill a hole in the bottom of the project enclosure and mount the power switch by securing it with a nut.

IMG_9689 copy.jpg
IMG_9686 copy.jpg
IMG_9688 copy.jpg
Secure the lid of the enclosure with 4 screws.

Attach to Bike

IMG_9680 copy.jpg
IMG_9683 copy.jpg
Use zip ties to secure the project to your bike.  Line up the project enclosure so that the front of the bike points in the same direction as -Y on the parallax chip.  Don't forget to turn off the project when you are not using it or you will drain the battery quickly!