Senin, 12 Mei 2014

FINAL PROJECT II3231 Interaksi Manusia dengan Komputer dan Antarmuka : MATHEMATIQUIZ

Hai semua!

Setelah cukup lama tidak pernah ada update dan post baru dari saya di blog ini, kali ini saya akan berbagi cerita mengenai proyek akhir yang saya kerjakan bersama teman-teman kelompok saya. Pada proyek akhir ini, kelompok saya yang awalnya hanya bertiga, yaitu saya, Dinda Tisi Calista (18211003), dan Danny Pranoto (18211017) bergabung dengan kelompok lain yang juga bertiga, yaitu Bernadette Vina (18211019), Gumarus D. William (18211043), dan Stella Kurniawan (18211046). Yeaaayy!!! Akhirnya, terbentuklah sebuah kelompok besar untuk pengerjaan proyek akhir mata kuliah II3231 IMKA ini. Karena kelompok pengerjaan proyek akhir sebenarnya terdiri dari dari dua kelompok kecil yang bergabung menjadi satu kelompok besar, Pak Soni pun meminta agar kami menggunakan dua buah Arduino yang dapat saling berkomunikasi. Setelah melakukan brainstorming dan eksplorasi ide untuk menentukan proyek yang akan dibuat, akhirnya kami pun memutuskan untuk membuat sebuah proyek akhir berupa kuis matematika yang dapat dimainkan oleh dua pemain. Proyek tersebut kami beri nama MATHEMATIQUIZ. Nah pasti masih penasaran seperti apa proyek MATHEMATIQUIZ yang kami buat kan? Yuk, kita simak penjelasannya di bawah ini.

1. Deskripsi Proyek 

Seperti yang telah disebutkan di atas, proyek yang kami buat ini diberi nama MATHEMATIQUIZ. Salah satu teman kelompok kami, Bernadette Vina, pun membuat logo yang keren untuk proyek ini yang dapat dilihat pada gambar 1 di bawah ini.
Gambar 1 Logo MATHEMATIQUIZ

MATHEMATIQUIZ merupakan sebuah permainan kuis matematika yang dapat dimainkan oleh dua pemain secara bersamaan. Karena permainan ini merupakan 2-player game, permainan baru dapat dimulai jika kedua pemain telah siap. Hal ini ditandai dengan lampu LED kedua pemain yang menyala (lampu LED hijau untuk player 1 dan lampu LED merah untuk player 2). Setelah kedua pemain siap, akan ditampilkan terlebih dahulu petunjuk permainan secara singkat pada LCD Display masing-masing pemain. Permainan akan dimulai dalam waktu yang bersamaan selama 60 detik. Setiap pemain harus menjawab soal matematika sederhana yang ditampilkan pada LCD Display dan memasukkan jawabannya secepat mungkin dengan keypad. Soal akan ditampilkan secara random kepada setiap pemain. Ketika player 1 telah menjawab terlebih dahulu soal yang diberikan (terlepas dari benar atau salah atas jawaban yang dimasukkan), player 2 akan diberikan notifikasi bahwa player 1 telah menjawab dan secara otomatis akan ditampilkan soal berikutnya. Begitu juga sebaliknya jika player 2 telah menjawab terlebih dahulu soal yang diberikan. Pemain juga akan diberi tahu untuk setiap jawaban yang dimasukkan apakah benar atau salah. Setiap jawaban yang benar akan mendapatkan poin +10, sedangkan setiap jawaban yang salah akan mendapatkan poin -5. Di akhir permainan, masing-masing pemain dapat melihat skornya sendiri dan juga skor lawannya. Pemain dengan skor yang lebih tinggilah yang menjadi pemenangnya. Setelah permainan selesai, tampilan LCD akan kembali lagi seperti semula sebelum permainan dimulai.

2. Alur Pengerjaan Proyek

Secara umum, alur pengerjaan proyek MATHEMATIQUIZ ini dapat dilihat pada gambar 2 di bawah ini.

Gambar 2 Alur Pengerjaan MATHEMATIQUIZ

 

Tahap 1

