Translate

Membuat alat kendali Traffic Light / LED Menggunakan ARDUINO Ethernet WEB SERVER dan RTC

Membuat alat kendali Traffic Light / LED Menggunakan ARDUINO Ethernet WEB SERVER dan RTC


         Pada pagi hari ini saya akan menjelaskan mengenai bagaimana cara membuat alat yang digunakan untuk kendali traffic light LED menggunakan WIFI Ethernet Web Server. Disini saya akan membuat sebuah sistem lampu lalu lintas yang mana delay lampu diset melalui server dan juga waktu nyala dan padam lampu juga diset melalui server, sehingga pada server akan tampil nilai jam dan delay lampu yang diset dan juga pada server terdapat tombol pemilihan untuk setting ulang nilainya. Untuk lebih jelas berikut adalah sema dan programnya.



a. Arduino Mega + LCD 16x2





b. Router




c. Ethernet Shield




d. RTC dan LED


Arduino Mega
SDA - Pin 20
SCL - Pin 21




e. Program Arduino IDE

#include <SPI.h>
#include <Ethernet.h>
#include <LiquidCrystal.h>
#include <Wire.h>
LiquidCrystal lcd(16, 17, 22, 24, 19, 18);


#define DS3231_I2C_ADDRESS 0x68
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
  return( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
  return( (val/16*10) + (val%16) );
}



int led1 = A7;
int led2 = A8;
int led3 = A9;
int led4 = A10;
int led5 = A11;
int led6 = A12;
int led7 = A13;
int led8 = A14;
int led9 = A15;

int dmerah = 0;
int dkuning = 0;
int dhijau = 0;
int ton = 0;
int toff = 0;

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

String readString;


void setup(){
 
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);

  lcd.begin(16, 2);
  lcd.clear();
  lcd.noCursor();
  Wire.begin();
 
  // DS3231 seconds, minutes, hours, day, date, month, year
  //setDS3231time(0,59,11,2,16,5,16);
 
  pinMode(13, OUTPUT); //pin selected to control
  //start Ethernet
  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 setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year)
{
  // sets time and date data to DS3231
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0); // set next input to start at the seconds register
  Wire.write(decToBcd(second)); // set seconds
  Wire.write(decToBcd(minute)); // set minutes
  Wire.write(decToBcd(hour)); // set hours
  Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
  Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
  Wire.write(decToBcd(month)); // set month
  Wire.write(decToBcd(year)); // set year (0 to 99)
  Wire.endTransmission();
}
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0); // set DS3231 register pointer to 00h
  Wire.endTransmission();
  Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
  // request seven bytes of data from DS3231 starting from register 00h
  *second = bcdToDec(Wire.read() & 0x7f);
  *minute = bcdToDec(Wire.read());
  *hour = bcdToDec(Wire.read() & 0x3f);
  *dayOfWeek = bcdToDec(Wire.read());
  *dayOfMonth = bcdToDec(Wire.read());
  *month = bcdToDec(Wire.read());
  *year = bcdToDec(Wire.read());
}



void displayTime()
{
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  // retrieve data from DS3231
  readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
  // send it to the serial monitor
  lcd.setCursor(0, 0);
  lcd.print(hour, DEC);
  // convert the byte variable to a decimal number when displayed
  lcd.print(":");
  if (minute<10)
  {
    lcd.print("0");
  }
  lcd.print(minute, DEC);
  lcd.print(":");
  if (second<10)
  {
    lcd.print("0");
  }
  lcd.print(second, DEC);

  lcd.setCursor(0, 1);
  lcd.print(dayOfMonth, DEC);
  lcd.print("/");
  lcd.print(month, DEC);
  lcd.print("/");
  lcd.print(year, DEC);
 
 
   if (hour >= ton) {

  if (hour >= toff) {
  digitalWrite(led3, LOW); 
  digitalWrite(led2, LOW);
  digitalWrite(led1, LOW);

  digitalWrite(led6, LOW);
  digitalWrite(led5, LOW); 
  digitalWrite(led4, LOW);
 
  digitalWrite(led9, LOW);
  digitalWrite(led8, LOW);
  digitalWrite(led7, LOW);
  }
 else {

  digitalWrite(led3, HIGH); 
  digitalWrite(led2, LOW);
  digitalWrite(led1, LOW);

  digitalWrite(led6, HIGH);
  digitalWrite(led5, LOW); 
  digitalWrite(led4, LOW);
 
  digitalWrite(led9, LOW);
  digitalWrite(led8, LOW);
  digitalWrite(led7, HIGH);
  delay(dhijau);

  digitalWrite(led3, HIGH); 
  digitalWrite(led2, LOW);
  digitalWrite(led1, LOW);

  digitalWrite(led6, HIGH);
  digitalWrite(led5, LOW); 
  digitalWrite(led4, LOW);
 
  digitalWrite(led9, LOW);
  digitalWrite(led8, HIGH);
  digitalWrite(led7, LOW);
  delay(dkuning);

  digitalWrite(led3, HIGH); 
  digitalWrite(led2, LOW);
  digitalWrite(led1, LOW);

  digitalWrite(led6, HIGH);
  digitalWrite(led5, LOW); 
  digitalWrite(led4, LOW);
 
  digitalWrite(led9, HIGH);
  digitalWrite(led8, LOW);
  digitalWrite(led7, LOW);
  delay(dmerah);
 
 
  //==============================
 
  digitalWrite(led3, HIGH); 
  digitalWrite(led2, LOW);
  digitalWrite(led1, LOW);

  digitalWrite(led6, LOW);
  digitalWrite(led5, LOW); 
  digitalWrite(led4, HIGH);
 
  digitalWrite(led9, HIGH);
  digitalWrite(led8, LOW);
  digitalWrite(led7, LOW);
  delay(dhijau);

  digitalWrite(led3, HIGH); 
  digitalWrite(led2, LOW);
  digitalWrite(led1, LOW);

  digitalWrite(led6, LOW);
  digitalWrite(led5, HIGH); 
  digitalWrite(led4, LOW);
 
  digitalWrite(led9, HIGH);
  digitalWrite(led8, LOW);
  digitalWrite(led7, LOW);
  delay(dkuning);

  digitalWrite(led3, HIGH); 
  digitalWrite(led2, LOW);
  digitalWrite(led1, LOW);

  digitalWrite(led6, HIGH);
  digitalWrite(led5, LOW); 
  digitalWrite(led4, LOW);
 
  digitalWrite(led9, HIGH);
  digitalWrite(led8, LOW);
  digitalWrite(led7, LOW);
  delay(dmerah);
 
 
 //=====================================

  digitalWrite(led3, LOW); 
  digitalWrite(led2, LOW);
  digitalWrite(led1, HIGH);

  digitalWrite(led6, HIGH);
  digitalWrite(led5, LOW); 
  digitalWrite(led4, LOW);
 
  digitalWrite(led9, HIGH);
  digitalWrite(led8, LOW);
  digitalWrite(led7, LOW);
  delay(dhijau);

  digitalWrite(led3, LOW); 
  digitalWrite(led2, HIGH);
  digitalWrite(led1, LOW);

  digitalWrite(led6, HIGH);
  digitalWrite(led5, LOW); 
  digitalWrite(led4, LOW);
 
  digitalWrite(led9, HIGH);
  digitalWrite(led8, LOW);
  digitalWrite(led7, LOW);
  delay(dkuning);

  digitalWrite(led3, HIGH); 
  digitalWrite(led2, LOW);
  digitalWrite(led1, LOW);

  digitalWrite(led6, HIGH);
  digitalWrite(led5, LOW); 
  digitalWrite(led4, LOW);
 
  digitalWrite(led9, HIGH);
  digitalWrite(led8, LOW);
  digitalWrite(led7, LOW);
  delay(dmerah);
  }

  }
 

 
 
 
}
 



