Pengenalan Sensor pH Air RS485
Sensor pH air adalah perangkat yang digunakan untuk mengukur tingkat keasaman atau kebasaan (pH) dalam air. Sensor ini biasanya digunakan dalam aplikasi seperti akuakultur, pengolahan air, dan pemantauan kualitas air. Sensor pH RS485 adalah jenis sensor yang menggunakan protokol komunikasi RS485 untuk mengirim data ke mikrokontroler seperti Arduino, ESP32, atau Arduino Mega.
Fungsi Sensor pH Air
Sensor pH air berfungsi untuk mengukur nilai pH dalam larutan air. Nilai pH adalah skala yang digunakan untuk menentukan tingkat keasaman atau kebasaan suatu larutan, dengan rentang:
- pH < 7: Larutan bersifat asam.
- pH = 7: Larutan bersifat netral.
- pH > 7: Larutan bersifat basa.
Sensor pH air biasanya dilengkapi dengan elektrode (probe) yang sensitif terhadap ion hidrogen (H⁺) dalam larutan. Elektrode ini menghasilkan sinyal listrik yang sebanding dengan konsentrasi ion H⁺, yang kemudian diubah menjadi nilai pH.
Protokol Komunikasi RS485
RS485 adalah standar komunikasi serial yang banyak digunakan dalam aplikasi industri karena keunggulannya, seperti:
- Komunikasi jarak jauh: RS485 dapat mentransmisikan data hingga jarak 1200 meter.
- Multi-device: RS485 mendukung komunikasi multi-drop, artinya beberapa perangkat dapat terhubung ke satu bus komunikasi.
- Tahan terhadap noise: RS485 menggunakan sinyal diferensial, sehingga lebih tahan terhadap gangguan elektromagnetik.
Sensor pH air RS485 menggunakan protokol ini untuk mengirim data pengukuran pH ke perangkat lain, seperti mikrokontroler (Arduino, ESP32, dll.) atau sistem kontrol industri.
Komponen Sensor pH Air RS485
Sensor pH air RS485 terdiri dari beberapa komponen utama:
- Elektrode pH: Probe yang digunakan untuk mengukur pH larutan. Terbuat dari bahan khusus yang sensitif terhadap ion H⁺.
- Modul Pengkondisi Sinyal: Mengubah sinyal analog dari elektrode menjadi sinyal digital yang dapat diproses.
- Modul RS485: Mengubah sinyal digital menjadi format komunikasi RS485 untuk transmisi data.
- Kabel dan Konektor: Digunakan untuk menghubungkan sensor ke perangkat lain.
Cara Kerja Sensor pH Air RS485
- Pengukuran pH: Elektrode pH mengukur konsentrasi ion H⁺ dalam larutan dan menghasilkan sinyal listrik analog.
- Konversi Sinyal: Modul pengkondisi sinyal mengubah sinyal analog menjadi sinyal digital.
- Transmisi Data: Modul RS485 mengirim data digital ke perangkat lain (seperti Arduino atau PLC) menggunakan protokol RS485.
- Pemrosesan Data: Perangkat penerima (misalnya Arduino) membaca data pH dan melakukan pemrosesan lebih lanjut, seperti menampilkan nilai pH atau mengontrol sistem berdasarkan nilai pH.
Kelebihan Sensor pH Air RS485
- Akurasi Tinggi: Sensor pH air RS485 biasanya memiliki akurasi yang tinggi dalam mengukur pH.
- Komunikasi Jarak Jauh: Dapat digunakan dalam aplikasi yang memerlukan transmisi data jarak jauh.
- Tahan terhadap Lingkungan Keras: Cocok untuk digunakan di lingkungan industri yang memiliki tingkat noise elektromagnetik tinggi.
- Integrasi Mudah: Dapat diintegrasikan dengan sistem kontrol seperti Arduino, ESP32, atau PLC.
Aplikasi Sensor pH Air RS485
- Akuakultur: Memantau kualitas air dalam budidaya ikan atau udang.
- Pengolahan Air: Mengontrol proses pengolahan air minum atau air limbah.
- Pertanian Hidroponik: Memantau pH larutan nutrisi dalam sistem hidroponik.
- Industri Kimia: Mengontrol proses kimia yang memerlukan pengukuran pH.
Contoh Penggunaan
Sensor pH air RS485 sering digunakan bersama mikrokontroler seperti Arduino, ESP32, atau Arduino Mega untuk memantau dan mengontrol kualitas air. Data yang dikirim oleh sensor dapat ditampilkan pada layar LCD, dikirim ke cloud (IoT), atau digunakan untuk mengontrol perangkat lain seperti pompa atau valve.
Kegunaan sensor pH air rs485
Sensor pH air RS485 digunakan untuk mengukur tingkat keasaman atau kebasaan suatu air dalam berbagai aplikasi industri dan lingkungan. Berikut beberapa kegunaan utama dari sensor pH air RS485:
- Pengolahan Air: Sensor pH digunakan dalam pengolahan air untuk memastikan kualitas air yang baik. Ini sangat penting dalam sistem penyaringan air minum atau pengolahan limbah. Memantau pH air membantu mencegah kerusakan pada peralatan atau proses yang membutuhkan kondisi pH tertentu.
- Industri Kimia: Dalam industri kimia, proses produksi sering memerlukan kontrol pH yang tepat untuk memastikan produk akhir memiliki kualitas yang diinginkan. Sensor pH RS485 dapat terhubung ke sistem kontrol otomatis yang memungkinkan pemantauan jarak jauh dan penyesuaian pH secara real-time.
- Aquarium dan Budidaya Ikan: Untuk akuarium besar atau budidaya ikan, sensor pH digunakan untuk menjaga kualitas air agar tetap stabil dan sesuai dengan kebutuhan organisme air. Pengukuran pH yang tepat dapat mencegah stres pada ikan dan gangguan pada ekosistem akuarium.
- Pengolahan Makanan dan Minuman: Dalam industri makanan dan minuman, pH memengaruhi rasa, tekstur, dan keamanan produk. Sensor pH digunakan untuk mengontrol proses fermentasi, pengolahan susu, dan pembuatan minuman fermentasi seperti bir dan wine.
- Kontrol Lingkungan: Di lingkungan dengan air limbah atau sistem pengelolaan lingkungan lainnya, sensor pH RS485 digunakan untuk memantau dan mengatur kondisi air untuk mencegah pencemaran atau kerusakan ekosistem.
- Pemantauan Otomatis: RS485 adalah protokol komunikasi yang memungkinkan sensor pH terhubung dengan sistem kontrol jarak jauh, sehingga memungkinkan pemantauan dan pengendalian otomatis pH tanpa perlu intervensi manual. Sistem ini sangat efisien dalam pengelolaan data dan analisis tren.
Wiring Diagram
Berikut adalah diagram kabel sensor air pH

