The colorimeter footprint is 15 cm x 9 cm. Height of the assembled colorimeter is 5.8 cm tall (or 6.2 cm with the rubber feet).
Hope that helps. Let us know if you have any other questions.
So, yes, you do need to do a calibration each time you start a new measurement.
The calibration measures the light intensity that reaches the sensor after passing through the cuvette and your blank sample -- which should not be absorbing any light due to the substance you are measuring e.g. nitrate.
The calibration is used as a reference when calculating the transmittance of light through your actual sample.
For the API nitrate test, a 'blank' sample would be 5 mL of distilled water (zero nitrate) developed with the test kit i.e. 10 drops of bottle 1, 10 drops of bottle 2. The color should be yellow like the image shown below. You would pour some of this into a cuvette and calibrate the colorimeter.
If you are on windows you can use Device Manager. Start with the colorimeter arduino unconnected. Open Device Manager. Then connect the arduino. After the arduino is connect in you should see a new device appear in the Device Manager. If you click on it you should be able to get the com port number.
On linux you can look in the /dev directory e.g. run "ls /dev/ttyACM*" the colorimeter should show up as /dev/ttyACM0, /dev/ttyACM1, ... etc.
In this case we are measuring the frequency of the pulses coming from the light sensor. The frequency of the pulses produced by the sensor is proportional to the light intensity. The pulses have a 50% duty cycle - so the pulses are high 50% of the time and low 50% of the time. The dt value returned from the pulseIn function on line 34 of ColorSensor.cpp
dt = pulseIn(FO, HIGH, pulseInWait);
returns the time the pulse is high in microseconds. The period the pulses coming from the sensor (in microseconds) is then 2*dt. This comes from the fact that we have a 50% duty cycle - i.e. one full cycle consists of the pulse being high for dt (us) and then low for dt (us). So we have period_us = 2*dt. To convert the period to seconds we divide by 1,000,000 which gives period_s = period_us/1000000. Replacing period_us with 2*dt we get the period in seconds as period_s = (2*dt)/1000000 = dt/500000. Finally, we want the frequency (in Hz) which is freq _hz = 1/period_s = (2*dt)/1000000 = 500000/dt.
It is possible to redirect the serial output. You would need to make minor modifications to the firmware. I think this would primarily involve changing "Serial" in SerialReceiver.cpp and SerialHandler.cpp to the new serial port. The Uno only has one hardware serial port (pins 0 and 1) which is used for USB serial, but you could use SoftwareSerial (https://www.arduino.cc/en/Reference/softwareSerial) to make any two digital pins into a serial port.
It looks like you are using Python 3.5. This issue you are seeing is due to the differences between the Python 2 and Python 3. The colorimeter software is not yet compatible with Python 3. So in order to run it you will need to install Python 2.7 and then reinstall the colorimeter software and its dependencies.
The software and firmware for the colorimeter can be found in our online repository here https://bitbucket.org/iorodeo/colorimeter/src The firmware for the Arduino is in the "firmware" sub-directory of the project. This will be what you want to modify to add you LCD display. Beyond that it is really up to you add the display you want and modify the firmware correctly.
It looks like the nokia 5110 is 3.3V so you may require a level shifter.