ESP32を使って学習リモコンを作る(4) ソフトウエア 赤外線リモコン送信( irSend )

赤外線リモコン スマートリモコン Smart Remote Controller Aruduino PlatformIO ESP32

本項では全画面表示が可能な図番に * を付けています。

ESP32を使って学習リモコンを作る(3) で説明した「赤外線リモコン受信( irReceive )」に引き続きソフトウエアの要素技術「赤外線リモコン送信( irSend )」について説明します。

赤外線リモコン送信( irSend )

「あすき」さんの「Arduino(ESP32)でエアコンの赤外線リモコンの信号をコピーして発信する」を参考にさせていただきました。

ハードウエア

図1 は irSend に用いる回路図です。 ESP32を使って学習リモコンを作る(2) で紹介した「図3 赤外線送信回路」と同一回路です。

*図1 irSend 回路図

次回は webserver について説明します。

リンク

ESP32を使って学習リモコンを作る(1) 学習リモコンでどんなことができるの?
ESP32を使って学習リモコンを作る(2) ハードウエア
ESP32を使って学習リモコンを作る(3) ソフトウエア 赤外線リモコン受信( irReceive )
ESP32を使って学習リモコンを作る(4) ソフトウエア 赤外線リモコン送信( irSend )
ESP32を使って学習リモコンを作る(5) ソフトウエア webserver
ESP32を使って学習リモコンを作る(6) ソフトウエア FLASH 読書き(SPIFFS)
ESP32を使って学習リモコンを作る(7) ソフトウエア 本機のプロジェクト
ESP32を使って学習リモコンを作る(8) ソフトウエア 本機プロジェクトの勘所
ESP32を使って学習リモコンを作る(9) ハードウエア設計の勘所
ESP32を使って学習リモコンを作る(10) 学習リモコンを操作した時のターミナル出力
Smart_Remote_Controller プロジェクト GitHub

(YI)

Project Wizard で Finish をクリックするとプロジェクトが自動生成されます。(図8)

*図8 プロジェクトが自動生成された

ライブラリ

IRremote のライブラリが必要になります。IRremote は platformio.ini にライブラリ依存性を定義すると自動的にインストールされます。

irSend プロジェクト

自動生成されたプロジェクトに追加、変更を加えて irSend に対応させます。

platformio.ini ファイルに以下の 3 行を追加します。(図9)
  lib_deps = z3t0/IRremote@^4.4.1 (ライブラリ名を訂正しました)
  upload_port = COM3 (使用する PC によって変わります)
  monitor_speed = 115200

*図9 platformio.ini

自動生成された main.cpp ファイルをクリックしてプログラムを表示します。(図10)

*図10 main.cpp

main.cpp の内容を全て削除して、代わりに「あすき」さんのプログラムを使わせていただきます。
Arduino(ESP32)でエアコンの赤外線リモコンの信号をコピーして発信する」から「先ほどメモしたprontoの情報を使ってプログラムを作成」にあるプログラムをコピーして main.cpp にペーストします。(図11)
警告が出るかもしれませんが自動的に解消されるのでそのままで構いません。

*図11 プログラムをペーストした

main.cpp の 10 行目と 11 行目のデータを書き換えることにします。

ESP32を使って学習リモコンを作る(3) で説明した赤外線リモコン送信機(例 Bose Freestyle )を irReceive 回路の赤外線リモコン受光ICに向けて任意のボタン(例 Off )を押して irReceive で受信した時にターミナルに表示される情報の末尾を参照します。(図12)

Pronto Hex as string
char prontoData[] = “0000 006D 0022 0000 015B 00AA 0018 0012 0018 003F 0018 0012 0018 003F 0018 003F 0018 003D 0018 0014 0018 003D 0018 003F 0018 003F 0018 0012 0018 003F 0018 0012 0018 0012 0018 0041 0016 0014 0016 0014 0018 0014 0016 003F 0018 003F 0016 0014 0018 0014 0016 003F 0018 0014 0016 003F 0018 003F 0018 0014 0016 0014 0016 0041 0016 0041 0016 0014 0016 0041 0016 06C3 “;

