This system, jokingly named the MarTyr 171, was begun Spring 2015 and implemented Summer 2015. The goal of the system was to use inexpensive pieces of equioment in conjunction with an always-on-computer to record data being gathered from as many as 15 separate probes in the Humboldt State University Fish Hatchery.
The whole package, including both the code and the necessary support files, has been uploaded to GitHub here: MarTyr 171
The Arduino code sets a five second cycle wherein it takes 300 voltage readings from each probe line. Those readings are summed respectively and then divided by 300 to get an average voltage, effectively eliminating electronic noise. Every 5 seconds those averages are sent via serial to the connected computer. The averaging subroutine is dictated by a timing scheme dictated by the "millis()" function to avoid time drift.
Once the averaged reading are transmitted to the computer a background python script (over the Pyserial module) reads the data as a string, processes it into calibrated probe readings based on an predetermined text file, and then displays it in a command prompt using the PrettyTable Module. Every 15 minutes both the voltages and calibrated values are appended to .csv file based on the date of the recording, such that a new file is created daily at midnight.
The calibration variables mentioned early and stored in a text file are written from a Mathematica script using a slope/intercept approach from technician observed probe readings. Incedentally a separate text file stores the previous calibration state such that recalibrating a single probe does not erase all other probe calibration variables.
Finally, a much more complicated Mathematica script is used to table and parse the probe readings into a "Grid[]"" configuration. Using a GUI approach the user can select which probe readings are displayed, and the dates of the probe readings. The tabulated data can then be exported as a .csv file into Excel (Not my choice). Using this mathematica script the data can also be displayed as a graph over time.
The calibrated .csv files from the python portion of the system are stored in a Google Drive using reverse symbolic links. In this way anyone with an internet connection, permission to view the contents of the Google Drive, and access to Mathematica may view the data remotely.