フォト
2025年6月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
無料ブログはココログ

« TFT版 簡易画像ビューアー | トップページ | 豊四季Tiny BASICでHC-SR04を使った距離計測 »

2017年11月12日 (日)

シリアル接続 赤外線送受信モジュールの調査

Aliexpressでシリアル接続で利用出来る赤外線送受信モジュールを見つけ、入手しました。

Photo

製品はこんな感じです。

04

06

いつものAliexpressクオリティでマニュアルが無いので、
裏のシルク印刷「YS-IRTM」で情報を探すと ズバリの情報がありました。
  ・Arduino フォーラム Topic: Infrared interface
   https://forum.arduino.cc/index.php?topic=359707.0

上記の情報から、通販サイト「UCTronics Store」の商品情報のページに詳しい情報があります。
  ・Infrared Remote IR Decoder Encoding Transmitter & receiver Wireless Module NEC
  08

  このページにマニュアルのリンクがあります。
  http://www.uctronics.com/download/U3107_Infrared_decoding_module.zip

マニュアルは中国語ですが、使い方が分かりました。
(以下、使い方のメモ)

結線

05

シリアル(UART)はクロス接続です。電源は3.3Vでは動きません。5Vを供給します。
3.3Vマイコンを使う場合は、5Vトレラント対応を確認して利用します。
IchigoJamやSTM32(Blue Pillボード)のSerial1は、5Vトレラントなので直結出来ます。

シリアル通信条件
デフォルトでは、9600bpsで、8ビット長、パリティなし、ストップビット1、フロー制御無し

とりあえず、データの受信はこれで出来ます。
NECフォーマットなので、赤外線リモコンを押したときに、受信するデータは
次の3バイトとなります。
  [カスタマーコード上位] [カスタマーコード下位] [ボタンコード]

試しに、豊四季Tiny BASICを使って、受信してみます。

01

プログラムソース

10 CLS
20 SOPEN "9600"
30 D=SREAD()
40 IF D>=0 ?HEX$(D,2)
50 GOTO 30

プログラムは、シリアルをオープンして、データを受信したら16進数で表示します。

02

ボタンを押すと3バイト受信出来ました。
3バイトのうち、最初の2バイトがカスタマーコードで、どの赤外線リモコンから送信されたか識別できます。
3バイト目が押されるボタン毎に異なる値となります。

こういった実験は、単独稼働できるボードだとお手軽に出来ますね。
インタープリターでコンパイル不要なのも良いです。

モジュールには幾つかのコマンドが利用出来ます。
コマンドは次の5バイト構成となっています(16進コード)。

     [アドレス]  [コマンド] [引数1] [引数2] [引数3]

アドレス:送信先モジュールを指定するアドレス
    0xA1(デフォルトアドレス、変更可能)
    0xFA(ユニバーサルアドレス、変更不可)

コマンド: モジュールに対する指示
   0xF1  赤外線信号送信
           引数1~引数3に送信するデータを指定します。
              引数 1: カスタマーコード上位
              引数 2: カスタマーコード下位
              引数 3: データ(ボタン識別コード)

   0xF2  アドレスの変更
           引数1~引数3に送信するデータを指定します。
              引数 1: 新しいアドレス
              引数 2: 0x00
              引数 3: 0x00

   0xF3  シリアル通信速度の設定
           引数1~引数3に送信するデータを指定します。
              引数 1: 0x01~0x04(0x01:4800、0x02:9600、0x03:19200、0x04:57600bps)
              引数 2: 0x00
              引数 3: 0x00

ここで、アドレスとはモジュールを個体識別するコードのようです。
やろうと思えばシリアル通信でも1対多送信出来るので、同時に複数のモジュールを
接続してる場合にでも利用するのかもしれません。

上記のコマンドを送信し、正しく処理が行われた場合は、コマンドのコード1バイトが
応答として送られてきます。

  0xF1  送信に成功した
  0xF2  シリアルポートアドレスが正常に変更されました
  0xF3  ボーレートが正常に設定されました

応答が帰ってこない場合、エラーを意味します。

資料を読むと、アドレス、通信速度のリセット方法の説明があるので、
アドレス、通信速度の変更は保持さるっぽいです(試していません)。

モジュールをもう一つ使って送信も試してみました。

10

もう一方はUSB-シリアル変換にてパソコン(Windows 10)に接続しています。

09

Real Time Serial Captureというソフトを使って、データ送信コマンドとして
0xA1 0xF1 0x12 0x34 0x56 をモジュールに送信します。

相手側にて受信され、画面に 12、34、56が表示されました。
パソコン側は応答としてF1を受信しています。

2、3メートル離して送信を試してみましたが、問題なく送信出来ました。
NECフォーマットの都合上、一度に3バイトしか送れませんが、色々と使えそうです。


さて、このモジュール、回路図を見るとこのモジュールにはSTC11F02Eというマイコンが
使われているようです。STCは中国で良く使われているマイコンのようです。

ちょっと消費電力が気になり、測定してみると15mA(5V)でした。
まあこの程度なら利用には問題ないでしょう。

« TFT版 簡易画像ビューアー | トップページ | 豊四季Tiny BASICでHC-SR04を使った距離計測 »

日記・コラム・つぶやき」カテゴリの記事

通販」カテゴリの記事

ARM」カテゴリの記事

STM32」カテゴリの記事

コメント

コメントを書く

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

トラックバック


この記事へのトラックバック一覧です: シリアル接続 赤外線送受信モジュールの調査:

« TFT版 簡易画像ビューアー | トップページ | 豊四季Tiny BASICでHC-SR04を使った距離計測 »