STM32F100で赤外線リモコン送信機を作る(1)

投稿者: | 2019/02/11

以前購入して眠っていたSTM32VLDISCOVERYを使うことにします。このDiscoveryに使われているSTM32F100RBT6Bは、クロック24MHz, Flash 128KiB, RAM 8KiBと十分な容量を持っています。タイマーもたくさんあります。
また、最近、中国製のSTM32F103C8T6を搭載した基板がAmazonでも¥400程度、中国に直接注文するAliexpressだと¥200以下で手に入るという激安ボードがあります。こちらはクロック72MHz, FLASH 64KiB(128KiB使えるという話もある), RAM20KiBと高性能です。

一旦、STM32F100RBT6Bでプロトを作り、その後でSTM32F103C8T6に移植したいと思います。このRAMサイズだと色々使えそうですし、安いので何枚か手配中です。

赤外線リモコンのフォーマットについては、すでに沢山の情報がありますが、簡単に説明したいと思います。

受信機側はリモコン受光モジュールで信号を受け、出力されるH,L信号のパルス幅で0か1かを識別しますが、実際にリモコン送信機から出力される信号は32〜40kHzのパルスで変調されています。これをキャリアと呼びます。実際の赤外線信号はON期間中この繰り返しパルスが送られている訳です。(リモコン受光モジュールの出力は負論理が一般的なのでパルス期間はLが出力されます)
そしてこの基準となるパルス期間を1Tとします。元々は1T周期中には整数個のパルスが入るようになっていました。昔、マイコンが高速でなかった時代にはアセンブラでこのパルスを生成したり、リモコン用タイマーカウンタを持ったマイコンを使っていました。

赤外線リモコンの信号が連続信号ではなく、パルスなのは、次のような理由からです。

  • キャリア周波数でフィルターをかけることにより、蛍光灯の光や日光などの影響を抑えることができる。
  • パルスだとLED瞬時に大きな電流を流しても(LEDも電池も)耐えられる。これによりリモコンの到達距離を伸ばすことができる。

最近では、キャリア周波数は38kHzが主流となってきたようですが、過去の製品との互換性を保つために1T周期は変更せず、キャリア周波数だけが変更されたもののあります。受光素子の特性が38kHzを中心に感度が高いということで、32kHz,40kHzでも全く受信できないわけではありません。ただ、リモコンの到達距離は中心周波数からずれるにつれて短くなります。

リモコンフォーマットとして、NEC方式、SONY方式、家製協フォーマットが有名ですが、リモコンが普及し始めた当時、マイコン(4bit)としてはNECが多く使われていたため、NECフォーマットが多く普及していますが、同様にリモコン用マイコンを販売していた三菱フォーマットもあります。どちらも同じ会社になってしまい、今ではどちらもルネサスフォーマットですが…
家製協フォーマットはこれらより遅れて発表されました。当時はマイコンの処理能力も低く、ビット長が長い家製協フォーマットはなかなか普及しませんでした。提唱社の松下電器(当時)だけの期間が相当あったようです。その後、リモコン機器の普及に伴い、各社毎に割り当てられれるカスタムコード(NECフォーマットでも1バイト、後に2バイト)の枠の枯渇、そして高機能化によりリモコンキーが足りなくなってきたため、家製協フォーマットが普及し始めました。エアコンなど一度に多くのデータを送るのは家製協フォーマットが必須ですね。
勝手にフォーマットを作るのも不可能ではないけど、既存フォーマットとの混信など検証に時間がかかりすぎますからね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください