Tentang Ku

Microcontroller: Joystick (@ibnew_d)


PENDAHULUAN
P
engendali mikro (microcontroller) adalah sistem mikroprosesor lengkap yang terkandung di dalam sebuah chip. Mikrokontroler berbeda dari mikroprosesor serba guna yang digunakan dalam sebuah personal computer karena sebuah mikrokontroler umumnya telah berisi komponen pendukung sistem minimal mikroprosesor, yakni memori dan antarmuka I/O. Untuk mengontrol robot, maka digunakan mikrokontroler dengan pertimbangan faktor ukuran yang relatif kecil sehingga cocok untuk pengontrol robot.
Pada prinsipnya mikrokontroler adalah mikroprosesor yang diprogram dengan bahasa assembly dan dirancang sebagai pengendali bukan untuk komputasi. Kontroler adalah rangkaian elektronik berbasis mikroprosesor yang berfungsi sebagai pengatur seluruh komponen dalam membentuk fungsi kerja.



LATAR BELAKANG
Mikrokontroler, jika diterjemahkan secara harfiah, berarti pengendali yang berukuran mikro. Sekilas mikrokontroler hampir sama dengan mikroprosesor. Namun mikrokontroler memiliki banyak komponen yang terintegrasi di dalamnya, misalnya timer/counter. Sedangkan pada mikroprosesor, komponen tersebut tidak terintegrasi. Mikroprosesor umumnya kita jumpai pada komputer dimana tugas dari mikroprosesor adalah untuk memproses berbagai macam data input maupun output dari berbagai sumber. Mikrokontroler lebih sesuai untuk tugas-tugas yang lebih spesifik.




ISI

Antarmuka Joystick PlayStation
AVR Menggunakan CVAVR

S
aat ini tampaknya tidak ada orang yang tidak kenal PlayStation sebagai game console yang paling populer di Indonesia. Tentunya kebanyakan dari kita sudah sangat terbiasa menggunakan joystick PS, baik yang analog dan digital. Untuk itu akan menjadi suatu keuntungan tersendiri jika dapat dibuat robot yang menggunakan joystick PS sebagai kontroler karena sudah tidak asing lagi, mudah untuk digunakan, terdapat 16 tomboldan terdapat 4 jalur analog. pertama kali mencoba untuk menggunakan joystick PS ini setelah membaca artikel dari Jon Williams berjudul PlayStation pada Nuts & Volts of Basic Stamps volume 4 yang juga terdapat pada CD bawaan dari Parallax. Pada artikel tersebut diterangkan cara untuk mengakses data dari joystick PS menggunakan mikrokontroler Basic Stamp 2. Waktu itu saya mengikuti langkah-langkah yang terdapat pada artikel tersebut dan berhasil menampilkan data tombol yang ditekan pada joystick PS pada PC. Tulisan yang saya buat ini sebagian besar bersumber dari artikel Jon Williams tersebut, tentunya dengan penyesuaian dan penjelasan tambahan karena mikrokontroler yang digunakan berbeda, yaituATMega8535. Bahasa pemrograman yang digunakan adalah CVAVR, karena nampaknya saat ini pemrograman ini cukup banyak digunakan (di Indonesia).

Antarmuka Joystick PlayStation Dengan Mikrokontroler AVR Menggunakan CVAVR 2
Rangkaian yang menghubungkan joystick PS2 cukupsederhana, hanya memerlukan beberapa resistor, yang terdiri dari 3 resistor 220Ωyang berfungsi sebagai pengaman dan 1 buah resistor 4k7 sebagai pullup. Bahkan sebetulnya PsxCmd, PsxClock, dan PsxAttn dapat langsung dihubungkan tanpa resistor sama sekali, namun tidak ada salahnya berjaga-jaga untuk melindungi jalur I/O keduanya (catatan : biasanya pada pin Basic Stamp memang sangat dianjurkan menggunakan resistor pembatas arus sebagai pengaman). Pin PsxDat, serta PsxAck jika digunakan, harus diberi resistor pullup karena bersifatopen collector. Dari mikrokontroler ATMega 8535 dibutuhkan 4 pin, 3 sebagai output (PB7/SCK, PB5/MOSI, dan PB4) serta 1 pin sebagai input (PB6/MISO).
Pemilihan pin disesuaikan dengan jalur SPI yang dapat dilihat pada datasheet masing-masing mikrokontroler.
Kabel abu-abu dihubungkan dengan catu daya 9V hanya jika motor getar akan diaktifkan. Sebagai catatan, rangkaian ini sedikit berbeda dengan rangkaian pada artikel Jon Williams, karena di sana jalur PsxClock harus diinvert untuk menyesuaikan denganperintah shiftin/shiftout pada Basic Stamp. Pada setiap joystick PS terdapat kontroler yang bertugas untuk berkomunikasi dengan console PS. Komunikasi yang digunakan adalah serial sinkron, yaitu data dikirim satu per satu melalui jalur data. Untuk mengkoordinasikan antara pengirim dan penerima terdapat satu jalur clock. Hal inilah yang membedakan serial sinkron dengan serial asinkron (UART/RS232) yang dapat bekerja tanpa jalur clock karena masing-masing pedan penerima mempunyai clock.

