• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+
イイね!
2016年01月26日

赤外線リモコンの解析

赤外線リモコンの解析 昨日に引き続き、引き篭もってますw

暇さえあれば、スクフェスやって、エアガン撃って、ゴロ寝して・・・

完璧に駄目人間ですね!(ぉ

そんな感じのお休みですが、またまたArduinoを使って実験君です。

今日は赤外線リモコンが吐き出すデータをハッキングして見よう。って内容です。


Arduinoのセットに入ってた、赤外線リモコンと赤外線受光モジュール。

参考にしたのは、こちらのサイトです。

ほぼ、同じ中華製のリモコン(表面が違うだけ?)だと思ったので、そのまま使えるだろうと思って、スケッチをコピペして、回路を接続。



・・・うまく動作しない・・・


どうやら、赤外線受光モジュールの配線を間違ってたらしい。

直してつけて見たけど、まったく反応なし。


・・・どうやら誤配線で壊したらしい・・・orz


さてどうしよう?と思っていたところに、そういえば昔赤外線送受信モジュールを遊びで買った覚えがあったなぁ~とパーツ箱をあさって見る。



・・・あった。



基盤から半田を温めて抜き取る。
そのままだとブレッドボードにうまく刺さらないので、配線を接続。

こんな感じになりました(汗


Fritzingのイラストだとこんな感じ。

=================================================
//IRリモコン解析用

#define BUTTON 9
#define IR_IN 10
#define IR_DATA_SIZE 100

byte ir_data[IR_DATA_SIZE];
byte ir_code[32];

void setup() {
Serial.begin(9600);
pinMode(IR_IN, INPUT_PULLUP);
pinMode(BUTTON, INPUT_PULLUP);
}

void loop() {
if(digitalRead(BUTTON) == 0){
digitalWrite(13,HIGH);
ir_read(IR_IN);
ir_print_1();
ir_print_2();
digitalWrite(13,LOW);
}else{
digitalWrite(13,LOW);
}
}

//データ受信
void ir_read(byte ir_pin){
for(int i = 0; i < IR_DATA_SIZE; i++){
ir_data[i] = 0;
}
unsigned long now, last, start_at;
boolean stat;
start_at = micros();

//2.5秒以上入力がなかったら終了
while(stat = digitalRead(ir_pin)){
if(micros() - start_at > 2500000) return;
}

start_at = last = micros();
for(int i = 0; i < IR_DATA_SIZE; i++){
//入力が反転するまで待ち(上限25ms)
while(1){
if(stat != digitalRead(ir_pin)) break;
if(micros() - last > 25000) return;
}
now = micros();
ir_data[i] = (now - last)/100; //byteに格納するあため
last = now;
stat = !stat;
}

}

//生データ出力
void ir_print_1(){
for (int i = 0; i < IR_DATA_SIZE; i++){
Serial.print(ir_data[i]);
if(ir_data[i] < 1) break;
Serial.print(",");
}
Serial.println();
}

//解析データ出力
void ir_print_2(){
int j = 0;
byte result = 0;

//1or0判定
for (int i = 3; i < 66; i+=2){
if(ir_data[i] > 10){
ir_code[j] = 1;
}else{
ir_code[j] = 0;
}
j++;
}

//データを数値化
for (int i = 0; i < 8; i++){
if(ir_code[i+16] == ir_code[i+24]){ //反転データチェック
result = 0;
break;
}else{
bitWrite(result,i,ir_code[i+16]);
}
}

//出力
for(int i = 0; i < 32; i++){
Serial.print(ir_code[i]);
Serial.print(",");
}
Serial.println();
Serial.println(result,DEC);

}
===========================================

ボタンを押すと入力待機(2.5秒)その間赤外線の入力がなければ終了。
赤外線の入力があったら、シリアル通信で出力。
で、出力データの整頓プログラムつきです。


シリアルモニターの出力はこんな感じです。


参考にしたサイトのリモコンと同じデータビットを吐き出してるのがわかりました。
まぁ、同じ中華製なので妥当な結果ですね。

この受信データをプログラムで動的に出力させることが出来れば、リモコンで、モーターを動かしたりする事が出来るようになります。
今回はその足がかりとして、サンプルスケッチの構文解析がメインですね。

データビットの解析が出来るようになったら、リモコンコピー機とか色々作れるようになりますね。

とりあえず、今日の研究結果は以上です。



ブログ一覧 | Arduino | 日記
Posted at 2016/01/26 18:01:57

イイね!0件



タグ

今、あなたにおすすめ

ブログ人気記事

5月8日、令和7年度自動車税納税
どんみみさん

キリ番Get
tatuchi(タッチです)さん

5/20)皆さん、おはようございま ...
PHEV好きさん

お疲れ様でした🙇
ゆう@LEXUSさん

届いた♪
あきちちさん

🎉祝10周年
Nobu0259さん

この記事へのコメント

ユーザーの設定によりコメントできません。


プロフィール

「禁断の果実(りんご)の誘惑 http://cvw.jp/b/2036390/44515607/
何シテル?   10/28 00:21
放置プレイ実施中 ぼちぼち復帰します。 改名しました。
みんカラ新規会員登録

ユーザー内検索

<< 2025/5 >>

    123
45678910
11121314151617
18192021222324
25262728293031

リンク・クリップ

プッシュスタートスイッチ 
カテゴリ:その他(カテゴリ未設定)
2021/02/06 22:50:27
オートパーラー上尾 コンビーフサンドはここだけ 
カテゴリ:その他(カテゴリ未設定)
2017/12/17 20:49:21
オートレストラン 鉄剣タロー レトロ自販機の牙城@サイタマー 
カテゴリ:その他(カテゴリ未設定)
2017/12/17 20:49:16

愛車一覧

スズキ スペーシアカスタムハイブリッド スズキ スペーシアカスタムハイブリッド
パレットがポンコツ過ぎて買い替える予定でしたが、事故って直すのも勿体ないと、前倒しで買い ...
スズキ パレット スズキ パレット
パレットに乗り換えました。 憧れだった軽です(ぇ ・乗り降りがしやすい ・頭がぶつから ...
日産 シルビア 苺たん (日産 シルビア)
S15シルビアを新車で乗って19年・・・ 当時周りが180SXやらS14やらに乗って ...
ヘルプ利用規約サイトマップ

あなたの愛車、今いくら?

複数社の査定額を比較して愛車の最高額を調べよう!

あなたの愛車、今いくら?
メーカー
モデル
年式
走行距離(km)
© LY Corporation