void loop(){
   lcd.setCursor(0, 0);
   lcd.print("SET DELAY LAMPU");
   lcd.setCursor(0, 1);
   lcd.print("SET ON/OFF LAMPU");
 
  digitalWrite(led1, HIGH);  
  digitalWrite(led2, HIGH);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, HIGH);
  digitalWrite(led5, HIGH); 
  digitalWrite(led6, HIGH);
  digitalWrite(led7, HIGH);
  digitalWrite(led8, HIGH);
  digitalWrite(led9, HIGH);



  // 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();

          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>Arduino GET test page</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");

          client.println("<H3>kontrol ON / OFF dan delay lampu</H3>");

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

          client.println("Delay Lampu Merah : <INPUT TYPE=TEXT NAME=\"Merah\" VALUE=\"A\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR><BR>");
          client.println("Delay Lampu Kuning: <INPUT TYPE=TEXT NAME=\"Kuning\" VALUE=\"B\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR><BR>");
          client.println("Delay Lampu Hijau : <INPUT TYPE=TEXT NAME=\"Hijau\" VALUE=\"C\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR><BR>");
  
          client.println("Jam ON : <INPUT TYPE=TEXT NAME=\"LEDON\" VALUE=\"D\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR><BR>");
          client.println("Jam OFF : <INPUT TYPE=TEXT NAME=\"LEDOFF\" VALUE=\"E\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR><BR>");

          client.println("<INPUT TYPE=SUBMIT NAME=\"submit\" VALUE=\" SUBMIT\">");
          client.println("&nbsp <a href = \"/?mulai\"\"><input type = 'button' value = 'MULAI' ></a>");
          client.println("&nbsp <a href = \"/?set\"\"><input type = 'button' value = 'SETTING' ></a>");
         
          client.println("</FORM>");
          client.println("<BR>");
          client.println("<h5>");    
          client.println("SET DELAY LAMPU MERAH = ");
          client.println(dmerah);
            client.println("<BR>");
          client.println("SET DELAY LAMPU KUNING = ");
          client.println(dkuning);
            client.println("<BR>");
          client.println("SET DELAY LAMPU HIJAU = ");
          client.println(dhijau);
            client.println("<BR>");
          client.println("SET ON LAMPU = ");
          client.println(ton);
            client.println("<BR>");
          client.println("SET OFF LAMPU = ");
          client.println(toff);
            client.println("<BR>");
         
          client.println("</h5>");
          client.println("<BR>");

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

          delay(1);
          //stopping client
          client.stop();
         
         

         
          /////////////////////
          if(readString.indexOf("A10") >0)//checks for on
          {
             lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("SET DELAY MERAH");
             lcd.setCursor(0, 1);
             lcd.print("10 Detik");
             dmerah = 1000;
             delay(3000);
             lcd.clear();
            
          }
         
          if(readString.indexOf("A20") >0)//checks for off
          {
              lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("SET DELAY MERAH");
             lcd.setCursor(0, 1);
             lcd.print("20 Detik");
             dmerah = 2000;
             delay(3000);
             lcd.clear();
          }
         
         
          if(readString.indexOf("A30") >0)//checks for off
          {
              lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("SET DELAY MERAH");
             lcd.setCursor(0, 1);
             lcd.print("30 Detik");
             dmerah = 3000;
             delay(3000);
             lcd.clear();
          }
         
         
         
          if(readString.indexOf("B10") >0)//checks for on
          {
             lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("SET DELAY KUNING");
             lcd.setCursor(0, 1);
             lcd.print("10 Detik");
             dkuning = 1000;
             delay(3000);
             lcd.clear();
            
          }
         
          if(readString.indexOf("B20") >0)//checks for off
          {
              lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("SET DELAY KUNING");
             lcd.setCursor(0, 1);
             lcd.print("20 Detik");
             dkuning = 2000;
             delay(3000);
             lcd.clear();
          }
         
         
          if(readString.indexOf("B30") >0)//checks for off
          {
              lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("SET DELAY KUNING");
             lcd.setCursor(0, 1);
             lcd.print("30 Detik");
             dkuning = 3000;
             delay(3000);
             lcd.clear();
          }
         
         
          if(readString.indexOf("C10") >0)//checks for on
          {
             lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("SET DELAY HIJAU");
             lcd.setCursor(0, 1);
             lcd.print("10 Detik");
             dhijau = 1000;
             delay(3000);
             lcd.clear();
            
          }
         
          if(readString.indexOf("C20") >0)//checks for off
          {
             lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("SET DELAY HIJAU");
             lcd.setCursor(0, 1);
             lcd.print("20 Detik");
             dhijau = 2000;
             delay(3000);
             lcd.clear();
          }
         
         
          if(readString.indexOf("C30") >0)//checks for off
          {
             lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("SET DELAY HIJAU");
             lcd.setCursor(0, 1);
             lcd.print("30 Detik");
             dhijau = 3000;
             delay(3000);
             lcd.clear();
          }
         
         
          if(readString.indexOf("D2") >0)//checks for off
          {
             lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("SET ON LAMPU");
             lcd.setCursor(0, 1);
             lcd.print("JAM 07.00 AM");
             ton = 2;
             delay(3000);
             lcd.clear();
          }
         
         
          if(readString.indexOf("D18") >0)//checks for off
          {
             lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("SET ON LAMPU");
             lcd.setCursor(0, 1);
             lcd.print("JAM 08.00 AM");
             ton = 18;
             delay(3000);
             lcd.clear();
          }
         
         
          if(readString.indexOf("E2") >0)//checks for off
          {
             lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("SET OFF LAMPU");
             lcd.setCursor(0, 1);
             lcd.print("JAM 22.00 PM");
             toff = 2;
             delay(3000);
             lcd.clear();
          }
         
         
          if(readString.indexOf("E18") >0)//checks for off
          {
             lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("SET OFF LAMPU");
             lcd.setCursor(0, 1);
             lcd.print("JAM 21.00 PM");
             toff = 18;
             delay(3000);
             lcd.clear();
          }
         
          if(readString.indexOf("?mulai") >0)//checks for off
          {
             lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("START PROGRAM");
             lcd.setCursor(0, 1);
             lcd.print("LOADING....");
             delay(3000);
             lcd.clear();
          }
         
         
          if(readString.indexOf("?set") >0)//checks for off
          {
             lcd.clear();
             lcd.setCursor(0, 0);
             lcd.print("MODE SETTING");
             lcd.setCursor(0, 1);
             lcd.print("LOADING....");
             delay(3000);
             lcd.clear();
          }
         
           while (readString.indexOf("?mulai") >0) {
                mulai();
          }
         

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

        }
      }
    }
  }
}


