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 位。