16. Walkera WK-0701 发射器

Walkera WK-0701 发射器随 Walkera 遥控直升机(如 HM36、HM37、HM60)一同提供。walkera0701 模块可将此发射器用作操纵杆。

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

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

16.1. 连接到 PC

发射器背面有一个 S-video 连接器。从处理器到高频部分的调制脉冲可以在该连接器的引脚 2 上找到,引脚 3 是接地端。在引脚 3 和 CPU 之间可以找到一个 5k6 电阻。要将调制脉冲发送到 PC,信号脉冲必须被放大。

电缆:(walkera 发射器到并口)

Walkera WK-0701 发射器 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 模块需要独占访问并口,因此在加载 walkera0701 模块之前必须卸载 lp 等模块,请检查 dmesg 以获取错误消息。通过电缆将发射器连接到 PC,并运行 jstest /dev/input/js0 以查看来自发射器的值。如果发射器“操纵杆”无法改变任何值,请检查 /proc/interrupts 的输出。如果发射器开启,并口(通常是 irq7)的值必须增加。

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 上的脉冲被晶体管反转,中断在同步到二进制值变化或八进制值到二进制值变化时触发。)

16.3.4. 二进制数据表示

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

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

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

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

16.3.5. 校验和计算

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