void mulai(){

  displayTime();
 

  // 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();

          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>Arduino GET test page</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");

          client.println("<H3>kontrol ON / OFF dan delay lampu</H3>");

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

          client.println("Delay Lampu Merah : <INPUT TYPE=TEXT NAME=\"Merah\" VALUE=\"A\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR><BR>");
          client.println("Delay Lampu Kuning: <INPUT TYPE=TEXT NAME=\"Kuning\" VALUE=\"B\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR><BR>");
          client.println("Delay Lampu Hijau : <INPUT TYPE=TEXT NAME=\"Hijau\" VALUE=\"C\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR><BR>");
  
          client.println("Jam ON : <INPUT TYPE=TEXT NAME=\"LEDON\" VALUE=\"D\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR><BR>");
          client.println("Jam OFF : <INPUT TYPE=TEXT NAME=\"LEDOFF\" VALUE=\"E\" SIZE=\"25\" MAXLENGTH=\"50\"><BR><BR><BR>");

          client.println("<INPUT TYPE=SUBMIT NAME=\"submit\" VALUE=\" SUBMIT\">");
          client.println("&nbsp <a href = \"/?mulai\"\"><input type = 'button' value = 'MULAI' ></a>");
          client.println("&nbsp <a href = \"/?set\"\"><input type = 'button' value = 'SETTING' ></a>");
         
          client.println("</FORM>");
          client.println("<BR>");
          client.println("<h5>");    
          client.println("SET DELAY LAMPU MERAH = ");
          client.println(dmerah);
            client.println("<BR>");
          client.println("SET DELAY LAMPU KUNING = ");
          client.println(dkuning);
            client.println("<BR>");
          client.println("SET DELAY LAMPU HIJAU = ");
          client.println(dhijau);
            client.println("<BR>");
          client.println("SET ON LAMPU = ");
          client.println(ton);
            client.println("<BR>");
          client.println("SET OFF LAMPU = ");
          client.println(toff);
            client.println("<BR>");
         
          client.println("</h5>");
          client.println("<BR>");

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

          delay(1);
          //stopping client
          client.stop();
         
                
          //clearing string for next read
          readString="";

        }
      }
    }
  }
}




f. Tampilan Interface WEB





g. Cara Penggunaan Alat


            Untuk menggunakan alat ini sangat lah mudah, yaitu masukkan nilai misal pada Delay lampu merah A10, lalu klik SUBMIT, setelah itu KLIK SETTING, kemudian masukkan nilai delay lampu kuning B20 untuk delay 20 detik, begitu seterusnya, jika berhasil maka nilai akan tersimpan pada bagian bawah form, jika sudah terisi semua nilainya KLIK MULAI, maka akan berjalan sesuai delay yang disetting, untuk kembali ke mode setting bisa dengan menekan tombol SETTING.














Membuat Alat Buka Tutup Pagar / Pintu dan Door Lock Menggunakan Fingerprint dan ARDUINO - BASCOM AVR

Membuat Alat Buka Tutup Pagar dan Door LOck Menggunakan Fingerprint dan ARDUINO - BASCOM AVR


           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat untuk simulasi buka-tutup pagar atau pintu menggunakan fingerprint dan ARDUINO sebagai decoder fingerprint. untuk pengolahan data pada alat ini menggunakan mikrokontroller ATMega16 yang mana menggunakan bahasa BASIC / BASCOM. alat ini dilengkapi dengan LCD dan sebuah tombol untuk keluar. kemudian driver motor dan driver solenoid doorlocknya. untuk lebih jelasnya berikut skema dan program dari alat ini. 




a. Arduino Uno




b. Minimum System 




c. Fingerprint




d. Solenoid Door Lock




e. Sensor SRF04




f. Driver Motor L293




g. Driver Solenoid Door Lock





h. Program Arduino IDE

#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>

int getFingerprintIDez();

// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino  (WHITE wire)
SoftwareSerial mySerial(2, 3);


Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

void setup() 
{
  Serial.begin(9600);
  Serial.println("fingertest");

  // set the data rate for the sensor serial port
  finger.begin(57600);
 
  if (finger.verifyPassword()) {
    Serial.println("Found fingerprint sensor!");
  } else {
    Serial.println("Did not find fingerprint sensor :(");
    while (1);
  }
  Serial.println("Waiting for valid finger...");
}

void loop()                     // run over and over again
{
  getFingerprintIDez();
  delay(50);            //don't ned to run this at full speed.
}

uint8_t getFingerprintID() {
  uint8_t p = finger.getImage();
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image taken");
      break;
    case FINGERPRINT_NOFINGER:
      Serial.println("No finger detected");
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      return p;
    case FINGERPRINT_IMAGEFAIL:
      Serial.println("Imaging error");
      return p;
    default:
      Serial.println("Unknown error");
      return p;
  }

  // OK success!

  p = finger.image2Tz();
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image converted");
      break;
    case FINGERPRINT_IMAGEMESS:
      Serial.println("Image too messy");
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      return p;
    case FINGERPRINT_FEATUREFAIL:
      Serial.println("Could not find fingerprint features");
      return p;
    case FINGERPRINT_INVALIDIMAGE:
      Serial.println("Could not find fingerprint features");
      return p;
    default:
      Serial.println("Unknown error");
      return p;
  }
 
  // OK converted!
  p = finger.fingerFastSearch();
  if (p == FINGERPRINT_OK) {
    Serial.println("Found a print match!");
  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
    Serial.println("Communication error");
    return p;
  } else if (p == FINGERPRINT_NOTFOUND) {
    Serial.println("Did not find a match");
    return p;
  } else {
    Serial.println("Unknown error");
    return p;
  }  
 
  // found a match!
  Serial.print("Found ID #"); Serial.print(finger.fingerID);
  Serial.print(" with confidence of "); Serial.println(finger.confidence);
}

// returns -1 if failed, otherwise returns ID #
int getFingerprintIDez() {
  uint8_t p = finger.getImage();
  if (p != FINGERPRINT_OK)  return -1;

  p = finger.image2Tz();
  if (p != FINGERPRINT_OK)  return -1;

  p = finger.fingerFastSearch();
  if (p != FINGERPRINT_OK)  return -1;
 
  // found a match!
  Serial.print("Found ID #"); Serial.print(finger.fingerID);
  Serial.print(" with confidence of "); Serial.println(finger.confidence);
  return finger.fingerID;
 
 }




i. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 16000000
$baud = 9600

Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2


Dim Data_masuk As String * 100
Dim Cmti_pos As Byte , Cmgr_pos As Byte , Index_pos As Byte , Cmd_pos As Byte
Dim Pjg_sms_index As Byte , Pjg_data As Byte
Dim Sms_index As String * 3
Dim Cmd As String * 5
Dim Cmdbin As Byte
Dim A As Integer

Dim X As Integer
X = 0

Config Timer0 = Timer , Prescale = 256
Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Up

Config Portc.7 = Output
Config Pinc.6 = Input

Declare Sub Cek_jarak

Dim Data_jarak As Word
Dim Data_jarak_olah As Word
Dim Data_jarak_fix As Word

