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

投稿者: | 2019/02/11

前回は昔話に終始してしまいました。
今回は、実際の開発の話にしたいです。

Raspberry piから制御させるため、色々なリモコンフォーマットを生成できるようにします。

  • UART経由でフォーマットやリモコンコード、繰り返し送信回数の指定ができる
  • 少なくともNEC, SONY, 三菱, 家製協フォーマットを出力できる

リモコン信号は大きく、ヘッダー、データ0、データ1、セパレーター、ストップビット(ターミネーター)、ギャップで構成されています。
リモコン信号の塊をフレーム、赤外線が出力されている期間をマーク(mark),出力されていない期間をスペース(space)と呼ぶことにします。各要素を簡単に説明します。これを仕様としてプログラミングします。

  • ヘッダー(HEADER): フレームの開始を示すため、データより長いマークとスペースから構成される。マークだけを示すこともある。フォーマットによってはヘッダーが無いものもある。
  • セパレーター(separator):ヘッダーやデーターの区切りを示すもの。一般的にスペースが挿入される。
  • データ:0,1を示す。1Tのマーク期間とスペース期間を変えて、0,1を識別する。SONYフォーマットではマーク期間を変えて0,1を識別する。一般的に8ビット(1バイト)単位のLSBファーストで送信される。フォーマットによっては8ビット単位とは限らない。バイト毎にセパレータが挿入されるフォーマットもある。
  • ストップビット(ターミネーター):データがマーク→スペースの順で送信されるフォーマットでは、最終ビットが0なのか1なのかを示すため、ストップビットを配置してデータの終わりを示す。
  • ギャップ:次のフレームを送信するまでの期間。この期間を守らないと正しいリモコンコードと認識されない。単純にコードの終わりに指定時間のスペース(無信号)を入れるものと、フレーム開始から次のフレーム送信開始までの期間を一定にするもがある。この場合、送信コードにより時間(0,1の割合が異なる)が異なるため、コード期間を算出する必要がある。また、ヘッダを含まないものもある。

実際の設計は別の機会に紹介するとして、実際にマイコンから出力した波形とリモコン受光モジュールで受信した波形です。NECフォーマットだけは対応機器がなく動作確認できていませんが、他は実機確認済みです。

NEC Format リピート付き
SONY Format (BDR Power ON)
家製協Format Panasonic蛍光灯 2回送信
三菱テレビFormat (ヘッダー無し)
三菱テレビFormat(ヘッダー、セパレータ付き) 複数回送信
キャリア波形 (38kHz, Duty 30%指定時)

家製協フォーマットは20バイトまでは対応しているつもりです、まだ実機(エアコンなど)では確認できていませんが。

STM32F100用ではありませんが、STM32F103C8T6での例を別のページSTM32F103C8T6 でTM1638を使う(IR Transmitter sample付き)で紹介していますので参考にしてください。だいたい同じように使えます。

コメントを残す

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

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