Ⅳ-1. ESP32によるMQTTで赤外線制御:準備編

 MQTTのトピックの書式からもわかるように、MQTTは異なった場所に分散した機器などを制御するのに適しています。制御対象にはいろんなものがありますが、身近で取り組めるものとしては家電のリモコンがあげられます。特別な器具や配線が不要なので簡単に試すことができます。
 リモコンで使っている赤外線の送受信するセンサーは入手が容易で、ESP32用の関連ライブラリーもあるので、さっそく試してみることにしましょう。



1.ホームオートメーションと赤外線制御

 ホームオートメーションは、照明や空調・給湯のなどを自動的に最適化し、専用ユニットやスマートフォン、パソコンなどから一括管理や遠隔操作ができるようにするものです。セキュリティの確認やペットの状況確認、さらに観葉植物への自動散水やペットへの自動給餌などもこれに含まれます。最近ではこれらをすべてまとめた住宅、スマートハウスも登場しています。
 家電製品や室内設備を制御するには、それらに接続されたリレーやスイッチングアクチュエータ、専用コントローラーなどを使用しますが、手軽に実験するにはもっと簡単な方法があります。ESP32を身近にあるリモコンに仕立てれば、テレビやオーディオ機器、エアコンなどを制御することができます。

○赤外線通信

 リモコンは赤外線信号で動作しています。ここで、赤外線とリモコンについて簡単に見ておきましょう。
 電磁波を波長で分類すると下図のようになります。赤外線は可視光線の赤色より波長が長く(周波数が低く)、電波より波長の短い電磁波です。波長はおよそ1,000nm~760nmで人の目では見ることができません。

 赤外線は太陽や照明などいたるところから発光されているので、発光周波数が38KHzの(厳密には38kHz変調の)ものを信号として認識し、他の光と区別しています。これからの実験でも家電用の38KHz対応のものを使用します。

○通信フォーマット

 3種類の代表的なフォーマットがあり、ほとんどの家電の赤外線リモコンはこのフォーマットを採用しています。
   ・NECフォーマット
   ・家電協(AEHA)フォーマット
   ・SONYフォーマット
 NECフォーマットを例にすると、先頭が9msの期間On状態が続き、その後に4.5msの期間Off状態をとるリーダーコードで始まります。その後に16bitのカスタムコード(機器に割り当てられたコード)と8bitのデータコード、それをビット反転した8bitのデータコード、そしてストップビットで構成されています。反転データコードはエラーチェックのために使用されます。

○赤外線デバイスの準備

 MQTTを利用した一連の赤外線制御の実験を行うために、次の3種類の実験回路をブレッドボード上に組み立てます。
①赤外線モニター
  家電用リモコンの赤外線データを受信して解析するためのデバイス。
②赤外線送信器
  MQTTブローカーから特定の赤外線制御データをサブスクライブして、赤外線LEDを発光させるデバイス。
③赤外線リモコン
  プッシュボタン操作でMQTTブローカーに赤外線制御データをパブリッシュするデバイス。


2.赤外線モニターボードの作成

 家電用リモコンの赤外線データを受信・解析するためのデバイスです。ESP32に赤外線受光モジュールを接続するだけで完成します。テレビやエアコンなどのリモコンを受光モジュールに向けて操作することで、リモコンがどのような赤外線データを発信しているかを調べます。
 リモコンデータを解析した後は不要になるので、先に解析作業(次章の「赤外線モニターとリモコンデータの解析」)を済ませて解体し、ボードを次節の赤外線送信器に転用することができます。
 ボード上の電解コンデンサーは、下の「①使用部品」でも注記しているように、DOIT ESP32 DEVKIT V1固有の問題である「コンパイル結果を自動書き込みできない」点を解消するためのものでです。第1ピンENとGNDピンの間に接続しています。これは、以降で作成するその他のボードでも同様です。

①使用部品

 ・ESP32開発ボード(ここではDOIT ESP32 DEVKIT V1)ここでは30pin1台Ebay.com $5.50
 ・赤外線受光モジュール VS1838B1個手持ち品 100円?
 ・電解コンデンサー10μF 50V1本※必要に応じて
 ・ブレッドボード6穴版 EIC-39011枚秋月電子通商 280円
 ・配線類少々
  ※10μFはDOIT ESP32 DEVKIT V1固有の
      コンパイル結果自動書き込み用です。
(赤外線受光モジュール VS1838Bの仕様)


  ・電源電圧範囲: 2.7~5.5V
  ・消費電流: 1.5mA(無信号時最大)
  ・周波数: 38kHz
  ・中心波長: 940nm