- VCC pada sensor pH -> 12V pada power suply
- GND pada sensor pH -> GND pada power suply
- A+ pada sensor pH -> A+ pada modul RS485
- B- pada sensor pH -> B- pada modul RS485
Menghubungkan Modul RS485 ke Mikrokontroler
- RO (Receiver Output): Data yang diterima dari RS485.
- DI (Driver Input): Data yang dikirim ke RS485.
- DE (Driver Enable): Mengaktifkan pengiriman data.
- RE (Receiver Enable): Mengaktifkan penerimaan data.
- VCC dan GND: Power supply modul.
Cara penggunaan menggunakan arduino uno
Arduino Uno adalah salah satu board mikrokontroler yang paling banyak digunakan. Untuk menghubungkan sensor pH dengan Arduino Uno
Wiring arduino uno menggunakan lcd

Untuk Arduino Uno:
- Hubungkan RO ke pin RX (pin 9).
- Hubungkan DI ke pin TX (pin 10).
- Hubungkan DE dan RE ke pin digital pin 8
- Hubungkan VCC ke 5V dan GND ke GND.
#define EN_RS485 8
#include <ModbusMaster.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h>
const int col = 16;
const int row = 2;
LiquidCrystal_I2C lcd(0x27, col, row);
ModbusMaster node;
SoftwareSerial mySerial(9, 10); // RX, TX
#define SLAVE_ADDR ((uint16_t)0x01)
uint16_t nilai;
float ph;
void preTransmission() {
digitalWrite(EN_RS485, 1);
}
void postTransmission() {
digitalWrite(EN_RS485, 0);
}
void setup() {
// put your setup code here, to run once:
pinMode(EN_RS485, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(5, 0);
lcd.print("TEMINS");
lcd.setCursor(5, 1);
lcd.print("STORE");
delay(5000);
Serial.begin(9600);
mySerial.begin(4800);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
node.begin(SLAVE_ADDR, mySerial);
delay(100);
}
void loop() {
// put your main code here, to run repeatedly:
//lcd.init();
lcd.backlight();
lcd.setCursor(4, 1);
lcd.print("ph: ");
lcd.print(ph);
lcd.setCursor(4, 0);
lcd.print("PH VALUE");
delay(100);
ph = baca_sensor(0) / 100.0;
Serial.println("pH : " + String(ph));
delay(5);
Serial.println("============================================");
delay(100);
}
int baca_sensor(uint16_t alamat) {
int result;
result = node.readHoldingRegisters(alamat, 1);
if (result == node.ku8MBSuccess) {
nilai = node.getResponseBuffer(0);
} else {
Serial.println("modbus fail");
}
return nilai;
}
wiring arduino uno serial monitor

untuk Arduino uno:
- Hubungkan RO ke pin RX (pin 9).
- Hubungkan DI ke pin TX (pin 10).
- Hubungkan DE dan RE ke pin digital pin 8
- Hubungkan VCC ke 5V dan GND ke GND.
#define EN_RS485 8
#include <ModbusMaster.h>
#include <SoftwareSerial.h>
ModbusMaster node;
SoftwareSerial mySerial(9, 10); // RX, TX
#define SLAVE_ADDR ((uint16_t)0x01)
uint16_t nilai;
float ph;
void preTransmission() {
digitalWrite(EN_RS485, 1);
}
void postTransmission() {
digitalWrite(EN_RS485, 0);
}
void setup() {
// put your setup code here, to run once:
pinMode(EN_RS485, OUTPUT);
Serial.begin(9600);
mySerial.begin(4800);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
node.begin(SLAVE_ADDR, mySerial);
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
ph = baca_sensor(0) / 100.0;
Serial.println("pH : " + String(ph));
delay(5);
Serial.println("============================================");
delay(1000);
}
int baca_sensor(uint16_t alamat) {
int result;
result = node.readHoldingRegisters(alamat, 1);
if (result == node.ku8MBSuccess) {
nilai = node.getResponseBuffer(0);
} else {
Serial.println("modbus fail");
}
return nilai;
}
Cara Penggunaan dengan ESP32
ESP32 adalah mikrokontroler yang lebih canggih dengan konektivitas Wi-Fi dan Bluetooth. Dengan ESP32, Anda dapat mengirimkan data pH ke server atau aplikasi web melalui jaringan
wiring esp32 menggunakan lcd

ESP32:
- VCC pada modul MAX485 -> VIN pada ESP32.
- GND pada modul MAX485 -> GND pada ESP32.
- A pada modul MAX485 -> A pada sensor curah hujan.
- B pada modul MAX485 -> B pada sensor curah hujan.
- RO (Receiver Output) pada modul MAX485 -> RX (pin 16) pada ESP32.
- DI (Driver Input) pada modul MAX485 -> TX (pin 17) pada ESP32.
- DE dan RE pada modul MAX485 -> D18 pada ESP32
- download library softwareserial khusus esp 32
#define EN_RS485 18
#include <ModbusMaster.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h>
const int col = 16;
const int row = 2;
LiquidCrystal_I2C lcd(0x27, col, row);
ModbusMaster node;
SoftwareSerial mySerial(16, 17); // RX, TX
#define SLAVE_ADDR ((uint16_t)0x01)
uint16_t nilai;
float ph;
void preTransmission() {
digitalWrite(EN_RS485, 1);
}
void postTransmission() {
digitalWrite(EN_RS485, 0);
}
void setup() {
// put your setup code here, to run once:
pinMode(EN_RS485, OUTPUT);
//lcd.init();
lcd.begin();
lcd.backlight();
lcd.setCursor(5, 0);
lcd.print("TEMINS");
lcd.setCursor(5, 1);
lcd.print("STORE");
delay(5000);
Serial.begin(9600);
mySerial.begin(4800);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
node.begin(SLAVE_ADDR, mySerial);
delay(100);
}
void loop() {
// put your main code here, to run repeatedly:
//lcd.init();
lcd.begin();
lcd.backlight();
lcd.setCursor(4, 1);
lcd.print("ph: ");
lcd.print(ph);
lcd.setCursor(4, 0);
lcd.print("PH VALUE");
delay(10000);
ph = baca_sensor(0) / 100.0;
Serial.println("pH : " + String(ph));
delay(5);
// Serial.println("============================================");
delay(100);
}
int baca_sensor(uint16_t alamat) {
int result;
result = node.readHoldingRegisters(alamat, 1);
if (result == node.ku8MBSuccess) {
nilai = node.getResponseBuffer(0);
} else {
Serial.println("modbus fail");
}
return nilai;
}
Wiring esp32 menggunakan serial monitor

esp32:
- VCC pada modul MAX485 -> VIN pada ESP32.
- GND pada modul MAX485 -> GND pada ESP32.
- A pada modul MAX485 -> A pada sensor curah hujan.
- B pada modul MAX485 -> B pada sensor curah hujan.
- RO (Receiver Output) pada modul MAX485 -> RX (pin 16) pada ESP32.
- DI (Driver Input) pada modul MAX485 -> TX (pin 17) pada ESP32.
- DE dan RE pada modul MAX485 -> D18 pada ESP32
- download library softwareserial khusus esp 32
#define EN_RS485 18
#include <ModbusMaster.h>
#include <SoftwareSerial.h>
ModbusMaster node;
SoftwareSerial mySerial(16, 17); // RX, TX
#define SLAVE_ADDR ((uint16_t)0x01)
uint16_t nilai;
float ph;
void preTransmission() {
digitalWrite(EN_RS485, 1);
}
void postTransmission() {
digitalWrite(EN_RS485, 0);
}
void setup() {
// put your setup code here, to run once:
pinMode(EN_RS485, OUTPUT);
Serial.begin(9600);
mySerial.begin(4800);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
node.begin(SLAVE_ADDR, mySerial);
delay(100);
}
void loop() {
// put your main code here, to run repeatedly:
ph = baca_sensor(0) / 100.0;
Serial.println("pH : " + String(ph));
delay(5);
// Serial.println("============================================");
delay(100);
}
int baca_sensor(uint16_t alamat) {
int result;
result = node.readHoldingRegisters(alamat, 1);
if (result == node.ku8MBSuccess) {
nilai = node.getResponseBuffer(0);
} else {
Serial.println("modbus fail");
}
return nilai;
}
Cara Penggunaan dengan Arduino Mega
Arduino Mega memiliki lebih banyak pin dan lebih banyak port serial dibandingkan dengan Arduino Uno, yang membuatnya lebih fleksibel untuk aplikasi dengan banyak perangkat RS485
Wiring arduino mega menggunakan lcd

Arduino mega :
- VCC pada modul MAX485 -> 5V pada Arduino.
- GND pada modul MAX485 -> GND pada Arduino.
- A pada modul MAX485 -> A pada sensor arah angin.
- B pada modul MAX485 -> B pada sensor arah angin.
- RO (Receiver Output) pada modul MAX485 -> RX 1 (pin 19) pada Arduino.
- DI (Driver Input) pada modul MAX485 -> TX 1 (pin 18) pada Arduino.
- DE dan RE pada modul MAX485 -> D10 pada Arduino (atau pin digital lainnya).
#define EN_RS485 10
#include <ModbusMaster.h>
#include <LiquidCrystal_I2C.h>
const int col = 16;
const int row = 2;
LiquidCrystal_I2C lcd(0x27, col, row);
ModbusMaster node;
//SoftwareSerial mySerial(19, 18); // RX, TX
#define SLAVE_ADDR ((uint16_t)0x01)
uint16_t nilai;
float ph;
void preTransmission() {
digitalWrite(EN_RS485, 1);
}
void postTransmission() {
digitalWrite(EN_RS485, 0);
}
void setup() {
// put your setup code here, to run once:
pinMode(EN_RS485, OUTPUT);
lcd.init();
//lcd.begin();
lcd.backlight();
lcd.setCursor(5, 0);
lcd.print("TEMINS");
lcd.setCursor(5, 1);
lcd.print("STORE");
delay(5000);
Serial.begin(9600);
Serial1.begin(4800);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
node.begin(SLAVE_ADDR, Serial1);
delay(100);
}
void loop() {
// put your main code here, to run repeatedly:
//lcd.init();
//lcd.begin();
lcd.backlight();
lcd.setCursor(4, 1);
lcd.print("ph: ");
lcd.print(ph);
lcd.setCursor(4, 0);
lcd.print("PH VALUE");
delay(100);
ph = baca_sensor(0) / 100.0;
Serial.println("pH : " + String(ph));
delay(5);
// Serial.println("============================================");
delay(100);
}
int baca_sensor(uint16_t alamat) {
int result;
result = node.readHoldingRegisters(alamat, 1);
if (result == node.ku8MBSuccess) {
nilai = node.getResponseBuffer(0);
} else {
Serial.println("modbus fail");
}
return nilai;
}
Wiring arduino menggunakan serial monitor

Arduino mega:
- VCC pada modul MAX485 -> 5V pada Arduino.
- GND pada modul MAX485 -> GND pada Arduino.
- A pada modul MAX485 -> A pada sensor arah angin.
- B pada modul MAX485 -> B pada sensor arah angin.
- RO (Receiver Output) pada modul MAX485 -> RX 1 (pin 19) pada Arduino.
- DI (Driver Input) pada modul MAX485 -> TX 1 (pin 18) pada Arduino.
- DE dan RE pada modul MAX485 -> D10 pada Arduino (atau pin digital lainnya).
#define EN_RS485 10
#include <ModbusMaster.h>
#include <LiquidCrystal_I2C.h>
const int col = 16;
const int row = 2;
LiquidCrystal_I2C lcd(0x27, col, row);
ModbusMaster node;
//SoftwareSerial mySerial(19, 18); // RX, TX
#define SLAVE_ADDR ((uint16_t)0x01)
uint16_t nilai;
float ph;
void preTransmission() {
digitalWrite(EN_RS485, 1);
}
void postTransmission() {
digitalWrite(EN_RS485, 0);
}
void setup() {
// put your setup code here, to run once:
pinMode(EN_RS485, OUTPUT);
Serial.begin(9600);
Serial1.begin(4800);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
node.begin(SLAVE_ADDR, Serial1);
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
ph = baca_sensor(0) / 100.0;
Serial.println("pH : " + String(ph));
delay(5);
// Serial.println("============================================");
delay(1000);
}
int baca_sensor(uint16_t alamat) {
int result;
result = node.readHoldingRegisters(alamat, 1);
if (result == node.ku8MBSuccess) {
nilai = node.getResponseBuffer(0);
} else {
Serial.println("modbus fail");
}
return nilai;
}
Kesimpulan
Sensor pH air RS485 adalah alat yang sangat berguna untuk mengukur pH dalam berbagai aplikasi, terutama yang memerlukan komunikasi jarak jauh dan ketahanan terhadap lingkungan yang keras. Dengan protokol RS485, sensor ini dapat diintegrasikan dengan mudah ke dalam sistem kontrol modern, seperti Arduino atau PLC, untuk pemantauan dan kontrol otomatis.
Jika Anda memiliki pertanyaan lebih lanjut atau memerlukan bantuan dalam mengimplementasikan sensor ini, jangan ragu untuk bertanya!