Mengakses JOYSTICK PS2 dengan Komunikasi SPI

Gambar 1 - Joystick PS2 Original

Gambar 1 – Joystick PS2 Original

Pada postingan sebelumnya, kami membahas bagaimana dasar dari komunikasi SPI dan bagaimana komunikasi SPI di AVR AT Mega 8/16 /32. Jadi, sudah tahu bukan bagaimana komunikasi SPI bekerja ? Sudah tahu kan komunikasi SPI di AVR ?

Baik, jika Anda sudah tahu mari kita mengaplikasikannya untuk mengakses Joystick PS2. Namun, saya sarankan jika Anda masih kurang paham, pelajari artikel sebelumnya tentang dasar-dasar SPI dan SPI di AVR.

Apa itu Jostick PS2?

Joystick PS2 adalah controller game bawaan Playstasion 2 produksi dari Sony. Tentu sudah tidak asing lagi jika Anda pernah memainkan PS2, Joystick yang Anda pakai dalam bermain game PS2 akan dibahas lebih dalam pada artikel ini. Joystick PS2 mempunyai 16 tombol utama dan mempunyai 4 data Analog yang beroperasi pada tegangan 5 Volt. Dengan joystick PS2 ini, bisa diaplikasikan ke berbagai macam operasi misalnya pada kontrol robot secara manual. Untuk rangkaiannya sangat lah mudah, tinggal menghubungkan ke jalur SPI MISO, MOSI, SCK, Reset dan sebuah external Pull Up untuk pin PSX ATTN untuk mode komunikasi serial. Berikut ini pin yang ada pada kabel output joystick PS2.

Rangkaian Hardware

Gambar 2 - Rangkaian / skematik untuk akses Joystick PS2

Gambar 2 – Rangkaian / skematik untuk akses Joystick PS2

Dari rangkaiaan di atas, bisa dilihat bahwa joystick PS2 memiliki 9 kabel data. Untuk komunikasi, kabel biru (Psx Clock) hubungkan dengan pin SCK pada mikrokontroler. Resistor 220 Ω berguna untuk membatasi arus yang masuk dan juga berfungsi sebagai pengaman. Namun, jika tidak ada resistor 220 Ω juga tidak masalah. Kabel warna Kuning (Psx Attn) dihubungkan ke salah satu port I/O. Pin Psx Attn digunakan untuk mengaktifkan komunikasi atau menonaktifkan komunikasi serial pada joystick. Kabel merah hubungkan dengan Vcc 5 V, kabel hitam dengan Ground / 0. Disini ada opsi, kabel abu-abu adalah untuk Vcc motor getar, jika tidak dihubungkan ke Vcc 9 V  juga tidak apa-apa, atau dihubungkan ke 5 V juga tidak apa – apa, tapi daya getar berkurang.

Untuk jalur komunikasi ada pada kabel orange dan coklat, orange adalah PsxCmd yang dihubungkan ke MOSI dari mikrokontroler dan coklat adalah pin PsxDat (data byte dari button dan analog) dihubungkan ke MISO dari mikrokontroler. Pin ini diberi exsternal Pull Up 5 V dengan resistor 2k2 Ω atau 4k7 Ω dengan tujuan menghindari kondisi “state atau mengambang”. Jika Anda sudah menyambungkan dengan benar, maka langkah selanjutnya adalah melakukan coding atau memprogram. Rangkaiannya mudah bukan ?

Pembuatan Project Baru dengan Code Vision AVR

Untuk melakukan pemrograman, terkadang banyak cara. Namun, untuk memudahkan pembaca dan menyesuaikan apa yang telah umum dan berkembang di Indonesia, maka kali ini digunakan code vision AVR versi 2.05 . Langakah pertama adalah dengan membuat project baru.

Pertama, Lakukan setting chip dan clock cristal oscillator. Disini, kami memakai atmega 8 dengan clock internal clock 8 Mhz.

Gambar 3 - Setting chip dan clock oscillator

Gambar 3 – Setting chip dan clock oscillator