Pada tahap 1 kami mulai merencanakan konsep pembuatan proyek. Hal ini kami lakukan dengan melakukan brainstorming dan eksplorasi ide masing-masing untuk menentukan proyek yang akan dibuat. Masing-masing anggota kelompok kami pun mencari ide proyek Arduino dari berbagai referensi yang ada di internet. Setelah itu, kami pun berkumpul bersama untuk menentukan proyek yang akan kami buat. Akhirnya kami pun sepakat untuk membuat proyek MATHEMATIQUIZ. Hal pertama yang langsung muncul di benak kami saat ingin membuat proyek ini adalah bagaimana cara mengomunikasikan dua buah Arduino. Setelah melakukan pencarian di internet dan bertanya kepada beberapa teman yang lain, kami pun akhirnya memilih untuk menggunakan radio Nrf2401. Alasan utama kami memilih radio Nrf2401 adalah karena harganya yang paling murah. Selanjutnya, kami pun mencoba membuat soal kuis matematika dan menampilkannya terlebih dahulu pada serial monitor. Hal ini dilakukan untuk memastikan bahwa kode program yang dirancang untuk menampilkan soal kuis matematika secara random selama 60 detik telah berjalan dengan baik dan lancar tanpa ada error atau bug pada kode program.

Gambar 3 Rangkaian Percobaan Pertama dalam MATHEMATIQUIZ

Gambar 4 Pengetesan MATHEMATIQUIZ (1 player) pada Serial Monitor

Tahap 2

Setelah berhasil menampilkan kuis matematika tersebut pada serial monitor, kami pun mulai memasang LCD Display. Sebelum memasang LCD Display, kami perlu menggunakan solder untuk memasang pin header pada LCD Display tersebut. Kami pun tentu saja membutuhkan timah untuk menyolder pin header. Untung saja kami memiliki teman di HME sehingga kami bisa meminta timah tersebut dari mereka. Asik hahaha. Selanjutnya setelah pin header terpasang pada LCD Display, kami segera memasang pin-pin pada LCD Display ini ke Arduino. Lalu kami pun mencoba menampilkan kuis matematika ini pada LCD Display dengan melakukan beberapa penyesuaian pada kode program yang telah dibuat selanjutnya. Sampai pada tahap ini permainan kuis matematika yang kami buat ini masih hanya untuk 1 pemain saja.

Gambar 5 LCD Display yang Sudah Disolder dan Siap Dipasang pada Arduino

Tahap 3

Nah, baru pada tahap ini kami pun mulai mempelajari bagaimana cara menggunakan radio Nrf2401 untuk mengomunikasikan dua buah Arduino. Menurut saya dan teman-teman kelompok saya, tahap ini merupakan salah satu tahap yang paling susah dan memakan waktu yang tidak singkat pula. Salah satu penyebabnya antara lain karena radio Nrf2401 ini merupakan komponen yang baru saja kami kenal dan belum pernah kami gunakan pada tugas-tugas sebelumnnya. Salah satu referensi yang kami gunakan untuk mempelajari penggunaan radio Nrf2401 ini adalah http://maniacbug.wordpress.com/2011/11/02/getting-started-rf24/. Selain itu, kesulitan lain yang kami temukan adalah housing pada radio yang sering longgar atau lepas. Berikut adalah salah salah satu video yang berhasil direkam dan didokumentasikan oleh salah seorang anggota kelompok kami, Dinda Tisi Calista, saat melakukan percobaan untuk mengomunikasi dua buah Arduino menggunakan radio Nrf2401.


Tahap 4

Langkah selanjutnya adalah mengintegrasikan radio Nrf2401 tersebut pada kuis matematika yang telah kami buat. Pada tahap ini kami sempat putus asa untuk melanjutkan proyek ini karena susahnya menggunakan radio pada permainan kuis matematika 2 player ini yang harus berjalan secara real-time. Dari berbagai contoh yang kami temukan di internet, radio yang digunakan hanya dapat berperan sebagai satu fungsi saja yaitu sebagai transmitter saja atau receiver saja. Padahal, yang kami inginkan pada permainan ini, setiap radio harus dapat berperan sebagai transmitter dan receiver sekaligus. Kami pun sempat berniat untuk mengubah konsep permainan ini. Permainan yang kami buat tetap menggunakan dua buah Arduino, hanya saja permainan ini tidak lagi untuk 2 player tetapi untuk 1 player saja. Jadi, Arduino yang satu tetap digunakan untuk permainan kuis matematika, sedangkan Arduino yang satunya lagi digunakan untuk menampilkan timer dengan 7-segment dan menunjukkan setiap jawaban benar atau salah dengan lampu LED merah yang menyala jika jawaban salah dan lampu LED yang hijau yang menyala jika jawaban benar. Dalam konsep ini, Arduino yang digunakan untuk permainan kuis matematika akan berperan sebagai transmitter, sedangkan Arduino yang satunya lagi berperan sebagai receiver. Berikut video percobaan yang sempat didokumentasikan.


