Translate

ARDUINO Barcode Scanner / Barcode Reader Isi Ulang Air Otomatis (Automatic Water Filler)

Arduino Barcode Scanner / Barcode Reader Isi Ulang Air Otomatis (Automatic Water Filler)


              Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat dengan memanfaatkan barcode scanner atau barcode reader sebagai salah satu sensornya, jadi sistemnya adalah membaca kode barcode sepanjang 13 digit kemudian 4 digit pertama adalah ID dan 1 digit ke 5 adalah jumlah liter yang dipesan oleh pembeli, untuk digit sisanya tidak dipakai. terdapat sensor water flow untuk mendeteksi apakah aliran yang mengalir sudah sesuai yang dipesan ataukah tidak, kemudian ada relay modul untuk kendali solenoid valve. untuk lebih jelasnya berikut adalah program dan daftar komponennya. 




a. Arduino Mega 




b. USB Host Shield




c. Water Flow Sensor




d. Barcode Scanner / Reader




e. LCD + I2C




f. Modul Relay






g. Program Arduino IDE

#include <usbhid.h>
#include <usbhub.h>
#include <hiduniversal.h>
#include <SPI.h>
#include <LiquidCrystal_I2C.h>

int mark;
int aa;
int bb;
int cc;
int dd;
int ee;
int ff;
int gg;
int hh;
int ii;
int jj;
int kk;
int ll;
int mm;
int nn;

int relay = A8;

LiquidCrystal_I2C lcd(0x27, 16, 2);

class MyParser : public HIDReportParser {
  public: 
    MyParser();
    void Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf);
};

MyParser::MyParser() { 
  }

USB          Usb;
USBHub       Hub(&Usb);
HIDUniversal Hid(&Usb);
MyParser     Parser;

byte sensorInterrupt = 0;  // 0 = digital pin 2
byte sensorPin       = 2;

float calibrationFactor = 4.5;

volatile byte pulseCount;

unsigned int frac;
float flowRate;
unsigned int flowMilliLitres;
int totalMilliLitres;

unsigned long oldTime;
int tanda;
int tanda1;
int tanda2;

void setup() {
 
  lcd.begin();
  lcd.clear();
  lcd.noCursor();

  pinMode(sensorPin, INPUT);
  digitalWrite(sensorPin, HIGH);

  pulseCount        = 0;
  flowRate          = 0.0;
  flowMilliLitres   = 0;
  totalMilliLitres  = 0;
  oldTime           = 0;

  attachInterrupt(sensorInterrupt, pulseCounter, FALLING);
 
  pinMode(relay,OUTPUT);
  digitalWrite(relay,HIGH);
 
  Serial.begin( 115200 );
  Serial.println("Start");

  if (Usb.Init() == -1)
    Serial.println("OSC did not start.");

  delay( 200 );

  Hid.SetReportParser(0, &Parser);
}

void loop() {
  Usb.Task(); 
}

