Translate

Stirer Kendali Jarak Jauh Online Blynk 2.0



        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yaitu Stirer Kendali Jarak Jauh Online Blynk yang mana fungsinya yaitu untuk mencampurkan cairan dan juga mengaduk secara otomatis dengan timer. alat ini diinput menggunakan aplikasi Blynk 2.0 secara online jarak jauh sehingga memuahkan penggunaan. untuk lebih jelasnya berikut adalah koding dan skemanya.  


1. Komponen



2. Program Arduino Uno

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <DS3231.h>

LiquidCrystal_I2C lcd(0x27,20,4);

DS3231  rtc(SDA, SCL);

// Init a Time-data structure
Time  t;

#define ONE_WIRE_BUS 8
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void(* resetFunc) (void) = 0;

int temp;
int x = 5;
int y;
int tanda;

float TempC;
int ssr = 7;
int motor1 = 5;
int motor2 = 6;

int waktu;
int value1;
int value2;
int value3;
int value4;
int value5;
int value6;
int value7;

int pompa1 = 2;
int pompa2 = 3;
int pompa3 = 9;
int pompa4 = 10;
int pompa;
int motor;
int suhu;
int jam;
int menit;
int detik;
int tombol;
int sampling;

int datain1;
int datain2;
int datain3;
int datain4;
int datain5;
int datain6;
int datain7;
int datain8;

String dataIn;
String dt[10];
int i;
boolean parsing = false;

void setup()
{
 
  dataIn="";
  Serial.begin(9600);
  lcd.begin();
  lcd.clear();
  lcd.noCursor();
  delay(10);
  
  Wire.begin();
  sensors.begin();
  rtc.begin();
  pinMode(ssr,OUTPUT);
  pinMode(pompa1,OUTPUT);
  pinMode(pompa2,OUTPUT); 
  pinMode(pompa3,OUTPUT);
  pinMode(pompa4,OUTPUT);   
  pinMode(motor1,OUTPUT);
  pinMode(motor2,OUTPUT); 
  digitalWrite(motor1,LOW);
  digitalWrite(motor2,LOW); 
  // The following lines can be uncommented to set the date and time
  //rtc.setDOW(WEDNESDAY);     // Set Day-of-Week to SUNDAY
  rtc.setTime(0, 0, 0);     // Set the time to 12:00:00 (24hr format)
  //rtc.setDate(1, 1, 2014); 

}

void loop()
{

while(Serial.available()>0) {
//   dataIn="";
    char inChar = (char)Serial.read();
    dataIn += inChar;
    if (inChar == '\n') {
    parsing = true;
  }
}

if(parsing){
       
  lcd.setCursor(0,0);
  lcd.print("pompa:");
  lcd.print(pompa);
  lcd.print(" ml/s  ");
  lcd.setCursor(0,1);
  lcd.print("motor:");
  lcd.print(motor);
  lcd.print(" rpm   ");
  lcd.setCursor(0,2);
  lcd.print("suhu:");
  lcd.print(suhu);
  lcd.print(" c  ");
  lcd.setCursor(0,3);
  lcd.print("waktu:");
  lcd.print(jam);
  lcd.print(":");
  lcd.print(menit);
  lcd.print(":");
  lcd.print(detik);
  lcd.print("   ");
  lcd.setCursor(18,0);
  lcd.print(sampling);
  lcd.print(" ");

 delay(1000);

if(tombol == 1){
  datain7 = 0;
  delay(1000);
  lcd.clear();
  setsuhu();
  rtc.setTime(0, 0, 0);
  mulai();
  selesai();
}
 
parsingData();
  
 }
}

void parsingData(){
int j=0;

//kirim data yang telah diterima sebelumnya
//Serial.print("data masuk : ");
//Serial.print(dataIn);
//Serial.print("\n");

//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();
 datain4 = dt[3].toInt();
 datain5 = dt[4].toInt();
 datain6 = dt[5].toInt();
 datain7 = dt[6].toInt();
 datain8 = dt[7].toInt();
 
 pompa = datain1 / 1;
 motor = datain2 / 1;
 suhu = datain3 / 1;
 jam = datain4 / 1;
 menit = datain5 / 1;
 detik = datain6 / 1;
 sampling = datain7 / 1;
 tombol = datain8 / 1;
 
}

