Translate

Tutorial Fuzzy Logic Control Mamdani Menggunakan Matlab Tools

Tutorial Fuzzy Logic Control Mamdani Menggunakan Matlab Tools


          Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah aplikasi yang menggunakan fuzzy logic tools untuk sebuah permasalahan atau diagnosa, yang akan dicontohkan kali ini yaitu bagaimana cara menggunakan fuzzy logic control menggunakan matlab pada kasus diagnosa diabetes dengan variabel inputnya yaitu umur, berat badan dan tekanan darah, dari ketiga faktor tersebut dapat didiagnosa apakah seseorang atau pasien tersebut rentan terkena diabetes ataukah tidak, dengan menggunakan matlab maka semua kemungkinan tersebut dapat diatasi dengan derajat keanggotaannya, jadi akan terlihat kecenderungannya melalui nilai hasil fuzzy-nya sehingga dapat disimpulkan apakah pasien ada kecenderungan mengidap diabetes ataukah tidak. sebenarnya case ini diambil dari sebuah jurnal yang mana jurnal tersebut sudah dipublikasi artinya jurnal tersebut telah melalui serangkaian penelitian sehingga kita bisa pastikan keakuratan datanya. berikut adalah caranya.




a. Membuat Membership Function Input









b. Membership Function Output

  




b. Membuat Membership Function Input di Matlab








c. Membuat Membership Function Output di Matlab






d. Membuat Fuzzy Rule










e. OUTPUT FUZZY







f. VIDEO HASILNYA











Membuat Tempat Sampah Otomatis Buka - Tutup dan Alarm Penuh ( SMART TRASH BIN )

Membuat Tempat Sampah Otomatis Buka - Tutup dan Alarm Penuh ( SMART TRASH BIN )


      Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat berfungsi sebagai tempat sampah pintar yang mana jika ada orang yang ingin membuang sampah maka pada jarak tertentu, tutup tempat sampah akan membuka dengan sendirinya, kemudian jika orang tersebut telah menjauh maka akan menutup dengan sendirinya, terdapat 2 buah indikator yang menandakan tempat sampah kondisi penuh atau kosong, jika sudah penuh maka akan ada alarm yang berbunyi dan led merah akan menyala, namun jika kondisi tempat sampah kosong atau belum penuh maka led hijau akan menyala. untuk sensor yang digunakan adalah HY-SRF05 sebanyak 4 buah, yaitu untuk bagian kanan, kiri, depan dan bagian atas. untuk deteksi orang yang mendekat digunakan sensor jarak yang berada di kanan, kiri dan depan sedangkan untuk sensor volumenya menggunakan sensor yang terdapat diatas. untuk lebih jelasnya berikut adalah skema dan programnya.




a. Arduino Uno






b. Sensor Jarak HY-SRF05





c. Motor Servo





d. LCD 16 x 2 + I2C Converter





e. UBEC 3A





f. Led dan Buzzer






g. Program Arduino IDE

#include <Wire.h>  // i2C Conection Library
#include <LiquidCrystal_I2C.h>  //i2C LCD Library
#include <Servo.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

Servo myservo; 

const int TRIG_PIN1 = 2;
const int ECHO_PIN1 = 3;
const int TRIG_PIN2 = 4;
const int ECHO_PIN2 = 5;
const int TRIG_PIN3 = 6;
const int ECHO_PIN3 = 7;
const int TRIG_PIN4 = A1;
const int ECHO_PIN4 = A0;

int ledm = 11;
int ledh = 10;
int buzzer = 8;

long duration1, distanceCm1;
long duration2, distanceCm2;
long duration3, distanceCm3;
long duration4, distanceCm4;

void setup() {
  myservo.attach(9);

  lcd.begin();
  lcd.noCursor();
  lcd.clear();
 
  pinMode(TRIG_PIN1,OUTPUT);
  pinMode(ECHO_PIN1,INPUT);
  pinMode(TRIG_PIN2,OUTPUT);
  pinMode(ECHO_PIN2,INPUT);
  pinMode(TRIG_PIN3,OUTPUT);
  pinMode(ECHO_PIN3,INPUT);
  pinMode(TRIG_PIN4,OUTPUT);
  pinMode(ECHO_PIN4,INPUT);
  pinMode(ledm,OUTPUT);
  pinMode(ledh,OUTPUT);
  pinMode(buzzer,OUTPUT);
  digitalWrite(buzzer,HIGH);
  
   myservo.write(100);

}


