Based on kernel version 4.10.8. Page generated on 2017-04-01 14:43 EST.
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 80 (Warning, pulses on ACK are inverted by transistor, irq is raised up on sync 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 94 directly controlled from TX). Binary representations are the same as in first 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.