【irMagician編】Raspberry Piで音声認識システムを使ったホームオートメーション化計画 その2

さて、前回、Raspberry Piの基本的な設定が終わりました。今回はRaspberry Piで音声認識システムを使ったホームオートメーション化計画のPart2ということでirMagician編です。システム全体の家電操作の部分を作っていきます。

システム構想や前回のRaspberry Pi設定編を見ていない方はそちらを先に参照することをお勧めします。

Raspberry Piで音声認識システムを使ったホームオートメーション化計画 その0【システム構想】
こんにちは、IT-HackのTobitaです。私はRaspberry Pi歴で言えばもう3年くらい経つのですが、ふとRaspberry Piの記事は書いたこと無いなと思ったので今回はRaspb...

irMagicianとは

実際にプログラムや設定を作っていく前に、irMagicianについて説明をしておこうと思います。irMagicianは大宮技研合同会社が開発、販売をしているワンチップマイコンの赤外線リモコンです。赤外線リモコンを作成するには赤外線LED(送信)と赤外線受信モジュールが最低限必要になってきます。もちろんそれを、きちんと動かすにはボード、抵抗など様々必要になってきますが…

簡単にモジュールを説明

ワンチップマイコンということもあり、irMagicianは非常に小型です。一般的な100円ライターと比較して約半分程度の大きさとなっています。

実際に使用する場合は([MicroUSB] – [USB TypeA])の一般的なケーブルでPC等に接続することができます。

irMagicianの特徴

irMagicianには以下のような特徴があります。

  1. USBクラスドライバにCDC-ACMを採用している。
  2. ワンチップで非常に小型である。

・一つ目のCDC-ACMは難しいと思うので、簡単に説明すると様々なOSで動作させることが可能ということです。今回使用するRaspberry PiはRaspbianというディストリビューションであり、これはDebianベースのLinuxOSです。当たり前ですがこのLinuxでも使えますし、その他の主要OS(Windows,OSX)といったOSで動作させることが出来ます。ですから今回のようにLinuxで無くても同じような実験は可能です。

・二つ目は小型であるということです。ご存知かと思いますがRaspberry PiにはGPIOピンが搭載されています。ですから、自分でそれぞれのモジュールを買ってきてブレッドボードなりハンダで付ける等すれば簡単に赤外線リモコンを作成することが出来ます。しかし、ブレッドボードでは大きくてかさばるし、半田付けするには時間が掛かる。更にそれらを作るにはある程度の知識が無くては作れないというデメリットがある。それらの問題を解決するためにirMagicianがあるのです。

過去にブレッドボードで作成した赤外線リモコン

irMagicianとの比較

irMagicianの購入

irMagicianを買おうと思っても結構マイナーな上に販売店が少ないので調べないとまず、見つけられないと思います。

大宮技研のホームページに販売店の情報が載っています。irMagician取扱店

店舗なら

通販なら

ちなみに私は秋葉原で何度かお世話になっているITプラザさんで購入しました。結構小さいお店なので行く前に調べておいたほうが良いかも。

追加でもう一つ、今まで紹介したirMagicianは完成品というもので実は未完成品も販売しています。要はキットです。半田付けのスキルがある方はこちらを購入したほうが安く手に入りますのでお勧め。ITプラザの店舗にもキットと完成品の2つが売っていました。

あと、新型なのか温度センサが付いたバージョンも紹介されました。詳しくは覚えていません、すみません。

irMagicianの設定

シリアルインターフェースの設定解除

irMagicianをそのままRaspberry PiのUSBポートに差し込んだだけではirMagicianは動きません。「dev/ttyACM0」にマッピングさせなければ動かないので、マッピングされるように設定していきます。

試しに「dev/ttyACM0」を参照してみます。

やはりこの段階ではファイルもディレクトリも無いと言われます。

設定するには、「/boot/cmdline.txt」を編集します。

その1でインストールしたvimを使ってファイルを編集していきます。

問題なのは[console=serial0,115200]の部分です。そこだけを削除してもいいのですが後に戻す時大変なので初期の1行目を”#“でコメントアウトし、[console=serial0,115200]を削除したものを二行目にコピーしてあげます。

設定が終了したら再起動してあげます。

スポンサードリンク

再起動後にもう一度「dev/ttyACM0」参照してみると、無事にデバイスが表示されると思います。こうなれば成功です。

pythonライブラリのインストールとpythonコード

ライブラリのインストール

irMagicianの発売元である大宮技研さんではpythonプログラムを使って赤外線信号を処理しています。もちろん別の言語でも作成可能なので自分の好きな言語を選んでもらって構いませんが、今回はpythonで作ります。そのために必要なライブラリをpipでインストールしていきます。

一行目でライブラリ管理のpipを、二行目でpyserialライブラリをインストール

pythonコード

