Top.Mail.Ru
Перейти к содержанию

Проект "баранки" F1 для Logitech G27/25 и других рулей


для заинтересованных в таком руле  

81 пользователь проголосовал

  1. 1. Хотели бы вы приобрести такую "баранку"?

    • Хотел бы, но 5000руб. для меня пока дорого...
      10
    • Да, меня бы устроил вариант на 6 кнопок для G27 до 5000руб.
      12
    • Да, вариант с простым контроллером и больше кнопок до 8000руб.
      14
    • Да, полный вариант со сцеплением и энкодерами до 12000руб.
      25
    • Да, вариант из карбона, с хорошими кнопками и максимальным функционалом. до 300евро.
      19
    • Нет, даже бесплатно не надо...
      1
  2. 2. Какие ручки вы бы предпочли?

    • Разъемные как на фанатеке, что бы можно было снимать и перетягивать самому.
      26
    • Цельные, как на настоящих рулях.
      25
    • Обтяжка натуральной кожей
      13
    • Обтяжка алькантарой
      26
    • Обтяжкой искусственной эко кожей, что бы подешевле вышло
      18
    • Хочу резиновые не смотря на вес
      9
  3. 3. Как вам идея с эмблемой и декоративной "подушкой"?

    • Это лишнее, я бы хотел руль без эмблемы
      29
    • Эмблема выглядит симпатично - поставил бы лого любимой марки и не менял.
      17
    • Взял бы несколько эмблем на магнитах, и менял под настроение.
      16
    • Подушка с эмблемой понравилась. С какой то одной эмблемой бы взял
      5
    • Подушку и несколько сменных эмблем к ней взял бы
      7
    • И того и другого побольше..
      4
    • Лучше использовать это место для большего количества кнопок
      16
  4. 4. Есть ли необходимость менять формульную баранку на круглую?

    • Нет - я не езжу ни на чем, кроме формул
      5
    • Нет - мне достаточно формульной баранки для всех авто
      18
    • Да, но это нужно редко, можно просто открутить шесть винтов.. это не так долго..
      27
    • Да, если брать такую баранку, то встает вопрос о быстросъемной ступице
      31


Рекомендуемые сообщения

Это Рома пусть скажет.

Как минимум сможем с крепежом решить вопросы.

Баранку все равно надо Ф1 еще найти - копировать ее электронику нужно.

Я же говорил что у меня есть баранка ф1, которую я могу дать.

  • Нравится 2
Ссылка на комментарий
Я же говорил что у меня есть баранка ф1, которую я могу дать.

Я видимо пропустил это предложение.. или стерлось из памяти )) Спасибо!

 

Рома, так нужна баранка Ф1 для изучения платы?

Изменено пользователем GranDoxin
Ссылка на комментарий

Я видимо пропустил это предложение.. или стерлось из памяти )) Спасибо!

Рома, так нужна баранка Ф1 для изучения платы?

 

Из того, что я понял просто изучая интернет:

 

База опрашивает баранку по SPI. Баранка передает базе 24 бита. Первые несколько бит (возможно 8) - фиксированы. Возможно по ним база определяет что это за баранка. У меня есть образец данных для баранки 458 Italia и есть баранка Ильи, которая отличается по внутренностям, но скорее всего работает аналогично. Осталось спаять переходник и проверить, что именно передает та баранка, которая у меня есть.

 

После этого я смогу более определенно сказать, нужна ли баранка ф1. Возможно получится просто подобрать идентификатор для нее. Но здесь уже желательно иметь рабочую базу. В общем, подождите немного, скоро будет больше информации.

 

Платы внутри разные кстати. Вот TX RW, тут все просто и понятно:

 

gzmqbwogjk-mhrqwcskscq1-ste.jpeg

 

А вот внутри баранки Ильи:

 

3pc0o_sdw4xroymlyia5z8tuzo0.jpeg

 

Это тайваньский 8-битный OTP контроллер, думаю, самый дешевый, который только можно было найти:

 

g4_oikg-9ua3ndh67qszggxg3ae.jpeg

 