void mulai(){

analogWrite(motor1,motor);
analogWrite(motor2,motor);
  
t = rtc.getTime();
sensors.requestTemperatures();
TempC = sensors.getTempCByIndex(0); // Celcius

  lcd.setCursor(0,0);
  lcd.print("pompa:");
  lcd.print(pompa);
  lcd.print(" ml/s  ");
  lcd.setCursor(0,1);
  lcd.print("motor:");
  lcd.print(motor);
  lcd.print(" Rpm   ");
  lcd.setCursor(0,2);
  lcd.print("suhu:");
  lcd.print(TempC);
  lcd.print(" / ");
  lcd.print(suhu);
  lcd.print(" c  ");
  lcd.setCursor(0,3);
  lcd.print("waktu:");
  lcd.print(t.hour, DEC);
  lcd.print(":");
  lcd.print(t.min, DEC);
  lcd.print(":");
  lcd.print(t.sec, DEC);
  lcd.print("   ");

if((t.hour == jam)&&(t.min == menit)&&(t.sec == detik)){
lcd.clear();
delay(3000);
return;  
}

if(t.sec == 59){ 
waktu++;
delay(1000);  
}

if(waktu == sampling){ 
digitalWrite(pompa1,HIGH);
digitalWrite(pompa2,HIGH); 
delay(pompa); 
digitalWrite(pompa1,LOW);
digitalWrite(pompa2,LOW); 
delay(pompa);  
digitalWrite(pompa3,HIGH);
digitalWrite(pompa4,HIGH); 
delay(pompa); 
digitalWrite(pompa3,LOW);
digitalWrite(pompa4,LOW);
delay(1000);   
waktu = 0;  
}
  
if(TempC >= suhu){
  digitalWrite(ssr,LOW);
}

if(TempC < suhu){
  digitalWrite(ssr,HIGH);
}

mulai();  
}

void selesai(){
lcd.setCursor(0,0);
lcd.print("selesai");  
datain7 = 0;
tanda = 0;
digitalWrite(motor1,LOW);
digitalWrite(motor2,LOW);
delay(5000);
resetFunc();
}

void setsuhu(){
sensors.requestTemperatures();
TempC = sensors.getTempCByIndex(0); // Celcius
  
  lcd.setCursor(0,0);
  lcd.print("suhu:");
  lcd.print(TempC);
  lcd.print(" / ");
  lcd.print(suhu);
  lcd.print(" c  ");

digitalWrite(ssr,HIGH);

if(TempC >= suhu){
  delay(1000);
  lcd.clear();
  return;  
}

setsuhu();  
}



3. Program ESP8266

#define BLYNK_TEMPLATE_ID "RTYHVHKFCDhjk"
#define BLYNK_TEMPLATE_NAME "stirer projek"
#define BLYNK_AUTH_TOKEN "HGGVHGCHFGDKJHKJGJVGCGcfhgvghchgh"

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char ssid[] = "hotspothpku";       
char pass[] = "123456789";

int pompa;
int motor;
int suhu;
int jam;
int menit;
int detik;
int tombol;
int sampling;
int x = 0;

// function to assign value to variable Slider_Value
BLYNK_WRITE(V0)   
{
  pompa = param.asInt(); // assigning incoming value from pin V0 to a variable 
}

BLYNK_WRITE(V1)
{
  motor = param.asInt(); // assigning incoming value from pin V0 to a variable
}

BLYNK_WRITE(V2)
{
  suhu = param.asInt(); // assigning incoming value from pin V0 to a variable 
}

BLYNK_WRITE(V3)
{
  jam = param.asInt(); // assigning incoming value from pin V0 to a variable 
}

BLYNK_WRITE(V4)
{
  menit = param.asInt(); // assigning incoming value from pin V0 to a variable 
}

BLYNK_WRITE(V5)
{
  detik = param.asInt(); // assigning incoming value from pin V0 to a variable 
}

BLYNK_WRITE(V6)
{
  sampling = param.asInt(); // assigning incoming value from pin V0 to a variable 
}

BLYNK_WRITE(V7)
{
  tombol = param.asInt(); // assigning incoming value from pin V0 to a variable 
}

void setup()
{   
  Serial.begin(9600);
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}

void loop()
{             
  Serial.print("*");
  Serial.print(pompa);
  Serial.print(",");
  Serial.print(motor);
  Serial.print(",");
  Serial.print(suhu);
  Serial.print(",");
  Serial.print(jam);
  Serial.print(",");
  Serial.print(menit);
  Serial.print(",");
  Serial.print(detik);
  Serial.print(",");
  Serial.print(sampling);
  Serial.print(",");
  Serial.print(tombol);
  Serial.println("#");   
  
  Blynk.run();

delay(200);  
}



4. VIDEO HASILNYA



No comments:

Post a Comment