ESP32のチュートリアル 29/55 - ESP32でIRリモコンのキー入力を読み取る | SunFounderのESP32 IoT学習キット
このチュートリアルでは、ESP32モジュールと互換性のあるIR受信機を使用して赤外線(IR)信号を検出する方法を学びます。リモコンのボタンを押すと、ESP32が信号を認識し、特定のキー入力に対してブザーを鳴らすなどの具体的なアクションを実行します。このプロジェクトは、ESP32アプリケーションにリモートコントロール機能を統合したい人に最適です(ビデオ内で 02:15)。
ESP32は、Wi-FiとBluetoothの機能を組み合わせた強力なマイクロコントローラであり、幅広いIoTアプリケーションに適しています。このプロジェクトでは、IRレシーバーを使用してリモコンからの信号を解釈します。キーの押下はコードで処理され、受信したコマンドに基づいてアクションを実行できるようになります。
ハードウェアの解説
このプロジェクトの主なコンポーネントには、ESP32マイクロコントローラー、IR受信モジュール、ブザーが含まれています。ESP32は操作の中心となり、IR受信機から受け取った信号を処理します。IR受信機はリモコンからの赤外線信号を検出し、それをESP32が理解できる電気信号に変換します。
IRレシーバーは通常、3つのピンを持っています:VCC(電源)、GND(グラウンド)、およびOUT(信号)。VCCピンは電源(3.3Vまたは5V)に接続され、GNDはグラウンドに接続されます。OUTピンはデコードされた信号をESP32に送信し、特定のキーが押されたときにブザーを作動させるなど、さまざまなアクションを引き起こすために使用されます。
データシートの詳細
| 製造業者 | 鋭い |
|---|---|
| 部品番号 | GP1UXC41 |
| 論理/IO電圧 | 3.3 - 5.0 V |
| 供給電圧 | 3.3 V(典型値) |
| 出力電流(チャネルごと) | 20 mA (最大) |
| ピーク電流(チャンネルごと) | 50 mA (最大) |
| PWM周波数ガイダンス | 38 kHz |
| 入力ロジック閾値 | 0.3 Vcc (高), 0.2 Vcc (低) |
| 電圧降下 / RDS(on)/ サチュレーション | 0.5 V(最大) |
| 熱的制限 | 85°C(最大) |
| パッケージ | TO-92 |
| ノート / バリアント | 複数の構成で利用可能です |
- 正しい電源供給を確保し、損傷を避けてください。
- 短いワイヤーを使用して信号干渉を最小限に抑えます。
- 接続する前にIR受信機の向きを確認してください。
- リモコンのバッテリーが正常であることを確認してください。
- 必要に応じてプルアップ抵抗を使用して安定性を確保してください。
配線指示