Верхняя баранка видимо как раз 458 Italia, раз они совместимы - значит, протокол должен быть одинаковый. Но есть еще одна нога, которая в верхней баранке не искользуется. Скорее всего это MOSI (Master-Out-Slave-In) и что по ней передается - еще предстоит разобраться.

 

  • Green – not used (reserved for MOSI?)
  • Blue – GND (ground)
  • White – MISO (master-in-serial-out, this is a serial data line from wheel to base)
  • Orange – SS (slave select, also called PL – parallel load)
  • Red – SCK (clock)
  • Black +VCC (wheelbase uses +3.3V)

 

txrw_1_13.jpg

txrw_1_12.jpg

 

Небольшое дополнение:

 

/*

Ver. 1.03 beta 2016-08-05
This sketch emulates Thrustmaster F1 Wheel addon
allowing to connect arduino (Arduino Pro Mini) to TX RW wheelbase (may work for T500/T300 as well)
and emulate button presses - up to 17 buttons +4 emulated (D-Pad) buttons can be connected to arduino.

!!! There are 2 flavours of arduino boards - powered by +5 volts or +3.3 volts !!!
!!! If you have +5V Arduino version - disconnect it from USB before connecting to a wheelbase !!!
!!! Just power your arduino from TX RW wheelbase Black pin - it supplies +3.3V voltage (should be enough) !!!
!!! don't connect USB +5V wire to TX RW wheelbase Black +3.3V - you'll get a collision !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!! Tested with Arduino Mini Pro (ATMEGA 328P) at 3V 12MHz !!!

Thrustmaster Wheelbase cable pinout (PS/2 connector, also known as mini-Din 6pin female):
1 - Green - MOSI Don't connect
2 - Blue	 - GND (ground)
3 - White - MISO (master in, slave out - to read the data from the wheel)
4 - Orange - SS (slave select, or PL - parallel load, set it to 0 when you want to read the data)
5 - Red	 - CLK (clock impulses)
6 - Black - +VCC (+3.3 volts! if you have Arduino 5V version - use external +3.3V power or use the wheelbase power!!!)
Arduino UNO pins -> TX RW wheelbase cable pins
MISO - used for button 2 Gear Up
Arduino GND				 -> TWRX Blue wire (2)
Arduino pin 12 (MOSI)	 -> TXRW White wire (3) (data from wheel to base)
Arduino pin 10 (SS)	 -> TXRW Orange wire pin (4)
Arduino pin 13 (SCK)	 -> TXRW Red wire (5)
Arduino +5V				 -> TXRW Black wire (6) (it gives 3.3V, but must be connected into +5V socket on arduino uno side)
Button mappings
Read out with unpushed buttons
1100 1111 | 1111 1111 | 1111 1111 | 1111 1111 | 0000 0000 | 0000 0000 | 0110 0000 | 0100 0000 |
Byte 1
1-8 5 (DRS)	 - (A) --> 11 (PortB bit2)
1-7 static 1 ???
1-6 static 0 ???
1-5 static 0 ???
1-4 1 (gear down) - (LB) --> A3 (PortC bit3)
1-3 2 (gear up) - (RB) --> A2 (PortC bit2)
1-2 3 (N)		 - (X) --> A1 (PortC bit1)
1-1 4 (PIT)	 - (A) --> A0 (PortC bit0)

Byte 2
2-8 13 (START sw) - (A) --> 7 (PortD bit7) (It has soldered same function up and down)
2-7 6 (10+)	 - (LB) --> 6 (PortD bit6)
2-6 7 (BO sw)	 - (VIEW) --> 5 (PortD bit5) (It has soldered same function up and down)
2-5 8 (WET sw) - (MENU) --> 4 (PortD bit4) (It has soldered same function up and down)
2-4 9 (PL)	 - (B) --> 3 (PortD bit3)
2-3 10 (K)	 - (Y) --> 2 (PortD bit2)
2-2 11 (PUMP)	 - (A) --> TX/1 (PortD bit1)
2-1 12 (1-)	 - (RB) --> RX/0 (PortD bit0)

Byte 3
3-8 21 (BP up) - (Same as D-Pad) (PortC bit6)						 R1=10K Ohm
3-7 D-pad down - (D-Pad) ------> JOY_X		 // JOY_X: GND --[====/===]-- Vcc
3-6 D-pad right - (D-Pad) ------> JOY_Y								 |
3-5 D-pad left - (D-Pad) ------> JOY_Y								 |A5 (PortC 5)		 R2=10K Ohm
															 // JOY_X:			 GND --[====/===]-- Vcc
3-4 D-pad up	 - (D-Pad) ------> JOY_X													 A6 |
3-3 20 (BP down) - (Same as D-Pad) (PortC bit5)
3-2 19 (BP right) - (Same as D-Pad) (PortB bit1)
3-1 18 (BP left) - (Same as D-Pad) (PortB bit0)

Byte 4 Not Implemented yet
4-7 16 (CHRG down) (rotary encoder flag bit)
4-6 14 (DIF IN up) (rotary encoder flag bit)
4-5 15 (DIF IN down) (rotary encoder flag bit)
4-4 17 (CHRG up) (rotary encoder flag bit)
4-3 static 1 ???
4-2 static 1 ???
4-1 static 1 ???
4-0 static 1 ???

Byte 5	 Not Implemented yet
It shows DIF IN rotary enc steps.
Rotate up: xxxx 1111
Rotate down: xxxx 0000
xxxx shows how much step was from last read out, but I can't count exactly.

Byte 6	 Not Implemented yet
It shows CHRG rotary enc steps.
Rotate up xxxx 1111
Rotate down xxxx 0000

Byte 7 static

Byte 8 static
Ah, each push button has 2 pins - you connect one to Arduino, another to the Ground :)
Pressed button gives you "0" (grounded signal), released = "1" (pulled-up to +VCC)
For D-pad use an Analog mini joy 10kOhm
Feel free to modify and use it for your needs.
This sketch and the documentation above provided "AS IS" under the BSD New license.
http://opensource.org/licenses/BSD-3-Clause
Based on (c) Taras Ivaniukovich (blog@rr-m.org) April 2015
Istvan Virag Aug 2016 added some F1 wheel function
http://rr-m.org/blog/hacking-a-thrustmaster-tx-rw-wheelbase-with-arduino-uno-part-2/
*/
//#include "pins_arduino.h" // not necessary in 1.6.3?
#include <SPI.h>

#define D_padX A6
#define D_padY A7
#define treshold_min 75			 // treshold limits of buttons 0-255 (1 Byte)
#define treshold_mincent 100	 // You can setup as you like it
#define treshold_maxcent 156	 //
#define treshold_max 181		 //
byte wait;
volatile byte wheelState[16];
volatile byte pos = 1;
volatile boolean SSlast = HIGH;		 // SS last flag.
volatile boolean ReadFlag = HIGH;
volatile byte AnalogValue;
volatile byte D_Pad_State = B11111111;
volatile byte analogD_padX = 128;
volatile byte analogD_padY = 128;

void setup () {
sei(); //enable global interrupts
DDRB |= B00001011; // digital pins 8,9,11 used as inputs with a pull-up to +VCC
PORTB |= B00001011;
DDRC |= B00111111; // pins 14-19 (A0 - A5) also used as digital inputs
PORTC |= B00111111; // pulled-up to +VCC via internal 100k resistors
DDRD |= B11111111; // digital pins 0,1,3,4,5,6,7 used as inputs
PORTD |= B11111111; // pulled-up to +VCC via internal 100k resistors
wheelState[0] = B11001111; // TX RW Ferrari 458 Italia Wheel first data byte
wheelState[1] = B11111111; // second data byte - buttons
wheelState[2] = B11111111; // third data byte - buttons
wheelState[3] = B11111111; // this and below - not used, but wheelbase reads all 8 bytes...
wheelState[4] = B00000000;
wheelState[5] = B00000000;
wheelState[6] = B01100000;
wheelState[7] = B01000000;
wheelState[8] = 0x00; // Just for more compability to the future
wheelState[9] = 0x00;
wheelState[10] = 0x00;
wheelState[11] = 0x00;
wheelState[12] = 0x00;
wheelState[13] = 0x00;
wheelState[14] = 0x00;
wheelState[15] = 0x00;

// SPI parameters
SPCR = B11000000; //SPI Slave setup
pinMode(MISO, OUTPUT); // Slave device

/* Pin Change Interrupt services
* PCICR |= PCIE0 1
* PCMSK = PCINT7-0 PCINT6-0 PCINT5-0 PCINT4-0 PCINT3-0 PCINT2-1 PCINT1-0 PCINT0-0
*/
PCICR = B00000001; //Configure PCINT2
PCMSK0 = B00000100; // Interrupt on SS pin
}
// PinChange Interrupt for start SPI communication
ISR (PCINT0_vect) {
if (!(PINB & B00000100)) {
SPDR = wheelState[0]; // load first byte into SPI data register
pos = 1;
}
}
// SPI interrupt routine
ISR (SPI_STC_vect) {
SPDR = wheelState[pos++]; // load the next byte to SPI output register and return.
}

