Hallo,
ich habe eine Intertechno Funkfernbedienung ausgelesen. (Nach einigen
Problemen die Lösung hier:
Beitrag "433 MHz SDR Signal dekodieren").
Nun möchte ich das Signal replizieren.
Im Anhang sind beide Signale (ausgelesen mit Universal Radio Hacker)
dargestellt. Oben das Signal der Fernbedienung und unten das replizierte
Signal.
Ich bekomme leider die Flanken nicht richtig gesendet. Wie kann man ein
klares "1-Bit" bzw. An-Signal senden?
Hier der Python Code (realisiert über Raspberry PI 3):
1 | import time
|
2 | import sys
|
3 | import RPi.GPIO as GPIO
|
4 |
|
5 | a_on = 's1001111101011111000010010010000'
|
6 | a_off = 's1001111101011111000010010000000'
|
7 | b_on = 's1001111101011111000010010010001'
|
8 | b_off = 's1001111101011111000010010000001'
|
9 |
|
10 | #1 = short_on + short_off
|
11 | #0 = short_on + long_off
|
12 |
|
13 | short_on = 0.00025
|
14 | short_off = 0.0003
|
15 | long_off = 0.00132
|
16 | s_bit_off = 0.00295
|
17 | extended_delay = 0.1
|
18 |
|
19 |
|
20 | NUM_ATTEMPTS = 5
|
21 | TRANSMIT_PIN = 23
|
22 |
|
23 | def transmit_code(code):
|
24 | '''Transmit a chosen code string using the GPIO transmitter'''
|
25 | GPIO.setmode(GPIO.BCM)
|
26 | GPIO.setup(TRANSMIT_PIN, GPIO.OUT)
|
27 | for t in range(NUM_ATTEMPTS):
|
28 | for i in code:
|
29 | if i == 's':
|
30 | GPIO.output(TRANSMIT_PIN, 1)
|
31 | time.sleep(short_on)
|
32 | GPIO.output(TRANSMIT_PIN, 0)
|
33 | time.sleep(s_bit_off)
|
34 | if i == '0':
|
35 | GPIO.output(TRANSMIT_PIN, 1)
|
36 | time.sleep(short_on)
|
37 | GPIO.output(TRANSMIT_PIN, 0)
|
38 | time.sleep(long_off)
|
39 | elif i == '1':
|
40 | GPIO.output(TRANSMIT_PIN, 1)
|
41 | time.sleep(short_on)
|
42 | GPIO.output(TRANSMIT_PIN, 0)
|
43 | time.sleep(short_off)
|
44 | else:
|
45 | continue
|
46 | GPIO.output(TRANSMIT_PIN, 0)
|
47 | time.sleep(extended_delay)
|
48 | GPIO.cleanup()
|
49 |
|
50 | if __name__ == '__main__':
|
51 | for argument in sys.argv[1:]:
|
52 | exec('transmit_code(' + str(argument) + ')')
|
Mein anderes Anliegen: Die Fernbedienung sendet auf 433.868170 MHZ. Das
ausgelesene Signal meines Senders erscheint bei 434 MHZ. Wird der
Bandbreitenabstand mir ein Strich durch die Rechnung machen?