Tahap 5

Setelah sempat mengganti konsep permainan menjadi single player dan berhasil, kami pun saling berdiskusi kembali dan melihat adanya peluang untuk mengembalikan konsep permainan seperti semula yaitu tetap menjadi permainan untuk 2 player. Akhirnya, kami pun sepakat untuk mencoba membuat permainan kuis matematika menjadi permainan untuk 2 player. Yeaaay!!! Alhasil kami pun berhasil melakukannya. Setelah itu, langkah terakhir yang kami lakukan adalah mengemas komponen-komponen permainan yang tadinya terlihat sangat berantakan dan rumit dengan banyak kabel menjadi lebih menarik untuk dimainkan. Kami pun memasukkan komponen-komponen yang tidak berhubungan langsung dengan pemain ke dalam kotak. Komponen yang diletakkan di luar kotak hanya komponen yang langsung berhubungan dengan pemain, seperti LCD Display untuk menampilkan soal matematika dan keypad untuk memasukkan jawaban. Penasaran seperti apa tampilan akhir dari permainan MATHEMATIQUIZ ini? Tenang saja, gambarnya akan saya tampilkan pada bagian selanjutnya hehehe.

Gambar 6 Bagian Dalam Kotak MATHEMATIQUIZ

Gambar 7 Bagian Luar Kotak MATHEMATIQUIZ

3. Spesifikasi Desain Proyek

Untuk mengerjakan proyek MATHEMATIQUIZ ini, tentu saja dibutuhkan berbagai alat dan bahan. Alat-alat dan bahan-bahan yang digunakan dalam proyek ini dapat dikelompokkan ke dalam tiga bagian utama, yaitu:
  • Komponen Input     : 2 buah keypad 4x3
  • Komponen Proses  : 2 buah Arduino Uno dan 2 buah radio Nrf2401
  • Komponen Output  : 2 buah LCD Display dan LED Display Green & Red

Gambar 8 Komponen Pendukung dalam MATHEMATIQUIZ

Selain komponen-komponen utama tersebut, ada pula beberapa komponen pendukung yang digunakan dalam pengerjaan proyek. Komponen-komponen tersebut antara lain laptop/notebook, resistor, rotary potentionmeter, kabel jumper, dan breadboard.

Gambar 9 Komponen Pendukung dalam MATHEMATIQUIZ

4. Blok Desain Hardware

Skema rangkaian yang kami buat dapat dilihat pada blok desain pada gambar 10 di bawah ini. Karena cukup banyak komponen yang kami gunakan dalam pengerjaan proyek MATHEMATIQUIZ ini, semua pin digital dan analog yang ada pada Arduino pun kami gunakan.

Gambar 10 Blok Desain Hardware MATHEMATIQUIZ

 

5. Flowchart Software

Secara umum flowchart dari software yang dirancang untuk proyek MATHEMATIQUIZ dapat dilihat pada gambar 11 di bawah ini.

Gambar 11 Flowchart Software MATHEMATIQUIZ

