« 三和シャッター無線リモコン RAX-330 パターンが溶けてる | トップページ | 秋月の赤外光送受信モジュール(AE-RPM851A)を使ってみる(IrDAを試す) #2 »

2022年6月17日 (金)

秋月の赤外光送受信モジュール(AE-RPM851A)を使ってみる(IrDAを試す)

制御装置本体にパラメータ設定用リモコンをシリアル通信で
つないでいる機器があります。
リモコンのスイッチ操作に応答して本体がデータ(文字列)を
送ってくるというもので、リモコンはそれを液晶表示(文字だけ)
しています。
データ量も多くないので通信速度は9600BPSにしてあります。

本体とリモコンのつなぎはコネクタ。
通常運転時、リモコンは不要。
取り外せるようにしてあるのです。

そんな装置に要望が。
 ・パラメータを再設定したいときはリモコンが必要。
 ・リモコンをつなぐのにコネクタを挿すのが面倒。
 ・設定後に外すのも面倒。
 ・無線か赤外線でリモコン操作できればうれしいなぁ。
    ※はい。ごもっともです

そして、
 ・動いている今のプログラムは触りたくない・・・
    ※無線だと制御コマンドのやりとり
     があれこれ必要になっちゃいます。

ということで、赤外線通信を試してみようということに
なりました。

試しに買ってきたのはこれ。
秋月電子の「赤外光トランシーバ(送受信)モジュール
「AE-RPM851A」
11_20220617101901

12_20220617101901

「赤外線で」というと、家電製品のリモコンで使われる
38kHzでの変調光が頭に浮かびます。
しかし「RPM851A」のブロック図を見ると、38kHzは
どこにも出てきません。

A12_20220617102001

「IrDA」の制御、例えばこの装置に使っている制御マイコン
ルネサスRX220 だと、IrDAの機能を搭載していて、ハードウェア
マニュアルにはこんな波形図が出てきます。
A11_20220617102001

UARTの出力から赤外モジュールのLEDを発光させるパルス
を作って、受光パルスからUARTへのシリアル信号を復元
しています。
「IrDA機能を搭載」ということは、これをしてくれる
ハードウェアが入っているということなんでしょう。

でも、マイコンにIrDA機能が載ってなかった時は
どうすれば?
ということで調べてみました。

UART←→IrDA」をやってくれるチップが見つかりました。

単純そうな「8pin」で探しますと・・・
まず、TIの TIR1000

  ※昔の50MHz AMトランシーバーを彷彿させる
   エエ型番です。

そしてマイクロチップの MCP2122

※注意!
二つは同じ信号ピン配置ですが、5番ピンの「リセット」、
この論理が異なります。
  TIのはHでリセット
  マイクロチップのはLでリセットです。

そして、マイクロチップの図には「Hアクティブ」のように
描かれていますんで要注意です。
A23_20220617102201
A24
  ※データシートの動作解説には「Lでリセット」を
   ちゃんと記されています。

TIのデータシートを見ると、制御タイミングがもう
ちょっと詳しくわかります。

  ・送信時 TXDからTXIR(LED駆動信号)を

A21_20220617102401
  ・受信時 RXIRからRX(UARTシリアルデータ)を

A22_20220617102401

とりあえずこんな回路で試運転。
A31_20220617102601
   (クリックで拡大↑)

・マイクロチップのMCP2122を使う。
・2セット作って試す。
・PCどうしで通信。
・PCとはUSBで接続。 (5V電源供給もUSBから)
・使ったUSBインターフェースは秋月の
  AE-CH340E-TYPEC
・74HC4060で4.9152MHzの水晶を発振させてQ5の
 1/32から153.6kHzのクロックを取り出し。
・ブレッドボードで仮組み。

13_20220617110401

14_20220617110401

実際に動かしてみて確認したかったのは、
  「送信した光を自分で受けるでしょ」。
今回の試運転は、これがどうなるのかを確かめたかっ
たのです。

