123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- 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.
|