エアコンIoT自由研究 ― 座学編

Raspberry Pi Pico 2 WHで、日立「白くまくん RAS-AJ3626S」の純正リモコン信号を学習し、赤外線LEDから再送信する。さらにDHT20で温度・湿度を測る。その工作を「なぜその配線になるのか」から理解するための資料。

対象部品:Pico 2 WH / DHT20 / PL-IRM1838B / OSI5LA5A33A-B / BC337-40BU / EIC-801 / 5kΩ・2kΩ・330Ω・100Ω / 0.1µF・47µF

この資料の目的
配線手順を暗記するのではなく、①電圧・電流・抵抗、②GPIO、③I²C、④トランジスタ、⑤赤外線通信、⑥コンデンサ、が今回の回路のどこで使われているかを説明できる状態を目指す。

1. この自由研究の全体像

Pico 2 WHは「判断して信号を出す中心装置」。DHT20から温度・湿度を読み、PL-IRM1838Bで純正リモコンの赤外線信号を受信し、必要なときはBC337-40BUを介して赤外線LEDを点滅させる。

Pico 2 WHGPIO / I²C / PWMMicroPython DHT20温度・湿度 → I²C PL-IRM1838B純正リモコンを受信 BC337 + IR LED38kHz前後で点滅→ エアコンへ送信
研究のポイント
完成品を作るだけでなく、「受信した純正リモコン信号を測定 → 時間列として記録 → 自分の回路で再現」という流れそのものが実験になる。リモコン方式を最初からNEC方式などと決めつけず、実測から確認する。

2. まず電圧・電流・抵抗を理解する

2-1. 電圧 V

電気を動かそうとする「差」。今回よく出るのは3.3V約5V。PicoのGPIO信号は3.3V系であり、5VをGPIOへ直接入れてはいけない。

2-2. 電流 A

実際に流れる電気の量。LEDやトランジスタには「流してよい電流」に限界があるため、抵抗で制限する。

2-3. 抵抗 Ω

電流を流れにくくする部品。抵抗値が大きいほど、同じ電圧なら電流は少なくなる。

オームの法則
I = V ÷ R。たとえば3.4Vを330Ωにかけると、理想計算では約0.0103A = 10.3mA。

2-4. GNDとは

回路の電圧を考える基準点。Pico、DHT20、IR受信器、IR送信回路はGNDを共通にする。同じ基準を共有しないと、GPIOのHIGH/LOWを正しく判断できない。

2-5. ショートとは

電源とGNDを非常に小さな抵抗で直接つないでしまうこと。大電流が流れ、部品やUSB電源を壊す原因になる。

3. ブレッドボード EIC-801は何をしているか

ブレッドボードは、ハンダ付けせずに部品同士を電気的につなぐための板。EIC-801は今回のPico 2 WHと周辺回路を試作するのに十分な大きさがある。

ブレッドボードの内部接続イメージ 電源レール(例:3.3V) GNDレール 中央の溝 同じ5穴が内部で接続反対側とは別
重要
見た目で穴同士が近くても、内部でつながっているとは限らない。逆に、離れて見える電源レールが内部で一直線につながっている場合がある。配線前にブレッドボードの接続方向を理解する。

4. Pico 2 WHの電源とGPIO

名称今回の意味
3V3(OUT)3.3Vの電源。DHT20やPL-IRM1838Bへ供給。
GPIO3.3V系のデジタル信号端子。入力・出力・PWM・I²Cなどに使う。
GND回路全体の0V基準。
VBUSUSB給電時にUSB由来の約5Vが現れる。今回のIR LED電源側に使用。
「5Vがある」≠「GPIOが5V対応」
VBUSの約5VをIR LEDの電源として使うことはできるが、5VをGPIOへ直接入力してよいという意味ではない。GPIOは3.3V系。

今回の割り当ては、DHT20のSDA=GP4、SCL=GP5、ボタン=GP15、IR受信=GP16、IR送信=GP18。

