Translate

Membuat Alat Deteksi Gerakan / MOTION DETECTOR Menggunakan Sensor PIR

Membuat Alat Deteksi Gerakan / MOTION DETECTOR Menggunakan Sensor PIR


        Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat untuk mendeteksi gerakan atau motion detector, alat ini biasanya digunakan untuk mendeteksi adanya manusia yang sedang berjalan baik itu mendekat maupun menjauh. sensor ini mendeteksi dua unsur, yaitu unsur panas tubuh manusia dan yang kedua yaitu gerakan, jadi jika benda yang bergerak tersebut tidak memiliki panas, maka sensor tidak akan mendeteksi biarpun ia bergerak, sebaliknya juga jika benda yang memiliki panas tidak bergerak atau diam, maka sensor juga tidak akan mendeteksi keberadaannya. Alat ini jika mendeteksi adanya gerakan maka akan mengaktifkan relay dan menghidupkan lampu. untuk lebih detailnya berikut skemanya.



a. Skema Rangkaian





b. VIDEO HASILNYA











Mengakses DAC0808 ( Digital to Analog Converter ) / DAC

Mengakses DAC0808 ( Digital to Analog Converter ) / DAC


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara mengakses DAC0808 menggunakan skema lain yaitu skema tanpa OP-AMP. kelebihan dari rangkaian ini yaitu maksimal tegangan bisa 5v dan minimal tegangan bisa -1 volt. tapi bisa juga menggunakan OP-AMP seperti yang tertera di datasheet. untuk lebih jelasnya berikut adalah skemanya.



a. Skema Rangkaian





b. Gambar Alat





c. VIDEO HASILNYA











Mengakses Wireless Modul RF LINK 433MHZ Menggunakan Arduino

Mengakses Wireless Modul RF LINK 433MHZ Menggunakan Arduino


            Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara mengakses modul wireless yang sangat umum dijumpai di masyarakat atau di toko elektronik, yaitu RF LINK 433MHZ. modul ini sangat terjangkau sekali harganya dan juga jarak tempuh sensor ini mencapai 500 meter open area.sensor ini ada dua tipe yaitu transmitter dan receiver. untuk mengetahui lebih lanjut berikut adalah program dan skemanya.

download library: LINK DOWNLOAD




a. Arduino Mega




b. Modul Wireless RF-Link 433MHZ




c. Skema Receiver




d. skema transmitter





e. Program Arduino Terima Data

// RF 433MHz Modules (Receiver Circuit)

#include <RH_ASK.h>
// Serial Peripheral Interface (SPI)
#include <SPI.h>               // Needed to compile

RH_ASK driver;

void setup () {
  Serial.begin (9600);         // Debugging ONLY
  if (!driver.init ())
    Serial.println ("init failed");
}

void loop () {
  uint8_t buf [12];
  uint8_t buflen = sizeof (buf);
  
  if (driver.recv (buf, &buflen)) {        // Non-blocking
    int i;
    // Message with a good cheksum received, dump it
    Serial.print ("Message: ");
    Serial.println ((char*) buf);
  }
}




f. Program Arduino Kirim Data

// RF 433MHz Modules (Transmitter Circuit)

#include <RH_ASK.h>
// Serial Peripheral Interface (SPI)
#include <SPI.h>               // Needed to compile

RH_ASK driver;

void setup () {
  Serial.begin (9600);         // Debugging ONLY
  if (!driver.init ())
    Serial.println ("init failed");
}

void loop () {
  const char *msg = "Hello World!";
  driver.send ((uint8_t *) msg, strlen (msg));
  driver.waitPacketSent ();
  delay (1000);
}




g. Program Arduino Transmitter Untuk ON/OFF 

#include "Wire.h"
#include <LiquidCrystal.h>
#include <RH_ASK.h>
#include <SPI.h> // Not actually used but needed to compile

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

RH_ASK driver;

int relay = 8;

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

  if (!driver.init())
     Serial.println("init failed");

}

void loop() {
 
  int sensorpir = analogRead(A0); 
 
  int sensorValue = analogRead(A7);
  float voltage = sensorValue * (5.0 / 1023.0);
  float suhu = voltage * 100 ;

  if (sensorpir > 100) {
  
  digitalWrite(relay, HIGH); 
   
  lcd.setCursor(0, 0);
  lcd.print("Terdeteksi");
  lcd.setCursor(0, 1);
  lcd.print("HIDUPKAN AC");   
  delay(500);
  lcd.clear();
 
  } else {
 
  if (suhu  >= 20){
    //on AC 2
    const char *msg = "255";
    driver.send((uint8_t *)msg, strlen(msg));
    driver.waitPacketSent();
   
  }
  if (suhu <= 18){
    //OFF AC 2
    const char *msg = "999";
    driver.send((uint8_t *)msg, strlen(msg));
    driver.waitPacketSent();
   
  }
 
  lcd.setCursor(0, 0);
  lcd.print("suhu = ");
  lcd.print(suhu);
  lcd.setCursor(0, 1);
  lcd.print("PIR = ");
  lcd.print(sensorpir); 
  delay(500);
  lcd.clear();
 
  }
 
   
 
}





h. Program Arduino Terima data ON/OFF

#include "Wire.h"
#include <LiquidCrystal.h>
#include <RH_ASK.h>
#include <SPI.h> // Not actualy used but needed to compile

RH_ASK driver;


LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

int relay = 8;

String a;

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

 if (!driver.init())
         Serial.println("init failed");
 
}

void loop() {

  int sensorValue = analogRead(A0);
  float voltage = sensorValue * (5.0 / 1023.0);
  float suhu = voltage * 100 ;

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

 uint8_t buf[12];
    uint8_t buflen = sizeof(buf);
    if (driver.recv(buf, &buflen)) // Non-blocking
    {
      int i;
      // Message with a good checksum received, dump it.
      Serial.print("Suhu: ");
      Serial.println(suhu);
      Serial.print("Message: ");
      Serial.println((char*)buf);

     lcd.setCursor(0, 1);
     lcd.print((char*)buf);
    
     int nilai = atoi((char*)buf);
    
 //    if (nilai < 500 ){
 //      digitalWrite(relay, HIGH);
 //    }
    
 //    if (nilai > 500 ){
 //      digitalWrite(relay, LOW);
 //    }
    
           
    }

  delay(500);
  lcd.clear();
 

}

 



 i. VIDEO HASILNYA











CARA MENGAKSES SENSOR ARUS ACS712 / TRAFO CT ARUS ATAU SENSOR TEGANGAN ZMPT101B DAN CARA MENGAMBIL / SAMPLING SINYAL SINUS DENGAN ARDUINO

CARA MENGAKSES SENSOR ARUS ACS712 / TRAFO CT ARUS ATAU SENSOR TEGANGAN ZMPT101B DAN CARA MENGAMBIL / SAMPLING SINYAL SINUS DENGAN ARDUINO



          Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara men-sampling sinyal sinus agar diambil hanya V peak saja atau tegangan tertinggi saja, aplikasi teknik ini dipakai untuk sensor arus ac misal trafo CT arus, sensor ACS712 dan sensor tegangan AC ZMPT101B, yang perlu diperhatikan yaitu output sensor adalah DC namun bentuk sinyal adalah sinus, maka dari itu harus menggunakan metode sampling untuk mengaksesnya, karena kalau hanya ADC maka akan berubah-ubah nilainya. alangkah baiknya output dari sensor ini diberikan kapasitor untuk meredam noise, biasanya kapasitor 2200uF/50v atau sejenisnya. untuk lebih jelasnya berikut skema dan programnya.




a. ARDUINO MEGA




b. Sensor ARUS ACS712




c. Sensor Tegagan ZMPT101B




d. TRAFO CT ARUS





e. Program ARDUINO Sampling Sinyal SINUS

//kecepatan sampling 116uS
//pengambilan sampling sebanyak 300 data
//diambil tegangan tertinggi dari sinyal sinus yang didapat

 // Arrays to save our results in
unsigned long start_times[300];
unsigned long stop_times[300];
unsigned long values[300];