void loop()
{

  digitalWrite(TRIG_PIN1, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN1, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN1, LOW);
  duration1 = pulseIn(ECHO_PIN1,HIGH);

  // convert the time into a distance
  distanceCm1 = duration1 / 29.1 / 2 ;

  digitalWrite(TRIG_PIN2, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN2, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN2, LOW);
  duration2 = pulseIn(ECHO_PIN2,HIGH);

  // convert the time into a distance
  distanceCm2 = duration2 / 29.1 / 2 ;


  digitalWrite(TRIG_PIN3, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN3, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN3, LOW);
  duration3 = pulseIn(ECHO_PIN3,HIGH);

  // convert the time into a distance
  distanceCm3 = duration3 / 29.1 / 2 ;


  digitalWrite(TRIG_PIN4, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN4, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN4, LOW);
  duration4 = pulseIn(ECHO_PIN4,HIGH);

  // convert the time into a distance
  distanceCm4 = duration4 / 29.1 / 2 ;


 lcd.setCursor(0,0);
 lcd.print(distanceCm1);

 lcd.setCursor(0,1);
 lcd.print(distanceCm2);

 lcd.setCursor(8,0);
 lcd.print(distanceCm3);

 lcd.setCursor(8,1);
 lcd.print(distanceCm4);


  if(distanceCm4 <= 10 ){
  digitalWrite(ledm,HIGH); 
  digitalWrite(ledh,LOW); 
  }

  if(distanceCm4 > 5 ){
  digitalWrite(ledh,HIGH);
  digitalWrite(ledm,LOW);
  digitalWrite(buzzer,HIGH);
  
  }
 
  if((distanceCm4 <= 5 )&&(distanceCm1 < 50)&&(distanceCm2 > 50)&&(distanceCm3 > 50)){
  digitalWrite(buzzer,LOW); 
  }
  if((distanceCm4 <= 5 )&&(distanceCm1 > 50)&&(distanceCm2 < 50)&&(distanceCm3 > 50)){
  digitalWrite(buzzer,LOW); 
  }
  if((distanceCm4 <= 5 )&&(distanceCm1 > 50)&&(distanceCm2 > 50)&&(distanceCm3 < 50)){
  digitalWrite(buzzer,LOW); 
  }
 
  if((distanceCm4 <= 5 )&&(distanceCm1 < 50)&&(distanceCm2 < 50)&&(distanceCm3 > 50)){
  digitalWrite(buzzer,LOW); 
  }
  if((distanceCm4 <= 5 )&&(distanceCm1 < 50)&&(distanceCm2 > 50)&&(distanceCm3 < 50)){
  digitalWrite(buzzer,LOW); 
  }
  if((distanceCm4 <= 5 )&&(distanceCm1 > 50)&&(distanceCm2 < 50)&&(distanceCm3 < 50)){
  digitalWrite(buzzer,LOW); 
  }
  if((distanceCm4 <= 5 )&&(distanceCm1 < 50)&&(distanceCm2 < 50)&&(distanceCm3 < 50)){
  digitalWrite(buzzer,LOW); 
  }
  if((distanceCm4 <= 5 )&&(distanceCm1 > 50)&&(distanceCm2 > 50)&&(distanceCm3 > 50)){
  digitalWrite(buzzer,HIGH); 
  }
 
  //=============================================================================================
  if((distanceCm4 > 5 )&&(distanceCm1 < 50)&&(distanceCm2 > 50)&&(distanceCm3 > 50)){
    myservo.write(150);
  }
  if((distanceCm4 > 5 )&&(distanceCm1 > 50)&&(distanceCm2 < 50)&&(distanceCm3 > 50)){
    myservo.write(150); 
  }
  if((distanceCm4 > 5 )&&(distanceCm1 > 50)&&(distanceCm2 > 50)&&(distanceCm3 < 50)){
    myservo.write(150); 
  }
 
  if((distanceCm4 > 5 )&&(distanceCm1 < 50)&&(distanceCm2 < 50)&&(distanceCm3 > 50)){
    myservo.write(150); 
  }
  if((distanceCm4 > 5 )&&(distanceCm1 < 50)&&(distanceCm2 > 50)&&(distanceCm3 < 50)){
    myservo.write(150);
  }
  if((distanceCm4 > 5 )&&(distanceCm1 > 50)&&(distanceCm2 < 50)&&(distanceCm3 < 50)){
    myservo.write(150); 
  }
  if((distanceCm4 > 5 )&&(distanceCm1 < 50)&&(distanceCm2 < 50)&&(distanceCm3 < 50)){
    myservo.write(150);
  }
  if((distanceCm4 > 5 )&&(distanceCm1 > 50)&&(distanceCm2 > 50)&&(distanceCm3 > 50)){
    myservo.write(100); 
  }
 

  delay(1000);
  lcd.clear();

}







