July 3, 2014 Update

First and foremost we need to see what this analog pH sensor can do. We ended up getting this sensor for approximately $30.00 from robotmesh.com; however, we need to make sure that it is going to be accurate enough to use in our design. Our initial impressions right out of the box are very positive. I was able to get a test up and running in under a minute using the provided Arduino sketch and a few wires. The sense wire (blue) was connected to the Analog Pin 0 and the Ground (black) and Positive (red) wires were connected to there appropriate places on the Arduino. After uploading the sketch, I was taking measurements every 800 milliseconds and outputting the reading to a serial monitor window. As you can see in the pictures this sensor is almost spot on without any calibration. After letting it run for approximately 30 minutes, the outputted value was only out 0.09 pH from our sample. With a little tweak of the trim pot found on the control circuit, we should be able to get this thing calibrated. The next question is how well this unit will work over an extended period of time. That kind of testing will have to come later on. For now we have a higher level of confidence that this sensor will meet our needs.

Additionally, we started to put together the outlet box. Adam used a 7/8″ hole saw to cut out a primary position for each of the outlets and then used a knife to trim out the opening to make for a perfect fit. Something that I personally think makes this installation look great is that the finish on the outlets matches the finish on the case. The similarity of the finish was not initially planned, but looks great non the less.

Here is the Arduino sketch that was used in this test setup. The source code was downloaded from the robotmesh.com product page.


/*
# This sample codes is for testing the pH meter V1.0.
 # Editor : YouYou
 # Date   : 2013.10.12
 # Ver    : 0.1
 # Product: pH meter
 # SKU    : SEN0161
*/

#define SensorPin 0          //pH meter Analog output to Arduino Analog Input 0
unsigned long int avgValue;  //Store the average value of the sensor feedback
float b;
int buf[10],temp;

void setup()
{
  pinMode(13,OUTPUT);  
  Serial.begin(9600);  
  Serial.println("Ready");    //Test the serial monitor
}
void loop()
{
  for(int i=0;i<10;i++)       //Get 10 sample value from the sensor for smooth the value
  { 
    buf[i]=analogRead(SensorPin);
    delay(10);
  }
  for(int i=0;i<9;i++)        //sort the analog from small to large
  {
    for(int j=i+1;j<10;j++)     {       if(buf[i]>buf[j])
      {
        temp=buf[i];
        buf[i]=buf[j];
        buf[j]=temp;
      }
    }
  }
  avgValue=0;
  for(int i=2;i<8;i++)                      //take the average value of 6 center sample
    avgValue+=buf[i];
  float phValue=(float)avgValue*5.0/1024/6; //convert the analog into millivolt
  phValue=3.5*phValue;                      //convert the millivolt into pH value
  Serial.print("    pH:");  
  Serial.print(phValue,2);
  Serial.println(" ");
  digitalWrite(13, HIGH);       
  delay(800);
  digitalWrite(13, LOW); 

}