Professional Documents
Culture Documents
HI
Membuat Sendiri
Aplikasi-aplikasi
Pendukung
Datasheet
RGbGt Humdnoid
Ciptakan sendiri robot mirip manusia berbiaya murah
I
AKAAN
PAN
.TIMUR
fut#ltLat
ploueunH loqou
u!puos l.Pnquaru
L Borongsiopo dengon sengoio melonggor don lonpo hok melokukon perbuoton sebogoimono dimoksud dolom Posol 2 Ayot (1)otou Posol 49 Ayot (1)don Ayoi (2) dipidono dengon pidono penioro mosing-mosing poling singkot 1 (soiu) bulon don/otou dendo poling sedikit Rp .l.000.000,00 (sotu iulo rupioh), otou pidono penioro poling lomo 7 (tuiuh) tohun don/oiou dendo.poling bonyok Rp 5.000.000.000,00 (limo milyor rupioh).
2. Borongsiopo dengon sengoio menyiorkon, memomerkon, mengedorkon, otou meniuol kepodo umum suotu ciptoon otou borong hosil pelonggoron hok cipto otou hok terkoit sebogoi dimoksud
podo Ayot (1) dipidono dengon pidono penioro poling lomo 5 (limo) tohun don/qtou dendo poling bonyok Rp 500.000.000,00 (limo rotus iuto rupioh).
id
l'?#trP{Yt
$tr/rf}t'{}X
ffi
ploueunH loqou
u!puos IPnqu0ru
qr."
/tr
,i'.
"
::'
t'
'34o.4stlsr'rc
lrlW
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
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
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.
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
"""
""'upnlnqppued
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
..........
.....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
viii
i :1 ,,&
-ii
XI
""
up^eled loqou
lpunl ]pl6ueJed
""'uBnlnqpPuad
""""n)uedg reseq ueruerDorua6 13uedg tuer6or6 loqou eped uotstl ralnduo3 leua6ueyl """uenlnqepued
rosou
yDrND Norsrn
ugrDdwo) g 8vg
ueqrlpl ""relndrag uep nfe14 loqo6 up>leJeD onros rolow ue6uap up{BreD ue6unqng lnpns "" rJrpreg loqod uBIBreD nleyl ueuey uppeg ue>lpreD """""""'n[BW trty uppeg up>leraD snrn'I qe16ue1 up{preD rnpunw qe16ue1 up{BreD "n[ew qe16ue1 ue>lpreD nqq-nqn1 upleJaD-up>leraD "'lypy spnd-sen5 >lereD uernle6ue4 PqP'I-pqel toqod ""'upnlnqppued
"""""Iyvy
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
,,,.,,,.,,,.,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
/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.
r
\
Merakit dan mengelas kerangka mobil di industri manufaktur. Pencari dan pemadam sumber api, intelijen.
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
Robot humanoid saat ini banyak dibuat untuk robot pelayan atau peniru manusia, misalnya robot pemain ping pong TOPIO di bawah.
Gambar
1.2
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.
-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 . . .
Y YCmv3
(,tazdt)
psJe{ul Josuos
ilp
77
79ggg
e8sqygny
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,
:tN
..ri
ondifl
.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
'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
F.,
PB0_(XCK/r0)
PE1 _(T1 )
PE2_{ArN0itNT?) PE3_(AlN1t13C0)
66i "FF
PA7-(ADC/)
PCLI-(SCL)
PC1
_(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
UAV
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
1.
Installah dengan mengeksekusi file setup.exe yang terdapat di CD pendamping buku sehingga muncul tampilan berikut:
ll
li ilad>rSr Cdlrd
I!
2.
Klik Next sehingga tampil gambar di bawah ini. Pilih direktori instalasi Anda, lalu klik Next hingga mencapai Finish.
'(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
r
Bab 2: Pemrograman Robot Dasar
fsh::@',:Ee+ I Fsi*: I!to& 568'Si ::tW*d$.R ,!SF.;:ti:it 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>
'l
|l
mid DEin{rcid) \
DDRS=zsS;
lprq,$e tJzea
p0!.18=255; ,'r'geuua
p*tt
//IDgiks I sehingqs
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
.r
ill
-.::;'
:- : :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
:i,11:ii*,
;
:::: il
:]i
::" 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:
,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
10=0'A;UOd
E6ou aTTl:
^eTap
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
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
i*::i*---:;=**5
lil*" g."fl.
Gambar 6.
Fr
2.8
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
c.qlrodlno
leng
'z
')d aI Jer.uruer6ord dsl dAV leqel ueDuep up>l nele 'rel s)rloqo5 lr/ypelus ue{ders .I
e{uqe16uel-qe{6up-l
'
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
,* 8
ry:*l$i,i
ii*,-;:**ffi
IsSgdf*i,l
i ar::. : :..... :;
::,,..
::,.::,,
UE
PORTB.0=0; //LED PBO menyala PORTB.l=1; // LED pB1 mari PORTB.2=0; //LED PB2 menyafa
PORTB.
// 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;
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.
1. 2.
/
/ 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
')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
)Q rolotu la{pd .
rosuas .
rolow
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
3.
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.
RobotAvoider.c:
/ // // // //
/
Percobaan baca data sensor jarak Sharp GP2DL2 Untuk Robot Avoider (Penghindar hafangan) SPC DC Motor di Port 8.0,8.1-, 8.2 dan B.3 Sensor ,farak Sharp GP2D12 di PorE A.0 Hak cipta Mr. widodo Budiharto 2010
#include <mega8535.h> #include <stdi,o.h> #include <de1ay.h> #def ine ADC_\,'REF_TYPE 0x6 0 flash unsigned char stringl[]={"data adc: td; "}; / / Baca 8 bit terpenting unsigned char read_adc(unsigned char adc_input) { ADMUX=AdC_iNPUI I (ADC-\REF-TYPE & OXff); of the ADC input voltage / / Delay needed for the stabilization
delay_us (10);
/
/ M'alai konversi
=ox1o;
ADCH;
ADC
return
)
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
r.letq. / Teurur-ral-rad
H
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
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 //
jadi
Latihan 1. 2.
Gambarkan arsitektur
8535.
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
'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
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
(oxH)-ood
(Hf,sf1sd
(osrFl] sEd (Eov'rfsEd
(!f,ovfrvd
(Ef,ov)-EVd
(
ss)-tsd (orryItrtvfeea
(EJ,NtioNtv] zEd
(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
qeJppe
uenlnqBpuod
Bab
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.
1.
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
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
ip^0'6
'EE flEol
Gambar berikut adalah tampilan editor dari Basic Atom 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
28
6Z
Luerdord ls!6uaw g' requreD
inqafl
'v
u
6
6ur11ag
5.
. ;.::i*
30
:lnlrJeq Jeqr.ue6 rpedas 'renses pJeoq eped rosues upp olJes ue6ueseued uelqse6
duescdnl
Uepns ZZ?
)alH
oaras qenq
nseH
0I' requeD
''.
rr:l1r;
a:.:a
i.:ii;;: iiAEr
:::i;Yii,
:i rir lillllrl
i, *i
(
j. i;1w-
_-.. ; ir#;i::i
;'#
*p:.
IIeI
1ede1e1
NF
k:,-r
i+3
Accelerorreter
Arelerom+ter
GP2D1 2 Sentor iPl !) Ldt Ankle Srvo rP4) Left Krr++ Sgvo ,Ftr
L+ft Hip
Biql-rt Ankie
32
iE
jl !l !l jl
1l
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
+----------
,I'
requeD
Bst
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
rhip var rknee var rankle Lhip var lknee var lankle
rhip
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
tshen
goto main
endi
if
endif f
if
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
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
dTr{f
-F
?asJJoesea-rcap
u:n1e-r
f Tpua [009t\0ST] /6 punos asle
S+41{ueT=eT>{ueT
E+aau{l=eau{r
uTeu 0106
f Tpua !
|
las]JoasEa-rcu-! qnso5
[00r?\09]'6 punos
hb
24),131
con
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
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
36
LE
'saTJelsqo
uaa/vr1eq
ur daaql
[(0T * r-I) \0OT] ,6 punos J TPUE en.rl = lcalep uaql (092 < fT) fT
f -Ipua
rrpea-r qnsoo
lEq / 9T
u-Jpe
fTpue
>l
uTeu
a^our qnsob
Ioorr\os]'6
0E asned
punos
(0T )p,ror :en dural a?.dq Je.^' relTTf al^q -re^ fnor^qaq
p-ro1vl.
-re^
1Eq
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
lruI
OAEgSHS'IAVNS
1
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
for xx=1 to
next
el-
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
;
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
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,
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
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
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
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
qnso6
) = paads
l'sodd1q13eT*1seT-soddTq?laIllse6uoTta6 qnso6
'sodaT)iue?q6r.r
?uauo^our
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
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
Bab
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
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
if
(NOT
last-lefthippos = lefthj,Ppos fast-leftkneepos = leftkneePos last-feftanklepos = leftanklepos last-righthippos = righthippos last-rj-ghtkneepos = rightkneepos last-rightanklepos = rightanklepos return
one var float
four var float five var float si.x var float getlongest Ione, two, three, four, five, six] if(one<O.0)then
endi endi
one=-1.0*one
40
LV
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
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
; 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 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
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
'salcPlsqo [(0I * rT)\00T],6 punos lTpue onrl = ?co?ap uaql (092 < fT) fT
f Tpua
a^ou qnso6
L=
pueuuroC
eT = pueuuoc
tT =
pueuuroJ
44gpea: qnso6
969 esned
xInIV)
uo (0t9 <
^wv)
{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 ^
goto main
move:
[ 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,
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
gosub movements [
'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,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
Rest Position
elseif(command =
endi
gosub movement [
return
;Should never need to edit anything below this line. Add user subroutines above this and below main.
44
9V
: :
aTpT
eslel:=paqsruTli
+ ( aa.r6ap.radsdal s + soda T)tuE1r{6Tf ) J,NIoJ, \ a TluP?r{6 T: l'peadsel JNfoJ\1.re?s-eT{uetlaT + (aar6apredsdals+sodaT{uell:aT-) J,NIOJ,\aT{uelfaT l'paedsl: J,Nrotr\lrP1s-eau{?q6T.r + (aarEap.redsdals+sodaauilqbt:1 J,NIOJ,\aau{1q6T.r | 'peads>tT J,NIO&\l-rets-aau{llaT + (aaf6ap-radsdafs+sodaau)iffaT-) II/NIoJ,\aeu{?]:aT | 'Paadsq: &NIOJ,\?rp1s-d1q1q6r: + (aa.r6apf,adsdals+soddTqlqoTr) J,NIOJ,\dTqlr{6T-z | 'paads{t
&NIOJ,\1.re1s-d-tq?laT + (aar5ap.radsdals+soddTqllaT-),tNIoJ,\dTr.I]leTl
o^rasq
,0. 0=paadspT
I
J
10. o=paadsq.r
0.0=paads{I
0'O=paadsqT._= 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
ueql (0'O<>paeds) f -r
Ipaeds
.11
?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
f f
if if
(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
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
one=three
f if (one<six) then
one=six
one=five
46
LV
punos
1005e\0El
0g esnPd
'5
Et asned
>
T ?nduT
0g asnEd
punos
toor?\o9l'6
0s esned
aTl1-lT,
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]
) urnla.r
e^xeu' ? sa6uo 1' sodpl o, sod/"reu ] paads la6 ?eoTJ -re^ Te^xeu
: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
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
6d
r^oT
f lpua
0=uu
6d
e
f rpua
= Jlnq) l-I
1{oT
uarll (dn
NOJ,&nA
= slnq-^a.zd) aNV
6d toT
f Ipua
l-F
dural'9T uTp
uTeu
uq
sCgT aT66rM,
u -
0 0 0 0 n
0=VpaT
do-No.L&na
NMOC_NOJ&OA
r uo, 0 uoJ
pf,o/vr
fe^
durel
Jlnq-Ae-rd
81nq-^a.zd
Vlnq-^a-rd
e1^q .re^ uu
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
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
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
m:
ffir
im
ir
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
Bab
I I
JPl
i 5-----.pe| .P+
5P I
I
rh----
CoNNECTOR
usoP RST@T*
NN
cT$
DR'
DS*
ocD*
Rt*
., T^.
LED I
I
.o
",
220
*l!
PJO
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
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
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
H*nd,$*nqo.,
$arur,F**itiolt
Senrs.Spe*d:
1 01 00
0'l 04 01
lll
07 00
t
11
FlecvDdar
pcger/o.pas:
uni-t Unitl; interface
uses
Windows, Messag.es, Sysutits, Variant.s, Classes, Graphics, Controfs, Forms, Dialogs, SEdCtrls, CPort, Comctrls, Vrspinner, VrControIs, Vrcauge,
VrSlider;
ComPorE.l: TcomPorti
Label2:
Tlabef;
60
T9
,pua
elp1\r.rd
j (1Je tqOJ, :.rapues ) aoupqolTpgpeads.radT-rg a-rnpaJo-rd j ( ?ca tqoJ : .rapuas abupqcl rpEpueHpaads e.rnpacord j (-re6afuI :i 'X jalelSllTqSJ ):1fTr.IS iuollngesnoNJ, :uot?nE l 1 ca !qO,! : .rapuas ) dna snowrolenl rv-rap r T S]A a-rnpa 3o,rd j (1ca[qoJ :"rapuas) a6uer{JlrpEpaods]olen1cv a-znpacojrd I ( lca [qO& : "rapuas ) alear3u.rod a"rnpaco.rd j (1ca tqofi :.rapues ) aoueqJl'Fpgpaedsoseg a.rnpaco-rd j (]e6aluI :l 'X jalelSlfTI{SJ :tlTqS j (lJatqoJ :-ropuas) {rrTJlcauuoJuolln8 a.rnpaso-rd i (3cetqoJ, :_repues) )tcrTD6uT31asuo11ng e-rnpeco-rd I oual^IJ : oIuaI^IAcaE JTaqe-I& :gZTaqerl
j
[qoJ
: EZTaqeT
:
11TpE,t : lrpgpeads
i
j
j
lTpS[
f,1TpE
Teqerlfi : TeTaqeT
1lTpEI : lapEpeadsdr-re)
i
1
i
I
11TpE,t : lrpgpueHpaads
j i
i
jTaqETJ
TaqelI
: :
Taqerl& :0TTaqET
TTTaqeT
jTaqelJ:61aqeT
ouaw& : oural^I1uas
.rTaqelJ :gTeqerl
riTpSJ :lrpEpaedSaseE
lTaqe.IJ : tTaqel
var
implemenLation
byte-count : word;
Chk,Cksum: byte;
TObject)
end;
if ComPortl.Connected then
begin
end
ComPortl . CIose;
else
begin
exit;
end; end;
Buttonconnect. . Captj-on:
if ComPortl.Connected
begin
end;
'Disconnect
'
E.hen
end;
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
rc+{qJ= : Ir{J
T0$=:No
r0=:IqJ
ip.Tott:
:
ur6aq
T
.l
pJolv\
.l6uTr1s : 11s
lunoc
qOJ
jpua
J(
?xa[' 1 Tpgpaeds]olen1cv
1uIoJ.r1S -
EE
Z= : V-SX
uT6aq
13e
tqoJ
.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=
:
S-S)I uT6eq
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
J ( T,d) .i ( T,T)
e1T.rM.
j:tqc_ggZ=:uns{c
I
a?Tfl,,t. T?rodtuoJ
I
8-SX+{qJ= : {r{c
sd+)iq3= : >tq3
NU:
PS : =VrS1
iderActuator . Position
1) ; 1) ; 1) ;
ComPortl.Write(L,1);
ComPortl-.Writse (P, 1)
ComPortl.Write
ComPortl-.Write
comPortl.write
' '
end;
+fntToHex ( PS , 2l + ' ' + IntToHex (KS_8, 2\ + " +IntToHex (cksum, ComPortl- . Readstr (str, count )
,.
'+Int.ToHex(header,2)+' '+fnEToHex(DI,2)+,
TObj
ect ) ;
);
);
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
/urns{J a1Tflvl. )
(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
90$=:ru{
.r
T0$= : d
jNG+{r{3=
I
00$=: rS
: {rIJ rI0S=:N(
IO+{qC= : }tr{J
,,*ET;]T:;;J:i
J
jITS=:ro
1ce
( (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
(
d+{qJ= : {qC
'
+IntToHex
P5
lntToHex(KS_GR.2) end;
,2)
"
+'' +IntToHex(cksum, 2) )
var
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+L;
p.=<n1.
NU:
=906;
PS : =VrSliderGri-p.
Position;
Cksum:=256-Chk;
ComPortl.Write (header, 1)
ComPortl-.Write (DI,
ComPortl.Write
(DN, 1)
1) ; ; 1) ;
L,1) ; (P,1) ;
.write
end;
+IntToHex (SI,
2)+
"
var
begin
PS KS
: :
byte; byte;
=Sl-E:;
;
Chk: =Chk+header
p1 ;=911;
Chk: =Chk+DI;
p53 =901-;
rr.
Chk: =Chk+DN,'
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
JoloJluoIorM^l
ueleun66uey11 loqog ue6uo'I IBJo66uod lsBMdV
i (exaq+ , : 1\ca-r
! (Z' (l.I1.rts)
p?Eo ,
e1^q)xaHo[luI+,, +exaq=:exaq
J
p,Tollr : T
J6ur-r1s: exeq,-r1s
,+ (
Z'rtl{) xaHo[1uf+
,+ ,+
,+(z/Io)xaHo,tluI+,
( (Z'urns)ic) xeHoJlul+,, + (Z,e-SX) xaHo[1uI + , , + ( z 'sd ) xeHo&lul+ (z/d)xaHo[,lul+,, + (z'T)xaHo[?uI+,, + (z'NS)xaHoJ,?uI+ ,,+ (z'IS)xaHoJ,luI+,,+(z'Nc)xaHo[1ul+,
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
d+{t{J= : {r{J
Z= : SX
: Sd
:
,l
lulo&:1s=
I
nN
JT+{qJ=:{qJ r?og=:r
I
T0$=: d
NS+){I{J= : {qC
. LU>-.t\>
Bab
Untuk operasi secara manual, Anda dapat menambahkan tombol, keypad, keyboard, atau remote control pada mikrokontroler untuk
menggerakkan sumbu-sumbu lengannya.
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.
68
I
tga;
lF
69
TlaU
610
Tfex
610
d*!t
610
EgSJ
sus--zalunoJ
Tso
T T T T T
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
sq sG sG sO sO sq
ssa-rppveJr^ac 6ro
loqou-rouoN
x&s
TSEVIUYA-'IETIVIEVA
H0t
TO
I{AT
noE
oos
EOONS
up/,\TeN
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
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
;
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
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
Centre
TabeIBase2
DB
01,01, 1 0, 80h
70
S&+
r
LL
E,IdCI
CI]I
cur
fTJ
l1or{
qqns
/IoI{
AoI.I JAoW
/\o'{
cur
/!oH TTesT
!
! !
0u v,oua
./\oN cAoI^I
AoIitr
o^fas
uelell){a>t
lasj ^eTep
u,Ldcl+va'v 00*'v
U,lcl0 3uI cuI 0t{ V,oEA AoI^I EIdO+VA'\1 cAoI^I OO#,Y 1\ON
cur
AoIitr
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.
'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,
q08'90 'n0'r0
Mov A, #00 Movc A, GA+DPTR Mov @R0,A Inc R0 Inc DPTR Lca11 KirimPaket
Ret
Set
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
DPTR
A, #00 A, GA+DPTR
@R0,A
R0 DPTR
A, +00 A, GA+DPTR
;Sets
;
eRo,A
R0
DPTR
Push Push
DPH
DPL
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
TargetNum,A
DPTR
DeviceAddress,#NomorRoboE
R0,
#Buffer
nomor robot. = 01
GRO, #04 R0
@R0,+PerintahKontrolMotor
R0
(ACK
DSR-08)
72
CL
ad &ac-rnos 'V
AoInI
?-re1s I
:1e)iedTerw
3eE
ssa-rppvacT^ao
cIaJr^aG+ 'v
sJlnoTerJes
-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
-ralseI^Ila{PdTe1vlv TIEc.I
e1PGla{edurr.rTN 1au
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
Lca11 SerialoutCS Mov A, SourceN\rm Lca11 SerialOutCS Mov A, #DeviceID Lca11 SerialoutCS Mov Lca1l
Ret
A,
DeviceAddress SerialOutCS
SaveBuffer:
@R0,
RO
A,ChecksumData ChecksumData,A
;Tambah check
;
su.m
SerialOutCS:
rnit_Serial: MOV MOV ; Mov An1 Orl Mov MOV Setb MOV
RET
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
RI , TunggrLrTerima A, SBUF
Rr
:
KirimPesan_Serial
KirimTerus:
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
nualaxqElur-rad
cuI
qqns
fTJ
c^ohl
,\oN
r{e1ur-redr.reJdooT
:
SIqelUr-radr-reJ
COW.I
OlIJ
:
rTJ
surE-qepns
dur 3q.C
:
dod
Surg-n66unJ,
['I
Sug-n66unJ
ouJ qlas
gu:E-de1a6
)tIlapT-n66unJ'SurE-.ra1unoC z-ule
5urE-.de1ag
:
?ell
TTecT
{T1epT-n66unJ,
Latihan
1.
Sebutkan tiga contoh aplikasi lengan robqt otomatis pada kebutuhan industri.
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
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
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
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.
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
iurur*el rruu
iHCIl.*3n**iqruH
3{IftHIVf;
d HId
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
[--
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.
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
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
+xn:s
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.
Tabel
I Protokol Permintaan
)eskripsi \wal Paket
D D-Sonar
Bvte
00
01
Nilai
,IE
02 00
02 03 o4 05 06 07
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
xe.refelurr\luesad#/uldo
L-r--J +i-f
oo
Aor{ TleJl
6:0
sooS'
! !
I I I
v
za
n03
f,euosccl
use'reuosc
0l,
unspoqc
rJBp 0
oc8
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\
3t
!Bt!h
ol^E
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
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,
BukanI D:
;Apakah = 00 / ID Master
;
BukanDSonar:
Serial_In Serial_In
B,A
R0,
#BufferDSonar
LoopAmbilData:
Serial_In
AP n
R0 B, LoopAmbilData SeriaI_In
:
sanMintaJarak
DB
LE,ln,02,01,00,01,02,ODBh
SCON, #52H TMOD,+2OH THl, #0EDH
-Lnrt Serra-L:
TR1
PCON,
#OH
Ser.ia.I_Out:
TI
SBUF,A
TungguKi rim:
TI, TungguKirim
SeriaI_In: Cfr
TungguTerima:
RI
Jnb Mov
Ret
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
TeT.ros uEsadulr-lTx
EJ,dC
dr[v
cur
I IECV
:
1ng 1et:e5
sn-zaJuT.TTx
lou
H.{ 0
#,V
eu
IJ
Erdc+v0'v
cAor{
fs
1, &u-"
.1,..,
v, ,t
,i
I 4 -L
",,
"i"
_.
)
r
a7o
t,,
LEo
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
lortuoy ue16eg
bO
L-H
grd
I Id t td -td
z'H
Itd
0 Id
[Nt
otNt
r1
r3s3u
90d e0d
90d
t0d
d
Ix
dE
:: 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.
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
sesord seslerp
'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
uplef
'9
vcc
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
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
9l
'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
9VH'
90
LO
y3v opoy
elep )aleo DuBrued uals^sqns lnJn oN
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
'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
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)
Modul ini memiliki 2400 blok memori sehingga untuk versi 16 menit
setiap blok memori akan menyimpan suara dengan durasi:
durasibloh
16x6o
2400
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
'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
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
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
TeT-raselecTrqurv' TTeJI
eleolaledurr"rrx TTecT q00# / E+.ral:l:ng 1\or.{ 00# ' z+-raJ:J:ng AoI{ ?0+ 'T+jraflng ^oN ,^'ow t0#'"reJJn8 T0#'urnN?a6re& AoI^I
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
#Buffer
GRO,A
LoopDat.aIn:
KirimPaketData:
LcaII
AwalPaketMaster
R0,
#Buffer
A,
@R0
R7,A
SerialOutCS
R0,
Mov
#Buffer+1
A,
R0
@R0
SerialOutCS
A,ChecksumDat.a
Serial_Out
Awal PaketMas
ter
A, #STx
Serial-Out
SerialOutCS
ChecksumData,A
A, TargeLTl4)e
Mov LcaIl
A, #00
SerialOutCS
A, #01
SerialOuECS
96
L6
OOW.I
NOD.I OH'I
OT,T
:
surE-n66unJ,
d*Fv
:5urg-n66un,1
qlas
Aor{
Ao]/{
.\o}{
{T1apT-n56unJ,'Sug-"ralunoJ z-ule
Sug- eTaq TIeoV
:111ap1-n66ung,
^o,tr :1r1ep1-de1a6
0020#'surg-relunoc
leE
sclnoTeT"ras
I-U
dNSS,V
:
f TJ
1ION
1au
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
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.
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
9I'g requeD
8t_vos0sdor
:eceds 6ueqn1 6
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
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.
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
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
gl'g reqlueD
(--------------i
......----.....?
T
r
$
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.
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
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}
'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
J+U*4U413
{*tr*n
ba.r
g-*1gua.*n
I
I
l+
i+-
trl
tlt-l
'rsuan{e{ uerBsaq rpefuau Lleqnlp eporpoloqd qolo eurJe}rp 6uer{ snre qeual 1en1 '(;apaauo) frcuanbat! oJ JuaJJn)) rsuanler; a1 srue qeqn6uad uer6eq rnlelaw'sruB r.{Br.uel }en{ rpefuau rpefueu qpqnp erurJalrp 6uer{ r{pJe{.ue{ur efeqec r.{Burel }pny
'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
Keluaran frekuensi dapat diatur skalanya melalui S0 dan S1, seperti pada Tabel 6. Untuk skala frekuensi rendah digunakan pada mikrokontroler yang mempunyai kecepatan rendah.
SI
0
0
0
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
'g*txq e"Sxt*lp*$$e{*
{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
rellqlued
I 0 I
I I
0 0
ZS
ts
relllf, uurnlu8ua;
4 1aqu1
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
yang
ffi
, *stxir:n t
dr+tik tarrja&i
T.*?***k
ilJ-erL
trlt[
Hffi
l*tffi
6x*inxnhamg
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
,td
0td
Z'Ld
I I
L 9
EE'
ttd
0rd
il_
0J_
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
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
P1.1 P1.0
TO
rL
INT1
P1.6
Code
Org
Retr
013h
Ol-Bh
023h
Reta
51 S0 LED EA
Ukur-Merah
;Set frekuensi
i
10KHz
Ukur_Hijau
Ukur-Biru
Dosomething-WithData
Start
DoSomething_Wi thData
;Proses pengolahan data tergantung jenis aplikasi ;let.akkan kode programnya disini
;
------
Ret
Ukur_Merah:
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
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
uBnlnqepuad
-----_--__-_-______--------l
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
fi
::r
!u-
,.t y-"
B
*;
t
i-.t "'Q-
.,,
'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
Kondisi logika rendah dalam durasi pendek dan logika tinggi dalam durasi panjang akan mewakili data biner 1.
}{ { 01il1
ts{ }{
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
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
+IOA
-EoJd
260# t60#
+doJd
0 6
8
3C0#
lceles
+
,80#
deels
OEPIA/AJ 980# 980#
9
s
sv0#
B/V
opohtr
,80# t80#
280# r80#
080#
v
c
Z
JId
JOA
(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
DST-51
P1,3
REMOTE TV
Gambar 6.6 Diagram Blok Aplikasi Penampil Data RemoteTV pada LCD
Modul DST-51. Sistem minimum AT89S51 akan digunakan sebagai sistem minimum mikrokontroler, mengingat pada modul ini sudah
tersedia port LCD sebagai media penampil data.
l-{11}
t'o{rrssr
1
Iqesd ln
Slsl$n
${ttttr
rre*rsrtdi.r
ilrl
l\*lB/Prrl l
lleil(ler &2
fr*:i
1,P,1)
I'6n fi I l'qrl r\
il
tlorr
tryori L l.ll,
l.r. n
lfi&l] Ft)ttt
, - 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
116
LLT
ppv
AoI^I
/\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
TIE3T
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
:
alourallT rqurv
.ZAluT,T,A TUT
t+s 'HdL+'v
dooT
TTEsV
T
ocl-1Tur
9Z
TEC'I
:1-re1s
nos
PfecSue Iued
TlaE
f o13an
T ?dn.r-raluJ Teu.ralxE i
6:0
aex 610
HEo+WOu
E
TSAE
folcaA
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
Ret AmbilRemote:
AcaIl Mov
CekStartBit
R7, +8
AmbilDat.a:
;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
.3,$
t
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
QCrI-uI-rrx
Hdo I
TcSnV
oCT-uesadur-rTXdoo.I : oSrI-uESadu.t:T)I
1aE
_::::t_:l-t::t::_r::::
laE CJT-IeTaC ITerv r{e1ur-rad-ulr-rrx TTPcv 1!OI{ HOT+,V
qelurfad-urfrx
GDT-^eTaG
TP3\,
l\Oi,tr
TTECV
:
HZ0#,v
Te1"le
TEIYry-rSTsod
TTeJv
/loInl
t:ty-z(e1ds1o-rasae) jrasagi
^eTdsTO-----1au
TTE3V
!
-IrT)i a{
TTecv
1\oW
ueuey-.{eldsTOrasae
___________
!
* I'Zd
6:0
EOOJ'
1TS
SU
lau
*********
IniI_LCD:
SUBRoUTINE
RS
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,
; ; ;
A,
;Display
; ;
ON
Kirim_Perintah:
P2.L Clr Acal1 Kirim-DataLCD Swap A Acall Kirim-DaEaLCD Acall Delay-LCD Ret
;4 bit sebanyak 2 x
;
Kirim_DataLCD
Po,A PulseE_Cfock
PulseE_Clock:
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
zula
:
leu
,E + Hddo+'a
Aow
zoJT-IeTao
dooT-OJT-IeTaO
:
cJT-IeTac
.^oli qJrI-T
r-reE
oJT-ZSr-rpg
qJT
^eTeci!
1au TTerV
rresv
xz cJT a)i j
dEiS IIPDV
qlas
f,
1IP"TEII-lll'F
T)
1au
doN V vcd
doa
.{Or{
H,{0+'v
ruv
;8e
;8f
. oe
i99 ;9a
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
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.
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
edp3l,\,oll)lcv
)cv
).IJ IJV J]A
CNC
6
8
w>lilmqnq !p {?plJ
{COIJ
t/N
prmorl)
r.raldr.mqnqrp
I
v
c Z
{8prJ
EN(T
J/N
GI^IJ
pusruruo3
uebrrBJele)
VJVC
BIUBN
uld
4tt1sfro7u14
pendyluoy
pqet
ATT
rltr(
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
-..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
'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
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
Header
1E
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
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)
/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
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
9 e]^g
elpp uprenley
konfigurasi yang dapat dilihat pada Cambar 6.77. Data-data akan tersimpan pada Buffer TRW24 dan Anda dapat menggunakan data-data tersebut untuk aplikasi robotik sesuai kebutuhan.
D-
joy.
asm:
$MODs l-
;DEKLARASI
I/O SESUAI DELTA ROBO P2.1 BIT P2.6 BTT P2.4 BIT P2.O BIT P2.2 BIT P2.3 BIT P2.1. BIT P2.5 BIT
CPU PORT
. DSEG
PanjangData
Org
00
InitRecTRW24
CS
CE
DR1 , $
LoopTerimaData Loop
;KUMPULAN SUBROUTINE
.************************************************************'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
v'oua $'tuo
1\ol{
aNr
SJES
g.IES
U'IJ
AoI^I
notr^I
:
\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
AOhI
,zMEJpuesdoo.l
TerimaData:
B, +8
A, +OH
CLK1 DATA CLK1
TERIMASX:
Nop Nop
SUBROUTINE UNTUK
INISIALISASI Dx-24 /
TRW-24
IniLSENDTRW24:
AcaIl
IniL_TRW24
IniI-TRW24 Ambil_Tabel
Kirim_Printah
INIT_TRW24:
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
; ;
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
,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
8TTTTOTTO
aTT0000T0
AO
a f,uc
9T = I{16uaT
lTq 9T i ECov j
:,IINI_'ISSVJ
EO
u,tdo+vo'v
.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[
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
B{tl{rt Cotrodor
DELTA ROBO KITS DELTA ELECTRON]C
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
ueIuEIer
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
'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
'Dd)
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.
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
ilti*tlf
Il7
r*'
;il;
:r!i,s..tl{r*,iEft
itr
ir
:i:J
t:t
r::
::
!l
ail
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
'dSI IIuIel ueleun66ueu 6ue,{ 1aur1y Jalor}uo{orrrru tup)pur re6eqreq e>1 urer6ord peoluanop-ueu qeyepe 0.ZA dSI-Dq
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
*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
rurcq"iryft
'
i:i,ldft.El Fq]@kd&dl&gdsdiv
i;
-
,^.91*:.9.:l1,1.i
iiF;;a---**"*--- -**:1
i
I
i i
138
6r
'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
a{
'1eDre1 Jalorluolorlrur uerDord uelsrlnueu up{e dSI-DC upp r-uer6or4 IIIy 'ue:6ord uer6eq eped xaq elrJ peol uep uet6ord qeJ_ qllld
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
PflsmmiFg
sx
rr"o
5ooffi:
-:J
,,
-r
ii
'
PEsIEm
FE
B(sl
L**,8ile
:I LKSLLU=U
l
:
lll crsrrr=o
CK5EL]=O
4:
..1. I r:
lKsEL2=o lf: iT
: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
Klik OK dan klik Project - Make sehingga Proses comPile dijalankan dan selanjutnya Code Vision akan menanyakan aPakah Proses programming dilakukan.
140
f
LVL
'UBInIPIIP
qepnur L{rqal uBIB onres Jo}oul llepue6uad sesoJd elpur 're11or1uot oNas plnurJelue ue>1eun66uau: uB6uap'uet>lturaP unuIBN'p{nlrrJe}ue Dlrlttueru qepns 6uBr{ omes Jo}our llen)e{ 'lolotu sas>le6ueur 6uns6uel '1nqasre1 Jo}otu-Joloru uB>lllepua6uetu tuelpq
{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
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
!rus lorydE@H:
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
I
I
ruor
apouad
i<-
raaltQ
)o
'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{
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
n"
ir
L
llr
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
Keterangan
00
ccw01 cw
146
7
LVI
-{-{ - 00
I ro]ow uplpde)3y
LO
!e[N
eilg
Joloru uPlPdaDe{ oJut
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
(rellorluo)or)lw)d)
cl
uorlBurlsec
rappaH
IO
Et
IEIIN
00 er/(g
IEI!N
eilg
les qeluuad
LO
uoHlsod ar,uoH
00r-00
ueEueralay
!EI!N
ueledaray
eilg
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]
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
'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
memberikan informasi tersebut. Untuk menghitung jumlah lubang encoder ini dapat digunakan rangkaian DEC-01 seperti pada Qambar
6.35.
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(
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
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
maka DSR-08 akan memerintahkan servo secara otomatis bergerak ke arah sebaliknya sehingga sensor tidak lagi aktif.
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.
,9t
xx-00
-cJ- t0 !PI!N
BO
LO
eug
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
9Z-tO J.i- r0
(I0)
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-
t0
00
Jeqr.unN e)Jnos
cl e)Inos
JequnN uorleurlseq
90 90 v0 0
ZO
-{-{-
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
Bvte
07
Nomor Motor
Perintah Stop Servo (O6) Nilai Keteranqan O1-FF Nomor urut motor
Bvte 00
01
02 03 04 05 06 07+n
00
O1-FF
11
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{
'{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
tq
Zq
'0q
,q
9q
9q
Lq
L9t
]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
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
uEnlnqepuod
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
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
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
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:
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
,
CONTROL
DELTA ROBO CPU
Gambar 7.4 Modul DSR-08 memberi informasi siap pada Delta Robo CPA
160
r
t9t
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
vtulfs
uo_Lot"i
toul.NoS
onuls
I,
.,',,*".J J (r
:.- i1:
onufs v-Ltfo
.,n
lil mftJ:1
rL
.l
t-.]h"'
4-t -r:
onufs uolohl
3 alauT
-'-l
UJ
4 atau 8
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
I
?
0
L
t
t t
t
I sDnu
z
sonu
t t
or+s)l rsbunJ
uolruorele)
DqDl-DqDI
lIox
rouroN
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
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.
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
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
deqel eped
r1ema1ra1
ledep
diangkat
Kaki
Kaki 3
(aki5 dan5
Kaki
terangkat ---.-_
Kaki
1
Kaki2
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
!)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
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
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
I
?
e
t
ulo;
r>1o;
L sonu
nlour
IZ-91 9r.-0r
(ders) o^res tnPns Dtoo
sonu
orps13 rs6unS
/U\) qOIV
uo6uorelay
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
15-24
10-16
Koki terongkot
9
11
12
Ruos
t5-24
r0- t6
15 -24
r3
Fungsi Ekstro
Ruos 2
t5
16 17 19
20
21
r0-16 15-24
23
t0-16
15-24
24
Ruos I
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.{ 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
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.
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
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
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
rc'l requeD
---'f-
unJnltuPpzuPy
nrvv\l NVNV)
NVGVEL--
1,
unJnl
nlVhl lul)1
NVOV_-- - - ;>
IU|OUSA IOAOU
__
>,
z sEnJ-enl uElsnJn"l
Spider.asm:
$MOD5 1 ; PROGRAM SMOD5 1
DeviceID
STX
PerintahKontro
vrv
;
or EQU
00h
NomorRobot
2nu VARIABEL_VARIABEI,
Ds Ds Ds
DS
EQU EQU
01 1Eh
03
;Nomor
urut Robot
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
25
Ds Ds
00
Start
03h
OBh
13h
23t,
P0, #00
PCON,
lnit-Serial
#80h
TH1, #OFFh Wakeup
bPs
LCat
LCA.t
-t
;Robot berdiri
I
1
Delay_5 0 oms
KakilLanqkah.I4a
Lcafl
LC Loop:
LCA-L1
1-L
ju
Lcal
Ljmp
GERAKAN-GERAKAN ROBOT
MajuModel:
176
7
LLI
suro0T-^ETao ITec.I
TTer"I
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{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
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
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
L L9V
dnaltEM
-rnpunl^Iueuexuepeg TTeoT
l all
.rnpunwTfTxuepe8 TTec.I
:
TTec.I
Tapohl-rnpunli 1au
1e{6!rvr.rrxuepeg
TTecT
DPTR,
SetPosisiservo SetPosisiservo
#Kaki3Mundur
;angkaL kaki
Delay-5OmS
Delay-5Oms
Delay-SOmS
;maju kaki
; ;
Set.PosisiServo SetPosisiservo
Delay-10OmS
Kaki 4 Langkah.I'{undur
DPTR,
+Kaki4Mundur
Delay-5OmS
Delay-5Oms
;turun ruas
;Eurun kaki
Delay-10OmS
Kaki5LangkahMundur:
DPTR,
setPosisiservo
#KakisMundur
Delay-5OmS
Delay-5oms
Delay-5OmS
;turun kaki
Kaki6langkahMundur:
DPTR,
SetPosisiservo
#Kaki6Mundur
Delay-5OmS
Delay-5oms
;turun ruas
,'Eurun kaki
DeIay-5oms
Delay-10OmS
KakillangkahMaj u:
DPTR,
SetPosisiservo SetPosisiservo
#KakilMaju
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
o^"ras-!s'FSodles TIP3T
sur0E-.{eTeO
ITe3l
TTET.I
ntehJqelSue.Ig r)iex
l all
-J{e}{ un.rnl
o^-resrsrsodlas TlecT
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
o^-resrsrsod?as TIesT
o^.rasTsTsodtas o.1\Jasrsrsodlas ITec.I
SUIOE-^PTeO TTE3.I
:
r>te{ n[eul
1e}t6ue i
surog-IeTac ITec.I
TTecT
nIe]^Iqe{6uE1?r>[x
l all
.l
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
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
1aE
turun kaki
Kaki6Langkahlurus
DPTR,
#Kaki6lurus
Delay_5omS Defay-5Oms
Delay_5OmS
Set.PosisiServo
;turun kaki
Delay-10OmS
Kaki 5Langkahlurus
DPTR,
+Kaki5lurus
Delay-5OmS
Delay-50mS
Delay-10OmS
Kaki4Langkahlurus
DPTR,
SetPosisiservo
#Kaki4lurus
Delay-5OmS
Delay-5Oms
Delay-5OmS
turun ruas
Delay-l0OmS
:
;Eurun kaki
Kaki3Langkahlurus
DPTR,
Delay-soms
#Kaki3lurus
SetsPosisiservo
Delay-5Oms
Delay-5OmS
;turun ruas
;
turun kaki
Delay-l0OmS
:
Kaki2Langkahlurus
DPTR,
SetPosisiservo
DeIay-5OmS
#Kaki2lurus
Delay-5Oms
SetPosisiServo SeLPosisiservo
;turun ruas
180
18I
HdC
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{ nleui
1e>t6ue j
o^-resrsrsodlas
suroE-.4eTac TTec.I
TTecT
o^.:rasTSTSod?as TTecT
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
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?
Lcal I
LJCal- -t
DPTR,
#TabelAngkatRuas3
Set.PosisiServo Set.PosisiServo
setPosisiServo setPosisiServo
SetPosisiServo SetPosisiServo
;angkat ruas
Lca11
LcaIl
Lca11
Lcal1
Ret
ceserlurus 6Kaki
DPTR,
SetPosisiservo
SetPosisiServo SetPosisiServo SetPosisiServo SetPosisiServo SetPosisiServo
#TabelLurus6Kaki
i
lurus
DPH
DPL
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:
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
00#'v
E.Idg
OE
cur cur
.{\oI^I
V,
O1IO
E,tdo+vo'v
Cl\OI^I
.1\oI^I
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
I'otrI
u,tdo
cur
AOr.I C/\OI^I
!
!
v'urnN1a6-reJ,
00+'v
r{TT#
AOI{
0E-lrso)
-raTTo-rluoJ o^.ras
?a6-rEJ, I
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
HdC
rIE3T
1\ON
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
i
;
Push Push
DPL
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,
#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
f,npun {TfTxuepeg
1au
V
'eleoumsltoer{J
.^or{
ppv
T
TEC'I
sJlnoTT_ras
/1'oI^I
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
TTesT
1\oW
'v
ad J,1a6-reJ'v
sJ?noTeT:as
-re?sEN1a{edTer
Mov
DPTR,
+TabelBdnKiriMaju
BadanMaju:
Lca11 LcaIf Lcal1 Lcall Lca11 Lcafl Lca11 Lca1l Lca11 Lca11 Lca11 Lca1l Lca11 Lca11 Lca11
Ret
SetPosisiServo SetPosisiServo
Set.PosisiServo
Delay-10OmS
setPosisiServo
SetPosisiServo SetPosisiServo
Delay-10OmS
PutarKiri-:
Mov
DPTR,
Lca11
Lcall
Lca11
#TabelPutarKiri
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-
Ret
PutarKanan:
Mov
DPTR,
#TabelPutarKanan
LcaIl Lcal1
Lca11
setPosisiServo setPosisiServo
SetPosisiServo SetPosisiServo SetPosisiServo
Delay_10
OmS
Lcaf1
Lca11 Lca11
Lcal 1 Lca1l
l,cal
I
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
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
e
T
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
ac Iel^Jueue)upgIeqeJ
ao ao
so so so
SC
Eo
ao
sc
ao ao
T]IEX I
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
suro0T-.{EToc TTec.I
Sur00T-1{eTaO TTer.I
DB DB DB
01-,04,1-5,80h
02 ,04
,15, 8 0h
02,01,13,80h
TabelPutarKiri:
DB DB DB DB DB DB
02,03,13,80h
2 furus
0L,04,18,80h
02 ,04 ,17 ,
8
0h
;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
02,04,15,80h
TabelPutarKanan:
02,07,13,80h 03,01,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
n[er[TT{pX
un.rnl T sEnuj
lP){ouPrp T senEi
EICI
sq
scr
snJnTgT{eN
ao
un.rnl T
sEnUJ
EIG
dPTs e sPnui
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
r{08'02'80'20
:
go sn-rnT7T{ex
Ecr
unf,nl T senEt
leIEuETp T senuJ
so
sn.rnTtr{ex
ECI
EG EG
un-rn? T senu j
ac
gcr
?e}{6uerp T spnEj
sun.IZT)iex
so
aq
Eq
so
EA
: SNf,NTTTXE)I
EIG
ao
EIq
aq
ECr
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
r{08 'TT
so
AO
'1r '10' z0
:
T-rrX6uo"raSTaqeJ
Eo
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
Kaki 3Maj u :
1 diangkat
02,04,15,80h 02,08,20,80h
Kaki4Maju:
DB DB DB DB
02,08,15,80h
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
Kaki6Maju:
DB DB DB DB
KakilMundur:
DB DB DB DB
01-,04,20,80h
01, 03, 1l_, 80h 0L,02 ,15, 80h 0L,04,15, 80h
I diangkat
mundur
3 siap 1 turun
Kaki2Mundur:
DB DB DB DB
Kaki3Mundur:
DB DB DB DB
Kaki4Mundur:
DB DB DB DB
02,06,14,80h 02,08,15,80h
03
Ruas l- turun
KakiSMundur:
DB DB DB DB
,04,20,
80h
03,02,14,80h
03,04,1-5,80h
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,
'?0'e0
:
EO SG
un.rnJ,ET)iex
AC
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
I{08 , ZT ,90
sq
ao
Eq
AG
:
-rnpunl^I9T{e}I
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
;
i
51600
Serial-Out.:
C1r Mov
TI
SBUF,A 0A6H, #lEH 0A6H, +0E1H
'lungguK1r rm :
TI , TungguKirim
TI
Serial_In: Clr
TungrguTerima:
RI
0A6H, #lEH 0A6H, #081H
RI, TungguTerima
A, SBUF
RI
:
KirimPesan-SeriaI
KirimTerus:
SUBROUTINE DELAY
#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
Delay-5mS
0A6h, #1Eh 0A6h, #0E1h
792
it
7
e6r
'Jnpun(U
'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
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
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
'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
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.
e-
\P169"** FilesropenCv\lib"
*r*:.:iini
lhrn
direclories for:
Text
[h*\,ril",
l$(vLlosldlDir)lib
yjafE,rjtl -
";
j'-it,o'::,:. uertsuttS 1
!i
VL++
.{ l.b:sslns Errr,:*;;ffi;b,;"-.;J{'\hb-
^':"l:
BUIId
ffiM
:
r
',
LrarfreHorE5UKU[]lfi
+
Xl'lL
!c++
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
Sebagai contoh, buatlah program Win32 console application untuk menampilkan sebuah gambar di Windows.
196
L6l
alnc
aieut uertndueuatu
uteJfioJd
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
j (0)^aylreM c
*a6eur11d1
)
1u-J ) uTPllr
I ( sz I So&ov-MocNIM-AJ
",
1ur
rq'oruocr
apnTJuT#
Elruo"rl{aIa-o{o1'/v\.lwh
lnurr
uloc'
loqo-r-o}tol'/vta.ryI // / /
/
sddc'ouec
#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 :
198
I
[_
66I
i
J
0 u-rnla-r
r /-r-rap1s)Jlur-rdl
{ )
_ uJnle-r
)
j(
o,
. -"i:y;J;rn ?;;d''^lli" ),
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
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.
200
r
TOZ
j (T-)
I
lrxi
(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
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
. .
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,
wajah
terkecil.
5.
"Haar Window",
CV-WINDOW_AUTOSIZE)
dengan
DetectFace.cpp:
/ / Hak Cipta cognotics. #include "stdafx.h" #incfude <stdio.h> #include'cv.h' #include "highgui.h"
com
#define
/
//
********************************************
**************+
"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);
// initializations
CV_LOAD_IMAGE_COLOR)
0;
202
I
I
l.'
f
,oz
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
jr fuT
)
MOCNIM-I\V'IdSIG
+ -req3 lsuoJ
I0
I ( apEcseJds
)
u-rn?a-r
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
,,
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 ) )
Tracking Wajah
OpenCV face tracker menggunakan algoritma CamShift. Camfsit terdiri dari beberapa langkah :
1.
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).
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-
?brr^ +-rEr{c
I ( )eure-rdoapr^a]nlde3
pro^
I O TTVITUr tu-F
,,
,,
i 3' lapaJe] ,, apnlsur# !q'lapacE]! apnTcur# ,, ) 'a.rnlde),, epnTJuT+ q ' a-rnldec ,, apnl sur # <i{'orpls> apnT)ur+ ,, apnT cur #
q ' Tn6r{6rr{
,,q'..Ic,, apnTcur#
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
i
/
// Tampilkan image ( DISPLAY-WINDOW, pVideoFrameCopy if ( (char)27==cvWaitKey(1) ) exitProqram(0) ; / exit Ioop when a face is detected if (pFaceRect) break;
);
/ init.ialize
t.racking
CvBox2D faceBox;
/
CvPoint facePoint;
capturevideoFrame
/
/ 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);
)
(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 ( ) ;
return L;
206
&
I
LOZ
'.-
- -ro< -^doCeure-rdoep
rAd
palra^uT sr
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
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
haartraining.exe
-data data/cascade -vec data/vector.vec 'bg 2 -mem 1000 'mode ALL '
208
L*
&
r
602
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
uenlnqBpuad
o . . o o . .
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
penulis) 272
r
.tz
sEag
*----------*
jtaIPtsds
Z'6,
requeD
eAeperle3
r*.rs'E [,u tr
I -,.,
---------------r'
G&
Soqo;
uetual
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.
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
{
) {
j ( )u.rPeT
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
sfolJa^ua6re
aOEurT a6E-ra..\e aq1
senTe^ua6Te
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
1el^Jq1n-r[urnt[uosJad
lur
rjrvburlace] ++ a6purITdl
saTqer-re^ leqoIlD ////
lefiuro
.,q'xne^cr
apnTcuT+
,,ri'1\3,, apnTcuT+
uoc . scTlouboJ eldrJ )teH // acedsua6Tg sTsPq:aq uoTlTu6oca-r ece.{ ourop ure,z6o.zd / /
!dda.ueETgeoBJ
projectedTrainFaceMat = cvcreateMat( nTrainFaces, nEigens, CV-32FC1 offset = projectedTrainFaceMat->step / s:'zeof (float); for(i=0; i<nTrainFaces; i++)
{
);
cvEigenDecomposite
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;
// //
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;
PCA subspace
);
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 ]
(++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
!\
E,],I1IM_EC\'dOJS_AJ,
elEq5ururef,fiaf,ofs
ProA
1T U-rnlaf
1 ( aFe-rolSaT-Il! ) e6prolsaT-iJaseaTau^) a3eJ.ralur abef,ols-alrJ aq1 eseaTe-r / /
I [002]eulPu-re^ f,eq,
j ( (+ e6eurlTdI)Joazrs+saceJure-rJu)coTTV^J(+x
a6EurfIdI) = f,'rvlce^ua6ra
r (o
(+ 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) / /
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;
float d-i
il;
)
// Euclidean
return iNearesE,'
)
void
t
doPCAo
nEigens = nTrainFaces-1;
/ alTocaLe the eigenvector images facelmgsize.width = facelmgArr[0] ->width; facelmgsize.height = facermgArr[0] ->heighE; eigenvectArr = (IplImage**) cvAlloc (sizeof (IplImage*) * nEigens) ; for(i=0; i<nEigens; i++) eig:envecEArrlil = cvcreatselmage(facermqsize, IPL-DEPTH-32F,
/ / al.Locale the eigenvalue array eigenvalMat = cvcreaEeMat.( l-, nEigens, CV-32FC1 );
1)
278
6IZ
,,
u\<pueuuoc> ace]uaora
)aoesnruT.zd pTol
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',,
= [aredT]-uv6urJare]
aTTdlsT.ISurr
Juecsl:
u-rn1a-r
)
((,,-r,, 'oueuaTTl:)uedol =
t0=aTrdlsTTEurT*ETIJ
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
t.rain\n Lest\n"
)
"
);
Siapkan basis data file gambar berekstension .pgm dengan aneka posisi wajah. Berikan data percobaan untuk training.txt, misalnya:
Gambar
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
"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
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
Untuk mengoptimalkan pengenalan wajah, gunakan teknik penyimpanan 3 sampelwajah per orang.
Gambar
9.7
Berikut ini contoh user interface berbasis posisi wajah yang terdeteksi
C#
untuk mendeteksi
222
b'\-
I
i
ue)qafi
)d
"
-*lsJ:'E
rnt t: v =Yl ,\
i-:
.axwl#itt*ilsi$;Eis.*$.8
'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
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
elpew xelg
]asJJO
rpuy 'lseTuatualdul uep uoal'e4lloqog 'oPopl1\ 'ouPqlpng '8002 'opuqndtuoy 'opoPIA\ 'ouPI{IPng
0t
.I
uencv teueo
1
1
2. www.toko-elektronika.com
5. www.sourceforge.net/projects/OpenCV
20. www.maxim-ic.com
2
1
. www.beyondlogic.com
226
i
c)l
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
70 a)ron-q
fdvl)
reuos-c
lry repo)uE
xx-)3q
uotsren gsD EEES-J-s
IDtr
{eplerd 6ue$nued
Iy
reueQ
ue4dwel
mikrokontroler
Ivlodul antarmuka 4 Joystick Playstation
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
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
sllnue4 aue\ual