// Define various ADC prescaler
const unsigned char PS_16 = (1 << ADPS2);
const unsigned char PS_32 = (1 << ADPS2) | (1 << ADPS0);
const unsigned char PS_64 = (1 << ADPS2) | (1 << ADPS1);
const unsigned char PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

// Setup the serial port and pin 2
void setup() {
  Serial.begin(9600);


  // set up the ADC
  ADCSRA &= ~PS_128;  // remove bits set by Arduino library

  // you can choose a prescaler from above.
  // PS_16, PS_32, PS_64 or PS_128
  ADCSRA |= PS_128;    // set our own prescaler to 64

}


void loop() { 
  unsigned int i;
  unsigned int z;
  z = 0;
   
  // capture the values to memory
  for(i=0;i<300;i++) {
    start_times[i] = micros();
    values[i] = analogRead(8);             
 
  if (values[i] >= z) {
  z = values[i]; 
  }
 
    stop_times[i] = micros();


  }

//rumus ini didapat dari hasil linierisasi atau regresi linier
//untuk menjadikan dataadc menjadi satuan yg diinginkan
  float vout = (z - 332.3) / 9.933;
 
  // print out the results

 
  Serial.println("\n\n--- Results ---");
  for(i=0 ; i<300 ;i++ ) {
 
    Serial.print(values[i]);
    Serial.print(" ");
    Serial.print(z);
    Serial.print(" ");
    Serial.print(" ");
    Serial.print(vout);
    Serial.print(" ");
    Serial.print(" ");   
    Serial.print(" elapse = ");
    Serial.print(stop_times[i] - start_times[i]);
    Serial.print(" us\n");
  }

z = 0;

}





f. VIDEO HASILNYA











Mengakses Motor Servo dan Sensor jarak SRF04 sebagai simulasi Palang pintu kereta api

Mengakses Motor Servo dan Sensor Jarak SRF04 Sebagai Simulasi Palang Pintu Kereta Api


           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara mengakses sensor jarak dikombinasikan dengan motor servo, aplikasi dari alat ini yaitu sebagai palang pintu otomatis rel kereta api, jadi jika ada kereta api lewat, sensor jarak akan mendeteksi adanya benda, kemudian akan mengirimkan sinyal ke palang pintu agar ditutup secara otomatis. sensor jarak yang dipakai yaitu ada dua buah, satu sebagai detektor kepala kereta atau lokomotif, kemudian satunya lagi untuk mendeteksi ekor kereta atau gerbong terakhir kereta. untuk mengetahui lebih lanjut berikut adalah skema dan programnya.



a. Minimum System




b. Micro Servo




c. Sensor SRF04





d. Program Bascom AVR


Atas:

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

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

Config Timer0 = Timer , Prescale = 256

Cls
Cursor Off

Config Portd.6 = Output
Config Pind.7 = Input

Declare Sub Cek_jarak

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

Dim Mark As Integer
Mark = 1


Triger1 Alias Portd.6
Pecho1 Alias Pind.7

'buzzer
Ddrb.1 = 1


'led 1
Ddrb.2 = 1
Ddrb.3 = 1
Ddrb.4 = 1

'led 2
Ddrb.5 = 1
Ddrb.6 = 1
Ddrb.7 = 1

'led 3
Ddrd.0 = 1
Ddrd.1 = 1
Ddrd.2 = 1

'led 4
Ddrd.3 = 1
Ddrc.6 = 1
Ddrc.7 = 1


Config Portd.4 = Output
Config Pind.5 = Input

Declare Sub Cek_jarak1
Declare Sub Serv

Dim Data_jarak1 As Word
Dim Data_jarak_olah1 As Word
Dim Data_jarak_fix1 As Word

Triger2 Alias Portd.4
Pecho2 Alias Pind.5


Enable Interrupts

'kuning
Portb.3 = 0
Portb.6 = 0
Portd.1 = 0
Portc.6 = 0

'merah
Portb.2 = 1
Portb.5 = 0
Portd.0 = 0
Portd.3 = 1

'hijau
Portb.4 = 0
Portb.7 = 1
Portd.2 = 1
Portc.7 = 0

Cls
Cursor Off

