because there's no easy way to connect the arduino to a normal perf-baord (stupid 2mm space between digi7 and digi8) i decided to make it the right way from the beginning. so i downloaded eagle and played around the last few days. this is what has come out. :) i plan to use the arduino bootloader and just connect the few needed pins to a empty diecimila board for easy programming. all the traces are already handrouted.
i'll use the following sensors (plugged in on the pinheaders [should be female ones on the board]):
3x Gyro Breakout Board - MLX90609
Triple Axis Accelerometer Breakout - LIS3LV02DQ
Breakout Board for MEMs Barometric Pressure Sensor - SCP1000
they all run on the spi bus. there's a 74hc4050 for level-shifting 5v to 3.3V for the accelerometer and pressure sensor.
- there are 4 keys based on http://www.arduino.cc/en/Tutorial/TwoSwitchesOnePin
- the 4 pins on the left are i2c + power for the sparkfun-blinkm
- ppm input (see my previos blog post)
- ppm output (ppm and reset signal also driven by timer1) and a 4017N decoder to 10 servos. that should be enough :)
the cool thing about this is that when coded correctly, this thing wont lose control when the software crashes. since the the interupts are called in hardware by the timer, as long as the crashed software doesn't modify the timer-setup-registers, the interupts will continue to be called! so you could check in the input capture interupt each time if the programm is running (increment variable for each loop or like that): if yes, use the computed servo-position, if not, directly pass the position from the receiver.
the display (ttl serial crystalfontz) is pluged in for setup.
the ublox (got it here http://ppzuav.com/) has a very nice software for windows. you can connect it with usb, experiment with the settings, and save the default settings to flash! so you wont need to do this on every start up. the gps is only connected with serial-in, 5V and gnd.
what i noticed on the ublox is that it's not as sensitive as a sirf3! my old sirf3 easily works indoors. the ublox wont, i have to at least put it next to the window...
this is just a prototype or alpha version. i connected all the stuff the way i think it should work.
- ppm input works
- ppm output works, but without the reset-signal at the moment (should usually work without problems, but if for some reason a pulse is skipped, all the following pulses/servo-positions will be shifted by one servo... which is not so good...)
- gps works (at least with nmea messages, ublox messages will be even easier)
- display with simple menu-system works
- pressure sensor works (but with a simpler level shifter, have to first get the 74hc4050)
- connect all parts on a breadboard
- read all sensors
- get board made
- write software....
once the baord is finshed, i'll probably release the eagle files. the design is quite universal and can be used for everything! more sensors/hardware can be easily connected to i2c or spi-bus (there are 3 unused i/o pins the atmega)
PS: i should probably add headers for a rf-transmitter
or maybe add battery-voltage-input (voltage divider) or a sd-card slot (on the backside?) instead of eeprom.