The I/O shield basically consists of an Arduino connected to the Odroid by a serial bus. So I can do development on an Arduino without out worries about hurting the hardware on the I/O shield. In theory this is what I am suppose to do, but the other day I did development directly on the I/O shield and destroyed it. Nonetheless I could develop the software side using the Arduino.
The system right does the averaging and conversions on the Arduino. All analog inputs are read every 2 ms, and a total of 16,384 samples are averaged together. This comes out to an average period of about 32.8 seconds, which is all the faster I want data to be logged. After each averaging period, the results are converted using calibration points and printed on a serial bus. This allows software on the Odroid to read the data. Calibration involves hooking a variable power supply to the voltage dividers, along with a multimeter. Software on the I/O shield prints the raw ADC values. Two points are selected. One at a low voltage, and one near the highest voltage. The two points correlate an ADC value with to a voltage. So after the 30 second averaging period, the ADC values are translated into voltages and those values are passed on.
Software on the Odroid simply opens the serial port to the I/O shield, reads the voltage and current data, and logs this to a SQLite database. This script runs continuously, but spends most of it's time waiting for data from the I/O shield. Data older than 24-hours is dropped from the database. In this way, charts can be drawn of the various data points on record.
Right now the current traces are always zero. I destroyed the current measuring op amps the other day, and am waiting for replacement parts. Once the new parts arrive, I should be able to start logging this data as well. One step at a time.