Cara Memprogram Sensor PH Tanah Pada ESP32

Cara Memprogram Sensor PH Tanah Pada ESP32

Sensor pH tanah adalah alat yang digunakan untuk mengukur tingkat keasaman atau kebasaan (pH) tanah. pH tanah adalah salah satu faktor penting dalam pertanian dan kebun karena memengaruhi ketersediaan unsur hara bagi tanaman dan aktivitas mikroorganisme di dalam tanah.Berikut ini adalah code untuk memprogram nya :

#include <Arduino.h>


#define pin_PH_tanah 34  // pin input untuk ADC
#define DMSpin 14        // pin output untuk DMS
float PH_tanah= 0;
 


void hitung_ph() {
  analogReadResolution(10);   // mengubah resolusi analog
  digitalWrite(DMSpin, LOW);  // aktifkan DMS
 
  delay(10 * 1000);  // wait DMS capture data
  float ADC = analogRead(pin_PH_tanah);
  //dibawah ini rumus hasil kalibrasi 28-6-2024 
  //rumus untuk arduino harus didapat dari kalibrasi, rumus defaultnya (-0.0233 * ADC) + 12.698
  PH_tanah = -0.0386 * ADC + 16.030;   // ini adalah rumus regresi linier yang wajib anda ganti!
  digitalWrite(DMSpin, HIGH);
  analogReadResolution(12);  // balik awal
  delay(3000);               // wait for DMS ready
}


void setup()
{
Serial.begin(9600);
pinMode(DMSpin,OUTPUT);
pinMode(pin_PH_tanah,INPUT);

}
void loop(){
 
  hitung_ph();
    //saat gak stabil membuat nilai ph -1
  if (PH_tanah < 0) {
    PH_tanah = -1;
  }
  Serial.println("nilai PH_tanah : " + String(PH_tanah));
 


}

Berikut ini adalah penjelasan dari kode di atas :

Bagian Pendefinisian dan Variabel

#define pin_PH_tanah 34  // pin input untuk ADC
#define DMSpin 14        // pin output untuk DMS
float PH_tanah = 0;
  • pin_PH_tanah diset ke pin 34 → pin ini digunakan untuk membaca sinyal analog dari sensor pH.
  • DMSpin diset ke pin 14 → digunakan untuk mengaktifkan atau menonaktifkan sensor pH (DMS).
  • PH_tanah adalah variabel untuk menyimpan nilai pH hasil pembacaan.

Fungsi hitung_ph()

void hitung_ph() {
  analogReadResolution(10);   // ubah resolusi ADC jadi 10-bit (0-1023)
  digitalWrite(DMSpin, LOW);  // aktifkan sensor (DMS aktif saat LOW)
 
  delay(10 * 1000);  // tunggu 10 detik agar sensor stabil dan bisa ambil data

  float ADC = analogRead(pin_PH_tanah);  // baca nilai ADC dari sensor pH

Kalibrasi Sensor

  // rumus regresi linier hasil kalibrasi 28-6-2024
  PH_tanah = -0.0386 * ADC + 16.030;   // harus diganti sesuai hasil kalibrasi sensor masing-masing
  • Di sini dilakukan konversi dari nilai ADC menjadi nilai pH aktual berdasarkan rumus kalibrasi linier.
  • Rumus PH_tanah = -0.0386 * ADC + 16.030 berasal dari eksperimen kalibrasi (mungkin menggunakan larutan pH standar).
  • Contoh rumus default dari sensor serupa adalah (-0.0233 * ADC) + 12.698.
  digitalWrite(DMSpin, HIGH);  // matikan sensor (hemat daya)
  analogReadResolution(12);    // kembalikan resolusi ADC ke default (12-bit)
  delay(3000);                 // delay agar sensor siap digunakan lagi
}

Fungsi setup()

void setup()
{
  Serial.begin(9600);                 // inisialisasi komunikasi serial
  pinMode(DMSpin, OUTPUT);           // pin output untuk kontrol sensor
  pinMode(pin_PH_tanah, INPUT);      // pin input untuk membaca data sensor
}
  • Menyiapkan komunikasi serial dan konfigurasi pin input/output.

Fungsi loop()

void loop(){
  hitung_ph();  // baca dan hitung nilai pH

  if (PH_tanah < 0) {
    PH_tanah = -1;  // jika nilai pH tidak valid, ubah jadi -1
  }

  Serial.println("nilai PH_tanah : " + String(PH_tanah));  // cetak hasil ke serial monitor
}
  • Fungsi loop() akan terus berjalan:
    • Membaca nilai pH.
    • Jika nilai pH negatif (kemungkinan sensor belum stabil), ditetapkan ke -1.
    • Hasilnya ditampilkan lewat Serial Monitor Arduino IDE.

Catatan Tambahan:

  • Resolusi ADC:
    • 10-bit → nilai ADC dari 0–1023.
    • 12-bit → nilai ADC dari 0–4095 (standar di beberapa board seperti ESP32).
  • Kalibrasi sangat penting, karena sensor murah bisa punya deviasi besar. Gunakan larutan buffer pH 4, 7, dan 10 untuk kalibrasi yang akurat.
  • delay(10 * 1000) artinya tunggu 10 detik. Ini cukup lama dan bisa dioptimalkan.

untuk diskusi bisa kontak dibawah ini :

Sosial media :

Apa itu ESP32?