Sistem Keamanan Berbasis Arduino: Deteksi Gerakan Cerdas & Peringatan
Komponen dan Perlengkapan
- Arduino UNO – 1 unit
- Sensor Ultrasonik HC-SR04 (Generic) – 1 unit
- Servo (Tower Pro MG996R) – 1 unit
- Buzzer – 1 unit
- Papan Roti (generic) – 1 unit
- Kabel Jumper Jantan/Betina – 1 set
- Kotak Plastik – 1 unit
Alat dan Mesin yang Diperlukan
Aplikasi dan Layanan Online
- Arduino IDE
- Processing IDE
Tentang Proyek Ini
Proyek ini adalah Sistem Keamanan Berbasis Arduino yang terdiri dari Arduino Uno, motor servo, sensor ultrasonik dan buzzer piezoelektrik.
Di sini, sensor ultrasonik merasakan objek yang berada dalam jangkauannya, yang mengaktifkan buzzer. Data sensor ini juga disalurkan ke perangkat lunak Processing IDE, yang membuat peta grafis.
Motor servo digunakan untuk memutar sensor ultrasonik sehingga dapat mencakup area yang luas.
Ini adalah proyek yang cukup sederhana dan dapat dilakukan dalam waktu satu jam.
Berikut adalah prosedur untuk proyek ini -
- Sambungkan Pin Trigger Sensor ke Pin 2 Arduino
- Sambungkan Pin Echo Sensor ke Pin 3 Arduino
- Sambungkan Vcc dan GND Sensor ke Suplaian dan Ground masing-masing
- Letakkan buzzer pada papan roti
- Sambungkan Ujung Positifnya ke Pin 10 Arduino dan sambungkan Ujung Negatifnya ke ground
- Pasang kabel hitam dan merah motor servo ke ground dan suplaian masing-masing
- Pasang kabel kuning motor servo ke Pin 9 Arduino
- Sambungkan terminal 5V Arduino ke suplaian dan terminal GND Arduino ke ground
Setelah menyelesaikan koneksi ini, letakkan seluruh rangkaian di dalam kotak seperti yang ditunjukkan dalam gambar.
Kemudian saatnya untuk mengkode.
Kode
Security System_IDE (C9Search)
#include <Servo.h>.
int tPin = 2; int ePin = 3; int buz = 10; int d1,d2; int i =0; int sdistance; Servo myServo;
void setup() { Serial.begin(9600); pinMode(tPin, OUTPUT); pinMode(ePin, INPUT); pinMode(buz,OUTPUT); myServo.attach(9); }
void loop() { for(i=0;i<=180;i += 10) { myServo.write(i); delay(30); d2 = calculateDistance(); Serial.print(i); Serial.print(","); Serial.print(d2); Serial.print("."); } for(i=180;i>0; i-=10){ myServo.write(i); delay(30); d2 = calculateDistance(); Serial.print(i); Serial.print(","); Serial.print(d2); Serial.print("."); } }
int calculateDistance(){ digitalWrite(tPin,HIGH); delay(1000); digitalWrite(tPin, LOW); d1 = pulseIn(ePin, HIGH); d2 = d1 * 0.0171821306; if (d2 < 10) { digitalWrite(buz,HIGH); } else { digitalWrite(buz,LOW); } return d2; }
Processing (Java)
import processing.serial.*;
import java.awt.event.KeyEvent;
import java.io.IOException;
Serial myPort;
String angle=""; String distance=""; String data=""; String noObject; float pixsDistance; int iAngle, iDistance; int index1=0; int index2=0; PFont orcFont;
void setup() { size (1366, 768); smooth(); myPort = new Serial(this,"COM3", 9600); myPort.bufferUntil('.'); }
void draw() { fill(98,245,31); noStroke(); fill(0,4); rect(0, 0, width, height-height*0.065); fill(98,245,31); drawRadar(); drawLine(); drawObject(); drawText(); }
void serialEvent (Serial myPort) { data = myPort.readStringUntil('.'); data = data.substring(0,data.length()-1); index1 = data.indexOf(","); angle= data.substring(0, index1); distance= data.substring(index1+1, data.length()); iAngle = int(angle); iDistance = int(distance); }
void drawRadar() { pushMatrix(); translate(width/2,height-height*0.074); noFill(); strokeWeight(2); stroke(98,245,31); arc(0,0,(width-width*0.0625),(width-width*0.0625),PI,TWO_PI); arc(0,0,(width-width*0.27),(width-width*0.27),PI,TWO_PI); arc(0,0,(width-width*0.479),(width-width*0.479),PI,TWO_PI); arc(0,0,(width-width*0.687),(width-width*0.687),PI,TWO_PI); line(-width/2,0,width/2,0); line(0,0,(-width/2)*cos(radians(30)),(-width/2)*sin(radians(30))); line(0,0,(-width/2)*cos(radians(60)),(-width/2)*sin(radians(60))); line(0,0,(-width/2)*cos(radians(90)),(-width/2)*sin(radians(90))); line(0,0,(-width/2)*cos(radians(120)),(-width/2)*sin(radians(120))); line(0,0,(-width/2)*cos(radians(150)),(-width/2)*sin(radians(150))); line((-width/2)*cos(radians(30)),0,width/2,0); popMatrix(); }
void drawObject() { pushMatrix(); translate(width/2,height-height*0.074); strokeWeight(9); stroke(255,10,10); pixsDistance = iDistance*((height-height*0.1666)*0.025); if(iDistance<10){ line(pixsDistance*cos(radians(iAngle)),-pixsDistance*sin(radians(iAngle)),(width-width*0.505)*cos(radians(iAngle)),-(width-width*0.505)*sin(radians(iAngle))); } popMatrix(); }
void drawLine() { pushMatrix(); strokeWeight(9); stroke(30,250,60); translate(width/2,height-height*0.074); line(0,0,(height-height*0.12)*cos(radians(iAngle)),-(height-height*0.12)*sin(radians(iAngle))); popMatrix(); }
void drawText() { pushMatrix(); if(iDistance>10) { noObject = "Out of Range"; } else { noObject = "In Range"; } fill(0,0,0); noStroke(); rect(0, height-height*0.0648, width, height); fill(98,245,31); textSize(25); text("2cm",width-width*0.3854,height-height*0.0833); text("4cm",width-width*0.281,height-height*0.0833); text("6cm",width-width*0.177,height-height*0.0833); text("10cm",width-width*0.0729,height-height*0.0833); textSize(40); text("Akshay6766 ", width-width*0.875, height-height*0.0277); text("Angle: " + iAngle + " ", width-width*0.48, height-height*0.0277); text("Distance: ", width-width*0.26, height-height*0.0277); if(iDistance<40) { text(" " + iDistance+" cm", width-width*0.225, height-height*0.0277); } textSize(25); fill(98,245,60); translate((width-width*0.4994)+width/2*cos(radians(30)),(height-height*0.0907)-width/2*sin(radians(30))); rotate(-radians(-60)); text("30",0,0); resetMatrix(); translate((width-width*0.503)+width/2*cos(radians(60)),(height-height*0.0888)-width/2*sin(radians(60))); rotate(-radians(-30)); text("60",0,0); resetMatrix(); translate((width-width*0.507)+width/2*cos(radians(90)),(height-height*0.0833)-width/2*sin(radians(90))); rotate(radians(0)); text("90",0,0); resetMatrix(); translate(width-width*0.513+width/2*cos(radians(120)),(height-height*0.07129)-width/2*sin(radians(120))); rotate(radians(-30)); text("120",0,0); resetMatrix(); translate((width-width*0.5104)+width/2*cos(radians(150)),(height-height*0.0574)-width/2*sin(radians(150))); rotate(radians(-60)); text("150",0,0); popMatrix(); }
Skematik
Lihat gambar skematik yang tersedia.