図12 Bose Freestyle リモコン送信機 Off ボタン受信時のターミナル出力末尾

「あすき」さんの記事では、10 行目をエアコンの ON に、11 行目をエアコンの OFF に割り当てていましたが、ここでは要素技術の動作確認用なので 10 行目、11 行目の両方とも Bose Freestyle Off に割り当てることにします。図12 の情報から ” ” で囲まれた部分をコピーして main.cpp の 10 行目と 11 行目の “ ” で囲まれた部分と置き換えます。(図13)

*図13 10 行目、11 行目を置き換えた

irSend プロジェクトの勘所

作成した irSend プロジェクトについての理解を勘所としてまとめます。

  8 行目 #include <IRremote.hpp> ライブラリのインクルード

  15 行目 IrSender.begin(); 赤外線送信ライブラリの初期化

  22 行目  IrSender.sendPronto(prontoDataTurnOn22Heater);
  変数 prontoDataTurnOn22Heater の内容を赤外線リモコンフォーマットで出力する

以上の 3 ポイントを押さえておけば良いと思います。

ファームウエアビルド

PROJECT TASKS から Build をクリックするとビルドが開始されて [SUCCESS] と表示されると完了です。(図14)

*図14 Build が完了した

ファームウエア書込み

ESP32-DevKitC-32E を USB ケーブルで PC に接続します。 PROJECT TASKS から Upload をクリックするとファームウェアの書込みが開始されて [SUCCESS] と表示されると完了です。(図15)

*図15 ファームウエアの書き込みが完了した

ファームウエア実行

PROJECT TASKS から Monitor をクリックするとファームウェアの実行が開始されて、ターミナルウインドウに起動時のメッセージが表示されると待受け状態になります。(図16)

*図16 irSend が起動されて待受け状態になった

赤外線リモコン信号送信

irSend 回路の Boot ボタンを押すとターミナルに「send turn on at xxxxx」のメッセージが出力されます。(図17)

*図17 Boot ボタン押下時のターミナル出力

メッセージ出力と同時に赤外線リモコン信号が送信されます。
この信号は main.cpp の10 行目に設定したデータに対応しています。(本稿では 18 番ピンにボタンを設けていないので 11 行目に設定したデータは送信されません。)

赤外線 LED を駆動している NPN トランジスタ Q1 2SC945 のコレクタ端子をオシロスコープで観測すると赤外線リモコン信号の送信に対応した波形が確認できます。(図18)

*図18 NPN トランジスタ Q1 2SC945 のコレクタ波形

赤外線 LED を駆動する回路の動作は図18 で確認できました。
赤外線が正しく出ているかはブレッドボードに搭載されている irReceive 回路(ESP32を使って学習リモコンを作る(3) 図1 参照)を利用します。irReceive 回路の赤外線リモコン受光 IC は常時動作しているので 15 ピン入力を観測すると irSend 回路の赤外線 LED が出力した赤外線の波形を確認することができます。(図19、図20)

図19 irSend 回路 → irReceive 回路

*図20 15 ピン波形

システムで動作確認

irsend 回路から送信した赤外線リモコン信号を使ってシステムが正しく応答するかの確認を行います。(図21)

図21 システムで動作確認を行う

  1) BOSE FreeStyle 赤外線リモコンの On( Video ) ボタンを押す。
  2) BOSEスピーカーから音楽が流れる。
  3) irReceive 回路の Boot ボタンを押す。
  4) BOSEスピーカーの音楽が止まる。

以上 1) ~ 4) の手順で正しく動作することが確認できました。

次回は webserver について説明します。

リンク

