• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

だれす@ずら。のブログ一覧

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秒)その間赤外線の入力がなければ終了。
赤外線の入力があったら、シリアル通信で出力。
で、出力データの整頓プログラムつきです。


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


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

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

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

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



Posted at 2016/01/26 18:01:57 | トラックバック(0) | Arduino | 日記

プロフィール

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

ユーザー内検索

<< 2016/1 >>

     12
345 678 9
10111213 141516
17181920212223
24 25 26272829 30
31      

リンク・クリップ

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

愛車一覧

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