Mulai:

Portb.1 = 0

Do


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

Call Cek_jarak1
  Data_jarak1 = Data_jarak1
  Data_jarak_olah1 = Data_jarak1 * 100
  Data_jarak_fix1 = Data_jarak_olah1 / 256



Upperline
Lcd Data_jarak_fix1 ; " cm "

Lowerline
Lcd Data_jarak_fix ; " cm "


If Data_jarak_fix1 < 10 And Data_jarak_fix > 10 Then
Portb.1 = 1

'kuning
Portb.3 = 0
Portb.6 = 0
Portd.1 = 0
Portc.6 = 0

'merah
Portb.2 = 0
Portb.5 = 0
Portd.0 = 0
Portd.3 = 0

'kuning
Portb.3 = 1
Portb.6 = 1
Portd.1 = 1
Portc.6 = 1
Wait 1

'kuning
Portb.3 = 0
Portb.6 = 0
Portd.1 = 0
Portc.6 = 0

'merah
Portb.2 = 0
Portb.5 = 1
Portd.0 = 1
Portd.3 = 0

'hijau
Portb.4 = 1
Portb.7 = 0
Portd.2 = 0
Portc.7 = 1


Goto Servtutup
End If



Loop



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


Sub Cek_jarak1:
Reset Triger2
Waitus 10
Set Triger2
Waitus 20
Reset Triger2

Tcnt0 = 0
Bitwait Pecho2 , Set
Start Timer0

Do

If Pecho2 = 0 Then
Data_jarak1 = Tcnt0
Stop Timer0
Exit Do
End If

If Tifr.0 = 1 Then
Stop Timer0
Tifr.0 = 1
Data_jarak1 = &HFF
Exit Do
End If

Loop

Stop Timer0
Waitms 15

End Sub


Servtutup:
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
Config Portb.0 = Output


Do

If Mark = 1 Then

Servo(1) = 170
Waitms 500

Servo(1) = 160
Waitms 500

Servo(1) = 150
Waitms 500

Servo(1) = 140
Waitms 500

Servo(1) = 130
Waitms 500

Servo(1) = 120
Waitms 500

Servo(1) = 110
Waitms 500

Servo(1) = 100
Waitms 500

Goto Diam
End If



If Mark = 2 Then

Servo(1) = 100
Waitms 500

Servo(1) = 120
Waitms 500

Servo(1) = 130
Waitms 500

Servo(1) = 140
Waitms 500

Servo(1) = 150
Waitms 500

Servo(1) = 160
Waitms 500

Servo(1) = 170
Waitms 500

Goto Atas

End If


Loop



Diam:
Cls
Data_jarak_fix = 0
Data_jarak_fix1 = 0
Do

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

Call Cek_jarak1
  Data_jarak1 = Data_jarak1
  Data_jarak_olah1 = Data_jarak1 * 100
  Data_jarak_fix1 = Data_jarak_olah1 / 256

Upperline
Lcd Data_jarak_fix1 ; " cm "

Lowerline
Lcd Data_jarak_fix ; " cm "

If Data_jarak_fix1 > 10 And Data_jarak_fix > 10 Then
Mark = 2
Goto Servtutup
End If


Loop




e. VIDEO HASILNYA












Membuat Alat Kendali dan TIMER Otomatis Menggunakan ANDROID WIFI dan Ethernet Webserver Arduino + RTC

Membuat Alat Kendali dan TIMER Otomatis Menggunakan ANDROID WIFI dan Ethernet Webserver Arduino + RTC


              Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat dengan kendali Android dan pewaktu yang diset menggunakan fitur Android. alat ini didesain untuk dua fungsi yaitu untuk otomatisasi peralatan rumah tangga seperti lampu dan kipas angin, atau pintu dan pagar. jadi alat ini bisa diset secara otomatis menggunakan pewaktu, misal lampu akan dinyalakan jam 5 sore sampai jam 10 malam, setelah lewat jam 10 malam, lampu akan mati sendiri, begitu pula jika jam 5 sore, lampu akan hidup sendiri. terdapat lampu lain dan sebuah kipas yang bisa dihidupkan / on-off menggunakan aplikasi android wifi. Untuk pewaktu digunakan sebuah RTC (Real Time Clock) dan untuk on/off lampu-nya menggunakan Relay 5v. untuk lebih tau program dan skemanya, berikut adalah penjelasannya.




