Proyek ini dimulai ketika saya memutuskan untuk memperbarui setir saya sehingga akan sesuai dengan persyaratan mengemudi SIM pribadi saya, sesuatu yang mewakili pengalaman berkendara dengan realisme dan tanpa embel -embel .
Tetapi, setelah mengatakan itu, itu harus bekerja dengan dasar dan konsol Thrustmaster yang kompatibel , karena meniru roda kemudi F1.
Saya menetapkan tujuan saya tinggi dan membuat daftar hal -hal yang saya ingin setir untuk ditampilkan.
Roda Steerig harus menampilkan semua tombol yang tersedia di PlayStation Dualshock 4 Controller
Saya ingin memasukkan tampilan untuk pengaturan yang terkait dengan roda kemudi (dan mungkin pembaruan di masa depan)
Encoder Rotary untuk akses cepat ke fungsi mengemudi yang diperlukan (Balance Balan Rem, Kontrol ABS & Traksi)
Saya juga ingin memasukkan tombol aksi gabungan khusus (CAB) yang akan memungkinkan saya untuk bertambah atau berkurang - dengan satu klik - salah satu fungsi di atas jumlah x kali.
Karena saya tidak memiliki akses langsung ke printer 3D atau mesin CNC, saya memutuskan untuk pergi dengan salah satu desain 3Drap.it. Dengan bantuan Antonio, kami merancang versi baru dari roda saat ini yang mereka miliki di stok, dan yang cocok dengan desain saya di bawah ini.
Tonton demonstrasi video cepat roda yang beraksi.
Stiker dicetak menggunakan inkjet standar pada lembar stiker A4, dan kemudian ditutupi dengan pita pengepakan transparan.
Unduh lembar stiker di sini (PDF).
Hal terpenting yang perlu diingat dengan perangkat keras adalah bahwa dasar Thrustmaster memberi daya pada roda kemudi Anda dengan ~ 3,5V. Semua yang Anda gunakan harus dapat dijalankan pada tegangan itu.
Sejak awal, idenya adalah untuk membangun ini di sekitar papan nano Arduino . Saya memiliki pengalaman sebelumnya dengan platform ini dan fakta bahwa saya menemukan beberapa titik awal di internet membuat keputusan ini mudah.
Selanjutnya adalah layar. Saya hanya ingin tampilan sebagai sarana bagi saya untuk melihat dan mengedit pengaturan pada roda Itslef, bukan untuk menghubungkan atau melihat telemetri. Jadi, LCD backlit 16x2 sederhana sudah cukup. Untuk menjaga GPIO terbatas, saya juga menambahkan ransel I 2 C.
Rotary Encoders sedikit masalah karena Arduono Nano tidak mendukung banyak GPIO. Pada akhirnya, saya pergi dengan tiga papan encoder rotary mini v2.1 Duppanet I 2 C. Mereka bekerja dengan baik, tidak pernah melewatkan hit dan hanya membutuhkan total 3 GPIO.
Akhirnya, untuk sakelar putar saya menggunakan dua sakelar putar 8-arah mini, masing-masing menggerakkan satu gpio analog tunggal, mengurangi lebih banyak GPIO yang diperlukan. Idenya cukup sederhana, dan Anda dapat mengetahui lebih lanjut di sini.
Saya membutuhkan 22 tombol untuk melakukan semua fungsi yang saya rencanakan. Saya bersumber dari beberapa vendor online tanpa disebutkan. Sebagian besar tombol adalah sakelar sementara (ON)-OFF sederhana dengan pengecualian (on) -off- (ON) beralih. Untuk pemindah dayung 3drap. Ini memasok microswitch tugas berat yang pas dengan selungkup.
? Berikut daftar lengkap perangkat keras yang saya gunakan.
Di sinilah saya menerima banyak bantuan dari komunitas (tolong lihat kredit di bawah). Saya melakukan riset dan menemukan bahwa banyak orang melakukan hal serupa, tetapi tidak ada yang saya inginkan dari kemudi saya bekerja. Jadi, saya menghubungi beberapa dari mereka, mendapat wawasan dan mulai membangun versi saya sendiri.
Titik awal saya adalah posting ini oleh Taras, di mana saya mendapatkan panduan koneksi perangkat keras & perangkat lunak dasar ke T300. Ini juga posting pertama yang saya baca yang membawa saya dalam perjalanan ini. Taras sangat membantu karena dia menanggapi semua pertanyaan teknis saya.
Setelah itu, saya menemukan bit & byte roda Thrustmaster F1 yang direkayasa terbalik dalam sebuah proyek oleh Bram Harmsen, yang mencakup tombol L3 & R3, yang pada gilirannya umumnya tidak tersedia pada roda kemudi lainnya. Memiliki semua informasi yang diperlukan untuk mereplikasi semua tindakan, saya mulai menyatukan semuanya.
Saya tidak akan terlalu mendetail pada kode itu di sini, tetapi Anda dipersilakan untuk melihatnya di repo. Saya telah menambahkan sebanyak mungkin komentar.
? Lihat file sketsa Arduino
Roda berperilaku sangat seperti roda lain di pasaran. Ini meniru semua tombol pengontrol PlayStation DualShock 4. Perbedaan utama adalah matriks tombol , menu tampilan , encoder putar dan sakelar putar (fungsi kabin).
Atas nama Saving GPIO di Nano, saya membuat matriks tombol 5x5 untuk mendukung 22 tombol yang saya butuhkan untuk desain saya (ya, saya punya 3 untuk cadangan!).
? ️ inilah matriks tombolnya .
Ada beberapa alasan saya ingin tampilan. Pertama, saya membutuhkan cara untuk mengubah pengaturan roda tanpa perlu menghubungkannya ke komputer. Kedua, saya juga berpikir menyenangkan memiliki jam untuk menampilkan waktu & tanggal dunia nyata. Ketiga, layar dapat digunakan dalam pembaruan mendatang untuk menampilkan telemetri ... (tapi belum direncanakan). Dan akhirnya, itu terlihat keren.
Layar dikendalikan oleh tiga tombol tampilan:
Menu: Buka/Tutup Menu Roda
Berikutnya: Gulir Menu
Pilih: Pilih opsi
Opsi menu tampilan:
Mode Roda: Atur mode roda tergantung pada platform yang Anda mainkan:
Mode PS - PlayStation (PS)
Mode PC - Advanced (PC)
Disp. Mode: Atur mode tampilan saat tampilan keypress aktif. Setiap kali Anda menekan tombol, ia menampilkan fungsinya:
PS - Menekan tombol apa pun menampilkan fungsi tombol PlayStation (Cross, Triangle, L2, R2, ... dll)
GT - Menekan tombol apa pun menampilkan pemetaan tombol simulator sesuai dengan preferensi pribadi saya (Pit Limiter, HUD, Wipers, ... dll)
Keypress: Tampilkan tombol tombol di layar
Tanggal/Waktu: Tunjukkan atau sembunyikan tanggal & waktu di layar beranda
Buzzer - nyalakan atau mematikan buzzer
Hour Chirp - Ya, itu juga bisa berbunyi bip setiap jam untuk melacak waktu yang Anda habiskan untuk simuator
Display Off - Matikan tampilan (Tombol tampilan apa pun memutarnya kembali)
Runtime - Tampilkan waktu sejak roda kemudi di -boot, jadi Anda tahu sudah berapa lama berjalan
Encoder putar memungkinkan untuk akses cepat keseimbangan rem , ABS dan penyesuaian kontrol traksi saat mengemudi. Rotary Encoders keren karena Anda dapat dengan cepat mengubah pengaturan tanpa perlu mengalihkan perhatian pada menu di layar dll.
Rotary Encoder telah dipetakan sebagai berikut:
Keterangan | Busuk kiri. (-) | Busuk kanan. (+) |
---|---|---|
Saldo Rem (BB) | D-pad down | D-pad up |
Sistem Pengereman Antilock (ABS) | L3 | R3 |
Kontrol traksi (TC) | D-Pad Kiri | D-pad benar |
Keterangan | Busuk kiri. (-) | Busuk kanan. (+) |
---|---|---|
Saldo Rem (BB) | Turun | Ke atas |
Sistem Pengereman Antilock (ABS) | 20 | 21 |
Kontrol traksi (TC) | Kiri | Benar |
? Berikut adalah peta binding kontrol yang saya terapkan di Assetto Corsa Competizione untuk kedua platform.
Ini adalah sesuatu yang saya pikirkan saat menonton video di mana Nico Rosberg menjelaskan bagaimana Anda perlu menggeser keseimbangan rem dari depan ke belakang dan belakang beberapa kali pada satu putaran untuk mengoptimalkan mengemudi Anda. Anda tentu saja dapat menggunakan rotary encoder, tetapi Anda tidak dapat tepat, terutama dengan umpan balik kekuatan menendang roda Anda.
Idenya adalah untuk membuat tombol set yang dapat mereplikasi klik mutliple tergantung pada preferensi Anda. Menggunakan sakelar putar, Anda dapat dengan cepat mengatur parameter:
Mode CAB: Pilih fungsi yang ingin Anda tiru (BB, ABS, TC)
Langkah-langkah CAB: Pilih berapa kali Anda ingin menekan tombol (1x-8x)
CAB -/+: Saat memilih tombol CAB -/+, itu akan dijalankan pada preferensi yang Anda pilih
Saya ingin menjaga hal -hal yang kompak mungkin sehingga diperlukan papan khusus. Saya juga ingin hal -hal dapat dihapus dan dipertukarkan jika ada kegagalan di masa depan. Niat saya adalah untuk membuat PCB cetak khusus tetapi itu benar -benar tidak masuk akal pada saat ini (mungkin dalam pembaruan?). Papan terakhir terdiri dari perfboard 5x7cm dan saya menggunakan kawat inti solid untuk membuat koneksi.
Meskipun upaya pertama saya (V1) berfungsi dengan sempurna, itu tidak ringkas seperti yang saya inginkan. Bahkan, itu tidak cocok dengan selungkup kemudi sama sekali. Saya mendesain ulang trek dan membangun kembali versi kedua (v2) menggunakan konektor pria duPont miring, menghemat banyak ruang karena ketinggian terbatas.
? Lihatlah tata letak & papan diagram terakhir .
Jika Anda memiliki semua yang terhubung dan terhubung seperti yang ditunjukkan diagram, Anda mungkin akan siap untuk menggunakan roda kemudi.
Untuk mengkompilasi sketsa Arduino, Anda harus menginstal perpustakaan ini:
EEPROM.H - Perpustakaan EEPROM untuk menyimpan pengaturan
Liquidcrystal_i2c.h - Liquid Crystal Display I 2 C Library
i2cencoderminilib.h - rotery encoder I 2 C Library
Timelib.h - Perpustakaan Waktu
DS1307RTC.H - Perpustakaan DS1307 RTC
Ikuti instruksi perpustakaan tentang cara mengatur waktu saat ini di RTC.
Ikuti instruksi perpustakaan tentang cara mengubah alamat masing -masing papan rotary encoder. Saya telah mengaturnya sebagai berikut:
BB (Saldo Rem): 0x20
ABS (Antilock Braking System): 0x21
TC (kontrol traksi): 0x22
Satu hal yang mungkin perlu diubah adalah nilai sakelar putar, mengingat bahwa nilai yang dikembalikan tergantung pada tegangan yang disediakan. Atur DEBUG_ROTARY_SWITCHES
ke true
dan LCD akan menampilkan nilai saat ini dari kedua sakelar. Catat angka -angka itu dan perbarui dalam file sketsa t300_functions
, di bawah getCABMode()
& getCABSteps()
fungsi.
Saya telah menambahkan monitor kinerja bawaan. Anda harus menetapkan DEBUG_LATENCY
ke true
dan membuka Serial Monitor (115200 Baud). Setelah diunggah, Anda akan melihat laporan real-time tentang latensi loop saat ini.
Versi perangkat lunak pertama memiliki beberapa masalah, dengan latensi menjadi yang terbesar. Sesekali klik tombol akan dirindukan yang selama perlombaan ini berarti kesalahan pada peningkatan atau downshift. Ini menebus beberapa kinerja yang buruk.
Setelah menjalankan tes saya menemukan bahwa satu loop berlari sekitar 2800ms dengan cegukan akhirnya setiap detik di sekitar 106000ms. Sangat buruk bahwa ada sesuatu yang menghasilkan beberapa jenis penundaan. Saya akhirnya mengoptimalkan kode untuk rotary encoders dan jam (RTC).
Karena layar tidak menambah banyak pengalaman berkendara, Anda dapat memilih untuk mematikannya saat mengemudi dengan menekan sakelar putar ABS.
Versi saat ini bekerja dengan mulus dan saya tidak melihat ada kesalahan selama balap.
Ruang kecil untuk mengakui pekerjaan yang dilakukan sebelumnya oleh orang lain.
Taras Ivaniukovich https://rr-m.org/blog/ - untuk pekerjaan yang dia bagikan di blognya dan bantuan yang dia berikan di sepanjang jalan
Bram Harmsen https://www.thingiverse.com/thing:2813599 - Untuk membalikkan mesin kemudi F1 F1
MRFID72 - Untuk video YouTube yang luar biasa yang menjelaskan sakelar putar analog
Danny van den Brande - untuk kode yang saya temukan online yang membantu saya mengatur matriks tombol
Antonio de Stefano https://3drap.it - untuk kandang roda kemudi yang luar biasa
Lisensi Publik Umum GNU v3.0 atau lebih baru