シリアル接続 赤外線送受信モジュールの調査
Aliexpressでシリアル接続で利用出来る赤外線送受信モジュールを見つけ、入手しました。
製品はこんな感じです。
いつもの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
このページにマニュアルのリンクがあります。
http://www.uctronics.com/download/U3107_Infrared_decoding_module.zip
マニュアルは中国語ですが、使い方が分かりました。
(以下、使い方のメモ)
結線
シリアル(UART)はクロス接続です。電源は3.3Vでは動きません。5Vを供給します。
3.3Vマイコンを使う場合は、5Vトレラント対応を確認して利用します。
IchigoJamやSTM32(Blue Pillボード)のSerial1は、5Vトレラントなので直結出来ます。
シリアル通信条件
デフォルトでは、9600bpsで、8ビット長、パリティなし、ストップビット1、フロー制御無し
とりあえず、データの受信はこれで出来ます。
NECフォーマットなので、赤外線リモコンを押したときに、受信するデータは
次の3バイトとなります。
[カスタマーコード上位] [カスタマーコード下位] [ボタンコード]
試しに、豊四季Tiny BASICを使って、受信してみます。
プログラムソース
10 CLS
20 SOPEN "9600"
30 D=SREAD()
40 IF D>=0 ?HEX$(D,2)
50 GOTO 30
プログラムは、シリアルをオープンして、データを受信したら16進数で表示します。
ボタンを押すと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 ボーレートが正常に設定されました
応答が帰ってこない場合、エラーを意味します。
資料を読むと、アドレス、通信速度のリセット方法の説明があるので、
アドレス、通信速度の変更は保持さるっぽいです(試していません)。
モジュールをもう一つ使って送信も試してみました。
もう一方はUSB-シリアル変換にてパソコン(Windows 10)に接続しています。
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を使った距離計測 »
「日記・コラム・つぶやき」カテゴリの記事
- 久しぶりに技術書典に行ってきました(2025.06.01)
- Adobe Acrobat Readerの「しおり」を左表示にする(2025.05.31)
- Freenove Mecanum ホイール カー キットを購入しました(2025.05.28)
- gitでサブモジュールを作成する(2025.02.01)
- 焼き芋ちゃんカレンダー、ポチリました(*´ω`*)(2025.01.31)
「通販」カテゴリの記事
- Freenove Mecanum ホイール カー キットを購入しました(2025.05.28)
- 怪しい、激安?ノートパソコンをポチってみた(2024.10.05)
- β版 IchigoJam Rを予約注文しました(2021.01.23)
- 新型コロナウイルス対策のフェイス シールドを入手しました(2020.05.20)
- SPI接続フラッシュメモリモジュールを入手しました(2020.05.13)
「ARM」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- PocketGoで遊んでみる(1)(2020.03.24)
- Arduino用 MML文演奏ライブラリの作成 その1(2019.04.01)
- BluePillボードで4桁7セグLEDの制御(2019.03.21)
「STM32」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- 「Arduino STM32 リファレンス 日本語版」が2万アクセス突破!(2021.03.26)
- SPI接続フラッシュメモリモジュールを入手しました(2020.05.13)
- Arduino STM32でキャラクタ液晶ディスプレイを使う(2019.06.01)
コメント