Translate

Alat Penyiraman Kebun / Tanaman Otomatis 4 Waktu dan Monitor Soil Moisture IOT Blynk

Alat Penyiraman Kebun / Tanaman Otomatis  4 Waktu dan Monitor Soil Moisture IOT Blynk
 

         Pada kesempatan kali ini saya akan menjelaskan mengenai sebuah alat yang dapat mengendalikan on off pompa sesuai dengan settingan waktu, jadi ketika waktu sudah sesuai dengan waktu yang di set maka akan menghidupkan pompa melalui SSR yang dipasang. untuk lebih jelasnya berikut adalah kodingnya.  
 
 
1. Skema
 
 
 
2. Program Arduino IDE
 
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DS3231.h>
#include <EEPROM.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2); // RX pin 2, TX pin 3

LiquidCrystal_I2C lcd(0x27,16,2);
DS3231  rtc(SDA, SCL);

int addr1 = 0;
int addr2 = 1;
int addr3 = 2;
int addr4 = 3;
int addr5 = 4;

Time  t;
int jampagi,jamsiang,jamsore,jammalam;
int soil, adcsoil; 
int btset = 6;
int btup = 4;
int btdown = 7;
int btok = 5;
int btsetx;
int btupx;
int btdownx;
int btokx;
int relayout = 8;
int tanda;

void setup(){  
  
jampagi = EEPROM.read(addr1);
jamsiang = EEPROM.read(addr2);
jamsore = EEPROM.read(addr3);
jammalam = EEPROM.read(addr4);

pinMode(relayout,OUTPUT);
digitalWrite(relayout,LOW);

pinMode(btset,INPUT_PULLUP);
pinMode(btup,INPUT_PULLUP);
pinMode(btdown,INPUT_PULLUP);
pinMode(btok,INPUT_PULLUP);

mySerial.begin(9600);
lcd.begin();  
lcd.clear(); 

rtc.begin();
//rtc.setDOW(WEDNESDAY);     // Set Day-of-Week to SUNDAmy
//rtc.setTime(17, 35, 0);     // Set the time to 12:00:00 (24hr format)
//rtc.setDate(1, 1, 2014);   // Set the date to January 1st, 2014

}

void loop(){

btsetx = digitalRead(btset);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
btokx = digitalRead(btok);

if(btsetx == 0){
delay(1000);
lcd.clear();
setjampagi();
setjamsiang();
setjamsore();
setjammalam();
}
  
 t = rtc.getTime();

 adcsoil = analogRead(A0);             
 soil = map(adcsoil, 0, 1023, 100, 0);
 
if((t.hour == jampagi)&&(jampagi > 0)&&(tanda == 0)){
  digitalWrite(relayout,HIGH);
  delay(60000);
  delay(60000);
  delay(60000);
  delay(60000);
  delay(60000);
  digitalWrite(relayout,LOW);
  tanda = 1;
}

if((t.hour == jamsiang)&&(jamsiang > 0)&&(tanda == 1)){
  digitalWrite(relayout,HIGH);
  delay(60000);
  delay(60000);
  delay(60000);
  delay(60000);
  delay(60000);
  digitalWrite(relayout,LOW);
  tanda = 2;
}

if((t.hour == jamsore)&&(jamsore > 0)&&(tanda == 2)){
  digitalWrite(relayout,HIGH);
  delay(60000);
  delay(60000);
  delay(60000);
  delay(60000);
  delay(60000);
  digitalWrite(relayout,LOW);
  tanda = 3;
}

if((t.hour == jammalam)&&(jammalam > 0)&&(tanda == 3)){
  digitalWrite(relayout,HIGH);
  delay(60000);
  delay(60000);
  delay(60000);
  delay(60000);
  delay(60000);
  digitalWrite(relayout,LOW);
  tanda = 0;
}

  lcd.setCursor(0,0);
  lcd.print("S: ");
  lcd.print(soil);
  lcd.print(" %  ");
  lcd.print(jampagi);
  lcd.print("/");
  lcd.print(jamsiang);
  lcd.print(" ");

  lcd.setCursor(0,1);
  lcd.print(t.hour, DEC);
  lcd.print(":");
  lcd.print(t.min, DEC);
  lcd.print(":");
  lcd.print(t.sec, DEC);
  lcd.print(" ");

  lcd.print(jamsore);
  lcd.print("/");
  lcd.print(jammalam);
  lcd.print("  ");
  
  mySerial.println(soil);  
  delay(1000);
}

