Diposkan oleh supri ono | 74 komentar

Wireless Joystik PS2 + ATMega 8 + Bascom AVR = LOVE IT…

Sesuai dengan judul kita kali ini, meka akan memberikan beberapa artikel tentang interfaceing wireless joystick PS2 dengan mikrokonroler. Perkembangan dunia robotic di tanah air dalam decade ini meningkat pesat, terlebih banyak diselengarakanya iven-iven perlombaan robotic baik yang robot berkaki maupun beroda dengan sistem  otomatis dan manual. Untuk sistem yang manual diperlukan sebuah consule remote untuk mengendalikan pergerakan robot yang dibuat, so ini yang sering menjadi masalah bagi para pengila robot baik itu dari akademis ( mahasiswa) maupun bagi penghoby robotic. Pengunaan Wireless Joystik PS2 diharapkan dapat memberikan solusi bagi teman-teman kita semua, menginggat harga wireless joystick PS2 murah meriah Cuma RP.165.000,- saja. kalo masih kemahalan pake yang biasa saja harga Cuma Rp.80.000,- .
Sob mau beli Konsul joystip PS2 wireless dan biasa disini sob..
Oke kita langsung ke TKP. Ane angap soba udah punya joystick PS2 baik yang wireless maupun yang kabel. Biar ni artikel kagak membosenin ane kasi gambar aja deh.


Gimana sob udah ada gambaran kan artikel yang sob baca ini.
NEXT. Selajutnya kita masuk ke tahap berikutnya
Wireless joystick PS2 yang digunakan oleh ane buatan dari EXXEN dengan frekeunsi wireless 2.4 GHz teknologi. Untuk data pancar lumayan jauh sob…. Sekitar 18 meter masih oke… lihat gambar dibawah sob….

Sebelum masuk ke tahap interfacing, ane kanan jelaskan beberapa teori tentang PS2 Kontroler Protokol

1.  PIN KONFIGURASI dan comunication
Konfigurasi pin yang ane massud adalah wiring Conetor Joystik PS2, ini gambarnya sob

Wireless joystick PS2 mengunakan komunikasi SPI (Serial Pheripehal Interface) atau bias orang sebut sebagai 3 wire interface. 