5. 今回は「4種類の抵抗」があり、役割が全部違う

場所役割
5kΩ ×2DHT20 SDA・SCL → 3.3VI²Cのプルアップ。信号線をHIGHへ戻す。
2kΩ ×1GP18 → BC337 BaseBaseへ流れる電流を制限し、GPIOを守る。
330Ω ×1VBUS → IR LEDIR LEDへ流れる電流を約10mA級に制限。
100Ω ×13.3V → PL-IRM1838B VCC47µFと組み合わせ、IR受信器の電源ノイズを減らす。

5-1. 5kΩが「電流制限」ではなくプルアップなのはなぜ?

I²Cでは機器が信号線を主にLOWへ引き下げる。誰もLOWにしていないときは、抵抗を通して3.3V側へ引っ張り、HIGHを作る。これがプルアップ。

4.7kΩではなく5kΩでよい理由
DHT20の資料で例示される4.7kΩに対し、5kΩは約6%大きいだけ。今回の短いブレッドボード配線・低速なセンサー用途では実用上ほぼ同じ範囲として扱える。

5-2. 330ΩでIR LEDにどのくらい流れる?

VBUSを5V、IR LEDの順電圧を約1.6Vとし、まずトランジスタの電圧降下を無視すると、(5 - 1.6) ÷ 330 ≒ 0.0103A。つまり約10.3mA。実際はBC337にも少し電圧がかかるため、少し小さくなる。

IR LED直列抵抗上限寄りの概算電流※今回の扱い
330Ω約10.3mA最初に使用。安全側で送信確認する。
220Ω約15.5mA手元にあれば次の候補。330Ωで距離不足のときに検討する。
100Ω約34mA最初から使わない。LED定格だけでなくパルス幅・デューティ比・BC337-40BUの駆動条件を確認してから検討する。

※ VBUS=5V、LED順電圧=1.6V、トランジスタの電圧降下を無視して計算した値。実際の電流は少し小さくなる。

6. コンデンサは「電気を一時的に蓄える」

抵抗が電流を抑える部品なのに対し、コンデンサは電荷を一時的に蓄え、急な電圧変化をなだらかにする。

6-1. DHT20の0.1µF

DHT20のVDD-GND間、できるだけセンサーの近くに置く。高周波の細かなノイズを吸収するデカップリング用。セラミックコンデンサなので極性はない。

6-2. PL-IRM1838Bの47µF

IR受信器の電源を安定させるための比較的大きなコンデンサ。100Ωと組み合わせて、電源から来るノイズを受信器へ伝えにくくする。

100Ω + 47µF の考え方3.3V100Ω47µF+を上側GNDPL-IRM1838BVCC
電解コンデンサは極性あり
47µFは+と−を逆にしない。今回なら+をVCC側、−をGND側。0.1µFセラミックは極性なし。

7. BC337-40BUは「GPIOで大きい側の電流をON/OFFするスイッチ」

GPIOからIR LEDへ直接大きな電流を流す設計にせず、GPIOはBC337のBaseを操作するだけにする。IR LEDの主電流はVBUS→330Ω→IR LED→BC337→GNDという別の経路を流れる。

低側(Low-side)スイッチ GP182kΩBase BC337NPN CollectorEmitterGND IR LED330ΩVBUS ≈5V 主電流:VBUS → 330Ω → IR LED → Collector → Emitter → GND

BC337-40BUは平らな面を手前、足を下にして左からC-B-E。Pin 1=Collector、Pin 2=Base、Pin 3=Emitter。

なぜ2kΩをBaseに入れる?
Base-Emitter間はダイオードのように電流が流れるため、GPIOを直結すると流れすぎる。2kΩでおおむね1mA程度に抑え、GPIOは「スイッチを操作する小さい電流」だけを担当する。

8. 赤外線リモコンは「見えない光を高速点滅させる」

OSI5LA5A33A-Bは940nmの赤外線LED。肉眼には見えない。普通の照明の赤外線や太陽光と区別するため、リモコンは赤外線を数十kHzで高速点滅させ、その点滅のまとまりで情報を送る。