次にpythonコードを書いていくのですが、大宮技研さんのホームページにサンプルプログラムが既に公開されています。これを代用していきます! と思ったのですが「キャプチャ用」「送信用」「保存用」といった用に複数のpythonファイルに分割されています。毎回、プログラムを指定し直すの大変だな…と思って調べていたら【netbuffalo】さんで一つのコードに集約してくれていました!!!ありがたい。これでコードを新しく書かなくて済むなんて思いながらコピー。

netbuffaloさんのirm.pyコードは下のページに公開されています。

「赤外線の魔術師」こと irMagician (学習型赤外線リモコン・デバイス)をご存知ですか? 今日はその特長と Raspberry Pi を使った赤外線リモコンの学習・再生方法をご紹介しますよ。

適当なフォルダにvim形式でpythonプログラムを作成してコピーしてきたirm.pyのコードを貼り付けてやります。

irMagicianを使って家電操作

さて、これで全ての設定が終了したのでここからは実際にRaspberry Piに赤外線の信号を学習させて、その信号で家電を操作してみたいと思います。

pythonプログラムの使用方法

irm.pyのプログラムはオプションに以下のコマンドを指定することで動作を変更します。

  • python irm.py -c (赤外線信号をキャプチャする “capture”)
  • python irm.py -p (赤外線信号を送信する “play”)
  • python irm.py -s (赤外線信号を保存する “save”)
  • python irm.py (-s または -p) -f (ファイル名を指定する “file”)

実際にやってみる

赤外線信号のキャプチャ

まずはRaspberry Piに赤外線を読ませます。

Captureing IR…の間にirMagicianの赤外線受信モジュールに向かって赤外線信号を送信してやります。

すると、下に数字が表示されるかと思います。この数字はリモコンのボタンやメーカによって異なります。これでキャプチャが完了です。

赤外線信号の送信

続いて送信です。先程、キャプチャしたデータは現在はバッファに保存されています。この状態で赤外線信号を送信すればキャプチャした時と同じ赤外線信号が発せられることになります。

Doneと出れば成功です。この段階で赤外線LEDを家電に向けておけば家電をコントロール出来ます。

jsonファイルを使ったやり取り

キャプチャ方法と送信方法が分かりましたが、このままでは使い物になりません。何故ならバッファに入っているデータは再起動などしたら消えてしまいますし、他の赤外線信号をキャプチャした場合上書きされてしまうからです。そこでjsonファイルとして保存しておき、jsonファイルを毎回呼び出すという形にします。

こんな形で-sでセーブオプションを指定し、-fでファイル名を指定します。今回はテレビのオンオフを制御したいのでtvpowというファイル名にしてみました。

これで現在バッファに保存されていた信号はjsonファイルとして保存されました。

実際にファイルをlsコマンドで確認してみます。

無事にtvpow.jsonファイルが出来上がっています。

続いて、lessコマンドで中身を見てみましょう。

数字の羅列が並んでいますね、別に私達が気にすることは無いです。

さて、次はjsonファイルで保存したデータを送信してみます。

こんな感じでjsonで保存した信号を毎回、呼び出すことが可能になりました。これらをシェル・スクリプトで呼び出してもいいですし、他のpythonプログラムなりから呼び出す事も出来ます。

実行風景

実際に実行している様子です。

確認出来た機器と出来なかった機器

今回は私個人のアパートにある家電の操作を目的に行っていたので、それ程多くの機器では確認できていませんが私の環境での情報を記載しておきます。

※irMagicianは全ての比較的多くの赤外線機器を制御出来ますが、全てではありせん。メーカーや製品によって動作しない場合があります。

 TOSHIBA
テレビ
(CT-90421)
TOSHIBS
シーリングライト
(FRC-159T)
Panasonic
DVDレコーダー
(DMR-XE100)
日立
エアコン
(RAS-AJ25F)
動作状況

irMagicianの指向性

irMagicianの指向性について少しだけ書きたいと思います。irMagicianは言っても赤外線LEDですから送信出来る指向性に限界があります。

・指向性

LEDの届く距離に関しては結構、あります。距離的には3メートルくらいであれば届くかなと感じています。私の部屋は8畳のアパートですが、この中であれば問題なく届きました。

・角度

問題は角度なんですよね。LEDですからもちろん直進性が強いのは承知の上なんですが30°くらいの傾きで反応しなくなってしまいます。私は解決策としてLEDの拡散キャップを取り付けています。これを装着すると45°程度ならば反応してくれました。ただし、信号の届く距離が短くなってしまいますが…

LED拡散キャップは秋月電子などで激安で売っていますので、困っている方はお試しください。

最後に

無事に赤外線リモコンまでが完成しました!残りは音声認識と音声合成の設定をしてPythonプログラムでコントロールするだけですね。他にも天気やニュースを読ませるなんてこともやりたいなと思っています。現在、頑張って記事を作成中です!それでは

スポンサードリンク