mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
4.0 KiB
128 lines
4.0 KiB
=========================== |
|
Walkera WK-0701 transmitter |
|
=========================== |
|
|
|
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.
|
|
|