ESP32を使って学習リモコンを作る(1) 学習リモコンでどんなことができるの?
ESP32を使って学習リモコンを作る(2) ハードウエア
ESP32を使って学習リモコンを作る(3) ソフトウエア 赤外線リモコン受信( irReceive )
ESP32を使って学習リモコンを作る(4) ソフトウエア 赤外線リモコン送信( irSend )
ESP32を使って学習リモコンを作る(5) ソフトウエア webserver
ESP32を使って学習リモコンを作る(6) ソフトウエア FLASH 読書き(SPIFFS)
ESP32を使って学習リモコンを作る(7) ソフトウエア 本機のプロジェクト
ESP32を使って学習リモコンを作る(8) ソフトウエア 本機プロジェクトの勘所
ESP32を使って学習リモコンを作る(9) ハードウエア設計の勘所
ESP32を使って学習リモコンを作る(10) 学習リモコンを操作した時のターミナル出力
Smart_Remote_Controller プロジェクト GitHub

(YI)

Visula Studio Code ( VSCode ) を開いて画面左端縦の「アクティビティバー」からアリさんマーク(赤丸)をクリックします。(図3)

*図3 Visual Studio Code を開く

プライマリサイドバーが表示されるので Create New Project をクリックします。(図4)

*図4 プライマリサイドバー

PIO Home 画面が表示されます。(図5)

*図5 PIO Home 画面

画面中央から右寄りの Quick Access から + New Project をクリックすると、Project Wizard が表示されます。(図6)

*図6 Project Wizard

Project Wizard に従って入力します。(図7)
  Name:  irRemote (何でもいいので任意のプロジェクト名を入力)
  Board: Espressif ESP32 Dev Module (プルダウンメニューから選択します)  
  Framework: Arduino (プルダウンメニューから選択します)

*図7 Project Wizard に必要事項を入力した

Project Wizard で Finish をクリックするとプロジェクトが自動生成されます。(図8)

*図8 プロジェクトが自動生成された

ライブラリ

IRremote のライブラリが必要になります。IRremote は platformio.ini にライブラリ依存性を定義すると自動的にインストールされます。

irSend プロジェクト

自動生成されたプロジェクトに追加、変更を加えて irSend に対応させます。

platformio.ini ファイルに以下の 3 行を追加します。(図9)
  lib_deps = z3t0/IRremote@^4.4.1 (ライブラリ名を訂正しました)
  upload_port = COM3 (使用する PC によって変わります)
  monitor_speed = 115200

*図9 platformio.ini

自動生成された main.cpp ファイルをクリックしてプログラムを表示します。(図10)

*図10 main.cpp

main.cpp の内容を全て削除して、代わりに「あすき」さんのプログラムを使わせていただきます。
Arduino(ESP32)でエアコンの赤外線リモコンの信号をコピーして発信する」から「先ほどメモしたprontoの情報を使ってプログラムを作成」にあるプログラムをコピーして main.cpp にペーストします。(図11)
警告が出るかもしれませんが自動的に解消されるのでそのままで構いません。

*図11 プログラムをペーストした

main.cpp の 10 行目と 11 行目のデータを書き換えることにします。

ESP32を使って学習リモコンを作る(3) で説明した赤外線リモコン送信機(例 Bose Freestyle )を irReceive 回路の赤外線リモコン受光ICに向けて任意のボタン(例 Off )を押して irReceive で受信した時にターミナルに表示される情報の末尾を参照します。(図12)

Pronto Hex as string
char prontoData[] = “0000 006D 0022 0000 015B 00AA 0018 0012 0018 003F 0018 0012 0018 003F 0018 003F 0018 003D 0018 0014 0018 003D 0018 003F 0018 003F 0018 0012 0018 003F 0018 0012 0018 0012 0018 0041 0016 0014 0016 0014 0018 0014 0016 003F 0018 003F 0016 0014 0018 0014 0016 003F 0018 0014 0016 003F 0018 003F 0018 0014 0016 0014 0016 0041 0016 0041 0016 0014 0016 0041 0016 06C3 “;

図12 Bose Freestyle リモコン送信機 Off ボタン受信時のターミナル出力末尾

「あすき」さんの記事では、10 行目をエアコンの ON に、11 行目をエアコンの OFF に割り当てていましたが、ここでは要素技術の動作確認用なので 10 行目、11 行目の両方とも Bose Freestyle Off に割り当てることにします。図12 の情報から ” ” で囲まれた部分をコピーして main.cpp の 10 行目と 11 行目の “ ” で囲まれた部分と置き換えます。(図13)

*図13 10 行目、11 行目を置き換えた

irSend プロジェクトの勘所

作成した irSend プロジェクトについての理解を勘所としてまとめます。

  8 行目 #include <IRremote.hpp> ライブラリのインクルード

  15 行目 IrSender.begin(); 赤外線送信ライブラリの初期化

  22 行目  IrSender.sendPronto(prontoDataTurnOn22Heater);
  変数 prontoDataTurnOn22Heater の内容を赤外線リモコンフォーマットで出力する

以上の 3 ポイントを押さえておけば良いと思います。

ファームウエアビルド

PROJECT TASKS から Build をクリックするとビルドが開始されて [SUCCESS] と表示されると完了です。(図14)

*図14 Build が完了した

ファームウエア書込み

ESP32-DevKitC-32E を USB ケーブルで PC に接続します。 PROJECT TASKS から Upload をクリックするとファームウェアの書込みが開始されて [SUCCESS] と表示されると完了です。(図15)

*図15 ファームウエアの書き込みが完了した

ファームウエア実行

PROJECT TASKS から Monitor をクリックするとファームウェアの実行が開始されて、ターミナルウインドウに起動時のメッセージが表示されると待受け状態になります。(図16)

*図16 irSend が起動されて待受け状態になった

赤外線リモコン信号送信

irSend 回路の Boot ボタンを押すとターミナルに「send turn on at xxxxx」のメッセージが出力されます。(図17)

*図17 Boot ボタン押下時のターミナル出力

メッセージ出力と同時に赤外線リモコン信号が送信されます。
この信号は main.cpp の10 行目に設定したデータに対応しています。(本稿では 18 番ピンにボタンを設けていないので 11 行目に設定したデータは送信されません。)

赤外線 LED を駆動している NPN トランジスタ Q1 2SC945 のコレクタ端子をオシロスコープで観測すると赤外線リモコン信号の送信に対応した波形が確認できます。(図18)

*図18 NPN トランジスタ Q1 2SC945 のコレクタ波形

赤外線 LED を駆動する回路の動作は図18 で確認できました。
赤外線が正しく出ているかはブレッドボードに搭載されている irReceive 回路(ESP32を使って学習リモコンを作る(3) 図1 参照)を利用します。irReceive 回路の赤外線リモコン受光 IC は常時動作しているので 15 ピン入力を観測すると irSend 回路の赤外線 LED が出力した赤外線の波形を確認することができます。(図19、図20)

図19 irSend 回路 → irReceive 回路

*図20 15 ピン波形

システムで動作確認

irsend 回路から送信した赤外線リモコン信号を使ってシステムが正しく応答するかの確認を行います。(図21)

図21 システムで動作確認を行う

  1) BOSE FreeStyle 赤外線リモコンの On( Video ) ボタンを押す。
  2) BOSEスピーカーから音楽が流れる。
  3) irReceive 回路の Boot ボタンを押す。
  4) BOSEスピーカーの音楽が止まる。

以上 1) ~ 4) の手順で正しく動作することが確認できました。

次回は webserver について説明します。

リンク

ESP32を使って学習リモコンを作る(1) 学習リモコンでどんなことができるの?
ESP32を使って学習リモコンを作る(2) ハードウエア
ESP32を使って学習リモコンを作る(3) ソフトウエア 赤外線リモコン受信( irReceive )
ESP32を使って学習リモコンを作る(4) ソフトウエア 赤外線リモコン送信( irSend )
ESP32を使って学習リモコンを作る(5) ソフトウエア webserver
ESP32を使って学習リモコンを作る(6) ソフトウエア FLASH 読書き(SPIFFS)
ESP32を使って学習リモコンを作る(7) ソフトウエア 本機のプロジェクト
ESP32を使って学習リモコンを作る(8) ソフトウエア 本機プロジェクトの勘所
ESP32を使って学習リモコンを作る(9) ハードウエア設計の勘所
ESP32を使って学習リモコンを作る(10) 学習リモコンを操作した時のターミナル出力
Smart_Remote_Controller プロジェクト GitHub