IR受信機をESP32に配線するには、まずIR受信機の3つのピンを特定します:VCC、GND、およびOUT。VCCピンをESP32の3.3V電源に接続します。次に、GNDピンをESP32のいずれかのグラウンド(GND)ピンに接続します。最後に、OUTピンをESP32のGPIOピン14に接続します。これはコード内でIR受信機専用に指定されています。
接続が完了したら、配線が確実であることを確認してください。ブレッドボードを使用している場合は、IR受信機の平らな面が自分の方を向くように挿入し、突起が反対側になるようにしてください。この向きにすることで、ピンを正しく識別するのに役立ちます。ESP32の電源を入れる前に、接続を確認してください。
コード例とウォークスルー
インストールするIRremoteESP8266デビッド・コナランとセバスチャンによるライブラリ。
コード内で、定数を使用してIR受信ピンを定義します。IR_RECEIVE_PIN, は14に設定されています。私たちはまた、のインスタンスを作成します。IRrecvIR信号を処理するために。
const uint16_t IR_RECEIVE_PIN = 14;
IRrecv irrecv(IR_RECEIVE_PIN);
decode_results results;この設定により、IRリモコンからの信号を受信できるようになります。setup()関数では、シリアル通信を初期化し、IR受信機を有効にします。
void setup() {
Serial.begin(115200);
irrecv.enableIRIn();
}内でloop()関数では、IR信号が受信されたかどうかを確認します。受信された場合は、キー値をデコードし、シリアルモニターに出力します。
if (irrecv.decode(&results)) {
String key = decodeKeyValue(results.value);
Serial.println(key);
irrecv.resume();
}このコードスニペットは、受信した信号をデコードし、対応するキーバリューをシリアルモニタに表示する方法を示しています。decodeKeyValue()受信した信号を「0」、「1」、「EQ」などの特定のボタン値にマッピングする関数です。完全なコードは記事の下にロードされています。
デモンストレーション / 期待すること
配線が完了し、コードがアップロードされると、リモコンのボタンを押すことで、シリアルモニターに対応するキー値が表示されるはずです。例えば、「2」ボタンを押すと、モニターに「2」と表示されます。キーが認識されない場合は「ERROR」が返されます。指定されたキー(例:「EQ」)が押されると、ブザーが鳴り、即座にフィードバックが提供されます。
接続の逆極性や不適切な電圧レベルを使用するなどの一般的な落とし穴に注意してください。セットアップをテストする前に、リモコンが正常に動作していること、そしてバッテリーが機能していることを確認してください(ビデオの15:30にて)。
動画のタイムスタンプ
- 00:00 スタート
- 2:05 IRレシーバーの紹介
- 4:24 配線の説明
- 6:08 IR受信機のためのArduinoコードの説明
- 10:06 Arduino IDEでESP32ボードとCOMポートを選択中
- 11:48 プロジェクトデモンストレーション
- 13:09 ESP32に直接接続されたアクティブブザー
- 14:40 キーが押されたときにアクションを実行する
- 15:30 アルディーノのコードでアクションを実行する
- 16:54 キー入力とブザーデモ
#include <IRremoteESP8266.h>
#include <IRrecv.h>
// IR受信ピンを定義する
const uint16_t IR_RECEIVE_PIN = 14;
// IRrecvオブジェクトを作成する
IRrecv irrecv(IR_RECEIVE_PIN);
// decode_resultsオブジェクトを作成する
decode_results results;
void setup() {
// シリアル通信を開始します
Serial.begin(115200);
// IRレシーバーを起動します。
irrecv.enableIRIn();
}
void loop() {
// IR信号が受信された場合
if (irrecv.decode(&results)) {
String key = decodeKeyValue(results.value);
if (key != "ERROR") {
// 信号の値をシリアルモニターに出力します。
Serial.println(key);
}
irrecv.resume(); // 次の信号を受信し続ける
}
}
// IR信号の値をデコードする関数
String decodeKeyValue(long result)
{
switch(result){
case 0xFF6897:
return "0";
case 0xFF30CF:
return "1";
case 0xFF18E7:
return "2";
case 0xFF7A85:
return "3";
case 0xFF10EF:
return "4";
case 0xFF38C7:
return "5";
case 0xFF5AA5:
return "6";
case 0xFF42BD:
return "7";
case 0xFF4AB5:
return "8";
case 0xFF52AD:
return "9";
case 0xFF906F:
return "+";
case 0xFFA857:
return "-";
case 0xFFE01F:
return "EQ";
case 0xFFB04F:
return "U/SD";
case 0xFF9867:
return "CYCLE";
case 0xFF22DD:
return "PLAY/PAUSE";
case 0xFF02FD:
return "BACKWARD";
case 0xFFC23D:
return "FORWARD";
case 0xFFA25D:
return "POWER";
case 0xFFE21D:
return "MUTE";
case 0xFF629D:
return "MODE";
case 0xFFFFFFFF:
return "ERROR";
default :
return "ERROR";
}
}
Common Course Links
Common Course Files
必要かもしれないもの
-
アマゾンAmazonで赤外線リモコンを購入するamzn.to
-
イーベイeBayから赤外線リモコンを購入するebay.us
リソースと参考文献
-
ドキュメンテーションESP32 チュートリアル 23/55 - IR 受信機用の SunFounder ドキュメントページdocs.sunfounder.com
ファイル📁
データシート(pdf)
-
XL6012: コンデンサが取り外されました。
robojax-IR-remote_TL1838-Infrared-Receiver-datasheet.pdf0.46 MB