Permainan baru dapat dimulai jika kedua pemain telah siap. Hal ini ditandai dengan lampu LED kedua pemain yang menyala (lampu LED hijau untuk player 1 dan lampu LED merah untuk player 2). Setelah kedua pemain siap, akan ditampilkan terlebih dahulu petunjuk permainan secara singkat pada LCD Display masing-masing pemain. Permainan akan dimulai dalam waktu yang bersamaan selama 60 detik. Begitu permainan akan dimulai, lampu LED kedua pemain pun akan mati. Setiap pemain harus menjawab soal matematika sederhana yang ditampilkan pada LCD Display dan memasukkan jawabannya secepat mungkin dengan keypad. Soal akan ditampilkan secara random kepada setiap pemain. Ketika player 1 telah menjawab terlebih dahulu soal yang diberikan (terlepas dari benar atau salah atas jawaban yang dimasukkan), player 2 akan diberikan notifikasi bahwa player 1 telah menjawab dan secara otomatis akan ditampilkan soal berikutnya. Begitu juga sebaliknya jika player 2 telah menjawab terlebih dahulu soal yang diberikan. Pemain juga akan diberi tahu untuk setiap jawaban yang dimasukkan apakah benar atau salah. Setiap jawaban yang benar akan mendapatkan poin +10, sedangkan setiap jawaban yang salah akan mendapatkan poin -5. Setelah 60 detik, permainan akan berakhir secara otomatis dan akan muncul hasil permainan (menang atau kalah) pada LCD Display masing-masing pemain. Di akhir permainan, masing-masing pemain pun dapat melihat skornya sendiri dan juga skor lawannya. 

6. Implementasi Hardware

Setelah semua komponen dan kabel-kabel berhasil terpasang, kami pun mengemas rangkaian yang telah kami buat ke dalam sebuah kotak. Hal ini bertujuan untuk membuat rangkaian terlihat lebih rapi dan menarik untuk dimainkan. Seluruh komponen yang tidak berhubungan langsung dengan pemain kami masukkan ke dalam kotak. Komponen yang diletakkan di luar kotak hanyalah komponen yang langsung berhubungan dengan pemain, seperti LCD Display untuk menampilkan soal matematika dan keypad untuk memasukkan jawaban. Bagian atas lampu LED pun kami munculkan di luar kotak supaya terlihat pada saat menyala atau mati untuk menunjukkan status tiap pemain sudah siap atau belum. Kami pun melakukan sedikit modifikasi pada keypad yang digunakan. Tombol berlabel * yang ada di ujung kiri bawah kami ganti dengan tombol yang berlabel "Delete" dan tombol berlabel # yang ada di ujung kanan bawah kami ganti dengan tombol yang berlabel "Enter". Tidak lupa kami pun menyertakan logo permainan kami pada bagian atas kotak makanan. Untuk lebih jelasnya, desain final rangkaian MATHEMATIQUIZ dapat dilihat pada gambar 12 berikut.

Gambar 12 Rangkaian Desain Final MATHEMATIQUIZ



 

7. Implementasi Software

Source code yang digunakan dalam proyek ini ada dua, yaitu source code untuk pemain pertama dan source code untuk pemain kedua. Secara umum, kedua source code ini hampir sama. Karena kode yang digunakan cukup panjang, saya akan membagi penjelasan kode tersebut sesuai dengan prosedur yang ada pada kode program.

a. Inisiasi dan Prosedur setup
Bagian inisiasi ini berisi seluruh deklarasi library, variabel, dan konstanta yang digunakan. Prosedur setup digunakan untuk mengaktifkan radio dan LCD Display yang akan digunakan serta menjadikan LED sebagai output.

 


b.  Prosedur areYouReady
Prosedur ini merupakan prosedur yang digunakan untuk memeriksa dan memastikan apakah kedua pemain telah siap untuk bermain. Permainan baru dapat dimulai jika kedua pemain telah siap dan menekan tombol Enter. Jika salah satu pemain belum siap, pemain yang sudah siap pun akan diberikan notifikasi bertuliskan "Waiting for P1" jika pemain 1 belum siapa atau "Waiting for P2" jika pemain 2 yang belum siap. Jika kedua pemain telah siap, lampu LED pada kedua pemain akan menyala dan akan muncul petunjuk permainan.















c. Prosedur gameOver
Prosedur ini digunakan untuk memeriksa apakah permainan telah berakhir atau tidak. Prosedur juga akan membandingkan nilai yang diperoleh oleh pemain dengan lawan sehingga dapat ditentukan apakah pemain tersebut menang atau kalah. Prosedur ini juga akan menampilkan skor yang diperoleh pemain dan lawan.




 

 

 

 

 

 

 

 

 

 

 

 

   

 




d. Prosedur generateSoal
Prosedur ini digunakan untuk menampilkan soal pada LCD Display. Soal dihasilkan menggunakan fungsi random yang akan mengacak nilai kedua operan. Nilai kedua operan yang ditampilkan dibatasi antara 10 hingga 50.



 

 

  

 





