|  |  | 
|  | Walkera WK-0701 transmitter is supplied with a ready to fly Walkera | 
|  | helicopters such as HM36, HM37, HM60. The walkera0701 module enables to use | 
|  | this transmitter as joystick | 
|  |  | 
|  | Devel homepage and download: | 
|  | http://zub.fei.tuke.sk/walkera-wk0701/ | 
|  |  | 
|  | or use cogito: | 
|  | cg-clone http://zub.fei.tuke.sk/GIT/walkera0701-joystick | 
|  |  | 
|  |  | 
|  | Connecting to PC: | 
|  |  | 
|  | At back side of transmitter S-video connector can be found. Modulation | 
|  | pulses from processor to HF part can be found at pin 2 of this connector, | 
|  | pin 3 is GND. Between pin 3 and CPU 5k6 resistor can be found. To get | 
|  | modulation pulses to PC, signal pulses must be amplified. | 
|  |  | 
|  | Cable: (walkera TX to parport) | 
|  |  | 
|  | Walkera WK-0701 TX S-VIDEO connector: | 
|  | (back side of TX) | 
|  | __   __              S-video:                                  canon25 | 
|  | /  |_|  \             pin 2 (signal)              NPN           parport | 
|  | / O 4 3 O \            pin 3 (GND)        LED        ________________  10 ACK | 
|  | ( O 2   1 O )                                         | C | 
|  | \   ___   /      2 ________________________|\|_____|/ | 
|  | | [___] |                                 |/|   B |\ | 
|  | -------        3 __________________________________|________________ 25 GND | 
|  | E | 
|  |  | 
|  |  | 
|  | I use green LED and BC109 NPN transistor. | 
|  |  | 
|  | Software: | 
|  |  | 
|  | Build kernel with walkera0701 module. Module walkera0701 need exclusive | 
|  | access to parport, modules like lp must be unloaded before loading | 
|  | walkera0701 module, check dmesg for error messages. Connect TX to PC by | 
|  | cable and run jstest /dev/input/js0 to see values from TX. If no value can | 
|  | be changed by TX "joystick", check output from /proc/interrupts. Value for | 
|  | (usually irq7) parport must increase if TX is on. | 
|  |  | 
|  |  | 
|  |  | 
|  | Technical details: | 
|  |  | 
|  | Driver use interrupt from parport ACK input bit to measure pulse length | 
|  | using hrtimers. | 
|  |  | 
|  | Frame format: | 
|  | Based on walkera WK-0701 PCM Format description by Shaul Eizikovich. | 
|  | (downloaded from http://www.smartpropoplus.com/Docs/Walkera_Wk-0701_PCM.pdf) | 
|  |  | 
|  | Signal pulses: | 
|  | (ANALOG) | 
|  | SYNC      BIN   OCT | 
|  | +---------+      +------+ | 
|  | |         |      |      | | 
|  | --+         +------+      +--- | 
|  |  | 
|  | Frame: | 
|  | SYNC , BIN1, OCT1, BIN2, OCT2 ... BIN24, OCT24, BIN25, next frame SYNC .. | 
|  |  | 
|  | pulse length: | 
|  | Binary values:		Analog octal values: | 
|  |  | 
|  | 288 uS Binary 0		318 uS       000 | 
|  | 438 uS Binary 1		398 uS       001 | 
|  | 478 uS       010 | 
|  | 558 uS       011 | 
|  | 638 uS       100 | 
|  | 1306 uS SYNC			718 uS       101 | 
|  | 798 uS       110 | 
|  | 878 uS       111 | 
|  |  | 
|  | 24 bin+oct values + 1 bin value = 24*4+1 bits  = 97 bits | 
|  |  | 
|  | (Warning, pulses on ACK are inverted by transistor, irq is raised up on sync | 
|  | to bin change or octal value to bin change). | 
|  |  | 
|  | Binary data representations: | 
|  |  | 
|  | One binary and octal value can be grouped to nibble. 24 nibbles + one binary | 
|  | values can be sampled between sync pulses. | 
|  |  | 
|  | Values for first four channels (analog joystick values) can be found in | 
|  | first 10 nibbles. Analog value is represented by one sign bit and 9 bit | 
|  | absolute binary value. (10 bits per channel). Next nibble is checksum for | 
|  | first ten nibbles. | 
|  |  | 
|  | Next nibbles 12 .. 21 represents four channels (not all channels can be | 
|  | directly controlled from TX). Binary representations are the same as in first | 
|  | four channels. In nibbles 22 and 23 is a special magic number. Nibble 24 is | 
|  | checksum for nibbles 12..23. | 
|  |  | 
|  | After last octal value for nibble 24 and next sync pulse one additional | 
|  | binary value can be sampled. This bit and magic number is not used in | 
|  | software driver. Some details about this magic numbers can be found in | 
|  | Walkera_Wk-0701_PCM.pdf. | 
|  |  | 
|  | Checksum calculation: | 
|  |  | 
|  | Summary of octal values in nibbles must be same as octal value in checksum | 
|  | nibble (only first 3 bits are used). Binary value for checksum nibble is | 
|  | calculated by sum of binary values in checked nibbles + sum of octal values | 
|  | in checked nibbles divided by 8. Only bit 0 of this sum is used. | 
|  |  |