■マイコンを使った赤外線リモコンの製作は過去PICやAVRでも行っていて、工作の勘所はもうわかり切っている。39KHzのキャリア生成が難しいし、それから赤外LEDの出力を出すのも難しい。いや、難しいと言うほどの難易度ではないんですが、そのあたりがクリアできれば割と使いやすいリモコンができる。出力を稼ぐのが意外と大事かな。マイコンのソース電流にしろ、シンク電流にしろ、結構制限が厳しい。
39KHz生成はその昔は専用にPICマイコンで作ったこともあったのですが、今はPWMで39KHzを生成します。デューティー比はだいたい50%で。STM32でもその手でいきます。39KHz,デューティー比50%程度で生成できる状態にしておいて、あとはPWM出力のイネーブルとディスエーブルを切り換えて信号を送出するわけです。
ちょっと大変だったのはこのPWM出力に関する資料がない。なくはないのだけど詳細が不明でよく解らない。時間がかかるかなあと思っていたところへCQ出版の「STM32マイコン徹底入門」という技術書がタイミング良く登場。おかげさまでPWM出力はあっさりと行えました。プリスケーラやその他ペリフェラルの設定周りは未だよく理解できてはいないのですが、オシロスコープで波形を確認しつつ、周波数を調整しました。こうしてみるとオシロスコープには大分助けられています。39KHz程度の周波数であれば、200MHzのサンプリングレートは十分で、きれいに矩形波を捉えることができました。
次のポイントは赤外LEDにきちんと電流を流してやることです。今回使った赤外LEDは最大定格が100mmA。順方向電圧が1.3Vほどなので、20オームほどの制限抵抗をいれてだいたい100mmAが流れるようにします。ただ、STM32にあまり負担はかけたくないので、マイコンをバイパスした供給ラインからLEDに電流を流す、ドライバ回路を作ることにしました。
エミッタ接地のNPN型トランジスタとP-ChのFETを組み合わせたハイサイドスイッチで、トランジスタのベース電圧をSTM32のPWM出力でドライブし、スイッチのオン・オフをコントロールする要領です。
基本的に39KHzのキャリアが作れれば、あとはリモコン信号を再生すれば良いわけで、そこはオンして空ループ、オフして空ループを回すことの繰り返し。もちろんプログラム的に信号データを再現しやすくするようなロジックをライブラリとして用意するなど、工夫する個所は残りますが、難しい部分ではなく、強いて言えば単に面倒くさい部分です。
組み上げてさっそく使ってみると、ちゃんとコントロールできました。UARTでコマンドを送れるようにすると面白いかな。そのあたりは今後ゆっくりと。