My Friends,

The future is very much unstable at best! The Hopi Indians, wise as they are, said: "Know your Garden"!

Today I want to share my research on the PH of Water. 

a figure expressing the acidity or alkalinity of a solution on a logarithmic scale on which 7 is neutral, lower values are more acid and higher values more alkaline. The pH is equal to −log10 c, where c is the hydrogen ion concentration in moles per litre.


The pH scale ranges from 0 to 14:



Normally, the Water Nutrients are added to the water:

  1. N-P-K mix, nitrogen, phosphorus, and potassium.
  2. Calcium Nitrate
  3. Epsom Salt (Magnesium Sulfate)


At this stage, the PH is measured:


I have an Arduino PH Sensor I will be sharing more on soon, it looks like this:


This is fairly easy and I will be sharing more on this soon! The Code found online is pretty average, I have re-written an small method to take an average:

// Read Water PH Sensor:                                                                                                             //
float ReadPHSensor(){//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  // Product Name: PH value acquisition sensor module (with temperature compensation)
  // Heating voltage: 5±0.2V (AC·DC)
  // Working current: 5-10mA
  // Detection concentration range: PH0-14
  // Detection temperature range: 0-80 °C
  // Response time: ≤ 5S
  // Stabilization time: ≤60S
  // Component power consumption: ≤0.5W
  // Working temperature: -10~50°C (nominal temperature 20°C)
  // Working humidity: 95% RH (nominal humidity 65% RH)
  // Service life: 3 years
  // Size: 42mm × 32mm × 20mm
  // Weight: 25g
  // Output mode: analog voltage signal output

  // Number of Samples to take:
  float Samples = 10.0;

  // Totsl Values:
  float TotalReadings = 0.0;

  // Read the Analog Pin BufferSize Times and Store:
  for(int i = 0; i < Samples; i++) {

    // Analog Read:
    // Data type: int
    // Although it is limited to the resolution of the analog to digital converter (0-1023 for 10 bits or 0-4095 for 12 bits).

    // Save Reading:
    TotalReadings += (float)analogRead(PHSensorPin);

    // Delay:

  // PH values are from: 0 to 14:
  float ScaleMax = 14.0;

  // Analog Resolution is 1024 on most Arduino MCU's:
  float AnalogResolution = 1024.0;

  // Calculate:
  PH = (float)(((TotalReadings / Samples) * ScaleMax) / AnalogResolution);

  // Return PH:
  return PH;


Currently, there is no allocation for Calibration, this needs to be added.

Of course, this can be partly Automated and the Arduino can PH Up and PH Down as needed in the near future, but the basic understanding is required first.


Best wishes, stay safe and well My Friends,