// Interrupt service routine for the Analog reading
ISR (ADC_vect) {
switch (ADMUX & B00000001) {
case 0x00: analogD_padX = ADCH;	 // 8 bit AD conversion is enough
 break;
case 0x01: analogD_padY = ADCH;
 break;
}
ADCSRA = B00000100; // Stop ADC
ReadFlag = HIGH;
}
void loop() {
// scan the button presses
if (ReadFlag) { // Start Next Analog Read
switch (ADMUX & B00000001) {
 case 0x00:
 ADMUX = B01100111;
 ReadFlag = LOW;
 ADCSRA = B11001100; // ADC setup, start
 break;
 case 0x01:
 ADMUX = B01100110;
 ReadFlag = LOW;
 ADCSRA = B11001100; // ADC setup, start
 break;
}
// analog joy 1 X coordinate
if (analogD_padX < treshold_min) { //0XX1PPPP go down
 D_Pad_State &= B01110000;
 D_Pad_State |= B00010000;
}
else if ( analogD_padX > treshold_max) { //1XX0PPPP go up
 D_Pad_State &= B11101111;
 D_Pad_State |= B10000000;
}
else if ( (analogD_padX > treshold_mincent) & (analogD_padX < treshold_maxcent)) { //1XX1PPPP stay
 D_Pad_State |= B10010000;
}
// analog joy 1 Y coordinate
if (analogD_padY < treshold_min) { //X10XPPPP go left
 D_Pad_State &= B11011111;
 D_Pad_State |= B01000000;
}
else if ( analogD_padY > treshold_max) { //X01XPPPP go right
 D_Pad_State &= B10111111;
 D_Pad_State |= B00100000;
}
else if ( (analogD_padY > treshold_mincent) & (analogD_padY < treshold_maxcent)) { //X11XPPPP stay
 D_Pad_State |= B01100000;
}
}
wheelState[0] = (B01000000 | ((PINB << 4) & B10000000) | (PINC & B00001111));
wheelState[1] = PIND;	 // take 8 bits from PORTD
wheelState[2] = (((D_Pad_State >> 1) & B01111000) | (PINB & B00000011) | ((PINC << 2) & B10000000) | ((PINC >> 2) & B00000100)) ;

// wheelState [8] = analogD_padX; // You can setup treshold limits with a Raspberry Pi
// wheelState [9] = analogD_padY;
// wheelState [10] = D_Pad_State;
} // end of main loop()

  • Нравится 4
Ссылка на комментарий

mini Din 6Pin - как ты быстро все это дело раскуриваешь ))

 

Я в свое время голову сломал в поисках как называется этот разъем - когда делал сменную ручку для ТМовского джойстика (Кота)...

Кстати у меня их несколько несколько штук теперь благодаря этом.. Только по моему только папы... ))

Ссылка на комментарий

Приехали детальки, опять пол-ночи с паяльником сидеть :) Будем надеяться, что оно сразу резко оживет и все будет круто...

 

А так я все смотрю на эти рули внутри и уже хочется свой замутить... Только кто же его покупать будет? :)

  • Нравится 2