②配線

 主な部品の接続要領と配線図は次の通りです。
 ○ 赤外線受光モジュール VS1838B
   ・Vout: GPIO18へ
   ・GND: GNDへ
   ・Vcc: 3V3(3.3V)へ

3.赤外線送信器ボードの作成

 MQTTで特定の赤外線制御データをサブスクライブして、赤外線LEDを発光させるためのデバイスです。これを家電製品の受光部分に向けて制御します。指向性を緩和するために複数の赤外線LEDを搭載することも考えられますが、今回は動作実験なので1つで済ませます。

①使用部品

 ・ESP32開発ボード(ここではDOIT ESP32 DEVKIT V1)ここでは30pin1台Ebay.com $5.50
 ・5mm赤外線LED OSI5FU5111C-401個秋月電子通商 20円
 ・トランジスター 2SC18151本秋月電子通商 10円
 ・カーボン抵抗器1/4W 10Ω1本
 ・カーボン抵抗器1/4W 3.3KΩ1本
 ・電解コンデンサー10μF 50V1本
 ・電解コンデンサー10μF 50V1本※必要に応じて
 ・ブレッドボード6穴版 EIC-39011枚秋月電子通商 280円
 ・配線類少々
  ※10μFはDOIT ESP32 DEVKIT V1固有の
      コンパイル結果自動書き込み用です。
(5mm赤外線LED OSI5FU5111C-40の仕様)


  ・順電圧: 1.35V
  ・ピーク波長: 940nm
  ・照射強度: 40mW/sr

 (トランジスター 2SC1815の仕様 ... 秋月電子通商「2SC1815 PDFデータシート」より)

  ・VCEO = 50V(最小)、IC = 150mA(最大)
  ・hFE(2) = 100(標準) (VCE = 6V, IC = 150mA)
  ・hFE(IC = 0.1mA) / hFE(IC = 2mA) = 0.95(標準)
  ・PO = 10W


②配線

 主な部品の接続要領と配線図は次の通りです。
 ○ トランジスター 2SC1815
   ・C: OSI5FU5111C-40のKへ
   ・B: 3.3KΩを経由してGPIO19へ
   ・E: GNDへ
 ○ 赤外線LED OSI5FU5111C-40
   ・A: 10Ωを経由してVIN(5Vピン)へ
   ・K: 2SC1815のCへ
 ○ その他
   ・VIN(5Vピン)とGNDの間に10μF

4.赤外線リモコンボードの作成

 解析したリモコンデータを記憶して、ボタン操作によって該当するデータをパブリッシュします。本来ならWebアプリケーションを作成してPCやスマートフォンから操作できるようにしたいところですが、ここではボード上に黄色プッシュボタンと青色プッシュボタンを配置して、2系統の制御信号をブローカーに送信できる仕組みとします。

①使用部品

 ・ESP32開発ボード(ここではDOIT ESP32 DEVKIT V1)ここでは30pin1台Ebay.com $5.50
 ・プッシュボタン(タクトスイッチ黄色)1個秋月電子通商 10円
 ・プッシュボタン(タクトスイッチ青色)1個秋月電子通商 10円
 ・5mm黄色LED1本秋月電子通商 10円
 ・5mm青色LED1本手持ち 10円
 ・カーボン抵抗器1/4W 300Ω2本
 ・カーボン抵抗器1/4W 10KΩ2本
 ・電解コンデンサー10μF 50V1本※必要に応じて
 ・ブレッドボード6穴版 EIC-39011枚秋月電子通商 280円
 ・配線類少々
  ※10μFはDOIT ESP32 DEVKIT V1固有の
      コンパイル結果自動書き込み用です。


②配線

 主な部品の接続要領と配線図は次の通りです。
 ○ 青色LED
   ・A: 300Ωを経由してGPIO25へ
   ・K: GNDへ
 ○ 黄色LED
   ・A: 300Ωを経由してGPIO26へ
   ・K: GNDへ
 ○ 青色プッシュボタン
   ・一方を3V3へ
   ・他方を10KΩでGNDへ、その接点をGPIO18へ
 ○ 黄色プッシュボタン
   ・一方を3V3へ
   ・他方を10KΩでGNDへ、その接点をGPIO19へ

 これでMQTTによる赤外線情報の送受信実験用デバイスが整いました。。
 次回は赤外線モニターでリモコンデータを取り込み、それを組み込んだESP32版リモコンソフトを作成する予定です。
 お楽しみに!