赤外線リモコンを送信するために赤外線LEDを利用します。VESP32-DevKitC端子の出力では電流が弱いことから、トランジスタを用いて小さな電流で大きな電流を制御します。100上図のようにトランジスタには、エミッタ、コレクタ、ベースの3本のリード線があり、ベースによりコレクタ〜エミッタ間の電流を制御します。GPIO32の出力をON/OFF制御することで赤外線LEDをのON/OFF制御します。このため、配線はエミッタにGNDを接続し、コレクタに赤外線LED、ベースに200Ωを介してGPIO32端子を接続します。(赤黒黒黒茶)GPIO32端子からベースに小さな電流を流すことでコレクタ〜エミッタ間の赤外線LEDに流れる電流を制御します。赤外線LEDに接続する抵抗はこちらの通りLEDの順電圧と順電流から同様に算出します。(茶黒黒金茶)となりますので、10Ωの抵抗を接続します。【ESP32-DevKitCの入出力端子はこちらを参照下さい】LEDのリード線は長く、長さも一定でないので、適切な長さにニッパーで切り揃えてください。3つのLEDはリード線を折り曲げて方向を適宜変更して取り付けて下さい。【注意】1.回路図にはありませんがESP32開発ボードにソフトを書き込む場合はEN端子を0.1μFのコンデンサでGNDへ配線して下さい。ESP32開発ボード(30pin)固有の利用方法なので回路図は省略させて頂きます。2.回路図、配線図は2-1から順次配線した図になります。(LEDなど配線した部品は取り外さず追加で配線しています)取り付け後のイメージについては全てのセンサを取り付けた以下を参考にして下さい。スケッチ(制御ソフトウェア)10秒間隔で赤外線リモコン信号を送信するスケッチは以下に示します。{};}スケッチで最初に赤外線LEDを制御する端子を1で設定しています。2の送信データは2-1-5.赤外線リモコン受信のシリアルモニターに表示された「347,172,40,・・・」を行の最後まで取得し、行の最後のカンマ(,)を削除し貼り付けて下さい。信号あり・なしの継続時間を表した値になりますので、その時間間隔に従って信号あり/なしを交互に送信します。setup関数はパソコンとのシリアル通信開始と端子設定を行なっています。loop関数は10秒間隔でリモコン信号を送信する関数irSend(7)を5で繰り返し呼び出し実行します。irSend関数内で赤外線リモコン信号を送信しています。2で設定した全データ長を1個のデータ長で割ることで全体の個数(配列数)を9で計算しirCountに格納しています。この個数だけ信号あり・なしの数がありますので、その数を11のfor文で繰り返し処理します。10で信号送信の開始時間を取得し保持しています。11のfor文では信号あり・なしの時間長が取得できますので、do〜while文は16で時間経過が終了するまで実行されます。!(i&1));」でiが偶数の時にHIGH(1)、iが奇数の時にLOW(0)がdigitalWriteでGPIO32端子をON/OFF制御します。「i&1」はビット演算でiを1とANDを取っていますので、iの最終bitである0or1を取得しています。「!」はbitを反転を表していて、0は1へ、1は0へ反転させています。このため、iが0の時は「!(i&1)」は1(HIGH)を出力し、iが1の時は「!(i&1)」は0(LOW)を出力します。iが2以降も同様に13でHIGHとLOWが順次交互に送信されます。13digitalWriteで設定した状態を「microWait(13);」で13μsそのままWaitして継続する処理をしていて、HIGHならHIGHの状態、LOWならLOWの状態を13μsそのまま維持します。0)」はLOWの状態にし13μsそのまま維持します。これはリモコン信号のキャリア周波数が38KHz(26μs周期)で送信しているために13μs毎で信号のON/OFFするために実施しています。(信号ありの場合はHIGH/LOWを13μ秒毎に繰り返し、信号なしの場合はLOWの状態のまま)このように2で設定したデータを元に11のfor文で最後まで処理しリモコン信号を送信しています。SNS用シェアボタンTwitterFacebookGoogle+LinkedInPocket新着記事sLab-Remo2のスケッチUpdate平素よりご愛顧いただき大変ありがとうございます。...リモコン送受信失敗又は不具合時の対応リモコン送受信に失敗する事象が発生しております。...Mac端末OSX10.10以下のArduinoIDEスケッチ書き込みについて日頃よりsLabシリーズをご愛顧頂き大変ありがとうございます。