h. VIDEO HASILNYA











  

Membuat Alat Kendali Peralatan Rumah Tangga / RELAY Menggunakan WIFI dengan INPUT Jadwal Jam ON / OFF WEBSERVER ARDUINO

Membuat Alat Kendali Peralatan Rumah Tangga / RELAY Menggunakan WIFI dan  INPUT Jadwal  /Jam ON - OFF WEBSERVER ARDUINO RTC


       Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang menggunakan wifi sebagai media alat kendali ON/OFF device dengan input jadwalnya menggunakan browser, jadi sistemnya yaitu webserver yang mana user bisa memasukkan jam dan tanggal kapan alat hidup dan kapan alat mati secara otomatis dengan menggunakan browser, koneksi yang digunakan yaitu wifi sehingga memudahkan user untuk instalasinya, alat ini menggunakan Arduino sebagai kontrollernya dan ethernet shield sebagai jembatan menuju ke WIFI. alat ini juga dilengkapi dengan RTC DS1302 dan 4 buah relay sebagai kendali device, jadi jika jam sekarang sudah sama dengan jam yang diinputkan maka device akan on/off sesuai jadwal yang dimasukkan. untuk lebih jelasnya berikut adalah skema dan programnya.




a. Arduino Mega





b. RTC DS1302





c. Ethernet Shield





d. Modul Relay





e.  Router






f. Program Arduino IDE

-PROGRAM INPUT JADWAL

#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
#include <DS1302.h>

// Init the DS1302
DS1302 rtc(2, 3, 4);

int onkip;
int offkip;
int onkul;
int offkul ;
int onlt;
int offlt;
int onls;
int offls;


byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 0, 102 }; // ip in lan
byte gateway[] = { 192, 168, 0, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80);; //server port

String readString;
Time t;


void setup(void){

  pinMode(A0,OUTPUT);
  pinMode(A1,OUTPUT);
  pinMode(A2,OUTPUT);
  pinMode(A3,OUTPUT);
   
  rtc.halt(false);
  rtc.writeProtect(false);

  // The following lines can be commented out to use the values already stored in the DS1302
  rtc.setDOW(WEDNESDAY);        // Set Day-of-Week to FRIDAY
  rtc.setTime(20, 59, 0);     // Set the time to 12:00:00 (24hr format)
  rtc.setDate(4, 5, 2017);   // Set the date to August 6th, 2010
 
  rtc.writeProtect(true);
 
  Wire.begin();

  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();

  //enable serial data print
  Serial.begin(9600);
  Serial.println("servertest1"); // so I can keep track of what is loaded
}