Ссылка на комментарий
mini Din 6Pin - хреновые разъемы, ну, по крайней мере те, которые у меня есть. Паять неудобно.

 

Я вот тут тоже накупил каких-то когда TM баранку к осв прикручивал... штекеры к розеткам не подходят, паять тоже сложно, один геморрой.

 

Там разве на руль нельзя байты отправлять что б лампочками мигать? Вроде кто-то из кулибиных такое сообщал.

Ссылка на комментарий
хочется свой замутить... Только кто же его покупать будет

А как же чувство что сделал что-то важное?)

Так то да, сложно будет с акулой конкурировать....

  • Нравится 1
Ссылка на комментарий
Только кто же его покупать будет?

Рома, это вопрос цены.

Я как то писал в теме про подвижные платформы про моментный мотор, который ставится на раздвижные двери в вагонах метро. Он достаточно сильный, и по идее должен быть не таким дорогим, как мотор у Акулы.

Если на таком моторе замутить руль по привлекательной цене - это будет бомба! Только надо как то найти что это за мотор (название), и где его брать.

Ссылка на комментарий
Рома, это вопрос цены.

Я буду как во всех фильмах на другое ушко шептать. Только я не до конца разобрался - ангел я или дьявол.

 

Цена не сильно поможет, сильно дешего-то вряд ли получится, а у кого деньги есть уже купили акулу, и их перевести на что-то другое вряд ли выйдет.

Надо на заграничный рынок тогда ориентироваться... а это еще сложнее...

 

Хотя конечно посмотреть что у вас выйдет было бы очень занимательно =)

Ссылка на комментарий

Бывают удачные дни, а бывают - как вчера...

 

Computer-Guy-Facepalm-min.jpg

 

В общем, процесс ремонта несколько затягивается... Заодно придется чинить USB-хаб и мышку... Слава богу комп не пострадал...

Ссылка на комментарий

Я как то писал в теме про подвижные платформы про моментный мотор, который ставится на раздвижные двери в вагонах метро.

так он скорее всего через редуктор какойть ведь подключен. Вообще конечно было бы здорово найти что-нибудь местное дешевое. Но у нас по-моему производства не осталось, про какое-то развитие технологий можно не говорить... Асинхронники, которые широко распространены, имхо плохо подходят под нашу задачу

 

бывают - как вчера...

у меня по-моему таких больше, чем хороших ))) один плюс - от плохих дней пользы в плане опыта получается больше ))
Ссылка на комментарий
В общем, процесс ремонта несколько затягивается... Заодно придется чинить USB-хаб и мышку... Слава богу комп не пострадал...

Ого.. из за руля?

 

так он скорее всего через редуктор какойть ведь подключен.

В вагонах - точно. Но про использовали их в качестве загружателя для ручки управления самолетом, как мне рассказывали - без редуктора. И усилия было достаточно. Хотя конечно там не ставилась задача сломать пилоту руки ))))

Ссылка на комментарий
у меня по-моему таких больше, чем хороших ))) один плюс - от плохих дней пользы в плане опыта получается больше ))

Это да :)

Ого.. из за руля?

Я так и не понял что я там неправильно сделал, прозванивал все цепи перед тем как в розетку включать и микроскопом все смотрел... Видимо там на линию USB 25 вольт прилетело...

Ссылка на комментарий

На правах пятничного алкогольного бреда:

 

Вся эта процедура с битьем мордой об стенку калибровкой нужна только чтобы провод внутри руля не перекрутился. Соответственно, нужно знать положение руля с учетом того, что он многооборотный, и тогда можно не ломать пластик в попытках выяснить "а где это я?". В трахмастере есть нечто похожее на шнек мясорубки, если его использовать как червячную передачу для поворота шестеренки с потенциометром - можно грубо оценить где тут берега. А точное положение - уже датчиком Холла на двигателе. Тогда можно медленно спуститься с горы повернуть руль до центра и на этом успокоиться. Ы?

Ссылка на комментарий

Не знаю как на Т300, но на Т500 есть режим медленной калибровки. Все то же самое, но в замедленном режиме. Меняется комбинацией клавиш. Скорее всего, на Т300 такой режим тоже есть, просто лень лезть в поддержку и читать.