8-1. 38kHzとは

1秒間に約38,000回の周期。1周期は約26.3µs。IR LEDをずっとONにするのではなく、この速さでON/OFFする。

8-2. MARKとSPACE

MARKは搬送波を出している時間、SPACEは出していない時間。リモコンデータは、このMARK/SPACEの長さの並びとして観察できる。

「38kHz搬送波」と「情報」の関係MARKSPACEMARKSPACEMARKMARKの内部で細かく高速点滅している
今回まだ実測するもの
RAS-AJ3626Sの純正リモコンRAR-8P2について、公開資料だけでは正確な搬送波周波数・通信フォーマットを確定していない。まずPL-IRM1838Bで受信できるかを調べ、実測した時間列を保存する。

9. PL-IRM1838Bは「38kHz付近の細かい点滅を消して、情報だけ出す」

PL-IRM1838Bの中心周波数は37.9kHz付近。内部で受光・増幅・フィルタ・復調を行うため、Pico側は38kHzそのものを1周期ずつ測る必要がない。

純正リモコン38kHz付近の赤外線PL-IRM1838B復調Pico GP16MARK/SPACEの時間

受信出力は一般にactive-low。赤外線搬送波を検出している区間でOUTがLOW側になる。したがって「HIGH=赤外線あり」と思い込まない。

10. I²CとDHT20

10-1. I²Cとは

複数のデジタル機器を、主にSDA(データ)SCL(クロック)の2本で接続する通信方式。GNDと電源も必要なので、DHT20への物理配線は合計4系統になる。

10-2. DHT20の端子

Pin名称接続
1VDD3.3V
2SDAGP4 + 5kΩで3.3Vへプルアップ
3GNDGND
4SCLGP5 + 5kΩで3.3Vへプルアップ

DHT20のI²Cアドレスは0x38。I²Cスキャンで0x38が見えれば、配線・電源・I²C通信の基本部分が成立していると判断できる。

DHT20の基本配線3.3VDHT201 VDD2 SDA3 GND4 SCLGP4 SDAGP5 SCL5kΩ5kΩGND0.1µF
なぜI²Cにプルアップが必要?
I²Cは各機器が線を積極的にHIGHへ押し上げる方式ではなく、主にLOWへ引き下げて通信する。そのため、誰もLOWにしていないときにHIGHへ戻す役目を5kΩ抵抗が持つ。

11. タクトスイッチと内部プルアップ

タクトスイッチはGP15とGNDの間につなぎ、Pico内部のプルアップ抵抗を有効にする。

状態GP15意味
押していないHIGH内部抵抗が3.3V側へ引っ張る
押したLOWスイッチでGNDへ直結される

ここではPico内部にプルアップがあるため、外付け抵抗を1本増やす必要がない。

12. 回路とソフトウェアはどう対応するか

回路側ソフト側役割
DHT20 / SDA・SCLI²C温度・湿度を読む
PL-IRM1838B / GP16GPIO入力・エッジ時刻MARK/SPACEの長さを測る
BC337 / GP18PWM38kHz前後の搬送波を作る
タクトスイッチ / GP15GPIO入力 + PULL_UP手動送信のきっかけ
USBシリアル出力LCDなしで値・状態を見る

12-1. PWM

GPIOをソフトで1回ずつHIGH/LOWする代わりに、ハードウェア機能で一定周期の矩形波を出す。38kHz付近の搬送波生成に向く。

12-2. PIO

PicoにはGPIOタイミング処理を専用ハードウェアへ任せられるPIOがある。長いエアコン信号をµs単位で正確に再現するとき、通常のMicroPythonループより安定させやすい。

13. 実験は「何が分かったか」を1段ずつ切り分ける

