Pada postingan sebelumnya telah kita bahas mengenai cara pembuatan robot AVOIDER menggunakan sensor ultrasonik HC-SR04.
Kali ini kita akan membahas cara membuat robot
AVOIDER dengan penambahan motor servo 180° sebagai leher robot. Dalam postingan
ini akan ditujukan ke beberapa hal penting saja seperti :
- Cara menentukan sudut awal motor servo
- Cara memfungsikan motor servo sebagai leher/sendi pada robot
- Source code robot di software Arduino
- Simulasi rangkaian di Proteus dan Fritzing
- Kenapa sensor ultrasonik sering di samakan seperti sensor yang dimiliki hewan kelelawar
Cara
membuat sudut awal motor servo
Untuk membuat sudut awal servo kita bisa melakukannya
langsung dengan uji eksperimen, langsung aja rangkai motor servo ke arduino.
Dengan keterangan :
Kabel yang warna merah == hubungkan ke VCC atau 5
volt yang ada di arduino, kabel warna coklat/hitam sambungkan ke ground/GND di
arduino. Sedangkan untuk kabel warna kuning atau kabel sisanya hubungkan ke salah
satu pin digital arduino, yang dalam postingan ini, saya memakai pin digital 9
(pemakaian pin ini bebas, semau anda saja ya. Tinggal nanti bedain deklarasi
pin nya di program).
Setelah proses perangkaian selesai, silahkan copy aja
program dibawah ke jendela baru software arduino.
#include <Servo.h>
char buffer[10];
Servo servo1;
void setup()
{
//posisi pin servo
Servo1.attach(9);
Serial.begin(9600);
Serial.flush();
// kondisi awal servo
servo1.write(175);
Serial.println("STARTING...");
}
void
loop()
{
if (Serial.available() > 0) {
int index=0;
delay(1000);
int numChar =
Serial.available();
if (numChar>10) {
numChar=10;
}
while (numChar--) {
buffer[index++] =
Serial.read();
}
splitString(buffer);
}
}
void splitString(char* data) {
Serial.print("Data entered: ");
Serial.println(data);
char* parameter;
parameter = strtok (data, " ,");
while (parameter != NULL) {
setServo(parameter);
parameter = strtok (NULL,
" ,");
}
for (int x=0; x<9; x++) {
buffer[x]='\0';
}
Serial.flush();
}
void setServo(char* data) {
if ((data[0] == 'A') || (data[0] == 'a')) {
// String to long integer
int firstVal = strtol(data+1,
NULL, 10);
// Constrain values
firstVal =
constrain(firstVal,0,180);
servo1.write(firstVal);
delay(1000);
Serial.print("Servo1 is
set to: ");
Serial.println(firstVal);
}
}
Setelah menemukan sudut yang sesuai, kita
lanjut ke pembahasan selanjutnya yaitu :
Cara memfungsikan motor servo sebagai leher robot
Karena Motor Servo merupakan sebuah perangkat atau akuator putar (motor) yang dirancang dengan
sistem kontrol umpan balik loop tertutup (servo), sehingga dapet di set-up atau
di atur untuk menentukan dan memastikan posisi sudut dari poros output motor.
Naah...dalam pembuatan
robot ini, servo akan bergerak ke kiri dan ke kanan dalam waktu tertentu
(delay).. saat servo memutar ke arah kiri...disitu kita fungsikan sensor
ultrasonik untuk mengukur jarak / melihat (ultrasonik hc-sr04 sebagai mata
robot) robot ke penghalang (jika ada penghalang), setelah beberapa detiik
sensor mengukur jarak pandangnya, maka akan didapatkan nilai jarak, nilai jarak
inilah yang nantinya akan di bandingkan dengan nilai jarak dari arah kanan robot,
yang akhirnya akan di ambil kesimpulan, nilai jarak yang lebih dari penghalang
atau nilai jarak yang lebih tinggi/besar sebagai acuan gerak robot selanjutnya.
Gambar dibawah merupakan
desain keseluruhan robot, setelah anda merangkainnya maka tinggal copy paste
aja program dibawah.
Source
code robot di software Arduino
#include <Servo.h> //memasukan fungsi library servo
//definisi pin input-output sinyal ultrasonic
const int pingPin = 8 ;
const int echoPin = 7 ;
const int penghalang = 10; //batas penghalang 10 cm
//definisi pin motor driver
int kiriA = 13;
int kiriB = 12;
int kananA = 11;
int kananB = 10;
Servo kepala;
long duration, cm;
int jarak_kiri, jarak_kanan;
void setup()
{
Serial.begin(9600);
kepala.attach(9);
pinMode(kiriA,OUTPUT);
pinMode(kiriB,OUTPUT);
pinMode(kananA,OUTPUT);
pinMode(kananB,OUTPUT);
}
void loop()
{
int jarak = ping();
Serial.println(jarak);
if
(jarak>penghalang)
{
digitalWrite(kiriA,HIGH);
digitalWrite(kiriB,LOW);
digitalWrite(kananA,HIGH);
digitalWrite(kananB,LOW);
//maju
}
else
{
digitalWrite(kiriA,LOW);
digitalWrite(kiriB,LOW);
digitalWrite(kananA,LOW);
digitalWrite(kananB,LOW);
kepala.write(0);
delay(500);
jarak_kanan =
ping(); //mengukur jarak kanan
delay(500);
kepala.write(180);
delay(500);
jarak_kiri =
ping(); //mengukur jarak kiri
delay(50);
kepala.write(90); //kembali ketengah
delay(100);
perbandingan_jarak();
}
}
void perbandingan_jarak()
{
//penghalang di kiri lebih jauh
if
(jarak_kiri>jarak_kanan)
{
digitalWrite(kiriA,HIGH);
digitalWrite(kiriB,LOW);
digitalWrite(kananA,LOW);
digitalWrite(kananB,HIGH); //belok kiri
delay(700);
}
//penghalang di kanan lebih jauh
else if
(jarak_kiri<jarak_kanan)
{
digitalWrite(kiriA,LOW);
digitalWrite(kiriB,HIGH);
digitalWrite(kananA,HIGH);
digitalWrite(kananB,LOW); //belok kanan
delay(700);
}
else //jika jarak
kiri dan kanan sama
{
digitalWrite(kiriA,HIGH);
digitalWrite(kiriB,LOW);
digitalWrite(kananA,HIGH);
digitalWrite(kananB,LOW); //mundur
delay(700);
}
}
long ping()
{
pinMode(pingPin,
OUTPUT);
digitalWrite(pingPin,
LOW);
delayMicroseconds(2);
digitalWrite(pingPin,
HIGH);
delayMicroseconds(10);
digitalWrite(pingPin,
LOW);
pinMode(echoPin,
INPUT);
duration =
pulseIn(echoPin, HIGH);
cm =
microsecondsToCentimeters(duration);
Serial.println(cm);
return duration / 29
/ 2;
}
long microsecondsToCentimeters(long microseconds){
return
microseconds/29/2;
}
Nahh...itulah program keseuruhannya untuk robot
avoider dengan motor servo sebagai leher robot. Tinggal praktekin aja ya, kalau
ada pertanyaan silahkan komen aja, saya siap bantu..hhee
Nah yang terahir adalah :
Kenapa
sih sensor ultrasonik hc-sr04 disamakan dengan sensor yang dimiliki kelelawar ?
Simak dulu ini ya..
Sensor
HC-SR04 adalah jenis sensor ultrasonic yaitu sebuah sensor yang berfungsi untuk
mengubah besaran fisis (bunyi) menjadi besaran
listrik dan sebaliknya. Sensor tersebut biasa dikatakan sebagai sensor jarak
karena mampu
mendeteksi keberadaan benda di dekatnya tanpa kontak fisik.
Cara kerja sensor ini didasarkan pada prinsip
dari pantulan suatu gelombang suara sehingga dapat dipakai untuk menafsirkan
eksistensi (jarak) suatu benda dengan frekuensi tertentu.
Spesifikasinya :
1.
Jangkauan deteksi: 2cm sampai
kisaran 400-500cm.
2.
Sudut deteksi terbaik adalah 15
derajat.
3.
Tegangan kerja 5V DC.
4.
Resolusi 1cm.
5. Frekuensi Ultrasonik 40 kHz.
Ketika diberikan tegangan positif pada pin Trigger selama 10uS, maka
sensor akan mengirimkan 8 step sinyal ultrasonik dengan frekuensi 40kHz.
Selanjutnya, sinyal akan diterima pada pin Echo. Untuk mengukur jarak benda
yang memantulkan sinyal tersebut, maka selisih waktu ketika mengirim dan
menerima sinyal digunakan untuk menentukan jarak benda tersebut, Dengan rumus
S= 340. t/2.
Jelas ya... intinya
sensor ultrasonik hc-sr04 kan memiliki 2 mata ya,, nah yang satu itu fungsinya
untuk memancarkan sinyal gelombang suara, yang satu lagi untuk menangkap
gelombang pantulannya. (triger=memancarkan sinyal. Echo=menangkap sinyal).
BACA JUGA :
= Super Admob Pro Mastery White Hat Version =
= Bikin Landing Page Pake Blogspot =
= Cara Mempermudah Berbisnis Dropship =
= Membuat Video Profesional dengan Power Point =