You are on page 1of 234

Free CD

HI
Membuat Sendiri

Aplikasi-aplikasi

Pendukung
Datasheet

Assembler Basic Stamp Editor

o Bascom AUR o Code Vision


C AUR

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

opurtnduoy elpaw xalg jfr lrqraue4

$tr/rf}t'{}X

ffi

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

-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

qotuo) re6eqraq ue6uep rdelDualrp BDn[ tut nlng 'tuo)'elluorl{ela -o{Ol'^\/\t1y\ uep I.UO)'}OqOJ-o>{Ol'1n1\\/r\ nple ulo)')luoJpele

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

'Bqo)Jp upp p)pqrp {n}un IIJeueu le6ues er(un}uel

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............

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

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

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

I sv8

II4"""""" A""""""'

ISI UVJ^:IYQ

UVTNVDNedYrYy

lq )eueo

Bae

3 Roeor HqmAxorp BRAT Pendahuluan............ Mengenal Robot BRAT Perangkat Keras.......


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.....

Bne

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

Bes

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..........

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

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

viii
i :1 ,,&

-ii

XI

""

up^eled loqou

up1{pled ]oqod rnllelrsrv up1{eled loqou upFup)upd

lpunl ]pl6ueJed

""'uBnlnqpPuad

"" qrONVhrDH NVAVted rOSOU 6 SVg


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

""""n)uedg reseq ueruerDorua6 13uedg tuer6or6 loqou eped uotstl ralnduo3 leua6ueyl """uenlnqepued
rosou
yDrND Norsrn

'JerJrssel) epp)sp) rBBH r{p[p1\ ueleue6ua4

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

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

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

upr{r}P-l

Lt"-