void MyParser::Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf) {
  // If error, return
  // I don't know why it starts on 2, I just following the example
  if (buf[2] == 1) return;

  // If empty, return
  // I check on 2 because the previous if check on 2 too
  if (buf[2] == 0) return;

  // Like above, WHY it starts on 2 ?
  // What is the purpose of bit in 0 and 1 ?
  for(uint8_t i = 2; i < 3; i++){
    Serial.print(buf[i]);
    Serial.print(" ");

if(mark == 0){
  if(buf[2] == 30){
    aa = 1;
    }
  if(buf[2] == 31){
    aa = 2;
    }
  if(buf[2] == 32){
    aa = 3;
    }
  if(buf[2] == 33){
    aa = 4;
    }
 if(buf[2] == 34){
    aa = 5;
    }
  if(buf[2] == 35){
    aa = 6;
    }
 if(buf[2] == 36){
    aa = 7;
    }
  if(buf[2] == 37){
    aa = 8;
    }
  if(buf[2] == 38){
    aa = 9;
    }
  if(buf[2] == 39){
    aa = 0;
    }
  if(buf[2] == 40){
    }
  }


if(mark == 1){
  if(buf[2] == 30){
    bb = 1;
    }
  if(buf[2] == 31){
    bb = 2;
    }
  if(buf[2] == 32){
    bb = 3;
    }
  if(buf[2] == 33){
    bb = 4;
    }
 if(buf[2] == 34){
    bb = 5;
    }
  if(buf[2] == 35){
    bb = 6;
    }
 if(buf[2] == 36){
    bb = 7;
    }
  if(buf[2] == 37){
    bb = 8;
    }
  if(buf[2] == 38){
    bb = 9;
    }
  if(buf[2] == 39){
    bb = 0;
    }
  if(buf[2] == 40){
    }
  }


if(mark == 2){
  if(buf[2] == 30){
    cc = 1;
    }
  if(buf[2] == 31){
    cc = 2;
    }
  if(buf[2] == 32){
    cc = 3;
    }
  if(buf[2] == 33){
    cc = 4;
    }
 if(buf[2] == 34){
    cc = 5;
    }
  if(buf[2] == 35){
    cc = 6;
    }
 if(buf[2] == 36){
    cc = 7;
    }
  if(buf[2] == 37){
    cc = 8;
    }
  if(buf[2] == 38){
    cc = 9;
    }
  if(buf[2] == 39){
    cc = 0;
    }
  if(buf[2] == 40){
    }
  }


if(mark == 3){
  if(buf[2] == 30){
    dd = 1;
    }
  if(buf[2] == 31){
    dd = 2;
    }
  if(buf[2] == 32){
    dd = 3;
    }
  if(buf[2] == 33){
    dd = 4;
    }
 if(buf[2] == 34){
    dd = 5;
    }
  if(buf[2] == 35){
    dd = 6;
    }
 if(buf[2] == 36){
    dd = 7;
    }
  if(buf[2] == 37){
    dd = 8;
    }
  if(buf[2] == 38){
    dd = 9;
    }
  if(buf[2] == 39){
    dd = 0;
    }
  if(buf[2] == 40){
    }
  }


if(mark == 4){
  if(buf[2] == 30){
    ee = 1;
    }
  if(buf[2] == 31){
    ee = 2;
    }
  if(buf[2] == 32){
    ee = 3;
    }
  if(buf[2] == 33){
    ee = 4;
    }
 if(buf[2] == 34){
    ee = 5;
    }
  if(buf[2] == 35){
    ee = 6;
    }
 if(buf[2] == 36){
    ee = 7;
    }
  if(buf[2] == 37){
    ee = 8;
    }
  if(buf[2] == 38){
    ee = 9;
    }
  if(buf[2] == 39){
    ee = 0;
    }
  if(buf[2] == 40){
    }
  }


if(mark == 5){
  if(buf[2] == 30){
    ff = 1;
    }
  if(buf[2] == 31){
    ff = 2;
    }
  if(buf[2] == 32){
    ff = 3;
    }
  if(buf[2] == 33){
    ff = 4;
    }
 if(buf[2] == 34){
    ff = 5;
    }
  if(buf[2] == 35){
    ff = 6;
    }
 if(buf[2] == 36){
    ff = 7;
    }
  if(buf[2] == 37){
    ff = 8;
    }
  if(buf[2] == 38){
    ff = 9;
    }
  if(buf[2] == 39){
    ff = 0;
    }
  if(buf[2] == 40){
    }
  }

if(mark == 6){
  if(buf[2] == 30){
    gg = 1;
    }
  if(buf[2] == 31){
    gg = 2;
    }
  if(buf[2] == 32){
    gg = 3;
    }
  if(buf[2] == 33){
    gg = 4;
    }
 if(buf[2] == 34){
    gg = 5;
    }
  if(buf[2] == 35){
    gg = 6;
    }
 if(buf[2] == 36){
    gg = 7;
    }
  if(buf[2] == 37){
    gg = 8;
    }
  if(buf[2] == 38){
    gg = 9;
    }
  if(buf[2] == 39){
    gg = 0;
    }
  if(buf[2] == 40){
    }
  }
 
if(mark == 7){
  if(buf[2] == 30){
    hh = 1;
    }
  if(buf[2] == 31){
    hh = 2;
    }
  if(buf[2] == 32){
    hh = 3;
    }
  if(buf[2] == 33){
    hh = 4;
    }
 if(buf[2] == 34){
    hh = 5;
    }
  if(buf[2] == 35){
    hh = 6;
    }
 if(buf[2] == 36){
    hh = 7;
    }
  if(buf[2] == 37){
    hh = 8;
    }
  if(buf[2] == 38){
    hh = 9;
    }
  if(buf[2] == 39){
    hh = 0;
    }
  if(buf[2] == 40){
    }
  }

if(mark == 8){
  if(buf[2] == 30){
    ii = 1;
    }
  if(buf[2] == 31){
    ii = 2;
    }
  if(buf[2] == 32){
    ii = 3;
    }
  if(buf[2] == 33){
    ii = 4;
    }
 if(buf[2] == 34){
    ii = 5;
    }
  if(buf[2] == 35){
    ii = 6;
    }
 if(buf[2] == 36){
    ii = 7;
    }
  if(buf[2] == 37){
    ii = 8;
    }
  if(buf[2] == 38){
    ii = 9;
    }
  if(buf[2] == 39){
    ii = 0;
    }
  if(buf[2] == 40){
    }
  }

if(mark == 9){
  if(buf[2] == 30){
    jj = 1;
    }
  if(buf[2] == 31){
    jj = 2;
    }
  if(buf[2] == 32){
    jj = 3;
    }
  if(buf[2] == 33){
    jj = 4;
    }
 if(buf[2] == 34){
    jj = 5;
    }
  if(buf[2] == 35){
    jj = 6;
    }
 if(buf[2] == 36){
    jj = 7;
    }
  if(buf[2] == 37){
    jj = 8;
    }
  if(buf[2] == 38){
    jj = 9;
    }
  if(buf[2] == 39){
    jj = 0;
    }
  if(buf[2] == 40){
    }
  }

if(mark == 10){
  if(buf[2] == 30){
    kk = 1;
    }
  if(buf[2] == 31){
    kk = 2;
    }
  if(buf[2] == 32){
    kk = 3;
    }
  if(buf[2] == 33){
    kk = 4;
    }
 if(buf[2] == 34){
    kk = 5;
    }
  if(buf[2] == 35){
    kk = 6;
    }
 if(buf[2] == 36){
    kk = 7;
    }
  if(buf[2] == 37){
    kk = 8;
    }
  if(buf[2] == 38){
    kk = 9;
    }
  if(buf[2] == 39){
    kk = 0;
    }
  if(buf[2] == 40){
    }
  }

if(mark == 11){
  if(buf[2] == 30){
    ll = 1;
    }
  if(buf[2] == 31){
    ll = 2;
    }
  if(buf[2] == 32){
    ll = 3;
    }
  if(buf[2] == 33){
    ll = 4;
    }
 if(buf[2] == 34){
    ll = 5;
    }
  if(buf[2] == 35){
    ll = 6;
    }
 if(buf[2] == 36){
    ll = 7;
    }
  if(buf[2] == 37){
    ll = 8;
    }
  if(buf[2] == 38){
    ll = 9;
    }
  if(buf[2] == 39){
    ll = 0;
    }
  if(buf[2] == 40){
    }
  }


if(mark == 12){
  if(buf[2] == 30){
    mm = 1;
    }
  if(buf[2] == 31){
    mm = 2;
    }
  if(buf[2] == 32){
    mm = 3;
    }
  if(buf[2] == 33){
    mm = 4;
    }
 if(buf[2] == 34){
    mm = 5;
    }
  if(buf[2] == 35){
    mm = 6;
    }
 if(buf[2] == 36){
    mm = 7;
    }
  if(buf[2] == 37){
    mm = 8;
    }
  if(buf[2] == 38){
    mm = 9;
    }
  if(buf[2] == 39){
    mm = 0;
    }
  if(buf[2] == 40){
    }
  }


mark++;        

if(mark > 13){

lcd.setCursor(0,0);
lcd.print(aa);
lcd.print(bb);
lcd.print(cc);
lcd.print(dd);
lcd.print(ee);
lcd.print(ff);
lcd.print(gg);
lcd.print(hh);
lcd.print(ii);
lcd.print(jj);
lcd.print(kk);
lcd.print(ll);
lcd.print(mm);

if((aa == 8)&&(bb == 9)&&(cc == 9)&&(dd == 9)&&(ee == 9)&&(tanda == 0)){
lcd.setCursor(0,1);
lcd.print("ID=");
lcd.print(aa);lcd.print(bb);lcd.print(cc);lcd.print(dd);
lcd.print(" Lt=");
lcd.print(ee);
delay(5000);
lcd.clear();
digitalWrite(relay,LOW);
mulai();
tanda = 1;
}

if((aa == 8)&&(bb == 9)&&(cc == 9)&&(dd == 8)&&(ee == 8)&&(tanda1 == 0)){
lcd.setCursor(0,1);
lcd.print("ID=");
lcd.print(aa);lcd.print(bb);lcd.print(cc);lcd.print(dd);
lcd.print(" Lt=");
lcd.print(ee);
delay(5000);
lcd.clear();
digitalWrite(relay,LOW);
mulai();
tanda1 = 1;
}

if((aa == 8)&&(bb == 9)&&(cc == 9)&&(dd == 2)&&(ee == 2)&&(tanda2 == 0)){
lcd.setCursor(0,1);
lcd.print("ID=");
lcd.print(aa);lcd.print(bb);lcd.print(cc);lcd.print(dd);
lcd.print(" Lt=");
lcd.print(ee);
delay(5000);
lcd.clear();
digitalWrite(relay,LOW);
mulai();
tanda2 = 1;
}

mark = 0;

}

}

}

