Dzwonek, dzwonek…

Drobny hacking radiowych modułów komunikacyjnych pod koniec nighthacka, czyli jak stworzyć własny pilot do bezprzewodowego dzwonka.

Moduł komunikacyjny

Nadajnik to FS1000A, tani moduł sprzedawany w komplecie z odbiornikiem za 7,20zł na Allegro. Co ciekawe nie ma żadnego konkretnego, dedykowanego chipa. Jego konstrukcja to oscylator oparty na tranzystorze NPN o paśmie przenoszenia 1GHz podłączony pod filtr SAW fabrycznie zestrojony na 433.92MHz. Do tego dochodzi garstka cewek i kondensatorów w celu filtracji i dopasowania. Moduł ten ma jeszcze jeden tranzystor który służy tylko do kluczowania. Schemat ideowy (nadajnik o bardzo podobnej konstrukcji).

Podłączenie nadajnika do Arduino

Samo podłączenie jest bardzo proste. Zasilanie do zasilania, pin kluczujący modułu do pinu 13 na Arduino.

Odbiornik

Zestaw komunikacji bezprzewodowej – po lewej nadajnik, po prawej odbiornik

Odbiornik mimo posiadania 4 pinów, używa tylko 3. Zasilanie podłączyliśmy do Arduino wyjście danych do oscyloskopu, by widzieć co jest nadawane przez orginalny pilot.

Oryginalny pilot

Wizualnie stwierdziliśmy, że wygląda to na kodowanie Manchester, paczki 24-bitów co 18ms. Nie dekodowaliśmy kodu na hexy, ale podyktowałem Wiktorowi długości sygnałów trybem krótki/długi (500 µS, 1500 µS)

Własny pilot

Potem napisałem sketcha w Arduino który sygnał ten odtwarzał. Poprawiłem go parę razy, aż dzwonek zadzwonił.

int out = 13;

void setup() {                
  pinMode(out, OUTPUT);     
}

char* code = "kdkdkdkddkkdkddkdkkddkkdkdkddkdkkdkddkdkkdkddkk"; 

void loop() {
  boolean state = true;
  char ch = 0;
  int i=0;
  digitalWrite(out, LOW); 
  while(ch=code[i++]) {
     digitalWrite(out, state ? HIGH : LOW); 
    if(ch == 'k') {
      delayMicroseconds(500);
    } else
    if(ch=='d') {
      delayMicroseconds(1500);
    }       
    state=!state;  
  }
  digitalWrite(out, LOW); 
  delay(20); 
}
Written by wiktor on Jan 17 2019, 8:31 PM.
Leniwa kluska
Projects
  • Restricted Project
Subscribers
None