]>
Commit | Line | Data |
---|---|---|
cec87e38 PP |
1 | |
2 | Walkera WK-0701 transmitter is supplied with a ready to fly Walkera | |
3 | helicopters such as HM36, HM37, HM60. The walkera0701 module enables to use | |
4 | this transmitter as joystick | |
5 | ||
6 | Devel homepage and download: | |
7 | http://zub.fei.tuke.sk/walkera-wk0701/ | |
8 | ||
9 | or use cogito: | |
10 | cg-clone http://zub.fei.tuke.sk/GIT/walkera0701-joystick | |
11 | ||
12 | ||
13 | Connecting to PC: | |
14 | ||
15 | At back side of transmitter S-video connector can be found. Modulation | |
16 | pulses from processor to HF part can be found at pin 2 of this connector, | |
17 | pin 3 is GND. Between pin 3 and CPU 5k6 resistor can be found. To get | |
18 | modulation pulses to PC, signal pulses must be amplified. | |
19 | ||
20 | Cable: (walkera TX to parport) | |
21 | ||
22 | Walkera WK-0701 TX S-VIDEO connector: | |
23 | (back side of TX) | |
24 | __ __ S-video: canon25 | |
25 | / |_| \ pin 2 (signal) NPN parport | |
26 | / O 4 3 O \ pin 3 (GND) LED ________________ 10 ACK | |
27 | ( O 2 1 O ) | C | |
28 | \ ___ / 2 ________________________|\|_____|/ | |
29 | | [___] | |/| B |\ | |
30 | ------- 3 __________________________________|________________ 25 GND | |
31 | E | |
32 | ||
33 | ||
34 | I use green LED and BC109 NPN transistor. | |
35 | ||
36 | Software: | |
37 | ||
38 | Build kernel with walkera0701 module. Module walkera0701 need exclusive | |
39 | access to parport, modules like lp must be unloaded before loading | |
40 | walkera0701 module, check dmesg for error messages. Connect TX to PC by | |
41 | cable and run jstest /dev/input/js0 to see values from TX. If no value can | |
42 | be changed by TX "joystick", check output from /proc/interrupts. Value for | |
43 | (usually irq7) parport must increase if TX is on. | |
44 | ||
45 | ||
46 | ||
47 | Technical details: | |
48 | ||
49 | Driver use interrupt from parport ACK input bit to measure pulse length | |
50 | using hrtimers. | |
51 | ||
52 | Frame format: | |
53 | Based on walkera WK-0701 PCM Format description by Shaul Eizikovich. | |
54 | (downloaded from http://www.smartpropoplus.com/Docs/Walkera_Wk-0701_PCM.pdf) | |
55 | ||
56 | Signal pulses: | |
57 | (ANALOG) | |
58 | SYNC BIN OCT | |
59 | +---------+ +------+ | |
60 | | | | | | |
61 | --+ +------+ +--- | |
62 | ||
63 | Frame: | |
64 | SYNC , BIN1, OCT1, BIN2, OCT2 ... BIN24, OCT24, BIN25, next frame SYNC .. | |
65 | ||
66 | pulse length: | |
67 | Binary values: Analog octal values: | |
68 | ||
69 | 288 uS Binary 0 318 uS 000 | |
70 | 438 uS Binary 1 398 uS 001 | |
71 | 478 uS 010 | |
72 | 558 uS 011 | |
73 | 638 uS 100 | |
74 | 1306 uS SYNC 718 uS 101 | |
75 | 798 uS 110 | |
76 | 878 uS 111 | |
77 | ||
78 | 24 bin+oct values + 1 bin value = 24*4+1 bits = 97 bits | |
79 | ||
25985edc | 80 | (Warning, pulses on ACK are inverted by transistor, irq is raised up on sync |
cec87e38 PP |
81 | to bin change or octal value to bin change). |
82 | ||
83 | Binary data representations: | |
84 | ||
85 | One binary and octal value can be grouped to nibble. 24 nibbles + one binary | |
86 | values can be sampled between sync pulses. | |
87 | ||
88 | Values for first four channels (analog joystick values) can be found in | |
89 | first 10 nibbles. Analog value is represented by one sign bit and 9 bit | |
90 | absolute binary value. (10 bits per channel). Next nibble is checksum for | |
91 | first ten nibbles. | |
92 | ||
93 | Next nibbles 12 .. 21 represents four channels (not all channels can be | |
ad4a6ebe | 94 | directly controlled from TX). Binary representations are the same as in first |
cec87e38 PP |
95 | four channels. In nibbles 22 and 23 is a special magic number. Nibble 24 is |
96 | checksum for nibbles 12..23. | |
97 | ||
98 | After last octal value for nibble 24 and next sync pulse one additional | |
99 | binary value can be sampled. This bit and magic number is not used in | |
100 | software driver. Some details about this magic numbers can be found in | |
101 | Walkera_Wk-0701_PCM.pdf. | |
102 | ||
103 | Checksum calculation: | |
104 | ||
105 | Summary of octal values in nibbles must be same as octal value in checksum | |
106 | nibble (only first 3 bits are used). Binary value for checksum nibble is | |
107 | calculated by sum of binary values in checked nibbles + sum of octal values | |
108 | in checked nibbles divided by 8. Only bit 0 of this sum is used. | |
109 |