2.   DATA PROTOKOL
Untuk berkomunikasi dengan kontroler pada joystick PS2 diperlukan beberapa proses pengiriman ID .
  •       Mikrokontroler mengirim data &H01 (start up)
  •       Setelah itu mikrokontroler mengirim data &H42 (read data)
  •       Kemudian disaat yang sama mikrokontroler akan menerima data tipe joystick yang digunakan.
                     &H41 = Konsul Digital
               &H73  = Konsul Analog
    •       Setelah itu mikrokontroler akan menerima data &H5
    •       Data byte pertama akan diterima kemudian byte kedua, setelah itu data analog 1 dan analog 2
    3.       FRAME DATA
    Pertarhatikan table dibawah …bro

    Sepintas sob sudah baca tentang perangkat joystick PS2, langkah selanjutnya kita buat rangkaiannya sob. Untuk rangkaian interface antara mikrokontroler dan joystick PS2 baik itu yang wireless maupun yang kabel sama saja. Ada beberapa referensi yang mengunakan resistor sebagai pengaman, akan tetapi ane rasa itu tidak perlu karena tegangan kerja dari kedua perangkat ini berlevelkan sama yaitu 5volt. So ketika sobat mendapatkan referensi yang mengunakan resistor jangan binggung ya..


    Kemudian dibawah ini listing programnya sob….
    '###############################################################################
    '# File Name : Joystik PS2.bas
    '# Written By : Supriono
    '# Blog       : mekatronika-corner.blogspot.com
    '# Support:   -> Sony PSX handcontroller
    '#            -> Hardware Spi functions in Bascom
    '#            -> Internal Crystal 8Mhz
    '# Pull-up   : 4.7Kohm Mosi
    '#
    '# PSX Pinout looking at the plug.
    '#         _______________________
    '# Pin 1->| o o o | o o o | o o o |
    '#         \_____________________/
    '#
    '# Pin1 = Data (PSX PAD Data Line Output)
    '# Pin2 = Command (PSX PAD Data Line Input)
    '# Pin3 = N/C No Connection
    '# Pin4 = GND Obvious
    '# Pin5 = Vcc +5Vdc Obvious
    '# Pin6 = ATT (Select)
    '# Pin7 = Clock Line
    '# Pin8 = N/C No Connection
    '# Pin9 = ACK No Connection
    '#
    '###############################################################################

    $regfile = "m8def.dat"
    $crystal = 8000000

    Deflcdchar 0 , 32 , 4 , 14 , 27 , 17 , 31 , 32 , 32       '  segitiga
    Deflcdchar 1 , 32 , 31 , 17 , 17 , 17 , 17 , 31 , 32       ' kotak
    Deflcdchar 2 , 32 , 4 , 14 , 21 , 4 , 4 , 4 , 32       ' up
    Deflcdchar 3 , 32 , 4 , 4 , 4 , 21 , 14 , 4 , 32       ' down
    Deflcdchar 4 , 32 , 4 , 2 , 31 , 2 , 4 , 32 , 32       ' kanan
    Deflcdchar 5 , 32 , 4 , 8 , 31 , 8 , 4 , 32 , 32       ' kiri

    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5:Config Lcd = 16 * 2 : Cursor Noblink Off : Cls

    Config Spi = Hard , Interrupt = Off , Data Order = Lsb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 128 : Spiinit:Config Pinb.1 = Output : Pad_att_line Alias Portb.1

    Dim Cmdstart As Byte : Cmdstart = &H01
    Dim Cmdstatus As Byte : Cmdstatus = &H42
    Dim Joy_present As Byte , Joy_mode As Byte
    Dim Joy_byte1 As Byte , Joy_byte2 As Byte
    Dim Joy_kanan_x As Byte , Joy_kanan_y As Byte
    Dim Joy_kiri_x As Byte , Joy_kiri_y As Byte

    Key_select
    Alias Joy_byte1.0
    Key_joyr
    Alias Joy_byte1.1
    Key_joyl
    Alias Joy_byte1.2
    Key_start
    Alias Joy_byte1.3
    Key_up
    Alias Joy_byte1.4
    Key_right
    Alias Joy_byte1.5
    Key_down
    Alias Joy_byte1.6
    Key_left
    Alias Joy_byte1.7

    Key_l2 Alias Joy_byte2.0
    Key_r2
    Alias Joy_byte2.1
    Key_l1
    Alias Joy_byte2.2
    Key_r1
    Alias Joy_byte2.3
    Key_triangle
    Alias Joy_byte2.4
    Key_circle
    Alias Joy_byte2.5
    Key_x
    Alias Joy_byte2.6
    Key_square
    Alias Joy_byte2.7

    Do
      
    Waitms 100
      
    Reset Pad_att_line : Waitus 10
      
    Spiout Cmdstart , 1
       Joy_mode
    = Spimove(cmdstatus)        '
      
    Spiin Joy_present , 1
      
    Spiin Joy_byte1 , 1
      
    Spiin Joy_byte2 , 1
      
    Spiin Joy_kanan_x , 1
      
    Spiin Joy_kanan_y , 1
      
    Spiin Joy_kiri_x , 1
      
    Spiin Joy_kiri_y , 1
      
    Set Pad_att_line : Waitus 10

      
    Upperline : Lcd "X" ; Key_x ; " O" ; Key_circle ; " " ; Chr(0) ; Key_triangle ; " " ; Chr(1) ; Key_square
      
    Lowerline : Lcd Chr(2) ; Key_up ; " " ; Chr(3) ; Key_down ; " " ; Chr(4) ; Key_right ; " " ; Chr(5) ; Key_left
    Loop



    Pengunaan joystick PS2 biasa (kabel) dapat langsung dihubungkan dengan mikrokontroler dan dapat digunakan joystiknya. Sedangkan untuk yang versi wireless terlebih dahulu kita harus mengkoneksikan perangkat penerima dengan pengirim dengan menekan tombol scan pada receiver modul tau menekan tombol FC pada joystik. Lebih mudah pake gambar aja ya sob…look at the picture below................(sok  inggris)…hahahahha

    Untuk lebih lengkap prosedur koneksi seperti ini:
          1.       Tekan tombol Scan pada receiver modul
          2.       Untuk mengkoneksikan joystick dengan receiver modul dapat langsung menekan tombol FC
          3.       Sedangkan untuk memutuskan koneksi tekan tombol FC sekali lagi.
          4.       Lampu indicator pada receiver modul akan berkedip jika tidak terkoneksi dengan joystick
          5.       Penekan tombol scan juga berfunsi untuk mereset komunikasi, jika terjadi error penerimaan data.

          Sedangkan untuk penampakan hasil dari ekperimen kita kali ini sudah ane lihat kan pada gambar yang paling atas…tapi ngak apa deh tak kasi gambar lagi biar puas…puas..puas…. tukul punya cerita.


    write by : supriono / mekarobot.tm@gmail.com
     
    Wireless joystik PS2 2.4GHz : RP.160.000,-
    Availble colour  : RED/BLUE

    Telp : 081253734037 / Supri




    74 comments :

    1. blogger sekarang sering error artikel dibuat yang rapi malah jadi acak-acakan...

      ReplyDelete
    2. Bahasa C belum pernah coba...soalnya fokus untuk programer basic kompiler

      ReplyDelete
    3. wah,, keren banget mas,, sangat membantu, untuk referensi,,, salam saya sytanium_neo@ semoga sukses

      ReplyDelete
    4. mas... saya pakai atmega 32, jadi pin 6 dari kontroler masuk ke PB.1 pada atmega 8 itu ga' ngaruh dgn fungsi lain dari Pb.1 atmega 8 sbgai ICP, kyk mosi, miso, dan sck nya?

      ReplyDelete
    5. iya kagak ngaruh bisa di gantikan dengan pin lain...

      ReplyDelete
    6. mas,, bisa ga'port ADC di jadi'in untuk port tampilan LCD ?

      ReplyDelete
    7. bisa...tu yang di program ane kan pake portnya ADC.
      Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5

      ReplyDelete
    8. mantab mas...
      btw skemanya itu buatnya pake software apa ?

      ReplyDelete
    9. fungsi ini buat apa ya mas??
         Spiout Cmdstart , 1
         Joy_mode = Spimove(cmdstatus) 

      ReplyDelete
    10. Spiout Cmdstart , 1 : berfungsi untuk mengirim data cmdstart, 1 byte
      joy_mode = Spimove(cmdstatus) : berfungsi untuk menerima dari via SPI setelah mengirim data cmdstatus.

      ReplyDelete
    11. kalo di jadikan urut nerima pake spiin baru pake spiout buat keluarnya bisa gak mas??
      kemaren sempet nyoba cara yg di atas gak bisa.. di in out manual.
      kelebihan yg spimove apa ya mas??
      thanks berat sebelumnya

      ReplyDelete
      Replies
      1. pake SPI lebih mudah ada aja gan...soalnya kalo pake spi kita bisa kirim dan terima data secara bersamaan...
        kalo in out itu kagak bisa bersamaan perintahnya

        di coba aja dulu program yang ane kasih...insaallah berkerja ko..

        goodluck
        by: mekarobot.tm

        Delete
    12. mas kalo gambar rangkaiannya pake software apa ya, rapi banget..

      ReplyDelete
      Replies
      1. pake eagle mas...+ di tambah dengan software lain sih.
        maaf belum bisa share softwarenya....

        Delete
    13. berarti itu ngirim sekaligus nerima ya mas??
      2 proses dalam 1 siklus komunikasi??

      ReplyDelete
    14. 1 siklus ber barengan apa 1 siklus sergantian mas??
      "joy_mode = Spimove(cmdstatus) : berfungsi untuk menerima dari via SPI setelah mengirim data cmdstatus."
      aku jadi bingung

      ReplyDelete
      Replies
      1. ketika kita mengirim data cmdstatus...mikro juga akan menerima data yang disimpan ke variable joy_mode.kalo pake perintah in out akan terjadi lost data dalam beberapa siklus..

        Delete
    15. itu bnerr vcc nya receiver stik pake 5v mas??aq perrnah baca ada yg pake 3.3v......yg benerr yg mn mas??

      ReplyDelete
    16. mas,, bisa kasih contoh programnya.. jika tombol X ditekan maka akan menyalakan LED "LED sebagai output" terima kasih sebelumnya

      ReplyDelete
    17. maaf masih awam dan baru belajar coba".. mw coba bkin yg diatas tp itu dipakai buat ap y mas?? kerja alat nya nanti seperti apa setelah jadi??

      ReplyDelete
    18. bisa dijadikan remote untuk mobil, remote tricopter atau yang lain juga bisa...tergantung imjinasi nya pengen seperti apa??

      ReplyDelete
    19. cool mas, manttap, untuk stik ps2 yang biasa, men dicopot yang converter, bisa gak ya mas di solder langsung kemikro?

      ReplyDelete
    20. numpang nanya lagi mas,
      ni kan potongan koding abang

      Deflcdchar 0 , 32 , 4 , 14 , 27 , 17 , 31 , 32 , 32 ' segitiga
      Deflcdchar 1 , 32 , 31 , 17 , 17 , 17 , 17 , 31 , 32 ' kotak
      Deflcdchar 2 , 32 , 4 , 14 , 21 , 4 , 4 , 4 , 32 ' up
      Deflcdchar 3 , 32 , 4 , 4 , 4 , 21 , 14 , 4 , 32 ' down
      Deflcdchar 4 , 32 , 4 , 2 , 31 , 2 , 4 , 32 , 32 ' kanan
      Deflcdchar 5 , 32 , 4 , 8 , 31 , 8 , 4 , 32 , 32 ' kiri

      nah itu fungsi nya untuk apa?, yang tombol x sama tombol circle kok gak ada?

      ReplyDelete
      Replies
      1. untuk buat tampilan di LCD biar ketika tekan kotak maka di LCD akan keluar kotak, kalo tekan segitiga maka akan keluar data segitiga...
        x dan dan O kan termasuk font standart jadi tinggal di masukan aja..

        Delete
      2. ow makasih gan dapet pencerahan nich hahahahaha

        Delete
    21. Replies
      1. modul PS2nya udah lengkap engan receivernya gan...tinggal pake...

        Delete
    22. kalo bikin sendiri pake analognya aja...tau rangaianny ga mas?

      ReplyDelete
      Replies
      1. maksudnya bikin pake analognya aja gimana gan???

        Delete
      2. jadi mau bikin stick sendiri gan...mau pake switch analog nya aj...ga pake wireless ..pke kabel aj gtu...
        tau rangkaian sma program ny gan...?

        Delete
      3. kalo mau buat sendiri ribet atuh gan...mau berapa kabel??
        kalo pun kabelnya cuma 3.(tx,gnd,5v) agan harus kasi mikro lagi di bagian sticknya..

        Delete
    23. Replies
      1. maksudnya serial gimana gan??interfacenya di ganti jadi serial gitu kah???

        Delete
    24. gan itu masang reciver modul harus ke port B ya, yg ada miso, mosi sck dkk. itu ya??
      bahasa c'ny ada gan??

      ReplyDelete
      Replies
      1. belum sempat di konversi pake Code vision AVR (C)..coz lagi banyak kerjaa

        Delete
    25. Muantep cak,,,
      dari dl saya nyari sampe forum2 g jelas,,
      eh,,,
      Ter,,,nya,,,tha,,,(rhoma punya)
      Sampean yg share d blog,,,
      terima kasih banyak mas,,,
      ane izin ngopi and hyperlink Blogx ya?
      thanks

      ReplyDelete
      Replies
      1. oke...monggo silahkan boz...
        mungkin si boz bisa lihat2 yang ini juga
        http://mekatronika-corner.blogspot.com/2013/03/diy-mekanik-balancing-robot-waow.html

        Delete
    26. gan beli joysticknya di daerah mana ya, ada online store ga buat beli tuh stick ??
      itu yang hitam konektor female ps 2 ya gan, terus modul scannya itu satu paket kah sama joysticknya ?
      thanks infonya :D

      ReplyDelete
      Replies
      1. iya sudah satu pake scan sama joystiknya....
        ane ada jual gan...net 160rb + ongkir

        Delete
    27. Replies
      1. yang penting jempol kaki ngak ikut juga ya gan....
        wkwkwkwk :) :) hahah

        Delete
    28. bang, kan dari stik ps ada yang pake analog gitu kayak maen pes, klu keluaran yang dari analog yang pake kemiringan gitu nilai nya gmna??
      tlong ajarin bang biar dpet pencerahan lagi

      ReplyDelete
      Replies
      1. maksud ane tu gan, kan yang dari koding bascom agan keluarannya berupa tombol maju, kiri, kanan, sma belakang untuk arahnya. nah klu kita maen pes kan ada pengembangan penggunaan analog stik yang memungkinkan kita untuk memberikan arah lain kayak miring2 gitu gan. bisa nggak klu kita buat kyak gitu untuk keluaran dari stik nya??

        Delete
      2. oh...kaya yang di nitendo wii nuthuk itukan
        itu pake sensor acclerometer lagi gan..
        misal kalo stiknya di arakhan ke depan jadi sama aja dengan menekan tombol up....dan lain lainnya son..
        sebelumnya ane dah pernah buat baca joystik wii tapi data yang return malah 165 terus e...

        Delete
      3. ow gitu hahaha thx ya gan hahahahaha

        Delete
    29. mas numpang tnya lagi, fungsi portb.1 dengan pinb.1 dkoding untuk apa ya??
      soalnya dirangkaian portb.1 nya gak terhubung kmana2?
      thx ya gan sblum nya, baru pemula nich

      ReplyDelete
    30. gan kalau mau pesan sticknya gimana ?
      posisi ane daerah surabaya

      ReplyDelete
      Replies
      1. ini gan contact ane
        081253734037 / Supri
        available warna merah adan biru

        Delete
    31. ane sdh coba telpon tapi engga aktif gan

      ReplyDelete
    32. Gan mohon pencerahan untuk interface joystick ke ATmega16 dengan komunikasi SPI, ane sudah coba tapi data yang tampil di LCD cepet banget mas
      matursuwun

      ReplyDelete
      Replies
      1. maksudnya cepet banget itu apa nya??

        Delete
      2. alhamdulilah programnya sudah bisa mas tapi untuk joystick yg berkabel, tapi pas sy ganti pakai yg wirelles datanya ga muncul di LCD, apa ada yg beda dengan port komunikasinya ?? saya pakai atmega16 dan komunikasi SPI

        Delete
      3. seharusnya kedua2 nya itu bisa gan...
        kode yang diatas sudah di coba di kabel dan wireles..fine aja...coba aja di lihat lagi kaki2 bagian penerimanya

        Delete
    33. mas, boleh minta source code pake atmega16 nya ga?soalnya saya nyoba-nyoba tapi tetap ndx berhasil.
      sekalian konfigurasi port pada mikro dengan pin pada joysticknya jga.
      trims...

      ReplyDelete
      Replies
      1. diatas itu kan udah ada codenya gan...tinggal di ganti aja port sama headernya sesuaikan dengan punya agan..rebes sudah....pastikan kaki SPInya mikro ke perangkat devaicenya...jangan salah sambung...

        Delete
    34. Gan. Numpang tnya lg. Saya pake atmega32 saya pake clock nya yg 11059200. Sya coba tp dag bisa mas. Saat tekan tmbol mlah gak trjdi apa2.hm oh ya mas. Dri source kode apa yg harus diubah men kita pake atmega 32 sma cristal yg beda?? Mohon penerangan nya

      ReplyDelete
    35. mas,klau menggunakan crystal yg 16mhz ,apa bs mas?

      ReplyDelete
    36. uda saya coba mas,tp di lcd nya lgsung tampil karakter X1,O1,segitiga1,petak1,dan arah jg 1 tanpa ditekan stik nya ,kira2 apanya yg slh ya mas?

      ReplyDelete
    37. mas kalo stik wireless sama stik yang kabel konfigurasinya sama atau beda?

      ReplyDelete

    Yang sopan.... Sob biar ngak di delete commentnya