赤外線リモコン信号の仕組み
38kHz・MARK/SPACE・受信モジュールの中身を、ゼロから整理する
1. 信号は「2段階の構造」になっている
エアコンのリモコンが出す赤外線信号は、一見「光っている/消えている」の繰り返しに見えますが、実は2つのレイヤーが重なっています。
赤外線 LED を1秒間に38,000回点滅させる「目印」です。エアコンの受信部は「この38kHzのリズムで変化している光」だけを本物の信号と認識します。
38,000回/秒= 1回の点滅に約 26µs(マイクロ秒)
38kHzの搬送波を「一定時間出す(MARK)」「一定時間止める(SPACE)」という時間パターンで、電源ONや温度設定などの命令を表現します。
MARKとSPACEの長さの組み合わせが「0」「1」「ヘッダー」などのデータを作ります。
「MARK = GPIOをHIGHにする、SPACE = GPIOをLOWにする」と思いがちですが、これは不正確です。
- MARK = GPIOを38kHzでHIGH/LOW切り替え(≒ PWM動作)。赤外線LEDは高速でチカチカしている。
- SPACE = GPIOをLOWに固定(または一定状態を保つ)。赤外線LEDは消えている。
2. 38kHz は「光の波の周波数」ではない
「赤外線も波だし、38kHzも波なの?どっちがどっち?」という混乱はよくあります。結論から言うと、桁が全然違います。
| 波の種類 | 周波数 | 何の波? | イメージ |
|---|---|---|---|
| 赤外線光そのもの | 約 300,000,000 MHz (300テラヘルツ) |
光が空間を進むときの電磁波の振動 → 人間の目には見えない |
光の「色」を決める |
| LEDの点滅(38kHz) | 38 kHz (0.038メガヘルツ) |
LEDの電源スイッチのON/OFF → リモコンの「目印」 |
光の「明滅」を決める |
1億倍くらい違います。38kHzは「光の色(波長)を決める周波数」ではなく、あくまで「LEDをチカチカさせるスイッチングの速さ」です。
3. なぜ38kHz変調が必要なのか
ここまでで「38kHzはLEDの点滅の速さ」とわかりました。では次に、「なぜわざわざ38kHzで点滅させる必要があるのか?」という疑問に答えます。
3-1. もし38kHz変調がなかったら?
リモコンが「光る/消える」だけで信号を送ると仮定します。太陽光は「ずっと光っている」ので、受信側は「リモコンがONを送っているのか、ただ太陽が当たっているのか」わからなくなります。これでは信号として使えません。
3-2. 38kHz変調は「人為的な目印」
38kHz変調を使うことで、以下のように区別できます:
| 光源 | 光のパターン | 周波数成分 | 受信側の判断 |
|---|---|---|---|
| 太陽光 | ずっと光っている(直流) | 0Hz(直流成分のみ) | 38kHz成分なし → 無視 |
| 蛍光灯 | 50Hz/60Hz でちらつく | 50Hz / 60Hz / 100Hz / 120Hz | 38kHz成分なし → 無視 |
| リモコン(本物) | 38kHz で高速点滅 | 38kHz + その周辺 | 38kHz成分あり → 検出! |
つまり、38kHzは「これは人間が意図的に送った信号ですよ」という目印です。受信モジュール内部のバンドパスフィルタが38kHz付近以外をカットするので、太陽光や蛍光灯のノイズは出力に影響しません。
4. 受信モジュールの中で何が起きているか
受信モジュール(PL-IRM1838Bなど)に赤外線が入ったとき、内部では以下の処理が行われています。
4-1. なぜ太陽光を無視できるのか?
太陽光や蛍光灯は「常に光っている」(直流に近い)か、「50Hz/60Hzでちらついている」だけです。バンドパスフィルタは38kHz付近以外をカットするので、これらのノイズは出力に影響しません。
| 光源 | 光の強さの変化 | 受信モジュールの反応 |
|---|---|---|
| 太陽光 | ほぼ一定(直流) | フィルタでカット → 無視 |
| 蛍光灯 | 50Hz/60Hz でちらつく | フィルタでカット → 無視 |
| リモコン(本物) | 38kHz で点滅 | フィルタを通過 → 検出 |
5. 正しい用語の整理
これまでの説明で出てきた用語を、もう一度正確に整理します。
38kHzの搬送波を出している期間
GPIOでは38kHzでHIGH/LOWを切り替える(PWM的な動作)
赤外線LEDは高速でチカチカしている
38kHzの搬送波を止めている期間
GPIOではLOWに固定(または一定状態を保つ)
赤外線LEDは消えている
マイコンのGPIOでは、実装上「MARK中はHIGH、SPACE中はLOW」と扱うことが多いですが、これはあくまで受信モジュールの出力信号(デジタル化後)の話です。
送信側では、MARK中はGPIOを38kHzでスイッチングさせ、SPACE中はGPIOをLOWに固定します。つまり「MARK = HIGH」ではなく、「MARK = 38kHz変調中」というのが正確です。
6. エアコンリモコンの「学習方式」とは
日立の純正リモコンRAR-8P2の通信プロトコル(どのタイミングでどのデータを送るか)は公開されていません。そのため、プロトコルを解析するのではなく、純正リモコンが実際に出す信号のMARK/SPACEの時間列をそのまま記録して、同じ時間列を再送信する「学習方式」を取ります。
- 純正リモコンのボタンを押す
- 受信モジュールが信号を受けて、GPIOにデジタル波形を出力
- マイコンがその波形のMARKとSPACEの長さをµs単位で記録
- 送信時に、記録した通りの長さでMARK(38kHz変調)とSPACE(消灯)を再現
この方式ではプロトコルの詳細を知らなくても動作しますが、その分、µs単位のタイミングを忠実に記録・再現できるマイコンが必要です。これが「なぜPico 2 WHのPIOが選ばれたのか」の核心理由の一つです。
📋 まとめ
| 項目 | 正しい理解 |
|---|---|
| 38kHz | LEDの点滅の速さ(1秒間に38,000回ON/OFF)。光の色の周波数ではない |
| MARK | 38kHzの搬送波を出している期間。GPIOは38kHzでスイッチング |
| SPACE | 38kHzの搬送波を止めている期間。GPIOはLOW固定 |
| 受信モジュール | 300THzの光の振動を追うのではなく、「光の強さの変化」のうち38kHz成分だけを取り出してデジタル信号に変換する |
| 太陽光・照明 | 38kHz以外の周波数なので、フィルタで除外される |
この理解があれば、次のステップ(マイコンでの信号読み取りと再送信)の実装が、なぜ「µs単位のタイミング制御」が重要なのか、直感的に把握できるはずです。