void mulai(){
 
if((millis() - oldTime) > 1000)
  {

    detachInterrupt(sensorInterrupt);
    flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor;
    oldTime = millis();
    flowMilliLitres = (flowRate / 60) * 1000;
    totalMilliLitres += flowMilliLitres;
   
/*    
    unsigned int frac;
  
    Serial.print("Flow rate: ");
    Serial.print(int(flowRate));  /
    Serial.print(".");           
    frac = (flowRate - int(flowRate)) * 10;
    Serial.print(frac, DEC) ;    
    Serial.print("L/min");
    Serial.print("  Current Liquid Flowing: ");  
    Serial.print(flowMilliLitres);
    Serial.print("mL/Sec");

    Serial.print("  Output Liquid Quantity: ");         
    Serial.print(totalMilliLitres);
    Serial.println("mL");
*/

    pulseCount = 0;
  
    attachInterrupt(sensorInterrupt, pulseCounter, FALLING);
  } 

lcd.setCursor(0,0);
lcd.print("ml= "); 
lcd.print(totalMilliLitres);
lcd.print("     "); 

lcd.setCursor(0,1);
lcd.print("ml= "); 
lcd.print(ee * 1000);
lcd.print("     ");

if(totalMilliLitres > ee * 1000){
  digitalWrite(relay,HIGH);
  lcd.clear();

  pulseCount        = 0;
  flowRate          = 0.0;
  flowMilliLitres   = 0;
  totalMilliLitres  = 0;
  oldTime           = 0;
 
  return;
}

mulai(); 
}


void pulseCounter()
{
  pulseCount++;
}



h. VIDEO HASILNYA







BARCODE SCANNER / BARCODE READER ARDUINO

BARCODE SCANNER / BARCODE READER ARDUINO


           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang menggunakan barcode scanner atau barcode reader untuk mengendalikan led dan menampilkan nilai barcode ke lcd beserta nama produk atau object yang discan. alat ini bisa dikembangkan ke arah yang lebih variatif misal untuk buka tutup pintu menggunakan barcode dan lain sebagainya. untuk lebih jelasnya berikut adalah program dan daftar komponennya.




