volante-the-gamepad
PublicLoading…
Volante-The-Gamepad
The new revolutionary joystick for car and flight simulation games.
(Design still in progress 😆)
carbon 3d preview
3d preview with classic ABS box
prototype with home-made touch buttons
prototype with classic RC remote buttons
Software
The code is written by using the famous libray Joystick.h. You can find some sketches still in testing here.
After some tests seem that only the JOYSTICK_TYPE_JOYSTICK configuration works. Unfortunately Microsoft stop to support the HID human interface and only the basic function works. Still no solution for force feedback and particular multiaxis joystick.... now the more complex gaming simulation devices have their own drivers. You don't need the basic plug and play driver. Please have a look for the HID architecture to understand and maybe help 😵
Hardware
The hardware include a joystick case, buttons, knobs, the Arduino Pro Micro and the the shield to interface the Arduino with the gamepad hw. The button pad modules and the shield boards are designed with KiCad. You can find on OSH Park the PCBs ready to print.
Directory structure
-
ArduinoJoystickLibrary-master - the Joystick library written by Matthew Heironimus
-
Fritzing - The Fritzing project with a prototype on breadbord. A small sketch to give a basic idea.
-
Picture - some pictures for the Fritzing design project and the building process
-
Volante sketch - the code
-
Volante - the main Arduino sketch. The sketch is design to be used with touch, capacitive and push buttons. The I/O pin can be in PULL-UP, PULL-DOWN or FLOAT configuration.
- touch button design: The PINs change to LOW when the finger or any not-hi-resistance organic object connect both the pad tracks. The finger and each resistor on the shield should be considered part of a voltage devider. Your dry skin should have an internal resistance of 2 MOhm so the resistors on the shield should be >= 10 MOhm. You can use this voltage devider calculator to calculate the resistor value. The Arduino pin mosfets are LOW state when the input is about <= 2.5V. If you use a less conductive material to close the contacts of the pad maybe you will have to raise the resistance up to 20MOhm. Remeber that an high resistance voltage devider make the input (dancing 🎶 ). You could see the button blipping when you touch the button pad (only one contact or both). This effect is usualy caused by the power supply cord (I'm testing on a laptop). To reduce this effect you should a cercamic capacitor between the input and the ground. The capacitor store a small charge when you press the button and release it very slowly due to the very high value resistors. This stop the flipping but introduce a small delay. You should try some caps between 100pF (101 value) - 100nF (104 value) until your find the best compromise for your application. I suggest 10nF (103 value) capacitor.
Here Some experiments on ThinkerCad.
touch button pad (the resistors are on the shield)
- capacitive design: you can use the TTP223 touch module as push button Normally LOW. The button switch on/off by using an internal timer that estimate the change of the capacitive charge during a fixed time slice. I suggest this configuration only for fast operation where is not required precision. The buttons are fast to trigger but sensible to external environment (high probability of fake positive) and the chip autoreset after few seconds (do not use as acceleretor button in a game)
capacitive module
- classic push button design: you can set up NO (normally open push button) using a pull-up configuration to reduce bouncing effects. When you push the button the pin will be GND. This is the most simple configuration, the button will be very reactive but harder to trigger (the most of NO push buttons are hard to click)
NO Momentary push button for RC
-
test - Used to check the buttons assignment.
- int wiring[18] = Arduino pin in the IDE
- int binding[18] = Buttons of joystick lib
- String pull_mask[18] = pin state? High Low float (depending by the button type used)
- analog_mask[18] = is analog? (for example pot is analog and push button is digital)
Write the button structure with arrays here, execute the code and check in the table if the button binding is correct. If the binding satisfy your magic fingers copy this configuration to the main code
Volante.ino
-
-
kicad - the Kicad scheme and PCB project.
-
buttons_layout - the blueprint of the gamepad case with RC push buttons
-
buttons_layout_touch - the blueprint of the gamepad case with touch buttons
-
lib - kicad libraries of this project (include in kicad before open the project)
-
shield - firrst shield design only for capacitive and push buttons
First PCB printed by OSH Park
First PCB 3D view design by KiCad
-
shield_touch - second shield design with extaernal pull-up resistor for push, capacitive and touch buttons.
Second PCB printed by OSH Park and assembled manually
Second PCB 3D view design by KiCad
-
touch_button_fancy - alternative push button PCB design
-
touch_button_simple - main push button PCB design
-
-
Assetto Corsa/Lotus GT Dream - See Cars for Assetto Corsa
-
Gamepad 3d design - 3d model of the gamepad Volante
3D rendering plastic box
Game Setup
How to set up the Volante for a Awesome gaming experience
-
Main control configuration
Steering settings
Cars for Assetto Corsa
To make the life easy to all the funs of the amazing game Assetto Corsa I decided to build my own cars (big tail and stick to the ground :red_car:). In the folder you find the game data and the blend file made with blender
You can find my project on Facebook on Andrea Mancini's Machines
Conclusion
This project is focused to design a new kind of joystick that make pleasant the racing and flight simulation gaming experience. The joystick will provide a slider linear potentiometer (throttle/brake), two knobs potentiometers (up/down - left/right) and 15 buttons The innovation from the past consist in the linear potentiometers that give the possibility to the player to perform absolutely precise movements.
Note
Don't worry if is not totally clear.... This project is still under development.
Donation
Studying, designing and prototiping is expensive. If you believe in my project you can help me 😜 💲💲💲💲💲💲 😎
-
Bitcoin
1KB6oxVrh5P6SbwFdtNHSG1rqPmdsaTaDV -
ETH
0x7a5b81b2174748d6573a9ebf6b16d07c634c3e4f -
Litecoin
LdVFaYbAsx9txhjVk1KURWvXqpVFDyT35k
No comments yet. Be the first to ask about this board.