Anda di halaman 1dari 234

Free CD

HI

Aplikasi-aplikasi

Pendukung
Datasheet

Assembler
Basic Stamp Editor

o Bascom AUR
o Code Vision
C AUR

Membuat Sendiri

RGbGt
Humdnoid
Ciptakan sendiri robot mirip manusia
berbiaya murah
I

AKAAN
PAN

.TIMUR

Widodo Budiharto
Paulus Andi Nalwan

fut#ltLat

ploueunH loqou
u!puos l.Pnquaru

Sonksi Pelonggoron Posol 22:

Undong-Undong Nomor 19 Tohun 2002


Tentong Hok Cipto

L Borongsiopo dengon sengoio melonggor don lonpo hok melokukon perbuoton sebogoimono
dimoksud dolom Posol 2 Ayot (1)otou Posol 49 Ayot (1)don Ayoi (2) dipidono dengon pidono
penioro mosing-mosing poling singkot 1 (soiu) bulon don/otou dendo poling sedikit Rp
.l.000.000,00
(sotu iulo rupioh), otou pidono penioro poling lomo 7 (tuiuh) tohun don/oiou
dendo.poling bonyok Rp 5.000.000.000,00 (limo milyor rupioh).
2. Borongsiopo dengon sengoio menyiorkon, memomerkon, mengedorkon, otou meniuol kepodo
umum suotu ciptoon otou borong hosil pelonggoron hok cipto otou hok terkoit sebogoi dimoksud

podo Ayot (1) dipidono dengon pidono penioro poling lomo 5 (limo) tohun don/qtou dendo
poling bonyok Rp 500.000.000,00 (limo rotus iuto rupioh).

id

l'?#trP{Yt

$tr/rf}t'{}X

ffi

opurtnduoy elpaw xalg jfr lrqraue4

ue^ leN lpuv snlned

ouBL.l!png opoplM

ploueunH loqou
u!puos IPnqu0ru
qr."

/tr

,i'.

"

it';;iriL j i.
Membuat Sendiri Robot Humanoid
Widodo Budiharto

t'

'34o.4stlsr'rc

Paulus Andi Nalwan

::'

lrlW

02009, PT Elex Media Komputindo, Jakarta


Hak cipta dilindungi undang-undang
Diterbitkan pertama kali oleh
Penerbit PT Elex Media Komputindo
Kelompok Gramedia, Anggota IKAPI, Jakarta 2009

121091564
978-979-27 -5625-8

leEpl

Dilarang keras menerjemahkan, memfotokopi, atau memperbanyak sebagian atau seluruh isi buku ini tanpa
izin tertulis dari penerbit.

Dicetak oleh Percetakan PT Gramedia, Jakarta


Isi di luar tanggung jawab percetakan

&c

'de16ua1ad
q3 eped qalorad epuy ledep Durluad u:er6ord epes '6uqued tseuuro;ut
upp ueleru ue6uap qnued uep pqo) Bpuy snrpq 6uBr{ dB.re1 ders rse4lde

qotuo) re6eqraq ue6uep rdelDualrp BDn[ tut nlng 'tuo)'elluorl{ela


-o{Ol'^\/\t1y\ uep I.UO)'}OqOJ-o>{Ol'1n1\\/r\ nple ulo)')luoJpele

-pllap'Av\rfi\ lp srlnuad e)JeuIruo)-e snus InlPIeu spqeqlp 6uer{


lll Dlrlrureu ledep epuv 'tut nlnq Ip loqor laford re6eqreq Pqo)ueru
epuv qepnuredLua(u InluD 'er(urye Bpe IePII eles eeeqtueu e{ueg
'Duns6uel eqo)uatu ulplas e>llloqoJ rlqeu Inlun ulel PJe) PpB >leplI
'Bqo)Jp upp p)pqrp {n}un IIJeueu le6ues er(un}uel

rur nlnq eped e>lgoqoJ rqoqEued uep rsrl>1erd 7 tJaleur Iseroqeloy


'lul nlnq eped rurlJel loqor uep rosues r6o1ou1a1 ue>lralndodtueu
e6n[ srlnued 'egseuopul 1p p{I}oqor r6o1ou1a1 uelnfer-uau In]uD
'erseuopul Ip Ppe qeurad
6uer{ delDualra} loqor n>lnq ue{pdnreu IUI n{ng 'lPpueq relor}uo>lorllu
qelo lorluolrp 6ue,( proupulnq loqoJ lenqtuetu euetute6eq tlelep BJp)es
seqBquleu rur n{nq rs1 'ese,{elared e:ed eues Plruorllale rqoqEuad
epes 'emsrspqptu 'refeled qelo p)eqrp tedat le6ues rul n{ng 'ptoueunq
loqoJ lenqurou uenpued nlnq uelJn)unlau rleq Eueuas ueEuep srlnued
'qplnll >{n}uD 'e{ruort>{ele rqoq6uad uep refeled r6eq ltreueu 6ue,{
1eq uelednre(u rurlral r6o1ou>1e1 ueEuap plouetunLl loqod lpnqulew

rclue6ue4 epy

Penulis juga tidak lupa mengucapkan terima kasih sebesar-besarnya


kepada Bpk. Dr.lr.Djoko Purwanto, M.Eng yang telah membimbing dan
mengizinkan penulis menggunakan sarana riset di Lab ELKA ITS.

Jika Anda ingin mengikuti training secara inhouse atau private, atau
ingin mengadakan seminar atau workshop dapat menghubungi penulis
di:

CV Pusat e-Technology
Perumahan Mutiara Gading Timur I , Jalan cendana
Bekasi Timur - Jawa barat 17510
HP :08 5 698 87 384, Yahoo Messg : prof_widodo
Email :Widodo@widodo.com

5,BlokD3l2 RT

6124

www. Toko-elektronika. com


www.toko-robot.com
www.Widodo.com

sebagai penutup, penulis juga mengharapkan saran dan kritik yang


membangun guna penyempurnaan buku ini. Anda juga dapat
berkomunikasi dengan penulis melalui email di widodo@widodo.com
atau Paulus@delta -electronic. com.

Jakarta, 1 Agustus 20Og


Widodo Budihorto & Poulus Andi Nolwan

VT

!l^

22............

6t "'.."..".
8I """"""
LI """"""
Lt """"""
t """"""
2L """"""
I I """"""
6 """""""
6 """""""
6 """"""'
9 """""""
E """"""'
..............
I """""""
I """""""
I """""""
""""""'
[

ueqtlP,I

'.repro^v loqou lenqurew


'lndln6 lndul uederaued
,{e1aq rs6ung uep 1nd1ng uederaua6
' uer6ol4 eped uederaued
uer6or4lpnquew eqo)uew
ralrduoS ) UAy uorsr6epo) rsplelsul
dAV >lnlun :a1rduo3 3 uer6o.r6

"""

"'gEg e6euly dnv JeloJluoIoJIrW

""'upnlnqppued

'UVSVq rOSOU NVhTVUDOUWEd Z SVg

ueqllel
ProuPrunH ]oqod rnllelrsrv
...............prouprunH
loqod
loqod qerefag
loqod 1eua6ue14
""'uenlnqepued
"qroNwrDH rosou'rvNlrDNaw

II4""""""

I sv8

ISI UVJ^:IYQ

A""""""'

UVTNVDNedYrYy

lq )eueo

3 Roeor HqmAxorp BRAT


Pendahuluan............
Mengenal Robot BRAT
Perangkat Keras.......

Bae

Mencoba Mikrokontroler Basic Atom Pro


Merakit Robot BRAT

..........

Latihan.....
Bne 4 Lencex Ronor 5 Sumeq Generen
Pendahuluan ............

....25
.....25
.................-25
..................25
.........26
.....30
.....48

.....53
.....53
AplikasiPenggerakLenganRobotMenggunakanPC..... ................59
Aplikasi Penggerak Lengan Robot Menggunakan Mikrokontroler ..................67
.................68
Program Penggerak Lengan Robot Otomatis
.....76
Latihan.....

5 Sexson-SENSoR Ronor.....
Pendahuluan............
Rotary Encoder
Sensor Jarak Ultrasonik
Modul Suara D-Voice 04............
Proses D-Voice secara Manual

...............77
.....77
.............77
................81
...................87
...................89
Proses D-Voice secara UART/Serial dengan Mikrokontroler.......................91
Pengalamatan Memori D-Voice 04............
.................93
...................98
Sensor Penjejak Garis
Penjejak Garis dengan Sungut.....
...............98
..............99
Penjejak Garis Tunggal
.............102
Sensor Warna TCS230...
..........107
Proses Pengukuran Nilai Frekuensi
Latihan.....
...110

Bne

6 BRcrRr\ PENGENDALT RoBor


Pendahuluan............
Bagian Input........
Remote dengan Media Inframerah
Aplikasi Penerima Data dari Remote Televisi
Remote dengan Media Celombang Radio
Aplikasi Penerima Data dari D-Joy Controller
Bagian Otak.........
Download Program melalui Parallel Port..........

Bes

.............111
...111

.......112
............113
...........115
.................722
..........729
.......734
............135

viii
i
:1
,,&

-ii

XI

v12"""""
LLz"""""
LL7"""""
LLZ """""
ILZ""""'
902.........
V02"""""
002 """""
002 """""
002 """"'
.'""""
96I
E6I """"'
E6I """"'
96I """"'
g5I """"'
66I """""
t,L1"""""
0ZI """""
ggl """"'
Lg1"""""
g9I """""
E9I """""
g9I """"'
?gI """""
vg]- """""
291"""""
L91"""""
LqL """""
LgI""""'
99I """""
8?I """""
Vil """""
2v1"""""
1V1"""""
"""""
96l

""

up^eled loqou

lpunl ]pl6ueJed

up1{pled ]oqod rnllelrsrv


up1{eled loqou upFup)upd

""'uBnlnqpPuad

"" qrONVhrDH NVAVted rOSOU 6 SVg


uPr{r}pl
qPIBA\ Dunperl
""""""'qpfe716 uerslalepued dasuoy

'JerJrssel) epp)sp) rBBH


r{p[p1\ ueleue6ua4

""""n)uedg reseq ueruerDorua6


13uedg tuer6or6
loqou eped uotstl ralnduo3 leua6ueyl
"""uenlnqepued
rosou

yDrND Norsrn

ugrDdwo) g 8vg

ueqrlpl
""relndrag uep nfe14 loqo6 up>leJeD
onros rolow
ue6uap up{BreD ue6unqng
lnpns
"" rJrpreg loqod uBIBreD
nleyl ueuey uppeg ue>lpreD
"""""""'n[BW trty uppeg up>leraD
snrn'I qe16ue1 up{preD
rnpunw qe16ue1 up{BreD
"n[ew qe16ue1 ue>lpreD
nqq-nqn1 upleJaD-up>leraD
"'lypy spnd-sen5 >lereD uernle6ue4
PqP'I-pqel toqod
""'upnlnqppued

"""""Iyvy

9 NVDNEq VSVI-VSV'I rOSOU

SVg

upr{r}P-l

"'olres rolow
reddalg rolow
"""')q rolow
""rolow uer6eg
trod gSD rnlelelu tuer6or6 ppoluly\oq

Lt"-

{
Face Recognition
Konsep Dasar

........274
..........214
...222

Latihan.....
DaRTRR ACUAN

,,,.,,,.,,,.,225

LAIVTPTRAN

......227

TENTANG

PexuLIs....

......229

'p,{pp nle) Jeqr.uns uep 'ppol 'u1setu lrupletu resep nlrer{


'1oqo: eped ueleun6rp >1er{ueq BEnf Br{rurpl Irqou eped ueleun6rp
6uBf drsuud pueJpy 'loqoJ lenqtuetu Inlun Jespp Ieleq rlrlrueu
qPPns ppuy 'er{rrue1 llqotu }rlerer,u Iqoq IIIlFuer.u ne}p qeured ppuv
'loqoJ lpnqtuatu qplepp efuerelue rp 'e1ruor11a1e ue6uap urer.uJeq

elrf

epuy elrf ueluesoqrueu leprl uep lrreuau 6uer{ 1eq >lefueq epy

loqou qPrB[os

loqou lBuobuaw

'uoq)e
-Jalq loqoA ueunH ue6uep Ipuelrp 6uer{ ersnueur qredas n>leyrrdreq
upp rslerelurreq uBnduBrua{ rlrlrrueu ueldereqrp 'ue>1qeg 'eJsnueur
drrrtu JnlrJ r>lrlruaru 6uBr{ }oqor rpefuau uelsn{oJrp ue>1e uedep aI }oqor
uedereued BUoJBI 'ru1 lees uelDueqrualrp re)ue6 proueunq loqod

uenlnqepuod

ploueurnH ioqoa puoduew

/l
Bab 1: Mengenal Robot Humanoid

Kata robot sendiri diperkenalkan ke publik oleh Karel Capek pada saat
mementaskan RUR (Rossum's Universal Robots). Namun, awal munculnya Robot dapat diketahui dari bangsa Yunani kuno yang membuat
patung yang dapat dipindah-pindahkan. Sekitar 27O BC, Ctesibus,
seorang insinyur Yunani membuat organ dan jam air dengan komponen
yang dapat dipindahkan. Zaman Nabi Muhammad SAW pun, telah
dibuat mesin perang yang menggunakan roda dan dapat melontarkan
bom. Bahkan, Al -jajari (1136-1206) seorang ilmuwan Islam pada
dinasti Artuqid adalah yang dianggap pertama kali menciptakan robot
humanoid, hebat kan? Nah, Anda sendiri bagaimana? Di zaman sudah
maju begini, apa yang telah Anda buat berkenaan dengan robot?

Pada tahun 7770, Pierre Jacquet Droz, seorang pembuat jam


berkebangsaan Swiss, membuat 3 boneka mekanis. Uniknya, boneka
tersebut dapat melakukan fungsi spesifik, yaitu dapat menulis, yang
lainnya dapat memainkan musik dan organ, dan yang ketiga dapat
menggambar. Pada tahun 1898, Nikola Tesla membuat sebuah boat
yang dikontrol melalui radio remote control dan didemokan di Madison
Square Garden. Namun usaha untuk membuat autonomus boat
tersebut gagal karena masalah dana.
Pada tahun 1967, Jepang yang pada pada saat itu merupakan negara
yang baru bangkit, mengimpor robot Versatran dari AMF. Awal
kejayaan robot dimulai pada tahun 1970, ketika Profesor Victor
Scheinman dari Universitas Stanford mendesain lengan standar. Saat
ini, konfigurasi kinematiknya dikenal sebagai standar lengan robot.
Terakhir, pada tahun 2000 Honda memamerkan robot yang dibangun
bertahun-tahun lamanya bernama ASIMO, serta disusul oleh Sony
dengan robot anjing AIBO.

Robot banyak dibuat oleh Institusi Riset, Universitas, Departemen


Pertahanan, serta institusi besar lainnya seperti NASA dan Sony. Saat
ini hampir semua industri manufaktur menggunakan robot karena biaya
per jam untuk mengoperasikan robot jauh lebih murah dibandingkan
menggunakan manusia. Robot pada awalnya digunakan untuk melakukan fungsi spesifik, misalnya pengecoran, penyolderan, dll. Namun,
saat ini sudah banyak robot yang melakukan banyak fungsi.
Beberapa penerapan robot saat ini antara lain:

r
\

Merakit dan mengelas kerangka mobil di industri manufaktur.


Pencari dan pemadam sumber api, intelijen.

vaNoH lreP oulsv pqoa

I'I

requeD

I'I requleD ruedes PpuoH


Irep OWISy nlrp^ {rreuer.u dnlne 6uef proueunq }oqod 'e[uure1 ]oqor
Durpueqrp r66ur1 qrqel 6uer{ ue}rlnse{ 1e16uq qrlrtueru proueunq loqod
'lersos BJB)es rs{pJe}urJaq ndureu-r lpnquaur 6ue,( ersnuetu qnqn} ue6uep
drrnu e{uueqnrnlasal uelrdruel ue6uap }oqor qelepe proueurnq }oqou
plouBrunH loqou
'uere11ope1 Eueprq rp rs6un;-rsDung

'(fVSO) {6o1ou

-q)eI pue sse))y aredg Jo e)rJJO Jp ue{rspradorp 6uer{ trloqorale}


uerEord rer{unduretu VSVN 'reurnofog Bureu ueDuap sre14 1aue1d
nBlB uelnq rp rser.uJoJul Ue)uatu e{ulesru: ':aroldxa/qefelefuad }oqo5
'ersnueu qalo
ne16ue[rp qesns 6uer{ ge:oJle Ip 6uenr n}ens rsledsur6uatu yn}un
eun6req 6ue,t (93y14) ue1s,{g 6ur1mer3 pe}puotnv uoq)unJr}lnw
'"Wgl,, JnJnq lpnqtueur ynlun Jel)ru IelsrJ{ eped uouex
trrole ge uelqppurureu Inlun (edocsonrl4 6ur1auun1 Duruuerg)
WfS ueleun66ueu Wgl qrlaued '066t unqel epe4 'r(6olouq)aloueN
'(1oqor:ern) 6ue.red loqor 's;patu toqoJ 'e>1auoq loqor 'o1o1uer{e1e4

a
a

Bab 1: Mengenal Robot Humanoid

Robot humanoid saat ini banyak dibuat untuk robot pelayan atau peniru
manusia, misalnya robot pemain ping pong TOPIO di bawah.

Gambar

1.2

Robot pemain Ping Pong TOPIO

Jika Anda tertarik untuk membuat robot humanoid, saya sarankan Anda
mencoba robot humanoid yang berfungsi sebagai robot pelayan (seruant
robot), seperti robot ENON ini yang sangat cerdas. Percayalah, Anda
dapat membuatnya.

Gambar 1.3 Robot Asisten pribadi ENON

-eun6rp do1de1/34 uelEuepag 'qne[ leref BrBres qelurrad prrrgeue(u


nplp elep uplrsrusueJluaru ledep loqor re6e qelepp sple rp ueleun6rp
6ue,( ssalarrm r6oyouleJ 'loqor rIBI uep epor nple loqor ue6ual rpedas
rolpnlle 3I rsIP uelnlelatu ue{B relorluoloJ>lru '}enq B}r{ qelet
6ue,{ uBr6ord rnleleu nlp'I 'JaloJluo>loJlru qalo qelorp uBIe Josues
qelo erurJalrp 6ue{ lndur entues 'eserq rpnl uBndrueure>1 ue6uap
ruolV )rseg uep 'durelg )rseg 'dnv Igedes JepeJeq tuntun 6ue,{
Jepuels reloJluoloDlrr.x up{pun66ueu ledep epuy 'un16untu sppJe)es
lnqesJel proueunq loqor lenqtuetu Inlun Jelorluolo.r>pur/lorluo6ued
re6eqraq ueleun66uau ledep BpuV efurlur 'se1e rp requb6 epe6
(41nua4 e1fi2 4eg) repuels ploueunq ?oqoA ue6uecueg

uoIlIuBoceJ

ecroA

b'I requeD

n3ued6 .
.
.

re,ueg 1bg4bg.(1ni

loN'++J I?nsIA

do1du7 34
YE'utiu Lrz-6

Y YCmv3
(,tazdt)
psJe{ul Josuos

ilp
/ruolv crseg
durelg crseg

77

79ggg

e8sqygny

/LLA9I )rd
77ge?sulyany
:rolorlrro{oJ)lltr^tr

Iuelqs

'tenq epuy ledep 6uef


repuels proupunq toqor ure.r6erp {otq ueledmatu Llelr\pq rp requeD

plouBrunH loqou

Jnllollsrv

t*'

r
Bab 1: Mengenal RobotHumanoid
I

kan untuk program utama serta melakukan proses komputasi data


dan images kecepatan tinggi yang tidak mampu dilakukan oleh
mikrokontroler standar. Untuk memberikan catu daya pada robot
dapat digunakan baterai, aki, atau solar cell.

Ok, sampai kapan Anda hanya terpana dengan gambar di atas? Sudah
saatnya Anda sebagai generasi penerus bangsa terutama yang
menekuni bidang elektronika memikirkan dan berupaya agar mamPu
mengejar ketertinggalan kita dari negara lainnya. Jika Anda hanya
hobi tanpa memiliki bekal pengetahuan dasar di bidang elektronika,
tidak masalah. Yang penting Anda mau belajar dan mencoba sekarang
juga. Demikianlah pengantar robot humanoid yang dapat dijadikan
sumber pijakan utama bagi Anda yang ingin mengembangkan robot
humnoid yang Anda impikan.

Latihan
Yang membuat Anda mahir robotika tidak lain adalah pengalaman dalam
bereksperimen dan ketekunan. Untuk itu, Anda diharapkan menjawab
dan mengerjakan semua latihan ini.

1. Sebagai seorang pemula/pelajar, Anda membutuhkan informasi


pelengkap terkini tentang dunia elektronika dan robot melalui
Internet. Akseslah situs google.com atau yahoo.com untuk mencari
informasi komponen elektronika untuk dapat menjelaskan cara kerja
dari:

a. Resistor
b. Kapasitor elektrolit dan kapasitor keramik
c. Transistor NPN dan transistor PNP
d. MOSFET dan FET
e. Relay 5 V
f. Dioda penyearah
g. IC regulator variabel
h. Kamera webcam
i. Motor DC dan servo

2.
i,

Rangkailah catu daya berbasis solar cell amorphous 5.2Y 21mA

:tN

..ri

ondifl

'A)uedo epas leN' ++) Iensrn upurprDor(ued qeprefela6

.V

'er{uure1

uep 'rqeurneud 'reddels ')q Jolou 'onJes qredes ,plouerunq loqoJ


rotpnlle ue6uep ue6unqnqreq 6uer{ urlEunu 1er{ueqas oJur qplrre)

kL.

'Egg e6euly dAV ralorluo>loryrr.u dle uld


0? rppupls rlp{ upunsns qelepp }nlrreq rpqrleD .g.gg e6auly g1y
urpl prplup rur lees ue{lpdepp qepnur upp lpuelral 6ue[ relor]uoloJlrw
'tenqlp uele 6uer{ loqor prupln lo4uo6uad uelednteu reloJ}uo{orlrw

gtgg e6eu1v unv rolorluoloDlll l

'er{ur-unlaqes up{n}ue}p qplel 6uBf uerEord rBnses


1nd1no uer6eq eped rsle uplnlplp uep 'relorluolorlru qelo seso.rdrp
n1e1 'etultelrp 6uer{ lndur rseuJoJuJ uplJpsppJeq r.uelsrs nlpns up{rlpp
-ue6ueru Inlun qplepp reloJluolorlrtu uedereuad upp rspluerJo .]oqoJ
efrel uelorluo6ued rrep Jpsep ueledn:au JeloJluoroDlrr.u upupr6orua4

uBnlnqBpuod

rcseo ioqoa ue.aetdotuod

F.,

Bab 2: Pemrograman Robot Dasar

PB0_(XCK/r0)
PE1 _(T1 )

PE2_{ArN0itNT?)
PE3_(AlN1t13C0)
66i

PA0_(ADC0)
PAl _[ADC1 )
PA2_(ADC2)
PA3_(ADC3)

P86_(MrSO)

PA4_(ADC4)
FAs_(ADC5)
PA6_(ADC6)

PB7_(SCK)

PA7-(ADC/)

"FF

PBs_(MOSr)

PD0_(RXD)

PCLI-(SCL)

FBl
-(rXD)
PO2-(rNI0)

PC1

PO3_(NT1 )
PD4_(OCl Bl

FC3_(TME)

FDs_(OC1 A)
PD6_0CP)

_(SDA)

PC2_(TCK)

PC4_(rDO)
PC5_(TDr)
PC6_tTOSCl )

P07_(OC2)

RESET

ouii
AREF

XTALl

G amb

ar 2. 1 Mikroko ntroler AT me g a8 53 5/ 1 6

Pada gambar di atas terdapat 4 buah port, yaitu PA, PB, PC, dan PD
yang semuanya dapat diprogram sebagai input atau output. Jika dilihat
Iebih detail lagi, pada bagian pemroses mikrokontroler ini terdapat unit
CPU utama untuk memastikan eksekusi program. CPU juga dapat
mengakses memori, melakukan kalkulasi, pengontrolan, dan penanganan interupsi. Ini dilakukan menggunakan arsitektur harvard (bus untuk
memori, program, dan data terpisah) sehingga dihasilkan performa
yang tinggi. Hal ini dikarenakan instruksi pada memori program dieksekusi dengan single level pipelining. Dengan demikian, pada saat
sebuah instruksi dieksekusi, instruksi berikutnya dapat diakses dari
memori program. Konsep ini memungkinkan instruksi dieksekusi pada
setiap siklus clock.
Pin I/O pada mikrokontroler AVR dapat dikonfigurasi sebagai input atau
output dengan cara mengubah isi I/O dari Data Direction Register.
Misalnya, jika ingin port B dikonfigurasikan sebagai output, maka Data
Direction Register port B(DDRB) harus di-set sebagai OxFFH (sama
dengan 255). Jika diinginkan sebagai input, DDRB harus di-set ke
0x00H (sama dengan 0).

t_

II

'lnqasrel LuerEord uplpun6rp ulnlq>{erd


eped 'nll puerpl qelg ') pspL{pq slseqraq 6uef dAV uorsJ1apo)
qplepe 11ryrernod Wqel 6uBf efuurel uerDord ue>16uepes 'Uny
r.uoDspg r{BIepB leuelrp 6ur1ed 6ue1 'ra1or}uo>loJlru uer6o-rd ralrdruot

uep rolrpe le6eqes ueleun6rp ledep 6uB,{ uer6o.rd lefueq ppy

UAV

Inlun rollduoc c ueroord

0.9 uod eI rurrrlrp 0.) uod p epq// : 0.)NId=0.8IdOd


g uod aI urrr{rp ) uod Ip e}Bp entuag//
:)NId=gIdOd

:qoluo)
llq'xuld rs6un; ue>1eun6rp ledep urd"red rslelapuetu Inlun uelDuepas
'xNId rs6un; ueleun6rp pod nles qples eped lndul rslelepueru InluD
JIDIe dn-11nd leuralur// :0=gldod
lndur re6eqas rsern6r;uollp g Uod // :g=gdqq

r{o}uo)
HoO=gtUOd UPP Hoo=gUqQ PIeu 'ueIJrt{PrP e,{u-dn-11nd
IeuJelur uep lnduJ re6eqas rse.rn6guollp g uo4 'er(u1esq4 'rolslsal dn pnd
leuralu rlrlrueu UAV relorluolor{ru O/l utd derlag '('"1)Vtugz rpseqes
snJP UPP AZ'' JelDIas er{ureseq 6up{,,1,, e16o1 uelrenleEueu e! p>{l}el
ralorluo{oD{lru O/l urd eped uBFueDe} qelepe (aOe1yoa qfiq TnQno ) 'oA
lndur re6eqas rsern6r;uollp e Uod //:00x0=edqq
1nd1no re6eqes rsern6rsuolr.p

gUo4//

:9EZ=SUCC

qoluo)

/l
Bab 2: Pemrograman Robot Dasar

lnstalasi CodeVision AVR C Gompiler

1.

Installah dengan mengeksekusi file setup.exe yang terdapat di CD


pendamping buku sehingga muncul tampilan berikut:

Welcome to the CodeVisionAVR


Compiler Setup Wizard

This will install CodeVision4VF V].25.7 Beta 5 on your


aomFutet.
is recommended that you close all olher Epplicdhohi befoE
continuing.

ll

Dlick NeBt to continue. or llnncel to exit 5etuF.

li ilad>rSr Cdlrd

I!

Gambar 2.2 Tampilan awal instalasi

2.

Klik Next sehingga tampil gambar di bawah ini. Pilih direktori instalasi Anda, lalu klik Next hingga mencapai Finish.

Gambar 2.3 Persiapan instalasi

'(c'tOI rpefueu srletuolo) 191 e,(ulesnu '1nqasre1 ayrg


eurpu rJag 'e)rnos qllld nlel 'fi\eN I ellg nueul >1r116ueur erer ue6uap

qpllpng ')' uolsuelsleraq 6uer{ apol alrJ }enquretu qplppe uelnlel


ppuy srupq 6uetr 'rur qprv\pq rp .reque6 rpadas u.ro; lrdue] uely

.Z

4afrod etueu lraquary ?'Z requeD

t'i

-E n E

r*ttt:r

4 [I

:*.*

!jI*tJ!:J :4d* r

:rur qeaeq rp reque6 qradas OI eupuraq e{ulesru 'uelur6ur ppuy


6uer{ rap1o; eped epuy }eeford pureu rJeg 'prezrly\ ueleun66uau
uerernBuad uelreqv '1eepr4 map qrgd n1e1 'mag I e[C nuou qrlrd

.I

:qplPpe e,(uqe16ue1 -qe16ue1


'rueq 1ar{o.rd lenqtuau In}uD 'ralrdu:o3 ) UAV uorsr^epo) uerDord
lrdu:e1 e66urq ]nqesel r-uet6o"rd ueluelef 'lesa1as rsplelsur sesord qplelas

ueJooJd lBnquow eqocuaw

r
Bab 2: Pemrograman Robot Dasar

fsh::@',:Ee+ I Fsi*: I!to& 568'Si ::tW*d$.R ,!SF.;:ti:it i

Gambar 2.5 Progek gang sud.ahiad.i

3.

Simpan file tersebut, lalu buka lagi melalui menu File I Open.
Pilih tipe file berekstension .c. Konfigurasikan juga proyek
Anda, antara lain dengan menambahkan file source .c ini ke
proyek Anda. Ketik program seperti gambar di bawah ini:

rdl

:s
:..U
ts

Proiect:

ffi

l0

Notes

0thg

Fdes

t I 6l c
[

'l

|l

itll

f ilE EegE]6
//sengqu8ks delari
r'liBii libla4,alys hsrus diE*6ks

rs;

*ra.1$ae <tegaJ.6.h>l/renyeft Elre lihlsry

"I

i-.i^rC9

output

3$

inodp,

iiEi

deleks

// llen..1ha llerbuat !rogrs f,odevi;inn .$[


/r' ler.nhss 0{Lpui ds delsy psds Port E
l/ LlD;:rhu!,&g di Port B
/ / tts.k lipia e-Teclu6.l6gy l:efi1t ZfitB
<deley-h>

mid DEin{rcid) \
DDRS=zsS;

lprq,$e tJzea

,/,/Poti B dikorifigulari ,ebagai 4urrut


lr'Y81tu lBLl -FF?

p0!.18=255; ,'r'geuua

p*tt

ttnyeluerlie
Ee&us !B! bEtl

//IDgiks I sehingqs

Gambar 2.6 File source berekstension .c

ini adalah program yang harus Anda coba untuk mulai


mempelajari mikrokontroler AVR. LED terhubung di Port B. Program
akan membuat beberapa LED berkedip.
Berikut

74

\"

9L

4aftord

Eerni{uoy l'Z requteD

.r

ill

-.::;'

Eliho ql, $F dt J xlH Nob loll {+iEtuii;,:lll:


I-:.:.ffi
t*nqA'trr*u, j

-:
.- .., I ,
,,. *;*r*,r+i"L;+-:i"frti
,

:- : :ryryqn"uqs!ry11ryf.'ffi J

,,fffi,{flffifi

q$4"sid@8il6,A+B

ei,,

iqtgvgspuqqr

ffi

qPm lurl'

,#:::

I
I :,:;,iiXl

ririi$d&

l:_

ne
, 11qTnl'"*.'# : ii;Eqt+q::i
. ..f"stl.Teptry oI

::"
i ,, , . ..: .isr:iai,+:i:i,f
-.=.?:;:1 aeEg4aepoS.l
is!.ff ,s,#ffi F;t
li;il+i#itif
,l^::'.-r. .;a: J;":1",...... Jl
.l "
*,*r.-"*i
*FSq=ffi

$S:

!li:
ffitir

,"li_" rdovl

:i,11:ii*,

I
r

:]i
.

purxeyl!
l:ry::
r ; .F#iittoEilrdG

F
i;
l@i
r :t a

dzrsi

:::: il

l:#}Ep{8e:l :

,l

*-"$

!Se].

ssztr

:up>lpun6rp 6uef lcop upp ralorluolorlru edq


uelrlsetuaul upDuep ppuv 1e,(ord rsern6rJuo{ouaru Bpuy uBlr}sed

'v

pupln ureJooad a.T,,trllU/ /


EurdooT ar\Ile// !{
{Tlap T xele1// J(000I)sur-z{e1ap
Tleul ZAd Ogl// jf =Z'A,IEOd

Tleur 996 o"=r, j T=0 's,tEod


{T1ap 9'O ,{eteq/ / r (009) sur-. plap
e1e",{ueur Zg.d Ag.I/ / r O=Z'EJEOd
eTe^ueur OAd qg"I/

10=0'A;UOd

} (T) AIIqI^
sn-re1 EuETn-raq ue{e weabojfd / /
T?eu
oET Enuas Tpe[ 'I e)ir6oT ueI-renTe6ueu E 1.rod pnu]as// rgEZ=S,luOd
jEgz=auoc
Lsd- gad n?re^ 'lndfno re6eqas rse.rn6r;uo{Ip A laod//
pro^ elep adrl.raq EurEan ulet6o-rd// ) (pToA)uTeu pro^

uElieun6rp sn.rer{ e^u^-rE-rqrT Tpet


9

E6ou aTTl:

^eTap

^-re-rqTT
0T0Z

ue)iEun66uaur// <q.^elap> apnTJur+


ue)ie1-ra1{uautr / / <q,.

lalual

1e6au:> apnTcur#

e?drJ XeH / /

E^6oTour{JeJ,_a
1.rod rp 6unqnq-ra1 agl / /
g lrod eped /ieTep uep fndlno ueeqoc.rad //
IL\V uorsr^apoJ ure-r6o-rd lenqual^I pqocuetr{ //
:

c'ror

Bab 2: Pemrograman Robot Dasar

5.

Setelah kode selesai dibuat, klik menu Project I Compile untuk


mengkompilasi proyek Anda. Jika tidak ada kesalahan ketik, akan
tampil informasi sukses seperti gambar di bawah ini;

ATmegal E
type: ApplicBtion
model: Small
lor: Si2E
slprintl lealures int, Nidth
feitures: int, width
char to int: No
6 unsqned: Yes
bit enums: Yes
instruclionsr Dn
reqister dllo.Etion: 0n
tl9 linelsi compiled
etr0rs
warnings

lariablei size

b!te[s]

Steck area 60h to 15Fh


Slack size: 258 byle{rl
rtimated 0at6 Stack uiaqe 0 bltehl
variables srze: 0 bftelsl

stack Brea: I 60h lo 45Fh


Stack sire: 788 byte[s]

EPB!M usage 0 bylelg [0 0:i ol EEPE0M]

i*::i*---:;=**5

lil*" g."fl.
Gambar
6.

16

2.8

Hasl kompilasi Aang sukses

Terakhir, Anda dapat mengisikan program tersebut ke mikrokontroIer melalui menu Tools I Chip Programmer, lalu pilih Program All.
Jika telah selesai, lampu LED Anda akan berkelap kelip dengan
durasi 0.5 detik dan 1 detik. Pastikan programmer yang Anda
gunakan adalah STK 200/300 (AVR ISP Programmer) berbasiskan
port parallel. Jika Anda ingin mengisi melalui port serial/USB, Anda
dapat menggunakan DT HiQ Universal Programmer.

Fr

iLL
.
snjral oueTn-req upli Udea5oad / /
T?plu og.t.TpE!-; T e{T6oT ue{:enTe6uaur I lrod enures//
lEgz=s,tuod
/lndlno
rE6eqas rse-rn6r]uo{\p A 1aod.//
IE9Z=EEGC
-Ad- OAd n?re^
eurEln urelbo-rd/ /
) (pro^)ureu pro^
ue)ieunorp sn-rpq p^u^-rp-rqrl rpe! ,u(e1ap ue{eun66uaur/ / <q.^elap> apnTcur#
aTrl
ue1e1:e.{uau/ /<Ll. gTe6eur> apnTcuT#
^-re-rqr1
E 1.rod Tp Eunqnqraa Ag.I / /
91e6aur

g lrod pped

^elap

uep 1nd1no ueEqocjad //


3

c.qlrodlno

:rur qp^rPq Ip ureJ6oJd

leng

'z

')d aI Jer.uruer6ord dsl dAV leqel ueDuep up>l


nele 'rel s)rloqo5 lr/ypelus ue{ders .I

-6unqnq upp renses 6uef

e{uqe16uel-qe{6up-l

'

feleg ls6unJ uep lnd]n6 uBdeJauad

ruBJEoJd eped uedeJouod


ralorluo4or4lu a4 tuet6otd lslduaq 6'Z requeD

0=N1030

0=N35V1l
0=1.J0)il

0=lAvSll
D= LZST

n=r'l7q

OD8

lnnH

0=.LSU100S

0=tlAl'1008

_l

0=Nl00E
t_t=

rir{ ;i;

L1t'tS

0=0-LnS

0=Ell5)l
0=IllSYl

0=[ll5Il

ls)f

: : ; : ..!'il$fli,r$

91r.fr
i,i:r::iir
: :,j : :: :.:-::.:

,* 8

F,t*'

;#r

ai

Pi:lt5_!.ll*I
;: i;:iiiir iF :: ::rl

ry:*l$i,i

ii*,-;:**ffi
IsSgdf*i,l

i ar::. : :..... :;

::,,..

::,.::,,

:I*ff ' :i;r$Hrcli::.

UE

jit;i+{t"T:m

Bab 2: Pemrograman Robot Dasar


whi-1e (1)

PORTB.0=0; //LED PBO menyala


PORTB.l=1; // LED pB1 mari
PORTB.2=0; //LED PB2 menyafa

delay-ms(500); //Delay 0.5 detik


PORTB.

0=1;

/ /LED PBO mati

// LED PB1 menyala


PORTB.2=1; //LED PB2 maxi
delay-ms(1000); //Delay 1 detik
j; //akhir looPing
//Akhir program utama
PORTB.!=O;

3.

Kompilasi dan jalankan. Pada alat akan tampil lampu LED yang
berkedip secara bergantian sesuai dengan delay yang telah
ditentukan. Beri komentar mengapa diperoleh hasil tersebut.

Penerapan Input Output


Langkah-langkahnya;

1.

Siapkan SmartAVR Robotics ver. 3, dan hubungkan dengan kabel


AVR ISP Programmer ke PC.

2.

Buat program di bawah ini:

InputPortCkePortB. c:

/ Percobaan Input di Port C dan Output pada Port B


// Saklar di Port C, LED terhubung di Port B
#include <mega16.h> //Menyertakan library file AThegal6
#include <delay.h> //menggunakan de1ay, jadi librarynya harus digunakan
//Program Utama
void main(void) {
DDRB=255;
//PorE B dikonfigurasi sebagai output, yaitu PBo -PB7
PORTB=255;
//Semua Port B mengeluarkan logika 1, semua LED mati
poRrc
//Marikan
)):;:i:1"$'i"I? ffi';:e"":::l-3i:n inpur
#asm ('nop")
//persiapan
/ / Program akan berulang Lerus
while (1) {
PORTB=PINC ; / /Semua push button yang ditekan di Port C, datanya
dikirim ke Port B
/ /ak},it looPing
);
j
/ /Akhir Program utama
/

=0;

3.

18
I

Amati apa yang terjadi jika satu atau beberaPa push button di Port
C ditekan. Dapatkah Anda menjelaskan fungsi PINx?

6t
raploae Toqor lueroelp 4o1g ol.z requeD

gggg

e8elqly
UAV

relorluo{oDIrI

eI

zlcTdD
{?Jef Josues

')d lPrres uod


JelorluoloDlrur rrep lprras leqel ue{EunqnH .)d eI rar.uurerEord
ueDuep tnqesra} relorluolor{ru }p{ ue{EunqnH .z

dsl uny Ieqp{

Eunlnpued slool epes uauodruoy

relsel Pel .
qenq Z {e^ueqes gxz )CI .
,{pog .
loqor

Ppor uep

)Q rolotu la{pd .

Zl,qZdD dreqg 1e:e[

rosuas .

,{e11or1 epog .
)q )dS .

rolow

'er(usrue[es nele
g1e6etu1y srseqraq s)rloqou xr yupurs relorluoloJ>llur gy

:uelqnlnqrp 6uer( 1e16ue:ed

uelderg .t

:lnlrJeq reDeqas qelepp rur Jeprolp loqoJ


uelrlerad qe16ue1-qe>16ue1 '6002 opurlnduoy Brpew xalE uplrqrel
rsrned rsrp3 sppJa) loqog rJrpues ]enquaw nlref ,efuunlaqas n{nq
p)pqureru epuv ueluerefueu srlnued'er(uue1r1nse1 1e16uq Euer(eqre1
Ippn uep Eun6urq uele ppuv urlEunu_r euerel efes eeeqrp/ue>lrrqrdrp
er.unD ue6uep 'nlnr{Bp qrqalJel lul }oqor eqo)uetu epuy ue>lqrfern
srlnuad 're1or1uo1or4tu uplsrspqraq loqor lenqureu qeurad unleq
6ue,{ epuy eletu 'qr66uet 6ue,{ proueunq }oqoJ }enqtuetu ledep IntuD

ropro^v loqou lenquohl

Bab 2: Pemrograman Robot Dasar

3.

Hubungkan sensor Sharp CP2D12 di port A.0, keluaran PortB ke


SPC DC Motor (S1-S4), dan keluaran SPC DC Motor ke Paket Motor

DC GT2 atau GD20 Mini Metal gear motor.

Gambar 2.11 Paket Nlotor DC GTz dan Roda (kiri) dan GDZO Nlini Metal
Gear Motor 100:1 lengkap dengan rod.a besar (kanan)
4.

Rakitlah robot tersebut sesuai keinginan Anda.

5.

Buat program di bawah ini, lalu masukkan ke mikrokontroler


dengan bantuan CodeVision C AVR Compiler:

RobotAvoider.c:
/
//
//
//
//
/

Percobaan baca data sensor jarak Sharp GP2DL2


Untuk Robot Avoider (Penghindar hafangan)
SPC DC Motor di Port 8.0,8.1-, 8.2 dan B.3
Sensor ,farak Sharp GP2D12 di PorE A.0
Hak cipta Mr. widodo Budiharto 2010

#include <mega8535.h>
#include <stdi,o.h>
#include <de1ay.h>
#def ine ADC_\,'REF_TYPE 0x6 0
flash unsigned char stringl[]={"data
adc: td; "};
/ / Baca 8 bit terpenting
unsigned char read_adc(unsigned char adc_input) {
ADMUX=AdC_iNPUI I (ADC-\REF-TYPE & OXff);
of the ADC input voltage
/ / Delay needed for the stabilization
delay_us (10);
/

/ M'alai konversi

ADC

aocsnal=0x40;
// Tunggu konversi ADC sefesai
whife ((ADCSRA & 0x10)==Q;;
ADCSRA

return

=ox1o;
ADCH;

void main(void) {
// Inisialisasi Port B dan D sebagai output
PORTB=0xFF;
DDRB=oxFF;
PORTD=OxFF;
DDRD=oxFF,'

20

LZ

:rur qp/neq rp reqr.up6 ruedes lpr{lllp }Bdpp


lnqesJel loqor rJpp IrsBH 'ruBr6ord rp uplnluet elpl qplal 6uB{ upDuep
Ienses )q roloru upl{pre66uelu re6p )q ro}oru re^lrp eI n}ueue}
Ie^urs uplrJeqr.ueru JeloJluoloJ{lw 'rnpunu nele '>loleq 'nletu snJpr.{
rlupu LIeIede uelnlualrp uep uBr6ord ue6uep uelDurpueqrp er{ureyu
uerpnrual Inlun Iell6lp elep rpefuaLu qpqnrp JeloJluo>lor{ru qalo 'reeurl
1epr1 6uef perp{ur rosues 6o1eue ue6ue6e} upJpnley 'rn>1nra1 6uef
ue6uap rensas 6ue{ 6o1eue uBDuBEal uBIJBnleEuau leref Josuas
>1eref

{
.1

j (09) sur)^eTap
uEue{ {oTaE// jT=ELI)UOd

I ( 00T ) su- ETap


jo=SIUOd
fnPunI^I //
)

asTe
{

.00T ) sur- eTap

r.letq. /
Teurur-ral-rad

0'vd

rp ue{IrdueJ, //

Tp .zosuas

igT=E&nOd

(00T>oJlroar

) lT

! (C,IUOd'T5ur-rts)J1ur.rd

elep ecea //

j(0)Jpp-pee.r=oJuod

(I)
I

j
j

aT-Ir{l1^

dTx0=aEoIds
L\rx0=vESccv

lfx0 T sd&t-dEE^-Jqv=x0fiov

elep 1Tq g ue1eun66ua6 77


butuung aa-rJ :a3jrno5 :e661:6 olnv JqV //

uTd CCnv :eoua.ro]alJ eOelIoA Jau / /


092'19 :.dcuanbalf )i3oTJ )au //
uorlezTTe-l?\ul )au / /
zH>I

i 6Txo=-IUUAn
i

0x0=HUEAn

I 98x0=JESJn
I 8TxO=gUSCO

.^1r-rEd oN

00x0=\tdsJo

0096 :a1eE pneE ,IEVSO //


snouo-rqcuIsv ; apo4 ,IEVSO / /
uo :-ra11rlusuelJ J,uvsn //
uo :ta^raJaE &uvso //
'dols T 'e1eo I :sla?aure-red uoTlpcrunuuroJ //
uoTlezrTET?Tu-I JEVSO //

Bab 2: Pemrograman Robot Dasar

Gambar 2.12 Robot Aooider gang sudah

jadi

Latihan
1.

Gambarkan arsitektur

l/O pada mikrokontroler AVR ATmega

8535.

2.

3.

22

Berikan contoh kode C untuk membuat port mikrokontroler AVR


ATmega 8535 berlaku sebagai I/O, dengan kondisi berikut:

Port B sebagai input yang terhubung ke 8 buah sakelar, internal pull up mati, eksternal pull-up aktif.

Port D sebagai output yang terhubung ke relay yang diaktifkan


melalui sebuah transistor.

Jelaskan cara kerja lampu LED yang dikontrol oleh mikrokontroler


di bawah ini:

EZ

'nlueuel
rsle
uplnlplel.U
'n)uedo up>lpun66uetu
Inlun
6uBr{ ue:6ord qelleng

plr{ p}etu updrpal rslelepueu ndrueu

'6

UBP

ruu-nruurylu

'9

g qPE

rp p)pqrp ledep 1n[ue1 qlqel rspurroJul 'BlrI elntu qere qnlr6uau


ledep snJpq lnqesJal eletu pnpey '(uorsrn oa"rels) pJetup>l ednreq
elptu Z ueleun66uau 6uBr( proueunq loqor ue.r6ord qpllpng

gledauly ralor?uo4orqltil

,v

ua?sls uep46ueg I'Z requeD

ldee

]h
I,3

oN$

ldEt

J]UV

JJl\tr

]]A

zHli'l

t'tvlx

i
tn

z'lvLx
13S]H

(zrsorf/]d
(

r3sor)-sf,d

(ef,o)-lod
(dlr)-sod
(B

(oorI rf,d

(vrlo)-sod

(roifscd

(st,lrI Eld

r.sofrod

{ r.lNrJ Eod

(oxrI

(vosI [f,d
('r)sI

(orNr)_zod

(yf,rfzid

o3d

(l.f,ov] lHd
(stcvfBYd

(!f,ovfrvd
(Ef,ov)-EVd

(rf,ovfzvd
roovf rvd

rod

(oxH)-ood

(Hf,sf1sd
(osrFl] sEd
(Eov'rfsEd

ss)-tsd
(orryItrtvfeea
(EJ,NtioNtv] zEd

(r-r)-

(of,ovfovd

r.Ed

(oxvJxfoEd

9Z

'qPPnu lp6uBs
eEnf er(uuBurer6onued'nll ureles'er{uure1 JoloJ}uolorlrtu uelEupupqrp
pserq :eny uendrupural rlrlrtueru r-uolV )rspg relorluoloD{lw '(JOCI)
uopaa{ ;o aer6ep llllJureur eJ 'oruas 9 ueleunEDuetu euarey '7"rod
-sueq 6u4e1n47tv )Uoqoy ppaqg rrep uele>l6urs lygg 'ruolV )rspg
srseqJaq relorluoloJlru qalo up>{rlppuallp upp onJes 9 ueleun66ueu
uellere6rp 6uer{ rlelreq proupunq }oqor ueledmau IVdg }oqod

seray lel6uerad

lvug loqou lBusouow


'epuv r6eq 1e11nr-u rlelreq
ploueunq ]oqoJ e{rupletu upp upurprEorued uenqela6uad r4yrue14
']nqesrel loqor fpoq eped ue6uequrasel uplrrequau ledep e66urqes

Jeleuorale))e rosues ue6uep rdelDuelrp Iul loqod 'IVUS


rreleledrp ynlun rleururp 1er{ueq 6ur1ed 6uer{

qeJppe

rlelraq proueunq }oqo5

uenlnqBpuod

lvaa ploueunH ,pqoa

Bab

3: Robot Humanoid BRAT

Gambar 3.1 Robot Berkaki BRAT

Pada gambar di atas, robot dapat berjalan dengan teliti menggunakan


6 buah servo Hitec. Ia menggunakan sensor jarak PING yang mampu
mendeteksi jarak penghalang di depannya hingga 3 meter.

Mencoba Mikrokontroler Basic Atom Pro


Modul Basic Atom Pro pada kit Bot Board II ini jauh lebih handal
dibandingkan Basic Stamp karena memiliki kelebihn antara lain ada
fitur ADC dan kecepatan eksekusi yang sangat tinggi. cobalah program sederhana berikut untuk mencoba menggunakan kit mikrokontroler ini.
Langkah-langkahnya:

1.

26

Pasanglah modul ini ke PC dan berikan sumber catu daya.

LZ

l-rels

0106

leadef

ltT 'x Jscl'0096T'1no-s lno.ros


-ralnduo{ e}t rTEqura{ x uTfrx j
T+x=x
lunoJ er{1 01 auo ppp I

000T asned

puocos auo -IoJ asnedl

[009t\0Er'0008\09T'0092\0ET]'6 punos
'deaq rxunq uEXTrser{FuaI^Il

or.^
3

l::t:

srq.11n1o:d1g

e
I

.lnqesJel

ord r.uolv )rspg Jolrduo) pped ppe 6up{ resep rs6un; OZ e(u
-{ppqes e6nf r.refeled 'lul qefi\pq rp u:e.r6ord rselrduo>1 uPp {r}ay '
'3CI ord ruolY )rseg ruB.r6ord Ilelsul 'Z
II preog

pg uy z' requeD

ipA0'$
'EE 0Aras

ip^0'6
'EE flEol

Bab 3: Robot Humanoid BRAT

Gambar berikut adalah tampilan editor dari Basic Atom Pro IDE

Gambar 3.3 Tampilan ATONI Pro IDE

Anda juga perlu mengatur Preferences dari aplikasi ini yang


mengacu pada comPort yang digunakan dan mendeteksi Atom
Pro.

#i;F,*ffs#

fi*l#Ei { r*it* I

n**

,&ssenrtrsr }

,r-*u.*

kd

Fk -

r-fennSw.l---*-*--.--'-'-r :-t*4sdt&

i{i
:

utn

li

'Flryd

}*am,'Fre

*dryffi*ed

Gambar

28

3.4 Setting Preferences

6Z
Luerdord ls!6uaw g' requreD

inqafl

'v

u
6

6ur11ag

urtuo) pe)uelpv e6nf rnle

:lnlrreq rpedas
'1erur1do 6uer( pseq {n}uD

Bab 3: Robot Humanoid BRAT

5.

Jalankan program. Hasilnya harus seperti berikut:

Merakit Robot BRAT


Masalah body robot kadangkala menjadi hambatan bagi pemula.
Tetapi, saya ingatkan agar Anda jangan putus asa hanya karena
masalah kecil tersebut. Anda dapat merakit body robot BRAT ini
menggunakan acrylic atau seng. Anda juga dapat memiliki paket
lengkap robot ini dengan harga yang tidak terlalu mahal dibandingkan
pengetahuan dan kesenangan yang Anda peroleh dalam merakit dan
memprogramnya. Pada intinya, saya ingin menunjukkan bahwa untuk
membuat robot berkaki seperti BRAT ini, Anda perlu mengetahui
model pemasangan servo dan kalibrasi servo yang memadai agar kaki
robot ini dapat bergerak mirip dengan kaki manusia. Oleh karena itu,
kita namakan robot seperti ini termasuk robot humanoid. Manual
lengkap pemasangan dan konfigurasi robot ini dapat Anda lihat pada
situs www.lynxmotion.com. Beberapa komponen yang perlu Anda
perhatikan bentuknya untuk jika ingin merakit body robot ini adalah:

. ;.::i*

Gambar 3.8 Bagian bawah kaki

30

:lnlrJeq Jeqr.ue6
rpedas 'renses pJeoq eped rosues upp olJes ue6ueseued uelqse6

duescdnl

Uepns ZZ?

)alH

oaras qenq

nseH

0I' requeD

rpef qepns 14e4 4ede1a7 ue6unqtues ue16eg 6' reqlueD

''.

a:.:a
:::i;Yii,

i, *i

i.:ii;;: iiAEr

rr:l1r;

:i

rir lillllrl

j. i;1w-

_-.. ; ir#;i::i

er{u1n1ueq e66urqes srlaq ue6uep

IIeI

*p:.

;'#

1ede1e1

:lnlrreq rgedas
ue6unques r.lBI}Bng

Bab 3: Robot Humanoid BRAT

NF

k:,-r

i+3

Accelerorreter

Arelerom+ter

Y Axi* iF 14
X Axis P1F)

GP2D1 2 Sentor iPl !)


Ldt Ankle Srvo rP4)
Left Krr++ Sgvo ,Ftr

L+ft Hip
Biql-rt Ankie

Srrc
lsvc (FI

Fight Kr:ee:3avr: {F
Eisht Hip S+trc (P1-n]

Gambar 3.11 Susunan sambungan ke seruo dan accelerometer

Gambar 3.12 Seroo controller terpxang di bodg

32

iE
jl
!l
!l
jl

snE

o^-Tas aq1 aseajrrap ^q


01

asn 01

fasfJo
v ssa-rd
&oH

1l

ri
! loaA
1l
1l

ip.zPog 1oE e puE


ulol\f ue 6ursn ;X119 uorlourxu^.I
fno^ ,roJ slas]Jo o^.ras aql
puTf o1 ue:6ofd sTr{1 esn

rl
rl
rl

e^"rg seue1'
uallr-rl\,l
^q .rapuTJ leslfo on:a5
-------------+.1

+----------

oaras ls;ern6lfuo4 d1su1t4

,I'

lj

Ii

0 uof, 1.rPls-aT){uelJaT
0 uoc 1.ze1s-aau{?JaT
0 uoc 1-rp?s-dTqf+aT
uo) 1.re1s-aT{ue?r{5r.r
0 uor l.rels-eeu)i1q6-!ir
0 uoc 1re1s-dTqlq6r"r
?d uo) el)iuell:aT
gd uoJ aeu{11:eT
dTqlfeT
9d uoc
Ld uo3 aT)tuelqorJ
Bd

uoc

eeu{1q6r-z

dTqti{oTf,
OTd uor
seTqer-rEl1. urals^S i
: EEq. IsolBrg

requeD

dl* **** asuH ""._."& 8lxuv.""_..a ElEff


'$a-t -puas

Bst

i,I-lX

.:

Ilaf

seq'*s*18.,q

I--#X

+* *fffi 'uers

:ln{rJaq le6eqes efudrsurr4 'repulJ }esJJo onres re6eqes


rs6un;raq 6uert nlnqep qrqalrel seq'Jsolprq uer6ord u1ue1efuaur
snrpq rlupu Bpuy 'leruqdo e[:e1aq reDB onras rsern6rsuol6uau In]uD
Toqot frpoq

p II preoq 7oq uepduel I' requrcD

Bah 3: Robot Humanoid BRAT

rhip var
rknee var
rankle
Lhip var
lknee var
lankle
rhip

Press C to increase E.he servo

sword
sword

var sword

offsel by

sword
sword

var sword

= ((righthip_start

5us

Press B Lo change which servo is l;


being manipulat.ed, and t.o send
datsa back to the termi,nal

il
/ 24) + 1500\

rknee= ((rightknee_start / 24) + 1500)


rankle
= ((right.ankle_start / 24) + 1500\
thip = ((lefthj-p-start / 24\ + L500)
fknee= ((leftknee_sLarL / 24) + 1500)
lankfe
= ((Ieftankle_start / 24) + L500)
currentservo var byte
currentservo = I
buttonA var bit.
buttonB var bit
buttonc var bit
prevA var bit

l::"""
sound 9, 150\3800, 50\4200, 40\41001
main

gosub pulsemove Irank]e, rknee, rhip, Iankle, 1knee, thipl

prevA = buttorrA
prevB = bultonB
prevC = buttonc
buEtonA = iriL2
bultonB = inl-3

buttonc = in14
if (but.tonA = 0) AND (prevA = 1)

tshen

sound 9, [50\3800]

gosub decreaseOffset

goto main
endi

(buttonB = 0) AND (prevB = 1) then


sound 9, t50\ (3600 + (currentservo * 100) ) l

if

currentservo = currentservo +
if(currenLServo = 7) then
sound 9, [75\3200, 50\3300]
goto output_daEa

endif

goLo main
endi

if

34

(buttonc = 0) AND (prevC = 1) then

t.

9.

.t:'

(009T - aauI.r)) reps ,,, uoc 1-rels-aau{1q6Tf ,, 1 ,00?gtT,lno-s lno-ras


lvz + (009T - dTq:) ) caps ',, uoc 1le1s-drq1r{6Tjr,, I ,oo78tr,1no-s lno.ras

elep-lndfno
utnlaf,
asned

0Z
(Z * dTqf,) ,dtqlq6r: ?nosTnd
(Z + aau{-:) ,aau1lq6r.r lnosTnd
(Z + eTltue:) ,aT)iuelqbT-r lnosTnd
(Z * d'IqT) ,dTr{1f aT lnosTnd
(z + aau){T) /aau{?JaT lnoslnd
(Z + aT>{upT) ,aT{uelfaT lnosTnd
drr{r' aou{-r, aT)iuel I a^ouras Tnd

dTqT' aau]iT / aTIueT'

ulnla:
[00st\09T] '6 punos
esla

f Tpue

E-aT)iuPT=eTliupT

(007T < aTIupT) ONV (g = o^.raslua"r.rnc)JTasTa

ueq? (00?T <

dTr{f

E -dTqr=drr{.r
) oNV (T = o^-rasluar.rnc) f

-F

?asJJoesea-rcap

u:n1e-r
f Tpua
[009t\0ST] /6 punos
asle

S+41{ueT=eT>{ueT

(009T > aI{ueT) ONV (9 = o^-aaslualrnc)JresTa

E+aau{l=eau{r

(009T > aau{jr) oNV (z = o^rasluel-rnc)l:resTe

E+dtq:=drr{.r
uaql (009T r d-Ir{r) ONV (T = oA,ragluo.rrnc)JT
fasJJoaseairour
ureuf, 0106

f Tpua

uTeu 0106

las]JoasEa-rcu-! qnso5

[00r?\09]'6 punos

hb

3: Robot Humanoid BRAT

serout s_out, i38400, [ "rightankle_start

24),131

con

", sdec ((rankle - 1500)

con " , sdec ((lhip - 1500) * 24\,131


[ " lefthip_start
serouE s_out, i38400, ["leftknee_sLart con " , sdec ((1knee - 1500) * 241,131
serout s_out, i38400, [ " leftankle-sEarE con ", sdec ((1ank1e - 15001 *
serout s_out, i38400,

24\,13)

wai t loop

gosub pulsemove Irank1e, rknee, rhip, 1ank1e, 1knee, Ihlp]

buttonB = in13
if (buttonB = 0) AND (prevB = 1) then

currentservo = 1
sound 9, [200\3800]
qoto main
endi f

prevB = buttonB
qoto waitloop

Gambar 3.15 Pemasangan sensorjarak Sharp GP2D12

Sebagai demo robot penghindar halangan menggunakan sensor jarak


infrared Sharp Q?2D12, jalankan program Brata2.bas berikut:

Brata2.bas:

;Program Sharp cP2D12 pada


con pl-O
con p8
con p7
con p6
con p5
con p4

righthip
rigiht.knee
rightankle
lefthip
leftknee
leftankle

true con I
fafse con 0

36

BRAT

LE

:3solf, rol qJlrd -rar{6Tq 'sdals

uaa/vr1eq

ur daaql

'saTJelsqo

[(0T * r-I) \0OT] ,6 punos


J TPUE
en.rl = lcalep
uaql (092 < fT) fT
f -Ipua

[0009\0E'00??\EZ'000E\0E]'6 punos
no1 6ut11eb s1 d:a11eqluaq1 (OLZ > lpq) fT

lEq / 9T

'sauT1 1e -rnor^Er{aq re66TJ1 01 sTr{1 asn s,1ati

u-Jpe

rrpea-r qnsoo

(T+ "rnor^Er{aq) = -rnor^pr{aq

fTpue

0 = rnoT^er{eq
uaril (9T = lnor^eqaq) JT

>l

uTeu

0 = 1ca1ap
00EZ asned

a^our qnsob

g = pueuuoc
0 = -rnor^er{aq
[00rr\0s] '6 punos
asnEd
0E
/6 punos
1096e\0El

0E asned

Ioorr\os]'6

punos

(0T )p,ror :en dural


a?.dq Je.^' relTTf
al^q -re^ fnor^qaq

l-Iq rE^ lcalap


p-ro1vl.

-re^

1Eq

pfo/vi -re^ .rT

af^q :e.1\ xx
ai^q .rp^ pueunuoc
000T asned

t0.0

,0.0

,0.0

,0.0

,0.0

,0.0

z x!ol!
T 1v\oT l
I luarra^our qnso6

,0.0

paads 'dTq1l:aT ' aaulf Jarl 'aT{ue1Ja-I 'dTr{1r{6rU'aau)tlr{6TU 'al)iup1r{6TE


a-re sluaunbfe eurlno-rqns ?ueue^ou ,aloNi

suoTS-tsod

lruI

OAEgSHS'IAVNS

1-Iu'J ldnffaluf
0 uo3 lfels-aTltuElJal

0 uoc l"re1s-aau{1JaT
0 uo) lrPts-dTr.{llaT

0 uoo l-rP1s-aT>{uelq6r-r
0 uoc 1.reas-aau>11q6t:
0 uoJ 1.rets-dtq3qbt:
9'99T uoJf aa-r6ap.zadsdels
'aa:6ap -red sdais ele-rqrTeJi

Bab 3: Robot Humanoid BRAT

if detect then
low 14
command=2
gosub move

command=11

for xx=1 to

;turn t.he yelfow LED on


;back up one step

;turn left two steps


2

gosub move

next

detect = fafse
input 14

el-

se

Low L2

;turn the yellow LED off


;

turn t.he red LED on

turn the red LED off

command=1
gosub move

input 12
f

endi

if

(behavi-our = 5) Lhen

low

13

command

gosub move

turn the green LED on

pause 2000
sound 9, [150\4400]
pause 50
sound 9, t50\44001
pause 50
sound 9, t150\39601
pause 50
sound 9, t50\39601
pause 50
sound 9, t250\34001
pause 2000

input 13
endif

,1itt1e whistle while you rest

lurn the green LED off

goto main
move:

if(command = 1) then
Walk Forward
giosub movement

gosub movement
gosub movement
gosub movement

elseif(command = 2)
gosub movement [
gosub movemenL |
gosub movement [

pause 200
;gosub movemenL

7.0,-20.0,-20.0, -'7.0, 20.0, 20.0,


.0, 7 .0, 20.0, 20.0,
-7.0, 20.0, 20.0, 7.0,-20.0,-20.0,
7 .0 , 20 .0, 20 .0, -7 .0, -20 .0, -20.0,

-7 .0, -20 .0, -20

gosub movement
sound 9, t50\44001

0.0, 0.0, 0.0,


0.0,-50.0,-90.0,
0.0, 32.0,-58.0,
[ 0.0,-11.0, '7.0,
0.0, 0.0, 0.0,

s00.01
500.01
500.01
s00.01

; Headbutt.
0.0, 0.0, 0.0, 500.0]
0.0,-50.0,-90.0, 500.01
0.0, 32.0,-58.0, 400.0]
0.0,-11.0, 7.0, 500.0]
0.0, 0.0, 0.0,500.01

pause 50
sound 9, [50\3960]
pause 50
sound 9, I50\39601
elseif(command = 11)
gosub
gosub
gosub
gosub

38

movement
movement
movement
movement

0.0,-35.0,-40.0, 0.0, 35.0, 37.0,500.01


0.0, 3s.0, 3'7.0, 0.0,-35.0,-40.0,s00.01
-L4.0, 35.0, 37.0, 20.0,-35.0,-40.0,500.01
-14.0, 35.0, 37.0, 20.0, 35.0, 37.0,s00.01

:.iiIO.L\1:e1s-aauI?JeT + (ee-r6apradsdals+sodaam{1}aT_

,paads>tT

JINIOJ,\ aau>[1]:eT

l
--l,paadsqr

[,NIOJ,\?]e1s-d1q1q6t: + (aa.r6ap-radsdals*soddTqlq6Tr)
trNIOJ\1jre1s-dIr{+}eT + (ae-r6ap-radsdals*soddTr{lleI_

J,NIOJ,\ dTr{1q5T,r

l
--^
l,poadsr{I

,INIOJ\dTqllaI I o^-lasq

,6 .e=p""o"31p
I6

.6=peadsl:

j 0. 0=peadsq-r
0=paadseT
I0.

.0=paadslT

r 0. 0=paadsT{I
paadse.z , Ipaads , a^ourlse6uoT , soda Txuelqbt:-1se 1 , sode
l{ue1qO., f p33}3r.o

qnsoo

paads{"r , Ipaads ,a^our?sa6uoT , sodaau11q61.r-lseT , sodeeu,{1r{6T,r] peadsla6


qnsoE
paadsq.r' I paads, e^ourl se6uo I, soddTr{1q6T-r-1 seT, soddrqlqE T,r ] paads? a6 qnso6
paadseT , Ipaads ,a^ourl sa6uoT , sodaT>{uElJaT-1seT , sodaT{uel]af paadsla6
I
qnso6

paads>i1'Ipaeds,e^ourfsa6uof,sodaau{1]:aT-lseT,sodaarqlJaTlpaadsla6 qnso6
paadsqT'Ipaads,a^ourlsa6uoT,soddlqlg:a1-iseT,soddTr{1faT]peads?a6 qnso6
1 16. gTTpeads) / (aa-roap.radsdals*anourlsa6uof
a^ourl sa6uo T, I sode TIuElq6t:-1 se 1 _ soda IXuelr{6T:
| ' sodaau:i1q6T:-f spT - sodeaur1lr{6rr
| ' soddTqlr{6T-r-1sET - soddTr{1r{6Tr
| ' sodaTIuel l:a I-1 sEf - soda 11ue1 g:a1
| ' sodaarr:i1g:aT-lseT - sodaau{lJaT

) = paads

l'sodd1q13eT*1seT-soddTq?laIllse6uoTta6 qnso6

uaql(0.0<>paads)JT
Ipaads
'soddTqll:aI 'sodaau{?JaT ,sodaT)tuplJaT , soddrq?r{6r-r, sodaau{?r{6T,r, sodef{uejqOr:l
?uaura^ou

'sodaT)iue?q6r.r

lpeads
sodeau{1q6rr ,soddfr{1r{6Tf , sodaT{uE?Ja1 , sodaatnllg:a1 , soddrql;:a1 I
?uauo^our

?eoTJ :e^ a^ourlsa6uoT

?eoTl jre^ paads

lEoTl: ,re^ peadse:

fpoTl: jre^ paadsl:


leoT] -re^ p""d:Tl

saurlno-rqns -rasn ppv .aurf sTr{1

1,\oTeq 6uTr{1^ue

EoII: -re^ soddrr{?r{Or:


leoT] le^ sodaT{uelfaT
leoTJ -rp^ sodaeu{lJaI
feof] .reA soddTr{?l:eT
'ureu /vloTaq pue srql a^oqe
lrpe o? paeu jra^au plnoqsj
u"Tn1a

jI

f Tpua
l fuouralour qnso6

to'oos'o'Er'o'E7'o'o'o'9r,o.gr,o.o

(6

Lt '0 'Ee '0' ,T- '0'0r-'0'sE-' 0' 0z )


'00E'0'Lt 'o'9t 'o'vT' 0' Le 'O 'ge '0'02 I

to '00E '0'
to

uorlTsod ?sau

pueunuoc) ITasTa

luaura^our qnso6
?uaua^our qnso6

Bab

3: Robot Humanoid BRAT


rightsknee\T0INT (rightkneepos*stepsperdegree)
rightknee-sEart\TOINT rkspeed,
I

leftankle\TOINT (-leftanklepos*stepsperdegree) +
feftankfe-start\'IOINT laspeed.
rightankle\TOINT (rightankfepos*stepsperdegree) +
ri ghtankle-s tart \TOINT raspeedl
;hservowait tlefthip,righthip,leftknee,rightknee,feftankle,rightanklel
I

idle var byte


finished var byte
junk var word
sensorloop

finished = true

gethservo lefthiP, junk, idle


if (NOT idl,e)then
finished=fa1se

endif
gethservo righEhip, junk, idle
if (NOT idle) then
finished=false
endi f
gethservo leftknee, junk, idle
if (NOT idle) then
finished=fa1se
endi f
rishtknee, junk, idle
:::n".t.ro

adin 0, ir
;if (ir > 210) then
; detect = true
; endi f
;

if

(NOT

finished) then sensorlooP

last-lefthippos = lefthj,Ppos
fast-leftkneepos = leftkneePos
last-feftanklepos = leftanklepos
last-righthippos = righthippos
last-rj-ghtkneepos = rightkneepos
last-rightanklepos = rightanklepos
return
one var float

two var float


three var fl-oat

four var float


five var float
si.x var float
getlongest Ione, two, three, four, five, six]
if(one<O.0)then
one=-1.0*one

f
if(two<0.0)then

endi

two=-1.0*two

f
if(three<0.0)then
three=-1 . 0*three
endi f
if(four<0.0)then
four=-1.0*four
endif

endi

40

LV

qxe z Ja?ataolap))e ueduescuad gI' JequeD

Jalauolala))e ueouap pJeog ?og lslauoy'l pqel


:r.le^\Bq Ip Ieqel ruedss rsprn6rJuol upDuep

IyUg loqoJ rp lnqesJel Josuas qel6uesed '1oqor eped relaruoJele))B


rosues uBderaued pqo)ueru {ntuD 'rur nlnq de16ua1ed q) 1p lpqlllp
ledep e{uoeprn otueC 'e{uyrseq ler{rl upp sp}e rp ruerDord up{uelef
u,rnle-T

IeT' rT cap]'0OrgtT,1no-s 1no-rasl


[000r\0T] '6 punosj
0T /:t
=:r
lXaU
(rellTl)dua?+.zT=-rr
6 01 0 = -ralTrl: -roJ
0=f,T
lXeU
(ralTTf)dua1 '6I uTpe
6 o1 0 = -relTrJ -rol:

Bab 3: Robot Humanoid BRAT

Buatlah program seperti Brata4.bas di bawah ini. Anda pasti terpana


dan terkejut dengan gerakannya yang seperti manusia:

Brata4.bas:

Program Accelerometer pada BRAT


;Robot bi.sa bangun dan berdiri
righthip
con p10
rightknee con p8
rightankle
con p7
lefthip
con p6
leftknee
con p5
leftankle
con p4
;

true con 1
false con 0
;caLibrate steps per degree.

stepsperdegree fcon 166. 6

Interrupt. init

;
ENABLEHSERVO

Init posit.ions
;Note, movement subroutine arguments are
Rightankle, Ri grhtknee, Ri ghthip, Lef tankle, Lef tknee, Lef thj-p, speed
gosub movement [ 0.0, 0.0, 0.0. 0.0. 0.0, 0.0, 0.0]
;

;1ow

;low

1
2

pause 1000
command var byte
xx var word
ir var word
lastir var word
AMx var word
AMy var word
prevAMx var word
prevAMy var word
bat var word
detect var bit
behaviour var byte
filter var byte
temp var word(10)

main

if (behaviour = 16) then


behavi.our = 0
endi f
adin 16. bat

gosub readAMx
gosub readAMy
gosub readir
;

Accelerometer readings

;If x is high, then the robot it on its left side


;ff x is 1ow, then the robot it on its right side

42

ev

f rpua

e3uanbaslsef qnso6

uaql (g = .rnor^eqoq)
seurrl 1e :nor^eqaq

-re65r-21

fT

f Tpue

o? sTr{1 asn s,1eri (T+ -rnor^eqaq) = fnor^er{aq


o qsT pe-r aql u]n1 I
zT fndur
ff

uo

GE.I

paf aql

a^ou qnso6

u-rn1

.'

T=pueuilroc

ZI

.lv\OT

asla
71 qndut

]fo oET ruolfa^ aq1 urnlt

esTel: =

1ca1ap
lXaU
qnso6

a.^'oul

z o1 l=xx

-roJ

sdals o/r!1 lJeT uJnlj TT=pueuuloJ


dals auo dn {ceqj
uo Gg.I /'toTTa^ aql u-rn1

rasoTs jro] r{c1rd laq6Tr{ ,sda?s uee/llleq ur daaqj

a^ou qnso6
z=pueuuoJ

,l

,T roT
uar{1 13a1ep fr

'salcPlsqo
[(0I * rT)\00T],6 punos
lTpue
onrl = ?co?ap
uaql (092 < fT) fT
f Tpua

IoooE\oE'oorr\92'ooo9\09] /6 punos
/1 oT 6ur??a6 sr
(OLZ > 1eq) f T
^-ral1Eqiuaql
f Tpua
f Tpua

a^ou qnso6

idn ?aE i^{s eql 1e 6uT.re1s a-r,no^ uaql

g = puEuluoc
(06t > 1{NV) ]TasTa

aaour qnsob

idn ?45 ;aceg: :nod uo leIl:

a"r , no^

L=

pueuuroC

ueql (009 < 1{IiIV) fI


rl6gpea: qnso6
002 asned
f Tpua
a^our qnso6

eT = pueuuoc

i-ra^oTTo-rr (0Lt > ).I^IY) Jrasla


a^our qns06

tT =

pueuuroJ

]a^oTlo-r I ueql (089 < xwv) lT

44gpea: qnso6

uaq? (08 >

xInIV)

uo (0t9 <

969 esned

^wv)

Eo (ott > xr{v) lro (099 < xwv) l:r

{ceq slr uo 1T loqo.r aq1 uaql ,^lof sT l:Ii


luo-r] s1T uo 1r loqojr aq1 uaql ,r{6Tq sr ^ l:f j
^

eu

Bab 3: Robot Humanoid BRAT

goto main
move:

if(command = 1) then
Walk Forward
gosub
gosub
gosub
gosub

movement
movement
movement
movement

[ 7.0,-20.0,-20.0, -'7.0, 20.0, 20.0,


[ -7 -0, -20.0,-20.0, 7 .0, 20.0, 20.0,
[ -7 .0, 20.0, 20.0, 7 .0,-20.0,-20.0,
['1.0, 20.0, 20.0, -1.0,-20.0,-20.0,

movement
movement
movement
movement

L -7.0,-20.0,-20.0,

500.0]
500.0]
500.0]
500.0]

elseif(command = 2)
Walk Backwards
gosub
gosub
gosub
gosub

7.0, 20.0, 20.0, 500.01


[ '7.0,-20.0,-20.0, -7.0, 20.0, 20.0, 500.0]
[ 'l .0, 20 .0, 20 .0, -'7 .0, -20.0, -20.0, 500 - 0]
[ -7 .0 , 20.0, 20 .0, 'l .0, -20.0, -20.0, 500.0]

elseif(command = 3)

0.0,

gosub movements [

sound 9, t50\44001
pause 50
sound 9, t50\44001
pause 50
sound 9, [50\4400]
elseif(command = 6)

Headbutt

gosub movemenE
gosub movement
gosub movement

pause 200
;gosub movement
gosub movement

0.0,

0.0,

0.0, 0.0, 0.0,


0.0,-s0.0,-90.0,
0 . 0 , 32 . 0 , - 5 8 . 0 ,
t 0.0,-LL.o, 7.0,
0.0, 0.0, 0.0,

sound 9, t50\44001
pause 50
sound 9, t50\39601
pause 50
sound 9, t50\39601
elseif(command = 11)

'Iurn LeIt

gosub
gosub
gosub
gosub
gosub
gosub

elseif(command = 15)
Surprise I
gosub movement [
gosub movement [

elseif(command =

return

0.0, 500.0]

0.0, 0.0, 0.0,500.01


0.0,-50.0,-90.0, s00.0l
0.0, 32 .0,- 5I .0, 400.0l
0.0,-11.0, 7.0,500.01
0.0, 0.0, 0.0,500.01

0.0,-45.0,-45.0,
0.0, 0.0, 0.0,

0.0,-45.0,-45.0, 350.0]
0.0, 0.0, 0.0, 500.0]

9)

gosub movement [

endi

0.0,

0.0,-35.0,-40.0, 0.0, 3s.0, 31.0,500.01


0.0, 35.0, 37.0, 0.0,-35.0,-40.0,s00.01
-L4.O, 35.0, 37.0, 20.0,-35.0,-40.0,500.01
-14.0, 3s.0, 37.0, 20.0, 35.0, 3'7.0,s00.01
20.0, 35.0, 3'7.0,-1-4.0, 35.0, 37.0.500.01
20.0,-35.0,-40.0,-1-4.0, 3s.0, 37.0,500.01

movement
movement
movement
movement
movement
movement

Rest Position

0.0,

0.0, 45.0, 45.0, 0.0, 45.0, 45.0, 500.0]

;Should never need to edit anything below this line. Add user subroutines
above this and below main.

lefthippos var float

44

9V

:
:
aTpT

eslel:=paqsruTli

uaql (aTpT &oN) lT


'{un! 'd-rqf }aI o^-rasqf a6
en-Il = paqsTurl

dool-rosuas
.ze^ {un[

p.ro.({i

a1^q .rE^ paqsruT]


oS.dq -rE^ aTpT

leT{ue?r{6T:'aT)iue1JeT'aau{1q6Tr'aou}{lJaT'dTq?r{6T.r'dTrilleTl 1Te/v\o^.rasql
Ipaedse] JNIOJ,\1Je1s-aT)iue1r{6T,r

+ ( aa.r6ap.radsdal s + soda T)tuE1r{6Tf ) J,NIoJ, \ a TluP?r{6 T:


l'peadsel JNfoJ\1.re?s-eT{uetlaT
+ (aar6apredsdals+sodaT{uell:aT-) J,NIOJ,\aT{uelfaT
l'paedsl: J,Nrotr\lrP1s-eau{?q6T.r
+ (aarEap.redsdals+sodaauilqbt:1 J,NIOJ,\aau{1q6T.r
| 'peads>tT
J,NIO&\l-rets-aau{llaT + (aaf6ap-radsdafs+sodaau)iffaT-) II/NIoJ,\aeu{?]:aT
| 'Paadsq:
&NIOJ,\?rp1s-d1q1q6r: + (aa.r6apf,adsdals+soddTqlqoTr) J,NIOJ,\dTqlr{6T-z
| 'paads{t
&NIOJ,\1.re1s-d-tq?laT + (aar5ap.radsdals+soddTqllaT-),tNIoJ,\dTr.I]leTl

o^rasq

f Tpuo
10. o=paadsp.r
l0 .0=paadsl_r
10. o=paadsq.r

,0. 0=paadspT

0'O=paadsqT._=

0.0=paads{I

paadse.r ' Ipaads 'a^ourlsabuoT ' sodaT)tuelq5r:-1 seT 'sodaT>{up1q6T.r ] paedsle6

qnso6

paads{.r' Ipeads'a^ourlsabuoT 'sodaeu>tAr{6r.r-]sET 'sodaeu}i?LI6T-rl paadslab


qnso6

paadsqr ' Ipaads 'a^ourisa6uoT ' soddTqlq5Tr-1seT ' soddTq?q6r] I paads1a6 qnso6
paadsel ' I paads 'a^our?sa6uoT 'sodaT{ue1 JaT-1 seT 'sodaTlue?J aT ] paadslao
qnsob
qnso6
qnso6

paads{1'Ipaeds'e^ourlsa6uoT'sodaau{tJaT-1seT'sodaau){lfeI]paads1a6
paedsqT'Ipeads'a^oulsabuoT'soddTr{lfaT-?seT'soddTqlfaT]paads?a6
( (O' OZlpeads) / (aar6apradsdals+a^ourlsa6uoT)
a^ourf sa6uo T' I soda T{ue?i{5 Tr-? seT - soda T1uelr{bT "r

) = paads

| ' sodeaullqET]-fseT - sodeeu>J1q6r:


| ' soddtqrUDTr-1 sET - soddrT{1q6'ljr
| ' sodalluelleT-?seT - sodaT{ue?JoI
I ' sodaau>{11:aI-?seT - sodeau:1?J aT

l'soddlqgyaT-1seT-soddTqllaTl Ssa6uoT?e6 qnso6

ueql (0'O<>paeds) f -r
Ipaeds

'soddTql]eT 'sodaeu)t1f at 'sodal{uelJeT 'soddrr{1q6r.r 'sodaeu{1q6'f l 'sodaT1ue?q5T

.11

?uaruaAoru
'

sodaT{uefq6r.r ' sodaau{lt{6r-z ' soddTqlq6rr ' sodaT{ue1 l:eT ' sodaau>119:a1

'

lpaads

soddtqlfaT l
lUaUrA^Olu

leoT] -re^ a^ourlsa6uoT


feoT] .re^ paads
lEoT] .re^ peadse.r
leoT] .r"^ paadst.I
?eoTl: Je/\ paedsq.r
leoT]

.:re^

p""d::J

?eoTl :e.^' soddaqlqoT]


leoT; .rp^ sodaT)iuplJaT
lPoTl .ze^ sodaeu{1JeT

Bab 3: Robot Humanoid BRAT


endi

gethservo righE.hip, junk, idle

if

(NOT

endi

idle) then
finished=false

gethservo leftknee, junk, idle

if

idle) tshen
finished=false
endif
gethservo right.knee, junk, idle
if (NOT idle) then
finished=fa1se
endi f
gethservo leftankle, junk, idle
if (NOT idle) then
finished=fa1se
endif
geLhservo leftankle, junk, idle
if (NOT idle) then
finished=faIse
endif
;add sensor handling code here
(NOT

;adin 0, ir
;if (j-r > 210) then
; deEect = true
; endi f
if

(NOT

finished) then sensorlooP

last-lefthippos = lefthippos
last-leftkneepos = leftkneepos
last-leftanklepos = leftanklepos
Iast-righthippos = righthippos
last-rightkneepos = rightkneepos
last-rightanklepos = rightanklepos
return
one var floats
tvro var float

three var float


four var floaE
five var float
six var float
getlongest Ione, two, tshree, four, five, six]
if(one<0.0)then
one=-1.0*one
endi

if(two<0.0)Ehen
tswo=-l-.0*two

endif

if (one<three)t.hen
one=three

f
if (one<four) then
one= four
endif
if (one<five) then

endi

one=five

f
if (one<six) then

endi

one=six

46

LV

1005e\0El

'5

punos

0g esnPd

t008t\E?l '6 punos

Et asned

too??\orl '6 punos


iasr.rd.rns juaql ((002-

>

(fT - .rrlseT)) GNv (009- < (irT -

e^ou qnso6
ET = pueuuoc
-r-F?seI) )) f T

0T asned
-rT ,6T urpe
009 01 T = xx -roJ

Jfo clsT uaa"r6 eq3 u-rn1 i

T ?nduT

t00rE\0Ezl '6 punos

0E asned
1096t\091 '6 plmos

0g asnEd

[096\0ET] '6 punos

0s esned

toor?\o9l'6

lSa-Z nO^ aTTr{r\ aT?srrt\

aTl1-lT,

punos

0E asned
[00?7\0ET] ,6 punos
l}(aU

r-F = f,TlseT

f Tpua

gt asnPd
[00r?\0L] '6 punos
ge asned
tooSt\oEl'6 punos
ge asned

t005t\0El '6 punos


09 asned
t008t\9rl '6 punos
gE asned

t00??\0rl '6 punos


aaou: qnso6

uaql

(002-

>

ET = pueunuoc
(-rr - rTtseT) ) arcd (009- < (-zT - ,rrlseT))) lT
0T asned
-rr ,6T urpe
00E

01 T = xx

Te^xeu+ (lsa6uoT/ (socldrau-soCIpIo)


TE1\xpru+

-zo]

) urnla.r

f Tpua
(1sa6uoT/ (sodpTo-sodaau) ) u-rn?a.r
uaql ( sodpTo<sodlrau) f T
IT

e^xeu' ? sa6uo 1' sodpl o, sod/"reu ] paads la6


?eoTJ -re^ Te^xeu

leoTJ Je/1 lsa6uoT


leoTJ te^ sodpTo
?EoTJ

:el

sodirrau

auo u-rn1a.I
JTPUA

Bab 3: Robot Humanoid BRAT


pause 35
sound 9, ls0\38001
pause 35
sound 9, [70\4300]
pause 35

endif
lastir

next

ir

return
readir
for filter = 0 Eo 9
adin 19, temp(filter)

next

ir=0
for filter = 0 to
ir=ir+temp(filter)

next

ir=ir/10
;sound 9, tl-0\40001
iserout s-out, i38400, [dec ir ,13]

return

readAMx

for filter = 0 to 9
adin 18, temp(fifter)
next.

AMx=0

for filter = 0 to 9
AMx=AMx+temp(filter)
next

AI"Ix=AIvIx/10
;sound 9, [10\4000]
;serout s-out, i38400, ldec ir
return

, ],31

:::*'
Lihatlah gerakan yang ditunjukkan robot tersebut. Tampilan videonya
dapat dilihat pada CD pelengkap buku.

Latihan
Cobalah jalankan program demo Bot Board
Basic Atom Pro sebagai berikut:

48

II dengan

module

6V

,d

8d
0d

?d

trioT

.qoT
^toT

esTa

qETr{

Bd r{6Tr{

0d

qETT{

uaql(T=oJrg.uu)lT
z,trr8'uu = cpaT

TJIE'uu = SpeT
= meT
O,T,Ttr'UU

6d

r^oT

f lpua

tooor\orl '6d punos


uar{1 (dn-NO,I,IOS = Clnq-^ard) aNV

NOJ,&nA

0=uu

(NtvtOC-NO,I&nS

6d

uarll (dn

= Jlnq) l-I
f rpua

1{oT

t000T\0Tl '6d punos


T-uu=119
= alnq) ]T

= slnq-^a.zd) aNV

(N/VIOO-NO,I&OS

6d toT

f Ipua

toogz\El '6d punos


T+uu=uu
= vlnq)

uar{1 (dO-NO,t,tOg = V?nq-^ard) aNv

(N!}OO-NOJJOS

l-F

ItT',,,,'9\dura1 gcap],009LqT,,IOO-S lno.res

dural'9T uTp
:

uTeu

sCgT aT66rM,
u

0
0
0
0
n

uq

= Jlnq
= Ellnq
= V?nq
= JPaT
= sDeT

0=VpaT

r uo,
0 uoJ

do-No.L&na
NMOC_NOJ&OA

fe^

pf,o/vr

1Tq fe^
1Tq fE^
1Tq rp^

durel

Jlnq-Ae-rd
81nq-^a.zd

Vlnq-^a-rd

lTq fe^ Jlnq


l-Iq fE^ Elnq
lTq fE^ Vlnq
lTq fP^
lTq fe^

JpaT
EpeT

1Tq fe^ vpaT

e1^q .re^ uu

Bab 3: Robot Humanoid BRAT

endif
if(nn.BITl=1)Lhen
high plhigh p5
else
1ow p1

low p5
endif
if(nn.BIT2=1)then
hish p2
high p10
hish p6
else
Iow p2

1ow p10

low p5
endif
if(nn.BIT3=1)Ehen
hish p3
hish p7
high p11
else

1ow p3

Iow p7

endif
pause

1ow p11

50

prev-butA = butA
prev_but.B = but.B
prev-butc = buEC
gosub buttson-led-control
goto main

'subroutine to read Ehe buttons and control Ehe LEDS. Button states are
put in
'variables butA, butB, and butc. LED sEates are read from variables
ledA, 1edB,
'and 1edc.
button-1ed_conErol :
'Make P4-P6 inputs to read butsLons. This turns the LEDS off briefly
input p12
input p13
input p14
butA = IN12
butB = IN13
butC = IN14
'Outputs LOW to each LED Ehat should be on
ifledA=1then
Iow p12

endif
ifledB=1then

1ow p13

endi.f

ifLedC=1then

f
return
endi

50

1ow p14

L9

'rl.uelp

qrqet lnqasrel loqor uerrel ue{Ere6 re6e ue6up} uep qnqn} pppd
olres edereqeq uelqequeueu nlrad epuy 'laqp{ ueleun66uau
er{ueq eltf resaq qrqel ue{rreqrp 6uef uerelrued lurod eua'tpl )elJH
rJpp pJBns Josues ue1eun66uer.u BpuV ueldereqgq '6uodrep uerJel
ueln>lelel.U e,{ulesnu 'ur16untu tnql'Uales ue>1ere6 ueDuap er{uqn1r
-6uetu upp ue{ureurrp 6uer{ >lrsnur uerye6uepueu: ndtueu snJpr.{
rur loqod 'unqel derles ue{eperp rur seluoy '(lSUy) prseuopul rues
loqo5 seluoy Inlun loqor rpefueu 1uI IVdg loqor qeluelEuequley 'Z

lrdafueur reddrr6

uelera6 uep 'lelnrueru raddrr6 uelereE 'unrn1-1reu ue6uel ueqereD


'unrn1-1reu Jolenllp uelere6 'aseq uerelnd nle{ ,uelere6 nquns
g ue6uap loqor ue6ual reua6ueut seLleqp up{B rur ueledurase{ pppd
'loqor rBlrles 1p >lelqo-Iafqo pqueEuecu {n}un ue>leun6rp loqor ue6uel

loqou uB6uo'I

'proueurnq loqoJ lpnqtuatu urelep Eurlued le6ues efursrsod rnqel


-e6uatu Inlun olres uelorluoEuad uep qr66uer reddrr6 r6o1ou1e1 ueDuep
loqoJ ue6uay ueesen6ue6 'proupunq loqor rselrlde Inlun etuelnral
'1oqor eped ueleunBrp l1e16ur:es 6uer{ uer6eq n}es qelps qplepe ue6ua1

uBnlnqepuod

uuletag nquns g pqoa ue6ue1

Bab 4: Lengan Robot 5 Sumbu Gerakan

Gambar 4.1 Lengan Robot dengan 5 Sumbu Gerakan

Aplikasi ini dapat dibangun dengan menggunakan:

Robotic Arm Mechanic


Servo Controller DSR-08

3 pcs Motor Servo GWS S04BB


3 pcs Motor Servo Hitec HS-422
1 pcs Gripper
1 pcs Modul USB to serial DU-232 (untuk PC non-serial)
1 pcs Modul DST-51 (untuk aplikasi stand alone)

Sebuah motor servo GWS S04BB yang memiliki torsi 13 kg.cm


berfungsi untuk mengatur gerakan base dari lengan robot secara
memutar.

54

99

'd\)) qerp aI lere6raq snrpq upupl ISIS lp o^res


rolou '/y\) qere eI lere6req lrl>l Isls Ip o^res Jolour elrg .er.ues 6uE^
lnpns uellnser ueEuep upuply\plraq 6uer{ qere ue6uep uplnlelrp snJer_l
rur onJes Joloru enpe{ ue>1ere6 'uedepeqraq 6uer{ el{ursrsod ueDueq
unrnl-4leN

ropnl\v ue\eDD '? requeD

PJI
TU

'rolpnl{B ueuel upp rrrl Isls Ip up{Ie}eltp 6ue,( ggygg


SIAD o^Jes Joloru qenq pnp ueleunDrp 'nlr InluF) 'rrrpuas n1r ue6ue1 1ru
-p{au rrep upqeq ledepueru e6nf 1a[qo 1e16ue6uau urples puarp>l ]ereq
uelera6 uelednJer.! unJn} upp llpu >ln}un Jo}pn}Ie uB{eJeD

6ur1ed 6uer{

Jelntuaw as2g ue\eraD z'? JequreD

Bab 4: Lengan Robot 5 Sumbu Gerakan


.:r;il.

ii#:'
&i,

m:
ffir

im

ir

Gambar 4.4 Gerakan Tangan Naik-Turun

Gerakan tangan tidak membutuhkan torsi sebesar aktuator sehingga


dapat digunakan HS-422 yang memiliki torsi 4.1 kg.cm. Beban dari
motor servo ini adalah tangan, gripper, dua buah motor servo HS-422,
dan objek yang diambil apabila lengan telah memperoleh objek yang
dituju.
lt
.:..r,,

#,
lfl

I
fi

[0

*ri

ili
*#r

ffi,

ffi
,*s1

f;
Gambar 4.5 Gerakan Nlemutar Gripper

$.

!;

II,

Untuk menyesuaikan posisi dengan objek yang dituju terdapat sebuah


motor servo HS-422 yang berfungsi memutar posisi gripper hingga
posisinya sesuai dengan kondisi objek,
Setelah objek diperoleh, lengan robot akan melakukan gerakan mencengkeram dengan merapatkan gripper. Hal ini dilakukan dengan
memutar sebuah motor servo HS-422 yang terhubung pada bagian ini
sehingga gripper bergerak merapat atau merenggang.

I
I

I._

56

ii;

i',

L9

'lerJas

3{ gsD rrep reuenuo>l rpDpqes z6z-Dq Inpow uplpunErp tedep lerJes


Uod rlrlrluetu leprl 6ue,{ 34 {n}uD "IIJ eI Z6Z35 repeluol rdelEualrp
qe1a1 6uef ZeZ-q) Iprres leqe{ uplqn}nqp 34 ue6uep rselrlde In}uD
'90-dSC IJep IdyD al uelDunqnqp
Duns6uel ledep e66urqes JUVD uod r>lrlrueu IE-ISCI Inpow 'lg
-ISq relorluoloD{rur rnlpleu euole pup}s undnBtu )d rnleleur ue{nlplrp
ledep rur loqoJ ue6uel rlppua>l saso.rd p^\qpq lpllrlrel L'V reqrileD pppd

i
$

pqoA ue6ua1 nepuay L'? requeD

80-uso

./' / ,r'

,,,

[;;]

'J_dyD pod rnleleu lprJes prp)es uplrurrrlrp 6ue{ qeluuad-qelurrad


rnlpletu qppnu ue6uap uplnlplrp tpdpp olres Jolou uelera6 seso.rd
'rur lnpotu efuepe ue6uaq 'luapuadepu! pJpDes olJes ro]otu qpnq g upy
-rlepue6uau Inlun upndr.uerual Dlrlrtuetu 6ue{ gg-gsq Inpow uen}upq
ue6uep up{nyplrp }nqesJe} olres ro}otu tupuael ue11ere66ueu In}uD
6ue 6 6ue ;a61 uep

7e

deta61

nddltg ue1eoD g' b re queD

Bab

4: Lengan Robot 5 Sumbu Gerakan

Gambar 4.8 Modul USB to 232 Conoerter DA-232


vcc

JPl

II

rh----

i 5-----.pe| .P+

CoNNECTOR

5P I

o ooo
3v3our 9 99; rc
'np
USBDM
RI$

usoP

cT$

DR'
RST@T*
NN

DS*
ocD*

., T^.
LED

Rt*

.o

",

220

*l!

PJO

Gambar 4.9 Diagram skematik Modul usB to 232 Conoerter DU-232

58
I

69

'rJpq uerPnlue>l IP srlpr.uolo upDual


Iere66ued rsp>{rlde }enqr.ueu up>lp BpuV elne{ eun6req uelp 6upl{
uplple) re6eqas uedursrp ledep loqoJ ue6ual nqurns rsrpuol snsJel
1o1o1ord elep e66urqes loqor ue6uel nquns-nquns upllere66uau uep
BS-USq 1UyD aI uplturJr>1p e6nf tnqasret ue>11rdtue1rp 6ue,{ Iolo}ord

ranortuo)
rErya}| fuE^

oarag

)d

ueqnsz-qlp 6ueft

ep1 p4otord OI'? requeD

lo:,Flord

renlel 6uert elep 1o1o1ord rolluor.uau ledep


e6n[ epuy '1oqo: ue6ual nquns uelera6-uelera6 qepnuradrue(u ureles
'esnoru rsrsod rese6-rase66uaur ueEuep e{ueq ueln{elrp ledep rur }oqoJ
ue6uel rJpp nquns dBrles uelere6 'JelloJluo) olres 36 uer6or6 ueBuaq
'{ooqa}ou np}p )d rnlplaru Iensrn eJe)es rur ue6ual ue1
-rlepua6uau ledep ppuy '80-USe Inpour 1UyD Uod rnlplew 'relloJluo)
orues re6eqes rs6uqraq 6ueri gg-gsq Inpour rnlpleur )d ue>leun66ueu:
ledep Iur loqor ue6ual 'er{uunleqes up{splefip 6ue[ rpedeg
ue>11era6rp

Cd ueleun66uary loqou ue6ua-l lero66ue6 lsellldv

Bab 4: Lengan Robot 5 Sumbu Gerakan

Pengaturan sudut servo dilakukan dengan menggeser-geser posisi


sakelar geser dari masing-masing servo yang ada pada tampilan pC
Servo Controller. Sedangkan kecepatan diatur dengan memberikan nilai
pada field di bawah sakelar geser dengan range 728-255. pada bagian
kanan, Anda juga dapat mengisikan nilai sudut servo secara manuar.

Base $eruo.

Sarvo, :

$err*oPotitisn.
S+rv'o"SpeeU.

$- ?s5

J]

spGec:1'

PiE , ;f*"*
:'::- ...,6fl...,,: '
l1*1-Y::1-:+*i. .*:"1-tYl*r

Actuater: SErvCI

SEnre Pseitis*

$snro $peed

Sdtmq
I
- .-.---- - -t:,-- --.-.^-i

H*nd,$*nqo.,

$arur,F**itiolt
Senrs.Spe*d:

SentBata::
lData senl : ]E
l^.

1 01 00

0'l 04 01

lll

07 00

t
11

FlecvDdar

Gambar 4.11 Pengaturan Kecepatan Seroo

Berikut ini adalah listing program PC Servo Controller yang dibuat


dengan menggunakan Delphi.

pcger/o.pas:

/ /Crealue by: ,Januar Susanto


/ /DELTA ELECTRONIC 2OIO

uni-t Unitl;
interface
uses

Windows, Messag.es, Sysutits, Variant.s, Classes, Graphics, Controfs, Forms,


Dialogs, SEdCtrls, CPort, Comctrls, Vrspinner, VrControIs, Vrcauge,

VrSlider;

type
TForml = class(TForm)

ComPorE.l: TcomPorti

ButEonsetting : TButton;
But.t.onconnect : TButton;
VrSliderBase : TVrSlider;
LaDe.L1 : ',I'LJabeI ;

Label2:

60

Tlabef;

,,,

T9

,pua

{ suorlP-rPTcep sTIqnd }
3TTqnd
{ suoTle.rETcap a1E^r-rd )

elp1\r.rd

j (-ra5e1ul :lunoc rfsa[qoJ :-rapuas).rer{3xuT1-rodluoJ a"rnpeco-rd


i (AJetqoi :-rapuas) Ic-ITJTuo?lng a-rnpe)o-rd
1(-za6a?uI :I /X lelelSlJTqSJ :tlTqS
juollnEasnoI^IJ :uol1nEI j?JetqoJi :.repuas) drlasnohldr-roraprTS.rA a.rnpaco-rd

juollngasnoldJ : uo1lnE l13a lqoll

l(-ra6a1ul :I 'X iale?SllTqS[ :1fTr{S

:.repuas ) dnasnohl-radr:e.raprTS-rA a-rnpaco-rd

I (,za6e1uI :^ /X jelelSllTr{S,t :1f Tr{S


luollngesnol^I& :uo11ng llca[qoJ, :-repuas)doasnohJpueH.rap-ITS.rA a-rnpaco]d
,1

(1ca

[qoJ

-repuas ) a6uer{SlrpEpaadsdr.r.) a-rnparo,rd

j (1Je tqOJ, :.rapues ) aoupqolTpgpeads.radT-rg a-rnpaJo-rd


j ( ?ca tqoJ : .rapuas abupqcl rpEpueHpaads e.rnpacord
j (-re6afuI :i 'X jalelSllTqSJ ):1fTr.IS iuollngesnoNJ, :uot?nE
l 1 ca !qO,! : .rapuas ) dna snowrolenl rv-rap r T S]A a-rnpa 3o,rd
j (1ca[qoJ :"rapuas) a6uer{JlrpEpaods]olen1cv
a-znpacojrd
I ( lca [qO& : "rapuas ) alear3u.rod a"rnpaco.rd
j (1ca tqofi :.rapues
) aoueqJl'Fpgpaedsoseg a.rnpaco-rd
j (]e6aluI :l 'X jalelSlfTI{SJ :tlTqS

iuolln8asnol^IJ, : uo??ng 11ca [qOJ : -repuos ) dflasno]nlasEg-rapTTS.rA a-rnpacold

j (lJatqoJ :-ropuas) {rrTJlcauuoJuolln8 a.rnpaso-rd


i (3cetqoJ, :_repues) )tcrTD6uT31asuo11ng e-rnpeco-rd
I oual^IJ : oIuaI^IAcaE
JTaqe-I& :gZTaqerl
j

jTaqel& tlzlaqerl
uollngJ : Tuol?nE
jTaqeTJ
r

: EZTaqeT

lTpS[

f,1TpE

JTaqe-IJ tzzlaqel

11TpE,t : lrpgpeads
i
j
j

Teqerlfi : TeTaqeT

1TpS,I : unNo^.ras

1lTpEI : lapEpeadsdr-re)

]aprTs-r^Jr : dr-r5.rapr Ts.r^


j TaqeT& :
0 ZTaqerI
I TeqerIJ : 6TToqeT
tTeqET&:gTTaqeT

i
1

jTeqeT[ : LTTaqel
lTpEJ : lrpgpeads.radr.re

jrapr TS.rAJ, : .radr.rc.T ap-I T s.rA


i Taqerl[ : gTTeqeT

iTaqeTJ:ETTaqpT
Taqerl& : rTTaqT
TeqeTJ : ETTaqEl
I

11TpE,t : lrpgpueHpaads

-raprTS-rAJr : pueH.raprTS-rA
zTTaqp.I

Taqerl& :0TTaqET

:
:

TaqelI

jTaqETJ
i

TTTaqeT

jTaqelJ:61aqeT

ouaw& : oural^I1uas

ileqeTJJ:gTaqET
t-FpEJ : I rpgpaadSf,olenlrV
1
TaqeTJ : LTaqerl

.rTaqelJ :gTeqerl

iTeqET& : gTaqeT
-rapr TS-rAJ :,ro1en? Jv-rapr IS-rA
i Ieqe.I& : ?Taqerl

riTpSJ :lrpEpaedSaseE

lTaqe.IJ : tTaqel

Bab 4: Lengan Robot 5 Sumbu Gerakan

var

Forml: TForml;
posisi_servo: string;

, SN, L,NU, P: byEe;


KS_B , KS-A, KS-H , KS-GR , KS-G : bYtE ;

header, Df , DN, Sf

Chk,Cksum: byte;

byte-count : word;

implemenLation

{Sn *.dfm}
procedure TForml.ButtonsettingClick(Sender:

TObject)

procedure TForml.Buttonconnectclick(Sender: TObject)

ComPort I . ShowsetupDialog

end;

if ComPortl.Connected then
begin

ComPortl . CIose;

Buttonconnect. Caption : =' Connect'

end

else

begin

Try ComPortl.Open; Except


la6,.i

exit;
end;
end;

Buttonconnect. . Captj-on:

end;

if ComPortl.Connected

'Disconnect

'

E.hen

begin

ComPortl . abortAllAsl'nc ;
ComPortl . Cl-earBuf f er ( true, true ) ;
end;

end;

procedure TForml.VrSliderBaseMouseup(Sender: TObject; Button: TMouseButton;

Shift: Tshiftstate;

var

X, Y: Integer);

Dc.hl,r^.

chk. =n .
header:=g1E;
Chk : =Chk+header;

nr.=(11.

Chk: =Chk+DI;
p11;

=901;

Chk: =Chk+DN;
51; =900;
Chk: =Chk+SI;
gry; =901,;

Chk: =Chk+SN;
tr; =$04;
Chk: =Chk+L;
P; =$01;

1111;

=901;

PS : =VrSliderBase . Pos

Chk: =Chk+P

Chk : =Chk+NU;

62

ition

e9
j

T+{r{J= : {qJ

ir0s=:rr

INS+{qC= : )iqc
rT0S=:NS
j IS+rtr{J=: }tr{J
j
00$=: rS
jNO+{r{J=: {qJ
1

T0$=:No

rc+{qJ= : Ir{J

l TIS=: fG
i -reppaq+{qJ= : Ir{J
lgT$=: _rapearl

r0=:IqJ

ur6aq
ip.Tott:
.l

pJolv\

lunoc

.l6uTr1s : 11s

l al^q: sd
.TE.1\
i(ra6a?uI :I /x le1e1s1]Tr{sI :lfTIIS iuol?ngesnow& :uo11n8
I 1ce

qOJ

tqoJ

: -aapuas ) dnasno,.If,olpn33Y-rapT TS.IA - Tur.rog& a.anpaoold

jpua
J(

13e

?xa[' 1 Tpgpaeds]olen1cv

1uIoJ.r1S -

EE

Z= : V-SX

uT6aq

-repuas ) e6upr{J? TpEpaadslosenlc\I. Turrod& alnpeco-zd

lpua
I ( ?xaJ,' 1 TpEpaadsdrre ) ?uIoJ-r1S- E E Z= : e-Sy
, ( lxail' 1 TpEpaadsradT.r9 ) lulod,.rf S - E S Z = : EO-SX
i ( txeJ,' 1 TpSpueHpaads ) 3uroJ,-r1 S - S E Z= : H-SX
lTpEpaeds-rolen1cv) luroJl.Ils - s E z= : v-sx

.i ( ?xa&'

I (1xe[' lTpgpaadsaseg) 1uJoJ,-Ils-992=

S-S)I

j -reaT3 - ouraw^cau
j -reaTJ - oural{?uas

J ( 1ca

uT6eq

(lJacqo& :-rapues) e?ea"r3uLrod. rur_rod& arnpaco-rd

jpua
, ( 1xa&' ?Tpspeadseseg) luloJ-rls- EEZ= : 8-Sy
ur6aq
!qOJ, : ]apuas ) ebuer{J3 TpEpaedsaseg . Tur"roJd, a-rnpaco.rd
(

(Z,uns{c)xoHoJ,?uI+,,

jpue
(Z,g-SX)xaHoJ,lul

+ , , + ( z 'sd ) xaHoJ,luJ+
,+(z'rud)xaHo&lul+, ,+(z,d)xeHo&1ul+, ,+(2,1)xeHo&1uJ+, ,+(Z,NS)xaHoJlul+
,,+(z,Is)xaHoJlul+,,+(Z,NO)xaHo,t?uI+,
,+(z'Io)xaHo,l?ul+, ,+(z,"rapeaq)xaHoJluI+, : luos ?eo, )ppv.sarrrT.ouawluas

I ( I'ums{3) a1Tf,M. T?.zoduroJ


J ( I'E-SX) elTfM. TljroduroS
i (T ,Sd ) e1TfM. I?-rodluoJ
'nN) alTfM. T1-roduroJ
a?r-rM. T1-roduoC

J ( T,d)
.i ( T,T)

e1T.rM.

TlroduioJ
j ( T,NS ) e1TrM. Tl.roduroc
i (T, IS) olTfM. rl.roduroS

, ( T,NO) e1ff,M. T?f,oduroJ


a?TfM. Tl.loduroJ

.l ( T, IA)
.l ( T,repeoq)

a?Tfl,,t. T?rodtuoJ

j:tqc_ggZ=:uns{c
I

8-SX+{qJ= : {r{c
I

sd+)iq3= : >tq3

Bab 4: Lengan Robot 5 Sumbu Gerakan


p; =901;
-$02

NU:

PS : =VrS1

iderActuator . Position

Chk : =Chk+P;
Chk: =Chk+NU;

Chk: =Chk+PS ;
Chk: =Chk+KS_A;
Cksum: =256-Chk;

ComPortl .Write (header,

comPortl. write (Dr,

(DN,

1) ;
1) ;

ComPortl.Write

(SN,

1) ;

comPortl.write
comPortl.write (sI, 1) ;
ComPortl.Write(L,1);
ComPortl-.Writse (P, 1)

comPortl.write

ComPortl-.Write

(NU, 1 ) ;
(PS, 1) ;
(KS_A, 1) ;

ComPortl.Write
ComPortl.Write (cksum, 1) ;
SentMemo.Lines.Add('Data sent:

'+Int.ToHex(header,2)+' '+fnEToHex(DI,2)+,

+IntToHex (SI, 2) +'

'

+IntToHex (DN, 2 ) + "

'

+fntToHex ( PS , 2l + ' ' +


IntToHex (KS_8, 2\ + " +IntToHex (cksum,
ComPortl- . Readstr (str, count )

+Int.ToHex(SN,2)+' '+lntToHex(L,2)+' '+IntToHex(P.2)+' ,+lntToHex(NU,2)+,


2) )

,.

end;

procedure TForml . SpeedHandEditChange ( Sender:


begin
KS_H : =2

5 5

end;

TObj

ect ) ;

-StrToInt ( SpeedHandEdit . Text ) ;

procedure TForml.Grj.perspeedEditchange (Sender: TObject)


begin
KS_GR: =2

5 5

end;

StrToInt criperspeedEdit . Text


(

);

procedure TForml.GripspeedEditchange (Sender: TObjecE)


KS_G : =2 55

eod;

-StrToInt (GripSpeedEdit. Text

);

procedure TForml.VrSliderHandMouseup(Sender: TObject; BuEton: TMouseButton;

Shift: TShiftstatei X, Y: Integer);

VAI
PS

begin

byte;

Chk: =0;

1r..6qr;=g1E;
Chk : =Chk+header;
p1 ; =911;

Chk: =Chk+Dr;

pg; =901;

Chk: =Chk+DN;
51 3 =$00;

Chk: =Chk+SI;
911;=901;
Chk: =Chk+SN;
r,. =q0/..
Chk : =Chk+L;

p;=901;

NU: =g

04;

PS : =VrSliderHand.

64

Position

99

,,+(z/IS)xaHof,llul+,,+(e'Nc)xaHoJJ1ul+,
-izlIG)xaHo,l?ul+, ,+(z,f,epeaq)xaHoJlul+, : luas e1eo,)ppv.seuTT.oural^Ilues
J(T

/urns{J a1Tflvl.
)

T1-roduroc
j ( T,E0-SX) alTfM. Tl-lodluoJ
,Sd)
1

(T

alTfM.TfjroduroJ

(T ,nN) a1TfM. Tl.roduroJ


,l ( T,d)
J ( T'T)

a1T-rM. Tl-roduroJ
a1T-IM. T?.roduroc

I ( I'NS) a?TfM. TS.roduroS


I ( T, IS ) a1T.rM- Ilf,oduroa)
j ( I,NO) e1TfM. Tl.roduroS
J (I 'IO) a1Tf,M'Tl.roduroJ
: (I'rapeaq) e1Tfl4. Tl.roduroJ
JIr{J_9EZ=:ums{J
ue-sx+{T{J= : )tqc
,l

i Sd+)iT{C= : {r{J

1ru{+{r{3= : )iqJ
j d+{qJ= : }tr{J
uoTlTsod ' .radT.r5-rapT TS-rA= : sd
I

90$=:ru{
.r

T0$= : d

I .I+{qC= : >ir{J
r ?og=: T
1NS+)tqJ=:)iqJ
I

jT0$=:NS
IS+{r{J= :IqJ
I

00$=: rS

jNG+{r{3=

: {rIJ
rI0S=:N(

IO+{qC= : }tr{J

jITS=:ro

,,*ET;]T:;;J:i
J

l0= : )tq3
uT6aq
e1^q : Sd
ite/1.

(]ebe1uI :I 'X JalelSllTr{S,t :1}Tr{S iuol1ngesnow& :uo1?ng


J

1ce

tqOJ, : -rapues ) d0asnol^I.radT-re.repr TS.rA. Tur.rodL aJnpaco-rd


Jpua

( (z'urns{c)xaHo[1uI+, . + (z,H-sx) xaHoJluI


+r, + (Z'Sd)xaHoJ,luI+,
,+(z'ru{)xeHoJluI+, ,+(z 'd)xaHo[luI+, ,+(z /T)xaHo&1uI+, ,+(z 'NS)xaHotr,lul+
,,+(z'IS)xaHo[1uI+,,+(z,NG)xaHoJlul+,
+(z'IG)xaHo,lluI+, ,+(z'Japeaq)xaHoJ,luI+, : luas e1eo, )ppv-sauTT-ouel^Ilues

a1T.rM. TlroduroC
a1Tf,M. T1-roduroJ

,l ( T,urns{c)

i ( I,H-SX)

i (T,Sd) a1Tf,M. Tl.roduroJ


i (I ,nN)a1TfM.f l.roduroJ
j

i
i
(

(T ,d) alr-rM.TljroduroJ
( T, T) a?T-rM. Tl.roduroJ
T,NS ) alTfM. TljroduroJ

J (T' IS) e1Tf,M. Tl-rodluoc


I ( T'Nq) e1Tf,M. T1-rodtuoJ

i (T, IG) a1TfM. T?.roduoJ

I ( T',-rapeeq) af Tf,M' T1-roduroJ

l{qJ-992=:ums{J
I H-SX+{r{J= : Ir{J

j Sd+)iI{J= : }ttl3
ru{+)tl{3= : ltqC
j

d+{qJ= : {qC

Bah 4: Lengan Robot 5 Sumbu Gerakan

+IntToHex(SN,2)+' '+IntToHex(I',2)+ ' '+IntToHex(p,2\+ ' '+IntToHex(NU,2)+,

'

+IntToHex

P5

,2)

"

lntToHex(KS_GR.2)
end;

+'' +IntToHex(cksum, 2) )

procedure TForml.VrSliderGripMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShj,ftState; X, Y: Integer);

var

PS:

begin

byte;

Chk: =0;

header:=g1E;
Chk: -Chk+header

DI:=S11,

Chk: =Chk+DI;
p1g3=901;

Chk: =Chk+DN;

cr . =(nn.

Chk: =Chk+SI;
51'11=$01;

Chk: =Chk+SN;
T..=(nd.

Chk: =Chk+L;

p.=<n1.

NU:

=906;

PS : =VrSliderGri-p.

Position;

Chk : =Chk+P;
Chk: =Chk+NU;
Chk: =Chk+PS;
Chk: =Chk+KS_G;

Cksum:=256-Chk;

ComPortl.Write (header, 1)
ComPortl-.Write (DI,

ComPortl.Write

ComPortl . Write

L,1) ;
(P,1) ;

ComPortl.Wrj,te (SI,
ComPortl-.Write (SN, 1)

ComPortl.Write
ComPortl.Write
ComPortl.Write
ComPortl

.write

1) ;
;
1) ;

(DN, 1)

(NU, 1) ;
(PS, 1) ;
(KS_G, 1 )

ComPortl.Write (cksum, 1) ;
SentMemo.Lines.Add('Data sent : '+fntToHex(header,2)+' '+Int?oHex(DI,2)+'

'

+IntToHex (DN, 2 ) + "

+IntToHex (SI,

2)+

"

+IntToHex(SN,2)+' '+fntToHex(L,2)+' '+IntToHexlP,2)+ ' '+IntToHex(NU,2)+'

'+IntToHex(PS,2l+' '+
IntToHex (KS
21 + " +IntToHex (clisum, 2 ) )
-G,

end;

proced.ure TForml-.Buttonlclick(Sender: TObject)

var

PS
KS

:
:

begin

byte;
byte;

chl.. =n.
neader:

=Sl-E:;

Chk: =Chk+header
p1 ;=911;

Chk: =Chk+DI;
p53 =901-;

Chk: =Chk+DN,'

cr. -Cnn.
-?vv,

rr.

Chk: =Chk+SI;

66

L9

'rensas 6ue^

ueqrlrd qelepe relorluoloJlrtu ueeun66ued 'rur qredes 1se1r1de epe6


{nlun rJppurqrp e{ueserq looqe}ou nptp )d ueBun66ued
'rsualslJe ueselp

'lera6req 6uer{ }oqoJ-}oqor eped Br.uplnJe} 'n}ueue} rse4lde pped

JoloJluoIorM^l
ueleun66uey11 loqog ue6uo'I IBJo66uod lsBMdV

i (exaq+ , : 1\ca-r
! (Z' (l.I1.rts)

p?Eo ,

'pue
ipua
ppv' sauTrl - ourew sou
jpue

e1^q)xaHo[luI+,, +exaq=:exaq
urOaq

op (l1s)q16uaT 01 T=:r.ro]
( unoc,.r1s ) -r1SpEaU. TljoduroC

uTEaq

p,Tollr : T

J6ur-r1s: exeq,-r1s
f,PA

i (-ra6eluI :1unoJ Jlcatqo[ :]apuas) JeqCr8Tl-roduroJ' TuuoJ& a]npeco-:d


jpua
,+ (

Z'rtl{) xaHo[1uf+

,+(z/Io)xaHo,tluI+,

,+
,+

( (Z'urns)ic) xeHoJlul+,, + (Z,e-SX) xaHo[1uI


+ , , + ( z 'sd ) xeHo&lul+
(z/d)xaHo[,lul+,, + (z'T)xaHo[?uI+,, + (z'NS)xaHoJ,?uI+
,,+ (z'IS)xaHoJ,luI+,,+(z'Nc)xaHo[1ul+,

(Z'-repeeq)xeHoJ,lul+, : luas e?po, )ppv'sauT.I'ouar{1uas

i ( T'urns)ic) e1Tf,M' Tl.roduroJ


j ( I,e-sx) a1Tf,M. T1-roduroJ

J (T,Sd) atTfM. I?:odruoJ


I ( T,ON) a1TfM. Il.roduroC
I (T /d) a1r-rM. TlfoduroJ

i (T,T) alTrM.

T1-roduroJ

1 (T 'NS ) a1TfM. Tl.roduoJ


i ( T, rs) a1Tft4. Tl.roduroJ
I (T ,Nq) a?Tf,Iv]. f 1-roduoJ
j (T, rG) alTfM. Il.roduroJ
I (T,:apeaq) a?TrAt- I1-roduroJ

'

''u?;i:fi;Ti3

i Sd +{r{D= : }tq3
Jru{+{qC= : }tr{J
,l

,l

d+{t{J= : {r{J

txafi' lrpEpoads ) ?uloJ.zlS-SS

Z= : SX

j ( ?xa[' TITpS) lulo&.r1s=

J ( 1xeJ,'

urnNo^-ras

lulo&:1s=
I

: Sd
:

nN

T0$=: d

JT+{qJ=:{qJ
r?og=:r
I

NS+){I{J= : {qC

. LU>-.t\>

Bab

4: Lengan Robot 5 Sumbu Gerakan

Untuk operasi secara manual, Anda dapat menambahkan tombol,


keypad, keyboard, atau remote control pada mikrokontroler untuk
menggerakkan sumbu-sumbu lengannya.

Gambar 4.12 Proses Kendali Melalui Mikrokontroler secara Nlanual

Pada Gambar 4.72 digunakan Modul DST-51 sebagai sistem mikrokontrolernya karena modul ini telah memiliki antarmuka untuk PC keyboard
dan keypad sebagai input manual. Dengan menambahkan Modul IR8510, maka DST-51 juga dapat menerima input dari remote control
televisi.

Program Penggerak Lengan Robot Otomatis


Selain aplikasi manual, lengan robot sebetulnya lebih sering digunakan
untuk aplikasi otomatis di mana gerakan-gerakan sumbunya telah
terprogram sebelumnya dalam memori. Program berikut diawali dengan
gerakan base memutar ke kiri. Satu detik kemudian, aktuator turun dan
tangan turun, Ialu gripper berotasi dan mencengkeram. Satu detik
kemudian, tangan naik dan base memutar ke depan kembali.

68
I

tga;

lF

69

qEro

TlaU
610

Tfex

d*!t

1.rets
00

610

r{80

610
EgSJ

TPT.ras BSep .ra]Jng j

eped p?ep 6ue[uedj


TeTjras elPp ?eled ums{caqci

Tso
T

-ra?ser{ 1n-rn .roluou TeqeT-reA,


f,a1sEh1 IeqeT.rPAl
aAeTS 1n,rn rouroNJ
oAeTS Sruafj

T
T
T
T

IOqOJ 1n:n fouoNl

sq

sus--zalunoJ

sc :.raJl:n8
9Z
Ter-ras 1a{ed.r
: TET-reSelec6upfued
:Plequms]{ceqJ

sq
sG
sG
sO
sO
sq

:UnNaC-rnos
:

ad J,ac.rnos
:

urnN?a6-reJ,

ad.{J,1a6:eJ,

ssa-rppveJr^ac

TSEVIUYA-'IETIVIEVA

noE

TO

loqou-rouoN

oos

I{AT

6ro

H0t

?oqou 1n-rn -rotuoNi

x&s

noE .ro1oi^ITo.zluoyrle3ur.rad
q00
O0S
eJacr1\a(I

TO

EESO
T

up/,\TeN

EOONS

0T0z JrNoE,tJaTE VJ,.rsq j

rprrt snTned :^q alea.r3 j


,IOEIOU NVCNST I^IVECOUd

luge. oqo.ruErB

'relloJluo)
o^res )d eppd IJdLupl 6uef elep lo{o}ord 6 eilq rrpp r.{eloredrp 6uef
uplede)el rnlp6ued felap qelepe IEr.ursap gZI nelp qog elpq .rallorluo)
orues )d pppd lrdlupl 6uB{ p}pp Io>lo}ord g e},tq Irpp r{sloradrp
6uer{ lnpns da}s LIplBpe qgl e}Bq 'aspg >lpre66ued onres rolou nlrp^
'uelrlepualrp 6up,( o^res rolou ror.uou r{plppe pnpe>l 6up/{ t0 e}pq
'(gO-USq Inpou nles ppe e{ueq euare>1)
rur rsplrldp pppd I0 nleles 6uer{ rrrpues gg-dse }nrn ror.uou qplppe
etueged 6uef 1g Blpq 'q0g'r{0t 'I0 'I0 lpllu ledepral Zespgleqpl eped
'qoluo) 'rur tuerDo.rd ueleunEDueur unleqes nlnqpp qrqelJet olJes Ieqel
derlas lp rplru,relru up>{n}ueuetu {n}un rallor}uo) o^ras 36 ueleunE
er{ulreqas 'n}l puaJBI qalo 'olJes Jolou IJpp :e16uet DuesBtuatu

epuy lpps rsrsod eped Eunlue6raq le6ues Jul IpH .ueJ>lrurep nleles
r{pl{ppl} rur rue:6ord 1eqe1-1aqe1 eped p}pp lolotord ernqeq }e}B)rp nlJad

Bab 4: Lengan Rohot 5 Sumbu Gerakan

Org

13h

t(eta

Org

23}:

Rel]t

StarE:

Loop:

Lca11 Init_Serial
PCON, +0h
Mov
Mov
TH1, #OFAh

;Inisial

Serial port 57600 bps

Mov
Lca1l
Lca11
Mov
Lcall
Lcall
Mov
Lcall
Lca11
Mov
Lcal1

DPTR,+TabelBasel
;Gerakan Base memutar ke kiri
SetPosisiservo
;
Delay_ldetik
;
DPTR,#TabelActuatorl- ;GerakanActuat.or Eurun
SetDualservo
;
DeLay_ldetik
;
DPTR,#TabelHandl
;Gerakan Hand/Tang:an turun
SetPosisiServo
;
Delay_ldeEik
;
DPTR,#TabelGripperl icerakan rotasi gripper
Set.Posisiservo
i

Mov
Lca11
Lcal1
Lcal1

DPTR.#TabelGripl
SetPosisiservo
Delay_ldetik
Delay-ldetik

Mov
DPTR,#TabelGrip2
Lcall SetPosisiservo
Lca11 Delay_ldetik
Mov
DPTR,#TabeIHand2
Lca11 SetPosisiservo
Lcall Delay-ldetik
Mov
Lcal1
Lca11
Llmp

DPTR,#TabelBase2
SetPosisiServo ;
Delay_Ldetik ;
t

;Gerakan gripper

membuka

gripper

menuEup

i
;
;

,.Gerakan
;
;

;Gerakan tangan naik


;

;cerakan base memutar ke

depan

; TABEL

- Bagian ini berfungsi untuk menentukan sudut-sudut servo dan kecepatan


- Uncuk kecepatan, min = 30 dan max = 728 / 80}L
;- Formasi TabelActuat.or: [Nomor Servo Cont.roller] [SuduE. servo] [kecepat.an]
;- Formasi Tabe12 lainnya: [Nomor Servo Controller] [Nomor Servo] [Sudut
servol Ikecepatan]
;

TabelActuatorL:

DB

01,9,80h

TabelBaseL:
DB
01,01, l-5,80h
;

Centre

TabeIBase2

DB

70
S&+

01,01, 1 0, 80h

;range sudut actuator 05 ;05 angkat dan 09 turun


range sudut Base 05 - 15
;15 Counter Clock Wise, 1-0
i

09

r
LL

E,IdCI

0u
u' 01Ia
g'v
J

o^-ras TsTsocl las

!
!

vl+'u
,
V S
EIdO+Vo'V
00+'v
0u
e0+'0E0
o^_ras?os

!
!
!

o^fas

uelell){a>t

lasj
^eTep

o^ras TsTsod ?as,

CI]I

cur

l1or{

qqns

fTJ
/IoI{
AoI.I
JAoW

/\o'{

cur

/!oH
TTesT

HCIG dOA
dod
T<Iq
?e{eduT-rTx TTesT
JUI
EJCIG
3ur

0u
v,oua

./\oN
cAoI^I

u,Ldcl+va'v
00*'v

AoIitr

U,lcl0 3uI
cuI
0t{
V,oEA AoI^I
EIdO+VA'\1 cAoI^I
OO#,Y 1\ON
0u
z0* ,0u0
o^:as?as
'Ido
Hdq
:

cur
AoIitr

TTPcT
qsnal
qsnal

o.rltasTenglas

1a>{edurTrTx d*[t
/
..\oll
9E Z+raJ:lnE
..!ofi
L0+'T+faffn8
AoI.I
z0# ,.raf l:nE
loqoE.rouroN#'ssarppvacT^aq AoN
164'ump1a6:e; l1ol{
r{TT#

'ad J,1a6.reJ,
:

,.!or{

-ro1ol^Ido?surTf Tx

'T0

q08 '90 '90

'T0

q08 '0T '90

Eq
: zdTfcireop.T.

9T - E0 EuTddT.ze a6ueu j

Erq
:

g0 uorlelo-r -raddr-r6

aEUPUJ

Tdr.rCIaqetr,

9T -j

q08'80'90'T0
q08

EG

T-reddr.:reTaqeJ,

'8'?0'T0

Eo
:

a-r?uac 0T 'un-rn1 g0 i
qT - q0 ue6ue1 a6ue.rj

q08'90 'n0'r0

zpueHToqel
so

TpueHTaqPJ,

Bab 4: Lengan Robot 5 Sumbu Gerakan

Mov
A, #00
Movc A, GA+DPTR
Mov
@R0,A
Inc
R0
Inc
DPTR
Lca11 KirimPaket

Set

delay / kekuatan servo

Ret

SetPosisiServo:

Lcal1

SetServo

Mov
Movc
Mov
Inc
Inc

A, #00
A, SA+DPTR

Mov
Movc
Mov
Inc
Inc

A, #00
A, GA+DPTR

;Set Posisi servo

@R0,A

Mov
Movc
Mov
Inc
Inc

A, +00
A, GA+DPTR

SeE Nomor Servo

GR0,A
R0

DPTR

R0
DPTR

;Sets

delay / kekuatan servo

eRo,A
R0

DPTR

KirimPaket:

Push
Push

DPH

DPL

Lcafl KirimPaket.Dat.a
Lca1l AmbilDataSerial
Pop
Pop

DPL
DPH

Ret

SetServo:

Mov
TargetTl4)e, #1lh
/ DSR-o8)

;Targiet. Servo Conlrol-ler

(DSR-30

Mov
Movc
Mov
Inc
Mov
Mov
Mov
Inc
Mov
Inc

nomor DSR-08

A, #00
A, EA+DPTR

TargetNum,A
DPTR

DeviceAddress,#NomorRoboE
R0,

#Buffer

GRO, #04
R0

@R0,+PerintahKontrolMotor

nomor robot. = 01

Set panjang dala

Kirim perintah konErol motor

R0

Ret

; Ambil data serial


ArnbilDataSerial:

(ACK

atau info dari

Lca11 Serial_In
Cjne A,#lEh,AmbifDataserial

72

DSR-08)

CL

ad &ac-rnos 'V

?-re1s I

AoInI

Ao}i
v'elecums{ceqc
1no-Ter-res TIPc.l
Aoritr
x,ts#'v

:1e)iedTerw
3eE

sclnoTer"res TIesT
lloltr
'v

ssa-rppvacT^ao

sJlnoTerJes

cIaJr^aG+ 'v

TTec.I
..!ow

sJlnoTET.zas TIecl
urnNla6.ze&'V AoI.I
sJlnoTPTf,aS TIec.I
ad^J1a6.rJ,'V l\or,I

v'EleGums{JeqJ ..!oN
?no-Ter-ras TIec.I
1lofi
x&s+'v
:

-relsew?e}{edTEI{v
1aE

f no-Ter-ras
TTEc.I
etecxrns{car{J 'v
qqns
fTJ
C
Aow
00+'v
zulq
tno-ra;Jngdoorl / LE
sSlnoTer-ras T Tec.I
cuf
0u
/!or{
0u0'v

:1ng:aSgngdoo-1

T+jtaf l:nE+

'0u

sc?noTeTf,as
V, LlI
0ll0'v
-raliJng#'0U

l\ow
TTe3T
1\O'^I

/\oI{
/\oN

-ralseI^Ila{PdTe1vlv TIEc.I
:

e1PGla{edurr.rTN
1au

uI-TeT-ras TTPc.I
uIelecdoo.I'E zulq
CUI
OE
v'oua ^ow
uI-TeTjres TTecl
:

uleSeqdoo-I

cur
0u
V'OEO 1\ON
.I\oN
-ral:l:ng+ ' 0u
l\OW
V,S
uI-TeT.ras TTe3T
uI-TeT-res TTesT
uI-Ter.ras TTecT
uJ-TeT.ras TTecT
uI-TeTles TTecl

Bab 4: Lengan Robot 5 Sumbu Gerakan

Lca11 SerialoutCS
Mov
A, SourceN\rm
Lca11 SerialOutCS
Mov
A, #DeviceID
Lca11 SerialoutCS
Mov
Lca1l

DeviceAddress
SerialOutCS

A,

Ret

SaveBuffer:

Mov
InC
Add
Mov

@R0,

RO

A,ChecksumData
ChecksumData,A

;Tambah check

su.m

Ret

SerialOutCS:

Lcal1 Serial Ouc


Add
A.ChecksumData
Mov
ChecksumData,A
Ret

rnit_Serial:
MOV
MOV
;
Mov
An1
Orl
Mov
MOV
Setb
MOV

SCON, #52H
TMOD,#20H

A,TMOD

A, #0FH
A, +20H
?MOD,A
TH1, *OFFH
TR1
PCON,

#8OH

RET

SeriaI_Out:

Clr
Mov

TI

,Jnb
Clr

Tr, Tung$rKirim

TungguKirim:

SBUF,A

?I

ReE

Serial_In:
Clr

RI

I\rngguTerima:

Jnb
Mov
Clr

RI , TunggrLrTerima
A, SBUF

Rr

Ret

KirimPesan_Serial

Mov
Movc
Cjne

A, #00H
A, GA+DPTR
A, *OFH, KirimTerus

Ret

KirimTerus:

Lcal1
rNC
Ajmp

74
*E

, Mode 1 Ren
; T0 Mode 2, T1 Mode

Serial_Out.
DPTR

KirimPesan_Serial

;
;

57600

r
9L

lau
f,TC
J
1\oW
H00#'V
doa
Tdc
V,HdG AO}{
E&dO+V0'V sAoI^I
1\oL^I
H00+'v
r{snd
cJV
CUI
}IJdC
lltdo+Vo'v cAoI^I
H00+'V AoI^I
cul
ILIdC
:

CNE

nualaxqeluTfed

1aE

qlas

nurel ax{pT,lr{e1ur-red

r{EluT.radTjreCdooT d*["f

u,rdg
UJdC
u,tdo

nualaxqElur-rad

8'V
C
nuro loxIep rlqelurfad
uJdc+vo'v
H00#'V
:

cur
CUI

cuI
qqns

fTJ

c^ohl
,\oN

r{e1ur-redr.reJdooT
:

SIqelUr-radr-reJ

COW.I

OlIJ

dod

rTJ
:

Surg-n66unJ,

surg-r{ppns ' 0dJ


:

surE-qepns

['I

dur
3q.C

Sug-n66unJ

ouJ qlas

"ralunoc 1-Iq 9T apol^I raurJi

l\OhI
HddO#,OTJ
,OH,t
AoI^I
HOEO#
HTZ#'qOi.^IJ 1!oW
OOI^IJ l{snd
:

gu:E-de1a6

?ell

)tIlapT-n66unJ'SurE-.ra1unoC z-ule
5urE-.de1ag
:

TTecT

{T1epT-n66unJ,

0020#'surg-fa?unoJ ^oL_
:)iTlapT eTec

Bab 4: Lengan Robot 5 Sumbu Gerakan

Latihan
1.

Sebutkan tiga contoh aplikasi lengan robqt otomatis pada kebutuhan


industri.

2. Tuliskan program yang menampilkan

protokol data yang dikirimkan


ke lengan robot ke layar LCD M1632 pada Modul DST-51.

3. Tuliskan

program pengendali lengan robot dengan menggunakan


Remote Sony, di mana Tombol Prog+ dan Prog- adalah pengatur
kiri-kanan/turun-naik. Select adalah tombol pemilih servo.

76

LL

'loqoJ uelP^eqPq(ueur

6ue,{ ue>1epuq up{nleletu lepq rolerado re6e ueselpq ue>lrrequreru ne}p


epe 6ue.( uBepBeI reuaDuaru roleredo nqelrrequau Inlun uelrs6uqrp
ledep de1a1 Josues 'roleredo e[ra1 qepnuradueur {n}uD 'lenueur
erp)es roleredo DuBroas qelo uelrlppue{lp e,tueserq eleredoele} }oqo5

rapocu3 ftelog

'a1eradoe1a1

loqoJ eped epe e6n[ rosues ueurlDunual dnlnpel {ep11 'uer1rcuep unrueN
'up{n{Blrp snreq 6ue,{ ue{epurl uple rrrpues uesnlndal pqtue6uau
6ue[ sqeuolo sruaf loqor-loqo: eped ledepral eserq rosues ']nqesre]
ueepea{ renses uBIBpur} ue{nleletu ledep }oqor e66urqes 1e1o uerDeq
a{ }oqor re}rles Jp epp 6uez( rsrpuol ue4edulBfueru In}un rsBurg:eq ur
uer6eg '6ue1eurq nple ersnueu eped prepur er{u1e.(e1 }oqor eped rosuag

uenlnqBpuod

loqoa tosuos:-/osuas

Bab 5: Sensor-Sensor Robot

Sebagai contoh, sensor ultrasonik yang diletakkan di bagian pinggir tubuh


robot akan memberitahukan operator tentang jarak robot terhadap
halangan. Sensor ini memberitahu operator agar menghentikan atau
membelokkan arah robot sehingga tidak membentur halangan. Sensor
seperti ini seringkali ditemukan pada kendaraan-kendaraan sebagai
peringatan pengemudi akan halangan yang ada di belakang saat
memundurkan kendaraan.

Selain menunggu perintah dari operator untuk mengamankan robot dari


tindakan yang membahayakan, otak robot juga bisa mengambil inisiatif
dengan memerintahkan motor untuk berhenti bila jarak sudah mencapai
titik berbahaya dan operator mengabaikan peringatan.

Rotary encoder berfungsi untuk mengetahui sudut putar sebuah motor


atau .menghitung kecepatan motor. Motor seryo yang pengaturan
sudutnya ditentukan oleh lebar pulsa PWM sekalipun seringkali
membutuhkan sensor ini. Hal ini karena pengaturan lebar pulsa pada
motor servo tidak selalu menunjukkan suatu sudut tertentu. Sumber
tegangan motor atau baterai yang turun juga bisa menjadi penyebab
perubahan sudut, walaupun pulsa yang dibangkitkan masih memiliki lebar
yang sama. Beban motor yang membutuhkan torsi lebih besar juga dapat
menjadi faktor penyebab perubahan sudut tersebut. Dengan adanya rotary
encoder, otak robot dapat mengetahui apakah gerakan motor telah
mencapai sudut yang diharapkan atau belum. Dengan demikian, bila
diperlukan lebar pulsa akan diatur kembali agar sudut tersebut diperoleh.
onto-interruRter

:"t !:',:t")
,{-

Gambar 5.1 kaki Delta Robo Spider dan Rotarg encoder

78

6L

'Japo)ua uB6uurd
ue6uap rde16ue1p qe1a1 6uer{ }ry rapo)ug plleq rrpp {qeuals urerEerp
uellnfunueu E'E rpqrupD 'reldmrelur-oldo re6eqas 1a1ed nles tuplpp
seualrp rlelEurres JolsrsupJloloqd nele rosuesoloqd uep qpJer.up{ul CE'I
rapo)u1 frn1oy Z'g EqueD

uCIsNA

0ifil{d

'srueletu r6nr-r6ru nete upqplpse{ uBllnqturuetu ledep 6uer{ srueleu:


>1a;a rpefret lepn euere{ ueleun6rp Eurras LIIqel 1ul IIUIaJ 'rosues eI
qeJer.uerJur e{eqec uereoued Duolotuau uplp Jolou uerelnd euer.u rp
qpJer.up{ur {lu>let ueleun66ueu 6uer{ Jepo)ue nlrez{ 'raporuE lecqdg 'Z
'uerBlnd 1pe[el leps IPluoI
up{lnqurueu 6uB{ Joloru eped unur) qenqes ledepral pupru rp
srue>latu IeJe uelpun66uau: 6uer{ rapocua n1re.( 'repooug

lp)rueq)ew 't

:n1rer{ 'repo)ue {Jula} rue)Br.u enp ledeprel relnd }npns Dunlrq6uaru In}uD
'1ede16uef lnpns qaloradp re6e eslnd
reqal rlpqtuel rnle6ueru uplp loqor >lelo eleur-qeqrueq rolou upqeq
]Bnqtuetu 6uer{ uepaur upqeqrued nB}e reJa}eq ue6ue6al er{uunrnl leqple

6uer( }npns redBcueru unleq qlseu DIeI uBIereD ernqeq


loqor lplo lees 'eqpl-pqel loqor rye>1 eped 'qoluol re6eqeg

-ue{nluelrp
Dunlrq6uau

Bab 5: Sensor-Sensor Robot

Gambar LED inframerah dan phototransistor tersebut adalah photo


interrupter yang memiliki celah, di mana piringan encoder masuk dan
berputar di antaranya. Pada saat lubang piringan tidak melalui celah
tersebut, cahaya terhalang dan phototransistor berada dalam kondisi OFF.
Tegangan pada keluaran rangkaian ini (kaki 1 dari konektor 3 pin) adalah
sebesar VCC. Pada saat lubang piringan berada pada celah, cahaya tidak
lagi terhalang dan phototransistor akan berada dalam kondisi ON. Arus
mengalir dari VCC ke emitor melalui R 1K yang mengakibatkan keluaran
dari rangkaian ini terhubung ke Ground atau tegangan 0 volt. Putaran dari
piringan encoder akan membuat keluaran rangkaian ini berubah-ubah dari
logika 0 ke 1, kembali lagi ke 0, dan seterusnya.

Gambar 5.3 Diagram Skematik Delta Encoder Kit

Opto interrupter yang digunakan adalah tipe MOC703CY


konfigurasi kaki seperti pada Gambar 5.4

80

dengan

i8
er{uuedep Ip lelqo rs{elepueu lees rnlnluau
uele ue6ual uedel uplnlueuatu Inlun qplepp loqoJ ue6ual Inlun er(uued
-erauad qoluo) 'Jenses 6uer( erpetu qelppe >{ruosp4ln 'reletu g e66urq
ru) prplup >1eref rueleq 'nluepel 1a[qo->1afqo depeqre] loqoJ rsrsod
rnqela6uau Intun loqor qelo up4{ntnqJp 1ul 1e;1 'lere6raq Euepes 6ue,{
toqor qpnqes eped Eupuad uetuele nlBs r.{ples qelepp leref uern>1n6ue4

I!uoseJlln leJer Josuos

ny rap@ugenao E'9 requrcD

qemeq 4edue7 nTdnttayul o?do r'g requeD

iurur*el rruu

iHCIl.*3n**iqruH

3{IftHIVf;

d HId

Bab 5: Sensor-Sensor Robot

Proses pengukuran dilakukan dengan menembakkan sinyal ultrasonik dan

menghitung kapan sinyal tersebut diterima kembali oleh sensor. Sensor


ultrasonik yang sering digunakan di pasaran adalah sensor yang memiliki
respon frekuensi 40 kHa Oleh karena itu, untuk memancarkan sinyal
dengan respon maksimum, dibutuhkan gelombang dengan frekuensi 40
kHz yang dibangkitkan dengan osilator.
Pada Cambar 5.6, tampak bahwa osilator dibangkitkan oleh trigger dari
mikrokontroler dan dikuatkan oleh bagian penguat sebelum dipancarkan
oleh pemancar ultrasonik. Sinyal ultrasonik akan terpancar setelah
getaran ke-8 dari osilator dan dipantulkan oleh objek. Mikrokontroler akan
mulai melakukan perhitungan setelah getaran ke-8 dari osilator dilakukan.

urrnnsourc
..-"

TRANSM|TTER

[--

Gambar 5.6 Sistem pengukuran jarak dengan ultrasonic

Penerima ultrasonik akan menerima pantulan dari objek dan mengubahnya menjadi getaran-getaran listrik. Namun, getaran tersebut masih terlalu
lemah sehingga perlu dikuatkan oleh sebuah penguat sebelum masuk ke
mikrokontroler.

Mikrokontroler akan berhenti melakukan perhitungan saat sinyal


ultrasonik diterima kembali. Perhitungan waktu dari saat sinyal ultrasonik
pertama kali dipancarkan hingga diterima telah diperoleh. Jarak yang
ditempuh oleh rambatan gelombang ultrasonik mulai dari dipancarkan
hingga memantul pada objek dan kembali diterima akan diperoleh
dengan mengalikan kecepatan rambatan suara dengan waktu yang
diperoleh tadi sehingga diperoleh persamaan berikut.

82

e8
uep lrseH 'lerres/IdvD ue6uep urlJIIIp 6uef qelurred ue6uap ue6unlrqrad
saso:d upln{pletu ledep e6n[ reuog-q 'es1nd In]ueq tuplpp urples
'Ielqo ue6uap Josues
prelup leref relru qalo.radruau {n}un }nqesre} eslnd reqel Dunlrq6uau
n1:ad e,{ueq }oqor Ip}O 'qeloredrp 6uer{ lerel ue>1n]ueueru uele eslnd
rpqel euetu rp 'espd qpnqes pe[ueru rsre^uo{lp uele ue6unlrqred yse;-1
'er{urunlaqes ue{seleltp qetet 6ue,{ rpadas

ue6unllq:ad ue{nlpletu ppes lruosprlln 1e,{urs uellq6uequau uele


6ue,{ reuog-q eped reloJ}uoloJ{rl.u uep ra66u1 qenqas uelurrr6uau nged
efueq loqor 1e1o rpefuau 6uer{ reloJ}uo{or11u 'reuog-q Inpow ue6ueq
reuos-e

uetielq 6u1tu11l'g requeD

uje-LrJ3eleiel
sLuSL - Sn00! Pslnd

I
tt

r_
V I

,euosou,r,ntay

osE{ln uEJEsued

--|[Gtl

unur;u1rurao6y1

'rPuoS-C lnqasp 6ue[


Inpolu nlens r.uelpp sptue>lrp 6ue[ ulpuesrel ralor]uo{oDlrur qelo ue{n{elp
rpel leref uJelpp eI rsJeluol uep nlle^\ ueDunlrqred sesord e{etu
'1ere[ rnlnEuau r.uBIBp loqoJ rJBp le]o efraur1 qepnr-uredrueu {ntuD
>1ere[ r1e>1 zh

r{plepe

'IruoseJlln Duequola6 upleqrueJ


uelDuepag

lelqo ue6uap rosues ere]ue leref


--+r - -^^ r,L bbttt, :

-. .,

+xn:s

Bab 5: Sensor-Sensor Robot

perhitungan akan dikirim ke bagian port serial D-Sonar dalam bentuk


hasil pengukuran jarak.
Perintah-perintah untuk pengukuran jarak dapat dikirim dari mikrokontroler atau PC dengan protokol tertentu yang dijelaskan pada Tabel 1.
Mikrokontroler atau PC dapat meminta informasi jarak dalam bentuk Hex
maupun ASCII dengan menentukan byte 06 sebagai 01 atau 02.

Gambar 5.8 lfiodul D-Sonar

Tabel

Bvte
00
01

I Protokol Permintaan

,IE

)eskripsi
\wal Paket

02

D D-Sonar

Nilai

data jarak dari PC/Mikrokontroler

02

OO-FF tlomor urut D-Sonar. Pada kondisi standarnva selalu

03
o4

D Penqirim adalah Master/PC


tlomor
urut Master/PC
OO-FF
raniano
01
data
01t02 )l = Perintah meminta data dalam bentuk oeriode
)2 = Perintah meminta data dalam bentuk iarak
lhecksum di mana total semua data + checksum = 00

05
06
07

01

00

Tabel di atas menunjukkan protokol data yang merupakan informasi jarak


dari Modul D-Sonar yang dikirimkan melalui port serialnya ke mikrokontroler atau PC.

84

E8
.reuos-q elep

T-rqurvl

xleI efuru]
uEsed urfrxJ

feuoscPlPoTrquJV TIecT
Ter.ras uesedui-IfTx lIecl

xe.refelurr\luesad#/uldo
L-r--J

!
!

.rpuosc IIJSV efep uedurr^ued IeqeTf,eAi

I
I
I
v

+i-f

oo

Aor{
TleJl

6:0

sooS'

sq:euogqllrbrq
sq :euos6Tqtbrq
sC :euosct:]r6ro
sc leuoso:raJJng
VTVC'

za

n03

f,euosccl

Te-ifas rnTeTour jreuos-O eped >1e:eI p]urureur ure:6o:6

use'reuosc

QQ

= luns]cotlc +e]ep enuos le]o] eueu lp

oc8

uelBp leJer relru

unspoqc
rJBp 0

0l,

pr

euE

6C

LC

0t

ZC

lJ-0(

cdlolseyl lnrn JouoN


L{BlepB euuauod cl

ec

z(

reuos-o ol

vc

pr
(xaH) opoued teltu uep 0 al^q nBlB (ocg) lerel relru uep L olAE
pr
(xeg) epoued relru uep I eilq nele (OCe) leJp[ relru uep Z oilE
lerel lnluaq uelep uulllp IBJBI Bleo - zc
apouod )nluaq uPlep u!r!M IBJBI elBo l.c z0tLc
=
g0 uep
apouod
,,0 'elep oueluec
lnlun
)BJBIInlun
t0trc
eped 'Jeuos-c lnJn JouroN ll-0t
L0 nlBlas e^upJepuls lsrpuol

cdflolsey\

loled le^ b
!soulsec
ralorluo{or{u u)d e{ r8uos-o IrEp {urs[IssruroJul

B]Bp

BC

LC

9C
9C

ol^E

!Bt!h

OC

3t

lo{olord z IaqBI

xeH Inlueq urPlep I upp z el^q ePPd uelurrryrP


eporred rspruroJul 'c)g {n}ueq LuplBp lprPf P}PP 0 e}^q qelPPe
6 al^q uep 'IpJpf Blpp I a]^q qelppp I e1(q '1ere[ p]pp rrpp Z e],{q
rlrlp^\eur z ailg '6 upp '8 'z elr{q PPPd uelurJrlrp uele IPJeI rspruJoJul
'uenfnl lnrn Jor.uou eped plnd upDlrr.ueq '00 ntrp^ ')d/Jelspw relorluol
-orlru qelppE upnfnl ql NI la{ed pppd PIpI.u 'reuog-q qelppe upnfn]
CI p^uurnleqes plrg 'relorluoloJlru nele )d Irpp upelurured Dunlue6ral
pdnJeq uple uB>lr.urJrlrp 6uBrt IeJpI JspruJoJul

IprpI np]p eporJed

Bab 5: Sensor-Sensor Robot

Mov
Mov
Mov
Ljmp

Digit3Dsonar,BufferDsonar+1 ;Data-data yang diperoleh dicopy


Digit2DSonar,BufferDsonar+2 ;ke variabel penyimpan data ASCII
DigitlDSonar, BufferDSonar+3 i DSonar
$

AmbilDataDSonar:
BukanAwalPaket:

Serial_In
BukanAwalPaket

;Tunggu awal paket

A, #1Eh,

Lcalf
Jnz

Seriaf_In
BukanID

;Apakah = 00 / ID Master

Lcall

Serial_In

;Ambil nomor urut master

Lcall
Cjne

BukanI D:

BukanDSonar:

Lcall
Cjne
Lcall
Lcall
Mov
Mov

Serlal_In
A, #IDDSonar,

Serial_In
Serial_In

;Apakah ID D Sonar?
BukanDsonaI]
;
;Ambil nomor urut D Sonar
;Ambil panjang data

B,A
R0,

#BufferDSonar

LoopAmbilData:

,Ambil isi data

Lcall

Serial_In

M^rr

AP n

Inc
Djnz
LcalI

R0
B, LoopAmbilData
SeriaI_In

;
;

Ret
Pe

sanMintaJarak

DB

-Lnrt Serra-L:

MOV
MOV
MOV
Setb
MOV

LE,ln,02,01,00,01,02,ODBh
SCON, #52H
TMOD,+2OH
THl, #0EDH

TR1
PCON,

#OH

RET

Ser.ia.I_Out:

Clr
MoV

TI
SBUF,A

TungguKi rim:

Jnb

TI, TungguKirim

Ret

SeriaI_In:
Cfr

RI

TungguTerima:

Jnb
Mov

RI, TungguTer.ima
A, SBUF

Ret

KirimPesan_Serial:

Mov

86

i Mode 1 Ren
,' T0 Mode 2, T1 Plode 2
, 9600 Baudrate

A, #00H

L8

'sBJe{ dnlnc 6uBr( erBns uellseq6uar-u ledep e66urqes e)ro1-C ueJBnlay


eped Up^\ 0I tuntulslpur e66urq uelen6ued up{rrequeu ueIB VZ
urnurrs{eru sn:e ueDuep IdlI ro}srsuerJ '7007CSI rrpp rpnla{ 6uer( B:Bns
eunlol rnle6ueru upp ue{len6ueur In}un rs6unyeq VZW1 dcuy dg 31
'139 pefueul
IdyD rrep r{plurrad-qeluuad rsraluol ue{nlpletu rs6unyaq
rur ynporu eped lES6gIy ralorluolorlrtu eletu '7007CSI sesle6uer-u
uelep eun66uad qepnureduaur {nluD '(g'g requeD) IdS Blnturptue
ueleun66ueu 6ue{ 7007CSI )l ue{pun66ueru Iul 70 af,rol-C Inpow
IUyD rnlpletu elep 1o>1o1ord
Uod

ue6uep uep lBnuptu erp)es n1re,( 'erens Jplntueru uep tue{eteru sesord
ue{nyelatu r.uelpp erp) enp rlrlnueur pl 'lruetu g e66urq prpns Jp}nureur

uBp ure>leralu ndureu: 6uer( ruelsrsqns qenqes qelepe ,0 e)ro1-q Inpow


'nluepel rspuo{-rspuol eped repdrp uep
nlnqep qrqalre] tue{errp 6uer{ loqor prens IeJe-IeJa re6eqes ueleun6rp
ledep BDn[ rur Inpou '1nqesre1 rselrlde urples 'eletu-p]etu nele rclur6ued
reDeqas 1epuryeq 6uer{ loqor eped e{uqo1uo3 'pJens 6ue1n JB}nr.ueur
uep tuelarerl Inlun ue{qnlnqp e6nf loqor 'n}ueuel rse4lde-rse1r1de epe6

70 oclon-o erBns lnpohl

TeT.ros uEsadulr-lTx

dr[v
I IECV

1ng 1et:e5

cur

EJ,dC
:

sn: e J,ur-r rX,

sn-zaJuT.TTx

lou
H.{ 0

eu

#,V

Erdc+v0'v

IJ

cAor{

fs
1,

&u-"

v,
,t

.1,..,

,i

Gambar 5.9 Nlodul D-Voice 04


vcc

4I
-L

",,

"i"
_.

a7o

t,,

LEo

Gambar 5.10a Diagram Skematik D-Voice 04 bagian Suara

88

68

'lnlrraq rp6eqss ?0 e)ro^-q la{Bd

Luelep prpesrel 6uef uolpq qsnd loquol-loquol ue{eun66uau ue6uep


ueln{plrp ledep [pnuptu eJB)os pJens rp]nureru uep tueleJetu {n}uD

lenuew eJBcos oclon-o sosord

lortuoy ue16eg

bO

ntoA-O qnel.uarts uet6elq qOI'g requeD

UA
m
d/f}
Nisd
u
mf
LZa
sza
gzd
tzd
eza
zza
tzd

L-H

grd

I Id
t td
-td
z'H

Itd

0 Id
r1

[Nt
otNt

0zd

r3s3u
LOd

90d

90d
t0d
e0d

zod
r'0d
00J

d
Ix

dE

Bab 5: Sensor-Sensor Robot

r:$$$::
fl

e&aa59
d't'{ddi*
FBAA4A

ffir
pt.r
Ft"d

pt.f
Ft.

Ft.3
Er,*
PT.I

c$

t.}

ResetEtop

&
:l

F{

6!

ft.e

(sf
I I Ltr{, tr{
.11

fl,ue

r*

,fi
I

AfJ
&

*r--l*

Gambar 5.11 Instalasi sakelar dan LED pada D-Voice 04 untuk akses
manual

1.

Lakukan instalasi seperti pada gambar.

2.

Hubungkan sumber suara (max 20 mV p-p) ke Line In D-Voice 04.

3.

Hubungkan port serial/UART ke PC bila sumber suara menggunakan sound card. Hal ini diperlukan untuk mereduksi noise dengan
menghubungkan ground D-Voice dengan ground PC..

4.

Aktifkan power supply dengan memberikan sumber daya 9V-12V


AC atau DC ke konektor power.

5.

90

Pastikan posisi sakelar Rec/Play pada posisi record, yaitu P3.2


terhubung dengan Cround.

t6

'0t'E rpqlueD Bped ruedes


ntre^ 'IZIS upp [90Z-IS/dAV-ISC/29-ISq/[E-ISq Hedas ellec rel
-orluo>lor>lrur uelsrs rrpp lerras/IdvD ueBuep leqqeduro{ ILII lprres/Idvf)
Jol{auol IJep lno uld ueunsns 'Jelor}uoloDIrur rue}srs rrpp lerres/fUVn
ue6uep VO a)JoA-C lrpp IeueS/fdVD rolleuol uel6unqnq6uetu
ueEuep uelnlelp ledep rur sesord InluD 'relorluo{orlru tue}srs eped
uel6unqnqrp ledep t0 a)ro1-C 'ue1r1ue ruelsrs eped racunouue e)lol
'sJ1euo1o 1eq '1oqor eped erens rgedes 'n1uepe1 rselrlde-rselqde 1n1up

rolorluoloJlltll ueouap teuas/Iuvn Blecos oclo^-o sasoJd


'pnpal uetuelal re6ueptal
e66urq UelS loqLuol 16BI ue{et 'rrLIIeJeq erens uptueler }BeS 'VL
'uetue>lar rsr ueryeDuepueu Inlun UelS loquol uple1 'l
'uerue{eJ lerne rsrsod

eped acrol-q rssod rnleDuetu Inlun dolg/1eseg loqruol ue>laf 'Zt


'

sesord seslerp

367r'elo.rluoloolrr.u ue6uep e,{uuerelnrued

Inlun ders qepns e)ro1-C 'rur deqel eped redueg 'I I

'efep Jaqurns rleqtuelEueseureur upp lnqp)uau


ue6uep ruelsrs uelsed uep ,(e16 epou eI rele{es rsrsod qppuld '0I
'uelaltp dolg/1eseg

Ioquol pllq rlpn)eI e,{u1n[ue1as rsrsod eped uedrurstel ue{p


eJens uel.Ue{ed 'er(u1n1rreq uels loquol ueue>leuad eped r}ueqJaq
uetuelered sasord lpps Jrlleuou rleqtuel uplp rur qg1 'Duns6uepeq
ueuelered sesord uelBpupueru l6pl JRIB uele qE'I 'UBls
Ioquol r6el sedeletu uep up{eueur ue6uep Eueynrp ledep sesord '6
'ueupleJed sesord uelqueqDueu

'L

'BJEns Jaqr.uns ue4;qle6uar-u ue6uep


upetuesreq JII{e CE-I e66urqas uels loqluol uelsedel uep ue{ef

'g

Inlun rueped qg1 e66uqes Upts Ioquol r6el uelsedal uep ue{ef

'1erne rsrsod

eped epe ueueler rsrsod laser-eu Inlun dolg/1eseg loquol

uplef

'9

Bab 5: Sensor-Seasor Robot

vcc

RXD
SISTEM
TXD MIKRoKoNTRoLER
(DST-5rST-51 /DST-AVRy
sT-2051/ST-2313)

cND

__i

Gambar 5.l2Instalasi D-Voice 04 dengan Sistem Mikrokontroler

2)

dan TXD (pin 3) dihubungkan secara cross (Gambar


5.12) sehingga serial output (TXD) sistem mikrokontroler terhubung
dengan serial input (RXD) D-Voice 04 dan sebaliknya.
Posisi RXD (pin

Perintah-perintah akan dikirim dari sistem mikrokontroler melalui port ini


dengan protokol seperti pada tabel di bawah. D-Voice 04 akan membalas
ke mikrokontroler berupa ACK (Acknowledge) yang mengindikasikan
bahwa perintah telah diterima.
Tabel3 Protokol Data D-Voice
Pen

Bwe
00
01

02
03
04
05

06
07-08

O4

data dari PC/Master ke Dvoice


Nilai
Keterangan
Deskripsi
1E
Awal paket data
Header
Destination lD
Destination Number
Source lD
Source Number
Lenqth
Perintah
lsi Data
Check Sum

13
01

00
01

lD Subsystem
No urut Sub System
lD Pengirim 00 = Master (PC/Mikrokontroler)
No urut Master
Panianq oaket data
Baca ienis-ienis perintah

Totaldari keseluruhan data = 0

Jenis-ienis perintah
Nilai

Keterangan

01

Perintah
Perintah
Perintah
Perintah
Perintah
Perintah
Perintah
Perintah

02
03
04
05
07
OB

09

92
5*-

Power UP
Putar mulai dari alamat tertentu
Putar pada alamat saat ini
Rekam denqan alamat tertentu
Rekam pada alamat saat ini
Stoo Rekam
Power Down

'z1>l V nlrp{ (qepual qrqel 6uef eler Durldrues D{rlrureut }rueru


g[ !sra^ ue>16uepas 'zHI I eler Durldups Dlrptueu lrueur g rsJa1 'WgI
-7007CSI nplp WB-tgg7qSI ueleun6Dueur 6uB,{ e{u-lasdrq) rrep uplpp
rsrel uep ]rueu I rsrel sple rrrprel 70 e)lon-q Inpow

-eqrp 6uer( lrueu

9l

?0 aclo^-o uoruol l uPleueleoue6

'reuaq ueEuap eurrrelrp plep plrq e L lV Z0 g0 0 l0 l I0 00 Et


qplepp e{uueseleq e{eur 'se1e rp uelurrrrlp 6ue{ qelurrad >1n1up1 'y leqel
ue6uep Jenses ptpp Iololord ednraq y)v seleqr.ueu ueye t0 a)ro1-q

JaqunN uorleullsac

TO

JalseN lnJn oN

olesJnos

fl.

uals^sqns ol

qlDuat
JoqunN osJnos

LO

elep )aleo DuBrued


uals^sqns lnJn oN

L.|eluuod

90

y3v opoy

ulns l3or{c
eleo rsl

9VH'

0 = elep ueqnlnlosal uep lBlol


rorrSDo

(ra11o.r1uocorc!yI/Cd) ralseyl - gg uurtr0ue6 6g


elep lolBo lel\Av

00

ol

3t

uorlBurlsao
JOpeeH

uEoueJoloy
!e!!N
ralsBu\l/3d o{ oclono uep B}Bp ueuflJlDuod
DO

a4ory-e yep epp ueu146ua4, pqet

'70 a)lon-q prpns uprupler letuelp rrpp r{ppuer e1,{q qelppe


g-a1 et/{q uep e)ron-q erens ueurelal }e(uele r"rep r66uq ey(q rlqernaru

Z-a{ a},{g 'g-a1 ey{q uep


eped

1-a>1 eytq ledepral uele n}ueue} }puele


uelar nplp nlueuel leurplp eped relnd qelurred Inlun snsnqy

'euBuad
upl'upyal nplp 0o 00 lel.uplp rslsod nfnuau uep (rte6) "rB]nd epou eped
pppreq {n}un (19 n1e1as lur rsJan eped) I }nrn rotuou ue6uep 70 e)ro1
-q a{ qelur:ad uelur:r6uau ( 1 lnrn Jo(uou ue6uep reloJluoloJlrtu uelsrs
tut teq u:elep) ralspw B,{uruB 6uert 93 00 Z0 g0 l0 00 I0 I EI 1o1o1o:d
ueDuap upynlppp 00 lpruple eped erens ue1;ple6ueu Inluf) :r.{o}uo)

Bab 5: Sensor-Sensor Robof

Modul ini memiliki 2400 blok memori sehingga untuk versi 16 menit
setiap blok memori akan menyimpan suara dengan durasi:

durasibloh

16x6o
2400

Yaitu = 0,4 detik


8 menit untuk versi 8 menit dan 16 menit
untuk versi 16 menit

Blok

12

Blok
2400

Blok

Gambar 5.13 Pengalamatan memori D-Voice 04


Dengan 2400 blok, maka dibutuhkan pengalamatan sebanyak 12 bit yang
terdiri atas 2 byte, byte tinggi dan byte rendah. Untuk memutar suara
pada lokasi 1 menit pertama dapat dilakukan dengan cara sebagai
berikut.
1 menit = 60 detik. Pada versi 16 menit, 1 blok adalah 0,4 detik sehingga
1 menit akan menempati pada blok berikut

Iumlahblnk=

j'r
tl,4

= 150 atau 96h


Dengan demikian, perintah untuk memutar suara pada alamat 1 menit
pertama adalah perintah di mana byte tinggi dari protokol adalah 00 dan
byte rendah adalah 96h

Ilvtest:

'Program EesEer D-Voice 04 untuk merekam selama 2 menit dan memutar mulai
menit pertama
' By Paulus Andi Nalwan
' www. roboti-nd.ones ia . com
.

94

DATA

96

xcv elep TTqurvj


acro^-o a{ qelur_rad faxed urr.rTxl
euel-rad lTuau T leureTv;
-relnd rlP?ur-rad,
el,tqt=elepouE[uedj
arro^.G = lab-reJ,J

du[r

Ter.reseleoTrqurv TTPcI
eleq?a{Pdurr-zTx TTer.I
r{96# ' t+.raJ:]na
00# ' z+roJ:l:n8
T+.aal:l:n8
Z0+
e

0+

'.raf JnE

T0#'umN1a6-ref,,

qtT# / ad J,1a6.reJ

l\or{

..Iou
Aotrd

AoI,i
AoI^I

/lotd

UlIIX\aAEg VCONIH VJ^IVJESd ,lINSfi T IUVC MOJ^I UV,tOd HV,INIUSd

NJV elep TTquVi


osro^-o a{ qelur-rad ?aIed uTlTXj
!

0 fuIeTVl
dols qef uT-rad
a?^qt=ElepEue[ue6l

Ter.raslegTrqurv TTeJT
pfeclaledur.rrx TTecT
/
1\oW
t+-lalf ng
00#'z+"re]JinE ]\or[
q00#

L0# ' T+-reJ:J:ng l\ow

t0# /,raJ:l:nE

T0+'urnN1a6-reJ,

aJro^g = 1a5-reJ,l

AoI{
AoN

qg14'ad. ;1a6:e6
1!oW
oEocsE
doJS HV,lNrUEd

ure{a6dooT'}tT1aqJaluno, zulT

{Tlap-i- ETao

TTecT
:

0zT#'{Tlaofalunoc
XJV

elep

T-JqurVJ

ecro^-C ali qelur"rad 1a{pd urrTx

0 feuIPTVl
nf ual-ral leueT ueEuap ueliou qe?ur-rad i
al^qe=plPpEuE[uedj
ecro^C = 1e6-reJl]

ue{aEdoo.l
l!or[

TeT-raselecTrqurv' TTeJI

eleolaledurr"rrx TTecT
q00# / E+.ral:l:ng 1\or.{
00# ' z+-raJ:J:ng AoI{
?0+ 'T+jraflng
^oN
,^'ow
t0#'"reJJn8
T0#'urnN?a6re& AoI^I

r{tT+ 'ad Jta6.reJ


AoN
,IINS]T Z VhIYTUS I{\DIE}I SSSOiId

dur!.I

6:0

t.rls
00

TTc.l

Ter-Ias-?ruI

so

:1.1e1s

soo3'

r{ET
T
T

9Z

I
I

O0S

X,tS

sG surg-JalunoJ
sc {r1ao-relunoc

-ralJng
sQ elecunslicaqc

sO
sO
0t

urn1gle6:e;

add;qe6:e;
6f,o

ti
Bab 5: Sensor-Sensor Robot
Ambi

lDataSerial

Lca11
Cjne
Lca11
LcalI
Lcall
Lcall
Lcall
Mov
Mov
Mov
Inc

Serial_In
A,+lEh,AmbilDataserial
Serial-In
Serial_In
Serial_In
SerlaL fn
Serial In
B,A
R0,

#Buffer

GRO,A
R0

LoopDat.aIn:

Lcall Serial In
Mov
eRO,A
Inc
R0
Djnz B, LoopDataln
Lca11 Serial_In
Ret

KirimPaketData:

LcaII

AwalPaketMaster

Mov
Mov
Mov
LcalI

A,

Mov

R0,

Mov
Inc
LcalI
Djnz
Mov
CIr
Subb
LcalI

A,

R0,

#Buffer

@R0

R7,A

SerialOutCS

LoopBufferout:

#Buffer+1

@R0

R0

SerialOutCS

R7, LoopBufferout
A, #00
C

A,ChecksumDat.a

Serial_Out

Ret
Awal PaketMas

Mov
Lcall
Mov

Mov
LcaIl

ter

A, #STx

Serial-Out

ChecksumData,A
A, TargeLTl4)e

SerialOutCS

A,TargetNum
Mov
Lca11 SerialOutCS

Mov
LcalI

A, #00

Mov
Lcall

A, #01

SerialOutCS
SerialOuECS

Ret

Init_Serial:
MOV
MOV

96

SCON, #52H
T1.{OD,*20H

; Mode 1 Ren
; T0 Mode 2, Al l{ode

L6

OOW.I

NOD.I
OH'I
OT,T
:

surE-n66unJ,

surg-r{Ppns ' oJJ

-ralunoc lTq 9T apow faurrJ,J

dod
dod
dod
dod
surE-r{epns

d*Fv
rq.C

:5urg-n66un,1

01IJ
Hd,{o+ 'O.r,t
HOEo+'oH,t
HI Z# ,qON,I,
01,1
OHJ
NOJ,I
OOI^IJ

qlas
Aor{
Ao]/{

.\o}{

qsnd
qsnd
qsnd
qsnd
SurE-1{eTeq
1a.u

{T1apT-n56unJ,'Sug-"ralunoJ z-ule
Sug- eTaq TIeoV

:111ap1-n66ung,

0020#'surg-relunoc

^o,tr
:1r1ep1-de1a6

leE

Y ' Pleoums>tcar{J .I\oN


eleoums{car{D /v
ppv
?no-Ter-ras TIecT
:

sclnoTeT"ras
1au

I-U

f TJ

dNSS,V

1ION

uT-TeT-resdooT'IU
qut
u1-1et:agdoo'y
fTJ
:

IU

uI-TeT-TAS

l all
f TJ

I.I
urr:1yn65unJ,IJ

quc
:

V,dNSS
IJ

urr:ryn66un;
1!OI{

fTC
:1no-TeT.ras
JEE

e1e-rpne8 0096 j

H00#'Nocd Aor[
TII'I qlas
HC,{o#'TH,r AOW

Bab 5: Sensor-Sensor Robot

Sensor Penjejak Garis


Aplikasi robot Iine follower membutuhkan sensor yang memantau kondisi
garis yang diikutinya. Untuk mengetahui keberadaan garis ini dilakukan
dengan menembakkan sinar inframerah dan mendeteksi pantulannya.
Garis hitam akan menyerap sinar inframerah dan sensor tidak mendeteksi
pantulan tersebut sedangkan warna putih akan memantulkan sinar
inframerah dan sensor akan mendeteksi adanya pantulan.

Ada dua macam sensor penjejak garis yang ada, yaitu sensor penjejak
garis tunggal atau single line follower dan sensor garis inframerah (Delta
Infrared Line Sensing) yang berupa sungut.

Penjejak Garis dengan Sungut


Penjejak garis dengan model sungut adalah berupa sepasang sensor yang
dapat diatur posisinya baik secara maju-mundur maupun kiri-kanan

Motor kanan bergerak


maju

Sensor kiri
mendeteksi garis

Robot akan berbelok ke


kiri

Gambar 5.14 Delta Infrared Line Sensing pada robot gang berjalan

Pada saat sungut sebelah kanan tidak mendeteksi garis hitam lagi, maka
motor kanan akan bergerak maju dan motor kiri bergerak mundur
sehingga robot akan berbelok ke kiri untuk memperbaiki posisinya.
Pengaturan posisi maju-mundur digunakan untuk mengatur waktu respon
sensor. Untuk robot yang bergerak dengan kecepatan rendah, maka

98
t

66

'lnlrreq
re6eqes nlueuel rs6un;-rs6unJ Inlun rsBrJpA re6eqreq rBr{undruatu Jed\olloJ
eurl e16urg plleq nele 16-JSC 'te{ep leref uelep loqor retryes 1p lelqo
-Ialqo upepeJeqe{ rslelapuetu In}un e6n[ rde1e1 's1"le6 rsle]epueur {n}un
er(ueq >{pp$ Jul Josues rselrldy 'toqor eped nluape} mpns-}npns Ip up{
-{e}el1p ledep Jul Josuas e66urqes uBEuBsBd ednreq ue{nq 'qesrdrel 6uer{
1e[e[ued rosues uelednreru reaolloJ eurl e16urs nele 1e66un1 sue6 1e[a[ue4

lB66unI sUeC >1e[e[ue6


Dulsuag aut1 AI e?pq

9I'g requeD

8t_vos0sdor

:eceds 6ueqn1 6

'srre6 upleqele>l rpnses rJrI e>l uBp

ueuel e1 resa6rp ledep BEn[ Dursuas auq dl ptleq 'rs{a}epp 6uert sr:e6
:eqe1 :nle6ueu {n}un uelDuepeg '(Vt'E requeg) }oqor Llnqn} depeq:e1
e{urrrp ueqeuatu {n}un ueleunDrp 6ue,t Dursues eurl UI p}taq uep rereds
6ueqn1 rsrsod rnleDuau ue6uap ue{nyelrp ledep rur uernle6uad 'rurp qrqel
]nqasJal ueqeqnrad rnqela6ueru up>le loqo: e66urqes nfeu qrqal Jnlep
ledep ln6uns 's1re6 ueqeqnred uodsaratu ledar qrqel ledep rosues re6y
'lBder
qrqal ]enqrp snrpq rosues uodser eletu 'r66uq ueledecel ue6uap >1era6req
6ueX loqor eped e,{ulrleqas uep iequpl qlqel }pnqJp snreq rosues uodser

Bab 5: Sensor-Sensor Robot

Gambar 5.16 DSF-OI Versi

DSF-01 V1 dengan jarak deteksi 0,5-1 cm dengan bentuk fisik sensor


yang mengarah ke bawah berfungsi untuk mendeteksi garis pada bagian
bawah robot.

Gambar 5.17 Posisi DSF-OI Versi 1 pada robot

untuk DSF-01 Versi 2 dengan jarak 0,5-3 cm, sensor ini

dapat
mendeteksi garis dalam jarak yang lebih jauh dan dapat diletakkan pada
robot yang lebih tinggi Posisinya dari permukaan lantai. Sedangkan DSF01 Versi 3 yang memiliki jarak deteksi 0,5-9 cm lebih cocok digunakan
untuk mendeteksi objek secara horizontal. Sensor ini dapat diletakkan
pada sudut-sudut robot untuk mendeteksi keberadaan objek di sekitarnya.
Dibandingkan jenis ultrasonik, sensor ini memiliki harga yang jauh lebih
ekonomis.

100
i

It

I0t
'0 elr6oJreq
uple upJpnlel 'rsprpdruol ue6ue6el qB^\eq rp epeJaq uBunfe leps uep
1 elrDopeq uple uprenlal 'rsereduol ue6ue6el sele rp BpeJeq uBun,(B
lees 'reseq 6uef 116o1 ue6ue6el ueqeqruad rpefueu qeqnlp ue{p }nqesre}
ueun,{e 'roleredu:o1 ue6ueq 'JeloJ}uo{orlrru rrep rg6o1 6/1 qalo rleuelrp
ledep 1epr1 e66uqes [)eI 6uef Eueluer tuelpp unfe6ueu er{ueq }nqesre}
ue6ue6al ueqeqrued 'untup1.1 'ue6ue6al ueqeqruad nele {rr}sr1 1e,{urs
rpelueu prurJa]rp 6uer( e.{eqer qeqn6uaru 6uer( rolsrsueJ}o1oqd ednreq
eurpeued uer6eq eped uel6uepes 'Ielqo e1 efeqer uelrurrr6uar-u JIt{e
nlples 6uer{ qeraup{ul qEl qenqes rsrJeq reeuBured rsrs 'erurJeuad uep
:ecuBu:ad uer6eq sple rrrprel e rsren e66urq I ISreA IIeq tg-Jsq Inpow

rc-CSO

fipo6

4o1g

ue$erc GI'S requeD

'e1nd qneI qrqal 6ue,{

lereI uellrseqEuar-u uele

rur lenl 6uez{ uBrerued 'Z uep t rsren uelDurpueqrp }Bn{ qrqel qBJer.up{ur
uere>ued e66urqes er{ueuruaued reEeqes Zgl_gg-SdOI ro}srsuerloloqd
ue? OOVVIVSJ qpretupr;ulCgl:amod q6q ueleunDDuaru E rsre1 IS-JSC

Toqot eped lsraA IO-JSO lstsod

gl'g reqlueD

(--------------i

......----.....?

T
r

Bab 5: Sensor-Sensor Robot

il
m

Pengaturan tegangan komparasi dilakukan dengan mengatur variabel


resistor yang ada pada DSF-01. Objek diletakkan pada posisi di mana
keberadaannya harus mulai terdeteksi. Variabel resistor diputar perlahanlahan hingga LED merah aktif yang merupakan indikasi bahwa keberadaan objek telah terdeteksi.

Keluaran dari DSF-01 masih diperkuat lagi dengan sebuah buffer


sehingga dapat diperoleh keluaran dengan arus yang cukup untuk dideteksi mikrokontroler maupun fungsi-fungsi lainnya, misalnya dihubungkan
ke transistor pengendali relay.

Sensor Warna TGS230


Salah satu identifikasi objek yang sering dibutuhkan pada aplikasi robotik
adalah pengenalan warna. Dengan teknologi infrared, proses pengenalan
warna dapat dilakukan dengan memperhitungkan kuat lemahnya pantulan cahaya.

ffi#{

Li

tJLr

s1

uld-

ffi3
#f'lD

fi fitJT
.J !.fVNM
=

4
Gambar 5.20 Sensor u)arnaTcs-230

TCS230 adalah sensor warna keluaran Texas Advance Optoelectronic


Solutions yang berisi 8 x 8 matrix photodiode yang masing-masing
berukuran 120 pm. Photodiode tersebut terdiri atas 16 photodiode dengan
filter merah, 16 dengan filter hijau, 16 dengan filter biru, dan 16 tanpa
filter. Masing-masing kelompok photodiode ini diaktifkan melalui internal

102
l$-

$
Y
4
t;

0r

'lnqesJel
Ielqo Jespp puJefi\-eruel\ rJep r{purel }pn{ Eunlrq6ueu ueDuap ueln{ellp
ledep euJpfy\ nlpns ueleua6ued '!pef .nrlq uep ,nptq ,qeleur Jesep
prue^\ uauodruol rJep >lnlueqJel nlelos yalqo derles rrep eure.{\ rnllru}S

oz-sDluereuaqay pqel zz.g requeD


Lr+i.Jl,

i.lrillll,iillr leiill
+11lE

'1

IdAr aE{}t0sl"(}r{d

uli

{di}

il.

Llliri*ff .l+9r,-.1

sHl'tvss A}ilBt]&EUJ tndrfto

0s

t"s

'ts uep 0s plel rslpuoy mlelal.U zH{ 009 ne}p


0ZI np}e %OZ 'zHy. ZL ne1r- 7o7 rpelueu e,{uurnrursleru
Blels rnlep ledep e6nf 6g7gf,I Irep renle{ 6uer( rsuanle{ upJesag

%1OL upp 'zH{

'uelJrlletp lnqesJal lodluo1a1 EursBru-Burseur lees


uer6eq rp In)untu 6ue.( rsuen{a{ ueJeseq-upresaq rnyn
-6ueur uep eporpoloqd lodluola>1-1odruo1e1 qrlrruatu ue6uap up{nyplrp

96ZS)I ueJenle{

Iul IBH '0ZS)I eporpoloqd qalo eurrralrp 6ue,{ (teap) Durueq uep ,g
'g 'g er{eqp) qeLuel lpn{ rs{e}epuau ue6uep up{nlellp eurea ueleua6ua4
OZ-S)1

uetietq 4oE tz'g requeD

l+

J+U*4U413

{*tr*n

ba.r

g-*1gua.*n

i+-

trl

tlt-l

'rsuan{e{ uerBsaq rpefuau Lleqnlp eporpoloqd qolo eurJe}rp


6uer{ snre qeual 1en1 '(;apaauo) frcuanbat! oJ JuaJJn)) rsuanler; a1
srue qeqn6uad uer6eq rnlelaw'sruB r.{Br.uel }en{ rpefuau rpefueu qpqnp
erurJalrp 6uer{ r{pJe{.ue{ur efeqec r.{Burel }pny

uplp eporpoloqd Llalo

'es
upp ZS lndur eped nluagel e46o1 rspuol uplrraqr.uau ue6uap repo)ap

#
Bab 5: Sensor-Sensor Robof

Untuk mempermudah aplikasi, dapat digunakan Modul DCLI-230, Delta


Color Interface yang sensornya sudah tersolder ke PCB dan dilengkapi
dengan konektor untuk antarmuka dengan mikrokontroler.
Pada modul ini juga sudah disediakan 8 buah LED putih yang terhubung
ke keluaran mikrokontroler sehingga LED bisa dinyala-matikan Iewat
program untuk penghematan daya. LED hanya diaktifkan pada saat
proses pengenalan warna dan berfungsi selain untuk penerangan juga
menetralkan pengaruh-pengaruh akibat pantulan cahaya pada warnawarna sekitarnya.
Tabel5 Deskripsi VO DCLI-230

Sinval
GND

VDD

S1

SO

Pin

S2

OE

S3

OUT
LED

l0

NC

Deskriosi
Ground Power Supply. Semua tegangan mengacu ke Ground.
Tesansan Supolv (2.7 - 5 volt)
Input pen: ih skala frekuensi output (penielasan pada Tabel 6)
Inout oem ih skala fiekuensi output (peniclasan pada Tabel 6)
Inout pem ih filter yane diaktifkan (penielasan pada Tabel 7)
Enable untuk fo (Aldif LOW)
Input pemilih filter yang diaktifkan (penielasan pada tabel 7)
Keluaran frekuensi (fo)

Kontrol LED (Aktif LOV/)


No Connect, tidak terhubung

Keluaran frekuensi dapat diatur skalanya melalui S0 dan S1, seperti pada
Tabel 6. Untuk skala frekuensi rendah digunakan pada mikrokontroler
yang mempunyai kecepatan rendah.

Tabel 6 Pengaturan Skala Frekuensi


SO

SI

Skala frekuensi Outnut


Power Down

r04

2%

20%

t00%

!:,

eD6rmras pporred rplru upqeqnred upllpqqp6ueul uelp 6ueppl-6upppl


esrou pl{uppv 'r66un 6ue,{ uerlrle}e{ uelqn}nqtuetu 6uef rse4ldp In}un
uelnlplrp Jul IeH 'Inep deqas tuplep reloJluo>lorllu eI Inspw 6uer{ eslnd
qelunf Dunlrq6uau up6uep uelnlplp rsuenle{ relru up6un}rr{rad ppo}ew
epolrad ue 6un71q 6uad epop6 Z'g requeD
*3{H

. {te*q 8ffi ffi**{ * $t$u'{

a"{'rmxu**qa"t3 t}'ftr#$[
E $#{I Huu,qrmnla$ ;

'g*txq e"Sxt*lp*$$e{*

{S!il{
6-fd

*nt "f

ffi

'qeloredp qplel rsuenle{ rplru pleur 'LlL = J uperuesred ue6uaq


'slu I nlref 'rrq1e:eq eporrad nles qpleles reseles ue1e1e{urp ledep qepns
ptup^\ ueleua6uad sasord '97'g reqrue0 eped qoluo) 'rslelaprel rsuenlerJ
snllrs nlps qeleles uelnlepp Euns6uel euJpt\ ue;eue6ued sasord eueru
rp r66uq 6uer{ uodseJ uplqnlnqueu 6ue,{ eure^\ rsle}ep rselrlde {n}un
ueleun6rp 1ul IpH 'gZ-n)q qelo uplrpnlelp 6uBr( rsuan>le{ rJBp eporrad
reqal Dunlrq6ueu ue6uep upln{elrp eporred relru ue6unlrqred ppolew
'epoued

1e1ru

ue6unlrq.rad Bpoleu upp rsuenle.g rplru ue6unlrq.rad epoletu

n1re.( 'ur sasord Inlun ueleun6rp 6ue{ epoleu enp epv .lul 1npotu
qalo uplrpnle{p 6uB{ rsuenle{ rplru npqep r.{lqelre} Eunlrq6uau snrpq
ralorluo{oJ4u e66urqes rsuenyer; ednreq qelppp 062-l1)q rrpp uprpnley
'JelllJlp 6ue{ nrrq nele 'nefrq 'qeteru puJpn\ ue>ln]ueueu
ledep gez-n)C 'uerlnuap ue6ueq 'leqpl rpnses rsern6rguol ue6uep
ES uep ZS mlpletu eurefr\ rellrJ rselrlle rnle6uau ledep e6nf gg7-g3q

ZS

ts

0
0

I
I

rellr} EqUBI
rurq rellgrusd

rellqlued

nBlrr.{

JII{B
BUJBil\

qsJeu Jellgruod
epolpolortrd

BUBA

relllf, uurnlu8ua;

4 1aqu1

Bah 5: Sensor-Sensor Robot

mempengaruhi perhitungan pengenalan warna yang membuat akurasi


menjadi kurang baik. Dengan perhitungan frekuensi, maka mikrokontroler
akan menghitung berapa jumlah pulsa yang masuk selama satu detik.
Dengan proses ini, sedikit perubahan nilai perioda tidak akan memberikan
banyak pengaruh pada pengukuran frekuensi sehingga dapat diperoleh
hasil yang lebih konsisten.

Kelemahan metoda

ini adalah kecepatan proses pengukuran

yang

membutuhkan waktu paling cepat satu detik untuk mengenali warna.

T.*?***k

ffi
, *stxir:n t

dr+tik tarrja&i

ilJ-erL
trlt[

l*tffi

Hffi

6x*inxnhamg

Gambar 5.24 Metoda Penghitungan Frekuensi

Hasil pengukuran dalam nilai frekuensi tadi, baik dari metoda perhitungan
frekuensi maupun perhitungan perioda, akan dibandingkan dengan nilai
frekuensi skala penuh (full scale) dan filter cahaya mana yang diaktifkan.
Semakin besar intensitas warna, semakin besar pula frekuensi yang
dihasilkan.

Apabila skala penuh terjadi pada saat filter merah (R) diaktifkan, maka
dapat dinyatakan bahwa warna merah dengan intensitas tertinggi sedang
dideteksi. Apabita frekuensi yang dihasilkan mendekati nol pada saat filter
merah (R), hijau (G), biru (B), dan cerah (clear) diaktifkan, berarti warna
yang terdeteksi adalah hitam.

i06
L-

z0t

I rsuenle{ In}un 'e{uqo1uo3 'pxeq Intueq uJelep g ralsr6eg rp uedursrel


uele r66url elr{q rplru upp y relsr6eg rp uedurrsre} uplp qppuer agq relrp
'lnqasrol lqap nlps eporred Luplpp

epe 6ue,{ eslnd qepunf re6eqes pplel 6uB{ rsdmelur qeprnf Eunirq6uau
uple relorluoloJlruu e66urqas uplJq{elp uBIp Ieurelsla rsdnralul '[e1ep
saso:d pruples '0 reurrJ ue>1eun66uaur uB6uep Inap nlps ptuplas felep
uelnlpleru uele uerEord '0 lpuJelsle rsdn:a1ur ueleunDDuaur ue6uap
uelnlplrp Insew 6uBr{ eslnd qepunf er{u1er{ueq Euryrq6uau >lnluD
OZ17)A ueduap IgS1gtV 4neua4s uetdelq gz'g requeD

r
CXU

Cru

d/f"lv

N3sd
UM

Ltd
9rd
9rd

Z'Ld

EE'

tzd

0t
b

,td

L
9

0td
0rd

LZd
9Zd
9Zd

tzd
tzd

zzd

ttd

il_
0J_

rtNt
01Nt

0zd
L0d
90d
90d

,0d
t0d
zod

t0d

00d

I I
'rsuenle{ ue6unlrqrad

epoletu ue>1eun66uaur uB6uap gZ-n)e Irpp erulrelrp 6ue,( rsuanlar;


Ipllu Bunlrq6uau: Inlun ueleun6rp 6uB{ rselrtde qplppp Iul }nlrreg

lsuonloJJ !el!N uernlnouod sosord

Bab 5: Sensor-Sensor Robot

kHz atau 8000 Hz akan diperoleh nilai 1F40h, di mana Register B bernilai
1Fh dan Register A bernilai 40h.
Untuk pengaturan nilai skala maksimum frekuensi pada 10 kHz, maka S0
dan 51 diaktifkan melalui P1.1 dan P1.0. Sedangkan agar diperoleh
cahaya yang cukup terang, LED putih diaktifkan dengan memberikan
logika 0 pada P1.6.

DCLI230.asm:
. DdLd

CountR
Countc
CountB
Count_lDetik DS
s0
s1
32
s3
OE
LED
.

Org
DS
DS
DS

50h
2
2
2

Bir
Bir
BiL
Bir
BiI
BiT

P1.1
P1.0
TO

rL
INT1

P1.6

Code

org
000h
Ljmp Start
003h
Org
1,1mp EXU r sr
00Bh
Org
Ret,a

Org

013h

Ors
Reti
Org

Ol-Bh

Setb
Clr
Clr
Setb
Lca11
LcalI
LcalI
Lca1l
Sjmp

51
S0
LED
EA

Retr

023h

Reta

Start:

;Set frekuensi
i

Ukur-Merah

;Aktifkan LED
;aktifkan interupsi

Ukur_Hijau

Ukur-Biru

Dosomething-WithData

Start

DoSomething_Wi thData

;Proses pengolahan data tergantung jenis aplikasi


;let.akkan kode programnya disini
;

------

Ret

Ukur_Merah:

Clr
C1r
C1r

108
L

32
53
OE

10KHz

60i

fex

Oxs qlas

,dTlts

3uf

fTf,

3Ur

V
0xE

Ic

dT{s'o+ 'v

au

jrsT0xE

1eu

OXE f,TC
{T1aqT-n55unJr'/{rlaoI-?uno3 zula
O}IT f TJ
$ 'o,s,r qur
01IJ qles
f TJ
OJ.I
AoId
0000E-# '0'IJ
992l0000E-#'oHJ 1\oN
:

)trlaGT-n66unJ,

Oxs

'o,rmr

qlas
qur

l\oN

0#'8
V

fTJ
AoN

0z*'>tTlacT-lunoJ

qf,o#'oow],

.\or{
:

v'

0u0

jrn{O

..\OI^I

1rOrtr

ElunoJ# '01I

1\Ord

V,O1IO

.{OW

A,V

cur

0E

qles

EO

f,n)io
so

TTECl
.TT J

qlas
fT:]

CE

n-TT8--Tnx1l

v'Ouo

.\OI^I

cur

011

s'v

1\OW

v'080

1\ON

i)lunoc# '08

.\Ord

EO

rnlo

EO

TEJ'I

fTf,

qtas
qtas

c<
ZS
:

ne

t'lH-rn{n

1aE
Aor{

v'oua

cur

OE

.^OW

V,OEA

AOW

a'v
ulunoJ+ / 0u

AOld

qles

so

rn{n

TPC'I

Bab 5: Sensor-Sensor Rohot

Latihan
1.

Jelaskan bagaimana proses terjadinya pulsa-pulsa dari Rotary


Encoder

110

2.

Tuliskan protokol untuk meminta informasi jarak pada D-Sonar


beserta protokol balasannya

3.

Tuliskan protokol untuk memperdengarkan suara di menit kedua dari


Modul D-Voice 04

4.
5.

Berapa arus maju maksimum dari LED Infrared TSAL4400?

Buat aplikasi penjejak garis dengan menggunakan Modul DST-51 dan


Modul DSF-01

6.

Buat program perhitungan frekuensi pada keluaran DCLI-230 dengan


menggunakan metoda perhitungan perioda.

7.

Telusuri lebih dalam sensor accelerometer, voice recognition, magnet,


PIR, dan kompas.

ITt
'lerJlsnpur loqoJ-loqor eped uplnlelrp rur sesord B1(ueserg
'elosuo) LIBnqes qelo ue{uerDordrp 6uer{ eiep-etpp lrep lndur qeyo
-radu:eru 6uef loqor ederaqaq e6nf epy 'loqor qenqos eped epe snreq
{el}n(u lepq er(u1n}aqes 6uef rosuas upp eloureJ ednraq lndur uer6eg
'uesnlndel eues>1e1ad
re6eqes Jolour ser{eq p}rl uele Iul IIeI ueleduasal eped ,unrue;.1
'dnplq InlqpLu eped 1o1o uelere6 rednrer{ueur e66urqes 6ue66ue:au:
uep lederaur uByB let\pl '1nqesre1 lplrel eped nluegel snJe uelJrle
-6uaru ue6ueq 'loqoJ uelera6 eueslelad re6eqas lolo le^\ey nele aJtA
apsnN r6o1ou1a1 uelEueque{rp qepns e6n[ rur lees eped 'loloru urples
'uesnlndel euesleled re6eqes rolour epes
uesnlnde>1 r:aqrued upp sesoJr.uad reDeqes lelo sele rJrpJal rur uer6eg
'Irue>leur uep lndur prelue rp ue>lqnlnqlp Iul rlepua6ued uer6eq qelnll

InluD 'e,,{u1rue1eu uer6eq eped euelntel lnfuel qrqel rsleer uelnleleI.U


Inlun loqor qelo ueleun6rp uEIe lnqesrel qeloredrp 6uer{ lndur-1ndu1

'JOSueS rJpp
lespJeq er{ueserq 6uer{ srler-uo}o erp)es
qeloradp 6uer{ lndur ne}p 'elorue: ue6uep er{ulesrur 'roleredo qelurrad
rnlplau lpnueu uJe)es qeloredrp 6uer( lndur uelJesepreq loqoJ uelera6

-uelere6 rnle6ueu: 6ue,{ uer6eq qelepe }oqor rlepue6ued uer6eg

uBnlnqepuad

,oqoa ilepue6ue4 ue!6eg

Bab 6: Bagian Pengendali Robot

-----_--__-_-______--------l

Gambar 6.1 Blok Diagram Bagian Pengendali Robot

Bagian lnput
Seperti yang terlihat pada Gambar 6.1, bagian ini terdiri atas bagian
sensor dan joystick/keypad sebagai pemberi masukan pada otak.
Bagian sensor telah dijelaskan pada Bab 5. Oleh karena itu, pembahasan akan langsung masuk ke bagian remote. Pengertian remote kali
ini bukanlah hanya merupakan remote kontrol seperti pada televisi atau
AC, melainkan lebih luas daripada itu.
Remote adalah sebuah perangkat pengendali jarak jauh di mana
perintah-perintahnya dikirimkan melalui media infra merah atau gelombang radio.

1--=-S-

ffi-H
^nr--+f

Gambar 6.2 Robot gang dikendalikan secara manual melaluiiogstick


remote control

112

'II
'0 raurq elpp rlrle^\au uele lapued rsprnp Luplpp r66uq e46o1 upp uep
lapuad rseJnp trrelep qppuer e1r6o1 rsrpuoy .W)d nele uoqeppoN apo)
aqnd rsplnpou upln{plrp nlnqep qrqelrel '1ern1e ue6uap Br.rrrragp ledep
rulrlllp 6ue,( qelurred elep re6y '1oqoJ a{ rlepuel tua}srs uep qelurred
emeqrued prpau reEeqes rs6un;req rur rselrlde Luelep Llereup{ur JBurS

qenuelul untT4adg
t

1e;it;

iiun;ir ri+r1;

i]l:
#ire
ry tft
.s., f
**,r$

'g requeD

r.".r*fi

ff];

-r

:.
;:

::r

fi

!u-

,.t y-"
B

i-.t "'Q-

*;
t

l*qry.X!! ;lrl,tfi rirtJir{P*$

L)1..,t j(:l'j*,l!tj r*.::+;1

.,,

'g reque9 eped ledtuel qradas prsnueru Bletu


uodsar renl rp epereq e,{ulecund 41q 6uef Duequole6 DupfuBd ue6uep
er{eqec qenqes qelepe qprer.uerJul '}nqesret qeJer.ue{ur qelede rnqel
-eDueur nlred e1r1 nlnqpp qrqelre] 'qereruer;ur erpeu rrefeledueu InluD
'ggTdOSl undnele 0Igg-dl rpadas re11rg ssedpueq Inpour
ueleun6rp ledep elep rpefuetu lnqesrel 1e,{urs-1e{urs rlequre{ qeqn6ueu
Inlun uelEuepeg 'rsrnelel undnBur )y eloLuo: qredas erpesJel r.{epns
6ue,{ qereure{ur e}oruer ueleun66uau: ledep B}rI lnqasrel qpJer.ue{ur
e,{eqer uBrBcuBd rpefuau: Blep qeqnDued erpau In]uF) 'e1ep rpefuer-u
lnqesral 1er(urs-1e,{urs rlpqtual qeqnDuau uep qprer.up{ul er{eqec
up:pluBd rpefueu elep qeqn6uau qelepp IUI eloruer e[ra1 drsur:4
'urel-urpl upp 'q)A')v
'rsrlelal rgades {ruoJllala uelelered-uelelerad e}oruer In}un ueleun6rp
r1e16ur:es rur prpeur 'n1r euetel qal6 'sruouole upp pueqJapas 6ur1ed
6ueX eloural plpp rse>lrunuoy erpau uelednreru qerer.ue{ul BIpaW

r.lEJouerlul e!pohl ueouap oloruou

Bab 6; Bagian Pengendali Robot

Kondisi logika rendah dalam durasi pendek dan logika tinggi dalam
durasi panjang akan mewakili data biner 1.

ts{ }{

}{
{ 01il1

Gambar 6.4 Timing Diagram PCIvI

Agar cahaya inframerah dapat mengirimkan data perintah dalam jarak


yang jauh dan akurat, cahaya tersebut harus digetarkan dengan frekuensi tertentu. Standard frekuensi yang biasa digunakan oleh remote
control berada pada area 3842kH2.
Data-data perintah yang sudah dimodulasikan dalam bentuk PCM ini
akan dimodulasi lagi dengan frekuensi carrier sebesar 3842 kHz
sebelum diumpankan ke dioda pemancar.

,4S

KHg

Gambar 6.5 Timing Diagram Nlodulasi 4O KHz

Apabila sistem kendali yang digunakan adalah remote control televisi,


Anda tidak perlu lagi mengatur PCM maupun modulasi 40 kHz ini.
Sinyal yang dipancarkan dari remote control sudah berupa kode PCM
dengan modulasi 40 kHz. Anda hanya perlu membuat demodulator 40
kHz dan program untuk mengurai PCM pada mikrokontroler yang ada
pada robot. Bila sistem kendali Anda berupa PC atau joystick yang tidak
memiliki pemancar infra merah, Anda harus menambahkan mikrokon114

9tl.

upxrdruplrp upre erurralrp Eue,{ elep ere., '}nqesrel ,ffifLi:X'Hir'i


-e6ued qepnu:edrueur {n}uD 'r{pJar.ue{ur erurraued Inpou rJep e{urre}rp
6ue,{ elep lrque6ueu e:er uefeleduueuu ledep epuy rur ruerDord epe4

!s!^alal oloruou UBp eleo euuouod lsBMdV


'recueurad ue6uap srre6as lppq nele 6ueleqra1 6uer(
tedr-ue1 rp pppraq elrqede opuetuol ue6uelrqel uple loqog 'snrn1 sue6
eped epe:eq uep uelequeq seqeq snJeq etuueued uep re)ueued ue
-16eg 'uBr.{euole>1 rer{undueru lur qeJar.uerJur ue6uep Isp{Iunurol BIpeW

260#
t60#

opohtr

B/V

160#
960#
960#

OEPIA/AJ

sv0#

deels

sd0#
nd0#
9rI0#

lceles

3C0#

t60#
ExaII

JId

(elddol)Je.{iod

JOA

060#
680#
880#

+IOA
-EoJd

+doJd
0
6
L

980#
980#

,80#

,80#
t80#
280#
r80#
080#

Exall

Joqlllotr

9
s

v
c
Z

IoqHroI

(ftuog a7ouag) euqan1 6uefr eTeq uep pqluotls6ung pqet I pqet


'lnqasJal aloruor r.rpp Ioquol-loquol derles
uep epol uelednrau: 6uBr{ n}uepa1 ap(q-e1fq 4nluaquetu ue>1e (y'9
ieqr-ue5) W)d r.uelsrs ueleun66uau ueEuep Durporep llseq elep-B]e6l
'efes r66ur1 uelederel ue6uap ]p{ap leref tsp{Iunuroy {n}un uel
-nln]lp uep sdqry 1 ueledacel ue6uep yqrl prppue]s uBlpun66ueur tut
erpau..r untupu 'qereure:guJ erpetu rlrlrtuetu DuBtuetu 36 ederaqeg 'loqod
rlepuay sesord 6ue1ue1 ueselefued eped 1re1ep L{Iqel ueysplatp uBIe rur
uer6eg 'zH>i OV rselnpou uep W)d rnleEueu: >lnlun rs6un;raq 6uer{ .ra1or1

Bab 6: Bagian Pengendali Robot

DST-51

IR RECEIVER
(lR-8510 ATAU
TSOP4838)

P1,3

REMOTE TV

Gambar 6.6 Diagram Blok Aplikasi Penampil Data RemoteTV pada LCD

Modul DST-51. Sistem minimum AT89S51 akan digunakan sebagai


sistem minimum mikrokontroler, mengingat pada modul ini sudah
tersedia port LCD sebagai media penampil data.
l-{11}

t'o{rrssr

!
l.{]l} }fiJ:t( Hl r{}R1
l,rrt I port0 I
tles{r.rsr2 i ljl:tl.I1111^1,11 I
i t .lutil t{;II't
i
1

Iqesd
ln

Slsl$n

${ttttr

rrafrrBrtri,,q :
P(n '..\

ilrl

l\*lB/Prrl l
lleil(ler &2

rre*rsrtdi.r

fr*:i

I'6n fi I l'qrl r\

[({hlt.lsmF+r
l'sr,Bi'lqrtl l,I:l)

}*r!Uiltnill
*
l{ia,J.r 5rl L$lrlr Jil&per
Fr'rtl}ll0rti L&ll)

il

tlorr

1,P,1)

tryori L l.ll,

lfi&l] Ft)ttt

P$rf liFqrt (: l.LL

l'or, ?ilhn tl 1.i.l}


[-n*Nr iurno.r

I'orrrjPoriJ l.tlt)

Rrilj1t\fi--"
l'drlt lt.l)
\
,
Purl l' llrsrler i | \r ,{ unl\
'
t\(Dnh"
l\: I'( h'e.rlnrild
+ !rbl{.tuilrtxr
l\if U l.l.0

Gambar 6.7 Deskripsi Nlodul DST-51 V3

116

l.r. n

, - 1!\'Il(l

lnia)ili

LLT

Hdo'v
E,V
,TdG

ppv
AoI^I

/\O'{

HdqcuI{epTJ

cur
Hdq
rul]
HdcruI{epTJ
TdO,V PPV
fTJ
J
gV
Tn{
,\OW
L+,A
H08+'V qqns
fIJ
J

ToclruoJ,Taqei+'uJdc
:

,.

ouoso}{ Iepr1 eTTq Ieqel rsr ue{TTdureJrj

Aow

Toquo[Taqe[{ntunJ

d*fv
T

Telfiv-TsTsod

TIE3T

dooT
TE/[\Y-TsTsod
SAiUTf TV

rTST-UE

IED'I
IEC'I

cI\
du!-J

t+s 'HdL+'v

TIPsV

Toquro;TaqeJ,{n [unJ,

xAohI

E,Idqo,v

uE>[-FEqe '6uoso)i Taqef ETrgr


euT.ralTp 6ue^ apolt rPnsas teqel >{n[unJ,l

doo.I

doo.J

ue)ireqe 'H08 qeaeq rp apoxl

elep dP-rl ]inlun -rarurl Tersrul

TTEsV

.ZAluT,T,A TUT

TIPCV

alourallT rqurv

:
I

ocl-1Tur

TEC'I

dooT

:1-re1s

PfecSue Iued

nos

9Z

TlaE

-rolca^ 1dn-r-re1uI 1r-r"g,

H8Z+WOE 610
T?au
HgT+WOu 5rO
TlEE

-rolca^ 1dn-r.reluJ T .raurfiJ


!

f o13an

6:0

Htr+r[oE

T ?dn.r-raluJ Teu.ralxE i

Joloe^ 3dn.r.raluI 0 .raurfi j


!
folca^ 0 1dn-r-re1uI Teu.ralxEi

HEo+WOu

aex
610

TSAE

6:0
H +I^iOlI
durtv
l:e1s
woE 610
E

folcaA

fasaul
H000

n0E

,{o1I

sooJ'
T

goowS

:rrlaE'.f,uogu

g'ld pppd {nsptu 6ue{ eslnd reqel Eun}rq6ueu


6ue,{ 1ES6B1V IJep 0 rer.urf uplpun66uatu ue6uep up>{nyplrp tnqesJa}
sasord 'al^q qenqas rpeluau W)d llu{o} upleunDDueru ue{qeuefrelrp
uPp 6'td uod r.{elo erurra}rp UBIE 8e8?dosl nB}B 0tgg-ul rrpp le^urs

Bah 6: Bagian Pengendali Robot


Mov

DPH, A

Ret
AmbilRemote:

AcaIl
Mov

CekStartBit
R7, +8

AmbilDat.a:

Push A
Acal1 Bit
A
Pop
A
Rrc
Djnz RT,AmbilData
TRO
Cfr
Ret

cekstartBit:
Jb
Set.b
Jnb
Mov
Cjne
.Tnc
C1r
Mov
Mov
Ajmp

P1.3,

TRo

Pl-.3,$
A,TH0
A, #08H, $+3

CekStart.BitSelesai
TRo

THo, #00
TLO, #00

CekStart.Bit

CekstartBiLSefesai:

C1r
Mov
Mov

TRO

THO, #00
TLo, #0C

Ret

13rt:
,fb
Setb
,fnb

C1r
Mov
Cj ne

Jnc

Clr

Mov
Mov

P1

.3,$

TRO
D1 ?

TRO
A, THO

A, #03, $+3

Birl
C

THO, #O

TLO,

+O

Ret

Birl:
Setb

Mov
Mov

THO, #O

TLO,

#O

KCL
-Lna 1]'_L'1mer :

Mov
Mov

THO, #00

Push

A
A,

Mov

Anl

118

TLo, +00
TMOD

Or1

A, #OFOH
A, #01-H

Mov
Pop

TMOD,A

;'I'unggu SCarC BfE

;Panjang data bit

;Ambil

1-

bit

;Geser ke akumulator
;

Lakukan 8x

6n
e^ulntueTes

r-roruaru e}{ 4n[un6

.I:)rr-uEsar{ur-rr\Tdoor dutv
f,1o'c
3uI
.ra1{efex*ur.rrN TTecv
:

Hdo I

u{nuralTp urnTaq eureTes oJ.I e{ uT.rTx j

{ntunlrp 6^ rrouaur r.rp e1ep

TcSnV

QCrI-uI-rrx

lau
OJrl-urr.rTX,Hd0#,V auIJ
fldc+vo'v
c^ohl
,\oN
H00+'V
:

oCT-uesadur-rTXdoo.I
: oSrI-uESadu.t:T)I
1aE

CJT-IeTao TTBcV
r{e1ur-red-urTfTx TTecv
AOtr^I
H'T#,V
:

ueuex--To s-TnJ-re sae

_::::t_:l-t::t::_r::::

laE
CJT-IeTaC ITerv
r{e1ur-rad-ulr-rrx TTPcv
1!OI{
HOT+,V
: T-r TX-.rO S-rnC-rASee

Tf,T)i a{ jrosfnc fasa[) j


------ !
3au
GDT-^eTaG

qelurfad-urfrx

TP3\,

TTECV

HZ0#,v
Te1"le

l\Oi,tr

TEIYry-rSTsod

rsrsod e){ rTequrexj

CJT-.^eTaq
qelur.rad-ur-tf,Tx
H8I+'V
:

1aE
TTecV

TTeJv
/loInl

t:ty-z(e1ds1o-rasae)

-IrT)i a{

jrasagi
^eTdsTO------

qCT-^eTao
qelu-I.rad-urTfTx
I{dT#'v

1au
TTE3V

TTecv
1\oW

ueuey-.{eldsTOrasae

ueue){ a}{ xeTdsro rasael


___________

6:0

EOOJ'

1TS

I'Zd

SU

lau

Bab 6: Bagian Pengendali Robot

*********
IniI_LCD:

SUBRoUTINE

INISIAL LCD *******

SeIb

RS

Mov
Acall
Acall

A,

Mov
Acall
Acall

A,

Mov
Acall
Acall

A, +3

Mov
AcaII
Acall

A,

Mov
Acall
AcalI

A,

Mov
Acafl
Acafl

A,

Mov
Acall
AcaII

A,

Mov
Acall
Acall

A,

;
;
;

Mov
Acall
Acall

A,

#0EH
Kirim_Perintah
DeIay_LCD

;Display

Mov
Acall
Acall

A,#06H
Kirim_Perintah
Delay_LCD

;Mode Increment Address

#30H
Kirim_Perintah

;Kirim

30H

DeIay_LCD

#30H
Kirim_Perintah

;Kirim

30H

Delay_LCD

0H
Kirim_Perintah

;
;

Kir j-m

0H

Delay_LCD

#20H
Kirim_Perintah

Send Init

Delay_LCD

#2FH
Kirim-Perint.ah

;8x5 2lines
;

Defay_LCD

#08H
Kirim_Perintah

Delay_LCD

#0IH
Kirim_Perint.ah

i
i

Delay_LCD

#07H
Kirim-Perintah
Defay_LCD

ON

;
;

Ret

Kirim_Perintah:

P2.L
Clr
Acal1 Kirim-DataLCD
Swap A
Acall Kirim-DaEaLCD
Acall Delay-LCD
Ret

Kirim_DataLCD

Mov
Acall
ret

Po,A
PulseE_Cfock

PulseE_Clock:

120

Push
Mov
Or1

M^r,

D,

A, #0A0H

A,P2
I

;4 bit sebanyak 2 x
;

;Kirim ke Port 0
;Beri I pulsa E Clock

IZL

q8
e8

j
j

Hdo' ,
-2,
_T,
H,{0, ,
0'0 '0 '0 '0 '0 '0
0'0 '0 '0 '0 '0 'o
HJo' ,
0,
HdO, ,
6.
Hdo
8,
Hdo',
"
L,
HJO, .
9,
HJ0' ,
9,
HdO
?,
E,
z,
T,
HdO," ,
,
,

Hdo'
Hdo'

ac
80
Eo

sq
sG
EC

aq
AG
EO

so
so
EO

ao
Eq
Toquro&Teqe&

uTPT 6ue^ adrl


^uos To-rluoc oloue] xnlun uPbuepec apo{ qpTepe 00 TsTtoq qrseul 6ue^ elep-e1Ee
SLZS-,Od

EdIJ

TOUJNOC EJ,OI^ISU TOANO,I-TOSNO& TSSVJ

leu

,E
+
Hddo+'a

zula

Aow
:

zoJT-IeTao

lau
dod
E
doo.I-qJ.I- eTaG,E zufo
dod
I
zocrl-^PTac T TesV
g qsnd
:

dooT-OJT-IeTaO

HgO+'a 1!or{
E qsnd
:

cJT-IeTac

1aE
TTesV
TTPcV

zoJT- ETaq
qelurf,ad-ur-r-tx
HZj+'U

.^oli
qJrI-T

r-reE

lau
qelur"rod-rullrx IIPcV
,\otr{
H0c0#'v
:

qJT

qJT-^eIaO
oJTefeo-ur-rrx
V
of,-lP1ec-urTf,rx
1'ZA

^eTeci!

xz cJT a)i j

: ,TA

oJT-ZSr-rpg

1au
TTerV

rresv

dEiS
IIPDV

qlas

1IP"TEII-lll'F

f,

T)

1au
doN

doa

ruv

H,{0+'v

.{Or{

vcd

Bab 6: Bagian Pengendali Robot


;8e

DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
END

;8f

. oe

i99
;9a

0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
r+
r'nEU

',OFH

0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
'Select'

,0FH

Remote dengan Media Gelombang Radio


Gelombang radio merupakan media yang paling leluasa, mengingat
media ini mampu menembus halangan dan tidak harus berada pada
garis lurus. Namun, dibanding inframerah, media ini lebih rentan terhadap noise apabila disain pemancar dan penerimanya kurang baik. Hal
ini disebabkan oleh tingginya frekuensi yang digunakan sehingga sedikit
perubahan pada jalur PCB saja akan membawa pengaruh yang cukup
besar.

Bila pada media inframerah digunakan PCM sebagai modulasi data,


pada gelombang radio digunakan metode ASK (Amplitude Shift
Keying) atau FSK (Frequencg Shtft Keying). PSK (Phase Shift Keging)
kadang-kadang juga digunakan untuk aplikasi-aplikasi tertentu. Yang
paling umum digunakan adalah FSK, di mana getaran dengan frekuensi
lebih tinggi biasanya mewakili logika 0 dan frekuensi lebih rendah
biasanya mewakili logika 1.

122

r
ezL

'plpp rpefueul purrJo]rp 6up1t orppJ


Duequole6 1er{urs-1er{urs qeqn6ueu 6uef VZ-X1 Inpow ueleunBrp ledep
Bruueuad rsrs eped 'orper 6ueqruola6 elpp upJp)ued rpefueu 1cr1sr{of
IoqLuol ueuelauad upp ue{era6-uelera6 qeqn6uaur 6uer{ Jollor}uo)
leqsr{op Inpour qenqes nlre{ 're11or}uo) ,(of-C Inpou ueleun6rp ledep
rur orpeJ Euequole6 rnleler.u ueryepue6ued sesord qepnruradueur {n}uF)
'lapuadradrp ledep euelue 6uefued
uern>ln eIBr.! 'r66uq 6uBf rsuen{o{ ueyeunDDueur ueDueq .JHD rp)
-uerued uep (tautec) emequad rsuenla{ qplepe Jo}BIrso uep rsuan{eq
ySJ Fefipo6l ue6uap olpey Oueqtuolag l'sz-qrunurcy g.g requeD

z+cb'ztz{l)g16
/r uo-Lvllso

]vtuSs

vfvo <

-l_.t-

uotvtnoon:o
ysl

ffil]umn

ulAt33lu
lHn

ilrm

UILLIY{SNVUl
JHN

ao-LVrnoor!

vsr

]vlufs vlvo

um tlljl]]]]Jiln ]t.ZHD

V'Z uep 'zHW 916 'zHW V qelppp lrloqor rselrlde eped ueleun6rp
Lunllrn 6ue1 'rolelrso qalo nluapel rsuan>{e{ ue6uep ue>peie6rp ntnqep
:etueu;ed euelue e1 ueluedunrp urnleqas }nqasJa} ySJ 1e{urg

L{rqalJa}

Bab 6: Bagian Pengendali Robof

Gambar 6.9 Komunikasi D-Jog Controller dengan Modul DX-24 pada robot

Dengan menggunakan D-Joy Controller, Proses modulasi-demodulasi


FSK maupun modulasi-demodulasi 2.4GHz telah diatur oleh modul DX24 yang ada pada robot mauPun yang ada pada D-Joy Controller.
Selain itu, proses pengalamatan dan Pengaturan frekuensi dapat diatur
dengan mengubah nilai-nilai register pada DX-24.

Modul D-Joy Controller ini juga mengkonversi data dari Joystick


Playstation menjadi data-data yang akan dikirim ke DX-24. Data dari
Joystick dikirim melalui kaki data ( 1) dari konektor joystick.

?ftS
tArS
4PS
&r.s * i.* *:,.&:1,: ry &'6
Gambar 6.10 Konektor Jogstik

Kaki nomor 2 berfungsi untuk mengirim data dari mikrokontroler ke


joystick. Baik data mauPun command, Proses pengiriman selalu diiringi
dengan sinyal clock pada kaki nomor 7 (Gambar 6.10). Setelah
Command diterima oleh joystick, sinyal ACK akan dikirimkan oleh
joystick ke mikrokontroler sebagai indikasi bahwa perintah dari
mikrokontroler telah diterima.

124

!r
9ZL

'(inol ;q1e elepp Ioquol


enu;es) uBlelrp 6uBr{ efes pupru Ioqtuo} rser.uJoJur rsrJaq 6ue,{ 1rq g x 9
elpp ue{tur.rr6uetu lnsfof 'n1r qeleleg 'urlrlllp up{p etpp p^\qpq uenqe}
-rreqrued re6eqes (ZgxO) elpp up{turrr6ueu: ue6uep selequreu 1sr1sr{of
eletu '1cr1sfo[ qalo pturJe]lp (Z?x6) plpp qele]eg '1cr1s{ot r:ep elep
plurrue(u {n}un (ZVxO) elep urrr6uau e6nf relorluolorllul ,ql urur6uetu
>1crp{so[ ]eBS eped '(6o1eue >1tr1sfof Inlun Zxg uBp le]l6lp >1r1s,(of In]un
t7x0) lrqsr{of Irep CI ue11nfunueur 6uer{ elep urrr6uetu ue{p lrqsr{ot
elptu '1or1sfo[ qalo.prurretrp peu]tuo) Ue]s qele]es .(tOxO) puetutuo)
pels re6eqas elep rurrr6ueru uep 1r\ol elrEopeq IIV uld lenquretu snJeq
JeloJluo{or1[u '>1tr1s,{oI rrep e]ep lrque6ueru ur6ur rallorluo{oJlru plrr

1elras ere)os eTep a1ftq y

ueultlOuad II.g requeD

edp3l,\,oll)lcv

w>lilmqnq !p {?plJ

)cv

t/N

6
8

BIUBN

uebrrBJele)

VJVC

EN(T

GI^IJ

pusruruo3

J/N

{8prJ

CNC

).IJ
IJV
J]A

prmorl)

{COIJ

qllll'ued i uorlue$v
3cA
r.raldr.mqnqrp

4tt1sfro7u14

pendyluoy

pqet

uld

Bab 6: Bagian Pengendali Robot

ATT

rltr(

Gambar 6.12 Timing Diagram Pengambilan data

Dengan adanya D-Joy Controller, proses pengambilan data tersebut


telah diatur oleh modul ini sehingga anda hanya perlu mempelajari data
yang diterima pada DX-24 penerima (di bagian robot saja).
Sinyal dari frekwensi 2.4 GHz diubdr

renjadidata SPI oleh DX-24 dan mqjadi

Data dd jaystick diubah renjdi


SPI dan ditransmisikan oldl DX-24

input dan otak robot

((((((((((

-..r,l

oxza ---!
:-l
\\l
\.i

\iti

ll
il
il

_E- .,\

tI

toro'
I

Gambar 6.13 Proses Komunikasi Data dari Jogstick ke Robot melalui


Gelombang Radio

Modul D-Joy Controller ini memiliki 4 port joystick sehingga dapat digunakan untuk mengendalikan 4 buah robot dengan 4 joystick hanya
dengan menggunakan 5 buah Modul RF DX-24. Empat buah modul
diletakkan pada 4 robot dan sebuah di D-Joy Controller (Cambar 6.14).

126
jt

LZI
ZHDT'Z raalacsueq

bz-xa lnpow 9l'9 requeD

Ounqnqta7 4cl1sfrof qenqas ue6uap ranorluoD frof-O

fipo6 EI'g requeD

'loqor eped epe 6ue( y7-yq burseu-EursBtu letuele


a1 ueque6Jaq pJe)as er{uuelur:r6ueru uep Eunqnqre} 6uer( lrqsr{of

leduaal rrpp elpp 6uruuels up{nleleur up{e rallor}uo) ,(of-q Inpow


ranoquoD fiof-e Lpnqas qalo qc11sfrolV ueduap pqor ? lppuay ?I'g requeD

l +,.-o /

' 'JL!'
1\

't +/

'l**'
____:-l

' ,-11./
!jv'
1
:\-Y

\rl

Bab 6: Bagian Pengendali Robot

Tabel3 Data RF Jogstick


Bit o

Data

Bit

Bit 2

Bit

Bit 4

Bit 5

Bit 6

Analog kanan arah kanan kiri ( 00 sampai FF )

Data2

Analog kanan arah atas bawah ( 00 sampai FF

Data 3

L2

R2

L1

R1

Data 4

select

Start

Data

A
up

\-l
right

Bit

down

left

Tabel 3 menunjukkan data-data yang diterima oleh bagian DX-24 pada


robot. Dengan adanya D-Joy Controller, Anda dapat fokus mengolah
data yang ada di tabel tersebut tanpa harus mengatur sinyal-sinyal dari
joystick. Selain pengiriman data melalui gelombang radio, modul ini
juga dapat mengirimkan data melalui port serial dengan protokol seperti
pada Tabel 4. Pengiriman data melalui port serial ini dilakukan dengan
menekan tombol select pada joystick.
Tabel4 Protokol Data Serial D-Jog Controller
Pengiriman data dari Joystick ke PClMaster
Nilai
Data
Bvte

Bvte 0
Bvte 1
Byte 2
Bvte 3

Header

1E

Destination lD
Destination Number
Source ID

00

Byte 4

Source Number

01

Bvte 5

Lenqth

07

Byte 6

Perintah

01102

lsi Data
Checksum

128
i

01
72

Keteranoan

lD D-Jov Controller
Nomor urut
Joystick/Robot
01 = Keluaran data dari
Joystick
02 = Keluaran data dari
robot yang
dikirim lewat RF

6ZL

renses VZ-X1 up6uap Dunqnqral uep loqor 1e1o reDeqes rsDun;raq


lul Ipq
Luelep IES6SIV ralorluolorlru up{pun66uar-u 6ue,t p63 oqod p}leq

Dd)

oqoy e77aq ueiuap ?Z-XO ueDunqng

9',Zd

ndc o80u

vltfo

o'zd

,'zd
9'Zd
L'Zd

/I.g requeD

tuo
33

sc

,z-xo

LIIC

'loqor rJpp lplo re6eqes relorluolorlrru qelo qelolp uep loqor eped epe
6ue( y7-yq qelo BurrJelrp Jellorluo) ,tof-q qelo uelurrr>1rp 6uer{ >1cr1s
-r{of elep eueure6eq rrefeledtueu ledep ppuv 'rur lnlrreq rselrlde epe4

Jollorluo3 rtof-O lrep ElpO Brupouod lselrldy

00
00
00
00

ZO

I.Unsl)aq)
00 nlPles
00 nlples
00 nlBles
00 nlplas
Z lrq BbDuq Iq IrBp
Uod e4xg e>116o1 rsrpuoy
qelulred sluer

z[ eug
I I el^g
0t aug

6 e]Ag
B

eug

Z e],tg

9 aiAB

(.racaog oqog plleq eped efueq) loqor lrep elep uerpnlay

I.Uns{)eq)
I)qs^of g etBC
>{)qs^of g p}pc
Y)rls^or 7 Blecl

IO

g[ e]^g
z[ e]^g
I I a]Ag
0t al^g
6 aug
9 e]^g

qElurred srusr

B el^g
z el^g

I)qs^or E Blecl
pqs{op Z ptp(l
{)r}s^of I plp(l
>1c11s[op Upp

elpp uprenley

Bab 6: Bagian Pengendali Robot

konfigurasi yang dapat dilihat pada Cambar 6.77. Data-data akan


tersimpan pada Buffer TRW24 dan Anda dapat menggunakan data-data
tersebut untuk aplikasi robotik sesuai kebutuhan.

D-

joy.

asm:

$MODs l-

;DEKLARASI

DATA
CLK1
CS
CE
CLK2
DATA2
DR2
DR1

I/O SESUAI DELTA ROBO


P2.1
BIT
P2.6
BTT
P2.4
BIT
P2.O
BIT
P2.2
BIT
P2.3
BIT
P2.1.
BIT
P2.5
BIT

CPU PORT

. DSEG

30h
Org
PanjangData EQU
BufferTRW24 Ds

PanjangData

; MAIN PROGRAM
; - Data dari dari joystick
hingga BufferTRW24+3
;

akan disimpan pada BufferTRW24, BuffertRw24+1

. CSEG

Loop:

Org

00

LcaIl
Clr
SeTb

CS

Jnb
Mov
Mov
LcaIl
Ljmp

InitRecTRW24
CE

DR1 , $

R7, +PanjangData
R0, #BufferTRW24

LoopTerimaData
Loop

;KUMPULAN SUBROUTINE

.************************************************************'subrouting
TRW24 dengan pengalamatan sebanyak 2 byte
; - R6 = alamat. byte 2
; - R5 = alamat byte 1
; - R7 = panjang data

untuk mengirim data

SendTRW24:

Mov

130
;

A,R6

;Kirim byte 2 alamat tuiuan

teL
ef Pceurr-reJdoo.I ,Lu
OE

v'oua

J,SE

zula
JlrI

1\ol{

eleoeurrfeJ, TTecv
PleOEur-lfaJdooT
:

$'tuo

TIIC
Ef,
SJ
eleobue tued+ 'Lu
0E
7ZMEJ,-rof linS+ '

aNr
SJES

g.IES

U'IJ
AoI^I
notr^I
:

\rr[r'uE,tr

efep .raJ]nq Teae ?eueTe = 0E - j


e?,ep 6uE[ued = LE - ]
elep Eur-rauau {n1un aurlnofqnsl

TZMEJ,

=====.1

,{IUIX

rsu
"ITVJV
:

C1

EC

NV)I-I,\IIEI)
Vfr1

A.ISS
:

NV)I-,{IEIX

VJVO-hIIUI)
dr^Ils

el

orEo

EJ

1ITC

HVJN]Ud-WIEI}
JEtI
dod

CTE

V
TXTJ

AOI{

3,V,IVC

a'lEs

ulc

TYTJ
TXTJ

ETJ

VJVO

zNtq

x8r.{rEIx 'a

E'ID
:

8#

'8

xSNrur)

AOr{
HSOd

:,{TEI)

l alt
csq

TX

zuCfr

$
,s

A&ES

sc
,a

.\Or{

r-i0 8 #

zutfr

ZPIU.I,PuoSdoo'I ' LE

1I1J

ac

AOhI

080'v

JI]I

VLLVU hI-LtlI)
nv

'11VCV

,zMEJpuesdoo.l

,zl,1E[.ra]:JnE#'01I /\oN
eleo-ur.rrx TTecv
gu'v
,{oN
Eleq-uT-rrx TTecv

uPn[n1 leueTP T al^q ur]rx]


!

Bab 6: Bagian Pengendali Robot

TerimaData:

PUSH
MOV
MOV

B, +8

A, +OH

TERIMASX:

CLR
SETB
SETB
RLA

CLK1
DATA
CLK1

Nop
Nop

MOV C,DATA
MOV A.O,C
DJNZ B, TERIMASX
CLR CLKI.
POP B
Ret

SUBROUTINE UNTUK

INISIALISASI Dx-24 /

TRW-24

IniLSENDTRW24:

AcaIl

IniL_TRW24

Acall Ambif-Tabef
A.0
Clr
Acal1 Kirim_Printah
Ret
InitRecTRW24:

AcalI
Acall
AcalI

IniI-TRW24
Ambil_Tabel

Kirim_Printah

Ret
INIT_TRW24:

132
I

''T
I

CLR
CLR
CLR
CLR

CE

Mov
Aca11
Mov
Acalf
Mov
Acall
Mov
Acall
Mov
Aca11

A,#Oh
Kirim_Printah
A, #0
Kirim_Printah
A, #0H
Kirim_Printah
A, +1*8
Kirim_Printah
A,+8*PanjangData
Kirim Printah

Mov
Acall
Mov
Aca11
Mov
Acall
Mov
Acall

A, #CH2AddressByte4

DATA
CS

CLKI

Kirim_Printah

A, #CH2AddressByte3

Kirim_Printah

A, #CH2AddressByte2

Kirim_PrinLah

A, +CH2AddressBytel

Kirim Printah

;Send Reserved Byte


;
;
;
;

,'Channel 2 panjang 1 byte


;

;Channel 1 panjang 6 byte (48 bit)

7
e6r

CNg

6ue^ {orls^of

-rourou

ueouap rEnsas

loqou-rouroN

o0u

a1^gs sa-rppYTHJ

0al.{gssarppvzHc
Tal^EsserppvzHJ

n0s
n0s

o0s
n0s
o0s
o0s

00
00
00
00

n0s

zal,(EssalppvTHJ
te1^assarppvTHJ

,41^ES sa-rppvTHS

a1^8

sa-rppvzHc

tal^assarppvzHJ
?e1^g

nog

aTT0000T0

sa-rppvzHc

loqoE-rouoN

8T0000000

0T x 0 + ZHDV'Z Tsuan{a.rdl

gpo fa1vlod j
(TT0) Te?s^a) zwn 9I!
sdgl^I T !
1s:n8lcoqs j

a f,uc

ue{eun6rp
0el.i{SsserppvTHJ

o0B
n0E

00
00
00
00
00

TO

ZHJ^I

8TTTTOTTO

Iauuer{3 aTOurS l

aTqeuE .rotE-rauae JUJ dTr{c No

lTq 9T i
ECov j

9T = I{16uaT

ao

AO

EO

:,IINI_'ISSVJ

.IE1I
cAoI^I

u,tdo+vo'v

nor{
0#'v :.IEAVJ-'II8WV

NIE]X?ZA{E,I_,INI,S
.IIJdO

,IEE
ZN.CO

JNI

HV,trNIlId-WIlIIX'I'IV3V

Teq[-Trqurv
:

TTEcv

,{IUIY7 ZMEJ_JNI

,IINI-TEAVJ+'}r,tdG
Z+,9

AOr{
AOId

qelu-Ifd-lur-rrx rlecv
oal^gssa:ppvTHJ*'v Aol^I
qelur-rd-urr-rrx TIcv
Ta1^gsse"rppvTHJ#'V Aol^I
qelur-rd-urrfrx TIecv
Za1^Sssa.zppVTHC#'V 1!or[

qelu-[rd-urr.rrx TIesv
tel^Essa"rppvTHC#'V 1!oN
r{elur-rd-urI-rrx TIecv
,a1^gssa.rppvTHc#'v l1'ohl
qefur]d-rur.rrx ITeDV
Oal^gssa-rppvzHc+'v ./\oli

Bab 6: Bagian Pengendali Robot

Bagian Otak
Seperti yang telah dijelaskan pada bagian sebelumnya, bagian ini
berfungsi sebagai pemberi keputusan dan perintah agar bagian motor
aktif menggerakkan mekanik-mekanik robot. Selain itu, otak juga harus
memiliki unsur memori yang berfungsi sebagai media ingatan robot.
Contohnya, robot yang menyimpan gerakan-gerakan yang dilakukan
pada memori saat melewati labirin agar rute yang telah dilalui tercatat
pada memorinya.

Modul Delta Robo CPU merupakan modul yang sesuai untuk aplikasi ini
karena modul ini telah memiliki Port DC Driver untuk mengendalikan
Motor DC, Infrared Line Sensor dan Ultrasonic Transducer untuk Input
Sensor, Infrared Receiver Port dan DX-24 Port untuk Input Remote, dan
1 kb I2C Serial EEPROM sebagai memori. Selain itu, modul ini juga
memiliki Port ISP untuk keperluan men-download program ke dalam
mikrokontroler Delta Robo CPU

ISP

Dtt.TA *()B{} Ii}l}


I}C DRIVEIT FSRI'

ProgEmElaE

Prr{

lrfr{rrd ljs$

S$r$fir

P{d

!
o
i

llltrsoolc Y}*nrdEder
fort

tl(b l2C f{rtfit


EEI'ROH

B{tl{rt Cotrodor
DELTA ROBO KITS
DELTA ELECTRON]C

Gambar 6.18 Delta Robo CPU sebagai Otak Robot

Agar otak robot ini dapat berfungsi, terlebih dahulu harus dilakukan
pemrograman pada mikrokontroler yang ada di dalamnya. Pada Delta

134

.j;i

:
I

eel

i
i
I
,1

',{1ddns remod uB{JI}IV

'dx s^\opurlA {nlun }eq'dx-dsl

L{D}pd

ueIuEIer

'uPr{y rulsy ue}pnq 0'wDd dsl arpn\uos up>lupler

ueqy ulsv uelenq otutuetfiord dSI eua4s

aoI]3NNO] SZEO

t----r
o='rf

,,il
r

ZT ONH E NId

6,1.9

requeD

rO

.LUOH5

^f-

IHOd

IdE
]I

1H0d
NUd

]H

9.J, 9U

z^

b,JT

Z,

bH

T1

ET}
DT)

EA EH

b
5

z,rJ

TH

zso

f5 1 ]Hbt

]}VJEf INI H]I,{I,,{VH5OUd-dSI

'6I'g JeqLueg eped eurels eped


epe 6uer{ ueuodruo>1 ederaqaq relEuereu ue6uap ue{n>lplrp qepnu
ue6uap ledep )d uod 1e11ered rnleleur reunuBr6o.rd un6uequreru InluD

uod lollBJed !nlelau ueJoord peolurnoo


'gSD trod nple )d Uod IellBred rnlelatu ue6uap n1re,{'tE-lsq
ruedas IES6SJV JeloJluo>lor>lrur uelsrs nplp Dd) oqo5 ellaq e{ )d
r:ep (tuer6o.rd peolumop) urerDord uesrlnuad sasord sruef enp ledepral

'Dd)

oqo5 ellee rlBIBp epe 6uef tEs6g1y relorluo>lor{rru rrep WOddE


qspl-j rsr6ueu: Inlun uplnlplrp ledep dSI BJB)as tuBr6ord peoluly\op
sasord uep rur god eped ue>lDunqnqlp ledBp reruruerDord 1e16ue.ra4
'lnqesJel uenlradaq Inlun
rs6unyaq 6ue,{ (6unuuer6or4 urels,tg ul) dSI pod erpasJal Dd) oqo5

Bab 6: Bagian Pengendali Robot

Tekan tombol Signature. Signature bit dari mikrokontroler akan


tampil pada layar yang mengindikasikan bahwa PC telah terhubung
dengan baik pada sistem mikrokontroler.

Tekan Open File dan pilih file hex yang akan di-download. File ini
dapat berupa file yang ada pada contoh-contoh program atau hasil
assembly dari program rancangan pengguna melalui RIDE atau
Delta Studio.

Tekan Write. Akan tampil progress bar yang menunjukkan bahwa


proses download sedang berjalan.

Untuk me-reset sistem, pengguna dapat melakukannya melalui PC


dengan menekan tombol signature. Apabila signature bit tampil,
berarti proses reset berhasil.

ffitii;fliiti#
:
ra

i;f
t

lryrfieloe

i!;i;i:::i:i;:

I slAnffUfA,

i .i ir .i

i
,ry.:,xta"B.l*-t

:i:i,

,fi,,:Look8iF:ii

;l :i :li:t :l :r

aernrO fite .l
*;--:.---Ji

I i:r;

,ii;;;

ilti*tlf
Il7

;il;

r*'

:r!i,s..tl{r*,iEft

!ii:i! i i: :;:i,: i:r:


ti:

r,:l:.:l::l
efout.i
:l:::: :: It
;,*;:l:tr;i:i:
I'
I r;i;liiI.{a
;:
:t:tr.tl
$E*Hffitr
ll!!ll!tlt!!l!!#'

itr

ir

:i:J

t:t

r::

hq x[,.i .bb i]il

::

;r::.;:

::::t

::l l:r

!l

ail

Gambar 6.2O Asim Khan ISP Programmer

Download Program melalui USB Port


Dewasa ini parallel port sudah tidak lagi digunakan pada notebook dan
bahkan pada PC sekalipun. Teknologi USB telah mendominasi port-port
ini di berbagai jenis PC maupun notebook. Untuk itu dibutuhkan
programmer yang dapat melakukan proses download melalui USB.

136
-Lm,
L

_Ei

'epuy >looqelou/)d eped e,(urrrpuas ue6uep


le]surre] ueIB 0.ZA
dSI-DC {ntun relrrq gSD uep gI., olpntSUAV uBr6ord uelrsele}sul

0'ZA dSI-Dq ueleun66uau


ue6uep ure:6ord peolu^\op-uetu Inlun qe>16ue1-qe16ue1 qplBpe ]n>lrrag
0'zA dsrDQ uod 4ep7

epl requeD

zz.g requeD

0'zA dsrDo lnpow IZ'g requeD

'dSI IIuIel ueleun66ueu


6ue,{ 1aur1y Jalor}uo{orrrru tup)pur re6eqreq e>1 urer6ord peoluanop-ueu
qeyepe 0.ZA dSI-Dq

Inlun ueleun6rp ledep 6ue,{ ggpl reruruBr6ord

Bab 6: Bagian Pengendali Robot

Buka program AVR Studio 4.76 dan pilih Auto Connect pada bagian
Tools - Program AVR.
: l$et h{jrd. 3ri}d ,t,i*:
* **l-"il 8,rii ui#i,,:

Ioo,, ig::^$.,..S:F......
ail_'l8tE%..

,=

I trael*Figbi+d

ri'ririo gp;Gcr:,

rr,i,

..

:ffi,*L#
..

:j

! nAiiCEsl$ilpqrRdE
,! 4r(e nllri lpgrigE,.
;i fiemr *ts usg,"a*
. r.3 Jrrglfl lpg'ine
- Si\6efB{rn*r
:lr

.l Qpti*nt,

ti,l

iY$ tt;set.:r si!Jii

*li

rve.3nery:t{cis

i;n'ii

4te Qtn*rh Sts*,a

Gambar 6.23 AVRStudio V4.16


AVR Studio akan mendeteksi port USB yang terhubung pada DU-ISP
secara otomatis dan sekaligus mendeteksi mikrokontroler target
yang terhubung.

,e

;DrqsiFlM:tet8fts:kdd.
oekil

5$tu8@

'
i:i,ldft.El

rurcq"iryft

i;

,^.91*:.9.:l1,1.i

ad

Fq]@kd&dl&gdsdiv

iiF;;a---**"*--- -**:1

i
I

i
i

;D@@!54'.
ffisPd_[dmffi&,milt&d
:Etw'$s..@E j0.@ L(

Gambar 6.24 AVRStudio mendeteksi mikrokontroler pada DU-ISP Vz.O

138

6r

uolslA apoD prezql4 gz'g requeD

'upleunDrp 6uer{ relor}uoloJlru srueI uelrensas


uep 1re[o:d prezrlA opo) uerpntue{ slool qrlrd 'epaq:eq elrqedy
'1e6re1 ue6uep erues
6uer{ relor}uoyoJyrur ueleunDDuaur Irqurprp 6ue,( lcaford uplr}sed

'peford qoluo) re6eqas salduexE/U1y1) raploJ eped epe


6uer{ 1te[o.rd nles qeles 1r66ued uep uorsr1 epo) uer6or6 1r66ue4
'uorsr4 epo) ueeun66ued

Inlun uelnlelrp 6ue,( qe16ue1-qe16uel lnlueg 'nlnqep qrqelrel xeq


Inluaq eI ) rJep elrduoo seso:d uelnlplrp BEnf rurs rp 'peolurnop sesord
urplas ') eser{Bg Luplep uBr6ord e)rnos In}un ueleun6rp eu{ueserq
rur eJp^\UoS 'uorsr1 epo) areagos ueleunDDueul ueDuep uelnlplrp
ledep e6n[ uerEord peolumop sasord 'olpn]Sdnv ueleun66ueu urplos
Luelep

a{

'1eDre1 Jalorluolorlrur
uerDord uelsrlnueu up{e dSI-DC upp r-uer6or4 IIIy
'ue:6ord uer6eq eped xaq elrJ peol uep uet6ord qeJ_ qllld

Bab 6: Bagian Pengendali Robot

Pilih File, kemudian Cenerate save and exit. Simpan nama file baru
sesuai ekstensi yang sudah ditentukan oleh Wizzard.
Pilih Project, kemudian Configure dan After make. Aktifkan Program
the Chip agar proses programming langsung dijalankan saat Proses
compile selesai.
dl This plq{r$

rle,

rrEs lriduEen

1f,compiElleetuB,,{i&e

$ogram the

Mirge

datE

bY tle

AltshlahFl, :'

r !reate

Ch[

:,

Usert Pmgrem

*ffi a.Rgfi Fto ts Fusil

PflsmmiFg

thip Prog,amir{ Odiffi

-:J

,,

'" r '
lj EoP,,xu,*ion
I
I r:"- Proqmfuire disabhd

-r

sx

rr"o

' FLASH

5ooffi-

L**,8ile

ii
-

'

l
:

PEsIEm

FE

B(sl

:I LKSLLU=U

4:

lKsEL2=o
lf:
iT

..1.
I r:

lll crsrrr=o
CK5EL]=O

Fros.lY,Id SltEititr di|*led il 5UT0=0


i[] sull=o
:,'
-i:
;'Eoott*liBit0--::1 : r Spdlm&8* tn. EBlnSSe=t ' ! i; 8l1=tafxil i

t'
,r

:r:

lf: EoDEN=o .:'


if: B0DLEVEL=0 r;:
iri B00TEST=0 ;i

: I a' 811"flt12=1
::r
att=ue0?=P I : r" elt=0Bt:+: iT cKoPT=o :i:
!f JTAGEN=0 .,..'
! i-' Bol=1 Be=[ . : r" 111.1 8'1?=0 il- oro$t=o
ill wDroN=o B,
1# ElEck siffinture '- fl@l Erase l* P!*eNe EEFB0M ? ysry

efi.+eg2=t

:I

iT BooTszo=o
iT BooTszl=o
IT EEsAvE=o

i
i

,l
i

ri

t
t
I

*!*d I -?
6l ,',. ,.'.

aetp

E iriEiaifzatisn

Gambar 6.26 Konfigurasi Proiect

Klik OK dan klik Project - Make sehingga Proses comPile dijalankan


dan selanjutnya Code Vision akan menanyakan aPakah Proses
programming dilakukan.

140

f
LVL

'UBInIPIIP

qepnur L{rqal uBIB onres Jo}oul llepue6uad sesoJd elpur 're11or1uot


oNas plnurJelue ue>1eun66uau: uB6uap'uet>lturaP unuIBN'p{nlrrJe}ue
Dlrlttueru qepns 6uBr{ omes Jo}our llen)e{ 'lolotu sas>le6ueur 6uns6uel
'1nqasre1 Jo}otu-Joloru uB>lllepua6uetu tuelpq

ledep {epq }oqoJ

{elo

'lnpns ue>1e.ra6 edntaq


ue>1era6-uelera6 Inlun onJes Jolour uep 'r66ut1 IsBJnIP ue6uep rselrlde
Inlun reddels Jolour 't66ut1 ueledaral uPlqnlnquau: 6uBr{ rse>1r1de
>lnlun )c Jolou nlrer{ '1oqor eped ueleunErp psPlq 6uBr{ rolour UIB)PLU
ederaqaq ledeprel 'edurs6un; ue{rpsepreg '}oqoJ {Plo qalo ue>llraqlP
6uer{ qelurrad-qelutrad rrep euesleled uet6eq uelednlelu tut uet6eg

roloru uBloBg

'ue{n{plrp
era6as uB{B EurutuBr6ord sesord uPP d1q)

eqt tuer6or4 {lN

uolslA epo2 eped tuet6ot4 peolucnoq sasoJd lZ'9 requeD

f;#*i':Hsp-e--re:l
[Nsn]Ft'0)W,eE!

[B0ud]lP20 0)(.)arq0

sz!

sQsh

F@o!

Flil

se

u0 @rP+i.NBrtrl.@F!:
!0:@r${su.E. P..uEwl!
s.AsM@ fr8i

e\ Pflun'ru:

oN l0ol PP.@ordi

qFs lu :$mP.l !E..{ri


@h'p t.hpe,p!q9l

az,9:6r.ru80i

!rus lorydE@H:

-,-._

@lPddv:dle6rd:
BZ I6tu1V d{ti

::".r*-r1:":l;wg1dl*fi6l..6El

Bab 6: Bagian Pengendali Robot

Motor DC
Motor ini adalah motor yang paling sederhana untuk pengaktifannya.
Hanya dengan memberikan tegangan DC, motor ini akan berputar
secara kontinyu ke arah tertentu. Membalik arah putaran motor dapat
dilakukan dengan mengubah polaritas arus yang mengalir pada motor.
Motor DC biasanya mempunyai kecepatan putar yang cukup tinggi dan
sangat cocok digunakan untuk roda robot yang membutuhkan kecepatan gerak yang tinggi. Juga dapat digunakan pada baling-baling atau
kipas pada aplikasi robot pemadam api.

Untuk mengendalikan motor ini dibutuhkan sebuah rangkaian yang


disebut rangkaian Half Bridge. Rangkaian ini akan membuat arus
mengalir pada motor melalui dua kutubnya secara bergantian sesuai
arah yang diinginkan. Gambar 6.28 menunjukkan rangkaian Half Bridge
yang dilengkapi dengan proteksi hubung singkat. Rangkaian ini dapat
dijumpai pada Modul Delta DC Driver yang memiliki dua rangkaian Half
Bridge sehingga dapat mengendalikan dua buah motor DC.

Apabila transistor PNP yang kiri aktif, transistor NPN kanan juga aktif
sedangkan PNP kanan dan NPN kiri non-aktif. Arus akan mengalir dari
sumber daya positif ke kaki 3 JP4 yang terhubung ke kutub motor dan
diteruskan hingga kaki 4 JP4 ke sumber daya negatif atau ground.
Sebaliknya pada saat transistor PNP kanan yang aktif, maka transistor
NPN kiri juga aktif sedangkan PNP kiri dan NPN kanan non-aktif. Arus
akan mengalir dari sumber daya ke kaki 4 JP4 dan terus menuju ke
sumber daya negatif melalui kaki 3. Dioda berfungsi untuk mencegah
adanya tegangan reverse akibat induksi motor.
Pada rangkaian Half Bridge, hal yang tidak boleh terjadi adalah keempat
bagian transistor, yaitu NPN kiri, NPN kanan, PNP kiri, dan PNP kanan
aktif bersamaan. Hal ini akan menghubungsingkatkan sumber daya
positif dan negatif. Untuk mencegah kondisi ini, rangkaian gerbang
Iogika yang dibentuk oleh IC 74LS02 diatur sehingga NPN kiri dan NPN
kanan aktif bergantian. Hal ini ditentukan oleh kondisi logika pada P1.0
sebagai penentu arah gerakan motor. Sedangkan P1.i berfungsi untuk

mengatur apakah motor dalam keadaan aktif atau tidak. Bila kondisi
logika P1.0 adalah logika 0, maka keluaran U3B akan berlogika 0 pula
selama P1.1 aktif (berlogika 0). Hal ini akan mengakibatkan transistor
NPN kiri non-aktif. Sedangkan keluaran U3C akan berlogika 1 yang
mengakibatkan keluaran U3A juga berlogika 1 dan transistor NPN

ri
Nl d 1fruls 4nruag

6,2'9

requeD

ledac LlequrEuaq rolow

ruor

i<-

raaltQ

)o

apouad

enaQ eped adplrg heH

eua\s 8z'9 reqlueD

'rur upr6pq rnlelal'u JnlBrP lPdpp uBIB Jolou {BJe6


ueledaral P>{Bru 't'Id eppd wlAd up{lDl6upqrueru uP6ueq 'rolol.U
1e:a6 ueledacal rnle6ueu {n}un rsDun#eq BDn[ t'ld 'JIDIe upuB{

Bab 6: Bagian Pengendali Robot

Gambar 6.30 Modul Delta DC Drioer dengan Dual Half Bridge

Motor Stepper
Pada dasarnya ada 2 jenis motor stepper, yaitu bipolar dan unipolar.
Sebuah motor stepper berputar 1 step apabila terjadi perubahan arus
pada koilnya yang mengubah pole magnetik di sekitar pole stator.
Perbedaan utama antara Bipolar dan Unipolar adalah sebagai berikut :
Bipolar

Arus pada koil dapat berbolak balik untuk mengubah arah putar
motor.

Lilitan motor hanya satu dan dialiri arus dengan arah bolak-balik.

(nipolar

Arus mengalir satu arah dan perubahan arah putar motor tergantung
lilitan (koil) yang dialiri arus.

Lilitan terpisah dalam 2 bagian dan masing-masing bagian hanya


dilewati arus dalam satu arah saja.

r
9Vl
o'zA go-tgg raddals lgpuaduad 4nelua4g uer0elQ z'9 requeD
3c^_/\^_

,.*'

J,VD IJpp lelras qeluJJed u'{res,Preq ro}oul,r::;':;#::I


6uer{ relo"r}uoloJ{Iul rde16ualp qe1a1 6uer{ .radde}s ro}otu rlepua6ued
r.uelsJs qpnqes n11e,( 'areJrelul raddalS urelsfsqng 90-J-ss InPow IrPP
eIUaIs uellrdueuau ZE'9 JPquBD 'uPInYelIp ledep relodrun undneu:
relodrq reddals rolotu IIePueI seso.td 'CI6Z1 )l ueleunDDueur ue6uaq
rc1od1up uep rc1odrg ndda1g

rolo6 ueePaqrad I'9 requeD


repdrE

llr

n"

ir
L

Bab 6: Bagian Pengendali Robot

Modul 55T-06 V2.0 ini selain dapat mengendalikan motor stepper


melalui perintah-perintah serial juga dapat mengendalikan motor
stepper secara manual dengan menghubungkan Left atau Right pada J7
ke Ground. Dengan menghubungkan Res pada J7 ke Ground, maka
motor akan bergerak ke Home Position (posisi awal).

Sakelar push button 51 berfungsi untuk mengubah kecepatan motor


secara manual. Perubahan kecepatan ini dapat dilihat dari perubahan
kecepatan kedip LED saat motor bekerja. Memori AT24C08 akan
menyimpan nilai kecepatan tersebut sehingga pada saat power
diaktifkan kembali, kecepatan gerak yang digunakan adalah kondisi
terakhir terjadi sebelum power dimatikan.
Pengaturan gerakan melalui UART dilakukan dengan mengirimkan
perintah-perintah yang akan dilaksanakan oleh Modul 55T-06 sesuai
Tabel 5 berikut.
Tabel S Protokol

55I-06

Pengiriman data dari PClMaster ke 55T-06


Byte
Nilai
Keterangan
00
Header
1E
Awal paket data
01
Destination ID
ID Subsystem
06
02
Destination Number O1-FF
No urut Sub System
03
Source ID
00
ID Pengirim 00 = Master
(PC/Microcontroller)
Source Number
04
No urut Master
O1-FF
05
Length
Panjang paket data
06
Perintah
01
Start Motor kontinyu
02
Stop Motor
03
Start Motor ke posisi tertentu
04
05
07+n

Checksum

Perintah Start Motor Kontinyu


Byte
Nilai
07
Set Direction
00/01

146

Set Kecepatan Motor


Set Home Position
Total mulai 1E hingga
checksum = 00

OO-FF

Keterangan

00

ccw01 cw

7
LVI

puo)es Jad dals


ue6ueJelsy

I ro]ow uplpde)3y

eilg

!e[N

LO

-{-{ - 00

Joloru uPlPdaDe{ oJut


0 = plep
upr{nJnlesa>l rJPp IBIoJ
Joloru uplpde)el oJUI
BtPp 1e{ed 6uefue6
u.ralsr{g qns }nJn oN

uralsr{S qns Cl
J3]spw lnJn oN

s0
-{J-

t0

LO

elPC rsl

u+20

ulns I)3r{)
qelurJad
Jeqr.unN

qlbual
a)rnos

Jeqr.unN uorlBurlsec

JJ-TO

cl a)rnos

vl

90
90

v0
e0
ZO

(rellorluo)or)lw)d)
Jelspw = 66 turrr6ua6 q1
elep 1a1ed lerny
ueEuereley

rappaH

Et

uorlBurlsec

00

cl

IEIIN

IO

00
er/(g

relsew)d e{ 90-Iss lrep Plep uPtu 146ua6


ueEueraley

eilg

IEI!N

uoHlsod ar,uoH

les qeluuad

ueledaray

eilg

!EI!N

LO

00r-00
ueEueralay

rolow ueledeeey les qelulJed

dals qelurnp
dals/1eferep B'l ]npns In]uD
60
002-00
uerelnd qplunf
BO
.{.J-00
uorl)erlcl les
LO
r0i00
A\) to/A\)) 00
er{g
ueEuereley
!PI!N
nlueuel Islsod a{ rolow uPls qeluued

ueEuereley

eilg

IPI!N

rolow dots qeluued

f
Bab 6: Bagian Pengendali Robot

OB

I Kecepatan Motor 2

ACK
Byte
07

Status ACK

| 00 - FF I step per

second

Nilai

Keterangan

4514F

45 = E atau error da

4F=OatauOK

Motor Servo
Berbeda dengan motor DC dan motor stepper, motor servo adalah
sebuah motor dengan sistem umpan balik tertutup di mana posisi dari
motor akan diinformasikan kembali ke rangkaian kontrol yang ada di
dalam motor servo. Motor ini terdiri atas sebuah motor DC, serangkaian
gear, potensiometer, dan rangkaian kontrol.
Potensiometer berfungsi untuk menentukan batas sudut dari putaran
servo. Sedangkan sudut dari sumbu motor servo diatur berdasarkan
lebar pulsa yang dikirim melalui kaki sinyal dari kabel motor. Seperti
tampak pada gambar, dengan pulsa 1.5 ms pada periode selebar 2 ms,
maka sudut dari sumbu motor akan berada pada posisi tengah.
Semakin lebar pulsa OFF, akan semakin besar gerakan sumbu ke arah
jarum jam. Semakin kecil pulsa OFF, akan semakin besar gerakan
sumbu ke arah yang berlawanan dengan jarum jam.

mg
ng

l-

15

ms--l

t^^t

-zms

lr

,s]

1-7

L]

Gambar 6.33 Teknik PWIvI untuk mengatur sudut motor seroo

148

6?L

ledpp BS-USq 'ue1e{ueueu }oqor {p}o }pes n}pns elrqedy '[ onres
JoJour r6eq .repocue relru uedur{ued IJor.ueru eped g relru uedlurr(uetu
uele BS-USC eletu 'rapo)ue 6ueqn1 qpnq g qB/y\elau e1e,(ura1
upp urpl 6uer{ lnpns a{ }npns nlens IrBp t olres Jolou ue11ere66ueu
Inlun 80-dsq uelqplurJaureur loqoJ lplo lpes eped 'qoluoc re6eqeg
'uelnlplrp lnpns ueqeqnred qelurred rye>1 derlas rlefi\elrp 6uer{ repocua
Dueqny edereq neJueureur ledep e66urqes Japo)ua ,{re1or qenq g eped
uelBunqnqrp ledep e6nf gg-gsq 'IUyD rnlpletu rlepuel sesord ureles
'ure1 6ue,{ ue1er6e1 ue1

-n{eleu ledep }oqor >lelo uep 80-USC rue6uelrp uele e,(ulnfuelas WA\d
sesoJd 'BfBs oaras Jololu lnpns rnle6uelu {n}un qelurrad qpnqas uelruu
-r6ueru nped er(ueq loqoJ 1e1o eped raloJluo>lo"rryu 'nlr6eq ue6ueq 'g
Iaqel eped uelselotp 6ue,{ rpades IdyD pod rnlelau 1o1o1o:d qelurred
-qeluued uelluur6ueru ue6uep ueInIBIrp olJas rolou rlepue>l sesord
'er(uuelederel
undnBru lnpns lreq 'qesrdJol eJe)es olJes Jolotu qpnq 8 uelrlepue6uau-r
ledep rur Inpow '80-USC ralloJluo) olres Inpou ueleunDrp e,{ueserq
'rur rselrlde qepnturedlueru {nluD 'WA\d relru uelrqplsal rnle6ueu Inqrs
dnlno uele JaloJluo{oDlrur eped tuerEord e66urqes olres Jo}o(u qenqes
rrep qrqel uplqnlnqrp rlelburres loqor 1se1rlde InluD 'ralorluolorlrtu
qelo uellr>16ueqrp ledep 6uer{ ry164 eslnd uelrrequelu ue6uep ue1
-n>lBIIp olJas Joloru

uelere6 ue:nle6uad 'se1e rp uelseleftp qetet qredeg

'Jeseq dnlnr rsJol uBI


-qnlnquou uep selpqJal uele:a6 rer{undruetu 6uer( urel uer6eq-uer6eq
nele 'ueDuel 'lIB{ uer6eq In}un ueleun6rp Duuas rur Jo}oru '}oqoJ eped
oaras rolow pqey ?no uld ?'9 requeD

oNc
+n
lBu0s
'nr{ur1uo1 lereDreq reDe rselr;lporu1p

ledep olres Jolou 'nluepel uenl.radal edereqaq Inlun 'uerlrtuep


nplel6 'raddals rolou undneur )A roloru rpedes n,{uquo1 {ep$
uep eles n]uega] ]npns rBdpruatu 1e:e6raq efueq er(ueserq olJes ro]ow

Bab 6: Bagian Pengendali Robot

memberikan informasi tersebut. Untuk menghitung jumlah lubang


encoder ini dapat digunakan rangkaian DEC-01 seperti pada Qambar
6.35.

Gambar 6.35 Diagram Skematik DEC-01

Hubungan antara DEC-01 dan DSR-08 dapat dilakukan melalur


konektor 3 pin pada masing-masing modul dengan pengkabelan seperti
pada Gambar 6.36.

DSR-08

DECrc(

Gambar 6.36 Pengkabelan DEC-01 dan DSR-O8

Untuk mencegah kerusakan akibat kegagalan mekanis atau kesalahan


pengaturan gerak servo, misalnya apabila pengguna mengatur servo
agar bergerak 20 step ke CCW dan pada saat itu terdapat penghalang
yang mengakibatkan mekanik terganjal pada saat step ke-10, maka

150
&

L9L

'seusedpl rqrqelau snJe ueeun66uad uep nlensas uBrlepal {rue>{eru


lees eped e66urqas olJes uep rernod uerEeq eped ue11e1a1rp 6ue{
Ig-S)q snJe Josues ueleunDEueru ledep eun66ued ,ue1ur16unurp
IBprl lrueleu uer6eq rp Josues ue6uBseured euBur rp rselrlde {nlup)
g9-USO eped 1g-ggq uedueseuad g'g requeD

t0-uso

'90-USA r6eq rosues

uelnspru re6eqes ue>1eun6rp ledep 16-_JSC peJp{ur Josues 'n1r euelel


qel6 'uelulzllp lepn sruelaur uprnlueq 'nluapel rselryde-rse1r1de epe6
9O-USO uep LpUmS ilLul1 rosuas: ue0unqng

l'g requeD

'nlensas Jnluequau {rueIatu lees punor6


ue6uap rur lndur uel6unqnq6uetu 6uer{ q)}r^rs }ltull ueleun6Dueur
ledep eun66ue6 'er{ulndur uer6eq 1p 0 eII6o1 e,{uepe ue6uep ;r11e
rur rosues 'lnqasJel uelefue6 uep lrueletu ue{seqaqueu ps{etuetu
rslalapuau leprl rosues e66urq ertuunleqas tuBr6ordlp qplel 6uer( qere
a1 1era6:eq Inlun gg-dsq uelqplurreureur uep Jrl{B up{e rur rosues

Bab 6: Bagian Pengendali Robot

maka DSR-08 akan memerintahkan servo secara otomatis bergerak ke


arah sebaliknya sehingga sensor tidak lagi aktif.

Gambar 6.39 Skema DCS-OI dan DSR-O8

Potensio dalam hal ini berfungsi untuk mengatur besar nilai arus yang
akan mengaktifkan sensor.

Selain pengaturan gerak ke sudut tertentu, servo controller juga dapat


diperintahkan untuk bergerak secara relatif dari sudut tertentu. Hal ini
akan meringankan beban otak robot karena tidak perlu mencatat atau
mengingat posisi sebelumnya. Otak robot hanya memerintahkan servo
controller ini untuk bergerak ke arah CW atau CCW sebanyak sekian
step saja.

Gambar 6.4O Modul DSR-08

,9t

Iepo)ua ePPd Dueqnl qelunl = xX


rololu lnrn Jor.uoN
ueDueJsley

xx-00
-cJ- t0
!PI!N

raPo)u3 rBlrN
rolow Jor.uoN

BO

LO

eug

(0) rapo)ug !el!N Plulw qelulred

LO

Jolow JouoN

80

o^ras lnpns oels

9Z-tO
J.i- r0

60

o^Jes uplede)ey

JJ-OB

e$g

o^res inpns clels


dels IseuJoJul
rul
o^Jas
lnPns
9Z-LO
]ees
JOIOIII roruoN
JOIOTU lnJn JoluoN
-i-{- t0
ueDueJeley
IPI!N
(ZO) oNaS lslsod elulw qPlulred

BZt nPlB qo8 ABIep JDDuluel uelpde)ey


qppuare] uelede)ey
EEZ ne]r- JC
^EIap
Jolou lnJn JouIoN

(I0)
00 = unsl)aq) eDDulq

eI

BO

LO

eltg

uPDuerelay
IE[N
o^ras ue{{er3D qelulrad

lelnu] IP]of

JIIBIoJ eJP)es

I'UnsY)aq)

.iJ-00

u+20

90

IO

o^Jes ue{{PJaD I{B}ulJed

ZO

o^Jas rslsocl elultu qplulJed

o^Jes ue{{eJe66ueI.U qe}ulJad


srupleu UPIBDBDe{ IsYelepuslu
leBs qBre JnlE6ueu qBlulJed
Jepo)ua IBIIU Blultu qelulJed

v0

JOSUes

-{-{-

(ra11or1uoeor)lW)d)
JelsBW = 66 uur6ua6 q1
urals^s qns ]nrn oN

.{J-

plpp ]a{BCl Duplupd


JelsBW lnJn oN

Luels^sqns

qelurJed

ZO

JequnN uorleurlseq

t0

90
90
v0
0

cl e)Inos

00

Jeqr.unN e)Jnos

t0

qlDue'I

ql uoqeurlse(

tI

ql

repPeH
Blep te>lpd Ie{\V
EI
ueDuereley
!EI!N
rellorluoD oNes e{ relsPw/)d Irep Plep uelulrlDu3d

80-uso lo4o?ord

IO

00

eug

Pqel

Bab 6: Bagian Pengendali Robot


Perintah Atur Arah Saat Sensor Mendeteksi Keqaoalan Mekanis (04)
Bvte
Nilai
Keteranqan
Arah MotorSetiap bit mewakili posisi setiap servo
(lihat Gambar 6.41)
o7
motor
OO-FF

Bvte
07

Perintah Menqatur Gerakan Relatif (05)


Nilai
Keteranoan
Nomor Motor
Nomor urut motor
O1-FF
Arah gerakan

OB

SCTVO

09

Step Relatif

Bvte
07

Bvte
00
01

02
03
04
05
06

Nomor Motor

00/01
o1-25

154

Sten relatif terhadap steo sudut saat itu

Perintah Stop Servo (O6)


Nilai
Keteranqan
O1-FF
Nomor urut motor

Penqiriman data dari Servo Controller ke PClMaster


Nilai
Keteranqan
Header

1E

Destination ID
Destination
Number
Source ID
Source Number
Lenqth

00

Perintah

0.1

O1-FF
11

O1-FF

02
07+n

00=cw/01=ccw

Checksum

OO-FF

Awal paket data


ID Master (PClMicrocontroller) = 00
No urut Sub Svstem
ID SubSvstem
No urut Master
Paniano paket data
Informasi posisi servo
Informasi nilai encoder
Total mulai 1E hinooa checksum = 00

r
EAI

'er{uuelede)e{ {n}un sLu 8ZI ,{e1ap ue6uep 97


,9
dels e1 Bnpe{ olJes Jo}oru ue11era66ueul {n}un 1o>1o1ord uB{sIInI

ue6uep

IJII a{

'{llap rad da}s g 1 ueledere>1


90-JSS ue>11era66ueu In}un 1o1o1ord UPISIInI 'v
'e{uque66uad re6eqas eg6z'1 )l ue{eun66ueru
ueIrBqLuBD '

ue6uep gZ'g requre6 eped {r}ptuels ue:6erp

'z9tw
q31 rer{e1 a1 pr1s,{of ue>1uun1rp 6ue,( plpp Iellu-re[u uellrdrueuoru
ynlun urBr6ord ue{srln} upp IE-ISO 7 ttod eped y7-yq 6uese6 .Z
'ue{elrp {uog elotuer eped
lpes 0'14 eped CEl ue{Jllle6ueu {n}un uBr6ord UBISIInI 'I

I loqLuol

uBq!le'I

stue4aN
ue1efie1ay ls4appuary rosuas ir;es qerv rn1efiua4 o7s16ay

l?'9 requeD

MCS lnlun
B oruos
z oruos

L uep

M3

),lnlun Q = |lQ

9 oruos

o^ros

, oruos
t oruas
z oruos
L oruos
0q

tq

Zq

'0q

,q

9q

9q

Lq

L9t

'll)e>{ upDuplBr{-up6upleq rnedluplaur >leJeDJoq

]edpp e66urqas senr e6q r{rlrueur r>1e>1 derlas 'uprn}pJeq Ip} uepetu
-uppeu Ip Ilqels re6e loqor rsrsod B6elueu rs6uryreq lnqesJal eqel-pqel
Irueleu eped r1e1 ureug 'uprnlpJeq lBprl nple Jese>l upparu rp undneru
rplpp uepeur Ip {lpq r66ur1 qrqel 6ue{ splrlrqe}s 1e16ur1 rB{undueu
ppoJeq loqoJ ue6uep uelDurpueqrq

lul lrupletu 'lepedrq undnBru

BqB'l-BqB-I

loqou

'rur pqel-eqplloqoJ lenqruatu pJB) uelsplafrp uele rul


qeq eped 'ueperu eye6as rp {r}oqor rselryde eped uelDuequalrp In}un

srllerd

Dur1ed

6ue[ loqor >.1rue>letu In}ueq qelppp pqpl-eqel IrueIeW

uEnlnqepuod

Dlut 9 ueduop eqereqq ioqoa

Bab 7: Robot Laba-Laba dengan 6 Kaki

Ruas

Gambar 7.1. Robot Laba-laba dengan kaki 2 dan 5 (kaki-kaki tengah)


terangkat

Gerakan setiap ruas dari kaki-kaki tersebut merupakan gerakan sudut


sehingga motor servo adalah alternatif terbaik dalam hal ini. Seperti
telah dijelaskan pada bagian pengendali servo, posisi sudut dari motor
ini diatur oleh teknik PWM.

Kaki4

Kaki 3

Kaki

Kaki2

Kaki

Kaki

Gambar 7.2 ke enam kaki laba-laba tampak atas

Dengan menggunakan enam kaki dan dua ruas, maka dibutuhkan


setidaknya 12 motor servo yang harus diatur PWM-nya. Pengaturan
PWM merupakan fungsi pengaturan timing yang sangat kritis karena
sedikit perubahan akan mengakibatkan pergeseran posisi gerakan
sudut ruas. Untuk itu, agar kinerja otak robot tidak terlalu berat dengan
adanya pengaturan PWM ini, maka digunakan beberapa servo controller
yang berfungsi sebagai otak tambahan dari robot.

9L

'urpl 6up^ rspyrlde


-rselrlde Inlun up{eunErp ledep uep }praq nlplre} {epn (Dd) oqou
pllec) loqor IBlo eftaull 'lul sesord up6uec 'upleuBslplrp praEes ueIB
uPp >lrPq uP6uep PrurrelrP qPlel qeturred e^\qPq rselrpur up{pdnJaur

Due.( Dd) oqod elleq aI y)V ednreq rseurrJuo{ uelurrr6uaur


e6nf 80-dsq 'Dd) oqo5 Btlaq lrpp rspurroJur purrreueru qBIetaS
'ue{rreqrp 6uer{ lnpns

rser.uJoJur

renses uellere6rp 6ue,( olres Jolou eped W \d uellrlDuequraru


upp erulreuetu UBIB g9-USC 'lnqesrel {Blo r.lelo ueln}ue}rp qe1e1 6ue,{
rsrsod eped onras Jolotu-Jolou uellere66ueur Inlun qelurrad-qelurred
uelurrrDueu efueq eqel-eqel loqor rrpp lelo nlples Dd) oqo6 ellaq
tl.la6ls uetdelq 4oE
tzonuSs

ztonufs

'l requeD

(e) so-uso

m;;;;r
Li
r-8onuls

(z) eo-uso

ndc o80u

VIIfC

(L) eo-uso

- Lonulls

'lnqasJal 1n16uesra1 upepeel er{uepe rslo}epuetu

{epr} Josuas e66urq er(u1r1eqes qpJp eI

ue>1>1ere66uetu ue6uep }nqesral

Irupleur ueyseqequetu Bra6as up{e JalloJ}uo) olJes p{Br.u ';l}1e rosues


uep nlensos 1n>16uesre1 IruBIeu epqede loqor Iruelaur uel"snrex

qeEerueu Inlun rs6un;req lul IeH 'Iplo Irep qelurred n66unueur


eduel r6e1 ;q1e leprl Josuas e66urq ueuprt\elreq qeJe eI olJas uel
-1e:a66uaru ue6uap uodseraru Bre6es ueyp rur Inpow 'Jrllp Josues lndur
nlps qeles elrq rpefre1 IUI leq '80-dsq olJes rlepueEued pped 'snsnq>l
snspl-snse1 eped IBlo rrpp uodser n66unueu eduel Duns6uel rsyeeJeq
e6nl 6uepe1-6uepe>1 uep {eto rrpp qe}urrad Brurraueu 6uBr{ Brsnueur
Serer{s qredes e{uln1eqes lul ueqeque} Ie}o rs6un3

lrpp lrrolout

Bab 7: Robot Laba-Laba dengan 6 Kaki

Dengan Modul DSR-08, maka otak robot dapat mengirimkan perintah


menggerakkan motor servo, meminta informasi lebar pulsa PWM,
meminta informasi sudut servo (dengan bantuan rotary encoder),
menghentikan motor servo, dan lain-lain. Pada umumnya, yang paling
sering digunakan adalah perintah menggerakkan motor servo. Otak
robot akan mengirimkan perintah tersebut dalam sebuah paket yang
berisi variabel-variabel sebagai berikut:

Nomor urut DSR-08 yang menentukan modul DSR-08 mana yang


diakses.

Nomor servo yang diakses.


Posisi servo atau lebar pulsa PWM yang menentukan sudut motor
servo.
Frekuensi PWM yang menentukan kekuatan gerak motor servo

Lebih detail mengenai variabel-variabel

ini dapat dilihat di

bagian

protokol pada penjelasan tentang bagian pengendali servo.


Setelah perintah diterima, DSR-08 akan memberikan informasi pada
otak bahwa perintah telah diterima dengan baik dan akan dikerjakan.
Otak robot mengetahui bahwa DSR-08 telah menerima perintah dengan
baik dan sedang mengerjakan perintah tersebut sambil menunggu
perintah selanjutnya.
MOTOR SERVO,I

DSR-08

mmbsiACK

3
,

-,, l:: illii

DELTA SERVO
MOTOR SERVO 2

CONTROL
DELTA ROBO CPU

Gambar 7.4 Modul DSR-08 memberi informasi siap pada Delta Robo CPA

160

r
t9t

'HVur 000'gt/Ag {)ed 1(re}}Pg


')rupq)ew 6el raprdg 9
'(er1s1e Js6un;1n1un) qHZZT-SH )elrH

olres rolow

'DWE,9-SH )ellH o^res rolow g


'ggE0g-sH )euH o^res rolow g
'JelloJluo) olres re6eqas 80-dSA Inpow
'1e1o reEeqes Dd) oqod elleq lnpow I :ln{rJeq uedel
-6ue1.rad ue>1eun66uaru ue6uep un6ueqrp rur pqe[-eqe'I ]oqog rseryldy
'reseles unleq qrser.u 6ue( 7 onres rolou uelere6 uelquaqDuatu eduel
lera6req lnsnfueu ledep I olJas Jo]our e66urqes e,{uuelef:a6uatu
Duns6uel uplp 80-dsq 't olres rolor.u ue11era66ueu qelurred ueqrp
e4f 'qoluor re6eqag 'efulnlrreq qelurred Br.rrJreueru ledep qepns g0
-dSA rdelel 'olJes Jolou ue11era66uau qplurJad qelepe sele rp requre6
uretpp 'erueped qelurred uelefraEueur Euepes B0-USq undne1e16
etue1tad qeTultad
ue4e{ta6uau Ouepas SO-USO tees ue4utlrt4tp enpa4 qeluqad
Yt1P14

vtulfs

toul.NoS

.,',,*".J

:.- i1:

.,n

g'l requeD

ler{utg

ndc o80u v,t'tlo


I,

onuls

uo_Lot"i

onufs v-Ltfo

J (r

lilftJ:1 m-

lnr
'! tl
--+tt

.l

rL

t-.]h"'
4-t

--

r:

onufs uolohl

Bab 7: Robot Laba-Laba dengan 6 Kaki

Pengaturan Gerak Ruas-Ruas Kaki


Untuk mengendalikan 18 motor servo pada mekanik laba-laba ini digunakan 3 buah DSR-08. Masing-masing DSR-08 akan mengendalikan I
motor servo.
Kaki robot
tampak atas
Motor Servo

3 alauT

-'-l

UJ

4 atau 8

Motor Servo 1 atau 5 untukfungsi ekstra

Gambar 7.6 Posisiposisi Motor Seroo Pada Nlekanik Kaki Laba'laba

Ke-18 motor servo tersebut tersebar pada keenam kaki laba-laba.


Masing-masing kaki memiliki 2 buah motor servo penggerak ruas dan 1
motor servo ekstra. Cambar di atas menunjukkan nomor-nomor motor
servo pada setiap kaki laba-laba. Untuk kaki ganjil (1,3, dan 5) digunakan motor servo t hingga 4 dari setiap DSR-08. Sedangkan untuk
kaki genap (2, 4, dan 6) digunakan motor servo 5 hingga 8 dari setiap
DSR-08.

Motor Servo 4 atau motor servo 8 berfungsi untuk mengangkat dan


menurunkan kaki laba-laba ruas pertama. Ruas ini adalah ruas yang
menopang tubuh laba-laba saat berdiri sehingga motor servo yang
digunakan adalah motor servo yang memiliki torsi paling besar, yaitu
HS-8058B dengan torsi24,7 kg-cm.

Untuk ruas kedua yang bergerak secara horizontal, untuk mengatur


maju mundurnya kaki dikendalikan oleh motor servo 3 atau motor servo
7. Walaupun tidak sekuat ruas pertama, namun ruas ini juga membu162

!"
E9r

t_t_

z sonu

ZL

L sonu

9t

sonu

v
v
v

tr

rsounJ

9t

I sonu

6t
IL

z sonu
oJls)l rsbunJ

OZ

I sonu

LZ

or+s)l rsbunJ

t
t

I,Z

z sonu

YZ

I sonu

orls)l

Z
Z

sonu

I sDnu

z sonu
orls)l rsounl

L sDnu

Dllsll

rsbunJ

or+s)l rsbunJ

uolruorele)

o^res Jolow
rouroN

DqDl-DqDI

lIox

rouroN

efruls6ung uep oaras rolo6 lnrD routog

80-uso
fnrn JoutoN

I pqel

'1efueueru ueleta6 rselrlde eped uorlrns yrJeualu


ertuyesruu 'n1ue1ra1 ueqeqtuq rs6un;-rs6unJ Inlun ue>leun6rp ledep 6ue,{
eJlsle olres Jolou reDeqas rsEuryraq 7 olJas Jolotu nele I onJes Jo]oW
'rea6 1e1au uep 61 9'6 rsrol rlrlruretu unureu
.ll)e{
1rra1 6uer{ rsuaurrp ue6uep olres rolou qenQes r.{Blepe DWET9-SH
6ue,{ lrsr; ueJnln ue6uap rde1e1 1en1 dnlnc 6uer{ onres Jo}otu uelqnl

Bah 7: Robot Laba-Laba dengan 6 Kaki

Gerakan-Gerakan Laba-Laba
Secara garis besar, gerakan laba-laba ini dibedakan menjadi gerakan
kaki dan gerakan tubuh. Gerakan-gerakan kaki di sini terdiri atas gerak
langkah maju, mundur, dan lurus. sedangkan gerakan tubuh adalah
gerakan untuk berdiri-turun, gerakan badan ke kiri maju-mundur dan
gerakan badan ke kanan maju-mundur.

Gerakan Langkah Maju


Gerakan langkah maju adalah gerakan mengangkat kaki laba-laba dan
menggerakkannya ke arah depan hingga meletakkan kaki kembali ke
lantai untuk menoPang tubuhnYa.

Tampak samping, ruas


diangkat

n_
'

t*tP

ol

tr\,/\.!--:-ll L_lt "l rampak atas, ruas 2 maiu


Tampak samping, ruas
diturunkan

Gambar 7.7 Gerakan langkah m4ju


Pada fungsi ini, motor servo HS-8058B berlaku sebagai penggerak ruas
satu dan motor servo HS-645MG sebagai Penggerak ruas dua. Ruas 1
terangkat dengan ketinggian tertentu, lalu dilanjutkan dengan ruas 2
yang memutar maju kaki robot. Halangan-halangan kecil yang lebih

164
i

t-

&

E9r

'qplEuploru eJe) up6uep


SNJNI ISISOd EY IIPI IIPqUIEI P^\PqUIEUI UEYP IUI UPIPJED 'TNPUNIU
undnelu nleru rsrpuor tuplpp lreg 'efuunleqes rsrpuo{ undede rrep
uprrlpqtueDueu: rnlun rsEuryreq rur uE>leJaD
'sn:n1 qpJp

er

r>1e1 rsrsod

snJn'l qe16ue1 ueIEJoC


rnpung qe46ue7 ue4eraD g.l requeD

uPIUnJnltp
senJ 'Ourdules ledr-ue1

Jnpunul
Z senJ 'se1e ledule_1

le16uerp

senl' 6urdutes

>1edure1

a>1 relndraq EueX efes enp


spnr
ueJnteouad
eped e,(ue, ,il,'"::r:"Xr'j:
rrdueq Jnpunur qe16ue1 uer1e.ra5

'n[eu qe46ue1

ue>1ere6 ueDuap purps

rnpunw qe16ue1 ueleroc

deqel eped

r1ema1ra1

ledep

'lu!
spnr er{u1e1Duere1 uer66ur}ar rrpp qppuar

Bab 7: Robot Laha-Laba dengan 6 Kaki

Tampak samping, ruas

diangkat

Tampak atas, ruas 2


kembali ke posisi lurus

Tampak samping, ruas


diturunkan

Gambar 7.9 Gerakan Langkah Lurus

Gerakan Badan Kiri Maiu


Cerakan ini berfungsi untuk menggerakkan tubuh robot bagian kanan
maju. Proses gerakan dilakukan dengan mengangkat 3 buah kaki robot.
Dua kaki kiri dan satu kaki kanan (tampak dari sisi robot)

Kaki

Kaki 3

(aki5 dan5

Kaki2

terangkat ---.-_

Kaki

Kaki

Gambar 7.1O Gerakan mengangkat kaki 1, 3 d.an 5

Pada saat ini, tumpuan tubuh robot berada pada kaki 2, 4, dan 6. Agar
robot bergerak maju pada bagian kiri (kiri dari sudut pandang robot),

166
&

!
L9I

g uep

?'z t4e4 p46ue6uau ue\eraD zl'l requeD


L

!)Py

ZD{P>|

Uey

9uBp

t'z
e

gHey
!ley--__--_

l)EY

, Uey

(toqor lsrs rrep) IrlI IIeI nles uep ueupl r{el


pnc 'loqor rIeI qPnq 5 1e16ue6ueru ue6ueP uBInIPlrp uelereD sasord
'loqor nleu ue>1ere6 r:ep uer6eq nlBs r4elps uelednretu er{ueserq uep
uer6eq ]oqoJ qnqn] ue11ere66ueu {n}un rs6un;req rur uBIpJaD
nfeur

ur>1

nJeUU

ueuey uepeg ueIBJog

unrnl g uep 'Me4 eTtas n[bu


t4e4 ue4tnluenp 6ue4e1aq a4 Duotopuau g uep ? 'Z !4ey

ue>t

!le)

lley

Ue\

Mey

!le)

II'L reqweD

'n[eu >lere6raq up>lp loqoJ rrrl uer6eq qnqn] uep rp)uel urlptues uBIe
rur nferu uelere6 'rselrner6 upnlupq ue6uaq 'g upp ' 'I Iye>l er(uunrnl
reuasrp I IIeI nfeur uelere6 ue6uap ueltn[ue1rp Euns6upl ]nqesJel
ueleraD '6ue1eyaq e1 Euoropueur {n}un rn}Brp Iul llp{-l{py pletu

Bab 7: Robot Laba-Laba dengan 6 Kaki

Sama halnya dengan gerakan maju kiri, pada saat ini tumpuan tubuh
robot berada pada kaki 1, 3, dan 5. Agar robot bergerak maju pada
bagian kanan (kanan dari sudut pandang robot), maka kaki-kaki ini
diatur untuk mendorong ke belakang. Gerakan tersebut langsung dilanjutkan dengan gerakan maju kaki 6 disertai turunnya kaki 2, 4, dan 6.
Dengan bantuan gravitasi, maka gerakan maju ini akan semakin lancar
dan tubuh bagian kanan robot akan bergerak maju.

Kaki

Kaki 3

Kaki

Kaki2

Kaki

Kaki

Gambar 7.13 Kaki 1, 3 dan 5 mendorong ke belakang dilanjutkan kaki 6


m4ju serta kaki 2, 4 d.an 6 turun

Gerakan Robot Berdiri


Gerakan ini adalah gerakan laba-laba untuk ke arah posisi siap.
Gerakan ini difungsikan untuk mengatur posisi semua ruas kaki labaIaba ke arah di mana keenam kaki mengarah lurus ke samping dan
menyentuh lantai. Ini adalah posisi di mana apapun kondisi sebelumnya, keenam kaki ini akan bergerak ke arah posisi siap untuk berdiri.
Gerakan ini diawali dengan gerakan meluruskan ruas-ruas dua dari
setiap kaki sehingga pada saat mengangkat kaki, ruas-ruas tersebut
tidak saling berbenturan. Kemudian dilanjutkan dengan gerakan mengangkat keenam kaki sehingga ruas 2 dan ruas 3 dari masing-masing
kaki akan dapat bergerak dengan bebas.

168

L
I

69r

IZ-91
9r.-0r

r>1o;

nlour

ulo;

1o16uore1

9r-0r

nloru rloy

sonu

(ders) o^res
tnPns Dtoo

sonu

L sonu

o:1o13 rs6un1

orps13 rs6unS

/U\) qOIV

daTs p11u-1efiu uep ocuas

ulpraq lslsod

uo6uorelay

o^res Jolow
rouroN

ue4eo6-ue4eraD Z pWI

9I'l

requeD

'lnpns nfnuaur qelurred ue6uep uelnlplrp elrqede ]Bder


nlBIJel 1era6:aq ueyp runq rselrner6 ue6uep qpJees 6uer{ uelera6 qere
le6ur6uaur ueleun6rp rur lru{al 're}uel aI unJnl uplp rle{ uep e6euel
ue6uepqal rur senJ 'er{u1eqr1y 'n}Bs spnJ rlepue6uad onJes Jo}our-JoJour
eped ry64 uelrluaq6ueu ue6uep rdBlel '1npns nlnueru qeluued ue6uap
upln>lelrp >lePrl rPlupl e{ }nqesre} eqPI-eqpl rIpI-rle{ up>{IP}eletu In}uD
t4e4 ueuaa4 Te46ueduau) ue1eJaD bI'/, JequeD

Bab 7: Robot Laba-Laba dengan 6 Kaki

15-24

Koki terongkot

Ruos 2

10-16

Koki moiu

t5-24

Koki terongkot

Ruos 2

r0- t6

Koki mundur

16

Ruos I

15 -24

Koki terongkot

17

Fungsi Ekstro

19

Ruos 2

Koki mundur

20

Ruos I

r0-16
15-24

21

Fungsi Ekstro

23

Ruos 2

t0-16

Koki mundur

24

Ruos I

15-24

Koki terongkot

Ruos I

Fungsi Ekstro

11

12

Ruos

r3

Fungsi Ekstro

t5

Koki terongkot

Hubungan Gerakan dengan Sudut Motor Servo


Bagian ini akan membahas hubungan antara gerakan-gerakan mekanik
pada robot laba-laba terhadap pengaturan sudut motor servo. Terdapat
dua gerakan dasar, yaitu gerakan ruas satu yang berfungsi mengangkat
dan menurunkan tubuh laba-laba dan gerakan ruas dua yang berfungsi
mengarahkan kaki laba-laba ke depan.
Gerakan Ruas Satu
Ruas satu digerakkan oleh motor servo yang paling kuat torsinya, yaitu
HS-805BB dengan torsi 24,7 kg. Penggunaan motor servo dengan torsi
terbesar pada bagian ruas ini ditujukan untuk mengangkat tubuh labalaba berdiri.

170

*l!

LLL
're^rJp uPr6Pq eped lruoJllele ue{ps
-nre{ np}p Jpe6 upr6pq epPd lrueletu uplpsnJe{ uP{lnqurueru uBIe
er{urrqle upp }nqesJe} upqpuel 6uef lsrsod nfnuetu In]un rJrp ue>les
-{Br.ueu uple o^res ro}ow 'PqBI-eqPI qnqn} uPqeue} r{PI ueP urrrls{e
nlplrel 6uer( 80-USC eped lnpns rplru uBtst6ued lpqllB uelesnrel
uelrepurq6uetu Inlun ueleun6rp lul IeH 'eqel-eqel qnqnl qnluer{ueu
unleqes 1ede1 'qnued 1e16uere1 rsrpuol leps eped 763 IIn.J tstsod
eped epereq olres rolou e66urqas rnlptp snrpq eqel-pqel I{pI IrBp
nles senr eped orues rsrsod elBtu '>llue{etu ue>lesnJe{ 1pe[re1 lepq re6y

7Z ue4elnqrP nplP tL'?z


L80'O/l'Z
OI uPllelnqlP nelP '0[
Lgo'0/6'0

=
=

=
=

A\) IIN.J IBIIN

A\))

IIN.{ IEIIN

:lnlrJaq ueeruBsred ue6uep qaloredrp


ledep A\) InC uep A\)) IInJ {ntun relru 'n1t puere{ qalg 'de1s rad
srt Zg resaqes lsnloser re,(undrueru 80-USq uelDuepeg 'Srug'I qelBpp
e,{uqe6ual lqq puptu Ip '1\\) IInJ {n}un sur l'Z e66urq A\)) IInJ Intun
sru 6'0 erelup eslnd rseJnp rselr;rseds re{undueu: q)ellH olJas Jo}oW
'rJrpJeq

lera6raq uelp rrrpuas eqel-eqpl upp unrnl uele pqpl-pqBl rIeI nele
nlps spnJ eyetu '(mll) uBf tunref qere ue6uep ueupl\Bpaq >lere6req
olres Joloru epq 'e{ulllpqes 'rnpr} rsrsod a1 lera6raq uele rJrpues
pqBI-eqBI luereq ru1 '1e16uerel ueIB eqBI-eqBI rIeI nele nles sBnr e{ptu
'tuef run:ef qe'rees leraDreq olJes elrq ledupl nlps sBnJ eppd '(mff)
esrlA l)ol) raluno) nBle tuB[ tunref qere ueue^\elraq uep (163) as176
nele uef unrBf qeJees qelnsl lpuelrp olJes ro]ou ue>1era6 epe4

{)ol)

sena ueleDD

9I'l

requeD

88908SH

Bah 7: Robot Laba-Laba dengan 6 Kaki

Gambar 7.17 Gerakan Ruas 2

Gerakan Ruas Dua

Meskipun tidak sekuat torsi motor servo pada ruas satu, namun pada
ruas ini tetap dibutuhkan torsi yang cukup kuat. Di sini digunakan HS645 mG yang memiliki torsi 9,6 kg-cm. Hal ini karena fungsi motor
tersebut adalah menggerakkan tubuh laba-laba yang cukup berat ke
arah maju maupun mundur.

Gambar 7.18 Arah Gerakan Ruas 2

Posisi servo pada kaki 7,2, dan 3 berlawanan dengan kaki 4,5, dan 6
sehingga bila pada kaki 1 ,2, dan 3 gerakan CW adalah gerakan ke arah
maju, maka pada kaki 4,5, dan 6 gerakan CW adalah gerakan ke arah
mundur. Pada ruas ini, motor servo diatur agar arah Full CCW adalah
arah mundur terjauh yang diperbolehkan pada kaki 7, 2, dan 3 atau
arah maju terjauh yang diperbolehkan pada kaki 4,5, dan 6.

772

eLt

'E uep ' 'I I>lB>l e,{uunrnl


r6urrrrp IJI{ e{ relndraq }oqor qnqnl e66urqas rnpunur Duoropueu g
uep V r1e>1 'nfeu Duoropueu Z HeI p^\qpq >1edue1 6t'Z requpD eped

(7oqot Ouepued tnpns

yep) y14 a4 nTndoq pqoA

!)e)

9 p{Py

DlF>4

HeX

6I'l EqueD

Ue){

ryey

'n[eu Euoropueu
9 uep 7 IIp{ uep rnpunu 6uoropuau up{e Z plp{ 'ueue1 a{ rp}nureu
lera6raq loqor re6e er{ulllBqes 'rnpunu Duoropuau g upp ? I>lpI
uep nferu Euoropuau uple Z ple{ 'lrl{ eI rplntueu lera6req loqor re6y
'Jelnuretu
>1ere6req uele loqo: e66urqes ueup^\plreq 6ue,( qere eI Duoropueur
ueupl upp lrl{ uer6eq rc6e rruprp qerp 'relndraq uelereE eped
unr.ueN '6ue1e1eq e1 Duoropueu r>lel enrues re6e rnlerp sBnJ :e1nd
qere 'nfetu ue>1era6 InluD '1e16uere1 1epr1 6uer( IIe{-!>lB{ rrep Bnpe>l
senr rBlnd qere {Ble[ LIelppB el{uueepeqrad rur lpq urelep 'unruep '}oqor
r{e>l qenq e6rl lel6ue6uaru ue6uap rle/v\Brp nlreu{ 'nfeur }oqor uelera6
ue6uep erues rrdueq uplnlelrp 6uef sasord 'relndreq uelere6 InluD
'6ueprq uep{nrured depeqral }oqor qnqn1 ueqeueur 6uer(
uoq)ns uplqnlnqrp {epq puptu rp re}epueur 6uer{ Bueprq rp lere6req
loqor lees eped ue{n{plrp ledep er(ueq rur sesord 'tBder qrqel >1era6raq

ledep loqoJ e66urqes Iunq rselner6 ue6uap nlueqrp 6ue,( nfBur


uelera6 {n}ueqtueru e66urqes uequeBreq pJB)as ueupl uep rJDI uer6eq
loqor uepeq nfeu uelereE rrep uere>16ue:as ueledn:eru rur ue{pJeD

Jelndrog uBp nferu loqou uelBroc

Bab 7: Robot Laba-Laba dengan 6 Kaki

Gambar 7.20 Robot bersiap untuk berputar lagi


Proses gerakan dilanjutkan dengan kaki 1 dan 6 melangkah maju serta
kaki 2, 3, 4, dan 5 kembali ke posisi lurus sehingga robot dapat siap
untuk berputar lagi bila masih diperintahkan'

Berbeda dengan gerakan memutar tadi, kali ini gerakan meluruskan


kaki 2, 3, 4, dan 5 serta langkah maju kaki 1 dan 6 berupa sebuah
langkah dengan mengangkat terlebih dahulu kaki tersebut sehingga
tubuh robot tidak berubah posisi untuk saat ini. Setelah proses ini
dilakukan, maka robot telah siap untuk kembali melakukan gerakan
putar apabila masih diperintahkan demikian.
Gambar 7.27 adalah diagram alir dari robot yang bergerak maju. Proses
diawali dengan inisialisasi serial port, yaitu port yang digunakan untuk
komunikasi antara otak robot dengan modul-modul servo controller.
Kemudian, robot mulai melakukan gerakan-gerakan untuk berdiri
dengan diawali mengangkat keenam kaki, meluruskan dan menurunkan
kembali ke posisi siap. Gerakan badan maju, baik kiri mauPun kanan
mulai dilakukan setelah robot bergerak berdiri.

174

9LL

n{b614eodtag pqoA 41yuet6eru

---'f-

rc'l requeD

unJnltuPpzuPy

NVGVEL--

NVOV_-- - - ;>

nlVhl lul)1

1,

nrvv\l NVNV)

unJnl

lquPs nfeu g ue)

IU|OUSA IOAOU

__

>,

z sEnJ-enl
uElsnJn"l

Bab 7: Robot Laba-Laba dengan 6 Kaki

Spider.asm:
$MOD5 1
; PROGRAM
SMOD5 1

DEI,TA ROBO SPIDER BER.JALAN


DSEG

DeviceID

00h

EQU

PerintahKontro

1Mo

or EQU

EQU
EQU

STX

NomorRobot
2nu

vrv
;

01
1Eh
03

VARIABEL_VARIABEI,

DeviceAddress:
TargetT\4)e:
TargetNum:

Ds
Ds
Ds

SourceT)rpe:

DS

SourceNu.m:

Ds
Ds

ChecksumData:

Panj angDataSerial

Buffer: Ds
BufferPerlntah:
.Ioystick
Counter_sms:

;Nomor

urut Robot

;Nomor urut robot


;.f enis Slave
;Nomor urut Slave
;Variabel Master
;Variabe} nomor urut Master
;Checksum

paket data serial

;Panjang data pada paket serial

;Buffer data serial


;Buffer perintah dari Wireless

25
Ds
Ds

CSEG

Org
Ljmp

00

org
Reti

03h

Org
Reti

OBh

Org

13h

Start

Retr-

Org
Reti

23t,

Mov
LCAIl.
Mov
Mov

P0, #00

TH1, #OFFh

LCat

-t

Wakeup

;Robot berdiri

LCA.t

Delay_5 0 oms

Start:

Lcafl
LC

Lcal

PCON,

#80h

KakilLanqkah.I4a

1-L

LCA-L1

MajuModel

Ljmp

Loop

GERAKAN-GERAKAN ROBOT

176

ju

Delay_5 0 OmS
Kaki 6Langkahllaj u

Loop:

MajuModel:

;LeveI indicator penuh


;Inisiaf Serial Port 11-5200

lnit-Serial

;Majukan kaki2 depan

bPs

7
LLI

e sen-r un]n1

r{eI un-rnl

suro0T-^ETao ITec.I

o^,rasTsTsodlas

TTer"I

suroE--4eTac TIec.I

-!{e1 ntelrl

r{e){ 1e{6ue:

o^.rasTSrsodlas TTeJ.I
suog-.{eTaq TTecl
o^.rasrsrsod?es TTec.I
suroE-^eTaq TTec"I
o^-rasrsrsodlas TTe3"I
rnpunhizr)iEx#'llJdo /\ow
:

-rnpuntrdqeISuerI

T)iex

lelI
T{P{
t senf

un-rn1 i
un-rn1 i

T{1 nteulj

Tlie{

1e)i6u i

sur00T-.4ETaa TTecl

o^.rasrsrsod?as TTPcT
suog-^ETac TTerT
o^fasrsrsodlas TTEsT
sur0g-^ETao ITpc.I
o^.rasrs-tsodlas TTeJT
suroE-^eTac TIEsT
o1\f,asrsrsodlas Tlec-l
:npunhlTr{Px+'E,ldo AoI^i
:

.rnpunl^JrlE{6ueT I T{e}l

rIe{ qeIoueT-qe){6uel ue{e.raei

TTP'T

o^"ras-Fs-Fsod?es

TTCT

o^.rosrsrsodlas
o^-resTsTsodlas
un-rnl j

o^.resTsTsodlas
o^]asTsTSodlas

o^.rasrsrsodlas
r{exunf n&TaqE&+' llI,dc

TTECT
TEC'I

TEJl

TIC.I
..\O',I
:

r){ex9un-rn[
1au

seutarlT sEnlI

T SenJ-Sen.r u{seuraT l

-i{e>t

IIe{ 9 uelsn-rnT

surO o

918)i6uvi

g-xeTao

T{ex91eI6uv
{TlapT-^ETeC

rYx9snfnlfasae

TEC'I

TTP3T
T TPC'I
TTEC'I

TEJ'I
:

^qpue?s

rfrpfag

rvpvounf

I
!

sur0 0

deTs rs-lsod a{ TXe{ ue{{e.rae i

n.T.

g-.{eTeG

leE
T
T

TEST

TE3'I
I

L L9V

^qpue?S

dnaltEM

l all

sur00T-^PIaq TTr.I

-rnpunl^Iueuexuepeg TTeoT

suooT-^ETeo

TTec.I

.rnpunwTfTxuepe8 TTec.I
:

Tapohl-rnpunli
1au

suro0T-xeTao ITec.I
1E)i6uvueue{uEpEg TTec.I
suro0T-^eTaG TTerT

1e{6!rvr.rrxuepeg

TTecT

Bab 7: Robot Laba-Laba dengan 6 Kaki


Ret
Kaki3LangkahMundur:

Mov
Lca1l
LcaIl
Lca11
LcaIl
Lcall
LcaIl
Lcall
LcalI

DPTR,

#Kaki3Mundur

SetPosisiservo

Delay-5OmS

SetPosisiservo

Delay-5Oms

Set.PosisiServo

;angkaL kaki

;maju kaki
;

Eurun ruas

t.urun kaki

Delay-SOmS

SetPosisiservo

Delay-10OmS

ReE

Kaki 4 Langkah.I'{undur

Mov
Lca1l
Lca11
Lcall
Lcall
Lcall
Lcall
Lcal1
Lcall

DPTR,

+Kaki4Mundur

SetPosisiServo

Delay-5OmS

;angkat kaki

SetPosisiservo

;maju kaki

SetPosisiservo

;turun ruas

Delay-5Oms
De1ay-5OmS

SetPosisiservo

;Eurun kaki

Delay-10OmS

ReE

Kaki5LangkahMundur:

Mov
Lcall
Lcalf
Lcall
Lcal1
Lcall
LcaIl
Lcall
Lcall

DPTR,

#KakisMundur

setPosisiservo

Delay-5OmS

SetPosisiServo

Delay-5oms

SetPosisiservo

Delay-5OmS

SetPosisiservo

;angkat kaki
;maju kaki
;Lurun ruas

;turun kaki

DeIay-10OmS

Ret

Kaki6langkahMundur:

Mov
LcaII
Lcall
Lca11
LcaIl
Lcall
LcaIlLcall
Lca11

DPTR,

#Kaki6Mundur

SetPosisiservo

Delay-5OmS

SetPosisiServo

Delay-5oms

SetPosisiServo

DeIay-5oms

SetPosisiservo

;angkat kaki
;maju kaki

;turun ruas

,'Eurun kaki

Delay-10OmS

Ret

KakillangkahMaj u:

Mov
Lcafl
LcalI
Lcal}
Lcal1
Lcafl
Lcafl

178
!\

DPTR,

#KakilMaju

SetPosisiservo

DeLay-5OmS

SetPosisiServo

Delay-5Oms

SetPosisiservo

Delay-5OmS

;angkat kaki
;maju kaki

;turun ruas

6Lr
o^fasrsrsodlas

o^"ras-!s'FSodles TIP3T

r{e{ n[Pu1

ITe3l

E Snr un-rn1 j

Tlte)t 1{6ue

sur0E-.{eTeO

TTET.I

surog-xeTac TIer.I
o^-rasrsrsodles TIecT
ntPI^Igr{eI+'UJ,dO ,\o?{
:

ntehJqelSue.Ig r)iex

l all
-J{e}{ un.rnl

suro0T-xeTaG TIecT

t sen: unJnl i
r)ieli n[eur]

o^-resrsrsodlas TlecT

SuOE-^ETaC TIeJ.I

o^.rosTsTsodlas TTecT
suro9* eTao TTec.I
o^-rasTSTsodlas TTeJ.l
suroE-IeTaq TTEo.I
o^jrasrsrsodlas TIecT

o^.rasTsTsodtas

o^-resrsrsod?as TIesT

T{e{ un.jrnl
t senr unrnl

rltP{ leI5ue

ntewgT){EX+'UJ,dC
:

AoW
n teI^JqE)i5ueT9

Tlex

1aE

slro0T-1\eTeo TTec.I
surO9-^eTao TIPcrI
TTecT

surog-IeTac ITec.I

o^-rosTsTsodlos TIec"l
nFehITT{ex+',uJ,dc 1\o}{

1e}t6ue i

o.1\Jasrsrsodlas ITec.I

r>te{ n[eul

Tlte{

SUIOE-^PTeO TTE3.I
:

nIe]^Iqe{6uE1?r>[x

l all

TIe{ unjrnl
t senf, unrnl

.l

rlie){ n[eu]l

r{e}t le){ouej

surooT-^elao TIe3.I
o^:asTsrsodlas TIPc.I
slrog-^ETaq TIesT
o^.rssrsrsodlas TTe3.1
suog-^eTac TTeJ'I
o1\-:aqTsTsoelas

TTe3T

suoE-^eTac TTe3.I
o^.rasTSTsodlas TTe3l
nteWEr{eX#'EJdC ,\oN
;

nIewqe{.6ue.Ie T{ex
1aE

r{e{

un-rn1 l

E Snf un.rn1 j
r>[e]i n[eurj

T{e}i 1e{6uEl

suro0T-^ETac TTec.I

o^-rasrsrsodlas TTe3T
suro9-^eTao TTec.I
o^,rasrsrsod?as TTec.I
suog-.^eTac TTesT
o^.rasTsTSodlas TTecT
suroE-^Taq
TTe3.I
o^fasrsrsodlas TTecT
/EJdc
Aow

nteldz-l)iex#

n t pI^Iq>t6uerI

rIeX

1aE

T{eI unJnl j

suro0T-^eTao TTec.l
o^Jasrsrsodlas TTec.I

Bab 7: Robot Laba-Laba dengan 6 Kaki

Lca11 Delay_5oms
Lcal1 SetPosisiservo
Lcal1 Delay-1-0OmS

turun kaki

Ret

Kaki6Langkahlurus

Mov
Lca11
Lcal1
Lcal1
Lca11
Lcall
Lcall
Lcafl
Lcall

#Kaki6lurus

DPTR,

SetPosisiservo

Delay_5omS

Set.PosisiServo

Defay-5Oms

SetPosisiservo

Delay_5OmS

SelPosisiservo

;angkat kaki
;maju kaki
;Eurun ruas

;turun kaki

Delay-10OmS

Ref

Kaki 5Langkahlurus

Mov
Lca11
Lca11
Lcall
Lcall
Lcall
Lcall
Lca1l
Lcal1

+Kaki5lurus

DPTR,

SetPosisiServo

Delay-5OmS

SetPosisiservo

Delay-SOms

;angkat kaki
;maju kaki

SetPosisiservo

,'turun ruas

SetPosisiservo

;turun kaki

Delay-50mS

Delay-10OmS

ReE

Kaki4Langkahlurus

Mov
LcaII
Lcall
Lca11
LcaIl
Lcall
Lcall
Lcall
Lcall

#Kaki4lurus

DPTR,

SetPosisiservo

Delay-5OmS

SetPosisiServo

Delay-5Oms

SetPosisiServo

Delay-5OmS

SetPosisiservo

Delay-l0OmS

;angkat kaki
;maju kaki
;

turun ruas

;Eurun kaki

ReE

Kaki3Langkahlurus

Mov
Lcall
LcaIl
Lcall
Lcall
Lcall
LcaIl
Lcall
LcaIl

DPTR,

#Kaki3lurus

SetPosisiservo

,anqka! kaki

SetsPosisiservo

;maju kaki

Delay-soms

Delay-5Oms

SetPosisiservo

;turun ruas

Delay-5OmS

SetPosisiservo

turun kaki

Delay-l0OmS

Ret

Kaki2Langkahlurus

Mov
Lcall
Lcall
LcaII
Lcall
Lcal1

180

DPTR,

#Kaki2lurus

SetPosisiservo
DeIay-5OmS

;angkat kaki

SetPosisiServo

;maju kaki

SeLPosisiservo

;turun ruas

Delay-5Oms

18I

HdC

.IdC
.ro1ol^Idol surT-r Tx
90+ '91I

t0#'Lu

"ro1o]^Idol surr-r Tx

z0*'9tI

t0*'tE

dod
dod
lTECT
AOrd
1\Or.tr

l TEJ'I
1\Or{
r\Olitr

1\ON

z0#'98

/!OI{
TTECT

JOI Or{do1SrUrf, rX

ZO+,LE

.^OW

90+'98

lTEf,T

o?ohldo?surT:Tx

-u

ZO*,LE

lr0w
1lOr{

90#'9lI

TEC'I

-rolohldolsuTf -tx
TO+

,LE

.ro1ol^Idol surTir TN

1\OW

Tlec'I

r{snd

Hdc

qsnal

TdCI

AON
/\OI,{

z0+ '9u

T0#'Lli
:

seuralesenu j

SVNU SNI,INOEAOS I

1eE

T{e{
T)ie{ un.Inl j
1e{6uEJ

TIe)i 1e{6ue
t senf un-rnl

T{e{

i
,

1e>t6ue j

T)ie{ nleui

T{e)i lP){ouej
Tlie{ lp){ouEl

surooT-^eTeq TTEoT
o^.ros'rsTsodlas TTEc'I
o^rasTs'Fsodlos TTecT
slroE-^eTao TTPrl

o^-rasrsTsod?as TIecT
o^.rasTsTSodles TTecT
suroE-.4eTac TTec.I

o^-resrsrsodlas

TTecT

o^.:rasTSTSod?as TTecT

surog-xelac lTerT
o^-rasrsrsod?as
o^.ras-FS"lsodlas

TTe3.I
TTPc"t

snrnlqe6uaJ,T>tex,I+'E,IdG
:

1!ol{

sn-rnTqP6uaJ,r>{E)I

1aE

r{e{ un:nl:
E Sen-r unrnl i

r{e)i nleul
T{P{

1e}i6ue i

surOoT-xeTao TTec.I
o^jras-FSTsodlas TTe3.I
suroE-^PTaG lTec.I

o^-rasrsrsodlas TTec.I
suoE-^eTaq TTPcT
o^.rasrsrsodlas TTesT
suos-.{eTaq TTec.I
o^.rasTsrsod?as TleJl
/u&dc
AoR

sn-rnTTr{ex#

sn-rnTr{el.oue1T T{ex

laE

T{e{

un-rn?

surooT-^eTac TTec.I
o^-rasTSrsodles TTea.I
suog-^eTaG TTec.I

Bab 7: Robof Laba-Laba dengan 6 Kaki


AngkatRuas3:
Mov

Lcal I

DPTR,

#TabelAngkatRuas3

Set.PosisiServo

LJCal- -t

setPosisiServo

Lca11

Set.PosisiServo

LcaIl
Lca11

Lcal1

;angkat ruas

setPosisiServo
SetPosisiServo
SetPosisiServo

Ret

ceserlurus 6Kaki

Mov
Lcalf
Lcal1
Lcall
LcalI
Lca11
LcaIl

DPTR,

#TabelLurus6Kaki

SetPosisiservo

lurus

angkat

SetPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo

Ret
Ruas2Lemas:
Push
Push
Mov
Mov

DPH

DPL

R7, #01
R6, #03

Lcal1

KirimStopMotor

Mov
Mov

R7, +01
R5, +07

Lcal

KirimstopMotor

Mov
Mov

P''7 ,

#02
R6, #03

LcaIl

Kirimst.opMotor

Mov
Mov

R7,#02

Lcal I

KirimstopMotor

Mov
Mov

R7, #03
R6, +03

Lcall

KirimstopMotor

Mov
Mov

R7, #03
R6, #07

LC

R6, +07

I-L

KirimstopMotor

Pop

DPL

D^h
rvP

DPH

Ret

SUBROUTINE RUAS

1.

Angkat6Kaki:

Mov
Lcalf
LcalI
Lcall
Lca11
LcaIl
Lcall
ReE

782

DPTR,

#TabelAngkat6Kaki

SetPosisiServo
SetPosisiServo
SetPosisiServo

SeEPosisiServo

SetPosisiServo
SetPosisiServo

8I

E&dG

o^-r3s rsTsod las

urT-rTx

3Ifr

cl\oI^I

lltrdc+vo,v

1\OW

v'0110

cur

01I

.{\oI^I

O1IO

cur
cur

OE

!
!
!

E.Idg

lroI^I

00#'v

o^fes fotuoN los I


]o?oru Tofluo{ qeluT-rad

TO

.ro1oI^II

!
!

elep 6uP[uPd lasj


= loqo-r fouou ?asl

V,

.1\oI^I

00#'v

Cl\OI^I

E,tdo+vo'v

1\Or,I

70#'080

cur

AOtr{

OEA
OE

cur

0u

o.rluoXqe?ur-rad #'

.ral:Jna# ' 0u

loqouf ouioN+' s sa-zppva c T^ag

l1otr^I

I'otrI

AOI{

00+'v

AOr.I
C/\OI^I

E,tdc+va'v

v'urnN1a6-reJ,

cur

u,tdo

80-ESG .rouou 1as i

-raTTo-rluoJ o^.ras

r{TT#

?a6-rEJ, I

(8o-uso
'ad J1a6-ref,,
:

0E-lrso)

Aotr^I

o^rasTsTsodlas

1a{edu1:TX d*[t
Ao,{
91I'Z+falln8
AoN
L0+'I+fefJnS
,rlotr{
Z0#'-ra]l:n8
loqoErouroN*'ssa:ppvacT^aq 1!ow
15'um51a6:e[ ^or[
'ed J,1a6.reJ, lloinl
r{TT#

rolowdolSUrrJr)I
1au
doa
dod

HdC

.IdC
.ro1ol^Idol sluT-: TX

80# '9E

rIE3T
1\ON

1!otr{

t0#'91i

l\o,.I
I TC']

t0#'Lu
rx

.rolol^Jdolslrrr.r

t0#'Lu

l1Or.I
.r\oI^I

80+'98

I T EC'I

.roloLldol slur-r rx

z0+'tu

.rolol^IdolsurTf T)I

1\Ofi

rrecr
AON

ZO*, LA

AOL{

t0+ '91I
-ro1ol^IdolsluTf Tx

80+'9u

1\OW

10#'ru

rolowdolsurTfTx

,0+'9u
,

AoInI

ITECT
AON
AOW

LlI

TO+

rlsnd
qsnd

TdG
HdG
:

seureTTsenu

Bab 7: Robot Laba-Laba dengan 6 Kaki

Mov
Movc
Mov
Inc
Inc

A,#00
A, EA+DPTR
GRO,A
R0
DPTR

;Set delay / kekuatan servo


;

i
;

KirimPaket;

Push
Push

DPH

DPL

Lcalf KirimPaketData
LcalL AnrlcilDataSeriaf
Pop
Pop

DPL
DPH

Ret

; Ambil data serial

(ACK atau info

AmbilDataSerial:
Lca1l
Serial_In
A,#lEh,AmbilDataserial
Cjne
Lcal.l- SeriaI In
Lcall
Serial In
Lca1l
Serial_In
Lcall
Seria1 In
Lca-l1 Ser]-al In
Mov
B,A
Mov
R0, #Buffer
Mov
GRo,A
RO
InC
LoopDataln:
Lcall
Seraa-l fn
Mov
GRO, A
R0
Inc
Djrlz
B, LoopDatafn
LcalI
Serial_rn
Ret
KITIMPAKCLDAI

Lcafl

AwalPaketMaster

Mov
Mov
Mov
Lcall

R0,

Mov

R0,

LoopBufferout:

A,

#Buffer

@R0

R7,A

SerialoutCS

#Buffer+l

Mov
A, GRO
Inc
R0
Lca11 SerialoutcS
Djr,z R7, LoopBufferout
Mov
A, +00
Clr
C
Subb A, Checksr-mDaLa
Lcafl Serial_out
Ret

784

dari DSR-08)

98r

nterfuepe8 durft

n[el^JuEueXupETaqe&+'lltdo
:

..!oW

fp{ouvueuExuEpeE

n[e14uepeg durl'I

.rnpunl^Jueueypsq,I+'u,ldo
:

..\oI^I

-rnpunwupuexuEpeg

ntel^JuEpeg durFT
-rnpunwTrTxpaq[#'tt,tdo AoI^I
:

f,npun {TfTxuepeg

1au
V

'eleoumsltoer{J

pleGlrnsIcaqJ 'V
?no-Ter-ras
:

uns {3aq3 qequre[]

.^or{

ppv
TEC'I

sJlnoTT_ras

v ' elPcums{caqJ

/1'oI^I

JUI

OE

ppv

elecurns{ceqc'v

v'0u0

.^'oI^I
:

-zaJl:n8a^es
1eE

sJlnoIeT-ras

TTEs'I

'v

ssa.rppvacT^aG

.1\oI^I

c1)anoTPTfac

olacrAeo# /v

TEJT
1\Or{

sclnoreT.ras

TTECT

urnNac-rnos'V

.^ol{

sJlnoTET-ras

V'

1.re1s j

TTECT

AOI^I

eleoums{3ar{J

1\oI4

ad J,eclnos'V

.{\or.I

XJS+,V

TTPCT

lno-TeT-ras

:14{edTer v
1au

sJlnoTET-ras TTecT
ssa.rppvaJr.l\ao'V 1\ol{

sJlnoTEr.ras TlecT
..rotr{
oIecT^eo+'v
sSlnoTer-aas
urnN?46-rEJ,

TTesT

'v

1\oW

sJ?noTeT:as

AoN
TTecT

V'elecurnsIcaqJ
?no-TEr,ras
xls#'v

TTecT
,\ol,I

ad J,1a6-reJ'v

1!otr{

-re?sEN1a{edTer

Bab 7: Robot Laba-Laba dengan 6 Kaki


BadanKiriAngkat

Mov

DPTR,

BadanMaju:

Lca11
LcaIf
Lcal1
Lcall
Lca11
Lcafl
Lca11
Lca1l
Lca11
Lca11
Lca11
Lca1l
Lca11
Lca11
Lca11

+TabelBdnKiriMaju

SetPosisiServo
SetPosisiServo
Set.PosisiServo

SetPosisiServo
SetPosisiServo
SetPosisiServo

Delay-10OmS

setPosisiServo
SetPosisiServo
SetPosisiServo
Delay-10OmS

SetPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo

Ret

PutarKiri-:

#TabelPutarKiri

Mov

DPTR,

Lca11

LcaIl
Lcall
Lca1l

SetPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo

Lca11

Delay-10OmS

LcaIl
Lcall
LcalI

SeEPosisiServo

Lca11

Delay_10oms

Lcall
Lca11

SetPosisiServo

setPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo

Lcall
f
Lcal1
l,ca I

Lca11
Lcal-l-

Delay-10OmS
Delay-10OmS
Kaki 6LangkahMaj u
KakiLLangkah.l4a ju

Lcall
LcaIl
LcaIl
Lca11
Lca11

KakiTengahlurus
Kaki 3 Langkahlurus
Kaki 4Langkahlurus

Ret

PutarKanan:
DPTR,

LcallLcall
Lcal1
Lca]1

SetPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo

Lca11

LcaIl
Lcal1
Lca11

Lcaf1
Lca11
Lca11

Lcal 1
Lca1l
l,cal

186

#TabelPutarKanan

Mov

setPosisiServo
setPosisiServo
Delay_1

0 OmS

SetPosisiServo
SetPosisiServo
SetPosisiServo
Delay_10

OmS

SetPosisiServo
SetPosisiServo
SetPosisiServo

L8L
Jnpunur

n[eu]
n[eur
n[Eu]

1e{6ue

lEltoue
1e{6ue

sn.znT
sn-anT

sn.Tnl

T{ex

rvpv

I
I

? T)tex I
Z

g
E

TYPV

T{ex j
T)tpx

T{ex

I
1

z sEnE.l
z senu j
z senE I

r{08'0I't0'I0
I{08 ,OT ,LO ,EO
q08 '0T ' L0'20
r{08'9T'L0'10
q08'8T'?0'e0
q08 'LT 'VO'20
q08'8T'?0'T0
q08'T'80'80
q08 'ET ' EO'ZO
'T0
r{08

'tT 't0

nFeur

T)[EX I

1e{6ue

Tvpv I
T{ex j
T)tex i
T)tex I

fnpunur
,rnpunu
-rnpunu
1e)t6ue
1e)t6ue

sunT

sn,rnT
sn-rnT

g
E

j
? tvpv
z

I{ex

z senu I
z senu I
z snu I

T]IEX I

so
AC

ao
ao
ao

so
ao
ao

ao
ao
sG
SC

ac
so
ao
ao
AG
AO

sc
ao

ac
Iel^Jueue)upgIeqeJ

r{08 '9T 'n0' t.0


q08 '9T 'i0'20
q08 '9T 'V0'10
r{08'9T'0'T0
q08'9T'10't0
tIO8,9T,LO,ZO
q08'0T ' Lo't0
r{08 '8T '?0 '80
q08 'LT 'n0'20
r{08 '8T '?0'T0
q08'ET'80'e0
t0'20
'0'T0
r{08 'e T '
r{08 'e r

SO

ao
jrnpunl^Irf TXpgq&

q08'9T'80'80
r{08 '9T '80'20
q08 '9T '80 'T0
I{08 ,TT , LO, IO
q08 '9T 't0 '80
q08 '0T ' t0'20
r{08'0T't0'T0
r{08'8T'80'e 0
r{08'LT'80'20
i.I08'8T'80'T0
r.I08'tr'L0't0
r{08 'tT ' L0'20
r{08'eT'L0'10
:

un-rnl I r{ex
unfn? e r{px

un-rn1 T Tliey j
n[pur T r){EXj
-rnpunu 9 T)tex i

lnpunu , T{exl
:npunu z T{exl
?eI5ue E T>{exi
?E){6uE E TltEXr
1E>[6ue

sn-rnT z snuJ
sn-rnT z sEnEj
sn-InT z senE j

:n

ao
ao

so
so
so
SC

Eo

ao

sc
ao
ao

sq

a6
Ier{r-rrXrrp8T aq,],

OAUSS NV)rVUEE

TESVJ
======

!'

1aE

sn-rnTqe{5ueT?T}tPx TTec.I

sn-rnTq{6ueTeT{ex

sn.rnTqP6uaJr{ex

ntel^IqE{6up.ITr{eX

TTE3T
TTecT
TTecT

ntEWrIE{EueT9T{eX TTecT

suro0T-.{EToc TTec.I
Sur00T-1{eTaO TTer.I

Bab 7: Robot Laba-Laba dengan 6 Kaki

DB
DB
DB

01-,04,1-5,80h
02 ,04

,15, 8 0h

03. 04, 15, 80h

TbBdKananMundur:
01, 07, 13 , 80h
DB

;Ruas 2 lurus
;Ruas 2 lurus
;Ruas 2 furus

DB
DB

02,01,13,80h

DB
DB
DB

01,08,18,80h
02,08,17, 80h
03, 08, 18, 80h

;Kaki 4 angkat
;Kaki 6 angkat

DB
DB
DB
DB

01,03,16,80h
02,03,16,80h
03,03,10,80h
03,07,16,80h

;Kaki
;Kaki
;Kaki
;Kaki

DB
DB
DB

01,08,15,80h

03 ,0"7 ,13 , 80h

DB
DB
DB
DB
DB
DB

DB
DB
DB
DB
DB
DB

;Kakj- 2 angkat

1 maju
3 maju
5 maju
6 mundur

,1s , I 0h
03, 08, 15, 80h
02 ,08

TabelPutarKiri:

01,03, 13, 80h

02,03,13,80h

;Ruas 2 lurus
;Ruas 2 lurus

03, 03, 13 , 80h

,'Ruas

0L,04,18,80h

;Kaki 1 angkaE
;Kaki 3 angkat
;Kaki 5 angkat

02 ,04 ,17 ,

0h

03. 04, 18, 80h


01-,0'l ,l-6,80h

02,0'7,15,80h

03, 07, 16, 80h


01, 04, 15, 80h

02,04,15,80h

03, 04, 15, 80h

TabelPutarKanan:

188

;Kaki 1 turun
;Kaki 3 Lurun
;Kaki 5 turun

2 furus

;Kaki 2 maju
;Kaki 4 mundur
;Kaki 6 mundur
;Kaki 1 turun
;Kaki 3 turun
;Kaki 5 turun

DB
DB
DB

0L

02,07,13,80h
03,01,13,80h

;Ruas 2 lurus
;Ruas 2 lurus
;Ruas 2 lurus

DB
DB
DB

01, 08, 18, 80h


02 ,08 ,17 , 80h
03, 08, 18, 80h

;Kaki 1 angkat
;Kaki 3 angkat
;Kaki 5 angkat.

DB
DB
DB

01,03,10,80h
02,03,10,80h

;Kaki 2 mundur
;Kaki 4 maju
;Kaki 6 maju

DB
DB
DB

01, 08, 15, 80h

,0'l ,13 , 80h

03, 03, 10, 80h

02,08,1-5,80h
03, 08, 1s, 80h

;Kaki 1 turun
;Kaki 3 turun
;Kaki 5 turun

V
68r
un-rnl T senu i
dels g sengl
nfeu Z senE,
T sengl

1e:16ue1p

q08 'ET ' n0' t0


r{08'9T '20'10
q08 '9T ' e0 'T0
q08 '0 2 '?0 'r 0

un.rnl T sEnuj

deTs e senul
sn.rnT Z senu i

lP){ouPrp T senEi

I{08 , ET ,80 ,IO


q08'7T'90'80
tI08'tT 't0'e0
rI08'02'80't0
:

un.rnl T

sEnUJ

dPTs e sPnui

snJnT z senuj

r{08'02'?0't.o

le){buerp T sPnul

ac
Eq
gcl
EA

n[er[TT{pX

EICI

sq
scr

SNf,NTETIEX

EIG
EIG

go
sn-rnT7T{ex
Ecr

so
EG
EG

deTs t senul
snjtnT z senu,i

ao

EIG

EG
EICI

EC
:

SG

q08 '7T '90'ZO

qO8 ,ET , LO,ZO

r{08'02'80'20
q08'9T 'V0'20
r{08 'tT '20'20
rIOS , ET , I,O'ZO
q08'02'no'20

I{08 ,9T ,80 , TO


rI08'?T'90'T0
ri08'ET'L0'10
rI08'02'80'T0

?e}{6uerp T spnEj

sn.rnTtr{ex
ECI

ac
gcr

Eq

un:n? T senul
ders senEj

snJnTgT{eN

r{08'sT '?0 '0


q08'eT '20't0
I{08, ET, EO, EO

q08'ET'50'20

unrnl T senEJ
dels g seng:
sn-rnT z senul
T senE j

3e>16uerp

unf,nl T senEt

dels g sengl
sn-rnT Z senu j

leIEuETp T senuJ

un-rn? T senu j

q08 'ET 'n0'I0


q08 'ET '20'10
q08'rT't0'T0
r{08'02'?o'T0

snrnT Z sPnEi
fe{6uTp T sen6l

sun.IZT)iex
so
aq

so
EA
: SNf,NTTTXE)I

I{08 ,CT

sn:nT?r}[EIzsenuj

qO8 ,9T , LO,ZO


q08 'rT 't0'20
I{08 , ET , LO, I,O
r{08 'Er'e0 'T0
r{08'tT'90'20
q08'TT'10'20

sedaT 7 Tlte{ ra)tcns


sedaT e T{et ra)tons i

fnpunurTTliE){zsPnuj
sn.rnTtT{eIZsenE!
rnpunu9T)ieyZsenuj
T T{e{ z senu j
sn.ilnT

-rnpunuE-I{e>{zsPnu,
sn.znT9TXe>{Zspnuj
-rnpumuTT{e{zsenu,

sedoT ? r{e)i ,ra{cns j

sPdaI E r{e)t .ra{cns j

EIG

ao
EIq

aq
ECr

so
ueuex6uorasTeqe,I,

LO,ZO

EG

q08 'TT ' t0'20


I{08 , ET , LO, TO
q08'TT'80'T0
'90'ZO

ao
EG

so

r{08 'TT

q08

AO

'1r '10' z0
:

Eo

T-rrX6uo"raSTaqeJ

Bab 7: Robot Laba-Laba dengan 6 Kaki

Kaki2Maju:

DB
DB
DB
DB

01-,08,20,80h
01-,07,15,80h
01, 06, 14, 80h
01, 08, 15, 80h

Kaki 3Maj u :
DB
DB
DB
DB

02,02,1-3,80h

02,04,15,80h

Kaki4Maju:

02,08,20,80h

DB
DB
DB
DB

Kaki 5Maj u

02,04,20, 80h
02,03,15,80h

02 ,0'7 ,11, 80h


02 , 06 , L4, 80h

02,08,15,80h

;Ruas
;Ruas
;Ruas
;Ruas

1 diangkat.
2 maju
3 siap
l- E.urun

;Ruas
;Ruas
;Ruas
iRuas

2 maju
3 siap
1 turun

;Ruas
;Ruas
;Ruas
;Ruas

2 maju
3 slap
1 turun

;Ruas
;Ruas
;Ruas
;Ruas

1 diangkat
2 maju
3 siap
1 turun

DB
DB
DB
DB

Kaki6Maju:
DB
DB
DB
DB

KakilMundur:
DB
DB
DB
DB

Kaki2Mundur:
DB
DB
DB
DB

Kaki3Mundur:
DB
DB
DB
DB

Kaki4Mundur:
DB
DB
DB
DB

03,04,20,80h
03,03,11,80h
03 ,02

,14, 80h

03,04,15,80h

190

l- diangkat.

03,08,20,80h
03 ,0'7 ,L2 ,80h
03,06,14,80h

;Ruas 1- diangkat
;Ruas 2 maju
;Ruas 3 siap
;Ruas 1 turun

01-,04,20,80h

;Ruas
;Ruas
;Ruas
;Ruas

03,08,1-5,80h

01, 03, 1l_, 80h


0L,02 ,15, 80h
0L,04,15, 80h

I diangkat

mundur

3 siap
1 turun

1 diangkat
2 mundur
3 siap
I turun

01,08,20,80h
01-,07 ,11,80h

;Ruas
;Ruas
;Ruas
;Ruas

02,04,20,80h
02,03,11,80h
02,02,13,80h
02,04,15,80h

;Ruas 1 diangkat
;Ruas 2 mundur
;Ruas 3 sj-ap

02,08,20,80h

;Ruas 1 diangkat
;Ruas 2 mundur
;Ruas 3 siap

01, 06, 14, 80h


01, 08, 15, 80h

02,01 ,15,80h

02,06,14,80h
02,08,15,80h

,'Ruas l- turun

Ruas l- turun

KakiSMundur:
DB
DB
DB
DB

1 diangkat

03

,04,20,

80h

03, 03, 15, 80h

03,02,14,80h

03,04,1-5,80h

;Ruas
;Ruas
;Ruas
;Ruas

1 diangkat

mundur

3 siap
1 turun

t6r
q08 'ET '80 '0
q0 8 ' ET 'n0' t0
r{08 '7T '80' ZA
q08 'gT 'v0'20
q08 '?T '80 'T0
,NO,IO
I{08 , ET

sen-z uE>{dPrs i

senu i
SPNEJ

senEa

senui
senEl

'02

so

sc
AO

Eo
ACI

sG

Eq

sc
sq
ECI

SG

ESenule{6uYTaqE[

r{08'02'80'E0
r{08'02'70 '80
It08 '02'80 '20
q08 '02 '?0'20
rI08'02'80'T0
'10'10
r{08

rc
Eio

sG
sG

sq
so

T{ex91e}i6uvTaqPJ,

so
Eo

ss
ECr

ECI

so

T)iex9sn.rnrlTeqeJ,

q08 ' rr 'T0 ' t0


r{08 '9T

'?0'e0
:

senE

EO
SG

un.rnJ,ET)iex

I{O8,EZ,90,TO
r{08'9T'80'T0
:

senE i

un.Tnl

z
I
I

ao

rxPxun.rnJ,Taqe&

r{08'ET'90'E0
q08 'eT '20't0
q08 '?T ' 90' z0
q08 'er '20'20
T{08 , ?T ,90 , TO
'ZO'rO
q08 '9T

I SPnjr ?e{6uer

q08'?T' L0't0
q08'tT'80'e0
ri08 'TT ' L0'20
q08 'eT 't0'20
I{O8,ET,LO,IO
'T0
r{08'ET't0

ire>tcns lopes i
unf,n1 9'r{e)iTsenul

.ra{cns lopas
un.rn1 zT)|exTsenEi

senu.'

unfn?
deTs
dPTs
sn-rnT

snf,nT

1P{6ueTp
1P)i6uetp

AC

so
unf,r\LzT{Ex

q08'9T'r0't0
sG
r{08'9T'80'T0 so
q08'eT '20'to
acr
i.I08'?T'90'T0 ACr
r{08'e r't0'80
rro
I-IO8,ET,LO,TO EG
q08'02'?0'80 ro
q08'02'80'T0 8(
: sn-rnTqEEuattr

r{E5uaf

un.rnl T senEl
dels g sengl
-rnpumu Z sEnU I
lPI6uPrp T senEl

-[

xEx,],

T{e{ ue{e.re6-ue1e:ao

r{08 '9T

ao

EO

sq

'80'E0

I{08 , ZT ,90

r{08 '9T'L0'e 0
r-I08'02'80'80

Eq
AG

-rnpunl^I9T{e}I

Bah 7: Robot Laba-Laba dengan 6 Kaki

Inac serfar:
MOV SCON, #52H
MOV TMOD,+2OH
;
A,TMOD
Mov
A, #oFH
AnI
A, #20H
Or1
TMOD,A
Mov
MOV TH1, #OFFH
Setb TR1
MOV PCON, #8OH

; Mode 1 Ren
; T0 Mode 2, T1 Mode

51600

RET

Serial-Out.:

C1r
Mov

TI
SBUF,A

'lungguK1r rm :

Mov
Mov
Jnb
CIT

0A6H, #lEH
0A6H, +0E1H

TI , TungguKirim

TI

Ret

Serial_In:
Clr

RI

TungrguTerima:

Mov
Mov
Jnb
Mov
CIT

0A6H, #lEH
0A6H, #081H

RI, TungguTerima
A, SBUF

RI

Ret

KirimPesan-SeriaI

Mov
MOVC
Cjne

A, *00H
A, GA+DPTR
A, +0FH, KirimTerus

Ret

KirimTerus:

Lca11 Serial-Out
DPTR
INC
Ajmp KirimPesan-Serial

SUBROUTINE DELAY

Delay_ldetik:
Mov
Counter-Sms,

#0200

Tunggu_l-detik:

Lca11 Delay-SmS
Mov
0A6h, #LEh
0A6h, #081h
Mov
Djnz Counter-sms,Tunggu-ldetik
Ret

Delay_50oms:

Mov

Tunggu_5 0 oms

Lcall
Mov
Mov

792
it

Counter-sms, #0100
:

Delay-5mS
0A6h, #1Eh
0A6h, #0E1h

7
e6r
'Jnpun(U

>lere6Jaq 6uer{ pqel-eqpl

}oqor uelera6 eu1rro61e ue{srlnJ '

'uorl)ns rs6un; ueqpqruB] ueDuep


Eurrrur Dueprq eped eqey-BqBl toqor uelete6 etu1uo61e uplsrlnl

.Z

'{rueJel Eurpurp rp ledrueuau >ln}un uorl)ns lrJpueur ledep eJ}sle


rs6ung ueEuap olres re6e uelqnlnqp 6uer{ lrue>leLu uelrpqtupD

uBr,{!lB'I

1au

doa
HLo
SI^I0S^eTapdooT'LE zul1
qTEO#,q9V0 AoI^I
qsT#'r{9v0 1!ow
SurE-^eTac ITEc.I
:

51a19

0T#'LU
HLo

gzlelepdool
1\old

qsnd
E-.{e1eq

: 5urg

1aE

oor{,r
OEf

dod

fTJ
:

surE-r{epns

SUE-n55unJ, d*!t

surg-rlepns ' odJl

falunoc 1-Iq 9T

apol^I -raurrJJ

cqIl
Surg-n66un;

oEJ qlas
l\ohl
Hddo# 'OT,t
,OH.I 1'OW
HOEO#
HTZ+,COI^IJ AON
qow,t qsnd
:

SUJE- TaG

1aE

Stlr0O1-n66unJ,/Surg-JalunoJ zulq

r{TEo#'r{9v0
r{ET#'r{9V0
SurE-IeTao
:

Aor^I

1!ohl

TTec.I

gu:gg1-n66un;

020#'surE--ralunoJ
:

AoI^I

Suo0T-^eTaC

fau

SUro 0

9-n66unJ

'

Surg-.ralunoJ zulq

Bab 7: Robot Laba-Laba dengan 6 Kaki

794

4.

Tuliskan listing program untuk robot laba-laba yang dikendalikan


melalui D-Joy Controller Wireless.

5.

Kembangkan pengontrolan wireless robot menggunakan TLP/RLP


433 MHz atau Bluetooth.

96t
'lnqesJel 6uBro qefem leue6ueur/rlnlr6ueu: rpedas 'n1ueya1 rs{p uel
-nIBIer.u Inlun loqoJ r{olo sesoJdrp uerpnual 'relndurol qalo sesordrp
nlel 'ue)qern/eratuec qalo rslelaprp ersnueu qefem 'e{uyesq4 '(uott
-)pJelul loqod-ueurnpl) loqor upp prsnupur eJBluB rs{Bre}ur }pnqureu
ledep ppuv '13uedg ue6uaq 'B>lrloqor eped qelepe er{uuedeteuad
nles qplBS 'uorsrl relndruoe uBr6ord re6eqas ueleun6rp 1er{ueq
rur lees 6uer{ ++3 uelsrseqJeq e)Jnos uado urerDord qelepe 13uedg

nCuodo uelooJd

loqou epBd uolsrn rolnduoc leuo6ue6l

'loqoJ eped ereu:Bl rnlelaur eu{urunrun 'se6eulr


lndur qelo6uaru eun6req uorsrl ralnduo3 'fioqot TueaLas) ue,{e1ed }oqoJ
re6eqes uelderelrp ledep 6uer{ ersnueur durr-u }oqor }enqtuetu qelBpe
rur r6o1ou>1e1 uesenDuad uep qery '6ugued lB6ues uorsrl relndluoc
'lppueq 6uer{ proueulnq }oqoJ unEueqtueur ur6ur e>1rp
ueesen6ued

eleu

uBnlnqBpuod

loqoa tlnrun uolsl^ randuoc

T
Bab 8: Computer Vision untuk Robot

Kesemuanya itu membutuhkan OpenCV sebagai program utama antara


webcam dan pengolahnya, yaitu komputer. Silahkan kunjungi situs
opencv.org untuk men-download atau mengetahui berita terbaru
tentang software ini.

Pemrograman Dasar OpenCV


Anda membutuhkan editor dan kompiler Visual Studio .Net 2005 untuk
mengedit dan mengkompilasi program OpenCV. Anda terlebih dahulu
harus mengkonfigurasi Visual C++ .Net tersebut di mana file library dan
source-nya harus disertakan (lihat tutorialnya di internet). Beberapa file
library juga harus ditambahkan pada input linker di Visual C++. Anda
juga dapat mengikuti paket training 3 hari fullday/workshop sehari

Computer Vision pada Robot yang diadakan oleh CV Pusat

e-

Technology milik penulis, baik secara private mauPun inhouse.


'C

\P169"** FilesropenCv\lib"

*r*:.:iini

lhrn

lSsou*cmtrot si*i***--**T
Edlor
l*l

Text

i$il;;;
*"
,-:":""*"

direclories for:

[h*\,ril",

";

yjafE,rjtl
-

l$(vLlosldlDir)lib

.{ l.b:sslns Errr,:*;;ffi;b,;"-.;J{'\hb-

:iJLrevrte'ool, ffirtrm:U(llh\0rtrEletre
i$(r(IniitsllDir)Fldborm50K\lib
i' r ttT|,,tL D"r,**,

j'-it,o'::,:.
uertsuttS
1
ii

!i

rts

t:

^':"l:

VL++

i
I

i::ri

Xl'lL

',

LrarfreHorE5UKU[]lfi

ffiM
:
r

BUIId

Dire.tories
Web 5eitinqs

!c++

ll3windowsFtrroDtriqrer

i
I

l,nt11i:1:1,);11i,i;,.;1:11

OEiBffir

Libtaly

;,1r;;11g11s

Oirrtt{iiaj

Path to ure urhen *arching im ht(ary filtr u*de burldflq


CffiesFonds to Ertrirffirffit vari*le LIB,

["llt-J

VC++ proiect,

qfrrt

i tlr

Gambar 8.1 Konfigurasi File Librarg

Sebagai contoh, buatlah program Win32 console application untuk


menampilkan sebuah gambar di Windows.

196

L6l
alnc

aieut uertndueuatu

uteJfioJd

tlscg Z'g JequeD

lnlrJeq requre6 lrdtuel UPIV

cdf'cru ouloc
:qelurrad ue6uep
ueluelef nele eldtcrel 6uBf exe' elIJ Isn{esla 'tseltdtuollp t{PIeleS
'0rnopur716patueN^) ueqeun66ueu ue>11rdrue1rp nlpl'0eDeu1po1nr
ueleunDEueur ue{Iraq p}ll 6uer{ 6dt alIJ ppoletu uP{e selp rp uer6or6
j ( ,,tIVgi^IVe-lVldSIC-t{o1uoJ,, ) &lopurM^of lsac.I\c
r (6urT{ ) oEEulIaseaTaU/\J

i (6uT ' ,,uvaHVc-.I'VTdSIG-tIo1uoJ,,

I ( sz I So&ov-MocNIM-AJ

",

uVAWVS-IV.Id

j (0)^aylreM c

) a6euIAol{s^c
Ic-qoluoC,, ) 1{opurMpaureN^c

i ( [T]^6re) a6eurlpoT^J= 6urr

*a6eur11d1

(,\6-re + +:er{c 'c6-re

1u-J ) uTPllr

1ur

<q'rn6q6rq> apnT3ur#
<q'.1\3> apnTcuT#

rq'oruocr

apnTJuT#

,,r{'xlep?s ! apnlJur+
uro3'

Elruo"rl{aIa-o{o1'/v\.lwh
lnurr

uloc'

loqo-r-o}tol'/vta.ryI //
/
/

g1g7 opoplg .aw

^a /
-zequrE6 ueriTTdureuaur urE-r6oJd ouJoa

sddc'ouec

Bah 8: Computer Vision untuk Robot

Berikut contoh program memodifikasi/memroses gambar:


cadbar.cpps

#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#include <math.h>
int main( int argc, char** argv ) {
CvPoint center;
double scale=-3,'
IplImage* image = a:rgc==2 ? cvloadlmage(argrv[1]) :
if ( I image) return -1;
center = cvPoint (image->width/2, image->heighL/2) ;
for (int i=0; i<image->height; i++)
for(int j=0; jcimagle->width; j++) {
double dx= (double) ( j-center.x) /center.x;
doubfe dy= (double) (i-center.y) /center.y;
double weight=exp ( (dx*dx+dy*dy) *scale) ;
uchar* ptr =&CV-IMAGE-ELEM(imaqe, uchar, i, j *3 ) ;
ptr [0] = cvRound(Ptr[0] *weight) ;
ptrtl) = cvRound(Ptr[1] *weight);
ptrt2J = cvRound(ptr[2] *weight) ; ]
cvsavelmage( "coPY.Png", image ) ;
cvNamedwindow( "test", \ );
cvshowlmage( "test", image );
cvwaitKey(

return

0;

);

0;

Jalankan program dengan perintah Gambar frra.JPG. Hasilnya adalah


seperti gambar berikut :

Gambar 8.2 Hasil program

198
I

[_

66I

i
J

0 u-rnla-r

( a-rnlde3d5 )arnldeCasEaTaE,\c
e-rn1de, oapr^ Tseurvaa& / /

(aurEueIrJ ' ,u\sZ aTrf aoeulT e1T.rr^ o1 paITel,, '.r-rap1s) l:lur]d]

( (aure-rdoapl^d'aureuaTrf )a6eurIa^ps^ci )fT


j (T+T',,6dt'pgauretdoapTA,,auleuaTrl) llur-zds
aTTli a{ srTnl / /
I (,,u\oure.rl: oapr^ E ?a6 01 paTTef

r /-r-rap1s)Jlur-rdl

{
)

( aure.rJoapr^di )lT
i ( e-rnldEJd )aulE-rd^-ran0^J = aure-rdoapr^d
]
(++r 1t>I i0=r),rol
oeprA auP-rJ e TTqurv //
,

_ uJnle-r

f
j ( !u\upcqaa TsesrTersrur lEbee ,, '-r-repls)
Jlur]dl:

j(

( a:rnldEJdi )lT
)I^IVJulo.r.{e-rnldpJAJ = a.rnldeJd
^NV-dVC-AJe,rnldEc oapT^ rsesrTeasr.ril / /

j [0E] aueualll
-:er{J
!a
1uT
j0 = aure:JoaPTAd + eoEurJIdI
I0 =
a]nlde3d + a-rnldeJ^J
(,\6-re r + -Ter{c 'c6-ae a,r-, ..-t* a,rl
,,r{' rn6q6rr{,, apnTruT#

:B:+:X+l
";l'i3:: apnTcuT#
',q'oTp1s,,
o,

. -"i:y;J;rn ?;;d''^lli" ),

a{ rs{auo}t ouaq //
ddc . ernldECurecqe1,l

aure-r] uEdurrs uEp uecqaa


:

( INV-dVJ-AJ )I^IVCuto,r.{a-anldEJAc = a:n1de3d

: qelepe ueleun6rp
urnrun 6uert rs6un; eupturp 'rur lnlrreq epol otuep ue>1eun6 'lnqasJal
e6eur lrqtue6uaru upp tue)qe^\ rslalapueur ur6ur epuy elrf

r.ueDqe^\ rrep

Bab 8: Computer Vision untuk Robot

Pengenalan Wajah
Haar Cascade Classifier
OpenCV adalah open source library computer vision yang memudahkan
pemrograman deteksi wajah, face tracking, face recognition, kalman
filtering, dan berbagai metode artificial intelligent.

OpenCV menggunakan sebuah tipe face detector yang disebut Haar


Cascade Classifier. Qambar menunjukkan face detector berhasil bekerja
pada sebuah gambar. Jika ada sebuah image (bisa dari file/live video),
face detector menguji setiap lokasi image dan mengklasifikasinya
sebagai "wajah" atau "bukan wajah". Klasifikasi dimisalkan sebuah
skala fix untuk wajah, misal 50x50 pixel. Jika wajah pada image lebih
besar atau lebih kecil dari pixel tersebut, classifier terus menerus jalan
beberapa kali untuk mencari wajah pada gambar tersebut.

Classifier menggunakan data yang disimpan pada file XML untuk


memutuskan bagaimana mengklasifikasi setiap lokasi image. OpenCV
menggunakan 4 data XvlL untuk deteksi wajah depan dan 1 untuk
wajah profile. Termasuk juga 3 file XML bukan wajah: 1 untuk deteksi
full body, 1 untuk upper body, dan 1 untuk lower body. Anda harus
memberitahukan classifier di mana menemukan file data yang akan
dipakai. Salah satunya bernama haarcascade_frontalface_default.xml.
Pada OpenCV, terletak pada folder:
Program_Fil es/OpenCY I data I haarcasades/ha arcasca de_frontalface_def

ault.xml.

Konsep Pendeteksian Wajah


OpenCV face detector menggunakan metode Paul Viola dan Michael
Jones. Silahkan baca detail paper mereka di CD Program. Metode
mengkombinasikannya adalah sebagai berikut:

Fitur rectangular sederhana yang disebut fitur Haar.


Integral image untuk deteksi fitur yang cepat.

200

r
TOZ

j (T-)
I

lrxi

(,,u\ Te6e6 TsesrTeTSTuI.,) l:1ur,rd

(opEcseJdi ll

a6erolsdi

ll 6ur1du1d;)4t

'rPuaq ueDuap PPol-lP


elrJ uplrlsprueur >lnlun uPle)e6ued ueTraq efulreqag 'q]Pd t{plPs
'alIJ IreP PteP Peol-erx Dulres ue{P PpuY '

upurl6unueI

PPP

ntuel

j ( a6e.rolsd3 ) a6Pf olsurar{asEaTa}Il\c

'rpselss r{PIe} P{I}aI P^u-esPelaJ-elu uep


I

e{

(o)

a6erolsurawaleaJJ1\J=e6erolsd

:e^ulenquleu qelePe ueIPfJe{ pPuY snrel{ 6uetr'reJJnq


'a6ero}sluaw^)
IIA}aPJa1 6ue,{ qefern reuPPuaur ue{P ro})a1eq

'Z
{e[qo uplqnlnqueu PPuY 'e6eult eped qefem Is>le]apuau unleqas
'ueleun6rp >1epr1 6uef :aleutered ue>16ue1rq '++) ueleun66uau
eIIl '0 rpelueur B,{uBsts reletuered les ') eped apol }pnqureu epuv
e{lf '}ndu! re}eruPred 5 ue>1qn}nqtueu Duer{ a1t3 Irep e}PP Ppol-eu
Inlun ulnuln rs6ury qBIPPP Ppo-I^D '$peo1nc rs6ury ueleun66ueu
ledep epuv 'eperse3d eI IWX PlPp Peol-eu InluD "IWX ellJ
rJpp plep uBdtutfuetu apecse3d x ePP)sP)reIJIsspl)rePH^) aIqPIJPA
:qe[e76 rs{e}eq

'l

rselueueldul

'Bpe uelplellp lnqasrel rnlrJ '(6uru"ree1 etueles las-lP) Ploqserql


sple rp ueepaqred elrp '6uerel qereep eler-elpr lexrd rrep de1a6 qeraeP
plpJ-pler lexrd ue6uern6uad qalo uelnluellP rBeH 'dele6 I UPP 6uere1 1
,ueqelaqasraq 6uer{ t6es1ad uefiuesBd L{elBPe Ie}oI Euequolafi '1suetu1p
'rPeH
Z eped '>lploy Duequole6 qenqes qelppe "reeg Duequola6 Inlueg
6uequrole6 Inlueq ueleun66ueu seuor upp plor^ ueleunDrp 6ue[ rnlrg
'uersrJe
JnllJ
eJe)as
qenqeg
1er{ueq ue{tseulqtuol6ueur {n}un ePe)se) 1se4;1se116ued
'lsoogepv Durureal eulq)Ptu epolew

.
.

Bab 8: Computer Vision untuk Robot

4.

Untuk menjalankan detektor, panggil objek cvHaarDetect. Fungsi


ini membutuhkan 7 parameter; 3 pertama adalah pointer image,
XML data, dan memory buffer, sisanya di-set pada default C++.
pFaceRectSeq =cvHaarDeEectObj ecEs

(pInpfmg, pcascade, pStorage,

1-.1-, / /tLngkatkan skala pencarian dengan 10% E.iap passing

3,

//drop group yang kurang dari 3 deteksi

CV_HAAR_DO_CANNY_PRUNNING //skip region yang tidak berisi


cvSize (0, ) ) ; / /gunakan xl4l- defauft. untuk skala pencarian

5.

wajah

terkecil.

Untuk membuat display Window gunakan cvNamedWindow seperti


berikut:
cvNamedWindow

"Haar Window",

CV-WINDOW_AUTOSIZE)

ke display, panggil fungsi cvshowlmagefl


nama yang telah dibuat pada window dan nama image yang ingin
ditampi lkan.
UnLuk memasukkan image

dengan

Berikut ini kode lengkapnya:

DetectFace.cpp:

/ / Hak Cipta cognotics.


#include "stdafx.h"
#incfude <stdio.h>
#include'cv.h'
#include "highgui.h"
//

**************+

********
***********
OPENCV_ROOT

#define
/

com

"C:/Program Files/OpenCV"

********************************************

void displayDetections(Iplfmage * pfnpfmg, CvSeq * pFaceRect.Seg);


int main(int argc, char** argv)
{

// variables
Ipflmag:e*pInplmg=9,
CvHaarClassifierCascade * pCascade = 0; // face detector
CvMemstorag:e * pstorage = 0;
// memory for detector Eo use
Cvseq * pFaceRectseq;
// memory-access interface
// pengecekan
if(argc < 2)
{

printf("Missing

name of image filet\n,,


"Usage: ?s <imagefilename>\n", arW[0])

exit(-1);

// initializations

plnplmg = (argc > 1) ? cvloadlmage(argv[1],


pstorage = cvcreateMemStorage(0) ;

CV_LOAD_IMAGE_COLOR)

0;

202
I
I

l.'

f
,oz

I ( MOCNIM-Ld S IO ) r\opuTM^o.I? saG^c

i (O)^aXlreM c

I (bulduId',MOONIM-IVTdSIG

e6Eurll{oqs^c

ue{TTdue? //

(O 'V ' E '(O'ggz'OlaeE-AC 'Z?d 'I1d 'SurIduId)aTouElcau^c


,{ 1r{6Tar{<-r +
'qlpT/,l<--r + x<-.r } = Zld lurod^J
^<-l
!{
'x<-f, } = T1d lurod^c
^<-a.
(r 'baslcaEacedd)ureTgbes?ae^c(+lcell^3)
= -r +13aEAC

( ++1 : (O: Telol<-baslcauace.{d abeslcauacedd) >rJ0=T)'roJ:


uorlJalap qcEe puno-Ie auTTlnO fpTn6uelCaf e llleap / /
j

(EZ

I S O,InV-MOONIM-AJ' MOoNIM-^V'Id 5 1q ) atopu f MPeureNAc


sase] pa1c31ep .{eldsrp 01 8lopuTlv\ e aleaa) / /

j ,,r opuT}.4 fEPfi,,

MOCNIM-I\V'IdSIG

jr fuT

+ -req3 lsuoJ

(baslcaEace.{d + bas^J ,Euitduld + aoeurITdI) suoTlselac^eTdsrp pro^

I0
I ( apEcseJds

u-rn?a-r

I (e6e-rolsdA) a6e,rolSueI^IaseaTalI,\3 (aoelolSd) l:T


apEcseJf, ar r ssPTc.rePHesPalaEAJ ( apesseJd ) f "l

^q

J
j ( EuIdulda ) aoeurIaseaTeE^J
saJf,nosaf aseeTaf pue dn uee-lc / /

(baslDeEacpJd' ourIduld) suoTl caleo^eTds rp


rs{alapJa1 6ue^ qeter u>iTrdurel //

= 1calap 01 ace] azrs lseIIeuIS


suor6a-r dr)is
ureluoc 01
aa-rq? l:o sdnofE a6Jau.l
suor?ca1ap ^TalTTun
alecs l{Jreas aseafJuT

qcea Z0T

I ( (0r'0r)azrs1\c

7x0,

aceJ

/ /'9NINflUd-INNVJ-OO-1{WH-AJ
L

ssed

,I'I
'aoe.rolSd'apecseJd'bu1duId)
uT saJef 1oa1ap //

slca tqolJalacfeeH^s = baslcauacedd


aOEUlr

i (T_)1rxo

e?ecoTTe 01 aTqeun,,
elep f,oJ
I ( [T]^6,re
^f,ouraur
a{euu
: ",o6ero1s
,!1CA-T-IO3 ST qlEd alns
,, -- apecsec-.reeq peoT 1,uec,, a (apeJseJdi)
; aTTf a6eulT peoT 1 , ueJ r a (ourrdurd i )
,
,,u\s% :paTTef uoTlezTTe-I1ruI ,, ) Jlurrd
)
( aperse3di ll a6e:o15di ll 6ut1du1d; 1;t
pazrTerlrur 6utq1.{:ala lEr{1 a?eprTeA //
,,

1IT.rado.rd

j(o'o'o
'

,,

TuD('

l TnPl:ap-aoeJ Teluo-rl-apessec-reEq

sapecsEs-reel{/Ef pl ,,,IOOE-ACNEdO ) )

peorI^3(+ apEcspCrerJ-lsseTJ]ePH1\C) = apeJseod

Bab 8: Computer Vision untuk Robot

Gambar 8.3 W4jah cantik gang terdeteksi

Tracking Wajah
OpenCV face tracker menggunakan algoritma CamShift. Camfsit terdiri
dari beberapa langkah :

1.

Membuat histogram warna untuk merepresentasikan wajah.

Camshift merepresentasikan wajah yang di-track sebagai histogram


mengindikasikan
berapa banyak pixel pada daerah image yang memiliki "hue". Hue
adalah satu dari 3 nilai yang menjelaskan warna pixel pada HSV
(Hue, Saturation, Value).

nilai warna. Ketinggian setiap bar berwarna

2.

Menghitung probabilitas wajah untuk setiap pixel pada frame video


yang diterima.

3.

Menggeser lokasi dari persegi wajah pada setiap frame video.

204
i
I
I

l_

Y
rtr-

I (T_)uer6o.rdfTxa ( OTTVxTUTi )l.F


j0=lceuacedd+lcaEl\J
)

^6ab

?brr^
+-rEr{c

,^6Tqur ) ureu pro^


'c6:e

I ( )eure-rdoapr^a]nlde3

pro^

l (epoc 1ur)ule_r6o"rd1Txa pTo^


I O TTVITUr tu-F

lsbunJ rsa:u'tJeA ////

t0 = IdoJeureJdoapr^d + aEeulITdI
saTqer"rp^ IeqoID ////
,,ACuedO/saTTJ urp:6ofd/

: J,, ,toou-ASNsdo aurl:ap#


j,,/'lopurM^pTdsTC" = MOoNIM-IVTdSIo + -rer{) isuo3
,,
,,

J' -raddpf,r -f JTr{sure3 r apnTcuT#


q' radde-r/v\-l !t Tr{suec,, apnTour+

i 3' lapaJe] ,, apnlsur#


!q'lapacE]! apnTcur#
,, ) 'a.rnlde),, epnTJuT+
q ' a-rnldec ,, apnl sur #
<i{'orpls> apnT)ur+
,, apnT cur #
,,

,,

q ' Tn6r{6rr{

,,q'..Ic,, apnTcur#

uroJ's)r1ou6oJ eldrJ >PH //


qEtel^ 6ur{Jeal, ouaa / /

ddc.{cEr[ecrJ

:e{uePol qo}uo)

rur }nIrJeE

o;'t#'

. ? q, a ] u r e ru el:
il'r? ?:Xr*"XIll:;tffi ;' iil i:t ::
: iuelra: Iplol rJep lnpns upp upJnln uplrpnsefuaru BDn[ Br puaJBI
.; ls ueew,, e^ueq uelnq 'up{pun6rp a^rldEpp ,{lsonurluo) epolaw
D

'lnPns upP uern{n 6un1rq6ueyl


'enr)ruEuro) urJoQ r{elo ,,}J!r{s upew,, eLulrJo6le
-jplrpsppreq rselr^eJ6 lesnd ueDuap uelEunqnqDueru Inlun lelo{
i:';rqs sasord 'nJpq rsB>lol a{ Jesa66ueu In}un qe{Dupl uplrse}
-uaLUaldu-rrDuaur 0UUSIuB)A) rs6unJ 'Iplo{ }psnd aI IIp{ edereqeq
ue{nlplrC 'rselrner6 }psnd qp/y\alar.u ez{u1e1o1 e66urq lp}o>l
rasa66uaLu 'nlp-l 'Ielo{ qenqes I.uplep ,{lrlrqeqord-a)pJ relru rJep
IselrApJF ]esnd Dunlrq6ueu upp p{uunleqes rsplol eped relnueu
up6uep lnqesral nreq rsp{ol rrp)uau ue{p el 'r(lrgrqeqord ere; e6eurr
Bppd 6ueJe1 laxrd r:ep rD6uq rspJluesuol upDuep BeJp pppd lesndral
ledel lenqueul 'qeferrr rsp{ol rrep e^ursE(ullse Jese66ueur urqsulp)

'9

'v

Bab 8: Computer Vision untuk Robot

/ CapLure and display video frames until a face


// is detected
while( 1 )
/

i
/

/ mencart wajah pada nexE frame

capturevideoFrame ( ) ;
pFaceRect = detectFace (pVideoFrameCopy)

// Tampilkan image
( DISPLAY-WINDOW, pVideoFrameCopy
if ( (char)27==cvWaitKey(1) ) exitProqram(0) ;

cvshowlmage

);

/ exit Ioop when a face is detected


if (pFaceRect) break;
/
]

/ init.ialize

t.racking

startTracking (pVideoFrameCopy, pFaceRect) ;


/ / "lrack the detected face using Camshift
white( 1
)

CvBox2D faceBox;

CvPoint facePoint;
/

/ ar&)il next frame video

capturevideoFrame

/ Lrack wajah Pada video frame


faceBox = track (pVideoFramecopy)
/

// Bentuk eliPs
cvEllipseBox (pVideoFramecopy, faceBox,
cv_RGB (50,255,0) , 2, CV_AA, 0 ) ;

cvshowfmagie( DISPLAY-WINDOW, pVideoFrameCopy ) ;

tf(

(char)27==cvWaiEKey(1) ) break;

exitProgram(0);
)

int initAll
{

if( linitCaptureO ) return 0;


if ( I init.FaceDet (OPENCV-ROOT
" / daEa /haarcascades /haarcascade-frontal face-defaul t .xml " ) )
return 0;
/ / Buat jendela display
cvNamedWindow( DISPLAY-WINDOW,

);

/ flltiaLLze tracker
if ( IcreateTracker(pvideoFrameCopy) ) ret.urn 0;
/

captureVideoFrame ( ) ;

/ / SeL parameter Camshj-ft


setVmin(60);
setsmin(50) t

return L;

206
&

I
LOZ

opopllyl'rN qe[bm 6u14ce4 uep .sqa:.np ilseH g.g requeD

'.-

palra^uT sr

aoeurT ar{? sueau


1

- -ro< -^doCeure-rdoep

rAd

r ( o Yo ,iuij.urrrro.pl4d )drI.{^c
)
T // ( ur6T.ro<-IdoJaure-rdoapT^d == T )lr

ur6 r jro< - aue-rdoapr^d = ur6r]o< -xdo Jaure-rdoap r^d


( 0,-^doJauiE,rdoapr^d iaue-r.{oapTnd )Ido3^c
I

'8'

(aupjrdoepl^d)azTSla[}/\J )a6eurJa?ee.rl^c = IdoCaurerJoapr^d


( 1{doJeure-adoapT^di )lT
papeeu fT 11 EuTlre^ur ,a6erur
aql o? al Ad.o3 I 1
^pTdsTp

!(

i (I_)urE-r6o_zd?Txe ( aure-rdoopTndi )lT


, Oaure-rdoeprA?xau = aureJdoeprAd * a6eur11d1
aure-r] lxeu aql a]nldp3 //
(,,u\pg : E?eC,, ) l:tur-rd
I

()

eue-rdoepT^a]nldec pro^
1

(apoc) lTxe

j ( )-ra{ce:J,eseaTa.r
J ( ) laoesEgasoTc
j ( )a-rnldECasoTc
sac-rnosa-r aseareu //
j(
)o6eurIaseaTaE^c
.i (^doJaure-rdoepT^dT
MOCNI14-IVTdSIq ) ,tnopuTg^o,rlsa6lo
sac-rnosa"r esEaTalI / /

(epo, 1ur)1ue-r6o-rdlrxa

pToA

Bab 8: Computer Vision untuk Robot

Latihan
1.

Untuk mahir computer vision pada robot, tidak ada cara lain selain
Anda mengerjakan tugas yang penulis berikan. Buatlah Program
Robot Line Follower yang mengikuti wajah orang di depannya.

2.
3.
4.
5.

Buatlah program edge detection menggunakan OpenCV'


Buatlah program Threshold dan ROI menggunakan OpenCV.

Jelaskan cara kerja Haar Cascade Classifier.


Buatlah program dan file library XML untuk deteksi objek buatan
Anda, misalnya deteksi gelas dan gunting. Anda harus membuat file
positif berupa file gambar yang ingin dideteksi minimal 72 gambar
dengan berbagai pose dan file negatif berisi gambar yang bukan
ingin dideteksi. Lalu, lakukan pembuatan file vector dengan contoh
perintah:
createsamples.exe -info positiveSample/info.txt -vec data/vector.vec'
num 18 -w 20 -h 20

Kemudian melakukan training dengan perintah

haartraining.exe

-data data/cascade -vec data/vector.vec 'bg


2 -mem 1000 'mode ALL '

negativeSample/infofile.txt -npos 12 -nneg


w 20 -h 20 -nonsym

Lalu buat file XML dengan Perintah:


haarconv.exe data output.xml 20 20

208

L*

&

r
602

1NX ue?enq ttafrqo 6u14ce4 uep lsqapp nsery L'B requeD

t"tz

'lersretuol erunp eped up{derelrp qelet reuaq-rpuaq 6uB{ ue,{eyed loqor


Bpe r.unleq ue{e}plrp ledep urpues erseuopul Ie 'EJeDIqJaq upp 'pJpns
'qefern leua6ueu-r ledep urel eJB]uB 'pJsnuetu ue6uap lelsos Is>lEJa]uIJaq
ndrueu snJer.{ er{un1ua1 rur edq }oqod 'elII re}Iyes rp ue,{e1ed loqor
e{urrpeq qplepe }oqor rDoloulal ue6uequeryad rrep uedereq n}es qeles
'plsnuetu ueefraled nlupqueu uep rde>16uolau ndtuelu 6uer{ seprar
loqoJ er{u:rpeq }nlunuau qPlel }oqor r6o1ou1et }esed ue6uequ:erye6
uB^Blod loqou

rnllolrsrv

ue^Blod loqou ueOuEcuBU


'ersnueru drrnu 6uer{ proueunq
]oqor uelpnfnmeu Jeueq reuaq ur6ur e>1rf sas{ns e66utq }enq epuy
snrer.{ Iuls Ip ueryededrp 6uer{ loqor 'epuy seJa1 e[.re>1 uep e{ur-unyeqes
Iraler.u 1eleqreg 'a;ec/ue1eu qerunr eped ue,{eyed loqor qelppp IUI
Ieq urelpp 'ersnupLu ruer(e1euu ndtueu: 6uer{ loqo: qBIepB uer{e1ed loqod

uenlnqBpuad

ploueunH uelte1od ioqoa

Bab 9: Robot Pelayan Humanoid

Oleh karena itu, penulis tertarik untuk memotivasi pembaca agar


membuat robot ini.
Robot yang akan Anda buat berbasiskan 2 buah mikrokontroler Basic
Stamp dan AVR Atmega8535 untuk mengendalikan webcam serta
aktuator. Perangkat yang digunakan secara detail adalah:

o
.
.
o
o
.
.

2 buah mikrokontroler Basic Stamp dan 1 buah mikrokontroler AVR


Modul Text to speech dari Parallax
SG6 Arm Robot 5 DOF Crustcrawler

2 buah servo continuous Parallax

2 buah webcam standar


Sensor jarak PING

Motor dan roda robot serta komponen pendukung

Berikut ini adalah rancangannya. Intinya, robot mendeteksi wajah seseorang menggunakan webcam, robot menerima input order dari switch
manual atau speech recognition. Setelah itu, robot dapat memberikan
order orang tersebut menggunakan arm robot dengan berjalan menggunakan kaki atau roda. Berikut arsitektur robot penulis yang bernama
Srikandi.
ertuilpa r,!
aarera

r0rtrD:ler

E;;;;;;I

ll

r;;..,_-";*+

f -**'Jl
Gambar

9.1 Arsitektur

robot pelagan Srikandi (seroant robot, hak cipta

penulis)
272

r
.tz

tpue{trg uefrepd pqor gutdues 4eduel '6 requeD

sEag

*----------*

jtaIPtsds

It'xleulp.looq 0,ruaS liq d

lpu",tqg uefrepd pqor uedap qeduet

Z'6,

requeD

eAeperle3
r*.rs'E

I -,.,

[,u tr

Soqo;

uetual

---------------r'

QSi6!A8ilAls ________--______*, #,.,,

G&

Bah 9: Robot Pelayan Humanoid

Anda dapat memesan demo robot ini dalam bentuk sudah jadi (robot
people follower) tanpa lengan robot seharga 9 juta rupiah. Jika lengkap
dengan lengan robot, harganya sekitar 30 juta di luar laptop/PC.

Perangkat Lunak Robot Pelayan


Untuk mengendalikan Basic Stamp digunakan bahasa PBASIC. Untuk
mengendalikan webcam dan image processing di PC, digunakan
OpenCV. Sedangkan untuk mengendalikan AVR digunakan CodeVision
C AVR. Untuk antarmuka antara PC dengan pengguna (User Interface)
digunakan Visual C# .Net. Agar robot dapat berbicara, digunakan kit
Text to Speech dari Parallax. Contoh robot berbicara ini sudah dibahas
penulis pada buku sebelumnya, yaitu 10 Proyek Robot Spektakuler
terbitan Elex Media Komputindo.

Face Recognition
Konsep Dasar
Untuk membuat robot pelayan dari arsitektur di atas, pertama Anda
harus membuat program face recognition yang akan mengenali wajah
pemesan dan object recognition untuk mengenali gelas atau bukan.
Object recognition dapat dibuat dengan membuat file library XML. Face
recognition di sini menggunakan Eigenspace dan PCA, yaitu suatu
teknik yang umum dikenal jika pemula ingin belajar pengenalan dan
identifikasi wajah. Penulis mengharapkan Anda membaca paper asli
dari penemu teknik ini di CD Program. Penulis juga mengharapkan
Anda mempelajari Machine Learning. Program dimulai dengan training,
di mana program akan melakukan proses pembelajaran. Selanjutnya,
dilakukan pengetesan image, yang kemudian diteruskan dengan proses
pengenalan wajah. Buatlah proyek baru dan beri nama FaceEigen
sebagai berikut:

214
&

r
9tz

(sacedure.zJ,u',u\pt ztluo suleluoc aTTl: 1nduI,,


,,u\sare] 6uTuTe.r1 e.:olu .ro Z peeN,,

iu.rnle.I

,-r-rapf s)
li?uT.rdf
)

I ( .3x1 'uTe.r1,,

( z > saceguTerlu )l:-F


).^E]-rv6urIecedpeoT = sacegure-rJ,u
elep EuTuTeaa peol / /
jlasJJo ,T luT
)

)ujreel pTo^

ezru6oce-r

( (,,lsal,, 'IT]^6rp)dur.r?si )]r

j ( )u.rPeT
)

( (,,uTPf,l r 'IT]^6"re)durc-r?si )l:T


( A6.re ++fer{c /c5le 1uT

)uTeur pToA

r o a6esoluT.zd pTo^
i (eueuaTT] + .rer{c)^e.rJvburlacedpeoT 1uT
j (aredlsaJ,pa?)a !o:d + fpoTJ ) .roqqbTaNlsa,reaNpuTJ ?uT
j (lewumNuos-ra6ute:;d ++ IeN/1J)eleg6uTuTe.r&peoT 1uT
I ( ) Plpq6uTuTp.rJ,alols pro^
I OYJdop pTo^
Oazru6oca-r pro^
r

l Ou.reaT pro^
sed lolo-rd :uoal)urri ////

sasPJ buTuTerl palcafo.rd


senTe^ua6Te

sfolJa^ua6re
aOEurT a6E-ra..\e aq1

sanTp4ua6Ta Jo faqumu aq1

3PNaCedure.rJpalcato-rd + IeNAJ
.u =
?eNTeAuoETa + IPNI\J
.u =
-r-rv13e^ua6Ta ** ebeur11d1
.u 6urIuTerJ,6^Vd r eoPurITdI
suooTEu ?uT
j0

sa6eur acel: Jo ^e.r-re

.u

sabeur 6u1ute:1 J:o .rac[u]nu aqa


sfaqumu uos-zad Jo

^Pf,f,e

rjrvburlace] ++ a6purITdl

lur

se3eduTPjrJ,u

1el^Jq1n-r[urnt[uosJad

lefiuro

saTqer-re^ leqoIlD ////

,,q' rn6q61q,, epnTcur+

.,q'xne^cr

apnTcuT+

,,ri'1\3,, apnTcuT+

<q'6ur-r1s> apnTJur+
<q'o-!p?s> apnTcur#
xf ep1s,, apnTcuT+
,,r{'

uoc . scTlouboJ eldrJ )teH //


acedsua6Tg sTsPq:aq uoTlTu6oca-r ece.{ ourop ure,z6o.zd / /

!dda.ueETgeoBJ

Bab 9: Robot Pelayan Humanoid


/ / do PCA
dopCA( ) ;

on the training faces

/ projecx the training images onto the

PCA subspace

projectedTrainFaceMat = cvcreateMat( nTrainFaces, nEigens, CV-32FC1


offset = projectedTrainFaceMat->step / s:'zeof (float);
for(i=0; i<nTrainFaces; i++)
{

);

/inL offseE = i * nEigens;

cvEigenDecomposite

facelmgArr Ii]

eiqenvectArr,

0,

0,

pAvgTrainImg,

/ /proj ectedTrainFaceMat->data. fl + i *nEigens


projectedTrainFaceMat->data. f1 + i*of fse!) ;

);

/ / sLore the recognition data as an xml file


storeTrainingDat.a ( ) ;
)

void recoqnize
{

int i, nTestFaces = 0;
float * projectedTestFace =

CvMat * trainPersonNunMat = 0;

//
//

L]ne number of test. images


|uhe person numbers during

training

0;

/ / \oad tes! images and ground truth for person number


nTestEaces = loadFacefmgArray( "test.t.xt" ) ;
//prinLf ("%d test faces Ioaded\n", nTestFaces);
/ / load the saved training data
if( !loadTrainingData( &trainPersonNurMat ) ) return;
/

/ projecL the test images onto the

PCA subspace

projectedTestFace = (float *) cvAlloc ( nEigens*sizeof (f1oat)


for (i=0; i<nTestFaces; i**)
{

);

int iNearest, nearest, truth;


/

/ project Lhe test image onto the

cvEigenDecomposite

PCA subspace

facelmgArrIi],

nEigens,

eigenvectArr,

0, 0,
pAvg',l',rarnImg,

projectedTestFace)

iNearest = findNearestNeighbor (projectedTescFace) ;


truth
= personNumTruthMat->data. i Ii] ;
nearest = trainPersonNumMat->data. i IiNearest] ;
printf("Wajah ini mirip dengan = ?d, Truth = %d\n", nearest, truth);
i
)

276
A

LLZ
{

'

IT ]

i ( (0'0)lsTrlfllv^c
.r.lvlranuaoTa 'eueurp^ 'e6e-rolsaTTl ) a1rf,M^)
!l \ ',,p8-ScaAua6rar ',aiueule^ )J:luTfds
: [002]aueure^ .req3

(++r i sua6Tgu>r

10=r )-rol:

j((O'0)1sT1r11vA)'SulrurerJ,6^vd',,6ufurerJr6.l\p"'abelolSal"[J)alr:IqnD
i ( (0'0)lsTrlftlv^c
':tetilase.{ure]J,pal3ato-rd

',,

lEwece-{u"lEfJ,pal'3atofd" 'o6P]of saI-Jl:)a1I'IM

3
i ( (0'0)?sT'If,1fv^c'lewTe^uabTa',,1eNTeAuaora"'e6elofsoTrJ)e1I]M
1 ( (0 '0 ) 1sT.r:11V c
'lENr{1n-rlurnNuosfad',,1BI,0:rnNuos-rodure-r1"'e6e'rofSaITJ)a3r'rA/\O J
j ( saoeJuTe-rJu ' ,, sacEJurPJJ,u,, 'aoplolseTrJ ) 1uIalT:M

l i sua6rgu ' ,, suaorgu,, 'abE]olsaTT] ) 1uralr]M^c


ElEp er{1 TTe alols //

!\

E,],I1IM_EC\'dOJS_AJ,

a5p'rolsaTrl
,, Tu.rx'E1epaceJ,, ) 36ero1saT'Fduado^) =
arE3ra?uT a6e:o1s-a1tJ e aaeaac / /
l r lu-l
iaoplolseTrf + a6E-rolSoT-id^c
)
()

elEq5ururef,fiaf,ofs

ProA

1T U-rnlaf
1 ( aFe-rolSaT-Il! ) e6prolsaT-iJaseaTau^)
a3eJ.ralur abef,ols-alrJ aq1 eseaTe-r / /

a6eulTdI) = [r]r]vlseAuaore
1(0 'aulPure^'O 'a6E.rolSaT-Il:)aureN^gpEau,r\c(+
i ( -t ,pZ-lJaAuaEra,, 'aulEuf,e^ ) l:luTrds
'

I [002]eulPu-re^ f,eq,
j

(*+r isua6Tgu>r :0=r)-roJ

j ( (+ e6eurlTdI)Joazrs+saceJure-rJu)coTTV^J(+x

a6EurfIdI) = f,'rvlce^ua6ra

r (o

= ourIurE:JE1!Vd
',,5urIuTerJ,6^e,, '0 'aoErolSol-!f )aureN^gpEaE^c(+ abeurIldI)
I (0',,1eNa3eJure-rJpalcatofd,,
'0'aoE.rolsaTrl)

aureN^SpeaE^)

(+ lEI'{^C) = leNaJeduTe'z'Ipa1ca!o:

'0 'abe-rolsaITl)aueN^EpPaUAc(+

1eI^1^C)

. tu

fEI^ITeAuabra

',,?eNTEAuaOra,,
i (0 ' ,, f EwunNuosradure-r1
' 0'a6ero1saT"il: ) aureNlgpeau^) ( + lEI^iAJ) = lewurnNuosf,adure'rJ'dY
i (0 ' ,, sa)e.{u-FPjrJ,u,, '0 'abelolsaT-!l ) aueN^gluIpeaE^3 = sa3PlurP'r[u
, (o ' ,,"i.orsr},, 'g 'abe:olsaT-If )aureNAalurpeeElr = sua'6ruu

I0 ufnla.r
: ( !u\Turx'e1epe3eJ uado 1,uec,, 'f,f,ep1s) Jlurf,dl
)
( a6ef,olSaTrli )lT
r(oVEE-Eev-SoJS_^c,0,|lTuIx.elPPa3E]'')a6efolsaT-lduado^D=a6ef,o1saTTf
arEl.ralu-! a6P]o1s-aTTJ e eleaa) / /

ir iuT
ia6e-rolsaTrJ + a6ejolsalrJAC
)

(lpwunNuos-radu-lE-rJ,d ++ letr{AJ) P?Eoburu-IPrJpeoT luT

Bab 9: Robot Pelayan Humanoid

/ release

E.he

file-storage int.erface

cvReleaseFileSEorage( &fileStorage

);

int findNearestNeighbor(float " projectedTestFace)


t
//double leastDistsq = LeL2;
double leastDistsq = DBL_MAX;
int. i, iTrain, iNearest = 0;
for(iTrain=0; iTrain<nTrainFaces; iTrain++)
{

double distSq=0;

for(i=0; i<nEigens; i++)


{

float d-i

projectedTestFace Ii] projectedTrainFaceMat->data. f I IiTrain*nEigens

il;

distsq += d-i*d-i;

// Euclidean

if (distsq < leastDistsq)


{

IeastDistsq = distsq;
iNearest = iTrain;

return iNearesE,'
)

void
t

doPCAo

inE i;
CvTermcriteria calcLimit
CvSize facelmgSize;
/

/ set Ehe number of eigenvalues Lo use

nEigens = nTrainFaces-1;

/ alTocaLe the eigenvector images


facelmgsize.width = facelmgArr[0] ->width;
facelmgsize.height = facermgArr[0] ->heighE;
eigenvectArr = (IplImage**) cvAlloc (sizeof (IplImage*) * nEigens) ;
for(i=0; i<nEigens; i++)
eig:envecEArrlil = cvcreatselmage(facermqsize, IPL-DEPTH-32F,
/

/ / al.Locale the eigenvalue array


eigenvalMat = cvcreaEeMat.( l-, nEigens, CV-32FC1 );

// allocate Ehe averaged image


pAvgTrainlmg = cvcreat.elmage(facelmgsize, IPL-DEPTH-32F, L) ;
/ / seL the PCA uermination crit.erion
calct,imit = cvTermCriteria( CV-TERMCRIT-ITER, nEigens,
// compute average image, eigenvalues, and eigenvectors

278

1) ;

1)

6IZ

,,

,,u\a-TE spueunnoo PTTEA


: e5Esnr ) J:luTjd

u\<pueuuoc> ace]uaora

)aoesnruT.zd pTol

J saceJu u-TnlaJ
i ( eTrJ?srT6urT ) asoTsl:

I0 u]n1a-T
i (aurEuaTrJbuir ,,,u\s? ulo-r] aoeurr peoT ?, \ueJ,, '-r-rep1s) li?ur-rdli
]
( [acedT].r.rv5urIeoEli )JT
i(STVJSI\a80-ECVWI-CVOT-AJ 'aueuaTTd6urT)a6EurIppoT^c

= [aredT]-uv6urJare]

aberur acEJ aq? peol //

I ( aueuaTTdouT / acedT+T' elep<-1ewq?n.rfiurnNuos,rad',,

sA p*,,
'

aTTdlsT.ISurr

Juecsl:

aITl: a6euT Jo aueu pup jraqumu uosrad peaa / /


)

( ++aceJr .i saJEdu>acegT i 0=aJedr ) -rol


u ur saoeuT aJef aq1 eao1,s / /
^ejr-re
I ( TJSZT-AJ ',sa3pdu ',T ) 1e]^Ia1ea.rJ^c = ?el^JlIln,rJurnNuos_rad
1( (+ aEEurITdI)]oazTs+sa3edu )coTTV J(++ aoEurITdI) =
-r-rv6urIace]
xr-r1eur -requmu uos-rad pue de::e obeurr-aJel aq1 ale)oTTE //

l a1rg1s116urr ) puraa_r
jsa3p.{u++ ( (aIrd?sr.I6uI'ZlE'aurEuaTrd6ulT)s1o6l )aIIql1^
saseJ Jo .aaqumu aq1 lunoc //
1

u-rn1a-r

(auPuaITl: ',u\s% aITf uado 1, \ueJ,, '.r-rapls);3ur:d3


(

((,,-r,, 'oueuaTTl:)uedol =

aTrJ?sTTEurT) i )lT
aTrl lndur aql uado //

:o=saJedu 'aJedl 1uI

ZIS ] eurEuaTrdoulT .reqJ

t0=aTrdlsTTEurT*ETIJ

(aueuaTTJ +,reqc)^e.r.rv6urlaceJpeoT 1ur

j (0 'T.I-AJ '0 'I '?el{Te^uabTa '1el{Tenua6ra


,

azTTeur.roN^3

Tl' elep<-lehlTe4uabTa
'6urIuTe,rJ,61!Vd
,lTUITTCTECT
,0

,0

,XJVAT'IVJ ON r'AOCIS AJ

',rrvlce^uabra

+pTo^)

']:V6uIIaJeJ ( +pTo^)

'sacEdurE-rJ,u
)

slca tqouabTgJIJ^J

Bab 9: Robot Pelayan Humanoid

t.rain\n
Lest\n"

"

);

Siapkan basis data file gambar berekstension .pgm dengan aneka posisi
wajah. Berikan data percobaan untuk training.txt, misalnya:

1 s1ll.pgrm
2 s2lL.pgm
3 s3l1.pgrm
4 sa/2.stgrr
5 s2l2.pgm
5 s3l2.pgm
Berikan data percobaan untuk test.txt:

1 s1/1.pgm
2 sL/2.pgn
3 s2l\.pgar
Jika program ini dijalankan dengan melakukan training terlebih dahulu,
lalu test, maka akan terlihat bahwa gambar 1, 2 , dan 3 sesuai dengan
basis data 7,4, dan2.

Gambar

9.4 Hasil face recognition

Jika program diatas telah berhasil dikembangkan, langkah berikutnya


adalah membuat program object recognition. Setelah itu, membuat
lengan robot yang dapat mengambil dan menerima gelas. Untuk
mengendalikan servo pada lengan robot, paling mudah menggunakan
Parallax Servo Controller yang dapat memperoleh posisi servo.

220

IZZ
'@ eqo)uaw leLueles 'Duesedrp qeyel Euert qceadg
ol ]xaj Inpou ueleunDDueru JII>leJa pre)es rsB{runuro>{req snJeq
e6n[ loqog 'epor ue>leun66uaur uelef:eq ue6uep ]oqor qelo uprrJeqrp
snJeq ueseued upujnurtu rsrJeq 6uB.( se1a6 '1nqesre1 ue66ue1ad
rJep upuesad le6ur6uaur upp leue6uaLu loqor qeleles 'Br{ueueu euasaq
lnqesJel qefe1Y\ rser.uJoJur uedrur,{ueur uep qefern leuaEued uBr6ord
ue>lrser6elur6ueru uep uel6ueqrueDueur qBIBpp Jrr.{{ere} qe16ue1
'oruep uer6o"rd rensos lere6raq sas{ns qple} epuv toqoJ ue6ua1 elrp

uc '(z)flnq ,(T)llnq ,(o)llnq ,il:-rol ,ru,,

"fl3*3
Ie\]lnq u'lsl 'JSdpyTl '009 'pneq ,leps NIEES
luc",aEEAJSi,, ] ,0008s + pneq ,?eps ,toolrEs
lIJ,,,3Sd r.rPJuar{u eo8Eo
:
(

Jsdpu,tf

t ) e1^s trv^

TZOI NOJ

EI NId

li

lnq

PNEq

IPPS

{E.Z JISVSdS}
{dZSE dNvJSS}

.
.

:dsq.:e4

.9I

UId

a1 uelDunqnqlp 6ue,{ lerres B}ep ednreq Jelorluolor>1rur 1nd1no eupur


rp 'ra1lor1uo) o^Jas xBIIeJed lrep }H rsJo^ rre)uaur ourep qelppe ln>lrreg
ranor?uoD oaras )reneled ueOunqng 9.6 requeD

Bab 9: Robot Pelayan Humanoid

Latihan
1.

Jelaskan cara kerja Face recognition serta beberapa teknik yang


umum digunakan.

2.

Kembangkanlah demo kode pada bab ini untuk mewujudkan robot


pelayan humanoid menggunakan stereo vision berbasis webcam
yang mampu mendeteksi tingkat kedalaman dari suatu image.

3.

Kembangkan juga robot yang mampu mengikuti wajah seseorang


(people follower) seperti gambar di bawah:

Gambar

9.6

Hasil deteksi dan tracking w4iah robot people follower

Untuk mengoptimalkan pengenalan wajah, gunakan teknik penyimpanan 3 sampelwajah per orang.

Gambar

9.7

Basis data w4iah gang disimpan per orang dengan Eigenspace

Berikut ini contoh user interface berbasis


posisi wajah yang terdeteksi

b'\-

222

C#

untuk mendeteksi

I
i

ue)qafi

ueouap ramonol aldoad

)d

pqoa adlplord 6'6 requeD

eped acelra?u! rasD 9'6 requeD

"

-*lsJ:'E

rnt t: v
=Yl ,\

i-:

.axwl#itt*ilsi$;Eis.*$.8

)ruorpelE Pllec III IPnuew '0I

'8002'oputlndtuoy pIPeW xa17'g Te1atuly


aAV raprluo4or4lN Lun4ll4erd uenpued 'oPopl/Y\ 'oueqlpng '6
'9002
'9002 ?aN' aseg PnslA 'oPopll\\ 'oupqlPng '8
'epeler{6o^ teSJJO
'002 'Eraqlepteg

urlreq 6e1re1-re6uudg Fcqoqoy pappaqluz 'seuoql 'lunerg 'L


1OOZ

'opul]nduroy elpew xel1 'ralorluo4or4lN

se4udy uep u/a?srs: ueDuecueta4 'oPoPI1Y1, 'oueqlPng '9


'9002'er{eqerng )tuorl)el3
elrlelouul 'g1y eDrcryay o1otyuo4oJ4tN sn4eJd uenpued '31 Lueaf '9
'9002'opuqndruoy PIPoW
xela 'elntuad 4nlun raprluo4or416 4afrot4 Z/ 'opopl^\ 'oueqlPng 'V
'6002 'opurlnduoy

elpew xelg
]asJJO

'septaS loqoA lenqluaN 'oPoPIA\ 'oypqlpng 'e


'6002'epelefDol

rpuy 'lseTuatualdul uep uoal'e4lloqog 'oPopl1\ 'ouPqlpng


'8002 'opuqndtuoy
'opoPIA\ 'ouPI{IPng

elpaw xel3 'n1n4e74adg pqog 4afrord

0t

.Z

.I

uencv teueo

1. Manual Crustcrawler dan Lynxmotion

2. www.toko-elektronika.com

13. www.cognotics.com
14. www.atmel.com
1

5. www.sourceforge.net/projects/OpenCV

16. www.parallax.com
17. www.mcselec.com
18. www.ti.com
19. www.wikipedia.org

20. www.maxim-ic.com
2

. www.beyondlogic.com

22. www.hpinfotech.ro
23. www.diptrace.com
24. www.cmucam.org
25. www.crustcrawler.com

226
i

Ia^Ja)ad

0tE8-dr

3 relllulsuprl palprJul Inpow

z9tw c)r
8Srdosr

z x 9l xrrlPw
ra^Je)eu parerJul InPow

c)l

sluouole

Durled 6ue,{ i9S6SIV tunuIIuIW uelsJs


{eldsrq q13l Ze uep preoq{aY )d 'C)l
BlnurJelup ue6uep lES6S1V ulntutulw welsls
P^Pqe) bunPullad uPllq IPIoI
uep q11nd qg1 ue6uep purplA rosues Inpow
rsue{\IaJJ upJpnlal uBbuap PUJP/I\ Josuas

snonuJluo) o^Jes Joloul PnP


qelo ue{Ipre6rp 6uei( 9 IIeIreq }oqol {luPIaW

IE-IS
IE-ISC

0z-n)c
0ez-s)r
)ruPr4)ew podexeg

JrlPrJeA DueA

lsyalep 1e:e[ ue6uep le6Dunl srre6 1e[e[ua6


Dunpurlad uesl(lEl uPDuap Jolslsuerloloqd
rbburl e^ep qPrauP{ul C3'l
e^uuodser unclnP(u sldll leqal

rnlep ledep 6uer{ ln6uns ednreq srre6 1e[a[ue4

IO-.{SC
ZEIJO6OSdOI

o0tt'lvsl_
Dursuag eurl dl ellaq

reuos-c

+ 70-lUS 1eq11edtuo1 'ece;re1u1 DluoserllD

70 a)ron-q

9l / g lsernp upDueP eDPJralul e)lo^

lrueLu

loDolord

fdvl)

lry repo)uE

xx-)3q
IDtr

uEsElalued

uotsren gsD EEES-J-s

8SD SlsPqreq reluulPrDoro


ue6uep E5gge6auty d1y oJIIul lry

{eplerd 6ue$nued

Iy

reueQ

ue4dwel

DX-24

Modul antarmuka TRW-24 dengan sistem

mikrokontroler
D-Joy Controller
D-Joy Controller (Wireless Version)
DU-ISP V2.O

Delta DC Driver
Delta Robo CPU

SST-06

Ivlodul antarmuka 4 Joystick Playstation

denqan keluaran UART


Modul antarmuka 4 Joystick Playstation
denqan keluaran RF ke DX-24
Downloader ISP untuk berbagai macam
mikrokontroler Atmel (Kompatibel Vista)
Modul Pengendali 2 buah Motor DC secara Half
Bridoe + pelindunq kondisi inhibit
Modul Otak Robot yang dilengkapi konektorkonektor untuk sensor dan kompatibel Delta
DC Driver
Sub System Stepper lnterface yang dapat
mengendalikan motor stepPer bipolar mauPun
unipolar secara manual atau berdasar perintah

dariUART
DSR-08

L293D
HS-422
HS.645MG

Smart Servo Controller yang dilengkapi metode


perhitungan nilai encoder dan deteksi kondisi
keoaoalan mekanik
IC Driver motor dengan kapasitas arus
maksimum 2A
Motor Servo Hitec denqan torsi 4.1k9 /cm
Motor Servo Hitec dengan torsi 9.6k9 /cm

metal qear
HS-8O5BB
GWS SO4BB
DCS-01

Soider Leo Mechanic

DU-232
Gripper

cB-232

Motor Servo Hitec denqan torsi24.7kg /cm


Motor Servo GWS denqan torsi 13 kqlcm
Sensor arus denqan kapasitas maksimum 20A
Kaki Robot laba-laba denqan ruas-ruasnva
Antarmuka USB to RS232
Mekanik peniepit pada lengan robot
Kabel serial dilenqkapi RS232 to TTL Converter
Mekanik lenqan robot denqan 5 sumbu gerakan

Delta Robo Arm


KIT ROBOT PELENGKAP (ITA]UA
ROBOT BRAT
SG6 Arm Robot 5 axis
Leoo Mindstrom NXT
Robot Peoole Follower berbasis Vision
Silahkan order di www.toko-elektronika.com

228

6ZZ

,.,
-';9J
td

'tttoaopoplm@opoptm rp r6unqnqrp ledep


srlnued 'uro)'p>lruoJllela-olol'1{\A\1y\ aurluo p>lruoJ}Ial3 sn}rs r{rl[ueLu pl
'uralsr{s poppequa upp elr}oqoJ >lnlun rorues ue}lnsuo{ uep ,{lrstenrup
SDNIS rp 11 Dueprq rp rsrurepple uep rsrllerd qplppp oyeqlpng opopllh

'

tao? 2!u otpap-enap@sn1ne d rnlelaul srlnued rDunqnq6ueut ledep

ePUV 'uroD')ruoJl)alo-ellep'd\1v\1r\ rp eurluo e{ruoJ}>lela olol r>lrlrtuel.u


upp JalorluoloJ{rtu srspqJaq elruoJ}Iele rselrlde ueDueque6ued uelep
uetueleDued:aq le6ues pl 'erseuopul Ip prupurel ualsr{s peppeque
upp elrloqor uellnsuol uep rsrl>1erd qBIBpp up^\leN IpuV snlnpd .rl

sllnue4 aue\ual

Anda mungkin juga menyukai