ドナドナされるプログラマのメモ

Windows用アプリのプログラミングメモ

ドンキで買った1980円の赤外線リモコン操作ヘリ・エアキングZEROの通信を解析してみた

ドンキで買った1980円の赤外線リモコン操作ヘリ エアキングZEROの通信を解析してみた。使用機材はAnalog DevicesのADALM2000。リモコンの赤外線発光部に印加される電圧をモニタリングすることで信号波形を計測した。

 

 

フレーム送出間隔

 フレーム周期はフレーム長により変化する。例えば、ほぼアイドルの場合は183ms周期だが、フルスロットルフル前進フル左旋回だと190ms周期ほどになる。一方、フレーム間の無信号区間は基本的に長さ固定で約157ms。ただし、ローター停止時は無信号区間が108msに変化する。

f:id:donadonasan:20201029134120p:plain

フレーム間隔その1

f:id:donadonasan:20201029133935p:plain

フレーム間隔その2

f:id:donadonasan:20201029134024p:plain

無信号区間

f:id:donadonasan:20201029134319p:plain

無信号区間(出力0の時)

 フレームおよびビットの時間特性

フレームは33bitから成る。ビット数は固定。

f:id:donadonasan:20201029134509p:plain

フレーム例

 各bitは長さ390ms程度の"0"bitと784ms程度の"1"bitから成る。それぞれ、26.3us周期のパルス15個および30個から成る。各bit間には320us程度の無信号区間がある。

f:id:donadonasan:20201029134805p:plain

"0"ビット

f:id:donadonasan:20201029135008p:plain

"1"ビット



f:id:donadonasan:20201029134849p:plain

ビット間

 各bitのduty比は19:18程度である。

f:id:donadonasan:20201029135227p:plain

High区間

f:id:donadonasan:20201029135300p:plain

Lo区間

フレームの構造

各データはリトルエンディアンで格納されていた。また、各レバーの可動域と信号の範囲は不一致であり、たとえばUp/Downはレバー可動域の半分程度しか使われておらず、レバーをほぼ中立としたあたりで既に0xFFとなっており、それよりレバーを動かしても信号は変化しなかった。どおりでやたら敏感なわけだ。残念設計である。

Position Signal Size(bit) Detail
0 Channel 2 A: 2 B: 1 C:3
1
2 Up/Down 8 Unsigned char.
フル上昇時は0xFF。
3
4
5
6
7
8
9
10 Checksum 1 Up/Downのチェックサム
11 Left/Right 6 Signed 6bit.
左旋回が正。
+0, -0の区別有り。
12
13
14
15
16
17 Checksum 1 Left/Rightのチェックサム
18 Trim L/R 7 Signed 7bit.
左トリムが正。
最大値は32.
19
20
21
22
23
24
25 Checksum 1 トリムのチェックサム
26 Fwd/Back 4 Signed 4bit.
前進が正。最大は111。
27
28
29
30 Checksum 1 Fwd/Backのチェックサム
31 Stop bit 2 Fixed to 11
32