a. Arduino Mega




b. USB Host Shield




c. Barcode Scanner / Reader




d. LCD + I2C






e. Program Arduino IDE

#include <usbhid.h>
#include <usbhub.h>
#include <hiduniversal.h>
#include <SPI.h>
#include <LiquidCrystal_I2C.h>

int mark;
int aa;
int bb;
int cc;
int dd;
int ee;
int ff;
int gg;
int hh;
int ii;
int jj;
int kk;
int ll;
int mm;
int nn;

LiquidCrystal_I2C lcd(0x27, 16, 2);

class MyParser : public HIDReportParser {
  public: 
    MyParser();
    void Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf);
};

MyParser::MyParser() { 
  }

USB          Usb;
USBHub       Hub(&Usb);
HIDUniversal Hid(&Usb);
MyParser     Parser;

void setup() {
 
  lcd.begin();
  lcd.clear();
  lcd.noCursor();

  pinMode(A8,OUTPUT);
  pinMode(A9,OUTPUT);
  pinMode(A10,OUTPUT);
 
  Serial.begin( 115200 );
  Serial.println("Start");

  if (Usb.Init() == -1)
    Serial.println("OSC did not start.");

  delay( 200 );

  Hid.SetReportParser(0, &Parser);
}

void loop() {
  Usb.Task(); 
}