Triger1 Alias Portc.7
Pecho1 Alias Pinc.6

Ddrb.0 = 0
Ddrb.1 = 1
Ddrb.2 = 1
Ddrb.3 = 1

Set Portb.0


Cls
Cursor Off



Mulai:


Data_masuk = " "


On Urxc Getchar

Dim Inchar As String * 20

Enable Interrupts
Enable Urxc



Do

Upperline
Lcd "Letakkan Jari"

If Pinb.0 = 0 Then
Waitms 200
Goto Masukx
End If


Loop


Getchar:
Cls

   Input Data_masuk


   Upperline
   Lcd "DATA MASUK"

   Pjg_data = Len(data_masuk)

   Cmti_pos = Instr(data_masuk , "ID")

   Cmd_pos = Instr(data_masuk , "#")




   If Cmd_pos <> 0 Then
      Incr Cmd_pos
      Cmd = Mid(data_masuk , Cmd_pos , 1)

      Lowerline
      Lcd "ID = " ; Cmd

     If Cmd = "0" Then

     Cls
     Upperline
     Lcd "Darso wahid"
     Lowerline
     Lcd "ID = " ; Cmd

     Wait 3
     Cls
     Goto Masukx


     Elseif Cmd = "1" Then

     Cls
     Upperline
     Lcd "turjanah"
     Lowerline
     Lcd "ID = " ; Cmd

     Wait 3
     Cls
     Goto Masukx

     Elseif Cmd = "2" Then

     Cls
     Upperline
     Lcd "marjuki oke"
     Lowerline
     Lcd "ID = " ; Cmd

     Wait 3
     Cls
     Goto Masukx

     Elseif Cmd = "3" Then

     Cls
     Upperline
     Lcd "tukiyem "
     Lowerline
     Lcd "ID = " ; Cmd

     Wait 3
     Cls
     Goto Masukx

     End If

   Else
   Return
   End If

Return




Sub Cek_jarak:
Reset Triger1
Waitus 10
Set Triger1
Waitus 20
Reset Triger1

Tcnt0 = 0
Bitwait Pecho1 , Set
Start Timer0

Do
If Pecho1 = 0 Then
Data_jarak = Tcnt0
Stop Timer0
Exit Do
End If

If Tifr.0 = 1 Then
Stop Timer0
Tifr.0 = 1
Data_jarak = &HFF
Exit Do
End If
Loop
Stop Timer0
Waitms 15
End Sub



Masukx:
Portb.3 = 1
Waitms 200
Do

Do
'mundur
Portb.1 = 0
Portb.2 = 1

Pwm1a = 150

Waitms 200

Incr X

Loop Until X > 5

'mundur
Portb.1 = 0
Portb.2 = 0

Pwm1a = 0
Wait 1

X = 0

Call Cek_jarak
  Data_jarak = Data_jarak
  Data_jarak_olah = Data_jarak * 100
  Data_jarak_fix = Data_jarak_olah / 256

If Data_jarak_fix > 10 Then
Do
'maju
Portb.1 = 1
Portb.2 = 0

Pwm1a = 150

Waitms 200

Incr X

Loop Until X > 5
X = 0
Portb.3 = 0

'mundur
Portb.1 = 0
Portb.2 = 0

Pwm1a = 0

Goto Mulai
End If


Loop






j. VIDEO HASILNYA

















Membuat Alat Counter UP dan Counter DOWN Menggunakan Input Tegangan 24 Volt / PLC

Membuat Alat Counter UP dan Counter DOWN Menggunakan Input Tegangan 24 Volt / PLC


           Kali ini saya akan mejelaskan mengenai bagaimana cara membuat alat COUNTER UP dan COUNTER DOWN dengan input 24 volt atau kurang, jadi prinsip kerjanya begini jika ada tegangan masuk yaitu lebih dari 10 volt - 24 volt maka akan COUNTER DOWN, jika ingin COUNTER UP maka posisikan switch ke mode LOW. jika ingin COUNTER DOWN posisikan ke mode HIGH. di alat ini terdapat fitur eeprom jadi jika lampu mati, data yang terakhir akan ter-load kembali.



a. Minimum System + Skema





b. Program Bascom AVR

$regfile = "m8def.dat"
$crystal = 12000000

Config Lcdpin = Pin , Rs = Portd.2 , E = Portd.3 , Db4 = Portd.4
Config Lcdpin = Pin , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7
Config Lcd = 20 * 4

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Cls
Cursor Off

Dim Dataadc1 As Word
Dim Dataadc2 As Word
Dim Dataadc3 As Word
Dim Dataadc4 As Word
Dim Dataadc5 As Word

Dim A As Integer
Dim B As Integer
Dim C As Integer
Dim D As Integer

Dim Ax As Eram Integer
Dim Bx As Eram Integer
Dim Cx As Eram Integer
Dim Dx As Eram Integer


Dim Mark As Integer
Mark = 1

Ddrb.3 = 0
Set Portb.3

A = Ax
B = Bx
C = Cx
D = Dx

Do

Dataadc1 = Getadc(0)
Dataadc2 = Getadc(1)
Dataadc3 = Getadc(2)
Dataadc4 = Getadc(3)
Dataadc5 = Getadc(5)

Locate 1 , 1
Lcd "LANTAI 3 = " ; A


Locate 2 , 1
Lcd "LANTAI 2 = " ; B

Locate 3 , 1
Lcd "LANTAI 1 = " ; C


Locate 4 , 1
Lcd "PINTU UTAMA = " ; D

Waitms 200

If Dataadc1 < 1000 And Dataadc5 > 1000 Then
Waitms 200
A = A - 1

If A < 1 Then
A = 0
End If
End If

If Dataadc1 < 1000 And Dataadc5 < 1000 Then
Waitms 200
A = A + 1

If A > 8 Then
A = 8
End If
End If


If Dataadc2 < 1000 And Dataadc5 > 1000 Then
Waitms 200
B = B - 1

If B < 1 Then
B = 0
End If
End If


If Dataadc2 < 1000 And Dataadc5 < 1000 Then
Waitms 200
B = B + 1

If B > 8 Then
B = 8
End If
End If


If Dataadc3 < 1000 And Dataadc5 > 1000 Then
Waitms 200
C = C - 1

If C < 1 Then
C = 0
End If
End If

If Dataadc3 < 1000 And Dataadc5 < 1000 Then
Waitms 200
C = C + 1

If C > 8 Then
C = 8
End If
End If


If Dataadc4 < 1000 And Dataadc5 > 1000 Then
Waitms 200
D = D - 1


If D = 9 And Mark = 1 Then
Cls
Mark = 2
End If

If D < 1 Then
D = 0
End If

End If


If Dataadc4 < 1000 And Dataadc5 < 1000 Then
Waitms 200
D = D + 1


If D = 10 And Mark = 2 Then
Mark = 1
End If

If D > 24 Then
D = 24
End If

End If


If Pinb.3 = 0 Then
Goto Simpan
End If

Ax = A
Bx = B
Cx = C
Dx = D

Loop


Simpan:

A = 8
B = 8
C = 8
D = 24

Do

Dataadc1 = Getadc(0)
Dataadc2 = Getadc(1)
Dataadc3 = Getadc(2)
Dataadc4 = Getadc(3)
Dataadc5 = Getadc(5)

