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); }
- Projects
- Subscribers
- None