技術検証

ESP32で学習リモコンをつくる理由 – IoT×赤外線で家電をハック!title_point

はじめに

「この家電、スマホや音声で操作できたら便利なのに…」
そんな思いから、ESP32を使った学習リモコンをつくるプロジェクトを社内で立ち上げました。

このブログでは、赤外線リモコンの信号を読み取り、MQTTで通信し、Python・Web・AIと連携して制御できる一連の仕組みを全5話で紹介していきます。


ESP32を採用した理由

ESP32はIoT開発における超定番マイコンです。

  • ✅ Wi-Fi/Bluetooth搭載(LANケーブル不要)

  • ✅ Arduino IDEで簡単に開発可能

  • ✅ 低コストで手に入りやすい

  • ✅ MQTTなどの軽量通信プロトコルに対応

今回使用したのは ESP32-DevKitC V4 (ESP-WROOM-32)。USB経由で書き込みができ、信号線も扱いやすい構成です。


赤外線リモコンを学習させるとは?

多くの家電は赤外線リモコンで操作されています。
この信号を受信してデータとして記録し、後から再送信することで、ESP32を学習リモコン化できます。

つまり、

受信(IRセンサ)→ 信号データ化 → MQTTで送信 → 必要に応じて再送信(IR LED)

という流れになります。


MQTTとは?構成図と役割

MQTT(Message Queuing Telemetry Transport)は、IoTでよく使われる軽量なメッセージ通信プロトコルです。

ESP32はこのプロトコルを使って、赤外線データを中央のサーバーへ送ります。

[ ESP32 ] ⇄ MQTT Broker ⇄ [ Python/サーバー/Web ]
  • ? inputir/デバイスID/ポート番号:赤外線を受信したときに送信

  • ? outputir/デバイスID/ポート番号:外部から再送信したいときに受信


回路構成と部品一覧

今回の回路構成は以下の通りです。

使用部品

部品名 用途 備考
ESP32-DevKitC 本体 Wi-Fi/MQTT送受信用
PL-IRM2121(IR受信モジュール) 赤外線受信 GPIO14に接続
IR LED 赤外線送信 GPIO12に接続(NPNトランジスタで駆動)
2SC1815-GR トランジスタ LEDの電流増幅用
抵抗150Ω or 330Ω 電流制限用 IR LED直列
ブレッドボード、ジャンパーワイヤー 配線 必須

※ 出力が弱いと感じた場合、トランジスタによる駆動強化が効果的です。


Arduino IDEで環境構築

  1. ESP32ボード追加
    Arduino IDEのボードマネージャに以下のURLを追加:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

  2. 使用ライブラリ

    • PubSubClient(MQTT用)

    • IRremoteESP8266(赤外線受信・送信)

  3. シリアルモニタ確認
    Wi-Fi接続・MQTT接続・赤外線信号受信など、すべてシリアルモニタで確認可能です。


実際に受信してみる

赤外線受信モジュールにリモコンを向けてボタンを押すと、ESP32側で受信し、以下のようなデータが表示されます:

? MQTT payload size: 287
✅ IR raw data sent via MQTT

これがMQTTで送信され、後のPython処理で識別されるようになります。


おわりに

今回はESP32と赤外線モジュールを使って、家電の信号を**「受け取る」**部分まで実装しました。

次回は、Pythonスクリプトを使ってこの信号を保存・識別し、**「何のリモコン信号かを判別」**できるようにしていきます。

次回 ▶️ 第2話:Python×MQTTで赤外線コードを識別!マッチングと管理のしくみ


? 社員ブログでは、実際に社内で開発しているプロジェクトの技術背景や仕組みを公開しています。
「こういう開発がしてみたい!」という方は、採用情報もご覧ください。