void MyParser::Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf) {
  // If error, return
  // I don't know why it starts on 2, I just following the example
  if (buf[2] == 1) return;

  // If empty, return
  // I check on 2 because the previous if check on 2 too
  if (buf[2] == 0) return;

  // Like above, WHY it starts on 2 ?
  // What is the purpose of bit in 0 and 1 ?
  for(uint8_t i = 2; i < 3; i++){
    Serial.print(buf[i]);
    Serial.print(" ");

if(mark == 0){
  if(buf[2] == 30){
    aa = 1;
    }
  if(buf[2] == 31){
    aa = 2;
    }
  if(buf[2] == 32){
    aa = 3;
    }
  if(buf[2] == 33){
    aa = 4;
    }
 if(buf[2] == 34){
    aa = 5;
    }
  if(buf[2] == 35){
    aa = 6;
    }
 if(buf[2] == 36){
    aa = 7;
    }
  if(buf[2] == 37){
    aa = 8;
    }
  if(buf[2] == 38){
    aa = 9;
    }
  if(buf[2] == 39){
    aa = 0;
    }
  if(buf[2] == 40){
    }
  }


if(mark == 1){
  if(buf[2] == 30){
    bb = 1;
    }
  if(buf[2] == 31){
    bb = 2;
    }
  if(buf[2] == 32){
    bb = 3;
    }
  if(buf[2] == 33){
    bb = 4;
    }
 if(buf[2] == 34){
    bb = 5;
    }
  if(buf[2] == 35){
    bb = 6;
    }
 if(buf[2] == 36){
    bb = 7;
    }
  if(buf[2] == 37){
    bb = 8;
    }
  if(buf[2] == 38){
    bb = 9;
    }
  if(buf[2] == 39){
    bb = 0;
    }
  if(buf[2] == 40){
    }
  }


if(mark == 2){
  if(buf[2] == 30){
    cc = 1;
    }
  if(buf[2] == 31){
    cc = 2;
    }
  if(buf[2] == 32){
    cc = 3;
    }
  if(buf[2] == 33){
    cc = 4;
    }
 if(buf[2] == 34){
    cc = 5;
    }
  if(buf[2] == 35){
    cc = 6;
    }
 if(buf[2] == 36){
    cc = 7;
    }
  if(buf[2] == 37){
    cc = 8;
    }
  if(buf[2] == 38){
    cc = 9;
    }
  if(buf[2] == 39){
    cc = 0;
    }
  if(buf[2] == 40){
    }
  }


if(mark == 3){
  if(buf[2] == 30){
    dd = 1;
    }
  if(buf[2] == 31){
    dd = 2;
    }
  if(buf[2] == 32){
    dd = 3;
    }
  if(buf[2] == 33){
    dd = 4;
    }
 if(buf[2] == 34){
    dd = 5;
    }
  if(buf[2] == 35){
    dd = 6;
    }
 if(buf[2] == 36){
    dd = 7;
    }
  if(buf[2] == 37){
    dd = 8;
    }
  if(buf[2] == 38){
    dd = 9;
    }
  if(buf[2] == 39){
    dd = 0;
    }
  if(buf[2] == 40){
    }
  }


if(mark == 4){
  if(buf[2] == 30){
    ee = 1;
    }
  if(buf[2] == 31){
    ee = 2;
    }
  if(buf[2] == 32){
    ee = 3;
    }
  if(buf[2] == 33){
    ee = 4;
    }
 if(buf[2] == 34){
    ee = 5;
    }
  if(buf[2] == 35){
    ee = 6;
    }
 if(buf[2] == 36){
    ee = 7;
    }
  if(buf[2] == 37){
    ee = 8;
    }
  if(buf[2] == 38){
    ee = 9;
    }
  if(buf[2] == 39){
    ee = 0;
    }
  if(buf[2] == 40){
    }
  }


if(mark == 5){
  if(buf[2] == 30){
    ff = 1;
    }
  if(buf[2] == 31){
    ff = 2;
    }
  if(buf[2] == 32){
    ff = 3;
    }
  if(buf[2] == 33){
    ff = 4;
    }
 if(buf[2] == 34){
    ff = 5;
    }
  if(buf[2] == 35){
    ff = 6;
    }
 if(buf[2] == 36){
    ff = 7;
    }
  if(buf[2] == 37){
    ff = 8;
    }
  if(buf[2] == 38){
    ff = 9;
    }
  if(buf[2] == 39){
    ff = 0;
    }
  if(buf[2] == 40){
    }
  }

if(mark == 6){
  if(buf[2] == 30){
    gg = 1;
    }
  if(buf[2] == 31){
    gg = 2;
    }
  if(buf[2] == 32){
    gg = 3;
    }
  if(buf[2] == 33){
    gg = 4;
    }
 if(buf[2] == 34){
    gg = 5;
    }
  if(buf[2] == 35){
    gg = 6;
    }
 if(buf[2] == 36){
    gg = 7;
    }
  if(buf[2] == 37){
    gg = 8;
    }
  if(buf[2] == 38){
    gg = 9;
    }
  if(buf[2] == 39){
    gg = 0;
    }
  if(buf[2] == 40){
    }
  }
 
if(mark == 7){
  if(buf[2] == 30){
    hh = 1;
    }
  if(buf[2] == 31){
    hh = 2;
    }
  if(buf[2] == 32){
    hh = 3;
    }
  if(buf[2] == 33){
    hh = 4;
    }
 if(buf[2] == 34){
    hh = 5;
    }
  if(buf[2] == 35){
    hh = 6;
    }
 if(buf[2] == 36){
    hh = 7;
    }
  if(buf[2] == 37){
    hh = 8;
    }
  if(buf[2] == 38){
    hh = 9;
    }
  if(buf[2] == 39){
    hh = 0;
    }
  if(buf[2] == 40){
    }
  }

if(mark == 8){
  if(buf[2] == 30){
    ii = 1;
    }
  if(buf[2] == 31){
    ii = 2;
    }
  if(buf[2] == 32){
    ii = 3;
    }
  if(buf[2] == 33){
    ii = 4;
    }
 if(buf[2] == 34){
    ii = 5;
    }
  if(buf[2] == 35){
    ii = 6;
    }
 if(buf[2] == 36){
    ii = 7;
    }
  if(buf[2] == 37){
    ii = 8;
    }
  if(buf[2] == 38){
    ii = 9;
    }
  if(buf[2] == 39){
    ii = 0;
    }
  if(buf[2] == 40){
    }
  }

if(mark == 9){
  if(buf[2] == 30){
    jj = 1;
    }
  if(buf[2] == 31){
    jj = 2;
    }
  if(buf[2] == 32){
    jj = 3;
    }
  if(buf[2] == 33){
    jj = 4;
    }
 if(buf[2] == 34){
    jj = 5;
    }
  if(buf[2] == 35){
    jj = 6;
    }
 if(buf[2] == 36){
    jj = 7;
    }
  if(buf[2] == 37){
    jj = 8;
    }
  if(buf[2] == 38){
    jj = 9;
    }
  if(buf[2] == 39){
    jj = 0;
    }
  if(buf[2] == 40){
    }
  }

if(mark == 10){
  if(buf[2] == 30){
    kk = 1;
    }
  if(buf[2] == 31){
    kk = 2;
    }
  if(buf[2] == 32){
    kk = 3;
    }
  if(buf[2] == 33){
    kk = 4;
    }
 if(buf[2] == 34){
    kk = 5;
    }
  if(buf[2] == 35){
    kk = 6;
    }
 if(buf[2] == 36){
    kk = 7;
    }
  if(buf[2] == 37){
    kk = 8;
    }
  if(buf[2] == 38){
    kk = 9;
    }
  if(buf[2] == 39){
    kk = 0;
    }
  if(buf[2] == 40){
    }
  }

if(mark == 11){
  if(buf[2] == 30){
    ll = 1;
    }
  if(buf[2] == 31){
    ll = 2;
    }
  if(buf[2] == 32){
    ll = 3;
    }
  if(buf[2] == 33){
    ll = 4;
    }
 if(buf[2] == 34){
    ll = 5;
    }
  if(buf[2] == 35){
    ll = 6;
    }
 if(buf[2] == 36){
    ll = 7;
    }
  if(buf[2] == 37){
    ll = 8;
    }
  if(buf[2] == 38){
    ll = 9;
    }
  if(buf[2] == 39){
    ll = 0;
    }
  if(buf[2] == 40){
    }
  }


if(mark == 12){
  if(buf[2] == 30){
    mm = 1;
    }
  if(buf[2] == 31){
    mm = 2;
    }
  if(buf[2] == 32){
    mm = 3;
    }
  if(buf[2] == 33){
    mm = 4;
    }
 if(buf[2] == 34){
    mm = 5;
    }
  if(buf[2] == 35){
    mm = 6;
    }
 if(buf[2] == 36){
    mm = 7;
    }
  if(buf[2] == 37){
    mm = 8;
    }
  if(buf[2] == 38){
    mm = 9;
    }
  if(buf[2] == 39){
    mm = 0;
    }
  if(buf[2] == 40){
    }
  }


mark++;        

if(mark > 13){

lcd.setCursor(0,0);
lcd.print(aa);
lcd.print(bb);
lcd.print(cc);
lcd.print(dd);
lcd.print(ee);
lcd.print(ff);
lcd.print(gg);
lcd.print(hh);
lcd.print(ii);
lcd.print(jj);
lcd.print(kk);
lcd.print(ll);
lcd.print(mm);


if((aa == 8)&&(bb == 9)&&(cc == 9)&&(dd == 9)&&(ee == 9)&&(ff == 9)&&(gg == 9)&&(hh == 0)&&(ii == 4)&&(jj == 6)&&(kk == 9)&&(ll == 9)&&(mm == 6)){
lcd.setCursor(0,1);
lcd.print("sabun     ");
digitalWrite(A8,HIGH);
digitalWrite(A9,LOW);
digitalWrite(A10,LOW);
}

if((aa == 8)&&(bb == 9)&&(cc == 9)&&(dd == 8)&&(ee == 8)&&(ff == 9)&&(gg == 8)&&(hh == 1)&&(ii == 0)&&(jj == 1)&&(kk == 4)&&(ll == 1)&&(mm == 6)){
lcd.setCursor(0,1);
lcd.print("jamu      ");
digitalWrite(A8,LOW);
digitalWrite(A9,HIGH);
digitalWrite(A10,LOW);
}

if((aa == 8)&&(bb == 9)&&(cc == 9)&&(dd == 2)&&(ee == 2)&&(ff == 2)&&(gg == 2)&&(hh == 0)&&(ii == 5)&&(jj == 3)&&(kk == 4)&&(ll == 3)&&(mm == 3)){
lcd.setCursor(0,1);
lcd.print("Parfum    ");
digitalWrite(A8,LOW);
digitalWrite(A9,LOW);
digitalWrite(A10,HIGH);
}

delay(5000);
lcd.clear();
digitalWrite(A8,LOW);
digitalWrite(A9,LOW);
digitalWrite(A10,LOW);
mark = 0;

}

}

}




f. VIDEO HASILNYA







Monitor Suhu dan Bpm via Blynk (IOT PROJECT) Nodemcu ESP8266

Monitor Suhu dan Bpm via Blynk (IOT PROJECT) Nodemcu ESP8266


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat dengan menggunakan sensor suhu dan bpm kemudian di tampilkan ke handphone menggunakan jaringan internet yaitu aplikasi Blynk yang mana jaraknya bisa jauh yang penting terdapat koneksi internet antara handphone user dan alat tersebut. untuk lebih jelasnya berikut adalah komponen dan programnya.



a. Nodemcu ESP8266




b. Sensor Suhu Ds18b20




c. Sensor Pulse BPM






d. Program Arduino IDE

#include "Wire.h"
#define BLYNK_PRINT Serial    
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#include <LiquidCrystal_I2C.h>
#include <SimpleTimer.h>
#include <SPI.h>
#define ONE_WIRE_BUS 0  //D3 pin of nodemcu


LiquidCrystal_I2C lcd(0x27, 16, 2);

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);            

float suhu;

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "AAAHGJhgfhghghgJHGJHVJMNBmnbmhF";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "My Hotspotx";
char pass[] = "1234567";
SimpleTimer timer;
int dataadc;
int n = 0;
int bpm = 0;
int x = 0;
int ok;

void sendSensor()
{

 sensors.requestTemperatures();
 suhu = sensors.getTempCByIndex(0);

 Blynk.virtualWrite(V5, suhu);
 Blynk.virtualWrite(V6, bpm);

}

void setup()
{

  lcd.begin();
  lcd.clear();
  lcd.noCursor();
  Serial.begin(9600);
  sensors.begin();

  lcd.setCursor(0,0);
  lcd.print("   MONITORING");  
  lcd.setCursor(0,1);
  lcd.print(" SUHU & BPM BAYI");
  delay(3000);
  lcd.clear();

  pinMode(D6,INPUT_PULLUP);

  Blynk.begin(auth, ssid, pass);
  timer.setInterval(1000L, sendSensor);
}

void loop()
{

ok = digitalRead(D6);

if(ok == 0){
 n = 0; 
 bpm = 0;
 lcd.clear();
 bpmxx(); 
}

 lcd.setCursor(0,0);
 lcd.print("Temp= ");     
 lcd.print(suhu,  1);
 lcd.print("C");

 lcd.setCursor(0,1);
 lcd.print("Bpm= ");     
 lcd.print(bpm);
 lcd.print("    ");

 Blynk.run();
 timer.run();
}

void bpmxx(){
  
n++;

  int dataadc1 = analogRead(A0);           

  lcd.setCursor(0, 0);
  lcd.print("n = ");
  lcd.print(n);
    
  lcd.setCursor(0, 1);
  lcd.print("BPM = ");
  lcd.print(bpm);
  lcd.print(" / ");
  lcd.print(dataadc1);
  lcd.print("      ");
   
  if ((dataadc1 > 820) && (x > 1)) {   
  x = 0;
  bpm = bpm + 1;
  }

  else if ((dataadc1 < 820) && (x < 1)) {
  x = 2;  
  }

  delay(200);

  if ( n > 50 ) {
  lcd.clear();
  bpm = bpm * 6;
  return;
  }  
  
bpmxx();  
}




e. VIDEO HASILNYA









Monitor Suhu Sensor ds18b20 WEMOS + Blynk Interface ARDUINO

