Monitor PH dan SUHU serta Turbidity ONLINE BLYNK
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yg bisa digunakan untuk memonitor PH dan suhu serta TDS dalam satu alat secara online dengan aplikasi Blynk, alat ini bisa memonitor secara jarak jauh karena menggunakan media komunikasi internet. untuk lebih jelasnya berikut adalah koding dan daftar komponenya.
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#define ONE_WIRE_BUS 5
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27,16,2);
float TempC;
float pHValue;
//deklarasi pin analog
float ntu;
int adc;
int adcPH;
int TempCx;
int pHValuex;
int ntux;
float ntufix;
void setup(){
Wire.begin();
sensors.begin();
Serial.begin(9600);
lcd.begin();
lcd.clear();
}
void loop(){
adc = analogRead(A1);
ntu = (adc - 912.5)/-0.279;
ntux = ntu*100.0;
ntufix = ntux/100.0;
adcPH = analogRead(A0); //menggunakan pin A0 untuk membaca output sensor pH
pHValue = (adcPH-762.19)/ -33.961;
pHValuex = pHValue * 100.0;
sensors.requestTemperatures();
TempC = sensors.getTempCByIndex(0); // Celcius
TempCx = TempC * 100.0;
lcd.setCursor(0,1);
lcd.print("NTU= ");
lcd.print(ntufix,1);
lcd.print(" ");
lcd.setCursor(8,0);
lcd.print("T:");
lcd.print(TempC,1);
lcd.print("C");
lcd.setCursor(0,0);
lcd.print("PH:");
lcd.print(pHValue,2);
lcd.print(" ");
Serial.print("*");
Serial.print(ntux);
Serial.print(",");
Serial.print(pHValuex);
Serial.print(",");
Serial.print(TempCx);
Serial.println("#");
delay(900);
}
g. Program Wemos D1
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
float TempC = 0;
float pHValue = 0;
float ntu = 0;
int datain1;
int datain2;
int datain3;
String dataIn;
String dt[10];
int i;
boolean parsing=false;
char auth[ ] = "yjhgjhgj78676hhgjhvjhvhgjh876jhgjkjh7";
char ssid[ ] = "myHotspotku";
char pass[ ] = "1123456789";
SimpleTimer timer;
void sendSensor()
{
Blynk.virtualWrite(V2, pHValue);
Blynk.virtualWrite(V3, ntu);
Blynk.virtualWrite(V4, TempC);
delay(1000);
}
void setup(){
Serial.begin(9600);
dataIn="";
Blynk.begin(auth, ssid, pass);
timer.setInterval(1000L, sendSensor);
}
void loop(){
if( Serial.available()>0) {
char inChar = Serial.read();
dataIn += inChar;
if (inChar == '\n') {
parsing = true;
}
}
if(parsing){
parsingData();
parsing=false;
dataIn="";
Blynk.run();
timer.run();
}
}
void parsingData(){
int j=0;
//kirim data yang telah diterima sebelumnya
Serial.print("data masuk :");
Serial.print(dataIn);
//inisialisasi variabel, (reset isi variabel)
dt[j]="";
//proses parsing data
for(i=1;i<dataIn.length();i++){
//pengecekan tiap karakter dengan karakter (#) dan (,)
if ((dataIn[i] == '#') || (dataIn[i] == ','))
{
//increment variabel j, digunakan untuk merubah index array penampung
j++;
dt[j]=""; //inisialisasi variabel array dt[j]
}
else
{
//proses tampung data saat pengecekan karakter selesai.
dt[j] = dt[j] + dataIn[i];
}
}
datain1 = dt[0].toInt();
datain2 = dt[1].toInt();
datain3 = dt[2].toInt();
ntu = datain1 / 100.0;
pHValue = datain2 / 100.0;
TempC =datain3 / 100.0;
//kirim data hasil parsing
Serial.print("data 1 : ");
Serial.println(datain1);
Serial.print("data 2 : ");
Serial.println(datain2);
Serial.print("data 3 : ");
Serial.println(datain3);
Serial.print("\n\n");
}
h. VIDEO HASILNYA