e. Prosedur cek
Prosedur ini digunakan untuk memeriksa apakah jawaban yang dimasukkan oleh pemain benar atau salah.
Jika jawaban benar, variabel isRight menjadi bernilai true. Namun, jika jawaban salah, variabel isRight menjadi bernilai false.


















f. Prosedur getKey
Prosedur ini digunakan untuk membaca masukan dari keypad pemain.
 
















g. Prosedur loop
Prosedur ini merupakan prosedur utama yang akan terus dijalankan selama permainan sedang berlangsung. Prosedur inilah yang akan terus menampilkan soal yang dihasilkan oleh prosedur generateSoal kepada pemain selama 60 detik.





 

 

 

 

 

 

 

 

 

8. Testing

Berikut adalah video demo permainan MATHEMATIQUIZ yang berhasil kami dokumentasikan secara lengkap dari awal hingga akhir. Selamat menonton dan menikmati.



Video dengan tampilan yang lebih jelas dapat dilihat pada tautan berikut http://youtu.be/0CVSRf5wL10

 

9. Analisis dan Komentar

Dalam pengerjaan proyek ini terdapat beberapa kesulitan atau lebih tepatnya kita sebut sebagai tantangan. Tantangan terbesar yang saya dan teman-teman kelompok hadapi adalah sulitya menggunakan radio untuk mengomunikasikan dua Arduino. Selain itu, kode program yang kami buat pun bisa dikatakan kami mulai dari awal atau dari scratch karena belum ada kode program yang serupa pada internet. Secara umum, berikut adalah tantangan-tantangan yang kami hadapi selama pengerjaan proyek ini:
  • Sulitnya melakukan komunikasi antara dua radio
  • Housing untuk radio yang sering longgar dan lepas
  • Pin digital 0 dan 1 pada Arduino Uno ternyata tidak dapat digunakan untuk LED jika ada fungsi serial pada kode program
  • Salah satu LCD Display yang digunakan sempat rusak sehingga kami perlu meminjam LCD Display dari kelompok lain (salah satu alasan kami meminjam karena harga LCD yang cukup mahal jika harus membeli lagi hehehe)
  • Tembaga dari kabel yang sempat putus yang akhirnya tertanam dalam salah satu pin Arduino dan tidak dapat dikeluarkan sampai sekarang
  • Ketika terjadi kesalahan, sulit untuk mendeteksi sumber kesalahan apakah dari software (kode program) atau hardware (adanya kabel yang longgar atau komponen yang tidak terpasang dengan baik dan tepat)
  • Karena beberapa komponen yang kami gunakan perlu disolder terlebih dahulu, kami pun sering kekurangan timah pada saat ingin menyolder
  • Ujung solder yang kotor (akibat menggunakan solder untuk melubangi kotak plastik sebagai wadah permainan) membuat solder tersebut sulit digunakan untuk melelehkan timah
Secara keseluruhan, saya menilai tingkat kesulitan proyek akhir yang kami buat ini ada pada level 6 berdasarkan pada berbagai tantangan yang telah dijabarkan di atas.

 

10. Penutup

Demikianlah cerita yang dapat saya bagikan mengenai pengerjaan proyek akhir mata kuliah II3231 Interaksi Manusia dengan Komputer dan Antarmuka yang sangat berkesan dan menantang pula tentunya. Banyak sekali ilmu dan pengalaman yang saya dapatkan selama mengerjakan proyek akhir ini bersama teman-teman kelompok. Akhir kata, saya ingin mengucapkan terima kasih kepada semua pihak yang telah berperan dan membantu pengerjaan proyek ini. Terima kasih kepada seluruh anggota kelompok saya yang super hebat dan keren, yaitu Dinda Tisi Calista, Danny Pranoto, Bernadette Vina, Gumarus D. William, dan Stella Kurniawan. Terakhir, tentu saja ucapan terima kasih kepada Pak Soni sebagai pengajar dan pembimbing yang telah memotivasi dan memberikan kesempatan kepada kami untuk dapat melakukan eksplorasi dan eksperimen lebih jauh dengan Arduino. Semoga cerita yang saya bagikan ini dapat bermanfaat dan menginspirasi bagi semua. Terima kasih :D




---
Gunawan
18211007
Sistem dan Teknologi Informasi
Institut Teknologi Bandung