
Kali ini saya aka menuliskan pengalaman dan sedikit tutorial tetang Arduino, Cara Membuat Alat Ukur Kulitas Air, pH, Suhu, Kekeruhan, Salinitas, Konduktifitas.
Alat ukur atau alat monitoring kualitas air dengan 5 parameter sekaligus, beberapa bulan yang lalu saya dan teman saya membuat alat ini, dengan menggunakan mikrokontroller Arduino Due, dan beberapa sensor untuk mengukur air diantaranya yaitu,
Sensor pH,
Sensor Turbidity,
Sensor Suhu PT100
Sensor Salinitas,
adapun untuk tutorial masing masing setiap sensor bisa di baca pada artikel artikel berikut :
Cara Mengakses Sensor pH dan Kalibrasinya
Cara Mengakses Sensor Salinitas dan Kalibrasinya
Cara Mengakses Sensor Kekeruhan dan Kalibrasinya
sedangkan untuk tutorial sensor suhu PT100 kalian bisa langsung menggunakan example dari librarynya.
semua kalibrasi setiap masing masing sensor saya menggunakan Regresi Linier untuk mendapatkan nilai berdasarkan masing masing satuanya.
pertama yang harus dilakukan adalah pengambilan data dari beberapa sample, semakin banyak data, semakin baik pula hasilnya.

dan project ini hanya di tampilkan pada serial monitor, LCD 16×2, dan Serial Bluetooth Android
jika anda ingin mengembangkan project ini, untuk bisa berbasis IOT, sangat mudah sekali, karena sudah banyak saya menulis Artikel mengenai IOT didalam Blog ini,, hanya tinggal menambahkan Modul WIFI atau GSM, kemudian mengirimkan datanya ke database sendiri ataupun ke layanan IOT milik orang lain, anda sudah berhasil mengembangkan project ini,
ataupun jika anda mau mengembangkan untuk project tanaman di Aquaponik, atau air minum, atau kolam ikan, seharusnya sudah sangat mudah, apalagi dengan berbasis IOT, project anda akan terlihat sangat keren.
baiklah berikut adalah program arduino Due, untuk memonitoring kualitas air berdasarkan 5 paramter yaitu Suhu, pH, turbiditas, Konduktifitas, dan salinitas.
#include <SoftwareSerial.h> SoftwareSerial serial(10,11); #include<DFRobotHighTemperatureSensor.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F, 16, 2); const float voltageRef = 4.0; //2.785; DFRobotHighTemperature PT100 = DFRobotHighTemperature(voltageRef); //Define an PT100 object float temperature[10]; int rata_temperature; #define pinSuhu A0 #define pinTur A1 #define pinPh A2 #define pinTds A3 float teg[10]; byte tur; float rata_rata; float total; float teg1[10]; float konduktifitas; int tds; float rata_rata_teg; float total_tds; float voltage; byte pHValue; int adcPH; void setup() { // put your setup code here, to run once: lcd.begin(); lcd.backlight(); Serial.begin(38400); serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: turbidity(); baca_suhu(); baca_tds(); ph(); lcd.clear(); lcd.setCursor(0,0); lcd.print("T"); lcd.print(rata_temperature); lcd.print((char)223); lcd.setCursor(5,0); lcd.print("P"); lcd.print(pHValue); lcd.setCursor(9,0); lcd.print("Cn"); lcd.print(konduktifitas); lcd.setCursor(1,1); lcd.print("Tr"); lcd.print(tur); lcd.setCursor(8,1); lcd.print("Td"); lcd.print(tds); Serial.println("Temp pH Cond Turb TDS "); Serial.print(rata_temperature);Serial.print(" ");Serial.print(pHValue);Serial.print(" ");Serial.print(konduktifitas);Serial.print(" ");Serial.print(tur);Serial.print(" ");Serial.println(tds); serial.println("Temp pH Cond Turb TDS "); serial.print(rata_temperature);serial.print(" ");serial.print(pHValue);serial.print(" ");serial.print(konduktifitas);serial.print(" ");serial.print(tur);serial.print(" ");serial.println(tds); delay(500); } void turbidity (){ for ( int i=0; i<10; i++){ int val = analogRead(pinTur); teg[i] = val * (5.0/1023); } rata_rata = (teg[0] + teg[1] + teg[2] + teg[3] + teg[4] + teg[5] + teg[6] + teg[7] + teg[8] + teg[9])/10 ; tur = (-1340.4762 * rata_rata) + 3495.1071; } void baca_tds(){ for ( int i=0; i<10; i++){ int val = analogRead(pinTds); teg[i] = val * (5.0/1023); } rata_rata_teg = (teg[0] + teg[1] + teg[2] + teg[3] + teg[4] + teg[5] + teg[6] + teg[7] + teg[8] + teg[9])/10 ; delay(1000); lcd.clear(); tds = (211.2254 * rata_rata_teg) - 144.1466; konduktifitas = (0.3442 * rata_rata_teg) - 0.253; } void ph(){ adcPH = analogRead(pinPh); voltage = adcPH *5.0/1022; pHValue = (6.4516*voltage)-5.7742; } void baca_suhu(){ for (int i=0; i<10; i++){ temperature[i] = PT100.readTemperature(pinSuhu); } rata_temperature = (temperature[0]+temperature[1]+temperature[2]+temperature[3]+temperature[4]+temperature[5]+temperature[6]+temperature[7]+temperature[8]+temperature[9])/10; }
yang belum bagus cara program diatas, saya mencari rata rata nya masih boros menggunakan syntax, karena harus menggunakan Array, sebenarnya, kita bisa mencari rata rata seperti program di bawah
for (int i=0; i<=sampling; i++){
int a = analogRead(pinAnalog);
banyakdata += a;
}
rata_rata = banyakdata/sampling;
dengan program seperti itu kita tinggal merubah nilai sampling nya saja, untuk memperbanyak data yang mau dirata rata kan.
mungkin itu dulu tulisan kali ini, semoga bermanfaat, dan jika ada yang ingin di diskusikan, bisa di komentar bawah, atau chat WA dengan klik tombol WA di pojok kiri bawah.
terimakasih sudah menulis tutorial ini, belum mencoba semoga selalu bermanfaat