(YI)

Visula Studio Code ( VSCode ) を開いて画面左端縦の「アクティビティバー」からアリさんマーク(赤丸)をクリックします。(図3)

*図3 Visual Studio Code を開く

プライマリサイドバーが表示されるので Create New Project をクリックします。(図4)

*図4 プライマリサイドバー

PIO Home 画面が表示されます。(図5)

*図5 PIO Home 画面

画面中央から右寄りの Quick Access から + New Project をクリックすると、Project Wizard が表示されます。(図6)

*図6 Project Wizard

Project Wizard に従って入力します。(図7)
  Name:  irRemote (何でもいいので任意のプロジェクト名を入力)
  Board: Espressif ESP32 Dev Module (プルダウンメニューから選択します)  
  Framework: Arduino (プルダウンメニューから選択します)

*図7 Project Wizard に必要事項を入力した

Project Wizard で Finish をクリックするとプロジェクトが自動生成されます。(図8)

*図8 プロジェクトが自動生成された

ライブラリ

IRremote のライブラリが必要になります。IRremote は platformio.ini にライブラリ依存性を定義すると自動的にインストールされます。

irSend プロジェクト

自動生成されたプロジェクトに追加、変更を加えて irSend に対応させます。

platformio.ini ファイルに以下の 3 行を追加します。(図9)
  lib_deps = z3t0/IRremote@^4.4.1 (ライブラリ名を訂正しました)
  upload_port = COM3 (使用する PC によって変わります)
  monitor_speed = 115200

*図9 platformio.ini

自動生成された main.cpp ファイルをクリックしてプログラムを表示します。(図10)

*図10 main.cpp

main.cpp の内容を全て削除して、代わりに「あすき」さんのプログラムを使わせていただきます。
Arduino(ESP32)でエアコンの赤外線リモコンの信号をコピーして発信する」から「先ほどメモしたprontoの情報を使ってプログラムを作成」にあるプログラムをコピーして main.cpp にペーストします。(図11)
警告が出るかもしれませんが自動的に解消されるのでそのままで構いません。

*図11 プログラムをペーストした

main.cpp の 10 行目と 11 行目のデータを書き換えることにします。

ESP32を使って学習リモコンを作る(3) で説明した赤外線リモコン送信機(例 Bose Freestyle )を irReceive 回路の赤外線リモコン受光ICに向けて任意のボタン(例 Off )を押して irReceive で受信した時にターミナルに表示される情報の末尾を参照します。(図12)

Pronto Hex as string
char prontoData[] = “0000 006D 0022 0000 015B 00AA 0018 0012 0018 003F 0018 0012 0018 003F 0018 003F 0018 003D 0018 0014 0018 003D 0018 003F 0018 003F 0018 0012 0018 003F 0018 0012 0018 0012 0018 0041 0016 0014 0016 0014 0018 0014 0016 003F 0018 003F 0016 0014 0018 0014 0016 003F 0018 0014 0016 003F 0018 003F 0018 0014 0016 0014 0016 0041 0016 0041 0016 0014 0016 0041 0016 06C3 “;

図12 Bose Freestyle リモコン送信機 Off ボタン受信時のターミナル出力末尾

「あすき」さんの記事では、10 行目をエアコンの ON に、11 行目をエアコンの OFF に割り当てていましたが、ここでは要素技術の動作確認用なので 10 行目、11 行目の両方とも Bose Freestyle Off に割り当てることにします。図12 の情報から ” ” で囲まれた部分をコピーして main.cpp の 10 行目と 11 行目の “ ” で囲まれた部分と置き換えます。(図13)

*図13 10 行目、11 行目を置き換えた

