LoginSignup
7
8

More than 5 years have passed since last update.

Raspberry Piと赤外線センサでリモコンから光線を発射するARシステムを作ってみました

Posted at

はじめに

センサの値をARで可視化しようと取り組むなかで、Raspberry Piと赤外線センサを使用して、リモコンから光線を発射するARシステムを思いついたので作ってみました。

本記事では、動画につづいて、本システムの使用機材や仕組みについて説明します。

動画

赤外線センサに向かってリモコンのボタンを押すと、光線が出ます。赤外線センサの範囲外では、リモコンのボタンを押しても何も出ません。

使用機材

本システムでは下記の機材を使用しています。

Raspberry Pi

Bluetooth Low Energyが使用できるRaspberry Piが必要です。

本体が対応していなくても、Bluetooth 4.0以上対応のUSBドングルを差し込めば問題ありません。

赤外線センサ

今回は、赤外線リモコン受信モジュールPL-IRM2161-XD1を使用しました。

Androidデバイス

Android 4.4以上のカメラ付き、Bluetooth Low Energy対応のデバイスが必要です。

仕組み

まず、本システムのおおまかな処理の流れについて説明します。その後、赤外線センサとRaspberry Piを接続する際の回路図を掲載し、Raspberry PiやAndroidアプリそれぞれの処理の詳細について説明します。

処理の流れ

  1. 赤外線センサでリモコンの赤外線を検出します。
  2. 赤外線を検出したら、Raspberry PiがBluetooth Low Energyのアドバタイジングパケットを送信します。
  3. アドバタイジングパケットを受信したAndroidデバイスは、カメラに写ったリモコンの角度に応じて光線を発射するエフェクトを描画します。

回路図

下記に赤外線センサとRaspberry Piを接続する際の回路図を掲載します。赤外線センサを定格通りに動作させるための抵抗、ノイズ防止のためのコンデンサを加えて、Raspberry PiのGPIOに接続します。なお、今回使用したRaspberry Piは「Raspberry Pi Model B rev2」、赤外線センサはPL-IRM2161-XD1です。

circuit_diagram.png

Raspberry Piの処理

GPIOを監視して、赤外線センサからの信号があれば、Bluetooth Low Energyのアドバタイジングパケットを生成して送信するPythonスクリプトを走らせます。GPIOの監視にはRPi.GPIOモジュールを使用します。アドバタイジングパケットを送信する際には、BlueZのコマンドラインツールをスクリプトから操作します。

アドバタイジングパケットのSignificant partは、下記の11オクテットの構成になっています。用語などについては、Bluetooth Core Specificationをご覧ください1

オクテット番号 AD Type AD Structureの内容 オクテットの内容 備考
1 Flag Length 0x02 -
2 AD Type 0x04 -
3 AD Data 0x04 クラシックBluetooth非サポート、検索不可
4 Manufacturer Specific Data Length 0x07 -
5 AD Type 0xff -
6 AD Data 0xff 試験用Company Identifier
7 0xff
8 32ビット符号付き整数 赤外線を検出するごとに1ずつ増加する
9
10
11

Androidアプリの処理

Androidアプリでは、アドバタイジングパケットを受信するたびに、カメラに写ったリモコンの角度に応じて光線を発射するエフェクトを描画します。

Androidアプリの作成には、ARの実現のためにUnityVuforiaを使いました。エフェクトは、UnityのAsset Storeから入手しました。リモコンの角度は、VuforiaのObject Recognition機能を用いて割り出しています。

ソースコード

ソースコードはGitHubで公開しています。ライセンスはMITです。

なお、これ以上の改善を行う予定はないため、ドキュメント修正以外のプルリクエストを受け付けるつもりはありません。


  1. 例えば、「Bluetooth Specification Version 4.2 Volume 3: Core System Package [Host volume], PartC: Generic Access Profile, 11. ADVERTISING AND SCAN RESPONSE DATA FORMAT」や「Supplement to the Bluetooth Core Specification v7, PartA: DATA TYPES SPECIFICATION」を参照してください。 

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8