赤外線リモコン信号の仕組み

38kHz・MARK/SPACE・受信モジュールの中身を、ゼロから整理する

エアコンのリモコン信号を「学習」して再現するためには、「信号がどういう構造になっているか」を正しく理解する必要があります。このページでは、38kHz 搬送波から受信モジュール内部の動作までを図解付きでまとめます。

1. 信号は「2段階の構造」になっている

エアコンのリモコンが出す赤外線信号は、一見「光っている/消えている」の繰り返しに見えますが、実は2つのレイヤーが重なっています。

📡レイヤー1:搬送波(38kHz)

赤外線 LED を1秒間に38,000回点滅させる「目印」です。エアコンの受信部は「この38kHzのリズムで変化している光」だけを本物の信号と認識します。

38,000回/秒= 1回の点滅に約 26µs(マイクロ秒)

📊レイヤー2:データ信号(MARK / SPACE)

38kHzの搬送波を「一定時間出す(MARK)」「一定時間止める(SPACE)」という時間パターンで、電源ONや温度設定などの命令を表現します。

MARKとSPACEの長さの組み合わせが「0」「1」「ヘッダー」などのデータを作ります。

赤外線リモコン信号の2段階構造 ① 搬送波(38kHz)— 光の「中身」 赤外線LEDが1秒間に38,000回ON/OFFする。人の目には「ずっと光ってる」に見える。 拡大:1つのMARKの中身 38kHz = 約26µsで1周期 LEDが高速でチカチカ ② データ信号(MARK / SPACE)— 光の「長さ」 搬送波を「出す/止める」の時間パターンで命令を表現。µs単位のタイミングが重要。 HEADER MARK 約9000µs HEADER SPACE 約4500µs MARK 約560µs SPACE 約1690µs → "1" MARK 約560µs SPACE 約560µs → "0" ... ... = MARK(38kHz出す) = SPACE(消灯) 長さの組み合わせがデータ 実際の信号 = ①の38kHz波を、②のタイミングでON/OFFする
図1:赤外線リモコン信号は「38kHzの搬送波を出すMARK」と「搬送波を止めるSPACE」の時間パターンでデータを表現する。MARKの中身は38kHzの高速点滅、SPACEは完全な消灯。
⚠️ よくある誤解
「MARK = GPIOをHIGHにする、SPACE = GPIOをLOWにする」と思いがちですが、これは不正確です。
  • MARK = GPIOを38kHzでHIGH/LOW切り替え(≒ PWM動作)。赤外線LEDは高速でチカチカしている。
  • SPACE = GPIOをLOWに固定(または一定状態を保つ)。赤外線LEDは消えている。
マイコンのGPIOでは実装上「MARK中はHIGH、SPACE中はLOW」と扱うことが多いですが、これはあくまで受信モジュールの出力信号(デジタル化後)の話です。送信側では、MARK中はGPIOを38kHzでスイッチングさせる必要があります。

2. 38kHz は「光の波の周波数」ではない

「赤外線も波だし、38kHzも波なの?どっちがどっち?」という混乱はよくあります。結論から言うと、桁が全然違います

波の種類 周波数 何の波? イメージ
赤外線光そのもの 300,000,000 MHz
(300テラヘルツ)
光が空間を進むときの電磁波の振動
→ 人間の目には見えない
光の「色」を決める
LEDの点滅(38kHz) 38 kHz
(0.038メガヘルツ)
LEDの電源スイッチのON/OFF
→ リモコンの「目印」
光の「明滅」を決める

1億倍くらい違います。38kHzは「光の色(波長)を決める周波数」ではなく、あくまで「LEDをチカチカさせるスイッチングの速さ」です。

300THz(光そのもの)と 38kHz(LEDの点滅)は別物 赤外線光の振動(300THz) 空間を進む電磁波の振動。波長約940nm。目には見えない。 波長約940nm → 1秒間に300兆回振動(目には見えない) LEDの点滅(38kHz) LEDの電源スイッチのON/OFF。受信側は「点滅のリズム」だけを見る。 1周期約26µs → 1秒間に3万8千回のスイッチング(リモコンの目印)
図2:赤外線光そのものの振動(300THz)と、LEDの点滅(38kHz)は全然別物。受信側は「点滅のリズム」だけを見て、光の色(300THz)自体は気にしない。

3. なぜ38kHz変調が必要なのか

ここまでで「38kHzはLEDの点滅の速さ」とわかりました。では次に、「なぜわざわざ38kHzで点滅させる必要があるのか?」という疑問に答えます。

3-1. もし38kHz変調がなかったら?