送信したデータがそのまま受信データとして帰ってきたら、
そのデータを無視して捨ててしまうような処理を送信ルーチン
に入れなくてはなりません。

さて、結果。
赤外通信モジュールのピンで信号を観察すると、
  ・送信光を受信光として受ける
つまり、
  ・TXIRパルス(Hアクティブ)と同じものが
   LアクティブパルスとしてRXIRに出てくる。

これがMCP2122のRXIR端子に入ります。
しかし、RX(UARTシリアル出力データ)端子には受信信号
は出てきません。

  ・MCP2122が送信処理中に受けたRXIRパルスは
   無視して受信データとして出さない。
という処理がなされているようです。
これで、自分で送信したデータを受けたらそれを
捨てるという処理は不要。 便利!

「UART←→IrDA」の制御、これがあたりまえの機能なので
しょうか?
データシートにはこのように。
  ・送信:RXIR受信中はTXIR出力を禁止する。
  ・受信:送信中は受信をやめる。

ということで、装置の本体・リモコン間接続コネクタを
無くすという話、進めそうな雰囲気です。

※余談
秋月のUSBシリアル変換モジュール「AE-FT234X 」。
小さくて良いのですが、シリアル出力TXDが0~3.3V
で出て来ます。
受信側がTTLレベルで受けてくれるのなら、そのままで
良いのですが、「3.3VではちょいとHには足らんぞ」
という回路だとレベル変換をしなくちゃなりません。
今回のMCP2122もHレベルの定格が「0.8 x VDD」で
(5V電源だと4.0Vが定格レベル)、3.3Vの信号だと
ちょい足りません。
そこで0~5Vで出てくる「AE-CH340E」を使ったのです。
3.3V→5Vへの信号レベル変換、3.3V電源が使えれば良いの
ですが、使えるのが5Vだけだと、
  「Tr1コあるいはFET1コで簡単に」
ができません。
  ・2018年3月9日:放電特性記録機能付きバッテリー放電器、改造
    無理やり3.3Vを引っ張り出してます


※HC4060 Q5出力の抵抗
クロック出力に入れた1kΩの抵抗、これはクロック波形をちょっと
鈍らせるためのもの。
ブレッドボードで組んだため、このクロック信号をジャンパー線で
渡ってました。  (HC4060→MCP2122)
そこから放射されるノイズ(方形波のエッジ)を赤外モジュールが
拾ってしまったのです。
RXIR信号が不安定に出ちゃうのです。
  ジャンパー線を手で持つと改善。
     (シールド効果か容量分加算か!)
  長いのに変えたりループにしたりすると、誤パルス増大。
抵抗+ICの入力容量でパルスのエッジを押さえると改善した
という次第です。


※家電用リモコンの発光波形例 38kHzが見える
C_r1

※MCP2122のTXIR出力と
 TX LED発光の様子をフォトトラで観察
C_r2

※送信データとTXIR、別ユニットのRXIRと受信データ
C_c1

C_c2

※Arduino-UNOで
MCP2122を試そうとするとボーレートの16倍のクロック
が必要です。
↑の例では4.9152MHzの水晶を1/32して使いました。

Arduino-UNOだと、タイマー2で方形波を出せばクロックとして
使えます。
 ※元が16MHzですんでちょっと誤差が出ます。

Uu1
通信をテストするスケッチを書けば、様子が分かるかと。
  ※スケッチをアップロードする時は
   RXDのジャンパーを外さなければ
   なりません。

※続き
秋月の赤外光送受信モジュール(AE-RPM851A)を使ってみる(IrDAを試す) #2

|

« 三和シャッター無線リモコン RAX-330 パターンが溶けてる | トップページ | 秋月の赤外光送受信モジュール(AE-RPM851A)を使ってみる(IrDAを試す) #2 »

Arduino」カテゴリの記事

IrDA」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« 三和シャッター無線リモコン RAX-330 パターンが溶けてる | トップページ | 秋月の赤外光送受信モジュール(AE-RPM851A)を使ってみる(IrDAを試す) #2 »