1*4882a593Smuzhiyun=========================== 2*4882a593SmuzhiyunWalkera WK-0701 transmitter 3*4882a593Smuzhiyun=========================== 4*4882a593Smuzhiyun 5*4882a593SmuzhiyunWalkera WK-0701 transmitter is supplied with a ready to fly Walkera 6*4882a593Smuzhiyunhelicopters such as HM36, HM37, HM60. The walkera0701 module enables to use 7*4882a593Smuzhiyunthis transmitter as joystick 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunDevel homepage and download: 10*4882a593Smuzhiyunhttp://zub.fei.tuke.sk/walkera-wk0701/ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyunor use cogito: 13*4882a593Smuzhiyuncg-clone http://zub.fei.tuke.sk/GIT/walkera0701-joystick 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun 16*4882a593SmuzhiyunConnecting to PC 17*4882a593Smuzhiyun================ 18*4882a593Smuzhiyun 19*4882a593SmuzhiyunAt back side of transmitter S-video connector can be found. Modulation 20*4882a593Smuzhiyunpulses from processor to HF part can be found at pin 2 of this connector, 21*4882a593Smuzhiyunpin 3 is GND. Between pin 3 and CPU 5k6 resistor can be found. To get 22*4882a593Smuzhiyunmodulation pulses to PC, signal pulses must be amplified. 23*4882a593Smuzhiyun 24*4882a593SmuzhiyunCable: (walkera TX to parport) 25*4882a593Smuzhiyun 26*4882a593SmuzhiyunWalkera WK-0701 TX S-VIDEO connector:: 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun (back side of TX) 29*4882a593Smuzhiyun __ __ S-video: canon25 30*4882a593Smuzhiyun / |_| \ pin 2 (signal) NPN parport 31*4882a593Smuzhiyun / O 4 3 O \ pin 3 (GND) LED ________________ 10 ACK 32*4882a593Smuzhiyun ( O 2 1 O ) | C 33*4882a593Smuzhiyun \ ___ / 2 ________________________|\|_____|/ 34*4882a593Smuzhiyun | [___] | |/| B |\ 35*4882a593Smuzhiyun ------- 3 __________________________________|________________ 25 GND 36*4882a593Smuzhiyun E 37*4882a593Smuzhiyun 38*4882a593SmuzhiyunI use green LED and BC109 NPN transistor. 39*4882a593Smuzhiyun 40*4882a593SmuzhiyunSoftware 41*4882a593Smuzhiyun======== 42*4882a593Smuzhiyun 43*4882a593SmuzhiyunBuild kernel with walkera0701 module. Module walkera0701 need exclusive 44*4882a593Smuzhiyunaccess to parport, modules like lp must be unloaded before loading 45*4882a593Smuzhiyunwalkera0701 module, check dmesg for error messages. Connect TX to PC by 46*4882a593Smuzhiyuncable and run jstest /dev/input/js0 to see values from TX. If no value can 47*4882a593Smuzhiyunbe changed by TX "joystick", check output from /proc/interrupts. Value for 48*4882a593Smuzhiyun(usually irq7) parport must increase if TX is on. 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun 52*4882a593SmuzhiyunTechnical details 53*4882a593Smuzhiyun================= 54*4882a593Smuzhiyun 55*4882a593SmuzhiyunDriver use interrupt from parport ACK input bit to measure pulse length 56*4882a593Smuzhiyunusing hrtimers. 57*4882a593Smuzhiyun 58*4882a593SmuzhiyunFrame format: 59*4882a593SmuzhiyunBased on walkera WK-0701 PCM Format description by Shaul Eizikovich. 60*4882a593Smuzhiyun(downloaded from http://www.smartpropoplus.com/Docs/Walkera_Wk-0701_PCM.pdf) 61*4882a593Smuzhiyun 62*4882a593SmuzhiyunSignal pulses 63*4882a593Smuzhiyun------------- 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun:: 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun (ANALOG) 68*4882a593Smuzhiyun SYNC BIN OCT 69*4882a593Smuzhiyun +---------+ +------+ 70*4882a593Smuzhiyun | | | | 71*4882a593Smuzhiyun --+ +------+ +--- 72*4882a593Smuzhiyun 73*4882a593SmuzhiyunFrame 74*4882a593Smuzhiyun----- 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun:: 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun SYNC , BIN1, OCT1, BIN2, OCT2 ... BIN24, OCT24, BIN25, next frame SYNC .. 79*4882a593Smuzhiyun 80*4882a593Smuzhiyunpulse length 81*4882a593Smuzhiyun------------ 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun:: 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun Binary values: Analog octal values: 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun 288 uS Binary 0 318 uS 000 88*4882a593Smuzhiyun 438 uS Binary 1 398 uS 001 89*4882a593Smuzhiyun 478 uS 010 90*4882a593Smuzhiyun 558 uS 011 91*4882a593Smuzhiyun 638 uS 100 92*4882a593Smuzhiyun 1306 uS SYNC 718 uS 101 93*4882a593Smuzhiyun 798 uS 110 94*4882a593Smuzhiyun 878 uS 111 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun24 bin+oct values + 1 bin value = 24*4+1 bits = 97 bits 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun(Warning, pulses on ACK are inverted by transistor, irq is raised up on sync 99*4882a593Smuzhiyunto bin change or octal value to bin change). 100*4882a593Smuzhiyun 101*4882a593SmuzhiyunBinary data representations 102*4882a593Smuzhiyun--------------------------- 103*4882a593Smuzhiyun 104*4882a593SmuzhiyunOne binary and octal value can be grouped to nibble. 24 nibbles + one binary 105*4882a593Smuzhiyunvalues can be sampled between sync pulses. 106*4882a593Smuzhiyun 107*4882a593SmuzhiyunValues for first four channels (analog joystick values) can be found in 108*4882a593Smuzhiyunfirst 10 nibbles. Analog value is represented by one sign bit and 9 bit 109*4882a593Smuzhiyunabsolute binary value. (10 bits per channel). Next nibble is checksum for 110*4882a593Smuzhiyunfirst ten nibbles. 111*4882a593Smuzhiyun 112*4882a593SmuzhiyunNext nibbles 12 .. 21 represents four channels (not all channels can be 113*4882a593Smuzhiyundirectly controlled from TX). Binary representations are the same as in first 114*4882a593Smuzhiyunfour channels. In nibbles 22 and 23 is a special magic number. Nibble 24 is 115*4882a593Smuzhiyunchecksum for nibbles 12..23. 116*4882a593Smuzhiyun 117*4882a593SmuzhiyunAfter last octal value for nibble 24 and next sync pulse one additional 118*4882a593Smuzhiyunbinary value can be sampled. This bit and magic number is not used in 119*4882a593Smuzhiyunsoftware driver. Some details about this magic numbers can be found in 120*4882a593SmuzhiyunWalkera_Wk-0701_PCM.pdf. 121*4882a593Smuzhiyun 122*4882a593SmuzhiyunChecksum calculation 123*4882a593Smuzhiyun-------------------- 124*4882a593Smuzhiyun 125*4882a593SmuzhiyunSummary of octal values in nibbles must be same as octal value in checksum 126*4882a593Smuzhiyunnibble (only first 3 bits are used). Binary value for checksum nibble is 127*4882a593Smuzhiyuncalculated by sum of binary values in checked nibbles + sum of octal values 128*4882a593Smuzhiyunin checked nibbles divided by 8. Only bit 0 of this sum is used. 129