Monitor Suhu Sensor ds18b20 WEMOS + Blynk Interface ARDUINO


            Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat dengan fungsinya yaitu memonitor suhu dengan menggunakan sensor ds18b20. alat ini sangat tepat untuk diaplikasikan ke sebuah alat yang butuh dimonitor suhunya secara realtime, alat ini dilengkapi dengan interface Blynk sehingga bisa monitor jarak jauh karena Blynk hanya membutuhkan koneksi internet. untuk lebih jelasnya berikut adalah program dan daftar komponennya. 




a. WEMOS D1




b. Sensor Suhu ds18b20






c. Program Arduino IDE

 #include "Wire.h"
#define BLYNK_PRINT Serial    
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#include <LiquidCrystal_I2C.h>
#include <SimpleTimer.h>
#include <SPI.h>
#define ONE_WIRE_BUS 0  //D3 pin of nodemcu

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);            .

LiquidCrystal_I2C lcd(0x27, 16, 2);


float suhu;

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "RJWcET4rDhvDcra9znfH-iaIhMAaAeHF";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Yanuar Iphone";
char pass[] = "13579ynr2";
SimpleTimer timer;


void sendSensor()
{

 sensors.requestTemperatures();
 suhu = sensors.getTempCByIndex(0);

 Blynk.virtualWrite(V5, suhu);
}


void setup()
{
  lcd.begin();
  lcd.clear();
  lcd.noCursor();
  Serial.begin(9600);
  sensors.begin();

  lcd.setCursor(0,0);
  lcd.print("   MONITORING");  
  lcd.setCursor(0,1);
  lcd.print(" SUHU&BPM BAYI");
  delay(3000);
  lcd.clear();

  Blynk.begin(auth, ssid, pass);
  timer.setInterval(1000L, sendSensor);
}

void loop()
{
 lcd.setCursor(0,0);
 lcd.print("Temp=");     
 lcd.print(suhu,  1);
 lcd.print("C");

 Blynk.run();
 timer.run();
}





d. VIDEO HASILNYA











Deteksi Benda Menggunakan Sensor Proximity IR Arduino

Deteksi Benda Menggunakan Sensor Proximity IR Arduino


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat mendeteksi benda dengan jarak tertentu selama 3 detik jadi syarat benda tersebut terdeteksi adalah dia berhenti atau sensor tertutup oleh benda tersebut selama 3 detik kemudian alarm atau buzzer akan menyala. jika kurang dari 3 detik maka led dan buzzer tidak akan menyala untuk lebih jelasnya berikut adalah komponen dan programnya.



a. Arduino Uno




b. Sensor IR Proximity




c. Modul Relay






d. Program Arduino IDE

int relay1 = 4;
int relay2 = 5;
int sw1 = 2;
int sw2 = 3;
int led1 = 6;
int led2 = 8;
int buzzer = 11;

int sen1 = A0;
int sen2 = A5;
int sen3 = A2;
int sen1x = 0;
int sen2x = 0;
int sen3x = 0;
int counter1;
int counter2;
int counter3;
int x;
int y;
int kondisi;

//ada benda adc < 500
//tidak ada benda  adc > 500


void setup(){
pinMode(relay1,OUTPUT);
pinMode(relay2,OUTPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(7,OUTPUT);
pinMode(9,OUTPUT);
pinMode(buzzer,OUTPUT);
pinMode(sw1,INPUT_PULLUP);
pinMode(sw2,INPUT_PULLUP);
pinMode(buzzer,OUTPUT);
digitalWrite(7,LOW);
digitalWrite(9,LOW);
digitalWrite(relay1,LOW);
digitalWrite(relay2,LOW);
Serial.begin(9600);
}

void loop(){

sen1x = analogRead(sen1);
sen2x = analogRead(sen2);
sen3x = analogRead(sen3);

x = digitalRead(2);
y = digitalRead(3);

Serial.print(sen1x);
Serial.print(" ");
Serial.print(sen2x);
Serial.print(" ");
Serial.print(sen3x);
Serial.print(" ");
Serial.println(kondisi);

if(sen1x < 500){
counter1++;
}

if(sen1x > 500){
counter1 = 0;
}

if(counter1 >= 15){
digitalWrite(led1,HIGH);
digitalWrite(led2,LOW);
digitalWrite(buzzer,HIGH);
digitalWrite(relay1,HIGH);
kondisi = 1;
}


if(sen3x < 500){
counter3++;
}

if(sen3x > 500){
counter3 = 0;
}

if(counter3 >= 15){
digitalWrite(led1,LOW);
digitalWrite(led2,HIGH);
digitalWrite(buzzer,HIGH);
digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);
kondisi = 3;
}


if(sen2x < 700){
counter2++;
}

if(sen2x > 700){
counter2 = 0;
}

if(counter2 >= 15){
digitalWrite(led1,LOW);
digitalWrite(led2,HIGH);
digitalWrite(buzzer,HIGH);
digitalWrite(relay2,HIGH);
kondisi = 2;
}


if((x == 0)&&(kondisi == 1)&&(sen1x > 500)){
digitalWrite(relay1,LOW);
digitalWrite(led1,LOW);
digitalWrite(buzzer,LOW);
kondisi = 0;
}

if((y == 0)&&(kondisi == 2)&&(sen2x > 700)){
digitalWrite(relay2,LOW);
digitalWrite(led2,LOW);
digitalWrite(buzzer,LOW);
kondisi = 0;
}

if((y == 0)&&(kondisi == 3)&&(sen3x > 500)){
digitalWrite(relay1,LOW);  
digitalWrite(relay2,LOW);
digitalWrite(led2,LOW);
digitalWrite(buzzer,LOW);
kondisi = 0;
}


delay(200);
}





