16. Walkera WK-0701 发射器

Walkera WK-0701 发射器随 HM36、HM37、HM60 等即飞 Walkera 直升机一起提供。walkera0701 模块可以将此发射器用作操纵杆。

开发主页和下载:http://zub.fei.tuke.sk/walkera-wk0701/

或使用 cogito:cg-clone http://zub.fei.tuke.sk/GIT/walkera0701-joystick

16.1. 连接到 PC

在发射器的背面可以找到 S-video 连接器。从处理器到 HF 部分的调制脉冲可以在此连接器的引脚 2 上找到,引脚 3 是 GND。在引脚 3 和 CPU 之间可以找到 5k6 电阻。为了将调制脉冲传输到 PC,必须放大信号脉冲。

电缆:(Walkera TX 到并行端口)

Walkera WK-0701 TX S-VIDEO 连接器

(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

我使用绿色 LED 和 BC109 NPN 晶体管。

16.2. 软件

使用 walkera0701 模块构建内核。模块 walkera0701 需要独占访问并行端口,像 lp 这样的模块必须在加载 walkera0701 模块之前卸载,检查 dmesg 是否有错误消息。通过电缆将 TX 连接到 PC 并运行 jstest /dev/input/js0 以查看来自 TX 的值。如果 TX “操纵杆”无法更改任何值,请检查 /proc/interrupts 的输出。(通常是 irq7)并行端口的值必须在 TX 打开时增加。

16.3. 技术细节

驱动程序使用来自并行端口 ACK 输入位的中断,以使用 hrtimers 测量脉冲长度。

帧格式:基于 Shaul Eizikovich 提供的 Walkera WK-0701 PCM 格式描述。(从http://www.smartpropoplus.com/Docs/Walkera_Wk-0701_PCM.pdf下载)

16.3.1. 信号脉冲

                   (ANALOG)
    SYNC      BIN   OCT
  +---------+      +------+
  |         |      |      |
--+         +------+      +---

16.3.2.

SYNC , BIN1, OCT1, BIN2, OCT2 ... BIN24, OCT24, BIN25, next frame SYNC ..

16.3.3. 脉冲长度

 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 个二进制 + 八进制值 + 1 个二进制值 = 24*4 + 1 位 = 97 位

(警告,ACK 上的脉冲被晶体管反转,当同步到二进制更改或八进制值更改为二进制时,会引发 irq。)

16.3.4. 二进制数据表示

一个二进制值和一个八进制值可以分组为一个半字节。可以在同步脉冲之间采样 24 个半字节 + 一个二进制值。

前四个通道(模拟操纵杆值)的值可以在前 10 个半字节中找到。模拟值由一个符号位和 9 位绝对二进制值表示。(每个通道 10 位)。下一个半字节是前十个半字节的校验和。

接下来的半字节 12 .. 21 表示四个通道(并非所有通道都可以直接从 TX 控制)。二进制表示与前四个通道相同。在半字节 22 和 23 中是一个特殊的幻数。半字节 24 是半字节 12..23 的校验和。

在半字节 24 的最后一个八进制值和下一个同步脉冲之后,可以采样一个额外的二进制值。此位和幻数未在软件驱动程序中使用。有关此幻数的一些详细信息可以在 Walkera_Wk-0701_PCM.pdf 中找到。

16.3.5. 校验和计算

半字节中八进制值的总和必须与校验和半字节中的八进制值相同(仅使用前 3 位)。校验和半字节的二进制值是通过检查半字节中的二进制值之和 + 检查半字节中的八进制值之和除以 8 来计算的。仅使用此总和的第 0 位。