![]() The process is well described in official docs – Arduino as ISP. When we flash a sketch with external programmer, bootloader code is erased and our code boots immediately. To fix this issue, our sketch code (t150_wheel_emu_15buttons.ino – download link is below) must be flashed into Arduino Nano via external programmer (AVRISP, USBTinyISP) or another Arduino board (preferably Arduino Uno – because it just works, doesn’t require capacitor mod). But, Thrustmaster T150 base wants data to be available immediately after power on – if data is not arrived, Windows driver detects whole device as “Thrustmaster FFB Wheel” instead of correct “Thrustmaster T150 force-feedback” and nothing works! Every time we power on Arduino, it sits about 2 seconds in bootloader, then gives control to our code (setup() + loop() functions). Must be connected to Arduino Nano +5V pin. (never connect USB power or any other external power to Arduino when it’s connected to wheelbase!!!) Arduino as ISPĪs I mentioned, Arduino Nano comes pre-flashed with a bootloader (which allows us to re-flash the code via USB cable). Connects to Arduino Nano pin 13 (SCK).Ħ – VCC (black/grey) – wheelbase provides +3.3 volts on the front socket. T150 uses ~1.5MHz data rate with almost no delay between bytes. Older devices (T500, T300, TXRW) used 32KHz-40KHz data rates. SCK pulse frequency determines how fast the data is transferred. Every time SPI Slave device sees a pulse at SCK line, it must push another bit into MISO line. Connects to Arduino Nano pin 10 (SS).ĥ – SCK (red) = clock pulses. On some wheelbases buttons are read 1000 times per second, on other 500 times a seconds (500-1000Hz poll rate is standard for all gaming devices – mice, keyboards, …). We detect this 1->0 and 0->1 line change in our code. When Thrustmaster wheelbase wants to read the data, it sets SS line to LOW, then reads 8 bytes, then sets SS to HIGH (btw, Logitech uses inverted SS). We don’t use it and can leave it disconnected.Ģ – GND (blue) – ground – connects to Arduino GND pin.ģ – MISO (white) = Master In Slave Out = data line (wheelbase reads 8 bytes from steering rim, Byte0 is constant, all buttons state located in Byte1 and Byte2, the rest bytes are filled with ones – 11111111 11111111 …). Wheelbase acts as SPI Master device, Arduino as SPI Slave device.ġ – Green wire is not used (originally it’s connected to GND via 100K resistor inside stock PS steering wheel). Arduino Nano must be connected to T150 base using 5 wires ( GND, MISO, SS, SCK, VCC). T150 base has “5264 2.54mm 6-Pin” connector (rim cable has 5264 6-pin female terminals on both ends, PCB inside wheelbase has 5264 6-pin male terminal). Wiring diagram Click for hi-res version – Arduino Nano Thrustmaster T150 PS wheel emulation wiring That’s why we’ll need second Arduino as ISP or any other external programmer (AVRISP, USBTinyISP, … – you can use any). We need our arduino device to boot instantly or T150 wheelbase refuses to recognize it as steering rim. Second Arduino (Nano or Uno) will be used as “ Arduino as ISP” external programmer – to flash our code into first arduino and to get rid of “arduino bootloader” which takes control for 2 seconds every time we power on arduino nano board. Why do we need 2 arduinos? First Nano is to emulate original T150 PS Wheel electronics. Parts list: 2 Arduino Nano boards (or Nano + Uno), wires, push buttons, electrolytic capacitor (any 10-100uF will work). This fact forced me to get a T150 Pro base and… yes, now we can have a custom electronics for T150. “How can I make a custom steering wheel for T150?” – this question started appearing in my mailbox multiple times a week.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |