Беспроводной джойстик Defender Scorpion RS3 (без передатчика) (PS3 ? )

arcon73
Offline
Зарегистрирован: 06.04.2017

Халявой досталась такая вещь....без адаптера usb.
Не наковыряв решений в инете, решив взглянуть по ближе.

Имеем внутри:
маркировок гугл не знает....
центральная P3U-8500-XM-TX-1 (есть atmel101 (93c46))
аналоги PS3-8500 VR ( с боку RSF (White Label 98002C1 ))
кнопки P3U-8500-XM-L1 P3U-8500-XM-R1
гироскоп P3U-8500-XM-SENSOR (KXSC4)
радио модуль MRF007A-v2.0 (он же RFM73 )

(Людям ковырявшим PS2/3 не знакомы такие пины? а то вдруг всё проще чем кажется...)

Радио модуль :
http://www.hoperf.com/upload/rf/RFM73-Datasheet-V2.0.pdf

Решил взглянуть по глубже. Заказал RF24L01 (дабы как то попадал на информацию что их сопряжение возможно.)

Воспользовался статейкой: http://forum.amperka.ru/threads/nrf24l01-%D0%BF%D0%BE%D0%B1%D0%B5%D0%B6%D0%B4%D0%B0%D0%B5%D0%BC-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C.3205/

Ну и как бы при сканировании эфира, я понял что я чего то не понял....
 

Код со статейки:
 

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#define CE_PIN 9    //!!!!!!!!!!! Для Уно. Здесь установить для ваших плат!              
#define CSN_PIN 10  //!!!!!!!!!!! Для Уно. Здесь установить для ваших плат!
RF24 radio(CE_PIN, CSN_PIN); // Для Уно
//RF24 radio(9,53);// Для Меги
const uint8_t num_channels = 128;
uint8_t values[num_channels];
void setup(void)
{
  Serial.begin(57600);
  printf_begin();
  radio.begin();
  radio.setDataRate(RF24_250KBPS);
  radio.setPALevel(RF24_PA_MAX); 
  radio.setAutoAck(false);
  radio.startListening();

  radio.printDetails();  // Вот эта строка напечатает нам что-то, если все правильно соединили.
  delay(5000);              // И посмотрим на это пять секунд.

  radio.stopListening();
  int i = 0;    // А это напечатает нам заголовки всех 127 каналов
  while ( i < num_channels )  {
    printf("%x",i>>4);
    ++i;
  }
  printf("\n\r");
  i = 0;
  while ( i < num_channels ) {
    printf("%x",i&0xf);
    ++i;
  }
  printf("\n\r");
}
const int num_reps = 100;

void loop(void)
{
  memset(values,0,sizeof(values));
  int rep_counter = num_reps;
  while (rep_counter--) {
    int i = num_channels;
    while (i--) {
      radio.setChannel(i);
      radio.startListening();
      delayMicroseconds(128);
      radio.stopListening();
      if ( radio.testCarrier() )
        ++values[i];
    }
  }
  int i = 0;
  while ( i < num_channels ) {
    printf("%x",min(0xf,values[i]&0xf));
    ++i;
  }
  printf("\n\r");
}
int serial_putc( char c, FILE * ) {
  Serial.write( c );
  return c;
}

void printf_begin(void) {
  fdevopen( &serial_putc, 0 );
}

Самое странное что модуль не отреагировал на :
radio.setDataRate(RF24_250KBPS);
radio.setPALevel(RF24_PA_MAX);

Вот такая вещь....

P/S цитирую техподдержку ответившую через 2 месяца после обращения "Добрый день! Отдельно ресивер приобрести невозможно, сожалеем("

А вопросы такие:
1. Ошибки в настройках модуля? потому не вижу ничего когда джойстик ищет приёмник?
2. Реально ли их сдружить? ( интересна степень фантастичности гемороя которым я заинтересовался...)
3. Возможны ли варианты упрощения этой проблемы? Полагаюсь именно на товарищей колупавших PS2/3 жойстики, ибо этот аппарат имеет совместимость...
ну или имел, пока был приёмник )))
 

 

arcon73
Offline
Зарегистрирован: 06.04.2017

Идём дальше. С модулем разобрались, (видимо разболталась макетка), видим помехи по каналам при нажатии MODE(поиск сопряжения (4канала возможно)  и близком физическом расположении). 
Будем подбирать...