赤外線を使ってリモコン操作できる室内灯を操作しよう

arduinoの工作にあたり私は作りたいものがあります。簡単に言うとiPhone(アプリ)からエアコンを操作出来るようになりたい!そのためには幾つかの課題をこなす必要があります。

 

その課題とは

  1. 赤外線でエアコンへの送信と操作
  2. iPhoneアプリの開発
  3. アプリからの送信情報を受信してarduinoを動作させる

 

なぜ室内灯なのか

エアコンではなくなぜ室内灯なのか?色々と調べているとエアコンはやや複雑とのことなので、多少簡易な室内灯を試してみようと思います。私の家は2つの室内灯がありそれを1つのリモコンで操作しているのですが、いちいちチャンネルを変えてそれぞれ操作しています。

ちょっと面倒なので一度に操作出来るようになりたい!

尚、今回必要な物は赤外線LED以外全てarduinoのエントリーキットで揃えられるお手軽なものです。同じような悩みをおもちの方がいましたら、これを期に初めてみましょう!!

 

 

 

ちなみに我が家の室内灯はPanasonicのHH-LC562A。リモコンはHK9478です。

 

使うもの

  • マイコンボード(arduino UNO Rev3)
  • 赤外リモコン線受信モジュール× 1
  • 抵抗(330Ω) × 1
  • リモコン × 1
  • 赤外線LED × 1
  • ジャンパーワイヤー ×  6

今回の仕様

  • リモコンの1を押すと室内灯1が点灯
  • リモコンの2を押すと室内灯2が点灯
  • リモコンの3を押すと室内灯1,2が点灯
  • リモコンの4を押すと室内灯1が消灯
  • リモコンの5を押すと室内灯2が消灯
  • リモコンの6を押すと室内灯1,2が消灯

 

作業手順

  1. 組立
  2. 赤外線から各ボタンの赤外線を受信
  3. 使用するリモコンの受信と室内灯への送信するプログラム開発

 

組立

写真ではこんな感じです。

ファイル 2016-01-02 2 34 24 ファイル 2016-01-02 2 34 04

図ではこんな感じ

Untitled Sketch_ブレッドボード

赤外線から各ボタンの赤外線を受信

さて、赤外線を受信します。

普通に開発すると恐ろしい時間が掛かるためGitHubで公開されているArduino-IRremoteを利用します。

zipをダウンロードしたら、スケッチ > Include Library > Add .zip Libraryでダウンロードしたファイルを指定します。

その後、zipにあるサンプルコードの以下をコピペしてコンパイル。

[c]
/*
* IRremote: IRrecvDump – dump details of IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
* JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
* LG added by Darryl Smith (based on the JVC protocol)
*/

#include <IRremote.h>

/*
* Default is Arduino pin D11.
* You can change this to another available Arduino Pin.
* Your IR receiver should be connected to the pin defined here
*/
int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}

void dump(decode_results *results) {
// Dumps out the decode_results structure.
// Call this after IRrecv::decode()
int count = results->rawlen;
if (results->decode_type == UNKNOWN) {
Serial.print("Unknown encoding: ");
}
else if (results->decode_type == NEC) {
Serial.print("Decoded NEC: ");

}
else if (results->decode_type == SONY) {
Serial.print("Decoded SONY: ");
}
else if (results->decode_type == RC5) {
Serial.print("Decoded RC5: ");
}
else if (results->decode_type == RC6) {
Serial.print("Decoded RC6: ");
}
else if (results->decode_type == PANASONIC) {
Serial.print("Decoded PANASONIC – Address: ");
Serial.print(results->address, HEX);
Serial.print(" Value: ");
}
else if (results->decode_type == LG) {
Serial.print("Decoded LG: ");
}
else if (results->decode_type == JVC) {
Serial.print("Decoded JVC: ");
}
else if (results->decode_type == AIWA_RC_T501) {
Serial.print("Decoded AIWA RC T501: ");
}
else if (results->decode_type == WHYNTER) {
Serial.print("Decoded Whynter: ");
}
Serial.print(results->value, HEX);
Serial.print(" (");
Serial.print(results->bits, DEC);
Serial.println(" bits)");
Serial.print("Raw (");
Serial.print(count, DEC);
Serial.print("): ");

for (int i = 1; i < count; i++) { if (i & 1) { Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
}
else {
Serial.write(‘-‘);
Serial.print((unsigned long) results->rawbuf[i]*USECPERTICK, DEC);
}
Serial.print(" ");
}
Serial.println();
}

void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
dump(&results);
irrecv.resume(); // Receive the next value
}
}

[/c]

転送が終わったら、ツール > シリアルモニターを選択し、別ウィンドウが表示されたら、赤外線リモコン受信モジュールに向けてリモコンを操作してみましょう。
したの様なコードがボタンを押す度に表示されたら成功です。

[text]
CA0A68FC
Unknown encoding: CA0A68FC (32 bits)
Raw (84): 3400 -1750 400 -450 400 -450 400 -1350 400 -1300 400 -450 450 -1300 400 -450 400 -450 450 -450 400 -1300 400 -450 450 -450 400 -1300 400 -450 450 -1300 400 -450 400 -1350 400 -450 400 -450 400 -1350 400 -450 400 -450 400 -450 450 -450 400 -1300 450 -1300 400 -1300 450 -400 450 -1300 400 -1300 450 -450 400 -450 400 -450 450 -1300 400 -1300 450 -1300 400 -1300 450 -1300 400 -450 400 -450 450
5DF2C18E
Unknown encoding: 5DF2C18E (32 bits)
Raw (84): 3400 -1750 450 -400 500 -400 450 -1250 450 -1300 450 -400 400 -1300 450 -450 400 -450 400 -450 450 -1300 400 -450 400 -450 450 -1300 400 -450 400 -1300 450 -450 400 -1300 450 -450 400 -450 400 -1300 450 -450 400 -450 400 -450 400 -450 450 -450 400 -450 400 -1300 450 -450 400 -1300 400 -1350 400 -450 400 -450 400 -1350 400 -450 400 -1300 450 -1300 400 -1300 450 -1300 400 -450 400 -450 450
1B9C2A92
[/text]

この3,4桁の数字が必要になります。
では、それぞれの数字を確認しましょう。

[text]
//室内灯1の点灯
3400 -1750 450 -400 500 -400 450 -1250 450 -1300 450 -400 450 -1250 500 -400 450 -400 450 -400 500 -1250 450 -400 450 -400 500 -1250 450 -400 450 -1300 450 -400 450 -1250 500 -400 450 -400 450 -1250 500 -400 450 -400 400 -450 400 -450 450 -450 400 -450 400 -1300 450 -1300 400 -450 400 -1350 400 -450 400 -450 450 -1300 400 -450 400 -1300 450 -450 400 -450 400 -1300 450 -450 400 -450 400

//室内灯1の消灯
3500 -1650 500 -400 500 -350 500 -1200 500 -1250 500 -350 500 -1250 500 -350 450 -400 500 -350 500 -1250 450 -400 450 -450 400 -1300 400 -450 400 -1350 400 -450 400 -1350 350 -500 400 -450 400 -1350 350 -500 400 -450 400 -450 450 -450 450 -1250 450 -1300 450 -1250 450 -1300 450 -400 450 -1250 450 -450 450 -400 450 -400 500 -1250 450 -1250 450 -400 450 -450 450 -1250 500 -350 500 -400 450

//室内灯2の点灯
3500 -1650 500 -400 450 -400 500 -1200 500 -1250 500 -350 500 -1250 450 -400 500 -350 500 -350 500 -1250 500 -350 500 -350 500 -1250 500 -350 500 -1250 450 -400 450 -1250 500 -400 450 -400 450 -1250 500 -400 450 -400 450 -400 450 -400 500 -400 450 -400 450 -1250 500 -400 450 -1250 500 -1250 400 -450 400 -450 450 -1300 400 -450 400 -1300 450 -1300 400 -1300 450 -1300 400 -450 450 -450 400

//室内灯2の消灯
3450 -1700 450 -450 400 -450 400 -1300 450 -1300 400 -450 450 -1300 400 -450 400 -450 450 -400 450 -1300 400 -450 450 -400 450 -1300 400 -450 450 -1300 450 -400 450 -1250 450 -450 450 -400 450 -1250 450 -450 450 -400 450 -400 450 -450 450 -1250 450 -1250 500 -1250 450 -400 500 -1250 450 -1250 500 -400 450 -400 500 -350 500 -1250 450 -1250 500 -1250 500 -1200 500 -1250 500 -350 450 -400 500

//リモコンの1
9000 -4550 500 -600 550 -600 500 -600 550 -600 500 -600 550 -600 550 -550 550 -600 550 -1700 550 -1700 550 -1700 550 -1700 550 -1700 550 -1700 550 -1700 550 -1700 550 -550 550 -600 550 -1700 550 -1650 600 -550 550 -550 600 -550 550 -550 550 -1700 550 -1650 600 -550 550 -550 600 -1650 550 -1700 600 -1600 650 -1600 600

//リモコンの2
8900 -4450 600 -550 550 -550 600 -500 600 -550 550 -550 600 -500 600 -550 550 -550 600 -1650 600 -1650 550 -1650 650 -1600 600 -1650 650 -1600 600 -1650 550 -1650 600 -550 550 -550 600 -500 600 -1650 600 -1650 550 -550 600 -500 600 -550 550 -1650 600 -1650 600 -1650 600 -500 600 -550 550 -1650 600 -1650 600 -1650 600

//リモコンの3
8900 -4450 600 -550 550 -550 600 -500 600 -550 550 -550 600 -500 600 -500 650 -500 600 -1650 550 -1650 600 -1650 600 -1650 600 -1650 550 -1650 650 -1600 600 -1650 600 -500 600 -1650 600 -1650 600 -1650 550 -1650 650 -500 600 -1650 600 -500 600 -1650 550 -550 600 -500 600 -550 550 -550 600 -1650 600 -500 600 -1650 600

//リモコンの4
9000 -4450 600 -500 650 -500 600 -500 600 -500 600 -550 600 -500 600 -500 600 -550 550 -1700 600 -1600 650 -1600 600 -1650 600 -1650 550 -1700 600 -1600 650 -1600 600 -500 650 -500 600 -500 600 -1650 600 -500 600 -550 550 -550 600 -500 600 -1650 600 -1650 600 -1650 600 -500 600 -1650 600 -1650 550 -1650 650 -1600 600

//リモコンの5
8900 -4450 600 -550 600 -500 600 -500 600 -550 550 -550 600 -500 600 -550 550 -550 600 -1650 600 -1650 550 -1700 600 -1600 650 -1600 600 -1650 600 -1650 550 -1700 600 -500 600 -500 600 -1650 600 -1650 600 -1650 550 -550 600 -500 600 -550 550 -1650 650 -1600 600 -550 550 -550 600 -500 600 -1650 600 -1650 600 -1650 600

//リモコンの6
9000 -4450 550 -550 600 -500 600 -550 550 -550 600 -500 600 -550 550 -550 600 -500 650 -1600 600 -1650 600 -1650 550 -1650 600 -1650 600 -1650 600 -1650 600 -1650 600 -500 600 -1650 600 -500 650 -1600 600 -1650 600 -500 600 -1650 600 -500 650 -1600 600 -550 600 -1600 600 -550 550 -550 600 -1650 600 -500 600 -1650 600

[/text]

アプリからの送信情報を受信してarduinoを動作させる

 

余談

この数字の羅列を配列にするためにカンマを1つ1つ入れていかないと行けないのですが、面倒くさい!!

なので適当なテキストエディター開きましょう。

この数字の羅列はそれぞれ必ず1の位が0そしてその次の文字がスペースなので『0 』を『0 ,』に一斉置換します。これならちょっと楽に!!

Previous Post