void loop(void){

t = rtc.getTime();

  // Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        //read char by char HTTP request
        if (readString.length() < 100) {

          //store characters to string
          readString += c;

        }

        //if HTTP request has ended
        if (c == '\n') {

          ///////////////
          Serial.println(readString);

          //now output HTML data header

          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 1");        
          client.println();

          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>INPUT JADWAL</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");

          client.println("<H3>kontrol ON / OFF dan delay lampu");
          client.println("<BR>");
          client.print(rtc.getTimeStr());
          client.print(" ");
          client.println(rtc.getDOWStr(FORMAT_LONG));
          client.print(" ");
          client.print(rtc.getDateStr(FORMAT_LONG,FORMAT_LITTLEENDIAN, '/'));

          client.println("<BR>");
         
          client.println("<BR></H3>");
          client.println("<FORM ACTION=\"http://192.168.0.102:80\" method=get >");

          client.println("JAM ON KIPAS  : <INPUT TYPE=TEXT NAME=\"onkip\" VALUE=\"A\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>");
          client.println("JAM OFF KIPAS: <INPUT TYPE=TEXT NAME=\"offkip\" VALUE=\"B\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>");
         
          client.println("JAM ON KULKAS : <INPUT TYPE=TEXT NAME=\"onkul\" VALUE=\"C\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>"); 
          client.println("JAM OFF KULKAS : <INPUT TYPE=TEXT NAME=\"offkul\" VALUE=\"D\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>");
         
          client.println("JAM ON Lampu Tengah : <INPUT TYPE=TEXT NAME=\"onlt\" VALUE=\"E\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>");
          client.println("JAM OFF Lampu Tengah : <INPUT TYPE=TEXT NAME=\"offlt\" VALUE=\"F\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>");

          client.println("JAM ON Lampu Teras : <INPUT TYPE=TEXT NAME=\"onls\" VALUE=\"G\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>");
          client.println("JAM OFF Lampu Teras : <INPUT TYPE=TEXT NAME=\"offls\" VALUE=\"H\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>");

          client.println("<INPUT TYPE=SUBMIT NAME=\"submit\" VALUE=\" SUBMIT\">");
        
          client.println("</FORM>");
          client.println("<BR>");
          client.println("<h5>");   
          client.println("SET ON KIPAS = ");
          client.println(onkip);
            client.println("<BR>");
          client.println("SET OFF KIPAS = ");
          client.println(offkip);
            client.println("<BR>");
          client.println("SET ON KULKAS = ");
          client.println(onkul);
            client.println("<BR>");
          client.println("SET OFF KULKAS = ");
          client.println(offkul);
            client.println("<BR>");
          client.println("SET ON LAMPU TENGAH = ");
          client.println(onlt);
            client.println("<BR>");
          client.println("SET OFF LAMPU TENGAH =");
          client.println(offlt);
            client.println("<BR>");
          client.println("SET ON LAMPU TERAS = ");
          client.println(onls);
            client.println("<BR>");
          client.println("SET OFF LAMPU TERAS =");
          client.println(offls);
            client.println("<BR>");
           
          client.println("</h5>");
          client.println("<BR>");

          client.println("</BODY>");
          client.println("</HTML>");

          delay(1);
          //stopping client

          client.stop();
        
        

        
          //==============================================
          if(readString.indexOf("A7") >0)//checks for on
          {
             onkip = 21;          
          }

                 
          if(readString.indexOf("B8") >0)//checks for on
          {
             offkip = 8;
          }
        
              
          if(readString.indexOf("C10") >0)//checks for on
          {
             onkul = 1000;
           
          }

                
          if(readString.indexOf("D2") >0)//checks for off
          {
             offkul = 2;
          }
        
        
          if(readString.indexOf("E2") >0)//checks for off
          {
            onlt = 2;
          }
         
          if(readString.indexOf("F2") >0)//checks for off
          {
            offlt = 2;
          }
         
          if(readString.indexOf("G2") >0)//checks for off
          {
            onls = 2;
          }
         
          if(readString.indexOf("H2") >0)//checks for off
          {
            offls = 2;
          }
         
          //===================================
        //   Serial.print(rtc.getDOWStr());
        //   Serial.print(" ");
        //   Serial.print(rtc.getDOWStr(FORMAT_LONG));
        //   Serial.print(" -- ");
        //   Serial.println(rtc.getTimeStr());
 
          if((t.hour == onkip)&&(t.hour > 0)){
          digitalWrite(A0,HIGH);
          }

        
          //clearing string for next read
          readString="";

        }
      }
    }
  }
}





- PROGRAM INPUT JADWAL + KENDALI + MONITORING ADC

#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
#include <DS1302.h>

// Init the DS1302
DS1302 rtc(2, 3, 4);

int onkip;
int offkip;
int onkul;
int offkul ;
int onlt;
int offlt;
int onls;
int offls;


byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 0, 102 }; // ip in lan
byte gateway[] = { 192, 168, 0, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80);; //server port

String readString;
Time t;