段階実験成功すると何が分かる?
1Pico単体をUSB接続MicroPythonとPC通信が動く
2PL-IRM1838Bだけ接続RAR-8P2の赤外線を38kHz受信器で観測できるか
3複数ボタンのMARK/SPACEを保存操作ごとに信号列がどう変わるか
4BC337 + IR LEDで38kHz送信送信回路そのものが動く
5記録波形を再送エアコンを自作回路から操作できるか
6DHT20のI²C scan0x38が見え、I²C配線が成立
7温湿度を読み出すセンサー値を制御判断へ使える
8ボタン統合手動操作と自動処理をまとめられる
切り分けが重要
全部を最初から接続すると、動かなかったときに原因が分からない。電源→受信→送信→センサー→統合の順で進めると、故障箇所を限定できる。

14. 壊さないために覚える原則

  1. 配線を変えるときはUSB電源を抜く。
  2. 3.3VとGNDを直接つながない。
  3. VBUS約5VをGPIOへ入れない。
  4. LEDには必ず電流制限抵抗を入れる。
  5. BC337のC-B-Eを確認する。
  6. 47µF電解コンデンサの+/−を逆にしない。
  7. すべてのGNDを共通にする。
  8. 最初は安全側の330ΩでIR LEDを試す。
  9. DHT20のSDA/SCLプルアップと0.1µFを忘れない。

15. 用語集

用語意味
GPIOプログラムからHIGH/LOWの入出力などを制御できる端子。
HIGH / LOWデジタル信号の2状態。今回のGPIOではおおむね3.3V側 / 0V側。
プルアップ信号が誰にも駆動されていないとき、抵抗でHIGH側へ保つ。
I²CSDAとSCLを共有して複数機器と通信する方式。
PWM一定周期でON/OFFを繰り返す信号をハードウェアで生成する機能。
デカップリング部品の近くにコンデンサを置き、電源ノイズや瞬間的変動を抑える。
トランジスタ小さい信号で別の電流経路を制御できる半導体部品。
Collector / Base / Emitter今回使うNPNトランジスタBC337の3端子。
搬送波情報を運ぶための高速な周期信号。今回まず試すのは約38kHz。
MARK / SPACE赤外線搬送波を出している区間 / 出していない区間。
復調高速な搬送波から情報部分を取り出すこと。

16. 確認問題

Q1. Picoに約5VのVBUSがあるのに、なぜGPIOへ5Vを入れてはいけない?

VBUSは電源端子であり、GPIOの信号電圧仕様とは別だから。GPIOは3.3V系として扱う。

Q2. DHT20のSDAとSCLに5kΩを入れる目的は?

I²Cの信号線を、誰もLOWへ引き下げていないときに3.3VのHIGHへ戻すプルアップ。

Q3. IR LEDの330Ωは何のため?

IR LEDへ流れる電流を制限し、LEDや回路への負担を抑えるため。

Q4. なぜIR LEDをGPIOへ直接つながずBC337を使う?

GPIOはBC337のBaseだけを小電流で操作し、IR LED側の主電流を別経路でON/OFFするため。

Q5. 0.1µFと47µFは同じ役割?

どちらも電源安定化に関係するが、0.1µFはDHT20近傍の高周波ノイズ対策、47µFはPL-IRM1838B電源側でより大きな変動を抑える用途。47µF電解には極性がある。

Q6. PL-IRM1838Bがあると、Picoは38kHzの1周期ずつを測る必要がある?

基本的には不要。PL-IRM1838Bが搬送波を復調し、Picoは主にMARK/SPACEの時間列を受け取る。

Q7. 今回「38kHz」と言い切ってよい?

送信実験の最初の値としては使うが、RAR-8P2の正確な搬送波は実機確認対象。PL-IRM1838Bで受信できるか、再送で動作するかを実験する。

Q8. 全部一度につないで試さない方がよい理由は?

失敗したときに原因を特定しにくくなるから。受信、送信、DHT20、ボタンを個別に確認してから統合する。

参考資料

この座学編は回路の原理理解用。実際の穴位置・物理ピン位置・作業順は「第一部 自由研究資料」のブレッドボード配線編を使用する。