
2,000円以下で始める!Arduinoを使い赤外線パターンを解析する方法
前回紹介した、つまようじを使い隠し音声を鳴らす方法でも、全パターンの音声再生を試すことは可能ですが、TONGARISMではあくまで技術的に、シフトブレスから送信される赤外線パターンを解析します。
オシロスコープやロジックアナライザなどの機材があれば、時間を掛けずに簡単に解析することは可能です。ただし、これらの機材は高価なものであるため、技術力を以って極力お金を掛けずに解析する方法として、安価なArduino(アルデュイーノ)というワンボードマイコン(マイコンと入出力ピンを備えた1枚の基板)を使いました。
準備
使用機器
- Arduino(アルデュイーノ)
マイコンと入出力ピンを備えた基板です。写真はTONGARISMで使用したArduino Unoというモデルで、Amazonで3,240円で販売されています。海外から発送となる安価なモデルであれば、1,000円以下で販売されています。
- 赤外線受信モジュール(PARA Light PL-IRM0101-3)
テレビのリモコン等で使用されている赤外線(周波数:38kHz)を受信するためのモジュールです。秋月電子通商では110円で販売されています。
- ブレッドボード
各種電子部品やジャンパーワイヤをボードの穴(ソケット)に差し込むだけで、はんだ付けをしなくても、手軽に電子回路を組むことの出来る基板です。秋月電子通商では、ジャンパーワイヤとセットで600円で販売されています。
- ジャンパーワイヤ
ソケット間をつなぐ電線で、直接ブレッドボードに差し込むことができます。
金額
必要な機材は、このように2,000円以下で揃えることが可能です。
機材名 | 使用金額 | 目安金額 |
---|---|---|
合計 | 3,950円 | 1,710円 |
Arduino | 3,240円 | 1,000円 |
赤外線受信モジュール | 110円 | 110円 |
ブレッドボード+ジャンパーワイヤ | 600円 | 600円 |
開発環境
- Arduino IDE
Arduinoのソフトウェア開発環境です。Arduinoの公式サイトから誰でも簡単に入手することができます。このArduino IDEを使ってプログラムを作成し、Arduinoを動作させます。
赤外線パターンの解析
回路図
この回路図のようにブレットボードとジャンパーワイヤを使い、Arduinoと赤外線受信モジュールを接続します。今回の解析ではデジタル入出力ピンの2番ピンを使いました。赤外線受信モジュールが赤外線を受信した際に出力が変化するため、2番ピンの状態を監視することで赤外線パターンを解析することができます。
赤外線解析プログラム
赤外線受信モジュールで受信したパターンを確認するためのプログラムを作成しました。このプログラムでは、2番ピンの状態を監視し、その状態が変化する度に経過時間(μs)をコンマ区切りでArduino IDEのシリアルモニタ上に出力しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
define IRpin 2 // 赤外線受信モジュール接続ピン番号 // 初期化処理 void setup() { Serial.begin(57600); // パソコン(ArduinoIDE)とシリアル通信の準備を行う pinMode(IRpin,INPUT); // 赤外線受信モジュールに接続したピンをデジタル入力に設定 } // メインの処理 void loop() { unsigned long t, pre_t; int state, preState; preState = digitalRead(IRpin); // 現在の状態を取得 pre_t = 0; while(1) { state = digitalRead(IRpin); if(state != preState) { // 状態が変化するまで待つ preState = state; t = micros(); // 時間(マイクロ秒を)を記録 if(pre_t != 0) { Serial.print(t - pre_t); // その状態が継続した時間を出力 Serial.print(", "); }; pre_t = t; } } } |
受信パターンの経過時間
赤外線解析プログラムを使い、シフトブレスから送信される赤外線を受信すると、シリアルモニタ上に経過時間が出力されました。
- シフトスピード
6100, 556, 1532, 548, 1540, 544, 508, 1580, 1536, 552, 1536, 548, 1536, 552, 1536, 544, 1536, 552, 532, 1556, 1536, 552, 532, 1552, 532
- シフトマックスフレア
6124, 504, 1584, 500, 1588, 528, 524, 1552, 1552, 540, 1572, 520, 1568, 508, 460, 1624, 1580, 504, 532, 1560, 1552, 532, 1576, 508, 564
波形解析
出力された経過時間を、HIGH/LOWの波形として整理しました。HIGHもしくはLOWになる時間の最小単位が約500μsとなっていたため、500μsを1フレームと定義しています。
これらの波形を比べると、スタートパターンの先頭と思われる6,000μsのHIGHと500μsのLOWの後、2,000μs(4フレーム)を一区切りとして、
- ①1,500μsのHIGHと500μsのLOW
- ②500μsのHIGHと1,500μsのLOW
の2種類のパターンが出力されていることが分かりました。
また、スタートパターンの後の2,000μsをパターン種別と仮定して、残りの9つの区切りについて①を0、②を1としシフトカーパターンを2進数にすると、「シフトスピード:000001011」、「シフトマックスフレア:000101001」と表すことができます。
更にこの2進数を10進数にすると、シフトカーの裏に記載されているシフトカー番号と一致しています!
名称 | 2進数 | 10進数 |
---|---|---|
シフトスピード | 000001011 | 011 |
シフトマックスフレア | 000101001 | 041 |
このシフトカーパターンを変えることで、色々なシフトカーの音声を鳴らすことができそうです。
次回は…
解析した波形を元に、今流行りのRaspberry Piを使ってシフトブレスなしで音声を鳴らします!
赤外線プログラムを教えてください