void setup(void){

  pinMode(A0,OUTPUT);
  pinMode(A1,OUTPUT);
  pinMode(A2,OUTPUT);
  pinMode(A3,OUTPUT);
   
  rtc.halt(false);
  rtc.writeProtect(false);

  // The following lines can be commented out to use the values already stored in the DS1302
  //rtc.setDOW(WEDNESDAY);        // Set Day-of-Week to FRIDAY
  //rtc.setTime(10, 20, 0);     // Set the time to 12:00:00 (24hr format)
  //rtc.setDate(12, 4, 2017);  

  rtc.writeProtect(true);
 
  Wire.begin();

  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();

  //enable serial data print
  Serial.begin(9600);
  Serial.println("servertest1"); // so I can keep track of what is loaded
}



void loop(void){
 
int dataadc = analogRead(A7);

t = rtc.getTime();

  // Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        //read char by char HTTP request
        if (readString.length() < 100) {

          //store characters to string
          readString += c;

        }

        //if HTTP request has ended
        if (c == '\n') {

          ///////////////
          Serial.println(readString);

          //now output HTML data header

          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 1");        
          client.println();

          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>INPUT JADWAL</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");

          client.println("<H3>kontrol ON / OFF dan delay lampu");
          client.println("<BR>");
          client.print(rtc.getTimeStr());
          client.print(" ");
          client.println(rtc.getDOWStr(FORMAT_LONG));
          client.print(" ");
          client.print(rtc.getDateStr(FORMAT_LONG,FORMAT_LITTLEENDIAN, '/'));

          client.println("<BR>");
           client.println("ADC = ");
           client.println(dataadc);
          client.println("<BR></H3>");
         
          client.println("<FORM ACTION=\"http://192.168.0.102:80\" method=get >");

          client.println("JAM ON KIPAS  : <INPUT TYPE=TEXT NAME=\"onkip\" VALUE=\"A\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>");
          client.println("JAM OFF KIPAS: <INPUT TYPE=TEXT NAME=\"offkip\" VALUE=\"B\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>");
         
          client.println("JAM ON KULKAS : <INPUT TYPE=TEXT NAME=\"onkul\" VALUE=\"C\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>"); 
          client.println("JAM OFF KULKAS : <INPUT TYPE=TEXT NAME=\"offkul\" VALUE=\"D\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>");
         
          client.println("JAM ON Lampu Tengah : <INPUT TYPE=TEXT NAME=\"onlt\" VALUE=\"E\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>");
          client.println("JAM OFF Lampu Tengah : <INPUT TYPE=TEXT NAME=\"offlt\" VALUE=\"F\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>");

          client.println("JAM ON Lampu Teras : <INPUT TYPE=TEXT NAME=\"onls\" VALUE=\"G\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>");
          client.println("JAM OFF Lampu Teras : <INPUT TYPE=TEXT NAME=\"offls\" VALUE=\"H\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR>");

          client.println("<INPUT TYPE=SUBMIT NAME=\"submit\" VALUE=\" SUBMIT\">");
        
          client.println("</FORM>");
          client.println("<BR>");
                  
          client.println("<a href = \"/?lighton1\"\"><input type = 'button' value = 'ON KIPAS' ></a>");
          client.println("<a href = \"/?lightoff1\"\"><input type = 'button' value = 'OFF KIPAS' ></a> ");
          client.println("<a href = \"/?lighton2\"\"><input type = 'button' value = 'ON KULKAS' ></a>");
          client.println("<a href = \"/?lightoff2\"\"><input type = 'button' value = 'OFF KULKAS' ></a> ");
          client.println("<a href = \"/?lighton3\"\"><input type = 'button' value = 'ON LAMPU TENGAH' ></a>");
          client.println("<a href = \"/?lightoff3\"\"><input type = 'button' value = 'OFF LAMPU TENGAH' ></a> ");
          client.println("<a href = \"/?lighton4\"\"><input type = 'button' value = 'ON LAMPU TERAS' ></a>");
          client.println("<a href = \"/?lightoff4\"\"><input type = 'button' value = 'OFF LAMPU TERAS' ></a> ");
          client.println("<BR>");
          client.println("<BR>");       
          client.println("<h5>");   
          client.println("SET ON KIPAS = ");
          client.println(onkip);
            client.println("<BR>");
          client.println("SET OFF KIPAS = ");
          client.println(offkip);
            client.println("<BR>");
          client.println("SET ON KULKAS = ");
          client.println(onkul);
            client.println("<BR>");
          client.println("SET OFF KULKAS = ");
          client.println(offkul);
            client.println("<BR>");
          client.println("SET ON LAMPU TENGAH = ");
          client.println(onlt);
            client.println("<BR>");
          client.println("SET OFF LAMPU TENGAH =");
          client.println(offlt);
            client.println("<BR>");
          client.println("SET ON LAMPU TERAS = ");
          client.println(onls);
            client.println("<BR>");
          client.println("SET OFF LAMPU TERAS =");
          client.println(offls);
            client.println("<BR>");
           
          client.println("</h5>");
          client.println("<BR>");

          client.println("</BODY>");
          client.println("</HTML>");

          delay(1);
          //stopping client

          client.stop();
        
        
          //==========================================================
         
          if(readString.indexOf("?lighton1") >0)
          { 
            digitalWrite(A0, HIGH);    
          }
         
          if(readString.indexOf("?lightoff1") >0)
          { 
            digitalWrite(A0, LOW);    
          }
         
          if(readString.indexOf("?lighton2") >0)
          { 
            digitalWrite(A1, HIGH);    
          }
         
          if(readString.indexOf("?lightoff2") >0)
          { 
            digitalWrite(A1, LOW);    
          }
         
          if(readString.indexOf("?lighton3") >0)
          { 
            digitalWrite(A2, HIGH);    
          }
         
          if(readString.indexOf("?lightoff3") >0)
          { 
            digitalWrite(A2, LOW);    
          }
         
          if(readString.indexOf("?lighton4") >0)
          { 
            digitalWrite(A3, HIGH);    
          }
         
          if(readString.indexOf("?lightoff4") >0)
          { 
            digitalWrite(A3, LOW);    
          }
        
          //==========================================================
          if(readString.indexOf("A7") >0)//checks for on
          {
             onkip = 7;          
          }
         
             if(readString.indexOf("A8") >0)//checks for on
          {
             onkip = 7;          
          }
         
             if(readString.indexOf("A9") >0)//checks for on
          {
             onkip = 7;          
          }
         
          //============================================================
                 
          if(readString.indexOf("B20") >0)//checks for on
          {
             offkip = 20;
          }
         
            if(readString.indexOf("B21") >0)//checks for on
          {
             offkip = 21;
          }
         
            if(readString.indexOf("B22") >0)//checks for on
          {
             offkip = 22;
          }
        
          //====================================================
         
          if(readString.indexOf("C7") >0)//checks for on
          {
             onkul = 7;
           
          }
         
           if(readString.indexOf("C8") >0)//checks for on
          {
             onkul = 8;
           
          }
         
           if(readString.indexOf("C9") >0)//checks for on
          {
             onkul = 9;
           
          }
         
          //=========================================================
                
          if(readString.indexOf("D20") >0)//checks for off
          {
             offkul = 20;
          }
         
          if(readString.indexOf("D21") >0)//checks for off
          {
             offkul = 21;
          }
         
          if(readString.indexOf("D22") >0)//checks for off
          {
             offkul = 22;
          }
        
          //=========================================================
        
          if(readString.indexOf("E7") >0)//checks for off
          {
            onlt = 7;
          }
         
           if(readString.indexOf("E8") >0)//checks for off
          {
            onlt = 8;
          }
         
           if(readString.indexOf("E9") >0)//checks for off
          {
            onlt = 9;
          }
         
          //==========================================================
         
          if(readString.indexOf("F20") >0)//checks for off
          {
            offlt = 20;
          }
         
          if(readString.indexOf("F21") >0)//checks for off
          {
            offlt = 21;
          }
         
          if(readString.indexOf("F22") >0)//checks for off
          {
            offlt = 22;
          }
         
          //=========================================================
         
          if(readString.indexOf("G7") >0)//checks for off
          {
            onls = 7;
          }
         
           if(readString.indexOf("G8") >0)//checks for off
          {
            onls = 8;
          }
         
           if(readString.indexOf("G9") >0)//checks for off
          {
            onls = 9;
          }
         
          //=========================================================
         
          if(readString.indexOf("H20") >0)//checks for off
          {
            offls = 20;
          }
         
           if(readString.indexOf("H21") >0)//checks for off
          {
            offls = 21;
          }
         
           if(readString.indexOf("H22") >0)//checks for off
          {
            offls = 22;
          }
         
          //==============================================================================
        //   Serial.print(rtc.getDOWStr());
        //   Serial.print(" ");
        //   Serial.print(rtc.getDOWStr(FORMAT_LONG));
        //   Serial.print(" -- ");
        //   Serial.println(rtc.getTimeStr());
 
          if((t.hour == onkip)&&(t.hour > 0)){
          digitalWrite(A0,HIGH);
          }
         
          if((t.hour == offkip)&&(t.hour > 0)){
          digitalWrite(A0,LOW);
          }
         
          if((t.hour == onkul)&&(t.hour > 0)){
          digitalWrite(A1,HIGH);
          }
         
          if((t.hour == offkul)&&(t.hour > 0)){
          digitalWrite(A1,LOW);
          }
         
          if((t.hour == onlt)&&(t.hour > 0)){
          digitalWrite(A2,HIGH);
          }
         
          if((t.hour == offlt)&&(t.hour > 0)){
          digitalWrite(A2,LOW);
          }

          if((t.hour == onls)&&(t.hour > 0)){
          digitalWrite(A3,HIGH);
          }
         
          if((t.hour == offls)&&(t.hour > 0)){
          digitalWrite(A3,LOW);
          }
        
          //clearing string for next read
          readString="";

        }
      }
    }
  }
}