a. Arduino Uno + Ethernet Shield




b. Router




c. Skema RTC dan Relay






d Program Arduino IDE

#include <SPI.h>
#include <Ethernet.h>
#include <LiquidCrystal.h>
#include <Wire.h>
#define DS3231_I2C_ADDRESS 0x68

// Convert normal decimal numbers to binary coded decimal
LiquidCrystal lcd(A0, A1, A2, A3, 3, 2);

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 0, 88 }; // 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;


const int ledpin1 = 5;
const int ledpin2 = 7;
const int ledpin3 = 4;

int ton = 0;
int toff = 0;

#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) );
}
void setup()
{

  Wire.begin();
  lcd.begin(16, 2);
  lcd.clear();
  lcd.noCursor();
 
   pinMode(ledpin1, OUTPUT);
   pinMode(ledpin2, OUTPUT);
   pinMode(ledpin3, OUTPUT);
     
  Wire.begin();
  Serial.begin(9600);
 
  while (!Serial) {
  }

  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
 
  // set the initial time here:
  // DS3231 seconds, minutes, hours, day, date, month, year
   //setDS3231time(0,59,21,6,27,5,16);
}
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
  Serial.print(hour, DEC);
  // convert the byte variable to a decimal number when displayed
  Serial.print(":");
  if (minute<10)
  {
    Serial.print("0");
  }
  Serial.print(minute, DEC);
  Serial.print(":");
  if (second<10)
  {
    Serial.print("0");
  }
  Serial.print(second, DEC);
  Serial.print(" ");
  Serial.print(dayOfMonth, DEC);
  Serial.print("/");
  Serial.print(month, DEC);
  Serial.print("/");
  Serial.print(year, DEC);
  Serial.print(" Day of week: ");
  switch(dayOfWeek){
  case 1:
    Serial.println("Sunday");
    break;
  case 2:
    Serial.println("Monday");
    break;
  case 3:
    Serial.println("Tuesday");
    break;
  case 4:
    Serial.println("Wednesday");
    break;
  case 5:
    Serial.println("Thursday");
    break;
  case 6:
    Serial.println("Friday");
    break;
  case 7:
    Serial.println("Saturday");
    break;
  }
 
 
  if ((hour >= ton) && (toff > 0 )) {
 
 
    if (hour >= toff){
      digitalWrite(ledpin1, LOW);
    }
    else
    {
      digitalWrite(ledpin1, HIGH);
     
    }
  }

  
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
     if (readString.length() < 100) {

          //store characters to string
          readString += c;
          //Serial.print(c);
        }
        if (c == '\n' && currentLineIsBlank) {
          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("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println(" ");
          client.println("<title> Monitor Kemiringan </title> ");    
          client.println("<body bgcolor = #FFFFFF>");    
          client.println("<center>");
          client.println("<font color = black><center><h1>KENDALI LAMPU VIA ETHERNET ANDROID</h1><br></center><br>");
          client.println("<h1>");
           client.println("Jam = ");
          client.println(hour);
          client.println(" : ");
          client.println(minute);
          client.println(" : ");
          client.println(second);
          client.println("<br>");
          client.println("Tanggal = ");
          client.println(dayOfMonth);
          client.println(" - ");
          client.println(month);
          client.println(" - ");
          client.println(year);
          client.println("</h1>");
          
         //  client.println("<a href = \"/?lighton1\"\"><input type = 'button' value = 'ON 1' ></a>");
         // client.println("<a href = \"/?lightoff1\"\"><input type = 'button' value = 'OFF 1' ></a> ");
         //  client.println("<a href = \"/?lighton2\"\"><input type = 'button' value = 'ON 2' ></a>");
         // client.println("<a href = \"/?lightoff2\"\"><input type = 'button' value = 'OFF 2' ></a> ");
         //  client.println("<a href = \"/?lighton3\"\"><input type = 'button' value = 'ON 3' ></a>");
         // client.println("<a href = \"/?lightoff3\"\"><input type = 'button' value = 'OFF 3' ></a> ");
         //  client.println("<a href = \"/?lighton4\"\"><input type = 'button' value = 'ON 4' ></a>");
         // client.println("<a href = \"/?lightoff4\"\"><input type = 'button' value = 'OFF 4' ></a> ");
        
          client.println("</center>");
          client.println("</body>");
          client.println("</html>");
           
          break;      
        }   
        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
    Serial.println("client disonnected");
  }
 
  if(readString.indexOf("?lighton1") >0)
          {

            digitalWrite(ledpin1, HIGH);   
          }
          else{          
          if(readString.indexOf("?lightoff1") >0)
          {

             digitalWrite(ledpin1, LOW);
          }
          }
        
             if(readString.indexOf("?lighton2") >0)
          {

            digitalWrite(ledpin2, HIGH);   
          }
          else{          
          if(readString.indexOf("?lightoff2") >0)
          {

                digitalWrite(ledpin2, LOW);
          }
          }
          if(readString.indexOf("?lighton3") >0)
          {

            digitalWrite(ledpin3, HIGH);   
          }
          else{          
          if(readString.indexOf("?lightoff3") >0)
          {

                digitalWrite(ledpin3, LOW);
          }
          }
         
         
          if(readString.indexOf("?lightonA17") >0)
          {

            ton = 17;
           
          }
          else{          
          if(readString.indexOf("?lightoffB22") >0)
          {

            toff = 22;
               
          }
          }
         
         
           if(readString.indexOf("?lightonA15") >0)
          {

            ton = 15;
           
          }
          else{          
          if(readString.indexOf("?lightoffB20") >0)
          {

            toff = 20;
               
          }
          }
        
        
         readString="";
    
 
}