irSend プロジェクトの勘所

作成した irSend プロジェクトについての理解を勘所としてまとめます。

  8 行目 #include <IRremote.hpp> ライブラリのインクルード

  15 行目 IrSender.begin(); 赤外線送信ライブラリの初期化

  22 行目  IrSender.sendPronto(prontoDataTurnOn22Heater);
  変数 prontoDataTurnOn22Heater の内容を赤外線リモコンフォーマットで出力する

以上の 3 ポイントを押さえておけば良いと思います。

ファームウエアビルド

PROJECT TASKS から Build をクリックするとビルドが開始されて [SUCCESS] と表示されると完了です。(図14)

*図14 Build が完了した

ファームウエア書込み

ESP32-DevKitC-32E を USB ケーブルで PC に接続します。 PROJECT TASKS から Upload をクリックするとファームウェアの書込みが開始されて [SUCCESS] と表示されると完了です。(図15)

*図15 ファームウエアの書き込みが完了した

ファームウエア実行

PROJECT TASKS から Monitor をクリックするとファームウェアの実行が開始されて、ターミナルウインドウに起動時のメッセージが表示されると待受け状態になります。(図16)

*図16 irSend が起動されて待受け状態になった

赤外線リモコン信号送信

irSend 回路の Boot ボタンを押すとターミナルに「send turn on at xxxxx」のメッセージが出力されます。(図17)

*図17 Boot ボタン押下時のターミナル出力

メッセージ出力と同時に赤外線リモコン信号が送信されます。
この信号は main.cpp の10 行目に設定したデータに対応しています。(本稿では 18 番ピンにボタンを設けていないので 11 行目に設定したデータは送信されません。)

赤外線 LED を駆動している NPN トランジスタ Q1 2SC945 のコレクタ端子をオシロスコープで観測すると赤外線リモコン信号の送信に対応した波形が確認できます。(図18)

*図18 NPN トランジスタ Q1 2SC945 のコレクタ波形

赤外線 LED を駆動する回路の動作は図18 で確認できました。
赤外線が正しく出ているかはブレッドボードに搭載されている irReceive 回路(ESP32を使って学習リモコンを作る(3) 図1 参照)を利用します。irReceive 回路の赤外線リモコン受光 IC は常時動作しているので 15 ピン入力を観測すると irSend 回路の赤外線 LED が出力した赤外線の波形を確認することができます。(図19、図20)

図19 irSend 回路 → irReceive 回路

*図20 15 ピン波形

システムで動作確認

irsend 回路から送信した赤外線リモコン信号を使ってシステムが正しく応答するかの確認を行います。(図21)

図21 システムで動作確認を行う

  1) BOSE FreeStyle 赤外線リモコンの On( Video ) ボタンを押す。
  2) BOSEスピーカーから音楽が流れる。
  3) irReceive 回路の Boot ボタンを押す。
  4) BOSEスピーカーの音楽が止まる。

以上 1) ~ 4) の手順で正しく動作することが確認できました。

次回は webserver について説明します。

リンク

ESP32を使って学習リモコンを作る(1) 学習リモコンでどんなことができるの?
ESP32を使って学習リモコンを作る(2) ハードウエア
ESP32を使って学習リモコンを作る(3) ソフトウエア 赤外線リモコン受信( irReceive )
ESP32を使って学習リモコンを作る(4) ソフトウエア 赤外線リモコン送信( irSend )
ESP32を使って学習リモコンを作る(5) ソフトウエア webserver
ESP32を使って学習リモコンを作る(6) ソフトウエア FLASH 読書き(SPIFFS)
ESP32を使って学習リモコンを作る(7) ソフトウエア 本機のプロジェクト
ESP32を使って学習リモコンを作る(8) ソフトウエア 本機プロジェクトの勘所
ESP32を使って学習リモコンを作る(9) ハードウエア設計の勘所
ESP32を使って学習リモコンを作る(10) 学習リモコンを操作した時のターミナル出力
Smart_Remote_Controller プロジェクト GitHub