g. Gambar WEB







h. VIDEO HASILNYA













Membuat Alat Kendali Jemuran Otomatis Menggunakan Sensor Hujan / Air , kelembaban DHT11 dan cahaya LDR ARDUINO

Membuat Alat Kendali Jemuran Otomatis Menggunakan Sensor Hujan / Air , kelembaban DHT11 dan cahaya LDR ARDUINO


           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang berfungsi untuk kendali jemuran otomatis, adapun prinsip kerja alatnya yaitu Secara umum gambaran sistem kerja dari alat ini adalah ketika terjadi hujan atau cuaca mendung sensor hujan dan sensor cahaya akan mendeteksi cuaca tersebut, kemudian mengirim data ke microcontroller untuk diolah kemudian akan dikirimkan lagi menuju motor DC untuk menggerakan rel penjemur ke sisi kanan sampai rel penjemur menyentuh microswitch dan motor DC berhenti berputar.

  
         Sebaliknya ketika tidak terjadi hujan dan cuaca tidak mendung sensor hujan dan sensor LDR akan mendetsi keadaan tersebut dan mengirimnya ke microcontroller untuk diolah dan kemudian dikirimkan datanya menuju motor DC untuk menggerakan rel penjemur menuju ke arah kiri sampai rel penjemur menyentuh microswitcch dan motor DC berhemti berputar.Begitu pula apabila pakaian masih dalam keadaan lembab maka sensor mengirimkan sinyal ke microcontroller untuk menggerakkan motor DC sehingga pakaian menuju ke tempat yang lebih kering atau bercahaya. untuk lebih jelasnya berikut skema dan programnya.