Komunikasi serial terdapat beberapa macam, yang terkenal adalah
•I2C (Inter Integrated Circuit) atau juga dikenal dengan 2 wire (TWI = Two Wire Interface)
•SPI (Serial Pheriperal Interface) atau kadang-kadang disebut 3 Wire Interface.

Yang digunakan pada joystick PS adalah komunikasi SPI. Awalnya saya sempat mengira kalau SPI itu hanya digunakan untuk pemrograman mikrokontroler, tapi ternyata penggunaannya banyak juga, misalnya untuk mengakses shift register74595/74165, ADC0831, sensor temperatur DS1620, kompas H55B dan masih banyak peranti lainnya.
Pada beberapa bahasa pemrograman tingkat tinggi telah tersedia fungsi yang menunjang komunikasi SPI ini, misalnya shiftin/shiftout pada Pbasic atau Bascom dan spi untuk CVAVR. Fungsi spi pada CVAVR mempunyai kelebihan dibandingkan dengan fungsi shiftin/shiftout, karena dapat mengirimkan sekaligus menerima data pada rentang waktu yang sama. Untuk itulah dengan menggunakan CVAVR tidak perlu dibuat subrutin tambahan seperti yang terdapat pada artikel Jon Williams. Pertukaran data antara kontroler joystick PS dan mikrokontroler.
Untuk mengawali komunikasi dengan joystick PS mikrokontroler megirim byte pertama berupa perintah 0x01, kemudian byte kedua perintah 0x42 (baca data) sekaligus menerima tipe joystick (0x41 untuk digital, 0x73 untuk analog) dari kontroler joystick. Byte ketiga dan seterusnya mikrokontroler menerima data dari kontroler joystick berturut-turut 0x5A (ready), data digital 1,  dan data digital 2. Data digital ini bersifat active low, jadi jika tidak ada tombol ditekan akan diterima data 0xff (0b11111111). Jika joystick dalam kondisi operasi analog maka komunikasi dilanjutkan dengan data analog 1, data analog 2, data analog 3, dan data analog 4, yang saat pada kondisi netral berupa data 0x7f (127) dengan nilai minimal 0 dan nilai maksimal 0xff (255). Saat operasi digital byte 6 – 9 selalu memberikan data 0xff.


KESIMPULAN

J
oystick PS2 adalah sebuah media pengendali robot yang cukup handal. Dibandingkan dengan PC Keyboard yang kurang fleksibel dan keypad yang mempunyai jumlah tombol terbatas media ini jauh lebih sesuai. Namun berbeda dengan PC Keyboard maupun keypad, joystick membutuhkan masukkan perintah terlebih dahulu untuk mengirimkan datanya.
Pada saat mikrokontroler ingin mengambil data dari joystick maka mikrokontroler harus memberitahu joystick bahwa datanya akan diambil dengan memberikan logika 0 pada pin ATT dan mengirimkan data sebagai  perintah mulai atau start command (0×01).


Setelah perintah mulai diterima oleh joystick maka joystick akan mengirim data yang menunjukkan ID dari joystick ( 0×41 untuk joystik digital dan 0×73 untuk joystick analog red mode ). Pada saat yang bersamaan dengan josytick mengirim ID mikrokontroler juga mengirim data ( 0×42 ) untuk meminta data dari joystick
Saat data  ( 0×42 ) diterima maka joystick akan membalas dengan mengirimkan data ( 0×52 ) sebagai pemberitahuan bahwa data akan segera dikirim.
Setelah itu joystik mengirimkan data 6 x 8 bit yang berisi informasi tombol mana saja yang ditekan ( semua tombol adalah aktif low ).



Sekian tugas yang diposting ini untuk membagi ilmu kepada pengunjung sekalian.
sebelum meninggalkan blog ini harap member masukan terima kasih.
@ibnew_d .


0 komentar:

Posting Komentar

 
Copyright © Ibnu Darmawan