2014年3月31日月曜日

赤外線解析 PCのラインイン入力で手軽に

部品の足を切れだって?知らないなあ
この間、突然赤外線を解析する必要に迫られたのですが、
しがない高校生がオシロスコープなど持っているはずもなく、AVRで読み取ってシリアル通信でPCに送ろうにもボーレートが…などと悩んでいたら、
「PCをラインイン入力で簡易オシロとして利用する」方法があることを発見。
早速試してみたのでその過程を書いておきます。






■ケーブルを作る

手持ちに 捨ててもいいようなステレオミニプラグのケーブルがなかったので…

100均で買ってきた延長ケーブル。

これを…
はんだづけうまくなりたい。
こうじゃ
写真じゃわかりづらいかと思いますが、ケーブルのメス側を切断、ピンヘッダとはんだ付けしております。
適当にはんだ付けしたので、左からR入力、GND、L入力となってしまい、非常に気持ち悪い。
ともあれ、これでラインイン入力をDIP化できました。

■HandyOscilloのインストール

テスターで作成したケーブルの導通を確認した後、PCにケーブルを接続、接続を確認。
ラインイン入力がマイク入力として認識されるなどよく意味の分からない挙動があったりしましたが、問題なし。
今回はフリーのHandyOscilloを使用させていただきました。
インストールも特に問題なし。

■接続


適当に抵抗かまして赤外線センサーのVoutをR入力に直結。

すると…
なんですか、これは…

なにも接続してないL入力に正弦波が発生してるのもよくわかりません…PCの内部で発生してるのでしょうか?
それに入力レベルも低くノイズが多い模様…

調べてみると、本当はバッファ回路というものを作るといいらしい。
しかし手持ちにオペアンプを持ってないので、今回はトランジスタで勘弁。
このトランジスタの使い方が正しいのかはわかりませんが…


きれいに取れたので良しとします。
余談ですが、赤外線の信号をスピーカーに流すと面白い音がでますね。

■フォーマットの判別

赤外線リモコンのほとんどはNECフォーマット家電協フォーマットに分かれるそうです。

"赤外線リモコンの通信フォーマット http://elm-chan.org/docs/ir_format.html "

かの有名なChaN氏のこのページによると、
NECフォーマットのリーダーコードは、

    562マイクロ秒 * 16 = 8992マイクロ秒 ≒ 8.9ミリ秒 間のHIGHと、
    562マイクロ秒 * 8  = 4496マイクロ秒 ≒ 4.4ミリ秒 間のLOWとのこと。


ズバリでした。

フォーマットが分かれば後は簡単で、NECフォーマットに沿って解釈を進めていくだけです。
当たり前ですが本当にきれいにフォーマットに従っていて、軽い感動を覚えました。

■赤外線LEDで光らせる

使用するマイコンはATmega88P。手元にこれしかないので…
赤外線ライブラリを使ってもいい気がしましたが、勉強もかねて自前で書いてみました。

GitHubです
 □追記:GitHub Gistに上げなおしました
メモリを食いそうな設計ですがご勘弁。

結局ポインタ使わなかった…
これ書いた後にChaN氏の赤外線ライブラリ見てみたんですが、クオリティの差におもわず鬱になりそうです。

動画↓



Google+フォト上の動画の張り付け方が分からない…

ひたすら照明の「お気に入り」ボタンの信号を送り続けております。
赤外線LEDの出力が弱いので照明に直接向けないと反応してくれませんが、良い感じです。
AVRのクロックを上げるのが面倒くさくてキャリア周波数もHIGHとLOWの周期もなんとなくで合わせていますが、それでも反応してくれました。

---------------------------

いかがでしたでしょうか。
正直赤外線の解析なんて今更感バリバリですが、これからRaspberryPiと組み合わせてキャッキャウフフする予定なので、それを考えると、まぁ仕方ない。
近いうちにRaspberryPiとATmega88Pとの通信についても書けるといいですね。
それでは!

■続き 
赤外線ライブラリっぽい何かを更新 http://wararyo.blogspot.jp/2014/04/blog-post.html


0 件のコメント:

コメントを投稿

Amazon