Locate 1 , 1
Lcd "LANTAI 3 = " ; A


Locate 2 , 1
Lcd "LANTAI 2 = " ; B

Locate 3 , 1
Lcd "LANTAI 1 = " ; C


Locate 4 , 1
Lcd "PINTU UTAMA = " ; D

Waitms 200

If Dataadc1 < 1000 And Dataadc5 > 1000 Then
Waitms 200
A = A - 1

If A < 1 Then
A = 0
End If
End If

If Dataadc1 < 1000 And Dataadc5 < 1000 Then
Waitms 200
A = A + 1

If A > 8 Then
A = 8
End If
End If


If Dataadc2 < 1000 And Dataadc5 > 1000 Then
Waitms 200
B = B - 1

If B < 1 Then
B = 0
End If
End If


If Dataadc2 < 1000 And Dataadc5 < 1000 Then
Waitms 200
B = B + 1

If B > 8 Then
B = 8
End If
End If


If Dataadc3 < 1000 And Dataadc5 > 1000 Then
Waitms 200
C = C - 1

If C < 1 Then
C = 0
End If
End If

If Dataadc3 < 1000 And Dataadc5 < 1000 Then
Waitms 200
C = C + 1

If C > 8 Then
C = 8
End If
End If

If Dataadc4 < 1000 And Dataadc5 > 1000 Then
Waitms 200
D = D - 1


If D = 9 And Mark = 1 Then
Cls
Mark = 2
End If

If D < 1 Then
D = 0
End If

End If

If Dataadc4 < 1000 And Dataadc5 < 1000 Then
Waitms 200
D = D + 1

If D = 10 And Mark = 2 Then
Mark = 1
End If

If D > 24 Then
D = 24
End If

End If


If Pinb.3 = 0 Then
Goto Simpan
End If

Ax = A
Bx = B
Cx = C
Dx = D

Loop





c. Cara Menggunakan Alat

          Untuk menggunakan Alat ini yaitu pertama hubungkan alat dengan suplai diatas 5 volt, kemudian di tampilan LCD akan tertulis nilai awal. tekan tombol SET kemudian akan terisi nilai 8, 8, 8, 24. pada PIN SCREW hubungkan ke PLC atau device yang lainnya. jika ada input 24 volt atau kurang maka akan counter UP jika mode switch HIGH. jika mode switch LOW maka akan counter DOWN. begitu seterusnya.












MENGAKSES NEC REMOTE DVD / MP3 IR INFRARED MENGGUNAKAN ARDUINO

MENGAKSES NEC REMOTE DVD / MP3 IR INFRARED MENGGUNAKAN ARDUINO


            Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara mengakses NEC REMOTE DVD / MP3 menggunakan Arduino. prinsip kerja alat ini yaitu menampilkan nilai dari remote NEC ke serial monitor dan juga mengendalikan led menggunakan Remote NEC. Pengembangan lebih lanjut dari alat ini yaitu bisa diaplikasikan untuk kendali lampu rumah, kipas angin dan lainnya menggunakan NEC Remote. untuk skema dan programnya seperti berikut.

Download Library NEC Remote



a. Arduino Mega




b. IR Infrared Sensor




c. NEC Remote DVD / MP3 




d. Program ARDUINO IDE

#include "Adafruit_NECremote.h"

// Connect a 38KHz remote control sensor to the pin below
#define IRpin         4

Adafruit_NECremote remote(IRpin);

int led = 13;

void setup(void) {
  Serial.begin(115200);
  Serial.println("Ready to decode IR!");
  pinMode(led, OUTPUT);
}

int lastcode = -1;

void loop(void) {
  // You can set the listen() time out to 'n' seconds
  int c = remote.listen(5);  // seconds to wait before timing out!
  // Or you can wait 'forever' for a valid code
  //int c = remote.listen();  // Without a #, it means wait forever

  if (c >= 0) {
    Serial.print("Received code #");
    Serial.println(c, DEC);
    lastcode = c;
  
  if (c == 7){  
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  }

  if (c == 21){  
  digitalWrite(led, LOW);   // turn the LED on (HIGH is the voltage level)
  } 
   
  } else if (c == -3) {
    Serial.print("Repeat (");
    Serial.print(lastcode);
    Serial.println(")");
  } else if (c == -2) {
    Serial.println("Data error");
  } else {
    Serial.println("Timed out waiting!");
  }
}




 e. VIEO HASILNYA







 



Membuat Alat Kendali Dengan NEC REMOTE MP3 / DVD IR Infrared BASCOM AVR

Membuat Alat Kendali Dengan NEC REMOTE MP3 / DVD IR Infrared BASCOM AVR


           Pada kesempatan kali ini saya akan menjelaskan  mengenai bagaimana cara mengakses REMOTE DVD / MP3 Menggunakan mikrokontroller ATMega dan bahasa Basic Bascom AVR. Prinsip kerja alat ini sederhana saja. yaitu menampilkan nilai dari remote ke serial monitor. Alat ini bisa digunakan untuk kendali device lain seperti TV, lampu rumah. kipas angin dan lainnya. untuk lebih jelasnya berikut adalah skema dan programnya.



a. Minimum System




b. IR Infrared Sensor / TSOP




c. REMOTE DVD / MP3




d. Rangkaian RS232





e. Program Bascom AVR

'sumber=http://www.mcselec.com/index.php?option=com_content&task=view&id=223&Itemid=57
$regfile = "m8def.dat"
$crystal = 8000000                                          'Internal RC oscillator 8 MHz
$baud = 9600

Config Pind.2 = Input

'Config Portc.2 = Output

Config Timer0 = Timer , Prescale = 256                      '8000000/256=31250 Hz
Config Int0 = Falling                                       'Interruption on Falling
Stop Timer0
Enable Timer0
Enable Int0
Enable Interrupts
On Timer0 Tikers                                            'work on timer
On Int0 Infrared                                            'work on interruption

Dim Tik As Word                                             'counter of teaks of timer
Dim Byt As Byte                                             'counter accepted bit
Dim Repeat_flag As Bit                                      'flag of repetition
Dim Start_flag As Bit                                       'flag of start condition
Dim Address As Byte                                         'byte of address
Dim Command As Byte                                         'byte of command
Dim Address_1 As Byte                                       'direct byte of address
Dim Command_1 As Byte                                       'direct byte of command
Dim Address_0 As Byte                                       'indirect byte of address
Dim Command_0 As Byte                                       'indirect byte of command
Dim Summa As Word

Cursor Off                                                  'Switch Off cursor
'################################################################################################################


Do                                                          'Main cycle
'Cls
                                                             'Clean LCD
Print Address ; " " ; Command                               'Lcd ADDRESS and COMMAND

'If Command = 8 Then Portc.2 = 1                             'If pressed key "P+" - to include LED

'If Command = 240 Then Portc.2 = 0                           'If pressed key "P-" - to switch off LED

Waitms 200                                                  'Delay 10 en

Loop

End                                                         'End of main cycle

'################################################################################################################

 Tikers:                                                    'work on timer
 Timer0 = 253                                               '31250/(256-253)=10416,66 Hz (96 een)
 Incr Tik
 If Tik >= 1200 Then                                        'if 1200 teaks, have thrown all in source condition
 Tik = 0
 Repeat_flag = 0
 Start_flag = 0
 Address_1 = 0
 Command_1 = 0
 Address_0 = 0
 Command_0 = 0
 Address = 0
 Command = 0
 Stop Timer0
 End If
 Return
'################################################################################################################

 Infrared:                                                  'work on interruption
 Start Timer0

 If Tik >= 139 And Tik < 150 Then                           'if has happenned from 139 before 150 teaks - "START"
  Address = 1
  Repeat_flag = 0
  Start_flag = 1
  Address_1 = 0
  Command_1 = 0
  Address_0 = 0
  Command_0 = 0
 End If

 If Tik >= 116 And Tik < 139 Then                           'if has happenned from 116 before 138 teaks - "REPETITION"
  Address = 2
  Repeat_flag = 1
  Start_flag = 0
 End If

 If Tik >= 22 And Tik < 116 And Start_flag = 1 Then         'if has happenned from 22 before 115 teaks - have taken "1"
 Incr Byt

 If Byt < 9 Then
 Shift Address_1 , Left
     Address_1 = Address_1 + 1
 End If

 If Byt >= 9 And Byt < 17 Then
 Shift Address_0 , Left
     Address_0 = Address_0 + 1
 End If

 If Byt >= 17 And Byt < 25 Then
 Shift Command_1 , Left
     Command_1 = Command_1 + 1
 End If

 If Byt >= 25 Then
 Shift Command_0 , Left
     Command_0 = Command_0 + 1
 End If
 End If

 If Tik >= 10 And Tik < 22 And Start_flag = 1 Then          'if has happenned from 10 before 21 teaks - have taken "0"
 Incr Byt

 If Byt < 9 Then
 Shift Address_1 , Left
 End If

 If Byt >= 9 And Byt < 17 Then
 Shift Address_0 , Left
 End If

 If Byt >= 17 And Byt < 25 Then
 Shift Command_1 , Left
 End If

 If Byt >= 25 Then
 Shift Command_0 , Left
 End If
 End If

 Tik = 0

 If Byt = 32 Then                                           'if have taken 4 bytes, check correctness a receiving a command
 'if address or command 16-bit, check does not pass
 'Summa = Address_0 + Address_1
 'If Summa = 255 Then
    Address = Address_1
 'Else
 'Address = 0
 'End If

 'Summa = Command_0 + Command_1
 'If Summa = 255 Then
    Command = Command_1
 'Else
 'Command = 0
 'End If
  Byt = 0
  Repeat_flag = 0
  Start_flag = 0
 Stop Timer0
 End If

 Return




f. VIDEO HASILNYA













Membuat Alat Monitor Heart Beat / Heart Rate / Detak Jantung dan Suhu Tubuh Manusia ( ARDUINO PULSE SENSOR DS18B20 / DS1820 )

Membuat Alat Monitor Heart Beat / Heart Rate / Detak Jantung dan Suhu Tubuh Manusia ( ARDUINO PULSE SENSOR DS18B20 / DS1820 )


             Pada pagi hari ini saya akan menjelaskan mengenai bagaimana cara untuk membuat alat yang biasa digunakan untuk mengecek detak jantung / hear beat dan suhu tubuh manusia. Alat ini sebenarnya bertujuan untuk pasien monitor portabel, jadi si penderita bisa check up dimana saja dan kapan saja dia berada. Alat ini menggunakan 2 buah sensor yaitu sensor suhu DS18B20 dan Pulse sensor. Selain itu juga terdapat interface VB 6 + Database pada komputer guna melihat hasilnya. untuk lebih jelasnya berikut adalah skema dan penjelasannya.




a. Arduino UNO




 b. LCD 16x2




c. Sensor Suhu DS18B20




d. Sensor Pulse / Heart Beat Sensor





e. Program Arduino IDE

#include <Wire.h>
#include <OneWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

OneWire  ds(10);  //output ds18b20 ke pin 10 arduino

int n = 0;
int bpm = 0;
int x = 0;
int suhux = 0;
int bpmx = 0;

void setup() {
  lcd.begin(16, 2);
  lcd.clear();
  lcd.noCursor();
  pinMode(13, OUTPUT);
  Serial.begin(9600);

  lcd.setCursor(0, 0);
  lcd.print("WELLCOME");
  delay(20000);
  lcd.clear();

}

void loop() {
   
  n = n + 1;
 
  int dataadc1 = analogRead(A0);          

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

  if ((dataadc1 > 512) && (x > 1)) {  
  digitalWrite(13, HIGH);
  x = 0;
  bpm = bpm + 1;
  }

  else if ((dataadc1 < 512) && (x < 1)) {
  x = 2;
  digitalWrite(13, LOW);

  }

  delay(200);

  if ( n > 300 ) {
  lcd.clear();
  datatampil();
  }


}


void datatampil() {

  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  int celsius, fahrenheit;

  if ( !ds.search(addr)) {
    ds.reset_search();
    delay(250);
    return;
  }


  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        // start conversion, with parasite power on at the end

  delay(1000);     // maybe 750ms is enough, maybe not

  present = ds.reset();
  ds.select(addr);  
  ds.write(0xBE);      

  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();

  }

  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    // at lower res, the low bits are undefined, so let's zero them
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
    //// default is 12 bit resolution, 750 ms conversion time
  }
  celsius = (float)raw / 16.0;


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

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

  delay(3000);
 
  Serial.println(bpm);
  Serial.println(celsius);
 

  n = 0;
  bpm = 0;
  lcd.clear();
 
}





f. Program VB 6 + Database MS Access 2007

Download tutorial pembuatannya di link berikut
DOWLOAD




Option Explicit
Dim arrdata()
Dim TotalBaca As Integer
Dim BMI As Single
Dim Keterangan As String
Const MAKSBACA = 10

Dim Conn1 As ADODB.Connection
Dim Cmd1 As ADODB.Command
Dim Param1 As ADODB.Parameter
Dim Rs1 As ADODB.Recordset



Private Sub Adodc1_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)

End Sub

Private Sub berhenti_Click()
  start.Enabled = True
    berhenti.Enabled = False
    TimerBaca.Enabled = False
End Sub


Private Sub Command1_Click()
Open "C:\Users\yanuar\Desktop\april\bpm\VB Interface SErial ARRAY 3" & "\PRINTOUT.txt" For Output As #1
Print #1, "======================"
Print #1, "   HASIL PENGUJIAN    "
Print #1, "======================"
Print #1, "Nama = "; tbnama.Text
Print #1, "Umur = "; Text4.Text
Print #1, "Gender = "; gender.Text
Print #1, "Detak Jantung = "; Text2(0).Text
Print #1, "Suhu Tubuh = "; Text2(1).Text
Print #1, "Kategori Detak Jantung = "; lbljantung.Caption
Print #1, "Kategori Suhu Tubuh = "; Label4.Caption
Print #1,
Close #1
End Sub

Private Sub Command2_Click()
Unload Me
End Sub



Private Sub Form_Load()
Dim I As Byte
For I = 1 To 16
    ComboCOM.AddItem (I)
Next I
End Sub