void loop()
{
  displayTime();
                 
}



 
e. Program Android









f. Cara Penggunaan Alat

        Cara penggunaan alat yaitu pertama hubungkan Arduino dengan Ethernet Shield, kemudian hubungkan Ethernet Shield dengan Router, Rubah dan set jam dan tanggalnya pada program Arduino, Untuk melihat jam / tanggal RTC-nya bisa buka browser dan ketik alamat 192.168.0.88, maka akan tampil jam dan tanggal-nya. masukkan IP 192.168.0.88 dan port 80 pada aplikasi android, jika berhasil maka jika ditekan tombol on, akan menghidupkan relay 1, sebaliknya jika ditekan tombol off, akan mematikan relay. untuk set batas hidup lampu otomatis ketik A17 dan B22, tekan tombol SEND. maka otomatis akan tersimpan jam tersebut. yang harus diperhatikan yaitu IP router dan IP Arduino harus sama atau satu host, dan juga semua device yang akan mengendalikan Arduino harus terkoneksi ke Wifi router terkait.













Membuat Detektor Cahaya Dengan Output Alarm / Suara Buzzer

Membuat Detektor Cahaya Dengan Output Alarm / Suara Buzzer


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat detektor cahaya dengan output alarm, sebenarnya output alat ini bisa apa saja seperti led, bunyi atau counter up / down 7segment. alat ini akan mendeteksi intensitas cahaya, jadi pada saat gelap tegangan akan naik dan akan membunyikan buzzer, namun pada saat ada cahaya alat akan tidak berbunyi. pengatur sensitifitas ada pada potensio 1K kemudian sensor cahaya yang digunakan bisa dua jenis yaitu LDR atau PHOTODIODA. jadi fungsi IC LM358 hanya sebagai komparator antara tegangan port + dan port - OPAMP. untuk skemanya seperti berikut.



a. Skema Alat





b. Cara Penggunaan Alat

        Untuk menggunakan alat ini yaitu gunakan adaptor atau power supply 5v atau battery 9v juga bis, kemudian atur sensitifitas menggunakan potensiometer, jika sudah dapat jarak dan respon yang bagus maka alat siap digunakan. coba tutup sensor dengan tangan maka akan membunyikan buzzer atau output lain.




c. VIDEO HASILNYA