OkayuTech

情報系大学生の技術的なこと

mbedで赤外線リモコンの通信フォーマットの種類(NEC, AEHA, SONY)を調べる

そんなしょーもないこと記事にするな、って感じですが、たまには更新したいので投稿。

通信フォーマットの種類

赤外線リモコンによる赤外線通信は、大きくわけて3種類のフォーマットが使用されています。

赤外線リモコンの通信フォーマット

フォーマットの種類の区別

通信フォーマットの種類を調べるだけなら、リーダー部分のオン時間のみを調べれば精度良く判別できるはずです。

  • NEC : 562[us] * 16 = 8992[us]
  • AEHA : 350~500[us] * 8 = 2800~4000[us]
  • SONY : 600[us] * 4 = 2400[us]

リーダー部分以外でオン時間が最も長く発生するのはSONYフォーマットの1を送信した時で、600[us] * 2 = 1200[us]です。

これらを踏まえて、閾値を設定します。今回は、

  • 1800[us]未満は無視
  • 1800[us]以上2600[us]未満はSONY
  • 2600[us]以上6496[us]未満はAEHA
  • 6496[us]以上はNEC

という風にします。

環境

  • mbed : Nucleo F446RE
  • 赤外線受信モジュール : GP1UXC41QS
  • リモコン : ARC443A1(エアコンのリモコン)

プログラム

これを記述したのが以下のコードです。綺麗なコードとは言えませんが、参考にはなると思います。

gistfc2985332bc6cee930419cdd34391881

結果

リモコンの「運転切替」を1回押した際の結果です。

AEHA(T=453[us])
AEHA(T=453[us])
AEHA(T=456[us])

どうやら通信フォーマットはAEHAだったようです。Tは横に出ている通り、453, 456[us]みたいです。

リーダーが3回?

1回押しただけですが、リーダーが3回検出されています。
私がボタンを押すのがとろいからではありません。ほんの一瞬押しても3秒押しても3回検出されます。

私が考える原因は2つです。

  • 3回同じものを送って不達の可能性を減らしている
  • データが長いので、3つに分割して送っている

明日にでもデータ部分を解析するので、その時におのずとわかるでしょう。