Ссылка на комментарий

Не знаю как на Т300, но на Т500 есть режим медленной калибровки. Все то же самое, но в замедленном режиме. Меняется комбинацией клавиш. Скорее всего, на Т300 такой режим тоже есть, просто лень лезть в поддержку и читать.

 

AUTO-CALIBRATION AND WHEEL CENTERING

(requires the V40 firmware or a later version)

2 MODES ARE AVAILABLE FOR THE AUTO-CALIBRATION AND WHEEL

CENTERING FEATURES

During the auto-calibration phase, the racing wheel must come into full contact with the left, then

right stops before moving to the center position.

If the left stop isn't fully reached (e.g. if the internal/external temperature retracts the stop, or

mechanical tolerances increase or reduce friction against the stop), the racing wheel's center

position may be slightly offset by approx. 20 degrees.

In this case, please select the "Slow auto-calibration" mode.

• "Quick auto-calibration" mode (default mode) :

= the racing wheel briefly touches the left stop before contacting the right stop, then

moving to the center position.

• "Slow auto-calibration" mode (requires a specific procedure) :

= the racing wheel stays against the left stop for a longer period before contacting the

right stop, then moving to the center position.

The auto-calibration therefore requires a little more time.

You do not need to switch to this mode if the racing wheel's "Quick auto-calibration" mode

(i.e. the default mode) produces satisfactory results.

Switching to the "Slow auto-calibration mode":

1) Press the racing wheel's "MODE" button while connecting the wheel's USB cable to the PC or

PS3 system.

2) Release the button once the USB cable is connected.

3) The racing wheel's "Slow auto-calibration" mode is now active.

(This mode is automatically saved to the system's internal memory; you do not need to repeat the

procedure every time you connect the racing wheel to your PC or PS3 system.)

Reverting to the "Quick auto-calibration" mode (default mode):

1) Connect your racing wheel to your PC or PS3 system, proceeding exactly as described above.

2) The racing wheel's "Quick auto-calibration" mode is now active.

(This mode is automatically saved to the device's internal memory.)

Identifying the saved auto-calibration mode:

- "Quick auto-Calibration" mode: the racing wheel's LED does not change colour after the

calibration procedure.

- "Slow auto-Calibration" mode: the racing wheel's LED briefly changes colour after the

calibration procedure, then reverts to its initial colour.

Notes:

- In both modes, if your racing wheel is located near the left stop before you connect the

device's USB cable, the wheel will automatically move to the center position before the

auto-calibration phase begins.

- The selected auto-calibration mode is active for all of the T500's wheels (GT, F1, etc.).

- The selected auto-calibration mode doesn't alter the racing wheel's other settings (force

feedback intensity, centring speed, etc.).

 

Видимо добавили уже после того, как посыпались горы расколотых рулей... Однако маразматичности процедуры это не отменяет.

  • Нравится 1
Ссылка на комментарий

Для владельцев т300 не владеющих оккупационным, можно на пальцах объяснить, что сделать, чтобы он делал эту самую медленную калибровку?

p.s. на правах пьяной пятницы.

Ссылка на комментарий

Про безумность такого способа калибровки думаю каждый раз, когда мой логитек калибруется. С прочностью пластика видимо у Г25/27 получше будет, во всяком случае не помню случаев, что бы внутри все рассыпалось, но энкодеры трескаются.. Даже с родной баранкой при калибровке он лупит так, что страшно за него. А когда впервые калибровал с формульной - из нее вылетел толкатель кнопки! В этот момент было ощущение, что он всю бараку в клочья разобьет.. ))) Не разбил конечно, но опасений по поводу пайки и гаек прибавилось. Толкатель улетел просто потому, что был не плотно вставлен, это вроде фигня, больше не повторялось. Но боюсь, что регулярное повторение этих ударов может довести до выпадения разъемов, отваливания пайки, к откручиваию гаек...

 

Могли бы поставить какой нибудь резиновый демпфер на ограничителе..

  • Спасибо 1
Ссылка на комментарий
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...