void setjampagi(){
  
btsetx = digitalRead(btset);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
btokx = digitalRead(btok);  

  lcd.setCursor(0,0);
  lcd.print("Waktu Pakan Pagi");
  lcd.setCursor(0,1);
  lcd.print("Jam: ");
  lcd.print(jampagi);
  lcd.print("   ");

if(btupx == 0){
  delay(200);
  jampagi++; 
}

if(btdownx == 0){
  delay(200);
  jampagi--; 
}

if(jampagi > 23){
jampagi = 0;  
}

if(btokx == 0){
  lcd.clear();
  delay(2000);
  EEPROM.write(addr1, jampagi);
  return; 
}

setjampagi();  
}

void setjamsiang(){
  
btsetx = digitalRead(btset);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
btokx = digitalRead(btok);  

  lcd.setCursor(0,0);
  lcd.print("Waktu Pakan Siang  ");
  lcd.setCursor(0,1);
  lcd.print("Jam: ");
  lcd.print(jamsiang);
  lcd.print("   ");

if(btupx == 0){
  delay(200);
  jamsiang++; 
}

if(btdownx == 0){
  delay(200);
  jamsiang--; 
}

if(jamsiang > 23){
jamsiang = 0;  
}

if(btokx == 0){
  lcd.clear();
  delay(2000);
  EEPROM.write(addr2, jamsiang);
  return; 
}

setjamsiang();  
}

void setjamsore(){
  
btsetx = digitalRead(btset);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
btokx = digitalRead(btok);  

  lcd.setCursor(0,0);
  lcd.print("Waktu Pakan Sore  ");
  lcd.setCursor(0,1);
  lcd.print("Jam: ");
  lcd.print(jamsore);
  lcd.print("   ");

if(btupx == 0){
  delay(200);
  jamsore++; 
}

if(btdownx == 0){
  delay(200);
  jamsore--; 
}

if(jamsore > 23){
jamsore = 0;  
}

if(btokx == 0){
  lcd.clear();
  delay(2000);
  EEPROM.write(addr3, jamsore);
  return; 
}

setjamsore();  
}

void setjammalam(){
  
btsetx = digitalRead(btset);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
btokx = digitalRead(btok);  

  lcd.setCursor(0,0);
  lcd.print("Waktu Pakan Malam  ");
  lcd.setCursor(0,1);
  lcd.print("Jam: ");
  lcd.print(jammalam);
  lcd.print("   ");

if(btupx == 0){
  delay(200);
  jammalam = jammalam + 1; 
}

if(btdownx == 0){
  delay(200);
  jammalam = jammalam - 1; 
}

if(jammalam > 23){
jammalam = 0;  
}

if(btokx == 0){
  lcd.clear();
  delay(2000);
  EEPROM.write(addr4, jammalam);
  return; 
}

setjammalam();  
 
 
 
3. Program ESP8266
 
 #define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "FGHGTTytyuccgJJ"
#define BLYNK_TEMPLATE_NAME "Garden"
#define BLYNK_AUTH_TOKEN "jkjhKJHkJHKJKHETWUIIUYiuyiuyiuytsffc"

#include <SPI.h>
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

BlynkTimer timer;

char ssid[] = "hotspotwifi";
char pass[] = "12345678";

int soil;

void kirimdata()
{
  Blynk.virtualWrite(V0,soil);
}


void setup() {
  Serial.begin(9600);  
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
  timer.setInterval(1000L, kirimdata);

}


void loop() {

  if (Serial.available() > 0) {
    soil = Serial.parseInt();
    //Serial.print("Received integer: ");
    //Serial.println(soil);
  }
   
Blynk.run();
timer.run(); // Initiates BlynkTimer

delay(100);
}
 
 
 
4. VIDEO HASILNYA
 

 

No comments:

Post a Comment