Monitor PH - Turbidity - Suhu via IOT Blynk 2.0 ARDUINO Wifi
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat digunakan untuk memonitor PH, Turbidity dan suhu secara realtime dengan menggunakan IOT Blynk 2.0 sehingga bisa dipantau secara jarak jauh untuk lebih jelasnya berikut adalah koding dan skemanya.
a. Skema
b. Program Arduino IDE
#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 adctds,tds,tdsx;
int adcPH;
int TempCx;
int pHValuex;
int ntux;
float ntufix;
int relay = 8;
void setup(){
Wire.begin();
sensors.begin();
Serial.begin(9600);
lcd.begin();
lcd.clear();
pinMode(relay,OUTPUT);
}
void loop(){
adctds = analogRead(A1);
tds = map(adctds, 855, 1, 0, 100);
tdsx = tds * 100;
adcPH = analogRead(A0); //menggunakan pin A0 untuk membaca output sensor pH
pHValue = (adcPH-962.19)/ -33.961;
pHValuex = pHValue * 100.0;
sensors.requestTemperatures();
TempC = sensors.getTempCByIndex(0); // Celcius
TempCx = TempC * 100.0;
lcd.setCursor(0,1);
lcd.print("TDS= ");
lcd.print(tds);
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(" ");
if(pHValue > 7){
digitalWrite(relay,LOW);
}
if(pHValue <= 7){
digitalWrite(relay,HIGH);
}
Serial.print("*");
Serial.print(tdsx);
Serial.print(",");
Serial.print(pHValuex);
Serial.print(",");
Serial.print(TempCx);
Serial.println("#");
delay(900);
}
c. Program ESP8266
#define BLYNK_TEMPLATE_ID "TMPL6wOCxxxx"
#define BLYNK_TEMPLATE_NAME "monitor daya"
#define BLYNK_AUTH_TOKEN "VOK0cWiFN5ycHj3SV_snEDXTfTxxxxxx"
#define BLYNK_PRINT Serial
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.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;
int pinValue;
BlynkTimer timer;
char ssid[] = "hotspothpku";
char pass[] = "123456789";
BLYNK_WRITE(V3)
{
pinValue = param.asInt();
if(pinValue == 1){
digitalWrite(D6, LOW);
}
if(pinValue == 0) {
digitalWrite(D6, HIGH);
}
// Serial.print("button value is: ");
// Serial.println(pinValue);
}
void sendSensor()
{
Blynk.virtualWrite(V0, pHValue);
Blynk.virtualWrite(V1, ntu);
Blynk.virtualWrite(V2, TempC);
delay(1000);
}
void setup(){
Serial.begin(9600);
dataIn="";
Blynk.begin(BLYNK_AUTH_TOKEN, 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");
}
d. VIDEO HASILNYA
No comments:
Post a Comment