Anda di halaman 1dari 11

“Palang pintu parkir”

Gambar 02. Miniatur Parkiran

A. Tujuan Projeck
Untuk tujuan dari adanya projeck ini adalah sebagai berikut :
• Mengetahui secara fisual fungsi dari masing-masing komponen sitem automasi.
• Mengasah kemampuan mahasiswa dalam mengaplikasikan dan merangkai sistem kerja
dari komponen.
• Dapat memahami materi perkuliahan mekatronika baik secara teori maupun
praktikum.
• Dapat mengaplikasikan sistem kontrol dalam bentuk prototype.

B. Komponen dan alat bantu yang digunakkan


Untuk komponen yang digunakkan dalam pembuatan projeck ini adalah sebagai berikut
:
1. 1 Arduino Uno
2. 1 Sensor Jarak SHARP GP2Y0A21
3. 1 Motor Servo
4. Kabel jumfer male to female secukupnya
Untuk Alat bantu yang digunakkannya adalah sebagai berikut :
1. Kertas Karton
2. Kabel
3. Stik eskrim
4. Soket female
5. Obeng plus minus
6. Lakban hitam
7. Double tip
8. Gunting/Cuter

Tutorial Kontrol Motor Servo Menggunakan Arduino


Mikrokontroller ( Arduino Uno)
Arduino Uno adalah board mikrokontroler berbasis ATmega328 Memiliki 14 pin
input dari output digital dimana 6 pin input tersebut dapat digunakan sebagai output
PWM dan 6 pin input analog, 16 MHz osilator kristal, koneksi USB, jack power, ICSP
header, dan tombol reset. Untuk mendukung mikrokontroler agar dapat digunakan,
cukup hanya menghubungkan Board Arduino Uno ke komputer dengan menggunakan
kabel USB atau listrik dengan AC yang ke adaptor DC atau baterai untuk
menjalankannya.

Gambar 04. Arduini Uno

Motor Servo
Motor servo adalah motor yang mampu bekerja dua arah (CW dan CCW) dimana
arah dan sudut pergerakan rotornya dapat dikendalikan hanya dengan memberikan
pengaturan duty cycle sinyal PWM pada bagian pin kontrolnya. Motor servo terdapat 3
jalur kabel yaitu : power, ground, dan control.

Gambar 06. Motor Servo dan Desaind Prototype Model Miniatur Palang Parkiran

* Kabel warna merah merupakan kabel power yang berfungsi untuk mengkoneksikan
dengan tegangan 5V pada board arduino.
* Kabel yang berwarna coklat/hitam merupakan kabel ground yang nantinya akan
dihubungkan dengan ground yang ada pada board arduino.
* Kabel kuning yang merupakan kabel pin signal servo yang akan dihubungkan
dengan pin 9 pada board arduino.

ALOKASI PIN ARDUINO


Motor Servo Arduino
Kabel Merah +5V
Kabel Hitam / Coklat GND
Kabel Kuning / Orange (Data) Digital 9
Kode Program Motor Servo Arduino

#include <Servo.h>
Servo motorServo;

void setup()
{
motorServo.attach(10); // servo Pada Pin digital 10
}

void loop()
{
motorServo.write(45); // Turn Servo ke kiri 45 degrees
delay(1000);
motorServo.write(0); // Turn Servo ke kiri to 0 degrees
delay(1000);
motorServo.write(90); // Turn Servo ke posisi center
position (90 degrees)
delay(1000);
motorServo.write(135); // Turn Servo Ke kanan 135 degrees
delay(1000);
motorServo.write(180); // Turn Servo ke kanan 180 degrees
delay(1000);
motorServo.write(90); // Turn Servo ke posisi center
position (90 degrees)
delay(1000);
}
Tutorial Kontrol Sensor Jarak Sharp GP2Y0A21
Menggunakan Arduino

Sensor SHARP GP2Y0A21 Arduino


Kabel Merah +5V
Kabel Hitam GND
Kabel Kuning Output

#include <DistanceGP2Y0A21YK.h>

DistanceGP2Y0A21YK Dist;
int distance;

void setup()
{
Serial.begin(9600);
Dist.begin(A0);
}

void loop()
{
distance = Dist.getDistanceCentimeter();
Serial.print("\nJarak: ");
Serial.print(distance);
Serial.print(" cm");
delay(500);
}

/** Workshop Dasar Mikrokontroler


2014 RADE - Robotics AnD Embedded Systems STMIK STIKOM Bali
**/
#include <Servo.h>
// membuat nama objek servo untuk pengontrolan servo
Servo myservo;
// variable untuk menyimpan posisi servo
int pos = 0;
void setup()
{
// objek servo diletakan pada pin 9
myservo.attach(9);
}
void loop()
{
// start dari 0 derajar sampai 180 derajat
for(pos = 0; pos < 180; pos += 1)
{
// pada posisi 1 derajat
// memberitahu servo untuk pergi ke posisi 'pos'
myservo.write(pos);
// tunggu 15ms untuk pencapaian posisi servo
delay(15);
}
// start dari 180 derajat ke 0 derajat
for(pos = 180; pos>=1; pos-=1)
{
// memberitahu servo untuk pergi ke
posisi 'pos'
myservo.write(pos);
// tunggu 15ms untuk pencapaian posisi servo
delay(15);
}
}

C. Cara pemasangan komponen


Langkah kerja untuk membuat Sistem Parkir Berbasis Microkontroller Arduino
Uno ini adalah sebagai berikut :

1. Mempersiapkan alat dan bahan yang akan digunakan.


2. Membuat desaind parkiran
3. Membuat system rangkaian Sistem Parkir Berbasis Microkontroller Arduino Uno
4. Merakit komponen, sistem rangkaian dengan rangkaian sebagai berikut :
- Sambungkan kabel VVC dan GND dari arduino uno kemudian di jamfer ke
BREADBROD VVC GND
- Kemudian sambungkan kabel GND dari sensor HC dan servo ke GND
- Dan sambungkan kabel VCC dari sensor HC, servo, dan LCD ke bread broad VCC
- Tancapkan kabel data lcd, pasangkan ke pin 7,6,5,4,3,2, pada arduino
- Hubungkan kabel Triger dari sensor hc 1 dan 2 ke pin 8 dan untuk kabel Echo 1 dan
2 ke pin 9, 10 pada arduino
- Hubungkan kabel data servo 1 dan 2 pada pin 12, 13
5. MemprogramSistem Parkir Berbasis Microkontroller Arduino Uno
6. Mengetes/mengujicobaprototype.
7. Pelaporan dan Presentasi.

D. Cara kerja
Ketika ada kendaraan melewati / Berhenti didepan sensor jarak HC-SR04, Maka
Transmitter yang ada di sensor HC terpantul dan ditangkap oleh Receiver dan
kemudian secara otomatis menggerakkan Servo untuk mengngkat palang pintu parkir
serta menampilkan parkiran yang tidak digunakkan pada layar LCD.

Apabila ada kendaraan masuk maka nilai yang menampilkan parkiran yang tidak
digunaakn akan berkurang dan apabila ada kendaraan keluar maka nilai yang
menampilkan parkiran yang tidak digunaakn akan bertambah dan ketika parkiran
menunjukkan angka 0 maka parkiran didevinisikan sedang penuh dan palang pintu
masuk apabila ada kendaraan lagi maka tidak dapat terbuka.

E. Program
Untuk program pada arduino adalah sebagai berikut :

//Library
#include <Servo.h> // library Servo
#include <LiquidCrystal.h> // library lcd

//nama servo yang digunakkan


Servo servo_masuk; // servo 1 dengan Nama "servo_masuk"
Servo servo_keluar; // servo 2 dengan Nama "servo_keluar"

//devinisi sensor HC
#define triger_Pin 8 // pin Triger sensor HC 1 & 2 jadi satu pin
int nomer = 6; // perhitungan dimulai dari 6
int echoPin[2]= {9, 10}; // pin echo sensor pada pin 9 & 10
int masuk,keluar; // dengan nama pin echo "masuk dan keluar"
unsigned long pulseTime=0; //

// inisialisai port pin LCD pada arduino


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

// rumus sensor hc
long sensor(int echo)
{
digitalWrite(triger_Pin, HIGH); // triger menyala
delay(10); // dengan waktu tunda 10 microsecond
digitalWrite(triger_Pin, LOW); // triger mati
pulseTime = pulseIn(echo, HIGH);// echo menyala
return pulseTime/58;
}

void setup()
{

Serial.begin(9600);

//sensor jarak HC
pinMode(triger_Pin, OUTPUT);
for(int i=0; i<2; i++)
{
pinMode(echoPin[i], INPUT);
}

//setup servo
servo_masuk.attach(13); // pin "servo_masuk" adalah 13
servo_keluar.attach(12); // pin "servo_keluar" adalah 12
}