a. Arduino Uno






b. Sensor DHT11





c. Sensor LDR





d. Sensor Air / Hujan





e. Motor DC





f. Relay 





g. Sensor Limit Switch






h. Program Arduino IDE

#include "Wire.h"
#include <LiquidCrystal.h>
#include "DHT.h"
#define DHTPIN 12
#define DHTTYPE DHT11
LiquidCrystal lcd(9, 8, 7, 6, 5, 4);

DHT dht(DHTPIN, DHTTYPE);

int mark = 0;

void setup() {
  lcd.begin(16, 2);
  lcd.clear();
  lcd.noCursor();
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(A2,INPUT);
  pinMode(A3,INPUT);
  digitalWrite(A2,HIGH);
  digitalWrite(A3,HIGH);
 
  dht.begin();
}


void loop() {

  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);

  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
 
  float hic = dht.computeHeatIndex(t, h, false);
 
  int cahaya = analogRead(A0);
  int hujan = analogRead(A1);
  
  lcd.setCursor(0, 0);
  lcd.print("H=");
  lcd.print(h,1);

  lcd.setCursor(8, 0);
  lcd.print("C=");
  lcd.print(cahaya);
 
  lcd.setCursor(8, 1);
  lcd.print("A=");
  lcd.print(hujan);

delay(1000);