e. VIDEO HASILNYA







Jasa Editing Video Sederhana

Jasa Editing Video Sederhana


         Assalamu'alaikum wr. wb teman-teman semua, sekarang kami hadir dengan menawarkan jasa yang baru selain jasa koding dan pembuatan alat yaitu JASA EDITING VIDEO SEDERHANA dengan menggunakan software IMOVIE. untuk harga atau biaya jasa sesuai dengan tingkat kesulitan video yang dikerjakan. semakin sulit video maka semakin mahal pula biaya yang dikenakan. berikut adalah spesifikasi dan alur pemesanan jasa edit video.


1. Biaya Jasa
- Kategori Mudah = Rp. 100.000 - 500.000
- Kategori Sedang / Lumayan = Rp. 800.000 - 1.500.000
- Kategori Sulit = Rp. 3.000.000 - 5.000.000


 2. Waktu Pengerjaan
- Estimasi waktu minimal = 1 hari jadi
- Estimasi waktu optimal = 3 hari jadi
- Estimasi waktu maksimal = 7 hari jadi


3. Alur Pemesanan 
- Chat via Whatsapp di nomer 085726496643 untuk pemesanan dan DP
- Jelaskan detail konsep video yang akan dibuat
- Lalu kirimkan video via chat Whatsapp / Google Drive / 4shared / bisa ketemu langsung
- Kirimkan musik atau backsound yang diinginkan
- Jika ada watermark atau tulisan bisa di jelaskan dan juga peletakannya
- Jika ada gambar maka kirimkan gambar tersebut via WA atau yang lain.
- Jika video sudah ready atau sudah jadi maka akan kami kirimkan potongan videonya
- Jika sudah pelunasan maka akan kami kirimkan video fullnya 




4. Contoh Video Kami 

 










Kendali Arduino Menggunakan Interface Delphi 7

Kendali Arduino Menggunakan Interface Delphi 7


          Pada kesempatan kali ini saya akan menjelaskan mengenai sebuah alat yang menggunakan software Delphi 7 sebagai interface komputer untuk mengendalikan Arduino secara serial atau UART. alat ini adalah basic teknik serial mikrokontroller dan bisa dikembangkan ke arah yang lebih bermanfaat dan menarik lainnya bisa itu kendali lampu rumah atau penggerak buka pintu via delphi 7. untuk lebih jelasnya berikut adalah program dan daftar komponennya.



a. Arduino Uno






b. Program Arduino IDE

int led = 13;
char str;

void setup()
{
 
pinMode(led,OUTPUT); 
Serial.begin(9600);

}

void loop()
{
 
if(Serial.available()>0)
{

str = Serial.read();

if(str == '1')
{
digitalWrite(led,HIGH);
}

if(str == '2')
{
digitalWrite(led,LOW);
}

}
delay(15);

}





c. Program Interface Delphi 7



unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, CPort, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    ComPort1: TComPort;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);
begin
ComPort1.ShowSetupDialog;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ComPort1.WriteStr('1');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ComPort1.WriteStr('2');
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
comport1.Connected := True;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
application.Terminate;
end;

end.





d. VIDEO HASILNYA








Alat Monitor Gula Darah Non Invasive ARDUINO + ANDROID

Alat Monitor Gula Darah Non Invasive ARDUINO + ANDROID


          Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat digunakan untuk monitor kadar gula darah secara non invasive dengan fitur yaitu bisa dimonitor via aplikasi android. alat ini menggunakan sensor photodioda dan Arduino sebagai mikrokontroller yang digunakan. untuk lebih jelasnya berikut adalah program dan komponennya.



a. Arduino Uno




b. Lcd + I2C




c. Sensor Photodioda




d. Modul Bluetooth HC-05




e. Program Android







f. Program Arduino IDE

#include "Wire.h"
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

int bt = 7;
int btx;
int adcsensor;
int buzzer = 11;
int btok = 10;
float fix;
int datafix;
int cacah;
float kalibrasi;

void setup() {

  lcd.begin();
  lcd.clear();
  lcd.noCursor();
  Serial.begin(9600);
  pinMode(bt,INPUT_PULLUP);
 
}

void loop(){

 lcd.setCursor(0,0);
 lcd.print("TEKAN MULAI");
 lcd.setCursor(0,1);
 lcd.print("mg/dl= ");
 lcd.print(fix);
 lcd.print("      ");

 Serial.print("mg/dl= ");
 Serial.println(fix);

 btx = digitalRead(bt);

 if(btx == 0){
 lcd.clear(); 
 delay(1000);
 cacah = 0;
 datafix = 0;
 fix = 0;
 proses();
 }

delay(1000);
}

void proses(){
 
adcsensor = analogRead(A0);

 lcd.setCursor(0,0);
 lcd.print("ADC= ");
 lcd.print(adcsensor);
 lcd.print("      ");

 cacah++;

datafix = adcsensor + datafix;

delay(100);

if(cacah > 20){
  fix = datafix / 20.0;
  //kalibrasi = (fix - 1022.1) / 0.0967;
  return;
}

proses();
}   
   




g. VIDEO HASILNYA