void loop()
{
//pin sensor jarak HC masuk dan keluar
masuk=sensor(9); // pin "HC masuk" adalah 9
keluar=sensor(10); // pin "HC keluar" adalah 10

//penampilan lcd yang digunakkan 2*16 huruf/angka (atas 16, bawah 16)
lcd.begin(16, 2);

// Apabila nomer >=0<=5, maka baris pertama lcd menampilkan


// "Tidak Parkir = " dan diikuti dengan nomer atau angka yang
// menunjukkan tempat parkir yang kosong
if (nomer >=0, nomer <=5)
lcd.setCursor(0,0);
lcd.print("Tidak Parkir = ");
lcd.setCursor(15,0);
lcd.print( nomer);

// Apabial tempat parkir yang kosong 0 / parkiran penuh


// makan baris ke 2 lcd menampilkan " Parkiran Penuh "
if(nomer ==0)
lcd.setCursor(0,1);
lcd.print (" Parkiran Penuh ");

// " jika nomer >= 1 " (1,2,3,4,5,6)


if(nomer >=1)
{

// " jika jarak sensor maasuk < 3 cm


// maka nomer berkurang 1 angka
// dan servo dari sudut 90 berubah menjadi 180 "
if (masuk < 3)
{
lcd.print (nomer --); // nomer bertambah satu angka
delay (50); // delay 50 microsecound
servo_masuk.write(180); // sudut servo 180
delay (5000); // delay 5 secound
servo_masuk.write(90); // sudut servo 90
}
}

// " jika nomer <= 5 " (5,4,3,2,1,0)


if(nomer <=5)
{
// " jika jarak sensor keluar < 3 cm
// maka nomer bertambah 1 angka
// dan servo dari sudut 0 berubah menjadi 90 "
if (keluar < 3)
{
lcd.print (nomer ++); // nomer berkurang satu angka
delay (50); // dengan waktu tunda 50 microsecound
servo_keluar.write(0); // sudut servo 0
delay (5000); // dengan waktu tunda 5 secound
servo_keluar.write(90); // sudut servo 90
}
}

}
/*
* Mengontrol Servo dengan Sensor Ultrasonic
* Email : muhandi.prasetyo@gmail.com
* www.boarduino.blogspot.com
*/

#include <NewPing.h> //Library untuk Sensor Ultrasonic


#include <Servo.h> //Library untuk Servo
#define trigPin 12 //Set Trigger HCSR04 di Pin digital 12
#define echoPin 13 //Set Echo HCSR04 di Pin digital 13
#define MAX_DISTANCE 500 //Set jarak maksimal
NewPing sonar(trigPin, echoPin, MAX_DISTANCE);
int LEDhijau = 3, LEDmerah = 2; //Set Pin LEDhijau dan LEDmerah
Servo myservo; //Buat object 1 buah motor servo

void setup() {
Serial.begin (115200); //Kecepatan komunikasi serial
pinMode(trigPin, OUTPUT); //Set pin Trigger sebagai output
pinMode(echoPin, INPUT); //Set pin Echo sebagai input
pinMode(LEDmerah, OUTPUT); //Set LEDmerah sebagai output
pinMode(LEDhijau, OUTPUT); //Set LEDhijau sebagai output
myservo.attach(9); //Set servo pada pin PWM 9
}

void loop() {
int duration, jarak,posisi=0,i;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
jarak = (duration/2) / 29.1;
Serial.print(jarak);
Serial.println(" cm");

if(jarak<=15) // Jarak (Cm) dapat anda sesuaikan

{
digitalWrite(LEDhijau, LOW); //LEDhijau mati
digitalWrite(LEDmerah, HIGH); //LEDmerah hidup
myservo.write(180); //Posisi servo pada 180 derajat
delay(450); //Delay
digitalWrite(LEDmerah, LOW); //LEDmerah mati
myservo.write(90); //Posisi servo pada 90 derajat
delay(450); //Delay
digitalWrite(LEDmerah, HIGH); //LEDmerah hidup
myservo.write(0); //Posisi servo pada 0 derajat
delay(450); //Delay
digitalWrite(LEDmerah, LOW); //LEDmerah mati
myservo.write(90); //Posisi servo pada 90 derajat
}

else{ //Jika jarak lebih dari yang ditentukan


digitalWrite(LEDmerah, LOW); //LEDmerah mati
digitalWrite(LEDhijau, HIGH); //LEDhijau hidup
myservo.write(90); //Posisi servo pada 90 derajat
}
delay(450); //Delay
}

Anda mungkin juga menyukai