(YI)

部品配置は ESP32-DevkitC-32E の左側が irSend 部品配置図になります。(図2)
ESP32を使って学習リモコンを作る(2) で紹介した「図5 部品配置図」と同一となります。

*図2 irSend 部品配置

プロジェクトを作成する

Visula Studio Code ( VSCode ) を開いて画面左端縦の「アクティビティバー」からアリさんマーク(赤丸)をクリックします。(図3)

*図3 Visual Studio Code を開く

プライマリサイドバーが表示されるので Create New Project をクリックします。(図4)

*図4 プライマリサイドバー

PIO Home 画面が表示されます。(図5)

*図5 PIO Home 画面

画面中央から右寄りの Quick Access から + New Project をクリックすると、Project Wizard が表示されます。(図6)

*図6 Project Wizard

Project Wizard に従って入力します。(図7)
  Name:  irRemote (何でもいいので任意のプロジェクト名を入力)
  Board: Espressif ESP32 Dev Module (プルダウンメニューから選択します)  
  Framework: Arduino (プルダウンメニューから選択します)

*図7 Project Wizard に必要事項を入力した

Project Wizard で Finish をクリックするとプロジェクトが自動生成されます。(図8)

*図8 プロジェクトが自動生成された

ライブラリ

IRremote のライブラリが必要になります。IRremote は platformio.ini にライブラリ依存性を定義すると自動的にインストールされます。

irSend プロジェクト

自動生成されたプロジェクトに追加、変更を加えて irSend に対応させます。

platformio.ini ファイルに以下の 3 行を追加します。(図9)
  lib_deps = z3t0/IRremote@^4.4.1 (ライブラリ名を訂正しました)
  upload_port = COM3 (使用する PC によって変わります)
  monitor_speed = 115200

*図9 platformio.ini

自動生成された main.cpp ファイルをクリックしてプログラムを表示します。(図10)

*図10 main.cpp

main.cpp の内容を全て削除して、代わりに「あすき」さんのプログラムを使わせていただきます。
Arduino(ESP32)でエアコンの赤外線リモコンの信号をコピーして発信する」から「先ほどメモしたprontoの情報を使ってプログラムを作成」にあるプログラムをコピーして main.cpp にペーストします。(図11)
警告が出るかもしれませんが自動的に解消されるのでそのままで構いません。

*図11 プログラムをペーストした

main.cpp の 10 行目と 11 行目のデータを書き換えることにします。

ESP32を使って学習リモコンを作る(3) で説明した赤外線リモコン送信機(例 Bose Freestyle )を irReceive 回路の赤外線リモコン受光ICに向けて任意のボタン(例 Off )を押して irReceive で受信した時にターミナルに表示される情報の末尾を参照します。(図12)

Pronto Hex as string
char prontoData[] = “0000 006D 0022 0000 015B 00AA 0018 0012 0018 003F 0018 0012 0018 003F 0018 003F 0018 003D 0018 0014 0018 003D 0018 003F 0018 003F 0018 0012 0018 003F 0018 0012 0018 0012 0018 0041 0016 0014 0016 0014 0018 0014 0016 003F 0018 003F 0016 0014 0018 0014 0016 003F 0018 0014 0016 003F 0018 003F 0018 0014 0016 0014 0016 0041 0016 0041 0016 0014 0016 0041 0016 06C3 “;

図12 Bose Freestyle リモコン送信機 Off ボタン受信時のターミナル出力末尾

「あすき」さんの記事では、10 行目をエアコンの ON に、11 行目をエアコンの OFF に割り当てていましたが、ここでは要素技術の動作確認用なので 10 行目、11 行目の両方とも Bose Freestyle Off に割り当てることにします。図12 の情報から ” ” で囲まれた部分をコピーして main.cpp の 10 行目と 11 行目の “ ” で囲まれた部分と置き換えます。(図13)

*図13 10 行目、11 行目を置き換えた

irSend プロジェクトの勘所