Private Sub MSComm2_OnComm()
Dim buffer As String
Dim temp As String
Dim pisah() As String
Dim I As Integer

If MSComm2.CommEvent = comEvReceive Then
    buffer = MSComm2.Input
    pisah = Split(buffer, Chr$(13))
On Error Resume Next
If buffer <> " " Then
With Text1
    .SelStart = Len(.Text)
    .SelText = buffer
End With
For I = 0 To 3
    If 0 < 4 Then
        Text2(I).Text = CStr(pisah(I))
        End If
        Next I
    Else
    buffer = " "
    End If
End If
End Sub

Private Sub Option1_Click()
gender.Text = "PRIA"
End Sub

Private Sub Option2_Click()
gender.Text = "WANITA"
End Sub

Private Sub start_Click()
Dim u As Integer
    Timer1.Enabled = True
    Timer2.Enabled = True
   
    On Error GoTo ada_eror
   
    MSComm2.CommPort = ComboCOM.Text
    MSComm2.Settings = "9600,N,8,1"
    MSComm2.RThreshold = 15
    MSComm2.InputLen = 15
    MSComm2.InputMode = comInputModeText
    MSComm2.PortOpen = True ' buka port
   
    ReDim arrdata(1 To MAKSBACA + 1)
    For u = 1 To MAKSBACA
        arrdata(u) = 0
    Next
    TotalBaca = 0
    start.Enabled = False
    berhenti.Enabled = True
    TimerBaca.Enabled = True
ada_eror:
 If ComboCOM.ListIndex < 1 Then
    MsgBox "COM berada di Nomor : " & Err.Number & vbCrLf & Err.Description, vbCritical + vbOKOnly, "ERROR"
    start.Enabled = True
    berhenti.Enabled = True
    ComboCOM.Text = "Pilih COM"
End If
End Sub

Private Sub Timer1_Timer()
Dim SQl As String
   
   Call dbConnect
   
    SQl = "INSERT INTO tbsimpan VALUES('" & tbnama.Text & "','" & Text4.Text & "','" & gender.Text & "','" & Text2(0).Text & "','" & Text2(1).Text & "','" & lbljantung.Caption & "','" & Label4.Caption & "')"
   
    Dim Rs As Recordset
    Set Rs = New ADODB.Recordset
    Rs.Open SQl, Conn, adOpenDynamic
   

End Sub

Private Sub Timer2_Timer()
Dim konversisuhu As Integer
Dim konversijantung As Integer
Dim konvumur As Integer
konversisuhu = Val(Text2(0).Text)
konversijantung = Val(Text2(1).Text)
konvumur = Val(Text4.Text)

 Adodc1.Refresh

 If konversisuhu >= 36 And konversisuhu <= 37 Then
 Label4.Caption = "SUHU NORMAL"
 End If

 If konversisuhu > 37 Then
 Label4.Caption = "SUHU TINGGI"
 End If

 If konversisuhu < 36 Then
 Label4.Caption = "SUHU RENDAH"
 End If

 If konvumur >= 20 And konvumur <= 29 And konversijantung < 60 And gender.Text = "PRIA" Then
 lbljantung.Caption = "Sangat Baik"
 End If

 If konvumur >= 30 And konvumur <= 39 And konversijantung < 64 And gender.Text = "PRIA" Then
 lbljantung.Caption = "Sangat Baik"
 End If

 If konvumur >= 40 And konvumur <= 49 And konversijantung < 66 And gender.Text = "PRIA" Then
 lbljantung.Caption = "Sangat Baik"
 End If

 If konvumur >= 50 And konversijantung < 68 And gender.Text = "PRIA" Then
 lbljantung.Caption = "Sangat Baik"
 End If

'===========================================================================================

 If konvumur >= 20 And konvumur <= 29 And konversijantung >= 60 And konversijantung <= 69 And gender.Text = "PRIA" Then
 lbljantung.Caption = "Baik"
 End If

 If konvumur >= 30 And konvumur <= 39 And konversijantung >= 65 And konversijantung <= 71 And gender.Text = "PRIA" Then
 lbljantung.Caption = "Baik"
 End If

 If konvumur >= 40 And konvumur <= 49 And konversijantung >= 66 And konversijantung <= 73 And gender.Text = "PRIA" Then
 lbljantung.Caption = "Baik"
 End If

 If konvumur >= 50 And konversijantung >= 68 And konversijantung <= 75 And gender.Text = "PRIA" Then
 lbljantung.Caption = "Baik"
 End If

'==========================================================================================

 If konvumur >= 20 And konvumur <= 29 And konversijantung >= 70 And konversijantung <= 75 And gender.Text = "PRIA" Then
 lbljantung.Caption = "Cukup"
 End If

 If konvumur >= 30 And konvumur <= 39 And konversijantung >= 72 And konversijantung <= 87 And gender.Text = "PRIA" Then
 lbljantung.Caption = "Cukup"
 End If

 If konvumur >= 40 And konvumur <= 49 And konversijantung >= 74 And konversijantung <= 89 And gender.Text = "PRIA" Then
 lbljantung.Caption = "Cukup"
 End If

 If konvumur >= 50 And konversijantung >= 79 And konversijantung <= 91 And gender.Text = "PRIA" Then
 lbljantung.Caption = "Cukup"
 End If
 
'===========================================================================================

 If konvumur >= 20 And konvumur <= 29 And konversijantung > 75 And gender.Text = "PRIA" Then
 lbljantung.Caption = "kurang"
 End If

 If konvumur >= 30 And konvumur <= 39 And konversijantung > 87 And gender.Text = "PRIA" Then
 lbljantung.Caption = "kurang"
 End If

 If konvumur >= 40 And konvumur <= 49 And konversijantung > 89 And gender.Text = "PRIA" Then
 lbljantung.Caption = "kurang"
 End If

 If konvumur >= 50 And konversijantung > 91 And gender.Text = "PRIA" Then
 lbljantung.Caption = "kurang"
 End If
 




 If konvumur >= 20 And konvumur <= 29 And konversijantung < 70 And gender.Text = "WANITA" Then
 lbljantung.Caption = "Sangat Baik"
 End If

 If konvumur >= 30 And konvumur <= 39 And konversijantung < 72 And gender.Text = "WANITA" Then
 lbljantung.Caption = "Sangat Baik"
 End If

 If konvumur >= 40 And konvumur <= 49 And konversijantung < 74 And gender.Text = "WANITA" Then
 lbljantung.Caption = "Sangat Baik"
 End If

 If konvumur >= 50 And konversijantung < 76 And gender.Text = "WANITA" Then
 lbljantung.Caption = "Sangat Baik"
 End If

'===========================================================================================

 If konvumur >= 20 And konvumur <= 29 And konversijantung >= 70 And konversijantung <= 77 And gender.Text = "WANITA" Then
 lbljantung.Caption = "Baik"
 End If

 If konvumur >= 30 And konvumur <= 39 And konversijantung >= 72 And konversijantung <= 79 And gender.Text = "WANITA" Then
 lbljantung.Caption = "Baik"
 End If

 If konvumur >= 40 And konvumur <= 49 And konversijantung >= 74 And konversijantung <= 81 And gender.Text = "WANITA" Then
 lbljantung.Caption = "Baik"
 End If

 If konvumur >= 50 And konversijantung >= 76 And konversijantung <= 83 And gender.Text = "WANITA" Then
 lbljantung.Caption = "Baik"
 End If

