Danu Andrean, 14 Dec 2025

Cara Akses Sensor PH Dengan ESP32

Penjelasan Gambar

Sensor pH banyak digunakan pada sistem IoT (Internet of Things), terutama di bidang pertanian, akuakultur, pengolahan air, dan monitoring lingkungan. Dengan ESP32, kita dapat membaca nilai pH secara real-time dan mengirimkannya ke server, dashboard web, atau aplikasi mobile.

Apa Itu Sensor pH?

Sensor pH adalah sensor yang digunakan untuk mengukur tingkat keasaman atau kebasaan suatu larutan. Skala pH berada pada rentang:

  • 0 – 6 : Asam
  • 7 : Netral
  • 8 – 14 : Basa

Pada proyek IoT, sensor pH biasanya digunakan untuk:

  • Monitoring kualitas air
  • Sistem hidroponik
  • Tambak ikan atau udang
  • Pengolahan limbah cair

Cara Kerja Sensor pH

Sensor pH menghasilkan tegangan analog yang berubah sesuai dengan nilai pH larutan. Tegangan ini kemudian dibaca oleh ADC (Analog to Digital Converter) pada ESP32.

Alur sederhananya:

Larutan → Probe pH → Modul pH → ADC ESP32 → Data Digital

ESP32 memiliki ADC 12-bit, sehingga nilai bacaan berada pada rentang 0 – 4095.

Wiring ESP32 ke Modul PH

Hubungkan pin modul PH ke ESP32 sebagai berikut:

PHESP32
VCC3.3V / 5V (sesuai modul)
GNDGND
POGPIO 34 / 35 / 32 / 33

 

Catatan penting:

Gunakan ADC1 pada ESP32 (GPIO 32–39)

Hindari ADC2 jika ESP32 menggunakan WiFi
Penjelasan Gambar

Program Kalibrasi

#define PH_PIN 35
#define VREF 3.3   // analog reference voltage(Volt) of the ADC
#define ADC 4096.0 // adc max

void setup()
{
  Serial.begin(115200);
}

void loop()
{
  float value = analogRead(potPin);
  Serial.print(value);
  Serial.print(" | ");
  float voltage = Value * (VREF / ADC);

  Serial.println(voltage);
  delay(500);
}

setelah menghubungkan ph dengan esp32 kita harus melakukan kalibrasi hardware sehingga module bisa bekerja dengan baik, hubungkan input probe dengan ground sebagai berikut:

Penjelasan Gambar

lihat pada serial usahan nilai tegangannya di sekitar 2.50, jika belum sesui putar potensio yang dekat dengan probe. jika sudah sesui lepaskan jumper dan hubungkan dengan probe dan lanjutkan ke proses testing.

Full Program

#define PH_PIN 35  
#define VREF 3.3   // analog reference voltage(Volt) of the ADC
#define ADC 4096.0 // adc max

#define CALIBRATION_fACTOR 21.0

int buffer_arr[10];


float PhRun(){
  // Baca data analog
  for (int i = 0; i < 10; i++) {
    buffer_arr[i] = analogRead(PH_PIN);
    delay(30);
  }

  // Urutkan data (bubble sort)
  static int temp = 0;
  for (int i = 0; i < 9; i++) {
    for (int j = i + 1; j < 10; j++) {
      if (buffer_arr[i] > buffer_arr[j]) {
        temp = buffer_arr[i];
        buffer_arr[i] = buffer_arr[j];
        buffer_arr[j] = temp;
      }
    }
  }

  // Ambil rata-rata dari data tengah
  unsigned long int avgval = 0;
  for (int i = 2; i < 8; i++)
    avgval += buffer_arr[i];

  // Konversi ke voltase ESP32
  float volt = (float)avgval * VREF / ADC / 6;
  return -5.70 * volt + CALIBRATION_fACTOR;
}

void setup() {
  Serial.begin(115200);
}

void loop() {
  float ph = PhRun();
  Serial.print("pH Value: ");
  Serial.println(ph);

  delay(1000); 
}

Rubah nilai CALIBRATION_fACTOR supaya nilai ph keluar nilai 7, karena pada cairan default ph bernilai 7.

dengan ini phmu sudah berjalan dengan baik, Happy coding!! 🎉🎉🎉



#arduino #esp32 #ph