作成した irSend プロジェクトについての理解を勘所としてまとめます。

  8 行目 #include <IRremote.hpp> ライブラリのインクルード

  15 行目 IrSender.begin(); 赤外線送信ライブラリの初期化

  22 行目  IrSender.sendPronto(prontoDataTurnOn22Heater);
  変数 prontoDataTurnOn22Heater の内容を赤外線リモコンフォーマットで出力する

以上の 3 ポイントを押さえておけば良いと思います。

ファームウエアビルド

PROJECT TASKS から Build をクリックするとビルドが開始されて [SUCCESS] と表示されると完了です。(図14)

*図14 Build が完了した

ファームウエア書込み

ESP32-DevKitC-32E を USB ケーブルで PC に接続します。 PROJECT TASKS から Upload をクリックするとファームウェアの書込みが開始されて [SUCCESS] と表示されると完了です。(図15)

*図15 ファームウエアの書き込みが完了した

ファームウエア実行

PROJECT TASKS から Monitor をクリックするとファームウェアの実行が開始されて、ターミナルウインドウに起動時のメッセージが表示されると待受け状態になります。(図16)

*図16 irSend が起動されて待受け状態になった

赤外線リモコン信号送信

irSend 回路の Boot ボタンを押すとターミナルに「send turn on at xxxxx」のメッセージが出力されます。(図17)

*図17 Boot ボタン押下時のターミナル出力

メッセージ出力と同時に赤外線リモコン信号が送信されます。
この信号は main.cpp の10 行目に設定したデータに対応しています。(本稿では 18 番ピンにボタンを設けていないので 11 行目に設定したデータは送信されません。)

赤外線 LED を駆動している NPN トランジスタ Q1 2SC945 のコレクタ端子をオシロスコープで観測すると赤外線リモコン信号の送信に対応した波形が確認できます。(図18)

*図18 NPN トランジスタ Q1 2SC945 のコレクタ波形

赤外線 LED を駆動する回路の動作は図18 で確認できました。
赤外線が正しく出ているかはブレッドボードに搭載されている irReceive 回路(ESP32を使って学習リモコンを作る(3) 図1 参照)を利用します。irReceive 回路の赤外線リモコン受光 IC は常時動作しているので 15 ピン入力を観測すると irSend 回路の赤外線 LED が出力した赤外線の波形を確認することができます。(図19、図20)

図19 irSend 回路 → irReceive 回路

*図20 15 ピン波形

システムで動作確認

irsend 回路から送信した赤外線リモコン信号を使ってシステムが正しく応答するかの確認を行います。(図21)

図21 システムで動作確認を行う

  1) BOSE FreeStyle 赤外線リモコンの On( Video ) ボタンを押す。
  2) BOSEスピーカーから音楽が流れる。
  3) irReceive 回路の Boot ボタンを押す。
  4) BOSEスピーカーの音楽が止まる。

以上 1) ~ 4) の手順で正しく動作することが確認できました。

次回は webserver について説明します。

リンク

ESP32を使って学習リモコンを作る(1) 学習リモコンでどんなことができるの?
ESP32を使って学習リモコンを作る(2) ハードウエア
ESP32を使って学習リモコンを作る(3) ソフトウエア 赤外線リモコン受信( irReceive )
ESP32を使って学習リモコンを作る(4) ソフトウエア 赤外線リモコン送信( irSend )
ESP32を使って学習リモコンを作る(5) ソフトウエア webserver
ESP32を使って学習リモコンを作る(6) ソフトウエア FLASH 読書き(SPIFFS)
ESP32を使って学習リモコンを作る(7) ソフトウエア 本機のプロジェクト
ESP32を使って学習リモコンを作る(8) ソフトウエア 本機プロジェクトの勘所
ESP32を使って学習リモコンを作る(9) ハードウエア設計の勘所
ESP32を使って学習リモコンを作る(10) 学習リモコンを操作した時のターミナル出力
Smart_Remote_Controller プロジェクト GitHub

(YI)

コメント

error: Content is protected !!
タイトルとURLをコピーしました