デビアンな生活 赤外線リモコン解析

デビアンな生活

日本語コンソールベースのDebianTIPS集として始めたが、結局LXDEになってしまった。

赤外線リモコン解析

H8-3069Fを購入したのに、まずはOSから離れてしまったのには、わけがあります。
ネットで情報をあさっていて、H83069Fさんのサイト(http://www.geocities.jp/h83069f/index.html)
をみると、赤外線リモコンの回路が載っている。簡単、しかもデバイスが安い。
赤外線LEDや赤外線受信モジュールが、100円だなんて知らなかった。さっそく購入して、扇風機を動かすぞ。
赤外線リモコン受信モジュールPL-IRM1261-C438(I-04169,¥100)
赤外線LED[5mm][940nm][55mW/sr]OSI5LA5113A(10個入)(I-04311,¥100)
最終的な回路は以下の通りというか、上記のサイトとほぼ同じ。
赤外線リモコン回路図
プログラムも上記のサイトを参考にして、YAMAZANの扇風機のリモコンコードを解析してみた。
ググった情報では、赤外線リモコンのフォーマットは、基本的にNEC式、家電製品協会式、ソニー式らしいが、リーダもないし、データのコード化も合わない。スキャンに誤差があるのかと、プログラムをソフトスキャンから、irq4割り込みに変更してみたが、やはり同じデータが得られた。ソニーのリモコンを解析するとソニー方式のパターンになっている雰囲気なので、とりあえずパルス・フォーマットをべたコピーして送信したら、扇風機がちゃんと動いた。書くとあっさりしているが、ほんとに動くのか疑心暗鬼のなかで、はじめて動いたときは感激した。あとで、送信プログラムをいろいろ調整してみると、搬送波の周波数もデューティ比も結構シビアで、試行錯誤で動いたのはラッキーだったと思った。
解析というより、パルスのコピーなので、最終的に16ビットタイマのインプットキャプチャ割り込みを使って、自分的にはカッコよく書き直してみた。これが、簡単にできるMESシステムと開発環境に改めて感激。

// 赤外線リモコン解析プログラム by K Fujio 2012
// 解析には16ビットタイマー1を8分周して使用します。
// カウントはインプットキャプチャ割り込みで取り込みます。
// タイマのオーバーフロー(約26ms)か、DATASIZE/2サイクルで終了します。
// ただし、最低1回の赤外線信号がなければ終了しません。
// タイマが競合しないならMESの割り込みは止めなくてもたぶん大丈夫。
#include <mes2.h>
#include <h8/reg3067.h>

#define DATASIZE 500
static unsigned short int p_value[DATASIZE];
static unsigned short int count;

#pragma interrupt
void int_imia1(void){
load_segment(28);
if(count TISRA &= 0xfd; //IMFA1 allow
}

int main(){
unsigned short int i;

printf("IR analysis\r");
count = 0 ;
set_handler(28, int_imia1);

// int_disable();
TSTR &= 0xfd; //stop timer 1
TSNC = 0xf8;
TCR1 = 0x80 | 0x20 | 0x03; // GRA clear and x8
TIOR1 = 0x8f; // GRA input CATURE
TISRA = 0xa0; //IMFA1 allow
TISRC &= 0xdd;

TSTR |= 0x02; //start timer 1
while(count < DATASIZE){
// printf("%d-", count);
if(TISRC & 0x02) {
if (count==0) {
TISRC &= 0xfd;
} else {
p_value[count]=0;
break;
}
}
}
TSTR &= 0xfd; //stop timer 1
// int_enable();

printf("\r-DATA-\r");
for(i=0; i printf("%d\r",p_value[i]);
if(p_value[i]==0) break;
}
printf("Count=%d\r", i);
}

スポンサーサイト

コメント

承認待ちコメント

このコメントは管理者の承認待ちです

  • 2014/01/10(金) 01:04:39 |
  • |
  • #
  • [ 編集]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://kfujio.blog78.fc2.com/tb.php/96-7643cac9
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad