I am a mechanical engineering student at Wright State University and am currently working on two "drone" projects. The first one is a UAV plane used to collect sensor data from the air after another plane has completed crop dusting. The second one is a ArduRover based autonomous lawnmower.
I need some way to expand the number of sensors the Ardupilot Mega 2.5 can read and write to the datalogger.
For the UAV plane, I simply need to expand the number of analog sensor inputs so that it can write the sensor values to the datalogger.
For the ArduRover based autonomous mower, I need a way to expand the number of analog sensor inputs and make the Ardupilot react to readings from those sensors. For example, using a sonar based range sensor to detect obstacles, when an obstacle is detected have the Ardupilot steer the vehicle around the obstacle.
I have both the APM 2.5 and an Arduino UNO in my possession. I do not have them implemented to a vehicle yet so I don't have a way to experiment with code yet. I was doing some reading and it appears using I2C may be an option.
Does anyone have experience in a situation similar to this? Is I2C the best way to go or is there a much more efficient method of doing this?
Also, I assume the Arduino based source code for Arduplane code and ArduRover code will be needed since it will have to be modified. Can anyone point me to a download link for this source code?
You should take a look at the code (it will take some time). Also, you can experiment with the Arduino IDE, with writing new programs and getting them to run etc. even with no other hardware than an APM, a computer and a desk.
There are the logging (Log.pde and the dataflash library) for SD card logging and there is the GCS_Mavlink for telemetry.
If you want to send logging data to another board, you have the choice between serial (using or not using MAVLink), SPI or I2C. I would prefer SPI over I2C, as SPI is fast, reliable and doesn't deadlock as easily. IF you decide to use a a separate board for logging and use SPI, you need to either share one interface with other hardware (either the gyros or the SD card) using AP_Semaphore, or you could remove the onboard SD card logging and use the SPI interface freed up then.
The code is hosted using the revision control system GIT, at Google Code. It is currently being moved to Github, as far as I understand.
See the Getting Started->How can I contribute in the menu, and somethere is a description of how to install and use GIT.