{
Face Recognition Konsep Dasar

Latihan..... DaRTRR ACUAN


TENTANG

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

,,,.,,,.,,,.,225
......227

LAIVTPTRAN 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

elrf

qPPns ppuy 'er{rrue1 llqotu }rlerer,u Iqoq IIIlFuer.u ne}p qeured ppuv 'loqoJ lpnqtuatu qplepp efuerelue rp 'e1ruor11a1e ue6uap urer.uJeq

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

a
a

-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

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

b'I requeD

uoIlIuBoceJ

ecroA

re,ueg 1bg4bg.(1ni

loN'++J I?nsIA

n3ued6 . . .

do1du7 34 YE'utiu Lrz-6

Y YCmv3
(,tazdt)
psJe{ul Josuos

ilp
77

/ruolv crseg durelg crseg

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


'er{uure1

.V

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 "FF

PA0_(ADC0) PAl _[ADC1 ) PA2_(ADC2) PA3_(ADC3) PA4_(ADC4) FAs_(ADC5) PA6_(ADC6)

PBs_(MOSr) P86_(MrSO) PB7_(SCK) PD0_(RXD)

PA7-(ADC/)
PCLI-(SCL)
PC1

FBl -(rXD) PO2-(rNI0)


PO3_(NT1 ) PD4_(OCl Bl FDs_(OC1 A) PD6_0CP)

_(SDA)

PC2_(TCK) FC3_(TME)

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.

ll

is recommended that you close all olher Epplicdhohi befoE continuing.

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
4afrod etueu lraquary ?'Z requeD

.Z

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:

l0

itll

ffi
[

Notes
Fdes

// 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
*ra.1$ae <tegaJ.6.h>l/renyeft Elre lihlsry

0thg

rs;

t I 6l c

"I
3$
iiEi

i-.i^rC9

<deley-h>

output inodp, deleks

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

'l

|l

mid DEin{rcid) \
DDRS=zsS;

lprq,$e tJzea

,/,/Poti B dikorifigulari ,ebagai 4urrut lr'Y81tu lBLl -FF?

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

p*tt

//IDgiks I sehingqs

ttnyeluerlie Ee&us !B! bEtl

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

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


,
,

Eliho ql, $F dt J xlH Nob loll {+iEtuii;,:lll: I-:.:.ffi t*nqA'trr*u, j

-.::;'

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

I I :,:;,iiXl

,#:::
l:_
F i; l@i
r :t a

ffi

qPm lurl'

ririi$d&

!li:
ffitir

I
r

,,fffi,{flffifi

,"li_" rdovl
.

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

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


ei,,

:i,11:ii*,
;
:::: il

:]i

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

::" 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
iqtgvgspuqqr
,

l:#}Ep{8e:l :

$S:

FSq .l " * =ffi *,*r.-"*i

,l

*-"$
ssztr

!Se].

:up>lpun6rp 6uef lcop upp ralorluolorlru edq uelrlsetuaul upDuep ppuv 1e,(ord rsern6rJuo{ouaru Bpuy uBlr}sed
pupln ureJooad a.T,,trllU/ / EurdooT ar\Ile// !{ {Tlap T xele1// J(000I)sur-z{e1ap Tleul ZAd Ogl// jf =Z'A,IEOd
eTe^ueur OAd qg"I/

'v

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

} (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^

10=0'A;UOd

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


9

E6ou aTTl:

^eTap

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


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

1e6au:> apnTcur#

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

^-re-rqTT 0T0Z

lalual

e?drJ XeH / /

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.

Fr

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.

16

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

-6unqnq upp renses 6uef

')d aI Jer.uruer6ord dsl dAV leqel ueDuep up>l nele 'rel s)rloqo5 lr/ypelus ue{ders .I
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

OD8

n=r'l7q

lnnH

0=.LSU100S

0=tlAl'1008
0=Nl00E
t_t=

_l

L1t'tS

0=0-LnS

0=Ell5)l
0=IllSYl

rir{ ;i;
: : ; : ..!'il$fli,r$
91r.fr i,i:r::iir : :,j : :: :.:-::.:

0=[ll5Il

ls)f

F,t*'

;#r

ai

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

,* 8

ry:*l$i,i

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

::,,..

::,.::,,

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


jit;i+{t"T:m

UE

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
PORTB.

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

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

0=1;

/ /LED PBO mati

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. 2.
/

Siapkan SmartAVR Robotics ver. 3, dan hubungkan dengan kabel


AVR ISP Programmer ke PC.

Buat program di bawah ini:

/ 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

InputPortCkePortB. c:

=0;

3.

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

18
I

6t
raploae Toqor lueroelp 4o1g ol.z requeD

gggg

e8elqly
UAV

zlcTdD
{?Jef Josues

relorluo{oDIrI

eI

dsl uny Ieqp{

')d lPrres uod JelorluoloDlrur rrep lprras leqel ue{EunqnH .)d eI rar.uurerEord ueDuep tnqesra} relorluolor{ru }p{ ue{EunqnH .z
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 .

rolow

,{e11or1 epog . )q )dS .

'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.
5.

Rakitlah robot tersebut sesuai keinginan Anda.

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);
/

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


ADCSRA

/ M'alai konversi
=ox1o;
ADCH;

ADC

return
)

void main(void) { // Inisialisasi Port B dan D sebagai output


PORTB=0xFF; DDRB=oxFF;
PORTD=OxFF; DDRD=oxFF,'

20

LZ

>1eref

: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
{ .1

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

I ( 00T ) su- ETap jo=SIUOd fnPunI^I //


asTe
)
{

r.letq. / Teurur-ral-rad
H

.00T ) sur- eTap

igT=E&nOd

(00T>oJlroar

0'vd

Tp .zosuas

rp ue{IrdueJ, //

elep ecea //

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

) lT
)
aT-Ir{l1^

j(0)Jpp-pee.r=oJuod
I

(I)
j j

dTx0=aEoIds
L\rx0=vESccv

elep 1Tq g ue1eun66ua6 77 butuung aa-rJ :a3jrno5 :e661:6 olnv JqV //


zH>I
i 6Txo=-IUUAn
i
0

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

uTd CCnv :eoua.ro]alJ eOelIoA Jau / / 092'19 :.dcuanbalf )i3oTJ )au // uorlezTTe-l?\ul )au / /
0x0=HUEAn
I 98x0=JESJn I 8TxO=gUSCO

00x0=\tdsJo

.^1r-rEd oN

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. 2.
Gambarkan arsitektur
8535.

l/O pada mikrokontroler AVR ATmega

Berikan contoh kode C untuk membuat port mikrokontroler AVR ATmega 8535 berlaku sebagai I/O, dengan kondisi berikut:

o o 3.

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:

22

EZ

plr{ p}etu updrpal rslelepueu ndrueu

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

'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

,v

gledauly ralor?uo4orqltil

ruu-nruurylu

ua?sls uep46ueg I'Z requeD

ldee
E

]h I,3
zHli'l

oN$

ldEt t'tvlx
z'lvLx
13S]H

J]UV

JJl\tr

i
tn

]]A (zrsorf/]d
(

(roifscd

r3sor)-sf,d

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

(vrlo)-sod
(B

(oorI rf,d

r.sofrod
rod

(st,lrI Eld

{ r.lNrJ Eod

(yf,rfzid

(orNr)_zod

(oxrI

(vosI [f,d ('r)sI


o3d

(oxH)-ood

(l.f,ov] lHd (stcvfBYd

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

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

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

(rf,ovfzvd roovf rvd


(of,ovfovd

(r-r)-

(oxvJxfoEd

r.Ed

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.

Pasanglah modul ini ke PC dan berikan sumber catu daya.

26

LZ

l-rels

0106
i

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
puocos auo -IoJ asnedl

000T asned

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

or.^
3

l::t:

e
I

srq.11n1o:d1g
.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.*

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

kd

Fk -

i{i
li

utn

'Flryd

}*am,'Fre

*dryffi*ed

Gambar

3.4 Setting Preferences

28

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

''.
rr:l1r;

a:.:a
i.:ii;;: iiAEr
:::i;Yii,
:i rir lillllrl

i, *i
(

j. i;1w-

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

;'#

*p:.

er{u1n1ueq e66urqes srlaq ue6uep

IIeI

1ede1e1

:lnlrreq rgedas ue6unques r.lBI}Bng

Bab 3: Robot Humanoid BRAT

NF

k:,-r

i+3

Accelerorreter

Arelerom+ter

GP2D1 2 Sentor iPl !) Ldt Ankle Srvo rP4) Left Krr++ Sgvo ,Ftr

Y Axi* iF 14 X Axis P1F)

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
1l

o^-Tas aq1 aseajrrap ^q 01

snE

fasfJo v ssa-rd
&oH

asn 01

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

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

lj
|

rl rl rl

Ii
l

uoc

eeu{1q6r-z

+----------

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

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

oaras ls;ern6lfuo4 d1su1t4

,I'

requeD

Bst

dl* **** asuH ""._."& 8lxuv.""_..a ElEff '$a-t -puas

Ilaf

seq'*s*18.,q

i,I-lX

.:

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

sword sword sword sword

Press C to increase E.he servo

var sword var sword

offsel by

5us

t.

Press B Lo change which servo is l; being manipulat.ed, and t.o send datsa back to the termi,nal

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

= ((righthip_start

il / 24) + 1500\

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)


sound 9, [50\3800] gosub decreaseOffset

tshen

goto main
endi

if

(buttonB = 0) AND (prevB = 1) then sound 9, t50\ (3600 + (currentservo * 100) ) l

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


goLo main
endi

endif f

if

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

34

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

dTqT' aau]iT / aTIueT'

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

ulnla:
[00st\09T] '6 punos esla
(007T < aTIupT) ONV (g = o^.raslua"r.rnc)JTasTa
f Tpue

E-aT)iuPT=eTliupT

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

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

S+41{ueT=eT>{ueT

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

E+aau{l=eau{r

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


fasJJoaseairour
ureuf, 0106

uTeu 0106

f Tpua !
|

las]JoasEa-rcu-! qnso5

[00r?\09]'6 punos

hb

3: Robot Humanoid BRAT

24),131

serout s_out, i38400, [ "rightankle_start

con

", sdec ((rankle - 1500)

24\,13)

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,

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:
righthip rigiht.knee rightankle lefthip leftknee leftankle

;Program Sharp cP2D12 pada con pl-O con p8 con p7 con p6 con p5 con p4

BRAT

true con I fafse con 0

36

LE

'saTJelsqo

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

uaa/vr1eq

ur daaql

[(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

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

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

rrpea-r qnsoo

lEq / 9T

u-Jpe

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

fTpue

>l

uTeu

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


1096e\0El

a^our qnsob

0 = 1ca1ap 00EZ asned

Ioorr\os]'6

0E asned
punos

(0T )p,ror :en dural a?.dq Je.^' relTTf al^q -re^ fnor^qaq
p-ro1vl.

l-Iq rE^ lcalap


pfo/vi -re^ .rT

-re^

1Eq

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


000T asned

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

t0.0

,0.0

,0.0

,0.0

,0.0

,0.0

,0.0

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


suoTS-tsod

lruI

OAEgSHS'IAVNS
1

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 gosub move
command=11

;turn t.he yelfow LED on ;back up one step

for xx=1 to

;turn left two steps


2

next
el-

detect = fafse input 14


se

;turn the yellow LED off


;

Low L2
command=1 gosub move

turn t.he red LED on turn the red LED off turn the green LED on ,1itt1e whistle while you rest

endi

input 12 f
low
13

if

(behavi-our = 5) Lhen
;

input 13 endif goto main


move:

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
;

gosub move

command

lurn the green LED off

if(command = 1) then Walk Forward


giosub movement

gosub movement gosub movement gosub movement

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

elseif(command = 2)
gosub movement [ gosub movemenL | gosub movement [ gosub movement sound 9, t50\44001

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,

s00.01 500.01 500.01 s00.01

pause 200 ;gosub movemenL

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,

; 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
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

38

:.iiIO.L\1:e1s-aauI?JeT + (ee-r6apradsdals+sodaam{1}aT_ [,NIOJ,\?]e1s-d1q1q6t: + (aa.r6ap-radsdals*soddTqlq6Tr)


trNIOJ\1jre1s-dIr{+}eT + (ae-r6ap-radsdals*soddTr{lleI_
)

JINIOJ,\ aau>[1]:eT

,paads>tT

J,NIOJ,\ dTr{1q5T,r

l --l,paadsqr

,INIOJ\dTqllaI I o^-lasq
,6 .e=p""o"31p
I6

l --^ l,poadsr{I

.6=peadsl:

I0.

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

.0=paadslT

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

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

qnsoo

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

qnso6

) = paads

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

l'sodd1q13eT*1seT-soddTq?laIllse6uoTta6 qnso6

'sodaT)iue?q6r.r

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

?eoTJ :e^ a^ourlsa6uoT

?uauo^our

fpoTl: jre^ paadsl: leoT] -re^ p""d:Tl

lEoTl: ,re^ peadse:

?eoTl jre^ paads

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

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

f Tpua l fuouralour qnso6


(6

pueunuoc) ITasTa

uorlTsod ?sau

to '00E '0'
to

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

luaura^our qnso6 ?uaua^our qnso6

Bab

3: Robot Humanoid BRAT


rightsknee\T0INT (rightkneepos*stepsperdegree) rightknee-sEart\TOINT rkspeed,
I
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 idle var byte finished var byte junk var word
sensorloop

gethservo lefthiP, junk, idle if (NOT idl,e)then finished=fa1se

finished = true

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
endi endi

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


two=-1.0*two

one=-1.0*one

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
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:
u,rnle-T

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


stepsperdegree fcon 166. 6

;caLibrate steps per degree.

; ENABLEHSERVO ;

Interrupt. init

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 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)

;low

1 2

main

if (behaviour = 16) then behavi.our = 0 endi f adin 16. bat


gosub readAMx gosub readAMy gosub readir
;

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

Accelerometer readings

42

ev

e3uanbaslsef qnso6

f rpua

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

a^ou qnso6
T=pueuilroc

uo

GE.I

paf aql

u-rn1

.'

ZI

.lv\OT

]fo oET ruolfa^ aq1 urnlt

esTel: =

asla 71 qndut
1ca1ap lXaU qnso6
-roJ

sdals o/r!1 lJeT uJnlj TT=pueuuloJ dals auo dn {ceqj uo Gg.I /'toTTa^ aql u-rn1
,l

z o1 l=xx

a.^'oul

a^ou qnso6
z=pueuuoJ

,T roT uar{1 13a1ep fr

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

'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


idn ?45 ;aceg: :nod uo leIl:
a"r , no^

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


aaour qnsob

ueql (009 < 1{IiIV) fI rl6gpea: qnso6


002 asned
f Tpua a^our qnso6

L=

pueuuroC

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


a^our qns06

eT = pueuuoc

tT =

pueuuroJ

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

44gpea: qnso6
969 esned

uaq? (08 >

xInIV)

uo (0t9 <

^wv)

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


eu

{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 ^

Bab 3: Robot Humanoid BRAT

goto main
move:

if(command = 1) then Walk Forward


gosub gosub gosub gosub movement movement movement movement

elseif(command = 2) Walk Backwards


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,
L -7.0,-20.0,-20.0,

500.0] 500.0] 500.0] 500.0]

elseif(command = 3)

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] 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 500.0]

Headbutt

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


gosub movemenE gosub movement gosub movement gosub movement

gosub movements [

pause 200 ;gosub movement

'Iurn LeIt

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

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,

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,-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

elseif(command = 15) Surprise I


gosub movement [ gosub movement [
9)

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]

Rest Position

elseif(command =
endi

gosub movement [

return

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

uaql (aTpT &oN) lT '{un! 'd-rqf }aI o^-rasqf a6 en-Il = paqsTurl


p.ro.({i

eslel:=paqsruTli

a1^q .rE^ paqsruT]


oS.dq -rE^ aTpT

dool-rosuas .ze^ {un[

+ ( 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

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

o^rasq

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

,0. 0=paadspT
I
J

10. o=paadsq.r

0.0=paads{I
0'O=paadsqT._= qnso6 qnso6

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

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


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
.11

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


'

?uaruaAoru

lpaads i

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

'

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

f f

if if

(NOT

idle) then finished=false

gethservo leftknee, junk, idle


(NOT

endi

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

;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
endi

if (one<three)t.hen f if (one<four) then one= four endif if (one<five) then


endi

one=three

f if (one<six) then
one=six

one=five

46

LV
punos

1005e\0El

t008t\E?l '6 punos too??\orl '6 punos

0g esnPd

'5

Et asned

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

t00rE\0Ezl '6 punos


[096\0ET] '6 punos

T ?nduT

0E asned 1096t\091 '6 plmos

0g asnEd
punos

toor?\o9l'6

0s esned

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

aTl1-lT,

0E asned [00?7\0ET] ,6 punos r-F = f,TlseT


l}(aU

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


t005t\0El '6 punos 09 asned t008t\9rl '6 punos t00??\0rl '6 punos
aaou: qnso6
(

f Tpua

ge asned

gE asned

uaql

(002-

>

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

01 T = xx

-zo]

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


TE1\xpru+

) 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
next

lastir

ir

return readir
next

for filter = 0 Eo 9 adin 19, temp(filter) ir=0 for filter = 0 to ir=ir+temp(filter) ir=ir/10
;sound 9, tl-0\40001 iserout s-out, i38400, [dec ir ,13]
9

next

return

readAMx

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


next.

AMx=0
next

for filter = 0 to 9 AMx=AMx+temp(filter) 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:

II dengan

module

48

6V

,d
?d 0d

trioT

8d 0d

.qoT ^toT

esTa

qETr{
qETT{

Bd r{6Tr{

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

O,T,Ttr'UU

TJIE'uu = SpeT = meT

tooor\orl '6d punos


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

6d

r^oT

f lpua

0=uu
6d

e
f rpua

= Jlnq) l-I

1{oT

uarll (dn

NOJ,&nA

= slnq-^a.zd) aNV

t000T\0Tl '6d punos T-uu=119 = alnq) ]T


(N/VIOO-NO,I&OS

6d toT

f Ipua

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

toogz\El '6d punos T+uu=uu = vlnq)


(N!}OO-NOJJOS

l-F

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


:

dural'9T uTp
uTeu
uq

sCgT aT66rM,
u -

0 0 0 0 n

0=VpaT

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

do-No.L&na
NMOC_NOJ&OA

r uo, 0 uoJ
pf,o/vr

fe^

durel

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

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

Vlnq-^a-rd

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


JpaT
EpeT

lTq fP^ lTq fe^

1Tq fe^ vpaT

e1^q .re^ uu

Bab 3: Robot Humanoid BRAT

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


low p5 endif if(nn.BIT2=1)then hish p2 high p10 hish p6 else low p5 endif if(nn.BIT3=1)Ehen hish p3 hish p7 high p11
else
1ow p3 1ow p10 1ow p1

Iow p2

endif
pause

1ow p11

Iow p7

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 endif ifledB=1then
endi.f
endi

Iow p12
1ow p13 1ow p14

ifLedC=1then

f return

50

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

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

lrdafueur reddrr6

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

6ur1ed 6uer{

'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
Jelntuaw as2g ue\eraD z'? JequreD

Bab 4: Lengan Robot 5 Sumbu Gerakan


ii#:' &i,
.:r;il.

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.

ii;

i',

I I

56

I._

L9

'lerJas

i
$
!

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
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

I I

JPl

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

rh----

CoNNECTOR

o ooo 3v3our 9 99; rc 'np USBDM


RI$

usoP RST@T*
NN

cT$

DR'
DS*
ocD*
Rt*

., T^.
LED I
I

.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.

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

Sarvo, :

J]

$- ?s5

spGec:1'

SEnre Pseitis*

$snro $peed

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

H*nd,$*nqo.,

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


lData senl : ]E
l^.
1

$arur,F**itiolt
Senrs.Spe*d:
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:
uni-t Unitl; interface
uses

/ /Crealue by: ,Januar Susanto / /DELTA ELECTRONIC 2OIO

Windows, Messag.es, Sysutits, Variant.s, Classes, Graphics, Controfs, Forms, Dialogs, SEdCtrls, CPort, Comctrls, Vrspinner, VrControIs, Vrcauge,

VrSlider;

type TForml = class(TForm)

ButEonsetting : TButton; But.t.onconnect : TButton; VrSliderBase : TVrSlider;


LaDe.L1 : ',I'LJabeI ;

ComPorE.l: TcomPorti

Label2:

Tlabef;

60

T9

{ suorlP-rPTcep sTIqnd } 3TTqnd { suoTle.rETcap a1E^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

,pua

elp1\r.rd

juollngasnoldJ : uo1lnE l13a lqoll


,1

I (,za6e1uI :^ /X jelelSllTr{S,t :1f Tr{S luollngesnol^I& :uo11ng llca[qoJ, :-repuas)doasnohJpueH.rap-ITS.rA a-rnpaco]d


(1ca

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


:

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

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

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 j (lJatqoJ :-ropuas) {rrTJlcauuoJuolln8 a.rnpaso-rd i (3cetqoJ, :_repues) )tcrTD6uT31asuo11ng e-rnpeco-rd I oual^IJ : oIuaI^IAcaE JTaqe-I& :gZTaqerl
j

[qoJ

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

jTaqel& tlzlaqerl uollngJ : Tuol?nE


jTaqeTJ
r

: EZTaqeT
:

11TpE,t : lrpgpeads
i
j
j

JTaqe-IJ tzzlaqel 1TpS,I : unNo^.ras

lTpS[

f,1TpE

Teqerlfi : TeTaqeT

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


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

1lTpEI : lapEpeadsdr-re)

i
1

jrapr TS.rAJ, : .radr.rc.T ap-I T s.rA i Taqerl[ : gTTeqeT


I

jTeqeT[ : LTTaqel lTpEJ : lrpgpeads.radr.re

i
I

11TpE,t : lrpgpueHpaads
j i
i

iTaqeTJ:ETTaqpT Taqerl& : rTTaqT TeqeTJ : ETTaqEl

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

jTaqETJ

TaqelI

: :

Taqerl& :0TTaqET

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;


header, Df , DN, Sf

, SN, L,NU, P: byEe; KS_B , KS-A, KS-H , KS-GR , KS-G : bYtE ;

implemenLation

byte-count : word;

Chk,Cksum: byte;

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


ComPort I . ShowsetupDialog
;

TObject)

end;

procedure TForml.Buttonconnectclick(Sender: TObject)

if ComPortl.Connected then
begin
end

ComPortl . CIose;

Buttonconnect. Caption : =' Connect'

else

begin

Try ComPortl.Open; Except


la6,.i -

exit;
end; end;

Buttonconnect. . Captj-on:

if ComPortl.Connected
begin

end;

'Disconnect

'

E.hen

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

end;

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

Shift: Tshiftstate;
Dc.hl,r^.

X, Y: Integer);

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

nr.=(11.
p11;

Chk: =Chk+DI; Chk: =Chk+DN; 51; =900; Chk: =Chk+SI; Chk: =Chk+SN; tr; =$04; Chk: =Chk+L;
P; =$01;
1111;

=901;

gry; =901,;

=901;
;

Chk: =Chk+P

PS : =VrSliderBase . Pos

ition

Chk : =Chk+NU;

62

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

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

rc+{qJ= : Ir{J

T0$=:No

r0=:IqJ
ip.Tott:
:

ur6aq
T
.l

pJolv\

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

.l6uTr1s : 11s

lunoc

qOJ

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

jpua
J(

?xa[' 1 Tpgpaeds]olen1cv

1uIoJ.r1S -

EE

Z= : V-SX

uT6aq

13e

tqoJ

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

.i ( ?xa&'

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 (1xe[' lTpgpaadsaseg) 1uJoJ,-Ils-992=
:

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

S-S)I uT6eq

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

J ( 1ca

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

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


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

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

e1T.rM.

, ( T,NO) e1ff,M. T?f,oduroJ a?TfM. Tl.loduroJ

j:tqc_ggZ=:uns{c
I

a?Tfl,,t. T?rodtuoJ
I

8-SX+{qJ= : {r{c
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 comPortl.write (sI, 1) ;


(DN, (SN,

comPortl. write (Dr,

1) ; 1) ; 1) ;

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

ComPortl.Write

ComPortl-.Write

comPortl.write

' '

+IntToHex (DN, 2 ) + "

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

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

end;

+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) )

+IntToHex (SI, 2) +'

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

procedure TForml . SpeedHandEditChange ( Sender: begin


end;
KS_H : =2
5 5

TObj

ect ) ;

-StrToInt ( SpeedHandEdit . Text ) ;

procedure TForml.Grj.perspeedEditchange (Sender: TObject) begin


end;
KS_GR: =2
5 5

StrToInt criperspeedEdit . Text


(

);

procedure TForml.GripspeedEditchange (Sender: TObjecE)


eod;
KS_G : =2 55

-StrToInt (GripSpeedEdit. Text

);

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

Shift: TShiftstatei X, Y: Integer);


:

VAI
PS

begin

byte;

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

Chk: =0;

Chk: =Chk+Dr;

pg; =901;

Chk: =Chk+DN; Chk: =Chk+SI; 911;=901; Chk: =Chk+SN; r,. =q0/.. Chk : =Chk+L;
51 3 =$00;

p;=901;

NU: =g

04;

PS : =VrSliderHand.

Position

64

99

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


J(T

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


1

/urns{J a1Tflvl. )
(T

(T ,nN) a1TfM. Tl.roduroJ


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

alTfM.TfjroduroJ
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

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

T0$= : d

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


I

jNG+{r{3=
I

00$=: rS

: {rIJ rI0S=:N(

IO+{qC= : }tr{J

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

jITS=:ro

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
,l ( T,urns{c)

i ( I,H-SX) i i
(

i (T,Sd) a1Tf,M. Tl.roduroJ i (I ,nN)a1TfM.f l.roduroJ j

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

J (T' IS) e1Tf,M. Tl-rodluoc I ( T'Nq) e1Tf,M. T1-rodtuoJ

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

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

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

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


j
J

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

d+{qJ= : {qC

Bah 4: Lengan Robot 5 Sumbu Gerakan

'

+IntToHex

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


(

P5

lntToHex(KS_GR.2) end;

,2)

"

+'' +IntToHex(cksum, 2) )

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

var

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


PS:

begin

byte;

Chk: =0;

header:=g1E;
Chk: -Chk+header
;

DI:=S11,

Chk: =Chk+DI;
p1g3=901;

Chk: =Chk+DN;

cr . =(nn.
51'11=$01;

Chk: =Chk+SI; 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.Wrj,te (SI, ComPortl-.Write (SN, 1)


ComPortl . Write
(

(DN, 1)

1) ; ; 1) ;

ComPortl.Write ComPortl.Write ComPortl.Write


ComPortl
'

L,1) ; (P,1) ;

+IntToHex (DN, 2 ) + "

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

.write

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

end;

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

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

+IntToHex (SI,

2)+

"

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

var

begin

PS KS

: :

byte; byte;
=Sl-E:;
;

chl.. =n. neader:

Chk: =Chk+header
p1 ;=911;

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

Chk: =Chk+DN,'

cr. -Cnn. -?vv,

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


urOaq
uTEaq
f,PA

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

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


I

p,Tollr : T

J6ur-r1s: exeq,-r1s

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


jpua
,

,+ (

Z'rtl{) xaHo[1uf+

,+ ,+

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

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

( (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+,

i ( T'urns)ic) e1Tf,M' Tl.roduroJ j ( I,e-sx) a1Tf,M. T1-roduroJ i (T,T) alTrM.

J (T,Sd) atTfM. I?:odruoJ I ( T,ON) a1TfM. Il.roduroC I (T /d) a1r-rM. TlfoduroJ

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

T1-roduroJ

'

''u?;i:fi;Ti3
,l

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

d+{t{J= : {r{J
Z= : SX
: Sd
:

,l

txafi' lrpEpoads ) ?uloJ.zlS-SS


J ( 1xeJ,'

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


urnNo^-ras
)

lulo&:1s=
I

nN

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

T0$=: d

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 r{80 1.rets 00 sq


:

TlaU
610
Tfex

610

d*!t
610
EgSJ

TPT.ras BSep .ra]Jng j

sus--zalunoJ

Tso
T T T T T

eped p?ep 6ue[uedj TeTjras elPp ?eled ums{caqci

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


:UnNaC-rnos
: :

ad J,ac.rnos
:

-ra?ser{ 1n-rn .roluou TeqeT-reA, f,a1sEh1 IeqeT.rPAl aAeTS 1n,rn rouroNJ oAeTS Sruafj

urnN?a6-reJ,

ad.{J,1a6:eJ,
J

IOqOJ 1n:n fouoNl

sq sG sG sO sO sq

ssa-rppveJr^ac 6ro
loqou-rouoN
x&s

TSEVIUYA-'IETIVIEVA

H0t

?oqou 1n-rn -rotuoNi


TO

TO

I{AT

noE

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


EESO
T

oos

EOONS

up/,\TeN

rprrt snTned :^q alea.r3 j


,IOEIOU NVCNST I^IVECOUd

0T0z JrNoE,tJaTE VJ,.rsq j


j

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
t(eta

13h

Org
Rel]t

23}:

StarE:

Loop:

Lca11 Init_Serial PCON, +0h Mov Mov TH1, #OFAh Mov Lca1l Lca11 Mov Lcall Lcall Mov Lcall Lca11 Mov Lcal1 Mov Lca11 Lcal1 Lcal1

;Inisial
;

Serial port 57600 bps

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 DPTR.#TabelGripl SetPosisiservo Delay_ldetik Delay-ldetik
;Gerakan gripper
i
;
;

membuka

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

menuEup

;Gerakan tangan naik


;

;cerakan base memutar ke

depan

- 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]
;

; TABEL

TabelActuatorL:

DB

01,9,80h
i

;range sudut actuator 05 ;05 angkat dan 09 turun range sudut Base 05 - 15 ;15 Counter Clock Wise, 1-0

09

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


;

Centre

TabeIBase2

DB

01,01, 1 0, 80h

70
S&+

r
LL
E,IdCI
CI]I

cur
fTJ

l1or{

0u u' 01Ia g'v


J
! !

qqns
/IoI{
AoI.I JAoW

o^-ras TsTsocl las

/\o'{

vl+'u , V S EIdO+Vo'V 00+'v 0u e0+'0E0


o^_ras?os

cur

/!oH TTesT

!
! !

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

0u v,oua

./\oN cAoI^I
AoIitr

o^fas

uelell){a>t

lasj ^eTep

u,Ldcl+va'v 00*'v

o^ras TsTsod ?as,

U,lcl0 3uI cuI 0t{ V,oEA AoI^I EIdO+VA'\1 cAoI^I OO#,Y 1\ON
cur
AoIitr

0u z0* ,0u0 o^:as?as 'Ido Hdq


:

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 Eq
: zdTfcireop.T.

q08 '0T '90 q08 '90 '90

'T0

9T - E0 EuTddT.ze a6ueu j

'T0
:

Erq

Tdr.rCIaqetr,

g0 uorlelo-r -raddr-r6

aEUPUJ

q08'80'90'T0
:

9T -j
EG

T-reddr.:reTaqeJ, Eo
:

q08

'8'?0'T0
:

zpueHToqel so
TpueHTaqPJ,

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

q08'90 'n0'r0

Bab 4: Lengan Robot 5 Sumbu Gerakan

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

Set

delay / kekuatan servo

SetPosisiServo:

Lcal1

SetServo
;

Mov Movc Mov Inc Inc Mov Movc Mov Inc Inc Mov Movc Mov Inc Inc
KirimPaket:

A, #00 A, SA+DPTR
GR0,A
R0

SeE Nomor Servo

DPTR

A, #00 A, GA+DPTR
@R0,A
R0 DPTR

;Set Posisi servo


i

A, +00 A, GA+DPTR

;Sets
;

delay / kekuatan servo

eRo,A
R0

DPTR

Push Push

DPH

DPL

Lcafl KirimPaket.Dat.a Lca1l AmbilDataSerial Pop Pop


Ret
DPL
DPH

SetServo:
(DSR-30

Mov TargetTl4)e, #1lh / DSR-o8) Mov Movc Mov Inc Mov Mov Mov Inc Mov Inc
Ret
A, #00 A, EA+DPTR

;Targiet. Servo Conlrol-ler nomor DSR-08

TargetNum,A
DPTR

DeviceAddress,#NomorRoboE
R0,

#Buffer

Set panjang dala

nomor robot. = 01

GRO, #04 R0

@R0,+PerintahKontrolMotor
R0

Kirim perintah konErol motor

; Ambil data serial


ArnbilDataSerial:

(ACK

atau info dari

DSR-08)

Lca11 Serial_In Cjne A,#lEh,AmbifDataserial

72

CL

ad &ac-rnos 'V

AoInI

?-re1s I

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

:1e)iedTerw
3eE

ssa-rppvacT^ao

sclnoTer"res TIesT lloltr 'v


TTec.I
..!ow

cIaJr^aG+ 'v

sJlnoTerJes

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
l\ow
TTe3T
1\O'^I

T+jtaf l:nE+

'0u

/\oI{
/\oN

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


:

-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


:

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

uleSeqdoo-I

Bab 4: Lengan Robot 5 Sumbu Gerakan

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

DeviceAddress SerialOutCS

SaveBuffer:

Mov InC Add Mov


Ret

@R0,
RO

A,ChecksumData ChecksumData,A

;Tambah check
;

su.m

SerialOutCS:

Lcal1 Serial Ouc Add A.ChecksumData Mov ChecksumData,A


Ret
SCON, #52H TMOD,#20H

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

, Mode 1 Ren ; T0 Mode 2, T1 Mode

A,TMOD

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

;
;

57600

#8OH

SeriaI_Out:
TungguKirim:

Clr Mov

TI
SBUF,A

,Jnb Clr
ReE

Tr, Tung$rKirim

?I
RI

I\rngguTerima:

Serial_In: Clr

Jnb Mov Clr


Ret

RI , TunggrLrTerima A, SBUF

Rr
:

KirimPesan_Serial

Mov Movc Cjne


Ret

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

KirimTerus:

Lcal1 rNC Ajmp

Serial_Out.
DPTR

KirimPesan_Serial

74 *E

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

qlas

1aE

nurel ax{pT,lr{e1ur-red

r{EluT.radTjreCdooT d*["f cur


CUI

nualaxqElur-rad

u,rdg UJdC u,tdo

cuI
qqns

fTJ

c^ohl
,\oN

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


:

r{e1ur-redr.reJdooT
:

SIqelUr-radr-reJ

COW.I

OlIJ
:

rTJ
surE-qepns
dur 3q.C
:

dod

Surg-n66unJ,

surg-r{ppns ' 0dJ

['I

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

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

?ell

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 3. Tuliskan

protokol data yang dikirimkan ke lengan robot ke layar LCD M1632 pada Modul DST-51. 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

-ue{nluelrp Dunlrq6uau

6uer( }npns redBcueru unleq qlseu DIeI uBIereD ernqeq loqor lplo lees 'eqpl-pqel loqor rye>1 eped 'qoluol re6eqeg

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

dengan

80

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
uje-LrJ3eleiel
sLuSL - Sn00! Pslnd

uetielq 6u1tu11l'g requeD

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

lelqo ue6uap rosues ere]ue leref


-. .,

'IruoseJlln Duequola6 upleqrueJ uelDuepag

--+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

I Protokol Permintaan
)eskripsi \wal Paket
D D-Sonar

data jarak dari PC/Mikrokontroler

Bvte
00
01

Nilai
,IE

02 00

02 03 o4 05 06 07

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

01

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

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 +i-f

oo

Aor{ TleJl

6:0

sooS'

! !

.rpuosc IIJSV efep uedurr^ued IeqeTf,eAi

I I I
v

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


VTVC'

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

za

n03

f,euosccl

use'reuosc
0l,

QQ

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

unspoqc
rJBp 0

oc8

uelBp leJer relru

euE

pr

6C
BC

LC

9C 9C

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

vc
ec
ZC
LC OC

reuos-o ol

z(

lJ-0(
0t

cdflolsey\

cdlolseyl lnrn JouoN L{BlepB euuauod cl


loled le^ b !soulsec

3t
!Bt!h

ol^E

ralorluo{or{u u)d e{ r8uos-o IrEp {urs[IssruroJul

B]Bp

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:

Lcall Cjne

A, #1Eh,

Serial_In BukanAwalPaket Seriaf_In BukanID Serial_In Serlal_In


A, #IDDSonar,

;Tunggu awal paket


;

BukanI D:

Lcalf Jnz Lcall

;Apakah = 00 / ID Master
;

;Ambil nomor urut master


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

BukanDSonar:

Lcall Cjne Lcall Lcall Mov Mov Lcall


M^rr

Serial_In Serial_In
B,A
R0,

#BufferDSonar

LoopAmbilData:

Serial_In
AP n

,Ambil isi data


; ;

Inc Djnz LcalI


Ret
Pe

R0 B, LoopAmbilData SeriaI_In
:

sanMintaJarak

DB

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

-Lnrt Serra-L:

MOV MOV MOV Setb MOV


RET

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


;

TR1
PCON,

#OH

Ser.ia.I_Out:

Clr MoV Jnb


Ret

TI
SBUF,A

TungguKi rim:

TI, TungguKirim

SeriaI_In: Cfr
TungguTerima:

RI

Jnb Mov
Ret

RI, TungguTer.ima A, SBUF

KirimPesan_Serial:

Mov

A, #00H

86

L8

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

'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

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
EJ,dC

dr[v
cur
I IECV
:

1ng 1et:e5

sn-zaJuT.TTx

lou
H.{ 0

sn: e J,ur-r rX,

#,V

eu

IJ

Erdc+v0'v

cAor{

fs
1, &u-"
.1,..,

v, ,t

,i

Gambar 5.9 Nlodul D-Voice 04


vcc

I 4 -L

",,

"i"
_.

)
r

a7o

t,,

LEo

Gambar 5.10a Diagram Skematik D-Voice 04 bagian Suara

88

68

Luelep prpesrel 6uef uolpq qsnd loquol-loquol ue{eun66uau ue6uep ueln{plrp ledep [pnuptu eJB)os pJens rp]nureru uep tueleJetu {n}uD

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

lenuew eJBcos oclon-o sosord

lortuoy ue16eg

bO

ntoA-O qnel.uarts uet6elq qOI'g requeD

L-H

grd

I Id t td -td
z'H

Itd

0 Id

[Nt
otNt

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


tzd
0zd
LOd

r1

r3s3u
90d e0d

90d
t0d

d
Ix

zod r'0d 00J

dE

Bab 5: Sensor-Sensor Robot

:: r: $$$
fl
e&aa59 d't'{ddi* FBAA4A ffir pt.r
Ft"d

pt.f
Ft.

c$

Ft.3 Er,*
PT.I

t.}

ResetEtop

& :l

F{

ft.e

6!

(sf
I I Ltr{, tr{
.11

fl,ue

r*

,fi
AfJ
I

*r--l*

&

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

1.

Lakukan instalasi seperti pada gambar. Hubungkan sumber suara (max 20 mV p-p) ke Line In D-Voice 04. 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..

2. 3.

4. 5.

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


AC atau DC ke konektor power.

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

90

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


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

sesord seslerp

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

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

'uelaltp dolg/1eseg

Inlun rueped qg1 e66uqes Upts Ioquol r6el uelsedal uep ue{ef
'BJEns Jaqr.uns ue4;qle6uar-u ue6uep upetuesreq JII{e CE-I e66urqas uels loqluol uelsedel uep ue{ef
'1erne rsrsod

'g
'L

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 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

2)

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
O4

Bwe
00
01

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

02 03 04 05

00
01

06 07-08

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


Nilai
01

Jenis-ienis perintah
Keterangan
Perintah Perintah Perintah Perintah Perintah Perintah Perintah Perintah 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

02 03 04 05 07
OB

09

92
5*-

'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

0 = elep ueqnlnlosal uep lBlol rorrSDo

9VH'
90
LO

ulns l3or{c eleo rsl


L.|eluuod

y3v opoy
elep )aleo DuBrued uals^sqns lnJn oN

qlDuat JoqunN osJnos

uals^sqns ol
JalseN lnJn oN
(ra11o.r1uocorc!yI/Cd) ralseyl - gg uurtr0ue6 6g elep lolBo lel\Av

fl.
TO

olesJnos
JaqunN uorleullsac

00

ol

uorlBurlsao
JOpeeH

3t

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

Blok 2400

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

'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
.

Ilvtest:

DATA

94

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

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

du[r

..Iou
Aotrd

0+

'.raf JnE

AoI,i
AoI^I

qtT# / ad J,1a6.reJ

T0#'umN1a6-ref,,

/lotd
I

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

NJV elep TTquVi osro^-o a{ qelur-rad ?aIed uTlTXj


!

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


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

0 fuIeTVl dols qef uT-rad a?^qt=ElepEue[ue6l aJro^g = 1a5-reJ,l

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

T0+'urnN1a6-reJ,

t0# /,raJ:l:nE

AoI{ AoN

ure{a6dooT'}tT1aqJaluno, zulT

{Tlap-i- ETao

TTecT
:

0zT#'{Tlaofalunoc
XJV

ue{aEdoo.l l!or[

elep

T-JqurVJ

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

TeT-raselecTrqurv' TTeJI

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

r{tT+ 'ad Jta6.reJ AoN ,IINS]T Z VhIYTUS I{\DIE}I SSSOiId

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

Ter-Ias-?ruI t.rls 00 r{ET


T T

TTc.l dur!.I

:1.1e1s

6:0
X,tS

soo3'

O0S

9Z

so
T

sG surg-JalunoJ sc {r1ao-relunoc
urn1gle6:e;
6f,o

-ralJng sQ elecunslicaqc

I I

sO sO 0t

add;qe6:e;

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,
R0

#Buffer

GRO,A

LoopDat.aIn:

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


Ret

KirimPaketData:

LcaII

AwalPaketMaster
R0,

Mov Mov Mov LcalI


LoopBufferout:

#Buffer

A,

@R0

R7,A

SerialOutCS
R0,

Mov

#Buffer+1

Mov Inc LcalI Djnz Mov CIr Subb LcalI


Ret

A,
R0

@R0

R7, LoopBufferout A, #00


C

SerialOutCS

A,ChecksumDat.a

Serial_Out

Awal PaketMas

Mov Lcall Mov

ter

A, #STx

Serial-Out
SerialOutCS

ChecksumData,A
A, TargeLTl4)e

Mov LcaIl

A,TargetNum Mov Lca11 SerialOutCS

Mov LcalI Mov Lcall


Ret

A, #00

SerialOutCS
A, #01

SerialOuECS

Init_Serial: MOV MOV

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

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

96

L6

OOW.I

NOD.I OH'I
OT,T
:

dod dod dod dod surE-r{epns


rq.C

surE-n66unJ,

d*Fv
:5urg-n66un,1

surg-r{Ppns ' oJJ

qlas
Aor{
Ao]/{

-ralunoc lTq 9T apow faurrJ,J

.\o}{

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

qsnd qsnd qsnd qsnd


SurE-1{eTeq 1a.u

{T1apT-n56unJ,'Sug-"ralunoJ z-ule
Sug- eTaq TIeoV
:111ap1-n66ung,
^o,tr :1r1ep1-de1a6

0020#'surg-relunoc

Y ' Pleoums>tcar{J .I\oN eleoums{car{D /v ppv ?no-Ter-ras TIecT


:

leE

sclnoTeT"ras

I-U
dNSS,V
:

f TJ
1ION

1au

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


:

uI-TeT-TAS

I.I urr:1yn65unJ,IJ
:

quc

l all f TJ

urr:ryn66un;
1!OI{

V,dNSS IJ

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,{

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

lereI uellrseqEuar-u uele

Toqot eped lsraA IO-JSO lstsod

gl'g reqlueD

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

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

T
r

Bab 5: Sensor-Sensor Robot

$
m

il

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.

$
Y
4
t;

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
4
Gambar 5.20 Sensor u)arnaTcs-230

fi fitJT
.J !.f VNM
=

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$-

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,
H H

il.

H
H

i.lrillll,iillr leiill
+11lE

I
H

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

I
'1

I
I
0s

I IdAr aE{}t0sl"(}r{d

I
t"s

uli

{di}

sHl'tvss A}ilBt]&EUJ tndrfto

%1OL upp 'zH{

'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
'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

J+U*4U413

{*tr*n

ba.r

g-*1gua.*n

I
I

l+

i+-

trl

tlt-l

uplp eporpoloqd Llalo

'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

'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
Pin
I 2 J

Sinval GND

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)

VDD
S1 SO

4
5

S2

6
7 8

OE
S3

OUT LED
NC

l0

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
0

0
0

Skala frekuensi Outnut Power Down


2%

I
0

20%

t00%

r04

!:,

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'{

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

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

{S!il{

'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
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
nBlrr.{

ffi

6-fd

*nt "f

1e1ru

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

rellqlued

I 0 I

rellr} EqUBI rurq rellgrusd JII{B


BUJBil\
BUBA

I I
0 0
ZS

qsJeu Jellgruod epolpolortrd

ts

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.

ffi
, *stxir:n t
dr+tik tarrja&i

T.*?***k

ilJ-erL
trlt[

Hffi

l*tffi

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
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 'lnqasrol lqap nlps eporred Luplpp

r
CXU

0t
b

Cru

N3sd
UM

d/f"lv

Ltd 9rd 9rd

,td
0td
Z'Ld

I I

L 9

EE'

ttd

0rd
il_
0J_

LZd 9Zd 9Zd

tzd tzd

rtNt
01Nt

zzd

0zd
L0d 90d 90d

tzd

,0d t0d
zod
00d

t0d

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 000h Ljmp Start 003h Org 1,1mp EXU r sr 00Bh Org
Ret,a
.

Org DS DS DS
L

50h
2 2 2

Bir Bir BiL Bir BiI BiT

P1.1 P1.0
TO

rL
INT1

P1.6

Code

Org

Retr

013h
Ol-Bh

Ors Reti Org Start:

023h

Reta

Setb Clr Clr Setb Lca11 LcalI LcalI Lca1l Sjmp

51 S0 LED EA
Ukur-Merah

;Set frekuensi
i

10KHz

;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

32 53
OE

108
L

60i

Oxs qlas
s

fex

,dTlts

3uf
au

dT{s'o+ 'v
V 0xE

Ic
:

fTf,
1eu

3Ur

jrsT0xE

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

qlas
qur
fTJ

'o,rmr
0#'8 V

l\oN
AoN

0z*'>tTlacT-lunoJ

qf,o#'oow],

.\or{
:

jrn{O

v'

0u0
0E

..\OI^I

cur
.{OW
1\Ord 1rOrtr

A,V
V,O1IO

ElunoJ# '01I
EO

qles
TTECl .TT J

f,n)io so
CE

qlas fT:]

n-TT8--Tnx1l

v'Ouo
011

.\OI^I

cur
1\OW

s'v
EO
T

v'080

1\ON

i)lunoc# '08

.\Ord

rnlo

TEJ'I

EO ZS

fTf,

c<
:

qtas qtas
ne

t'lH-rn{n

v'oua
OE

1aE Aor{

cur
AOW
.^OW

a'v
V,OEA

ulunoJ+ / 0u

rn{n

so

qles
T

AOld

TPC'I

Bab 5: Sensor-Sensor Rohot

Latihan 1. 2. 3. 4. 5. 6. 7.
Jelaskan bagaimana proses terjadinya pulsa-pulsa dari Rotary
Encoder

Tuliskan protokol untuk meminta informasi jarak pada D-Sonar beserta protokol balasannya
Tuliskan protokol untuk memperdengarkan suara di menit kedua dari Modul D-Voice 04
Berapa arus maju maksimum dari LED Infrared TSAL4400?

Buat aplikasi penjejak garis dengan menggunakan Modul DST-51 dan Modul DSF-01 Buat program perhitungan frekuensi pada keluaran DCLI-230 dengan menggunakan metoda perhitungan perioda. Telusuri lebih dalam sensor accelerometer, voice recognition, magnet, PIR, dan kompas.

110

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.

ffi-H
^nr--+f

1--=-S^ -

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

'g requeD
ff];

1e;it;

iiun;ir ri+r1;

r.".r*fi

s
:. ;:

-r

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

fi

::r

!u-

,.t y-"
B

*;
t

i-.t "'Q-

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.

}{ { 01il1

ts{ }{

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

+IOA
-EoJd

260# t60#

+doJd
0 6
8

3C0#

lceles
+

060# 680# 880#

,80#
deels
OEPIA/AJ 980# 980#

sd0# nd0# 9rI0#

9
s

sv0#

B/V
opohtr

,80# t80#
280# r80#
080#

v
c
Z

JId
JOA

160# 960# 960#

(elddol)Je.{iod

t60# ExaII

Joqlllotr

Exall

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

P1,3

IR RECEIVER (lR-8510 ATAU TSOP4838)

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
1

Iqesd ln

Slsl$n

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

${ttttr

rre*rsrtdi.r

! 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

ilrl

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

fr*:i
1,P,1)

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)


I'orrrjPoriJ l.tlt)

il

tlorr

tryori L l.ll,

l.r. n

lfi&l] Ft)ttt

P$rf liFqrt (: l.LL

l'or, ?ilhn tl 1.i.l} [-n*Nr iurno.r

, - 1!\'Il(l

lnia)ili

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

LLT

ppv
AoI^I

Hdo'v E,V ,TdG


:

/\O'{

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

HdqcuI{epTJ

ToclruoJ,Taqei+'uJdc

Toquo[Taqe[{ntunJ

d*fv
T T

,.

IED'I IEC'I
xAohI

rTST-UE

dooT TE/[\Y-TsTsod SAiUTf TV

TIE3T

ouoso}{ Iepr1 eTTq Ieqel rsr ue{TTdureJrj

Telfiv-TsTsod
doo.I

E,Idqo,v
Toquro;TaqeJ,{n [unJ,
doo.J

uE>[-FEqe '6uoso)i Taqef ETrgr euT.ralTp 6ue^ apolt rPnsas teqel >{n[unJ,l

TIPsV
cI\ du!-J
TIPCV
:

ue)ireqe 'H08 qeaeq rp apoxl

alourallT rqurv
.ZAluT,T,A TUT

t+s 'HdL+'v

dooT

elep dP-rl ]inlun -rarurl Tersrul

TTEsV
T

ocl-1Tur
9Z

TEC'I

:1-re1s

nos

PfecSue Iued

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


!

TlaE

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


!

H8Z+WOE 610 T?au HgT+WOu 5rO TlEE Htr+r[oE


T

f o13an

T ?dn.r-raluJ Teu.ralxE i

6:0
aex 610

HEo+WOu
E

Joloe^ 3dn.r.raluI 0 .raurfi j ! folca^ 0 1dn-r-re1uI Teu.ralxEi


!

TSAE

folcaA

fasaul H000 n0E

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


,{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

;'I'unggu SCarC BfE

;Panjang data bit

AmbilDat.a:

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


Ret

;Ambil
; ;

1-

bit

;Geser ke akumulator
Lakukan 8x

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

P1.3,
TRo

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

CekStart.BitSelesai
THo, #00 TLO, #00

CekStart.Bit
TRO

CekstartBiLSefesai:
THO, #00 TLo, #0C

13rt: ,fb Setb


,fnb
P1

.3,$
t

TRO D1 ? TRO A, THO

C1r
Mov Cj ne

A, #03, $+3

Jnc

Clr
Ret

Birl
C

Mov Mov

THO, #O

TLO,

+O

Birl:
Setb
Mov Mov
KCL -Lna 1]'_L'1mer :
C

THO, #O

TLO,

#O

Mov Mov

THO, #00

TLo, +00
A A,
TMOD

Push
Mov

Anl
Or1
Mov Pop

A, #OFOH A, #01-H
TMOD,A

118

6n

e^ulntueTes

r-roruaru e}{ 4n[un6

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


:

QCrI-uI-rrx

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

Hdo I

{ntunlrp 6^ rrouaur r.rp e1ep

TcSnV

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

qelurfad-urfrx

GDT-^eTaG

TP3\,
l\Oi,tr

TTECV
:

HZ0#,v
Te1"le

TEIYry-rSTsod

rsrsod e){ rTequrexj


1aE TTecV

TTeJv
/loInl

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


:

t:ty-z(e1ds1o-rasae) jrasagi
^eTdsTO-----1au
TTE3V
!

-IrT)i a{

TTecv
1\oW

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


:

ueuey-.{eldsTOrasae
___________
!

ueue){ a}{ xeTdsro rasael

* I'Zd

6:0
EOOJ'

1TS

SU

lau

Bab 6: Bagian Pengendali Robot

*********
IniI_LCD:

SUBRoUTINE
RS

INISIAL LCD *******

SeIb

Mov Acall Acall Mov Acall Acall Mov Acall Acall Mov AcaII Acall Mov Acall AcalI Mov Acafl Acafl Mov Acall AcaII Mov Acall Acall Mov Acall Acall Mov Acall Acall
Ret

A,

#30H Kirim_Perintah
DeIay_LCD

;Kirim
;

30H

A,

#30H Kirim_Perintah
Delay_LCD

;Kirim
;

30H

A, +3

0H Kirim_Perintah
Delay_LCD

; ;

Kir j-m

0H

A,

#20H Kirim_Perintah
Delay_LCD

Send Init

A,

#2FH Kirim-Perint.ah
Defay_LCD

;8x5 2lines
;

A,

#08H Kirim_Perintah
Delay_LCD

i i i

A,

#0IH Kirim_Perint.ah
Delay_LCD

A,

#07H Kirim-Perintah Defay_LCD #0EH Kirim_Perintah DeIay_LCD

; ; ;

A,

;Display
; ;

ON

A,#06H Kirim_Perintah Delay_LCD

;Mode Increment Address


;

Kirim_Perintah:

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

;4 bit sebanyak 2 x
;

Kirim_DataLCD

Mov Acall ret

Po,A PulseE_Cfock

;Kirim ke Port 0 ;Beri I pulsa E Clock

PulseE_Clock:

Push Mov Or1


M^r,

A, #0A0H

A,P2
D, I

120

IZL
ac
80
Eo

q8 e8

j j

sq
sG
EC

aq
AG EO

so so
EO

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," , , ,

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

zula
:

leu

,E + Hddo+'a

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


zoJT- ETaq qelurf,ad-ur-r-tx HZj+'U
1aE TTesV TTPcV
:

cJT-IeTac

.^oli qJrI-T

r-reE

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


:

oJT-ZSr-rpg

qJT

^eTeci!

1au TTerV

rresv

xz cJT a)i j

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


: ,TA

dEiS IIPDV

qlas
f,

1IP"TEII-lll'F

T)

1au
doN V vcd

doa
.{Or{

H,{0+'v

ruv

Bab 6: Bagian Pengendali Robot


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

;8e

;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

n
JHN

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

]vtuSs

vfvo <

uotvtnoon:o ysl

ulAt33lu
lHn

UILLIY{SNVUl

ao-LVrnoor!

vsr

]vlufs vlvo

-l_.t-

ffil]umn

ilrm

um tlljl]]]]Jiln ]t.ZHD

L{rqalJa}

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

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

)cv
).IJ IJV J]A
CNC

6
8

w>lilmqnq !p {?plJ
{COIJ

t/N

qllll'ued i uorlue$v 3cA

prmorl)
r.raldr.mqnqrp

I
v
c Z

{8prJ
EN(T

J/N
GI^IJ

pusruruo3
uebrrBJele)

VJVC
BIUBN

uld

4tt1sfro7u14

pendyluoy

pqet

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


input dan otak robot

Data dd jaystick diubah renjdi SPI dan ditransmisikan oldl DX-24

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

((((((((((
I

\i ti

_E- .,\
I

ll il il

tI

toro'

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

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

'loqor eped epe 6ue( y7-yq burseu-EursBtu letuele a1 ueque6Jaq pJe)as er{uuelur:r6ueru uep Eunqnqre} 6uer( lrqsr{of

' 'JL!' 1\
'l**' ____:-l

l +,.-o /

't +/
1 :\-Y
\rl

' ,-11./ !jv'


+

Bab 6: Bagian Pengendali Robot

Tabel3 Data RF Jogstick


Data

Bit o
1

Bit

Bit 2

Bit

Bit 4

Bit 5

Bit 6

Bit

Data

Analog kanan arah kanan kiri ( 00 sampai FF ) Analog kanan arah atas bawah ( 00 sampai FF
L2 select
R2
L1
R1
)

Data2
Data 3 Data 4

A
up

\-l right

X down

E
left

Start

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

Keteranoan

Bvte 0 Bvte 1 Byte 2 Bvte 3


Byte 4

Header

1E

Destination lD Destination Number Source ID Source Number Lenqth


Perintah

00
01 72
01

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

Bvte 5
Byte 6

07

01102

lsi Data Checksum

128
i
I

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

/I.g requeD

9',Zd

tuo
33

o'zd

ndc o80u

vltfo

,'zd
9'Zd L'Zd

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

z[ eug
I I el^g 0t aug

6 e]Ag
B

00 00 00 00

eug

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 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

I)qs^or E Blecl pqs{op Z ptp(l {)r}s^of I plp(l


IO qElurred srusr
>1c11s[op Upp

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


B el^g z el^g

9 e]^g

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-

DATA CLK1 CS CE CLK2 DATA2


DR2 DR1

;DEKLARASI

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

30h Org PanjangData EQU BufferTRW24 Ds

. DSEG

PanjangData

; MAIN PROGRAM ; - Data dari dari joystick hingga BufferTRW24+3 ;


. CSEG

akan disimpan pada BufferTRW24, BuffertRw24+1

Org

00

LcaIl Clr SeTb


Loop:

InitRecTRW24
CS

CE

Jnb Mov Mov LcaIl Ljmp

DR1 , $

R7, +PanjangData R0, #BufferTRW24

LoopTerimaData Loop

;KUMPULAN SUBROUTINE

untuk mengirim data

.************************************************************'subrouting TRW24 dengan pengalamatan sebanyak 2 byte ; - R6 = alamat. byte 2 ; - R5 = alamat byte 1 ; - R7 = panjang data Mov A,R6 ;Kirim byte 2 alamat tuiuan

SendTRW24:

130
;

teL
J,SE

ef Pceurr-reJdoo.I ,Lu OE
:

zula JlrI

eleoeurrfeJ, TTecv PleOEur-lfaJdooT

v'oua $'tuo

1\ol{

aNr
SJES

g.IES

U'IJ
AoI^I
notr^I
:

TIIC Ef, SJ eleobue tued+ 'Lu 0E


7ZMEJ,-rof linS+ '

\rr[r'uE,tr

TZMEJ,

efep .raJ]nq Teae ?eueTe = 0E - j e?,ep 6uE[ued = LE - ] elep Eur-rauau {n1un aurlnofqnsl
=====.1

,{IUIX
C1

rsu
"ITVJV
:

NV)I-I,\IIEI)
Vfr1

EC
:

A.ISS

VJVO-hIIUI)
dr^Ils
orEo

NV)I-,{IEIX
el

EJ

1ITC

HVJN]Ud-WIEI}
a

x8r.{rEIx 'a
VJVO

JEtI dod

zNtq
ETJ

ulc

TYTJ TXTJ

a'lEs
AOI{
CTE

3,V,IVC
V TXTJ 8#

E'ID
:

'8
a

xSNrur) :,{TEI)

AOr{ HSOd

TX

l alt csq
A&ES

sc
r-i0 8 #

$ ,s

,a

zuCfr
.\Or{

ac
?

1I1J

ZPIU.I,PuoSdoo'I ' LE
VLLVU hI-LtlI) nv

zutfr
'11VCV

JI]I

080'v uPn[n1 leueTP T al^q ur]rx]


!

AOhI

,zl,1E[.ra]:JnE#'01I /\oN eleo-ur.rrx TTecv gu'v ,{oN Eleq-uT-rrx TTecv

,zMEJpuesdoo.l

Bab 6: Bagian Pengendali Robot

TerimaData:

PUSH MOV MOV CLR SETB SETB RLA

B, +8

A, +OH
CLK1 DATA CLK1

TERIMASX:

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


Ret

IniI-TRW24 Ambil_Tabel

Kirim_Printah

INIT_TRW24:

CLR CLR CLR CLR

CE

DATA
CS

CLKI

Mov Aca11 Mov Acalf Mov Acall Mov Acall Mov Aca11 Mov Acall Mov Aca11 Mov Acall Mov Acall

A,#Oh Kirim_Printah A, #0 Kirim_Printah A, #0H Kirim_Printah A, +1*8 Kirim_Printah A,+8*PanjangData Kirim Printah
A, #CH2AddressByte4

;Send Reserved Byte


;
; ; ;

; ;

,'Channel 2 panjang 1 byte

;Channel 1 panjang 6 byte (48 bit)

Kirim_Printah

A, #CH2AddressByte3

Kirim_Printah
Kirim_PrinLah

A, #CH2AddressByte2 A, +CH2AddressBytel

Kirim Printah

132
I

''T
I

7
e6r

6ue^ {orls^of

-rourou

ueouap rEnsas

ue{eun6rp
loqou-rouroN
00 00 00 00

CNg

o0u

0el.i{SsserppvTHJ
T

a1^gs sa-rppYTHJ

o0s n0s o0s o0s n0s n0s


o0B n0E

,41^ES sa-rppvTHS

zal,(EssalppvTHJ te1^assarppvTHJ

0al.{gssarppvzHc Tal^EsserppvzHJ
z

a1^8

s s

sa-rppvzHc sa-rppvzHc

00 00 00 00 00

n0s
TO

tal^assarppvzHJ
?e1^g

nog

loqoE-rouoN ao

ZHJ^I

0T x 0 + ZHDV'Z Tsuan{a.rdl

8T0000000

gpo fa1vlod j (TT0) Te?s^a) zwn 9I! sdgl^I T ! 1s:n8lcoqs j


Iauuer{3 aTOurS l
aTqeuE .rotE-rauae JUJ dTr{c No

8TTTTOTTO
aTT0000T0

AO

a f,uc

9T = I{16uaT

lTq 9T i ECov j

:,IINI_'ISSVJ

EO

u,tdo+vo'v

nor{ 0#'v :.IEAVJ-'II8WV


,IEE
ZN.CO

.IE1I cAoI^I

NIE]X?ZA{E,I_,INI,S .IIJdO

HV,trNIlId-WIlIIX'I'IV3V

JNI

Teq[-Trqurv
:

TTEcv
AOr{
AOId

,IINI-TEAVJ+'}r,tdG Z+,9

,{IUIY7 ZMEJ_JNI

qelu-Ifd-lur-rrx rlecv oal^gssa:ppvTHJ*'v Aol^I qelur-rd-urr-rrx TIcv Ta1^gsse"rppvTHJ#'V Aol^I 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 qelur-rd-urrfrx TIecv Za1^Sssa.zppVTHC#'V 1!or[

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
Dtt.TA *()B{} Ii}l} I}C DRIVEIT FSRI'
E

ISP

ProgEmElaE

Prr{

lrfr{rrd ljs$
P{d

S$r$fir

! o i

llltrsoolc Y}*nrdEder fort

B{tl{rt Cotrodor
DELTA ROBO KITS DELTA ELECTRON]C

tl(b l2C f{rtfit EEI'ROH

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


L{D}pd

'dx s^\opurlA {nlun }eq'dx-dsl

ueIuEIer

'uPr{y rulsy ue}pnq 0'wDd dsl arpn\uos up>lupler

ueqy ulsv uelenq otutuetfiord dSI eua4s

6,1.9

requeD

aoI]3NNO] SZEO

rO

t----r o='rf
I

ZT ONH E NId

.LUOH5

,,il r
^fIHOd

IdE
]I

]H

1H0d
NUd
T
Z,

I
E

9.J, 9U
b,JT

ET}
DT)

EA EH
T1
z,rJ

bH
TH

z^
T

b 5

f5 1 ]Hbt

zso

]}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 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

'Dd)

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
I

i
,ry.:,xta"B.l*-t

lryrfieloe

i!;i;i:::i:i;:
;
;l :i :li:t :l :r

:i:i,

,fi,,:Look8iF:ii
I i:r;

I slAnffUfA,

,ii;;;

i .i ir .i

aernrO fite .l *;--:.---Ji

ilti*tlf
Il7

r*'

;il;

:r!i,s..tl{r*,iEft

r efout.i ,:l:.:l::l :l:::: :: It ;,*;:l:tr;i:i: liiI.{a I' I r;i; ;: :t:tr.tl $E*Hffitr


ll!!ll!tlt!!l!!#'

!ii:i! i i: :;:i,: i:r: ti:

itr

ir

:i:J

t:t

r::

::

.bb i]il hq x[, .i


;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

Inlun ueleun6rp ledep 6ue,{ ggpl reruruBr6ord

'dSI IIuIel ueleun66ueu 6ue,{ 1aur1y Jalor}uo{orrrru tup)pur re6eqreq e>1 urer6ord peoluanop-ueu qeyepe 0.ZA dSI-Dq

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,,:
rr,i,
Ioo,, ig::^$.,..S:F......
ail_'l8tE%..

,=

I trael*Figbi+d

ri'ririo gp;Gcr:,
:j

..

:ffi,*L#
..

! 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
i;n'ii

rve.3nery:t{cis
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@


ad

rurcq"iryft

'
i:i,ldft.El Fq]@kd&dl&gdsdiv

i;
-

,^.91*:.9.:l1,1.i

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

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

'uorsr4 epo) ueeun66ued

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$
rrEs lriduEen

bY tle

rle,
0 r

1f,compiElleetuB,,{i&e
$ogram the Mirge
datE

AltshlahFl, :'
Usert Pmgrem

:,

Ch[

r !reate

*ffi a.Rgfi Fto ts Fusil

PflsmmiFg

thip Prog,amir{ Odiffi

sx

rr"o

5ooffi:

-:J

,,
-r

ii
'

PEsIEm

FE

B(sl

'" r ' lj EoP,,xu,*ion I I r:"- Proqmfuire disabhd


' FLASH

L**,8ile

:I LKSLLU=U
l
:

lll crsrrr=o
CK5EL]=O

4:
..1. I r:

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

lKsEL2=o lf: iT

lf: EoDEN=o .:' if: B0DLEVEL=0 r;: iri B00TEST=0 ;i


iT BooTszo=o iT BooTszl=o IT EEsAvE=o

:r:

:I
t

t' ,r
:

: 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 i

,l
i
ri

t t I

*!*d I -?
6l ,',. ,.'.
E iriEiaifzatisn

aetp

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

ledep {epq }oqoJ

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

{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!
sz!
i

[B0ud]lP20 0)(.)arq0

sQsh

F@o!

Flil

se

u0 @rP+i.NBrtrl.@F!: !0:@r${su.E. P..uEwl! s.AsM@ fr8i qFs lu :$mP.l !E..{ri @h'p t.hpe,p!q9l
oN l0ol PP.@ordi

e\ Pflun'ru:

az,9:6r.ru80i

-,-._

::".r*-r1:":l;wg1dl*fi6l..6El

@lPddv:dle6rd: BZ I6tu1V d{ti

!rus lorydE@H:

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
requeD

Nl d 1fruls 4nruag

6,2'9

ledac LlequrEuaq rolow

I
I

ruor
apouad

i<-

raaltQ

)o

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

n"

ir
L

llr

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
OO-FF

Set Kecepatan Motor Set Home Position Total mulai 1E hingga checksum = 00

Perintah Start Motor Kontinyu Byte Nilai 07 Set Direction 00/01

Keterangan

00

ccw01 cw

146

7
LVI

puo)es Jad dals ue6ueJelsy

-{-{ - 00

I ro]ow uplpde)3y

LO

!e[N

eilg
Joloru uPlPdaDe{ oJut

0 = plep upr{nJnlesa>l rJPp IBIoJ


Joloru uplpde)el oJUI BtPp 1e{ed 6uefue6
u.ralsr{g qns }nJn oN

ulns I)3r{)
elPC rsl

u+20
LO

s0
-{J-

qelurJad
Jeqr.unN

t0

qlbual a)rnos

90 90

v0
e0
ZO

vl
JJ-TO 00

cl a)rnos
Jeqr.unN uorlBurlsec

uralsr{S qns Cl J3]spw lnJn oN

(rellorluo)or)lw)d)

cl

uorlBurlsec
rappaH

IO

Jelspw = 66 turrr6ua6 q1 elep 1a1ed lerny ueEuereley

Et
IEIIN

00 er/(g

relsew)d e{ 90-Iss lrep Plep uPtu 146ua6


ueEueraley

IEI!N

eilg
les qeluuad
LO

uoHlsod ar,uoH

00r-00
ueEueralay
!EI!N

ueledaray

eilg

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

IPI!N

eilg
rolow dots qeluued

f
Bab 6: Bagian Pengendali Robot

OB
ACK Byte
07

I Kecepatan Motor 2

| 00 - FF I step per

second

Nilai
Status ACK

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.
l-

t^^t

-zms

lr

mg ng
15

ms--l

,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

xx-00
-cJ- t0 !PI!N

Iepo)ua ePPd Dueqnl qelunl = xX rololu lnrn Jor.uoN


ueDueJsley

raPo)u3 rBlrN rolow Jor.uoN

BO

LO

eug

(0) rapo)ug !el!N Plulw qelulred

BO

LO

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

e$g

BZt nPlB qo8 ABIep JDDuluel uelpde)ey qppuare] uelede)ey EEZ ne]r- JC ^EIap Jolou lnJn JouIoN

JJ-OB

o^Jes uplede)ey

60 80
LO

o^ras lnpns oels


Jolow JouoN

9Z-tO J.i- r0

(I0)

uPDuerelay IE[N o^ras ue{{er3D qelulrad

eltg

00 = unsl)aq) eDDulq

eI

lelnu] IP]of

.iJ-00
90 v0 0
ZO

I'UnsY)aq)

u+20

JIIBIoJ eJP)es

JOSUes

o^Jes ue{{eJe66ueI.U qe}ulJad srupleu UPIBDBDe{ IsYelepuslu leBs qBre JnlE6ueu qBlulJed Jepo)ua IBIIU Blultu qelulJed o^Jas rslsocl elultu qplulJed o^Jes ue{{PJaD I{B}ulJed

IO

qelurJed

qlDue'I .{J-

plpp ]a{BCl Duplupd JelsBW lnJn oN

t0
00

Jeqr.unN e)Jnos

cl e)Inos
JequnN uorleurlseq

90 90 v0 0
ZO

(ra11or1uoeor)lW)d) JelsBW = 66 uur6ua6 q1 urals^s qns ]nrn oN Luels^sqns

-{-{-

t0

ql

tI

ql uoqeurlse(

IO

00

repPeH Blep te>lpd Ie{\V EI ueDuereley !EI!N rellorluoD oNes e{ relsPw/)d Irep Plep uelulrlDu3d

eug

80-uso lo4o?ord

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
OB

Perintah Menqatur Gerakan Relatif (05) Nilai Keteranoan Nomor Motor Nomor urut motor O1-FF Arah gerakan
SCTVO

09

Step Relatif

00/01 o1-25

00=cw/01=ccw

Sten relatif terhadap steo sudut saat itu

Bvte
07

Nomor Motor

Perintah Stop Servo (O6) Nilai Keteranqan O1-FF Nomor urut motor

Bvte 00
01

Penqiriman data dari Servo Controller ke PClMaster Nilai Keteranqan


Header
1E

02 03 04 05 06 07+n

Destination ID Destination Number Source ID Source Number Lenqth


Perintah

00
O1-FF
11

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

O1-FF
0.1

02 Checksum
OO-FF

154

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{

ue6uep gZ'g requre6 eped {r}ptuels ue:6erp

'{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 '

'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
Dur1ed

srllerd

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

Kaki 3

5 6

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
-

'l requeD

ztonufs

(e) so-uso

m;;;;r Li
r-8onuls
- Lonulls

(z) eo-uso

ndc o80u

VIIfC

(L) eo-uso
'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

g'l requeD

ler{utg

ndc o80u v,t'tlo

vtulfs
uo_Lot"i

toul.NoS

onuls

I,

.,',,*".J J (r

:.- i1:

onufs v-Ltfo

.,n

lnr '! tl --+tt

lil mftJ:1

rL

.l

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

I sonu
z sonu
or+s)l rsbunJ

YZ I,Z
LZ OZ

9
9

t t
L

I sonu
z sonu oJls)l rsbunJ

I
I

6t IL
9t

I
v v v
0
L

t
Z Z Z
Z Z

I sonu
z
sonu

9t

orls)l

rsounJ L sonu

tr
ZL
t_t_

z sonu

Dllsll

rsbunJ
L sDnu

6 8 L

t
Z Z Z
L

t t

z sonu orls)l rsounl

I
?
0
L

t
t t
t

I sDnu
z
sonu

t t

or+s)l rsbunJ

uolruorele)

o^res Jolow rouroN

DqDl-DqDI

lIox

rouroN

80-uso fnrn JoutoN

efruls6ung uep oaras rolo6 lnrD routog

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

tr ll L_lt "l rampak atas, ruas 2 maiu \,/\.!--:Tampak samping, ruas diturunkan
1

n_
' t*tP

ol

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
Kaki

terangkat ---.-_
Kaki
1

Kaki2

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

Uey

ZD{P>|

t'z
e

9uBp

gHey !ley--__--_

l)EY

, Uey

nfeur

(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
ur>1

nJeUU

ueuey uepeg ueIBJog

unrnl g uep 'Me4 eTtas n[bu t4e4 ue4tnluenp 6ue4e1aq a4 Duotopuau g uep ? 'Z !4ey

II'L reqweD

!le)

Mey

Ue\

lley

!le)

ue>t

'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

4 5 6

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

nloru rloy

9r-0r

sonu

o:1o13 rs6un1 1o16uore1

I
?
e
t

ulo;
r>1o;

L sonu

nlour

IZ-91 9r.-0r
(ders) o^res tnPns Dtoo

sonu

orps13 rs6unS

/U\) qOIV

uo6uorelay

o^res Jolow rouroN

daTs p11u-1efiu uep ocuas

ue4eo6-ue4eraD Z pWI

ulpraq lslsod

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


8 Ruos I Fungsi Ekstro
Ruos 2

15-24
10-16

Koki terongkot

9
11

Koki moiu Koki terongkot

12

Ruos

t5-24
r0- t6
15 -24

r3

Fungsi Ekstro
Ruos 2

t5
16 17 19

Koki mundur Koki terongkot

Ruos I Fungsi Ekstro


Ruos 2

20
21

Ruos I Fungsi Ekstro


Ruos 2

r0-16 15-24

Koki mundur Koki terongkot

23

t0-16
15-24

Koki mundur Koki terongkot

24

Ruos I

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
= =

A\) IIN.J IBIIN

7Z ue4elnqrP nplP tL'?z L80'O/l'Z OI uPllelnqlP nelP '0[ Lgo'0/6'0

= =

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

6I'l EqueD

HeX

Ue){

DlF>4 !)e)

9 p{Py

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

rc'l requeD

---'f-

unJnltuPpzuPy

nrvv\l NVNV)

NVGVEL--

1,

unJnl

lquPs nfeu g ue)

nlVhl lul)1

NVOV_-- - - ;>

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 EQU
1Mo

DeviceID
STX

PerintahKontro
vrv
;

or EQU

00h

NomorRobot
2nu VARIABEL_VARIABEI,
Ds Ds Ds
DS

EQU EQU

01 1Eh
03

;Nomor

urut Robot

DeviceAddress: TargetT\4)e: TargetNum:


SourceT)rpe:
SourceNu.m:

ChecksumData: Buffer: Ds BufferPerlntah: .Ioystick Counter_sms: Org Ljmp org Reti Org Reti Org
RetrCSEG

Ds Ds
:

;Nomor urut robot ;.f enis Slave ;Nomor urut Slave ;Variabel Master ;Variabe} nomor urut Master
;Checksum

Panj angDataSerial

;Panjang data pada paket serial

paket data serial

25
Ds Ds

;Buffer data serial ;Buffer perintah dari Wireless

00

Start
03h
OBh

13h

Org Reti Start:


Mov LCAIl. Mov Mov

23t,

P0, #00
PCON,

lnit-Serial
#80h
TH1, #OFFh Wakeup

;LeveI indicator penuh ;Inisiaf Serial Port 11-5200


;

bPs

LCat
LCA.t

-t

;Robot berdiri

I
1

Delay_5 0 oms
KakilLanqkah.I4a

Lcafl
LC Loop:
LCA-L1
1-L

ju

;Majukan kaki2 depan

Lcal

Delay_5 0 OmS Kaki 6Langkahllaj u MajuModel


Loop

Ljmp

GERAKAN-GERAKAN ROBOT

MajuModel:

176

7
LLI
suro0T-^ETao ITec.I
TTer"I

r{eI un-rnl e sen-r un]n1

I I

o^,rasTsTsodlas

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
un-rn1 i un-rn1 i

sur00T-.4ETaa TTecl

T{P{ t senf Tlie{

T{1 nteulj
1e)i6u i

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

o^.rosrsrsodlas
o^"ras-Fs-Fsod?es

TTCT

o^-resTsTsodlas un-rnl j

TTP'T
TTECT
T T

o^.resTsTsodlas o^]asTsTSodlas

TEJl
TEC'I
..\O',I

o^.rasrsrsodlas r{exunf n&TaqE&+' llI,dc

TIC.I
:

r){ex9un-rn[
1au
TEC'I

T SenJ-Sen.r u{seuraT l
-i{e>t

seutarlT sEnlI
surO o

g-xeTao

TTP3T
T TPC'I TTEC'I

918)i6uvi
I

IIe{ 9 uelsn-rnT

rYx9snfnlfasae

T{ex91eI6uv {TlapT-^ETeC

TEJ'I
:

^qpue?s

leE
n.T. T
T

rfrpfag

rvpvounf
sur0 0

TEST

I !

g-.{eTeG ^qpue?S

TE3'I
I

deTs rs-lsod a{ TXe{ ue{{e.rae i

L L9V

dnaltEM

-rnpunl^Iueuexuepeg TTeoT

sur00T-^PIaq TTr.I suooT-^ETeo

l all

.rnpunwTfTxuepe8 TTec.I
:

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


ReE

DPTR,

SetPosisiservo SetPosisiservo

#Kaki3Mundur

;angkaL kaki

Delay-5OmS

Delay-5Oms
Delay-SOmS

;maju kaki
; ;

Set.PosisiServo SetPosisiservo

Eurun ruas t.urun kaki

Delay-10OmS

Kaki 4 Langkah.I'{undur

Mov Lca1l Lca11 Lcall Lcall Lcall Lcall Lcal1 Lcall


ReE

DPTR,

SetPosisiServo SetPosisiservo SetPosisiservo SetPosisiservo


De1ay-5OmS

+Kaki4Mundur

;angkat kaki ;maju kaki

Delay-5OmS

Delay-5Oms

;turun ruas
;Eurun kaki

Delay-10OmS

Kaki5LangkahMundur:

Mov Lcall Lcalf Lcall Lcal1 Lcall LcaIl Lcall Lcall


Ret

DPTR,

setPosisiservo

#KakisMundur

;angkat kaki ;maju kaki ;Lurun ruas


3

Delay-5OmS

SetPosisiServo SetPosisiservo SetPosisiservo


DeIay-10OmS

Delay-5oms

Delay-5OmS

;turun kaki

Kaki6langkahMundur:

Mov LcaII Lcall Lca11 LcaIl Lcall LcaIlLcall Lca11


Ret

DPTR,

SetPosisiservo

#Kaki6Mundur

;angkat kaki ;maju kaki

Delay-5OmS

SetPosisiServo SetPosisiServo SetPosisiservo

Delay-5oms

;turun ruas
,'Eurun kaki

DeIay-5oms

Delay-10OmS

KakillangkahMaj u:

Mov Lcafl LcalI Lcal} Lcal1 Lcafl Lcafl

DPTR,

SetPosisiservo SetPosisiservo

#KakilMaju

;angkat kaki ;maju kaki

DeLay-5OmS

SetPosisiServo

Delay-5Oms
Delay-5OmS

;turun ruas

178
!\

6Lr
E Snr un-rn1 j

o^fasrsrsodlas

r{e{ n[Pu1
Tlte)t 1{6ue
I

surog-xeTac TIer.I o^-rasrsrsodles TIecT ntPI^Igr{eI+'UJ,dO ,\o?{


:

o^"ras-!s'FSodles TIP3T

sur0E-.{eTeO

ITe3l
TTET.I

ntehJqelSue.Ig r)iex

l all

suro0T-xeTaG TIecT SuOE-^ETaC TIeJ.I

-J{e}{ un.rnl

o^-resrsrsodlas TlecT

t sen: unJnl i r)ieli n[eur] rltP{ leI5ue


I

ntewgT){EX+'UJ,dC
:

o^.rosTsTsodlas TTecT suro9* eTao TTec.I o^-rasTSTsodlas TTeJ.l suroE-IeTaq TTEo.I o^jrasrsrsodlas TIecT
AoW n teI^JqE)i5ueT9

Tlex

1aE

slro0T-1\eTeo TTec.I surO9-^eTao TIPcrI

o^-resrsrsod?as TIesT
o^.rasTsTsodtas o.1\Jasrsrsodlas ITec.I
SUIOE-^PTeO TTE3.I
:

T{e{ un.jrnl t senr unrnl


Tlte{

r>te{ n[eul
1e}t6ue i

surog-IeTac ITec.I

TTecT

o^-rosTsTsodlos TIec"l nFehITT{ex+',uJ,dc 1\o}{

nIe]^Iqe{6uE1?r>[x

l all

.l

TIe{ unjrnl t senf, unrnl

surooT-^elao TIe3.I o^:asTsrsodlas TIPc.I slrog-^ETaq TIesT o^.rssrsrsodlas TTe3.1 suog-^eTac TTeJ'I
o1\-:aqTsTsoelas
TTe3T

rlie){ n[eu]l

r{e}t le){ouej

suoE-^eTac TTe3.I o^.rasTSTsodlas TTe3l nteWEr{eX#'EJdC ,\oN


;

nIewqe{.6ue.Ie T{ex
1aE

r{e{

un-rn1 l

suro0T-^ETac TTec.I

E Snf un.rn1 j
r>[e]i n[eurj

T{e}i 1e{6uEl

nteldz-l)iex#

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
:

n t pI^Iq>t6uerI

rIeX

T{eI unJnl j

suro0T-^eTao TTec.l o^Jasrsrsodlas TTec.I

1aE

Bab 7: Robot Laba-Laba dengan 6 Kaki

Lca11 Delay_5oms Lcal1 SetPosisiservo Lcal1 Delay-1-0OmS


Ret

turun kaki

Kaki6Langkahlurus

Mov Lca11 Lcal1 Lcal1 Lca11 Lcall Lcall Lcafl Lcall


Ref

DPTR,

SetPosisiservo SetPosisiservo SelPosisiservo

#Kaki6lurus

;angkat kaki ;maju kaki ;Eurun ruas


3

Delay_5omS Defay-5Oms
Delay_5OmS

Set.PosisiServo

;turun kaki

Delay-10OmS

Kaki 5Langkahlurus

Mov Lca11 Lca11 Lcall Lcall Lcall Lcall Lca1l Lcal1


ReE

DPTR,

SetPosisiServo SetPosisiservo SetPosisiservo SetPosisiservo


Delay-SOms

+Kaki5lurus

;angkat kaki ;maju kaki

Delay-5OmS

Delay-50mS

,'turun ruas ;turun kaki

Delay-10OmS

Kaki4Langkahlurus

Mov LcaII Lcall Lca11 LcaIl Lcall Lcall Lcall Lcall


ReE

DPTR,

SetPosisiservo

#Kaki4lurus

;angkat kaki ;maju kaki


;

Delay-5OmS

SetPosisiServo SetPosisiServo SetPosisiservo

Delay-5Oms
Delay-5OmS

turun ruas

Delay-l0OmS
:

;Eurun kaki

Kaki3Langkahlurus

Mov Lcall LcaIl Lcall Lcall Lcall LcaIl Lcall LcaIl


Ret

DPTR,

Delay-soms

SetPosisiservo SetPosisiservo SetPosisiservo

#Kaki3lurus

,anqka! kaki ;maju kaki

SetsPosisiservo

Delay-5Oms
Delay-5OmS

;turun ruas
;

turun kaki

Delay-l0OmS
:

Kaki2Langkahlurus

Mov Lcall Lcall LcaII Lcall Lcal1

DPTR,

SetPosisiservo
DeIay-5OmS

#Kaki2lurus

;angkat kaki ;maju kaki

Delay-5Oms

SetPosisiServo SeLPosisiservo

;turun ruas

180

18I

HdC

dod dod lTECT


AOrd
1\Or.tr

.IdC .ro1ol^Idol surT-r Tx 90+ '91I

t0#'Lu

"ro1o]^Idol surr-r Tx

l TEJ'I
1\Or{
r\Olitr

z0*'9tI

t0*'tE

-u

o?ohldo?surT:Tx

lTEf,T
.^OW

90+'98
JOI Or{do1SrUrf, rX

ZO+,LE

/!OI{ TTECT
1\ON

z0#'98
ZO*,LE
T

-rolohldolsuTf -tx
TO+

lr0w
TEC'I
1lOr{
1\OW

90#'9lI
,LE
.ro1ol^Idol surTir TN

T0#'Lli
TdCI

z0+ '9u
Hdc

Tlec'I
AON /\OI,{

qsnal

r{snd

seuralesenu j

SVNU SNI,INOEAOS I

1eE

T{e{ T)ie{ un.Inl j


1e{6uEJ
i
,

surooT-^eTeq TTEoT o^.ros'rsTsodlas TTEc'I o^rasTs'Fsodlos TTecT slroE-^eTao TTPrl

TIe)i 1e{6ue t senf un-rnl

o^-rasrsTsod?as TIecT o^.rasTsTSodles TTecT

T{e{

T)ie{ nleui

1e>t6ue j

o^-resrsrsodlas

suroE-.4eTac TTec.I
TTecT

o^.:rasTSTSod?as TTecT

T{e)i lP){ouej Tlie{ lp){ouEl

surog-xelac lTerT o^-rasrsrsod?as


o^.ras-FS"lsodlas
:

TTe3.I TTPc"t
1!ol{

snrnlqe6uaJ,T>tex,I+'E,IdG

sn-rnTqP6uaJ,r>{E)I

1aE

r{e{ un:nl:
E Sen-r unrnl i

surOoT-xeTao TTec.I o^jras-FSTsodlas TTe3.I suroE-^PTaG lTec.I

r{e)i nleul T{P{


1e}i6ue i

sn-rnTTr{ex#

o^-rasrsrsodlas TTec.I suoE-^eTaq TTPcT o^.rasrsrsodlas TTesT suos-.{eTaq TTec.I o^.rasTsrsod?as TleJl /u&dc AoR
:

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
LJCal- -t

DPTR,

#TabelAngkatRuas3

Set.PosisiServo Set.PosisiServo

setPosisiServo setPosisiServo
SetPosisiServo SetPosisiServo

;angkat ruas

Lca11

LcaIl
Lca11

Lcal1
Ret

ceserlurus 6Kaki

Mov Lcalf Lcal1 Lcall LcalI Lca11 LcaIl


Ret

DPTR,

SetPosisiservo
SetPosisiServo SetPosisiServo SetPosisiServo SetPosisiServo SetPosisiServo

#TabelLurus6Kaki
i

lurus

Ruas2Lemas: Push Push


Mov Mov

DPH

DPL

R7, #01 R6, #03

Lcal1
Mov Mov

KirimStopMotor
R7, +01 R5, +07

Lcal
Mov Mov

KirimstopMotor
#02 R6, #03
P''7 ,

LcaIl
Mov Mov

Kirimst.opMotor
R7,#02
R6, +07

Lcal I
Mov Mov

KirimstopMotor
R7, #03 R6, +03

Lcall
Mov Mov

KirimstopMotor
R7, #03 R6, #07

LC
Pop
D^h rvP

I-L

KirimstopMotor
DPL
DPH

Ret

SUBROUTINE RUAS

1.

Angkat6Kaki:

Mov Lcalf LcalI Lcall Lca11 LcaIl Lcall


ReE

DPTR,

SetPosisiServo
SetPosisiServo SetPosisiServo
SeEPosisiServo

#TabelAngkat6Kaki
;

angkat

SetPosisiServo SetPosisiServo

782

8I

E&dG
01I

3Ifr

cur
1\OW

v'0110

lltrdc+vo,v
!
! ! !

cl\oI^I
lroI^I

o^-r3s rsTsod las

00#'v
E.Idg
OE

cur cur
.{\oI^I

V,

O1IO

E,tdo+vo'v

Cl\OI^I
.1\oI^I

o^fes fotuoN los I


]o?oru Tofluo{ qeluT-rad
urT-rTx

00#'v
0u
OEA OE

j
! !

cur
AOtr{

.ro1oI^II

o.rluoXqe?ur-rad #'

cur
1\Or,I
l1otr^I

.ral:Jna# ' 0u

70#'080

TO

elep 6uP[uPd lasj = loqo-r fouou ?asl

loqouf ouioN+' s sa-zppva c T^ag E,tdc+va'v

I'otrI

u,tdo

cur
AOr.I C/\OI^I

!
!

v'urnN1a6-reJ,

80-ESG .rouou 1as i

00+'v
r{TT#

AOI{

0E-lrso)

-raTTo-rluoJ o^.ras

?a6-rEJ, I

(8o-uso 'ad J1a6-ref,,


:

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

.IdC .ro1ol^Idol sluT-: TX

HdC

1au doa dod

rIE3T
1\ON

80# '9E .rolol^Jdolslrrr.r

t0#'Lu rx t0#'Lu z0+'tu

l\o,.I I TC']
1!otr{
l1Or.I

t0#'91i
.roloLldol slur-r rx

I T EC'I
.r\oI^I

80+'98
.rolol^IdolsurTf T)I

1\Ofi

rrecr
AOL{

t0+ '91I
ZO*, LA -ro1ol^IdolsluTf Tx

AON
1\OW

80+'9u

rolowdolsurTfTx
TO+

10#'ru ,0+'9u ,
LlI
:

AoInI

ITECT
AON
AOW

TdG
HdG

rlsnd qsnd
seureTTsenu

Bab 7: Robot Laba-Laba dengan 6 Kaki

Mov Movc Mov Inc Inc


KirimPaket;

A,#00 A, EA+DPTR GRO,A R0 DPTR


DPH

;Set delay / kekuatan servo


;

i
;

Push Push

DPL

Lcalf KirimPaketData LcalL AnrlcilDataSeriaf


Pop Pop
Ret
DPL
DPH

; Ambil data serial

(ACK atau info

dari DSR-08)

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
R0,

Mov Mov Mov Lcall


LoopBufferout:

#Buffer

A,

@R0

R7,A

SerialoutCS
R0,

Mov

#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

98r

nterfuepe8 durft
..!oW
:

n[el^JuEueXupETaqe&+'lltdo

fp{ouvueuExuEpeE
..\oI^I

.rnpunl^Jueueypsq,I+'u,ldo
:

n[e14uepeg durl'I
-rnpunwupuexuEpeg

ntel^JuEpeg durFT -rnpunwTrTxpaq[#'tt,tdo AoI^I


:

f,npun {TfTxuepeg

1au
V

'eleoumsltoer{J

.^or{

ppv
T

pleGlrnsIcaqJ 'V ?no-Ter-ras


:

TEC'I

sJlnoTT_ras
/1'oI^I

uns {3aq3 qequre[]

v ' elPcums{caqJ

elecurns{ceqc'v

ppv
JUI
.^'oI^I
:

v'0u0

OE

-zaJl:n8a^es
1eE

sJlnoIeT-ras
c1)anoTPTfac

TTEs'I
.1\oI^I T

ssa.rppvacT^aG

'v

TEJT
1\Or{

olacrAeo# /v sclnoreT.ras
urnNac-rnos'V

TTECT

.^ol{
TTECT
1\oI4
AOI^I

ad J,eclnos'V
V'

sJlnoTET-ras

eleoums{3ar{J

lno-TeT-ras
XJS+,V

TTPCT
.{\or.I

1.re1s j

: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
1\oW

'v

ad J,1a6-reJ'v

sJ?noTeT:as

TTecT ,\ol,I AoN TTecT


1!otr{

V'elecurnsIcaqJ ?no-TEr,ras xls#'v


:

-re?sEN1a{edTer

Bab 7: Robot Laba-Laba dengan 6 Kaki


BadanKiriAngkat
:

Mov

DPTR,

+TabelBdnKiriMaju

BadanMaju:

Lca11 LcaIf Lcal1 Lcall Lca11 Lcafl Lca11 Lca1l Lca11 Lca11 Lca11 Lca1l Lca11 Lca11 Lca11
Ret

SetPosisiServo SetPosisiServo
Set.PosisiServo

SetPosisiServo SetPosisiServo SetPosisiServo

Delay-10OmS

setPosisiServo
SetPosisiServo SetPosisiServo
Delay-10OmS

SetPosisiServo SetPosisiServo SetPosisiServo SetPosisiServo

PutarKiri-:
Mov
DPTR,

Lca11

Lcall
Lca11

LcaIl Lcall Lca1l


Lca11

SetPosisiServo SetPosisiServo SetPosisiServo SetPosisiServo SetPosisiServo SetPosisiServo


Delay-10OmS

#TabelPutarKiri

LcaIl Lcall LcalI


Lca11

SeEPosisiServo

SetPosisiServo
Delay_10oms

setPosisiServo
SetPosisiServo SetPosisiServo SetPosisiServo
Delay-10OmS Delay-10OmS Kaki 6LangkahMaj u KakiLLangkah.l4a ju

Lcall f Lcal1
l,ca I

Lca11 Lcal-l-

Lcall LcaIl LcaIl


Lca11 Lca11

KakiTengahlurus Kaki 3 Langkahlurus Kaki 4Langkahlurus

Ret

PutarKanan:
Mov
DPTR,

LcallLcall Lcal1 Lca]1


Lca11

SetPosisiServo SetPosisiServo SetPosisiServo SetPosisiServo


Delay_1
0 OmS

#TabelPutarKanan

LcaIl Lcal1
Lca11

setPosisiServo setPosisiServo
SetPosisiServo SetPosisiServo SetPosisiServo
Delay_10
OmS

Lcaf1
Lca11 Lca11

Lcal 1 Lca1l
l,cal
I

SetPosisiServo SetPosisiServo SetPosisiServo

186

L8L
Jnpunur

n[eu]
n[eur n[Eu]

T{ex

9
Z

rvpv
TYPV

I I
J

so
AC

? T)tex I
g
E

1e{6ue 1e{6ue

T{ex j
T)tpx
I
1

lEltoue
sn.znT sn-anT

ao ao ao

so
ao ao
SO

T{ex

sn.Tnl

z sEnE.l z senu j z senE I

r{08

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
'tT 't0
:

ao jrnpunl^Irf TXpgq& ao ao
sG
SC

nFeur

g
E

fnpunur ,rnpunu -rnpunu

e
T

Tvpv I T{ex j T)tex i T)tex I


T)[EX I

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

ac so
ao ao
AG AO

1e{6ue
1e)t6ue 1e)t6ue

j ? tvpv
z

I{ex

sunT

sc
ao

sn,rnT sn-rnT

z senu I z senu I z snu I

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


:

ac Iel^Jueue)upgIeqeJ

un-rnl I r{ex unfn? e r{px

ao ao

un-rn1 T Tliey j n[pur T r){EXj -rnpunu 9 T)tex i

so so so
SC

Eo

lnpunu , T{exl :npunu z T{exl ?eI5ue E T>{exi


?E){6uE E TltEXr
1E>[6ue

ao

sc
ao ao

T]IEX I

sn-rnT z snuJ sn-rnT z sEnEj sn-InT z senE j

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
:n

sq

a6 Ier{r-rrXrrp8T aq,],

OAUSS NV)rVUEE

TESVJ
======

' !

sn-rnTqe{5ueT?T}tPx TTec.I

1aE

sn-rnTq{6ueTeT{ex ntel^IqE{6up.ITr{eX

sn.rnTqP6uaJr{ex

ntEWrIE{EueT9T{eX TTecT

TTE3T TTecT 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

;Kaki 1 turun ;Kaki 3 Lurun ;Kaki 5 turun


;Ruas 2 lurus ;Ruas 2 lurus ;Ruas 2 furus ;Kakj- 2 angkat

TbBdKananMundur: 01, 07, 13 , 80h DB


DB DB DB DB DB DB DB DB DB DB DB DB

02,01,13,80h

03 ,0"7 ,13 , 80h

01,08,18,80h 02,08,17, 80h


03, 08, 18, 80h

;Kaki 4 angkat ;Kaki 6 angkat ;Kaki ;Kaki ;Kaki ;Kaki


1 maju 3 maju 5 maju 6 mundur

01,03,16,80h 02,03,16,80h 03,03,10,80h 03,07,16,80h 01,08,15,80h


,1s , I 0h 03, 08, 15, 80h
02 ,08

TabelPutarKiri:
DB DB DB DB DB DB

01,03, 13, 80h

02,03,13,80h

;Ruas 2 lurus ;Ruas 2 lurus


,'Ruas

03, 03, 13 , 80h

2 furus

0L,04,18,80h
02 ,04 ,17 ,
8

0h

03. 04, 18, 80h 01-,0'l ,l-6,80h

;Kaki 1 angkaE ;Kaki 3 angkat ;Kaki 5 angkat ;Kaki 2 maju ;Kaki 4 mundur ;Kaki 6 mundur ;Kaki 1 turun ;Kaki 3 turun ;Kaki 5 turun
;Ruas 2 lurus ;Ruas 2 lurus ;Ruas 2 lurus

DB DB DB DB DB DB DB DB DB

02,0'7,15,80h

03, 07, 16, 80h 01, 04, 15, 80h

02,04,15,80h

03, 04, 15, 80h


0L

TabelPutarKanan:

02,07,13,80h 03,01,13,80h

,0'l ,13 , 80h

DB DB DB
DB DB DB DB DB DB

01, 08, 18, 80h 02 ,08 ,17 , 80h 03, 08, 18, 80h

;Kaki 1 angkat ;Kaki 3 angkat ;Kaki 5 angkat. ;Kaki 2 mundur ;Kaki 4 maju ;Kaki 6 maju ;Kaki 1 turun ;Kaki 3 turun ;Kaki 5 turun

01,03,10,80h 02,03,10,80h
03, 03, 10, 80h 01, 08, 15, 80h

02,08,1-5,80h
03, 08, 1s, 80h

188

V
68r
ac
Eq
gcl EA

q08 'ET ' n0' t0 r{08'9T '20'10 q08 '9T ' e0 'T0 q08 '0 2 '?0 'r 0
:

1e:16ue1p

un-rnl T senu i dels g sengl nfeu Z senE, T sengl

n[er[TT{pX

un.rnl T sEnuj
lP){ouPrp T senEi

EICI

sq
scr

deTs e senul sn.rnT Z senu i

I{08 , ET ,80 ,IO q08'7T'90'80 tI08'tT 't0'e0 rI08'02'80't0


:

snJnTgT{eN

ao

un.rnl T

sEnUJ

EIG

dPTs e sPnui

r{08'sT '?0 '0 q08'eT '20't0


I{08, ET, EO, EO

EG
EICI

snJnT z senuj

le){buerp T sPnul

r{08'02'?0't.o
q08'ET'50'20
q08 '7T '90'ZO
qO8 ,ET , LO,ZO

EC
:

SNf,NTETIEX
SG
EIG EIG

3e>16uerp

unrnl T senEJ dels g seng: sn-rnT z senul T senE j

r{08'02'80'20
:

go sn-rnT7T{ex
Ecr

unf,nl T senEt
leIEuETp T senuJ

dels g sengl sn-rnT Z senu j

q08'9T 'V0'20 r{08 'tT '20'20 rIOS , ET , I,O'ZO q08'02'no'20


:

so

sn.rnTtr{ex
ECI

EG EG

un-rn? T senu j

ac
gcr

deTs t senul snjtnT z senu,i

?e}{6uerp T spnEj

I{08 ,9T ,80 , TO rI08'?T'90'T0 ri08'ET'L0'10 rI08'02'80'T0


:

sun.IZT)iex
so
aq

Eq

un:n? T senul ders senEj

snrnT Z sPnEi fe{6uTp T sen6l

q08 'ET 'n0'I0 q08 'ET '20'10 q08'rT't0'T0 r{08'02'?o'T0

so
EA
: SNf,NTTTXE)I
EIG

ao
EIq

fnpunurTTliE){zsPnuj sn.rnTtT{eIZsenE! rnpunu9T)ieyZsenuj T T{e{ z senu j


sn.ilnT

aq
ECr

sedaT 7 Tlte{ ra)tcns sedaT e T{et ra)tons i

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
:

so ueuex6uorasTeqe,I,
EG

sn:nT?r}[EIzsenuj
-rnpunuE-I{e>{zsPnu, sn.znT9TXe>{Zspnuj -rnpumuTT{e{zsenu,

I{08 ,CT

LO,ZO

ao
EG

sedoT ? r{e)i ,ra{cns j

r{08 'TT

so
AO

sPdaI E r{e)t .ra{cns j

q08 'TT ' t0'20 I{08 , ET , LO, TO q08'TT'80'T0 '90'ZO q08

'1r '10' z0
:

T-rrX6uo"raSTaqeJ

Eo

Bab 7: Robot Laba-Laba dengan 6 Kaki

Kaki2Maju:

DB DB DB DB
DB DB DB DB

01-,08,20,80h 01-,07,15,80h
01, 06, 14, 80h 01, 08, 15, 80h

;Ruas ;Ruas ;Ruas ;Ruas ;Ruas ;Ruas ;Ruas iRuas ;Ruas ;Ruas ;Ruas ;Ruas

1 diangkat. 2 maju 3 siap l- E.urun


2 maju 3 siap 1 turun

Kaki 3Maj u :

02,04,20, 80h 02,03,15,80h


02,02,1-3,80h

1 diangkat

02,04,15,80h 02,08,20,80h

Kaki4Maju:
DB DB DB DB

02 ,0'7 ,11, 80h 02 , 06 , L4, 80h

02,08,15,80h

2 maju 3 slap 1 turun

l- diangkat.

Kaki 5Maj u
DB DB DB DB

03,04,20,80h 03,03,11,80h
03 ,02

03,04,15,80h

,14, 80h

;Ruas ;Ruas ;Ruas ;Ruas

1 diangkat 2 maju 3 siap 1 turun

Kaki6Maju:
DB DB DB DB

03,08,20,80h 03 ,0'7 ,L2 ,80h 03,06,14,80h


03,08,1-5,80h

;Ruas 1- diangkat ;Ruas 2 maju ;Ruas 3 siap ;Ruas 1 turun

KakilMundur:
DB DB DB DB

01-,04,20,80h
01, 03, 1l_, 80h 0L,02 ,15, 80h 0L,04,15, 80h

;Ruas ;Ruas ;Ruas ;Ruas ;Ruas ;Ruas ;Ruas ;Ruas

I diangkat
mundur

3 siap 1 turun

Kaki2Mundur:
DB DB DB DB

01,08,20,80h 01-,07 ,11,80h

01, 06, 14, 80h 01, 08, 15, 80h

1 diangkat 2 mundur 3 siap I turun

Kaki3Mundur:
DB DB DB DB

02,04,20,80h 02,03,11,80h 02,02,13,80h 02,04,15,80h 02,08,20,80h


02,01 ,15,80h

;Ruas 1 diangkat ;Ruas 2 mundur ;Ruas 3 sj-ap


,'Ruas l- turun

Kaki4Mundur:
DB DB DB DB

02,06,14,80h 02,08,15,80h
03

;Ruas 1 diangkat ;Ruas 2 mundur ;Ruas 3 siap


;

Ruas l- turun

KakiSMundur:
DB DB DB DB

03, 03, 15, 80h

,04,20,

80h

03,02,14,80h

03,04,1-5,80h

;Ruas ;Ruas ;Ruas ;Ruas

1 diangkat 3 siap 1 turun


mundur

190

t6r
so

sc
AO

Eo

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
:

ao
ACI

rxPxun.rnJ,Taqe&
sG

Eq

sc
sq
ECI

sen-z uE>{dPrs i

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
:

SG

ESenule{6uYTaqE[
rc
Eio

sG sG

I SPnjr ?e{6uer

r{08

r{08'02'80'E0 r{08'02'70 '80 It08 '02'80 '20 q08 '02 '?0'20 rI08'02'80'T0 '10'10
'02
:

sq so so
Eo

T{ex91e}i6uvTaqPJ,

ss
ECr

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
:

ECI

so

T)iex9sn.rnrlTeqeJ,

ire>tcns lopes i unf,n1 9'r{e)iTsenul

q08 ' rr 'T0 ' t0


r{08 '9T

'?0'e0
:

EO SG

un.rnJ,ET)iex
AC

.ra{cns lopas un.rn1 zT)|exTsenEi


un.Tnl

I{O8,EZ,90,TO r{08'9T'80'T0
:

so unf,r\LzT{Ex

senE i

unfn?
deTs dPTs
sn-rnT

senu.'
senE
J

senu i

snf,nT

SPNEJ

senEa

senui
senEl

1P{6ueTp 1P)i6uetp

z I I

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

-[

xEx,],
:

r{E5uaf

T{e{ ue{e.re6-ue1e:ao

r{08 '9T

'80'E0
,
EO

un.rnl T senEl dels g sengl


-rnpumu Z sEnU I lPI6uPrp T senEl

I{08 , ZT ,90

sq
ao
Eq
AG
:

r{08 '9T'L0'e 0 r-I08'02'80'80

-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
RET

; Mode 1 Ren ; T0 Mode 2, T1 Mode

;
i

51600

Serial-Out.:

C1r Mov

TI
SBUF,A 0A6H, #lEH 0A6H, +0E1H

'lungguK1r rm :

Mov Mov Jnb CIT


Ret

TI , TungguKirim

TI

Serial_In: Clr
TungrguTerima:

RI
0A6H, #lEH 0A6H, #081H

Mov Mov Jnb Mov CIT


Ret

RI, TungguTerima
A, SBUF

RI
:

KirimPesan-SeriaI

Mov MOVC Cjne


Ret

A, *00H A, GA+DPTR A, +0FH, KirimTerus

KirimTerus:

Lca11 Serial-Out DPTR INC Ajmp KirimPesan-Serial

SUBROUTINE DELAY

Delay_ldetik: Mov Counter-Sms,


Tunggu_l-detik:

#0200

Lca11 Delay-SmS Mov 0A6h, #LEh 0A6h, #081h Mov Djnz Counter-sms,Tunggu-ldetik
Ret

Delay_50oms:

Mov

Counter-sms, #0100
:

Tunggu_5 0 oms

Lcall Mov Mov

Delay-5mS
0A6h, #1Eh 0A6h, #0E1h

792
it

7
e6r
'Jnpun(U

>lere6Jaq 6uer{ pqel-eqpl

}oqor uelera6 eu1rro61e ue{srlnJ '


.Z

'uorl)ns rs6un; ueqpqruB] ueDuep Eurrrur Dueprq eped eqey-BqBl toqor uelete6 etu1uo61e uplsrlnl

'{rueJel Eurpurp rp ledrueuau >ln}un uorl)ns lrJpueur ledep eJ}sle rs6ung ueEuap olres re6e uelqnlnqp 6uer{ lrue>leLu uelrpqtupD

uBr,{!lB'I

doa HLo SI^I0S^eTapdooT'LE zul1 qTEO#,q9V0 AoI^I qsT#'r{9v0 1!ow SurE-^eTac ITEc.I
:
51a19

1au

gzlelepdool
1\old

0T#'LU HLo

: 5urg

qsnd E-.{e1eq
1aE

oor{,r OEf
:

dod

fTJ
surE-r{epns

surg-rlepns ' odJl

SUE-n55unJ, d*!t
:

cqIl Surg-n66un;

falunoc 1-Iq 9T

apol^I -raurrJJ

oEJ qlas l\ohl Hddo# 'OT,t ,OH.I 1'OW HOEO# HTZ+,COI^IJ AON qow,t qsnd
:

SUJE- TaG

Stlr0O1-n66unJ,/Surg-JalunoJ zulq
Aor^I

1aE

r{TEo#'r{9v0 r{ET#'r{9V0
SurE-IeTao
:

1!ohl

gu:gg1-n66un;
AoI^I
:

TTec.I

020#'surE--ralunoJ

Suo0T-^eTaC

fau

SUro 0

9-n66unJ

'

Surg-.ralunoJ zulq

Bab 7: Robot Laba-Laba dengan 6 Kaki

4. 5.

Tuliskan listing program untuk robot laba-laba yang dikendalikan melalui D-Joy Controller Wireless. Kembangkan pengontrolan wireless robot menggunakan TLP/RLP 433 MHz atau Bluetooth.

794

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

direclories for:

lSsou*cmtrot si*i***--**T Edlor


l*l

i$il;;; *" ,-:":""*"


ii
i I
rts

Text

[h*\,ril",

l$(vLlosldlDir)lib

yjafE,rjtl -

";

j'-it,o'::,:. uertsuttS 1
!i
VL++

:iJLrevrte'ool, ffirtrm:U(llh\0rtrEletre i$(r(IniitsllDir)Fldborm50K\lib i' r ttT|,,tL D"r,**, t:

.{ l.b:sslns Errr,:*;;ffi;b,;"-.;J{'\hb-

^':"l:
BUIId

ffiM
:
r

',

LrarfreHorE5UKU[]lfi

+
Xl'lL

!c++

Dire.tories Web 5eitinqs


OEiBffir

i I

ll3windowsFtrroDtriqrer
i::ri

l,nt11i:1:1,);11i,i;,.;1:11

;,1r;;11g11s
E

i
VC++ proiect,

Libtaly

Oirrtt{iiaj

Path to ure urhen *arching im ht(ary filtr u*de burldflq CffiesFonds to Ertrirffirffit vari*le LIB,

["llt-J

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,,


uVAWVS-IV.Id
S

j (0)^aylreM c
*a6eur11d1
)
1u-J ) uTPllr

I ( sz I So&ov-MocNIM-AJ

) a6euIAol{s^c Ic-qoluoC,, ) 1{opurMpaureN^c

",

i ( [T]^6re) a6eurlpoT^J= 6urr

(,\6-re + +:er{c 'c6-re

1ur

<q'rn6q6rq> apnT3ur# <q'.1\3> apnTcuT#


,,r{'xlep?s ! apnlJur+
uro3'

rq'oruocr

apnTJuT#

Elruo"rl{aIa-o{o1'/v\.lwh
lnurr

uloc'

^a / -zequrE6 ueriTTdureuaur urE-r6oJd ouJoa

g1g7 opoplg .aw

loqo-r-o}tol'/vta.ryI // / /
/

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 ); return
)

0;

cvwaitKey(
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 //
,

f j ( !u\upcqaa TsesrTersrur lEbee ,, '-r-repls) Jlur]dl:

_ uJnle-r
)

j(

( a:rnldEJdi )lT )I^IVJulo.r.{e-rnldpJAJ = a.rnldeJd ^NV-dVC-AJ e,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,,


aure-r] uEdurrs uEp uecqaa
:

o,

. -"i:y;J;rn ?;;d''^lli" ),

a{ rs{auo}t ouaq // ddc . ernldECurecqe1,l

( INV-dVJ-AJ )I^IVCuto,r.{a-anldEJAc = a:n1de3d

r.ueDqe^\ rrep

: qelepe ueleun6rp urnrun 6uert rs6un; eupturp 'rur lnlrreq epol otuep ue>1eun6 'lnqasJal e6eur lrqtue6uaru upp tue)qe^\ rslalapueur ur6ur epuy elrf

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 a6erolsdi ll 6ur1du1d;)4t


)

(opEcseJdi ll

'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
(o)

a6erolsurawaleaJJ1\J=e6erolsd

e{

'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

:e^ulenquleu qelePe ueIPfJe{ pPuY snrel{ 6uetr'reJJnq 'a6ero}sluaw^) IIA}aPJa1 6ue,{ qefern reuPPuaur ue{P ro})a1eq

'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

CV_HAAR_DO_CANNY_PRUNNING //skip region yang tidak berisi cvSize (0, ) ) ; / /gunakan xl4l- defauft. untuk skala pencarian

3,

1-.1-, / /tLngkatkan skala pencarian dengan 10% E.iap passing

(pInpfmg, pcascade, pStorage,

//drop group yang kurang dari 3 deteksi

wajah

terkecil.

5.

Untuk membuat display Window gunakan cvNamedWindow seperti berikut:


ke display, panggil fungsi cvshowlmagefl nama yang telah dibuat pada window dan nama image yang ingin ditampi lkan.
UnLuk memasukkan image
cvNamedWindow
(

"Haar Window",

CV-WINDOW_AUTOSIZE)

dengan

Berikut ini kode lengkapnya:

DetectFace.cpp:

/ / Hak Cipta cognotics. #include "stdafx.h" #incfude <stdio.h> #include'cv.h' #include "highgui.h"

com

#define
/

//

********************************************

******** *********** OPENCV_ROOT

**************+

"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 exit(-1);

name of image filet\n,, "Usage: ?s <imagefilename>\n", arW[0])

plnplmg = (argc > 1) ? cvloadlmage(argv[1], pstorage = cvcreateMemStorage(0) ;

// initializations

CV_LOAD_IMAGE_COLOR)

0;

202
I
I

l.'

f
,oz

I ( MOCNIM-Ld S IO ) r\opuTM^o.I? saG^c I (bulduId',MOONIM-IVTdSIG

i (O)^aXlreM c ue{TTdue? //
{
)

e6Eurll{oqs^c

(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

( ++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) / /

jr fuT
)

j ,,r opuT}.4 fEPfi,,

MOCNIM-I\V'IdSIG

+ -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

J j ( EuIdulda ) aoeurIaseaTeE^J saJf,nosaf aseeTaf pue dn uee-lc / /

(baslDeEacpJd' ourIduld) suoTl caleo^eTds rp rs{alapJa1 6ue^ qeter u>iTrdurel //


I ( (0r'0r)azrs1\c
/ /'9NINflUd-INNVJ-OO-1{WH-AJ
L

7x0,

aceJ
ssed

qcea Z0T

= 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 ^q

,I'I
'aoe.rolSd'apecseJd'bu1duId) uT saJef 1oa1ap //
aOEUlr

slca tqolJalacfeeH^s = baslcauacedd 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.
Menggeser lokasi dari persegi wajah pada setiap frame video.

3.

204
i I I

l_

Y
:
rtr-

I (T_)uer6o.rdfTxa ( OTTVxTUTi )l.F j0=lceuacedd+lcaEl\J


) t ^6ab

?brr^ +-rEr{c

,^6Tqur ) ureu pro^ 'c6:e

l (epoc 1ur)ule_r6o"rd1Txa pTo^

I ( )eure-rdoapr^a]nlde3

pro^

lsbunJ rsa:u'tJeA ////

I O TTVITUr tu-F

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{

uroJ's)r1ou6oJ eldrJ >PH // qEtel^ 6ur{Jeal, ouaa / /

,,q'..Ic,, apnTcur#

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

'9

'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)

'v

Bab 8: Computer Vision untuk Robot

/ CapLure and display video frames until a face // is detected while( 1 )


/

i
/

capturevideoFrame ( ) ; pFaceRect = detectFace (pVideoFrameCopy)


cvshowlmage
/
]

/ mencart wajah pada nexE frame

// Tampilkan image ( DISPLAY-WINDOW, pVideoFrameCopy if ( (char)27==cvWaitKey(1) ) exitProqram(0) ; / exit Ioop when a face is detected if (pFaceRect) break;

);

startTracking (pVideoFrameCopy, pFaceRect) ;


/ / "lrack the detected face using Camshift white( 1
)

/ init.ialize

t.racking

CvBox2D faceBox;
/

CvPoint facePoint;
capturevideoFrame
/

/ ar&)il next frame video


(

/ Lrack wajah Pada video frame faceBox = track (pVideoFramecopy) // Bentuk eliPs cvEllipseBox (pVideoFramecopy, faceBox, cv_RGB (50,255,0) , 2, CV_AA, 0 ) ; tf( )
exitProgram(0);
)

cvshowfmagie( DISPLAY-WINDOW, pVideoFrameCopy ) ;

(char)27==cvWaiEKey(1) ) break;

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, /

);

captureVideoFrame ( ) ;

/ flltiaLLze tracker if ( IcreateTracker(pvideoFrameCopy) ) ret.urn 0;


/ / 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

'.-

- -ro< -^doCeure-rdoep

rAd

palra^uT sr

aoeurT ar{? sueau


1

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. 2. 3. 4. 5.
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.
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


negativeSample/infofile.txt -npos 12 -nneg w 20 -h 20 -nonsym

haartraining.exe

-data data/cascade -vec data/vector.vec 'bg 2 -mem 1000 'mode ALL '

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 [,u tr

I -,.,
---------------r'
G&

Soqo;

uetual

QSi6!A8ilAls ________--______*, #,.,,

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,,
I ( .3x1 'uTe.r1,,

iu.rnle.I

,-r-rapf s) li?uT.rdf
)

( 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

sfolJa^ua6re
aOEurT a6E-ra..\e aq1

senTe^ua6Te

sabeur 6u1ute:1 J:o .rac[u]nu aqa


sfaqumu uos-zad Jo

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

.u
j0

= =

se3eduTPjrJ,u

sa6eur acel: Jo ^e.r-re


^Pf,f,e

1el^Jq1n-r[urnt[uosJad

lur

rjrvburlace] ++ a6purITdl
saTqer-re^ leqoIlD ////

lefiuro

,,q' rn6q61q,, epnTcur+

.,q'xne^cr

apnTcuT+

<q'6ur-r1s> apnTJur+ <q'o-!p?s> apnTcur# xf ep1s,, apnTcuT+


,,r{'

,,ri'1\3,, apnTcuT+

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


PCA subspace

projectedTrainFaceMat = cvcreateMat( nTrainFaces, nEigens, CV-32FC1 offset = projectedTrainFaceMat->step / s:'zeof (float); for(i=0; i<nTrainFaces; i++)
{

/ projecx the training images onto the

);

cvEigenDecomposite

/inL offseE = i * nEigens;


(

facelmgArr Ii]

eiqenvectArr,
pAvgTrainImg,
)

0,

0,

/ /proj ectedTrainFaceMat->data. fl + i *nEigens projectedTrainFaceMat->data. f1 + i*of fse!) ; / / sLore the recognition data as an xml file storeTrainingDat.a ( ) ;
)

);

void recoqnize
{

CvMat * trainPersonNunMat = 0;
0;

int i, nTestFaces = 0; float * projectedTestFace =

// //

L]ne number of test. images |uhe person numbers during

training

/ / \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;

projectedTestFace = (float *) cvAlloc ( nEigens*sizeof (f1oat) for (i=0; i<nTestFaces; i**)


{

/ projecL the test images onto the

PCA subspace

);

int iNearest, nearest, truth;


cvEigenDecomposite nEigens,
/

/ project Lhe test image onto the


(

PCA subspace

facelmgArrIi],

0, 0, pAvg',l',rarnImg,

eigenvectArr,
;

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
':tetilase.{ure]J,pal3ato-rd
',,

10=r )-rol:
C

j((O'0)1sT1r11vA)'SulrurerJ,6^vd',,6ufurerJr6.l\p"'abelolSal"[J)alr:IqnD i ( (0'0)lsTrlftlv^c
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

lEwece-{u"lEfJ,pal'3atofd" 'o6P]of saI-Jl:)a1I'IM

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


'
j

I [002]eulPu-re^ f,eq,

j ( (+ e6eurlTdI)Joazrs+saceJure-rJu)coTTV^J(+x

a6EurfIdI) = f,'rvlce^ua6ra

(*+r isua6Tgu>r :0=r)-roJ

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:
1eI^1^C)

. tu
0

',,?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

'0 'abe-rolsaITl)aueN^EpPaUAc(+

fEI^ITeAuabra

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

cvReleaseFileSEorage( &fileStorage
)

/ release

E.he

file-storage int.erface
);

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

il;
)

projectedTestFace Ii] projectedTrainFaceMat->data. f I IiTrain*nEigens

distsq += d-i*d-i; if (distsq < leastDistsq)


{

// Euclidean

IeastDistsq = distsq; iNearest = iTrain;

return iNearesE,'
)

void
t

doPCAo

inE i; CvTermcriteria calcLimit


CvSize facelmgSize;
/ /

nEigens = nTrainFaces-1;

/ set Ehe number of eigenvalues Lo use

/ 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 );

1)

// 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 1) ;

278

6IZ

,,

u\<pueuuoc> ace]uaora

,,u\a-TE spueunnoo PTTEA : e5Esnr ) J:luTjd


(

)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 I ( aueuaTTdouT / acedT+T' elep<-1ewq?n.rfiurnNuos,rad',,

aberur acEJ aq? peol // sA p*,,


'

= [aredT]-uv6urJare]
aTTdlsT.ISurr

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 //

Juecsl:

l a1rg1s116urr ) puraa_r jsa3p.{u++ ( (aIrd?sr.I6uI'ZlE'aurEuaTrd6ulT)s1o6l )aIIql1^ saseJ Jo .aaqumu aq1 lunoc //


1

(auPuaITl: ',u\s% aITf uado 1, \ueJ,, '.r-rapls);3ur:d3


(

u-rn1a-r
)

((,,-r,, 'oueuaTTl:)uedol =

aTrJ?sTTEurT) i )lT aTrl lndur aql uado //

:o=saJedu 'aJedl 1uI

t0=aTrdlsTTEurT*ETIJ

ZIS ] eurEuaTrdoulT .reqJ

(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
)

']:V6uIIaJeJ ( +pTo^)

+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
li

t ) e1^s trv^

TZOI NOJ

lnq
. .

PNEq

{E.Z JISVSdS}
{dZSE dNvJSS}

EI NId

IPPS

: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.
Kembangkanlah demo kode pada bab ini untuk mewujudkan robot pelayan humanoid menggunakan stereo vision berbasis webcam yang mampu mendeteksi tingkat kedalaman dari suatu image. Kembangkan juga robot yang mampu mengikuti wajah seseorang (people follower) seperti gambar di bawah:

2.

3.

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

C#

untuk mendeteksi

222

b'\-

I
i

ue)qafi

ueouap ramonol aldoad

pqoa adlplord 6'6 requeD

)d

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

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

1OOZ

'opul]nduroy elpew xel1 'ralorluo4or4lN

elpew xelg
]asJJO

'septaS loqoA lenqluaN 'oPoPIA\ 'oypqlpng 'e '6002'epelefDol


.Z

elpaw xel3 'n1n4e74adg pqog 4afrord

rpuy 'lseTuatualdul uep uoal'e4lloqog 'oPopl1\ 'ouPqlpng '8002 'opuqndtuoy 'opoPIA\ 'ouPI{IPng

0t

.I

uencv teueo

1
1

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
1

. www.beyondlogic.com

22. www.hpinfotech.ro 23. www.diptrace.com 24. www.cmucam.org 25. www.crustcrawler.com

226
i

z x 9l xrrlPw ra^Je)eu parerJul InPow


Ia^Ja)ad

c)l

z9tw c)r 8Srdosr


0tE8-dr

3 relllulsuprl palprJul Inpow


sluouole

IE-IS
IE-ISC

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

0z-n)c 0ez-s)r
)ruPr4)ew podexeg

snonuJluo) o^Jes Joloul PnP qelo ue{Ipre6rp 6uei( 9 IIeIreq }oqol {luPIaW
JrlPrJeA DueA

IO-.{SC
ZEIJO6OSdOI

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

o0tt'lvsl_
Dursuag eurl dl ellaq

rnlep ledep 6uer{ ln6uns ednreq srre6 1e[a[ue4


lrueLu

9l / g lsernp upDueP eDPJralul e)lo^


loDolord

70 a)ron-q

+ 70-lUS 1eq11edtuo1 'ece;re1u1 DluoserllD

fdvl)

reuos-c

lry repo)uE

xx-)3q
uotsren gsD EEES-J-s
IDtr

8SD SlsPqreq reluulPrDoro ue6uep E5gge6auty d1y oJIIul lry


uEsElalued

{eplerd 6ue$nued

Iy

reueQ

ue4dwel

DX-24 D-Joy Controller D-Joy Controller (Wireless Version)


DU-ISP V2.O

Modul antarmuka TRW-24 dengan sistem

mikrokontroler
Ivlodul antarmuka 4 Joystick Playstation

Delta DC Driver Delta Robo CPU

SST-06

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 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

L293D
HS-422 HS.645MG
HS-8O5BB GWS SO4BB DCS-01

metal qear
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

Soider Leo Mechanic

DU-232
Gripper

cB-232

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

'

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

tao? 2!u otpap-enap@sn1ne d rnlelaul srlnued rDunqnq6ueut ledep

sllnue4 aue\ual

You might also like