if((hujan < 500)&&(mark == 0)){
delay(200);
mark = 1;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TEDUH");
teduh();
}

if((cahaya < 20)&&(mark == 0)){
delay(200);
mark = 1;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TEDUH");
teduh();
}

if((cahaya > 20)&&(hujan > 500)&&(mark == 1)){
delay(200);
mark = 0;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("KERING");
kering();
}


}




void teduh(){
digitalWrite(10,HIGH);
digitalWrite(11,LOW);

int a = digitalRead(A2);

if(a == 0){
digitalWrite(10,LOW);
digitalWrite(11,LOW);
delay(1000);
lcd.clear();
return;
}

teduh();

}


void kering(){
digitalWrite(10,LOW);
digitalWrite(11,HIGH);

int b = digitalRead(A3);

if(b == 0){
digitalWrite(10,LOW);
digitalWrite(11,LOW);
delay(1000);
lcd.clear();
return;
}

kering();

}





i. VIDEO HASILNYA











Membuat Deteksi Kecepatan / Gerak (RPM) Menggunakan Sensor Rotary Encoder dan Arduino

Membuat Deteksi Kecepatan / Gerak (RPM) Menggunakan Sensor Rotary Encoder dan Arduino


          Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang bisa digunakan untuk mendeteksi kecepatan atau gerakan dari sebuah roda, yang aplikasinya memang untuk mendeteksi apakah sepeda motor berjalan atau berhenti dengan menggunakan sensor rotary encoder, pada contoh digunakan motor dc sebagai aktuator untuk penggeraknya, kemudian sensor limit switch sebagai sensor batas dari gerakan motor. untuk lebih jelasnya berikut adalah skema dan programnya.




a. Arduino Uno






b. Sensor Rotary Encoder





c. Sensor Limit Switch





d. Motor DC





e. Relay 5v






f. Program Arduino IDE

volatile byte half_revolutions;
unsigned int rpm;
unsigned long timeold;

int relay1 = 3;
int relay2 = 4;
int sw1 = 5;
int sw2 = 6;
int mark = 0;

void setup(){
pinMode(relay1,OUTPUT);
pinMode(relay2,OUTPUT);
pinMode(sw1,INPUT);
pinMode(sw2,INPUT);
digitalWrite(sw1,HIGH);
digitalWrite(sw2,HIGH);
Serial.begin(9600);

 attachInterrupt(0, rpm_fun, RISING);
 half_revolutions = 0;
 rpm = 0;
 timeold = 0;
 
digitalWrite(relay1,HIGH);
digitalWrite(relay2,LOW);

}


void loop(){

//if (half_revolutions >= 10) {
     //Update RPM every 20 counts, increase this for better RPM resolution,
     //decrease for faster update
     rpm = 30*1000/(millis() - timeold)*half_revolutions;
     timeold = millis();
     half_revolutions = 0;
     Serial.println(rpm,DEC);
//}

delay(200);

if((rpm == 0)&&(mark == 0)){
  mark = 1;
  rpm = 0;
  timeold = 0;
  half_revolutions = 0;
turun();
}

if((rpm > 100)&&(mark == 1)){
  mark = 0;
 // rpm = 0;
 // timeold = 0;
 // half_revolutions = 0;
naik();
}


}


void rpm_fun()
 {
   half_revolutions++;
 }


void turun(){

int sw1x = digitalRead(sw1); 
 
digitalWrite(relay1,LOW);
digitalWrite(relay2,LOW);

if(sw1x == LOW){
digitalWrite(relay1,HIGH);
digitalWrite(relay2,LOW);
delay(1000);
return;
}

turun();
}



void naik(){
int sw2x = digitalRead(sw2); 

digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);

if(sw2x == LOW){
digitalWrite(relay1,HIGH);
digitalWrite(relay2,LOW);
delay(1000);
return;
}

naik();
}




 
g. VIDEO HASILNYA