Wi-Fi対応IRレプリケーター:家電リモコン信号を学習・再送信して遠隔操作
プロジェクト概要
赤外線リモコンの信号を受信・解析し、Wi-Fi経由で再送信することで、スマートフォンや音声アシスタントから家電を操作できる「IRレプリケーター」をParticle Photonで構築しました。Ken Shirriff氏のIRremoteライブラリを移植し、生パルス列(マイクロ秒単位のON/OFF持続時間)を取得・保存・再生します。NEC/RC5/RC6等の主要プロトコルに加え、エアコン等の長い独自コードも生データとして扱えます。
必要な部品
| 部品 | 数量 | 備考 |
|---|---|---|
| Particle Photon (Wi-Fi MCU) | 1 | ESP8266/ESP32/Arduinoでも代替可 |
| IR受信ダイオード (TSOP38238等) | 1 | 38kHz変調対応 |
| IR送信LED (940-950nm) | 1 | 高出力タイプ推奨 |
| NPNトランジスタ (2N2222等) | 1 | LED駆動用 |
| 抵抗 220Ω, 10kΩ | 各1 | LED電流制限・ベース抵抗 |
IR信号の基礎知識
- マーク: 38kHz等で変調されたキャリアが出力されている区間
- スペース: キャリアが停止している区間
- リモコンボタンごとに固有のマーク/スペース列(典型12〜32bit)を送信
- 長押し時:NECはリピートコード、RC5/6はトグルビットで区別
- 受信側は変調を復調し、ロジックレベルのマーク/スペース列として出力
受信回路とデコード手順
- IR受信ダイオードのOUTをPhotonのデジタルピン(例: D2)に接続、VCC/GNDを3.3V/GNDへ
- ファームウェア書き込み後、Particle CLIでシリアルモニターを開く:
particle serial monitor - リモコンを受信ダイオードに向けボタンを押す
- コンソールに生パルス列(μs単位)が出力される
出力例(最初のギャップ時間は無視)
8500, 4050, 500, 1500, 550, 500, 550, 450, 550, 500, 500, 1550, ...
→ マーク/スペース交互。約500μs=短、1500μs=長、4000μs以上=ヘッダー/リピート区切り
送信回路(高出力版:到達距離約10m)
トランジスタでIR LEDをスイッチングし、ベース抵抗で電流制御。コレクタにLED、エミッタをGND、ベースをMCUピン経由で抵抗接続。電源は5Vラインから取るとより高出力。
パルス列の可読化・保存フォーマット
生パルス列を以下のルールで符号化し、配列としてコードに埋め込み:
- ~500μs →
0 - ~1500μs →
1 - ~4000μs →
2 - ~8500μs →
3
送信直前に `convertToPulseDuration()` で元のμs値に復元し、`irsend.sendRaw()` で送信。
ファームウェア構成(GitHub)
全コードは github.com/gusgonnet/infraredReplicator に公開。主な関数:
- `decodeIR()` : 受信割り込みでパルス列取得・シリアル出力
- `sendRaw(pulses, len, 38kHz)` : 生パルス送信
- `convertToPulseDuration(encoded[])` : 符号化配列→μs配列変換
- Particle Cloud Function 登録でHTTP経由送信可能(Blynk/IFTTT/Google Assistant連携に最適)
応用・拡張
- Blynkアプリでボタン配置し、タップで送信
- Google Assistant / Alexa 連携(IFTTTやParticle Cloud Function経由)
- Porter 等のMQTTブローカーで複数デバイス統合制御
- エアコン・テレビ・照明・プロジェクター等、手元のリモコンを全て統合
- 定時実行・温度連動・在室検知連動などオートメーション化
参考リソース
- Reverse engineering an air conditioner IR remote control protocol
- Using arbitrary remotes with the arduino IRremote library
- Understanding IR Protocol of Air Conditioner's Remotes
- Adafruit IRチュートリアル
製造プロセス
- Leap Motionで操作するレーザー戦車の製作 – Arduino、Raspberry Pi、RGB LED
- UnifiedWater v1 - 完全なArduino水質センサーキット
- Raspberry PiとArduinoで作るWi-Fiインターネットラジオ:世界中の局をストリーミング
- GSM接続対応ポータブル投票システム「Mobile Vote Box」
- 貨車がボッシュのコンディションモニタリングでインテリジェントIoT資産へ進化
- コネクテッドエアコンプレッサーがインダストリー4.0とIoTを推進
- エピソード7:IoT & インダストリー4.0——スマート接続コンプレッサ解説
- IoTと5G:コネクテッドカーの未来を駆動する
- スマートホームのセキュリティ確保:なぜ生体認証がIoTサイバーセキュリティに不可欠か
- モノのインターネット:コネクテッドワールドを織りなす
- 教育の革命:IoT活用で学習と教授を強化