リモコンが「光る/消える」だけで信号を送ると仮定します。太陽光は「ずっと光っている」ので、受信側は「リモコンがONを送っているのか、ただ太陽が当たっているのか」わからなくなります。これでは信号として使えません。

38kHz変調がない場合 vs ある場合 無変調(HIGH/LOWだけ) リモコン信号 太陽光 区別できない! → 信号として使えない 38kHz変調あり リモコン信号(38kHzで点滅) 太陽光(直流) フィルタで区別できる! → 信号として使える
図3:無変調だと太陽光などの環境光とリモコンの信号を区別できない。38kHz変調を使うことで、受信側は「人為的な信号だけ」を取り出せる。

3-2. 38kHz変調は「人為的な目印」

38kHz変調を使うことで、以下のように区別できます:

光源 光のパターン 周波数成分 受信側の判断
太陽光 ずっと光っている(直流) 0Hz(直流成分のみ) 38kHz成分なし → 無視
蛍光灯 50Hz/60Hz でちらつく 50Hz / 60Hz / 100Hz / 120Hz 38kHz成分なし → 無視
リモコン(本物) 38kHz で高速点滅 38kHz + その周辺 38kHz成分あり → 検出!

つまり、38kHzは「これは人間が意図的に送った信号ですよ」という目印です。受信モジュール内部のバンドパスフィルタが38kHz付近以外をカットするので、太陽光や蛍光灯のノイズは出力に影響しません。

4. 受信モジュールの中で何が起きているか

受信モジュール(PL-IRM1838Bなど)に赤外線が入ったとき、内部では以下の処理が行われています。

受信モジュール内部の処理フロー フォトダイオード 赤外線光を 電流に変換 300THzの光 → 電流 前置増幅器 微弱な電流を 増幅する ノイズも一緒に増幅 バンドパスフィルタ 38kHz付近のみ 通過させる 太陽光・蛍光灯を除去 検波器 38kHzの包絡線を 取り出す MARK/SPACEに変換 デジタル出力 GPIOに接続 HIGH/LOWを出力 マイコンが読む 受信モジュールは「光の強さの変化」のうち、38kHz成分だけを取り出してデジタル信号に変換する
図4:受信モジュール内部の処理フロー。フォトダイオード→増幅→38kHzフィルタ→検波→デジタル出力。300THzの光の振動を追うのではなく、「光の強さの変化」のうち38kHz成分だけを取り出す。

4-1. なぜ太陽光を無視できるのか?

太陽光や蛍光灯は「常に光っている」(直流に近い)か、「50Hz/60Hzでちらついている」だけです。バンドパスフィルタは38kHz付近以外をカットするので、これらのノイズは出力に影響しません。

光源 光の強さの変化 受信モジュールの反応
太陽光 ほぼ一定(直流) フィルタでカット → 無視
蛍光灯 50Hz/60Hz でちらつく フィルタでカット → 無視
リモコン(本物) 38kHz で点滅 フィルタを通過 → 検出

5. 正しい用語の整理

これまでの説明で出てきた用語を、もう一度正確に整理します。

🔴MARK

38kHzの搬送波を出している期間

GPIOでは38kHzでHIGH/LOWを切り替える(PWM的な動作)

赤外線LEDは高速でチカチカしている

🔵SPACE

38kHzの搬送波を止めている期間

GPIOではLOWに固定(または一定状態を保つ)

赤外線LEDは消えている

💡 補足:GPIOの論理レベルとの関係
マイコンのGPIOでは、実装上「MARK中はHIGH、SPACE中はLOW」と扱うことが多いですが、これはあくまで受信モジュールの出力信号(デジタル化後)の話です。

送信側では、MARK中はGPIOを38kHzでスイッチングさせ、SPACE中はGPIOをLOWに固定します。つまり「MARK = HIGH」ではなく、「MARK = 38kHz変調中」というのが正確です。

6. エアコンリモコンの「学習方式」とは

日立の純正リモコンRAR-8P2の通信プロトコル(どのタイミングでどのデータを送るか)は公開されていません。そのため、プロトコルを解析するのではなく、純正リモコンが実際に出す信号のMARK/SPACEの時間列をそのまま記録して、同じ時間列を再送信する「学習方式」を取ります。

📝学習方式の流れ
  1. 純正リモコンのボタンを押す
  2. 受信モジュールが信号を受けて、GPIOにデジタル波形を出力
  3. マイコンがその波形のMARKSPACEの長さをµs単位で記録
  4. 送信時に、記録した通りの長さで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単位のタイミング制御」が重要なのか、直感的に把握できるはずです。