Setelah itu, setting komunikasi serial pada tab SPI, Setting SPI mode 3 dimana Clock phase Cycle half dengan polarity low. Setting juga bahwa mikrokontroler Anda bertindak sebagai master. Untuk SPI Clock, pilih yang paling rendah yaitu pada 62,500 KHz. karena menurut pengalaman penulis, jika clock terlalu besar maka data yang diterima kurang bagus. Jika data yang diterima dahulu adalah LSB maka pada tab data order di-setting LSB First.

Gambar 4 - Setting SPI

Gambar 4 – Setting SPI

Setelah setting SPI selesai, lalu setting USART untuk mengirim data dari joystick ke PC atau ke mikrokontroler master lainnya. Dalam kasus ini, mikrokontroler Atmega 8 hanya digunakan untuk menangani proses pengambilan data Joystick PS2 saja tanpa ada intrupsi lainnya. Data yang sudah tersimpan akan dikirimkan melalui serial komunikasi USART. Lalu setting baudrate di 38400, pada opsi ini Anda bisa sesuaikan dengan kebutuhan Anda.

Gambar 5 - setting komunikasi USART

Gambar 5 – setting komunikasi USART

Setelah itu, setting pin yang terhubung pada Psx Attn. beri logika Low / High terserah Anda. Jika Anda ingin Joystick dalam kondisi On terus maka beri Pin tersebut logika Low. Sedangkan Logika high di sini digunakan untuk mereset data dari joystick yang diberikan logic high ketika kondisi idle. Setelah semua setting selesai, maka pilih menu generate save and exit. Tujuannya adalah membuat project baru dan menyimpannya dalam suatu folder sesuai dengan nama yang Anda berikan.

Pemrograman

Untuk Pemrograman, langkah pertama adalah meng-include kan library dari stdio.h jika pada kondisi default belum ada. Karena library tersebut terdapat fungsi Putchar (“string”) yang digunakan untuk mengirim data secara serial USART ke PC atau penerima lainnya. Berikut adalah program sederhana untuk mengakses Joystick PS2 secara SPI.

Penjelasan Program

Fungsi utama dalam program di atas adalah fungsi GetJoysData(); Sebelum melakukan inisialisasi SPI, maka dilakukan PSX_ON yang digunakan untuk tAnda dimulainya komunikasi. Terdapat inisialisasi SPI yaitu SPI(0x01) adalah register untuk memulai komunikasi. Lalu dilakukan SPU(0x42) yang disimpan dalam variable ID, maksudnya adalah ID memberikan kondisi analog joystick. Jika analog OFF maka data ID 0x41. Namun, jika analog ON maka data ID = 0x73. Untuk lebih jelasnya mari kita lihat tabel di bawah ini:

Tabel 1 - Pertukaran data untuk Joystick digital

Tabel 1 – Pertukaran data untuk Joystick digital

Tabel 2 - Pertukaran data untuk Joystick analog

Tabel 2 – Pertukaran data untuk Joystick analog

Pada tabel satu, jika analog OFF maka data yang dikirim SPI dari joystick hanya ada 4 Byte data dimana Byte pertama adalah 0x41, Byte kedua adalah 0x5A, byte ketiga adalah data Digital 1 dan yang terakhir byte keempat adalah data digital 2.

Pada tabel dua, jika analog ON maka data yang dikirim SPI dari joystick ada 8 Byte data dimana Byte pertama adalah 0x41, Byte kedua adalah 0x5A, byte ketiga adalah data Digital 1, byte keempat adalah data digital 2 dan byte ke 5 – 8 berisi informasi data analog X dan Y baik analog kiri ataupun kanan. Urutan pengiriman data sesuai kedua tabel di atas.

Pada program KirimData(); data byte joystick akan dikirim satu persatu secara serial USART. Untuk melihat datanya bisa digunakan USB to TTL pada PC sambungkan ke pin TX mikrokontroler ke pin RX dari USB to TTL. Setelah itu, buka device manager ada di port com ke berapa. Setelah itu, buka hyperterminal untuk menampilkan data serial dari Joystick. Mudah bukan? Selamat mencoba dan kerjakan sesuai langkah diatas, InsyaAllah berhasil !

Jika artikel ini bermanfaat buat Anda, mohon untuk di Share because “Sharing is Caring”

Referensi:

  1. nugroho.staff.uii.ac.id,
  2. www.pens.ac.id,

COMMENTS

Loading Facebook Comments ...