'==========================================================================================

 If konvumur >= 20 And konvumur <= 29 And konversijantung >= 78 And konversijantung <= 94 And gender.Text = "WANITA" Then
 lbljantung.Caption = "Cukup"
 End If

 If konvumur >= 30 And konvumur <= 39 And konversijantung >= 80 And konversijantung <= 96 And gender.Text = "WANITA" Then
 lbljantung.Caption = "Cukup"
 End If

 If konvumur >= 40 And konvumur <= 49 And konversijantung >= 82 And konversijantung <= 98 And gender.Text = "WANITA" Then
 lbljantung.Caption = "Cukup"
 End If

 If konvumur >= 50 And konversijantung >= 84 And konversijantung <= 100 And gender.Text = "WANITA" Then
 lbljantung.Caption = "Cukup"
 End If
 
'===========================================================================================

 If konvumur >= 20 And konvumur <= 29 And konversijantung > 94 And gender.Text = "WANITA" Then
 lbljantung.Caption = "kurang"
 End If

 If konvumur >= 30 And konvumur <= 39 And konversijantung > 96 And gender.Text = "WANITA" Then
 lbljantung.Caption = "kurang"
 End If

 If konvumur >= 40 And konvumur <= 49 And konversijantung > 98 And gender.Text = "WANITA" Then
 lbljantung.Caption = "kurang"
 End If

 If konvumur >= 50 And konversijantung > 100 And gender.Text = "WANITA" Then
 lbljantung.Caption = "kurang"
 End If
 


End Sub

Private Sub TimerBaca_Timer()
Dim strInput As String
Dim strPotong As String
Dim singleInput As Single
Dim u As Integer


    strInput = MSComm2.Input
        strPotong = strInput
        'Text1.Text = Text1.Text + strPotong + vbCrLf
        'singleInput = Val(strPotong)
        'Label1.Caption = singleInput
        If TotalBaca >= MAKSBACA Then
            TimerBaca.Enabled = False
            If MSComm2.PortOpen = True Then MSComm2.PortOpen = False
            Call berhenti_Click
        End If
 
End Sub





 
g. Cara Penggunaan Alat

         Pertama yaitu hubungkan Arduino ke PC atau laptop sehingga LCD 16x2 nyala dan sensor detak jantung serta sensor suhu tubuh juga nyala. setelah semua sudah ready maka aktifkan software interface VB 6 dan tekan tombol mulai. jika berhasil maka akan tampil data suhu dan detak jantung pada interface vb 6. pengiriman dari Arduino ke PC berjarak satu menit, kemudian record ke database berjarak 1,5 menit .








Membuat Alat Monitoring Menggunakan Arduino dan WIFI Shield V3 DFROBOT dan Interface VB 6 TCP-IP

Membuat Alat Monitoring Menggunakan Arduino dan WIFI Shield V3 DFROBOT dan Interface VB 6 TCP-IP


             Pada kesempatan yang berbahagia kali ini saya akan mencontohkan mengenai bagaimana cara mengakses Arduino dan WIFI Shield dari DFROBOT. Prinsip kerja alat ini sangatlah sederhana yaitu mengirimkan data ADC dari Arduino ke server menggunakan WIFI. Untuk pengembangannya data ADC bisa dirubah ke data sensor misal sensor gas, sensor suhu dan lain-lain. yang perlu diperhatikan disini yaitu menggunakan media WIFI Shield. bedanya jika menggunakan Ethernet Shield yaitu harus menggunakan kabel lan dari Arduino ke Router agar didapat sinyal wifi, namun jika menggunaka WIFI Shield tidak perlu menggunakan kabel LAN, cukup sinyal wifi saja, itu yang membedakan. jadi WIFI Shield akan konek ke Router menggunakan sinyal WIFI. istilah lainnya yaitu linking. jadi pada contoh ini di tampilkan data yang dikirim melalui Hypoterminal secara serial, kemudian untuk penerimanya menggunakan Hyperterminal melalui TCP-IP. untuk lebih jelasnya berikut adalah skema dan konfigurasinya.



a. Arduino Mega




b. WIFI Shield V3 DFROBOT




c. Sensor Gas




d. Router Server


IP = 192.168.0.1
Subnet Mask = 255.255.255.0
Nama = AVR-PC_Network




e. Program Arduino IDE

//rubah SWITCH ke PROGRAMME lalu UPLOAD
//Jika sudah di UPLOAD rubah SWITCH ke ARDUINO

void setup() {
  // initialize serial communication at 115200 bits per second:
  Serial.begin(115200);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // print out the value you read:
  Serial.println(sensorValue);
  delay(1000);        // delay in between reads for stability
}




f. Cara Meng-konfigurasi WIFI SHIELD V3

1. Set IP Komputer ke DHCP




2. konek ke WIFI Shield V3




3. Pertama ketikkan IP "http://10.10.100.254/" ke browser dengan nama dan passwordnya "admin"
4. Rubah Settingan seperti berikut








5. Konek ke Router AVR-PC_Network dan ubah IP komputer menjadi seperti berikut




 6.  Buka Hypoterminal lalu lihat data yang dikirimkan Arduino




7. Buka Hyperterminal lalu pilih seperti berikut, dan lihat data yang dikirim oleh Arduino





8. Aplikasi / Interface VB 6 TCP-IP



Option Explicit

Private Sub cmd_Connect_Click()

On Error GoTo a

If Winsock.State <> sckClosed Then Winsock.Close
Winsock.RemoteHost = Text_IP
Winsock.RemotePort = Text_PORT
Winsock.Connect
cmd_Connect.Enabled = False
cmd_Disconnect.Enabled = True

Exit Sub
a:
MsgBox "error: " & Err.Description, vbCritical, "Error"

End Sub

Private Sub cmd_Disconnect_Click()
Winsock.Close
MsgBox ("Koneksi dengan Server selesai")
cmd_Connect.Enabled = True
cmd_Disconnect.Enabled = False
End Sub




Private Sub Command_Clear_Click()
Text1.Text = ""
End Sub


Private Sub Form_Load()

cmd_Connect.Enabled = True
cmd_Disconnect.Enabled = False

End Sub




Private Sub Winsock_Connect()
MsgBox ("terkoneksi dengan server")
End Sub

Private Sub Winsock_ConnectionRequest(ByVal requestID As Long)
Winsock.Accept requestID
End Sub

Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)

Dim buffer As String
Dim temp As String
Dim pisah() As String
Dim i As Integer

Dim data As String
data = ""
Winsock.GetData data, vbString
Text1.Text = Text1.Text & data & vbCr

buffer = data

pisah = Split(buffer, Chr$(13))

On Error Resume Next
If buffer <> " " Then
With Text5
    .SelStart = Len(.Text)
    .SelText = buffer
End With
For i = 0 To 8
    If 0 < 9 Then
        Text6(i).Text = CStr(pisah(i))
        End If
        Next i
    Else
    buffer = " "
    End If

End Sub





g. VIDEO HASILNYA