VIR: USB 接続赤外線学習リモコンに関する技術の解説です。

赤外線データ

VIR: 赤外線学習リモコンの基本的な使い方

VIR を USB 端子に接続し、"V-IR R" コマンドを実行して、赤外線受信モジュールに向けて赤外線リモコンの信号を送信すると、信号の内容が標準出力に表示されます。このデータをそのまま "V-IR S" コマンドの標準入力に与えると、同じ信号が送信できます(要 root 権限)。

赤外線データのフォーマット

図1 は VIR で Panasonic TV リモコンの入力切り替えボタンの信号を学習したときの出力例です。

irdata1.png

     図1: R コマンドによる赤外線データの取得結果(Panasonic TV リモコンの例)

 
irdata2.png
irdata3.png

回路

DigiSpark

DigiSpark は AVR マイコン ATTiny85 を搭載した、USB 通信が可能な小型の Arduino 互換ボードです。専用の USB コントローラ IC は積んでいませんが、ソフトウェアによる USB 通信ライブラリ V-USB によって、PC から USB 経由でファームウェアを書き込むことができます。このキットは、DigiSpark に赤外線送受信回路を追加してファームウェアを書き込むことで、USB で制御する赤外線リモコンを実現しています。

オリジナル赤外線送受信シールド

Arduino に外部回路を追加するための拡張基板をシールドと呼びます。本家からも赤外線送受信用の Infrared Shield が発売されていますが、本家版の回路では赤外線 LED を ATTiny85 の出力ピンで直接駆動しているため、赤外線信号が遠くまで届きません。そこで、ATTiny85 の出力でトランジスタを駆動し、赤外線 LED を大電流で光らせる、赤外線送受信シールドを独自に開発しました。シールドのピン配列は本家版と互換になっていますので、そのまま差し替えて使うこともできます。基板上のジャンパパターンも本家版と互換で、組み立ての際は J1 と J4 をショートさせる必要があります。

本家版 Infrared Shield にはありませんが、手動での操作ができるように、シールド基板上にスイッチを1つ追加しました。ただ ATTiny85 の I/O ピンは PB0~PB5 の6ピンしかありませんが、PB3,PB4 は USB 用に占有されていて、PB1 には元々赤色 LED と電流制限抵抗(R5, 回路図には値がないですが、実測 700Ω 程度) が接続されていて、ピンに空きがありません。そこで表示用の赤色 LED が接続されている PB1 に、LED と並列にスイッチを入れて、PB1 を入出力共用にしています。PB1 は通常は出力ピンですが、時分割で短時間入力ピンとしても利用しています。スイッチを ON にしたときに出力がぶつかってショートしないように、スイッチには直列に200Ωの抵抗を入れています。スイッチを ON にすると、この200Ωの抵抗を通して赤色 LED が薄く点灯してしまいますが、ピンを入出力共用にしている都合上やむを得ません。

なお、本来の Digispark では PB5 が入出力ピンとして利用できますが、クローン品では PB5 がリセットのままになっているケースがあるため、どちらのボードでも使用できるように、今回は PB5 は使用していません。

今回の AVR のピンの用途は下記の表の通りです。

Tiny85ピン番号I/O用途
1PB5リセット
2PB3USB-
3PB4USB+
4GNDGND
5PB0赤外線LED
6PB1赤色LED/スイッチ
7PB2赤外線受信モジュール
8VCCVCC(5V)

赤外線 LED と受光モジュール

赤外線 LED は、できるだけ赤外線が広角に照射されるという観点で TSAL4400 を選択しました。データシートでは指向角が±25度となっており、受光部を正確に狙わなくても動作します。

赤外線受光モジュールは同じようなスペックの製品でもノイズへの強さ、動作電圧や電圧変動への強さ、受信した信号を正確に再現するかなど、かなりの特性の差があります。今回は信号の再現性を重視して、TSOP38238 を選択しました。

今回使用した赤外線 LED, 受光モジュールは海外製品で、入手性があまりよくないのが難点です。

マイコン側ファームウェア

PC側制御プログラム

Pukiwiki プラグイン

回路図

図をクリックすると拡大表示されます。左が DigiSpark の回路図、右が赤外線送受信シールドの回路図です

回路図1.png 回路図2.png


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS