Deathpod3000 Specs 04/19/2009Posted by aliasmrjones in The Build.
There were some requests on the Sparkfun site for the specs of the vehicles so I thought I’d list them. All the info is in the build posts, but the design changed along the way so here is what we ended up with: (Click More…)
- Duratrax Evader EXT electric r/c car
- Atmel AVR Atmega32 running at 8mhz
- 40 pin AVR development board
- 16X2 character LCD
- Locosys 20031 3.3v 5hz GPS (running at 2 only 2hz)
- 5v to 3.3v Logic Level Converter
- Honeywell HMC6352 i2c compass
- Atmel AVR Atmega8
- Sharp GP2Y0A710YK0F infrared distance sensor
- Plywood and hardware
I only added the Atmega8 because I used all the a2d pins of the Atmega32 to connect the LCD and then, at the last minute, added the ir distance sensors that needed a2d pins. I also used the breadboard because I added the Atmega8 for the ir sensors so late.
I used the free Atmel AVR Studio IDE with the open source gcc WinAVR C compiler for development and an STK500 for prototyping and AVR programming. I used Pascal Stang’s free AVRLib for much of the low-level interfacing such as uart, buffers, nmea parsing, i2c and a2d. There’s a lot more in AVRlib than what I used as well. It’s a fantastic library for getting a jumpstart on virtually any AVR project, though it does add some bloat so it isn’t well suited to the smaller AVRs. I wrote the navigation, servo and UI software from scratch with help from internet research for timing, distance and bearing formulas, and inturrupt pin and i2c examples.
I learned a lot during this build. The navigation stuff was pretty interesting. Learning how to use AVRs as both i2c master and slave was really worthwhile. The smaller AVRs are limited in terms of things like number of pins and peripherals, but they have all the processing horsepower of the bigger AVRs. With an ATTINY or Atmega8 costing $2-4, a cheap and powerful approach to many projects would be to use 1 AVR as main processor to handle UI and higher level functions and 1 or more AVRs as i2c or spi slaves to read sensors, parse gps data, drive servos, etc.