GPS Logger

August 31, 2011

As a summer project I designed a GPS logger device.  An early prototype of the device was completed late July.  Since then I’ve been taking it along on bike rides, walks, fishing trips, and much more.

GPS path  in Itasca State Park, Minnesota

GPS path in Itasca State Park, Minnesota

The image on the left is a path recorded from my bicycle ride  in Itasca State Park.  The path starts from the headwaters of the Mississippi River and follows the wilderness drive & bike route to the visitor center.  I also road from the visitors center to the headwaters but the GPS reception was blocked by the ice pack for my lunch.

The GPS logger takes data from a Linx GPS module and saves it to a SD/MMC card.  The data is formated in a KML flie which can be opened with Google Earth or uploaded to Google Maps.  The GPS module outputs NMEA sentences at a 1Hz rate.  The GPS logger uses the GGA sentence for longitude, latitude, and altitude.

The GPS logger is powered off of a rechargeable 3.6V Lithium ion polymer battery.  The battery is charged using a USB power supply and a lithium ion polymer charger integrated circuit.

The source code for the AVR microcontroller can be found on github under the name GPS-Wolf.  The PCB board layout is also uploaded to github.


PCB designed in EAGLE

PSoC® FirstTouch™ Starter Kit

January 30, 2010

After learning about the  PSoC and its capabilities from a professor, I decided I would try one of the development kits.  I got the PSoC® FirstTouch™ Starter Kit.  The kit is easy to program using the provided software.  Using the PSoC Creator, I set up a PWM module to control a small servo.  It only took me an hour to get familiar with the software and get this servo running.

I had thought the TV in the background was mute but the audio sounds like I forgot.

Autonomous Robot

August 25, 2009

During my microprocessor lab last spring I started programming a PIC 18F1220 for fun.  I started with a bunch of small projects that I put together to make this autonomous robot.  For this robot, I learned how use a digital ultrasonic range sensor and how to write my own software PWM (pulse width modulation).  I decided not to use the hardware PWM because at my clock speed it would not output at the 50Hz necessary for servo motors.  If I wanted to use the hardware PWM for servos, I’d have to sacrifice speed.  The software PWM I created has 3 outputs, one for the servo that moves the sensor, and the other two for the drive motors.  Currently the robot does not drive in a straight line.  I’ve tried to fix this in software but the differences in the motors is not constant.  I’m working on adding an encoder so the motors can be set the same.

Since the video below was shot, I’ve made some modifications to the code to improve it’s autonomous navigation.

Disc Golf Target Basket

May 19, 2009

I’ve been playing disc golf occasionally for the last few years and I always thought the target / basket would be something I could make.  I did a little research on the internet thinking I would run across some good plans.  There weren’t any that I liked so I made my own.  My design needed to be semi portable and require no welding.

From Disc golf target

Tools required

  • drill & drill bits
  • string & pencil
  • jig saw


  • 3/4″ Ply wood
  • 1 in pipe
  • 12 U bolts
  • chain
  • Large (3″) key ring (can substitute with wire)
  • nuts and bolts
    • 12 nuts, bolts, and washers for attaching the Galv Floor Flanges
    • 24 nuts to fit U bolts (2 extra for each)
  • dowels 3/4″ or 1″
  • 2 – 1″ Galv Floor Flange
  • 1- 1 1/4″ Galv FLR Flange
  • 1- 1 1/4″ Galv nipple

I tried to make my disc golf target fairly close to the ones at my local course which uses the Innova DISCatcher® PRO Disc Golf Target. Most of the dimensions for that target can be found by following the link above.  The only dimension I couldn’t find was the depth of the basket which I measured to be 9 inches

Step 1

Cut 3, 26 inch diameter circles from a sheet of plywood.  Take one of the circles and cut out a 22 inch circle within in.  The resulting ring will be used as the rim of the basket portion of the target so be careful not to cut through it.  The 22 inch circle will be the top portion where the chain is attached.  The easiest way I’ve found to cut the circles is to use a nail, pencil, string and jigsaw.  Tie the pencil and nail together 13 inches appart pound the nail in the center and use it to draw a 26 inch diameter circle.  Cut out the circle with the jigsaw.

Step 2

On the 22 inch circle draw a line from the center every 30 degrees (12 lines)  to determine where the U bolts should go.  drill holes for your u bolts.  Each U bolt will require four nuts.  A nut will go on each side of the plywood.  washers are optional.

Note: The U bolts are are sort of optional although I highly recommend them.  You could stick a bolt through the last link of the chain and bolt it to the plywood.

Step 3

Cut your chain in approximately two foot lengths (for me this was 20 links).  Slip one end of the chain on each u bolt and attach them too the plywood circle.  Place the other end of each chain on a large key ring.  The key ring can be substituted with wire but wire will not hold the circular shape.

step 4

Cut 12, 8 inch long dowels and attach them to one of the 26 inch circles (again every 30 degrees).  Attach the ring to the the dowels as well.  now you should have a basket

step 5

Cut the pipe to 55 inches and thread each end.  Most hardware stores will be able to do this for you when you purchase the pipe.

step 6

Attach the 1″ Galv FLR Flanges to the top and base circles.  Drill a 1″ diameter hole through the center of the basket, screw the 1 1/4″ nipple into the 1 1/4″ Galv FLR Flange and attach it to the basket.

step 7

slide the basket onto the pipe and screw on the top and bottom.  Position the basket where it looks right and drill a hole through the nipple and then through the pipe.

step 8 (optional)
An inner ring of chins can be added to the target for better catching.  You will need 6 extra u bolts and some more chain.  the length of chain for the inner ring should be shorter approximately  16 inches (18 links of my chain).  The Innova targets at my local course have 3 rings of chains. for a total of 24 chains.  The single ring seems to work but occasionally lets the disc through.

please see my update on this disc golf target

7-Segment display

May 2, 2009

My first pic microcontroller project was counting on a 7 segment display. Technically I started with a flashing led but what kind of project is that? This was my first project that actually did something. I used a pic 16F84A, a 7 segment driver chip and a 7 segment display. The program was fairly simple. it needed to count to 9 then I could either have it count down or reset to zero. I also had to create some delay so that the number would actually be seen on the 7 segment display.

This program logically was not difficult but inexperience made the process slow. First I didn’t think of ordering an oscillator when I ordered the sample pic. After some reading in the data sheet I figured out there was an RC mode where I could use a resistor and capacitor. This seemed simple enough until I realized that I didn’t have the capacitor that I needed. I read online how someone used just a resistor and the stray capacitance from the breadboard. I decided to give this a try. This is the most unstable method you could use. It worked alright but sometimes the pic would be slow and other times it would fly through the program.

This was the project that I learned all the general information about programming a microcontroller. I learned how to configure ports for input and output and how to move and manipulate data in the microcontroller. The most valuable thing I learned was how to look up information in the data sheet. At first It was difficult to follow and understand how things were organized in the data sheet. After a while I got good at searching for key words.

Link to code:  7-segment