1. はじめに
IoTの普及により様々なモノにWi-FiやLTEなどの無線通信手段が搭載され、遠く離れた場所でも情報を取得する手段が増えました。しかし、様々な産業で使われる設備、制御装置、製造装置、計測機器などでは無線通信の手段を持たないものが多くあります。
このような設備や機器にも通信を行うためのRS-232やRS485といったシリアル通信用インターフェースを備えているものが多くあるため、小型のボードコンピューター「SPRESENSE」を接続することでRS-232インターフェース機器を無線化することができるようになります。
またSPRESENSEと組み合わせて、IoTマイクロエンジンNEQTOを使用した遠隔制御を実現する方法をご紹介します。
2. 「SPRESENSEとNEQTOを使った遠隔制御とは?」
SPRESENSEはスマートセンシングプロセッサー「CXD5602」が搭載されたIoT向けボードコンピューターです。特徴としてはSPRESENSEメインボードに様々な拡張ボードやAdd-onボードを接続することで簡単に機能を追加できる事があげられます。
今回、SPRESENSEを選定した1番の理由としては、本記事のポイントにも記載しておりますがNEQTO Engineを搭載することでNEQTO Consoleから遠隔制御や遠隔監視を行うことが出来るという部分になります。
なお、今回のテーマであるRS-232インターフェースの遠隔制御では「SPRESENSE メインボード」に「SPRESENSE拡張ボード」とサードパーティー製「Wi-Fi Add-onボード iS110B」、RS-232とUARTのインターフェース変換を行うモジュール「Pmod RS232」を接続して使い方を説明します。
リンク
SPRESENSEについての詳細はこちらをご確認ください。
https://developer.sony.com/ja/develop/spresense/
ハードウェア拡張オプションについてはこちらをご確認ください。
https://developer.sony.com/ja/develop/spresense/#spresense-extensions/
3. RS-232で遠隔制御を行うメリット
RS-232インターフェースで遠隔制御を行うメリット
- 機器間の接続を切り替える必要がない。
- 通信距離がケーブル接続時と比較して長くできる。
RS-232はデータ通信に必要な信号線が最低3本(TXD、RXD、GND)で実現できること、パラレル通信と比較して対ノイズ性が高いという特徴があり、「低コストで安定した通信品質を実現できる」ため、多くの機器で採用されシリアルインターフェースの標準規格として広く普及しています。
機器同士の接続は基本的に1対1に制限されており、制御対象の機器が複数ある場合には接続の切り替えが必要となることが課題としてあります。このような課題を解決するために物理的に複数の接続を切り替える回線切り替え器やRS-232インターフェースを仮想COMポートとして複数制御する手段もあります。ただ、通信距離については最大ケーブル長15m程度という制限があるため広い敷地内での通信には相応の設備が必要となってしまいます。
このため手軽にRS-232を無線化できることは、「接続の切り替えを気にしなくて良い」、「通信距離の制限が緩和される※」という部分で大きなメリットとなります。また、今回はRS-232を無線化するためにSPRESENSEを用いているところがポイントとなります。SPRESENSEのMCU(マイクロコントローラーユニット)上で使えるNEQTOを利用して、クラウドから機器の遠隔制御やリアルタイム性の高い双方向データ通信を実現することができるようになります。
※通信環境にもよりますがWi-Fiの場合、通信距離はルーターを中心に半径50m~100mといわれています。また、LTEサービスをお使いの場合、サービスエリア内であれば通信距離を気にする必要はありません。(建物の材質や構造、地下などでは通信が不安定・接続できない場合などあります。)
リンク
NEQTOとは
4. RS-232機器で遠隔制御を実践!
それでは、今回遠隔制御を行う機器と構成を説明します。遠隔制御を行う機器はデジタルマルチメーターR6441Bを使用します。R6441Bは電圧、電流、抵抗などを測定することができる計測器ですが今回は遠隔操作により電圧を測定してみたいと思います。
構成品の紹介
- SPRESENSEメインボード
- SPRESENSE拡張ボード
- Wi-Fi Add-onボード iS110B
- Pmod RS232
- デジタルマルチメーター R6441B
- D-sub 9ピンケーブル(ストレート仕様)
- ジャンパーワイヤー(オス-メス)
RS-232インターフェースの機器の種類は「DCE:Data Communication Equipment(データ回線終端装置)」と「DTE:Data Terminal Equipment(データ端末装置)」の2種類があり、今回の例ではDCEはR6441B、DTEはSPRESENSEという関係になります。
DCEとDTEが通信するために次のパラメーターは同じ値を設定することが必要となります。
- 通信速度
- データフォーマット(データビット数、ストップビット)
- パリティチェックの有無
- フロー制御の有無
上記を踏まえて
① R6441Bは次の様に設定します。R6441Bの設定方法については「R6411シリーズ デジタル・マルチメータ 取扱説明書」を参照ください。
項目 | 設定値 |
---|---|
出力データのヘッダ | 有効 |
通信速度 [bps] | 9600 |
データビット数 | 8 |
ストップビット数 | 1 |
パリティチェック | 無効 |
フロー制御 | 無効 ※R6441Bはフロー制御には対応していない |
エコー | 無効 |
② 次にSPRESENSE側の設定を行います.
3章でも記載したようにNEQTOを利用しますので、通信パラメーターの設定はJavaScriptを作製する必要があります。今回は標準オブジェクトの他にneqto.jsで用意されている次のオブジェクトを使用しています。
- UARTオブジェクト
- RS-232インターフェースのデータ送信および受信を行うために使用します。
- RTCオブジェクト
- 決められた時間間隔で測定を実施するために使用します。
- nqMqttオブジェクト
- NEQTO Consoleと通信するために使用します。
- RTCオブジェクト
- RS-232インターフェースのデータ送信および受信を行うために使用します。
neqto.jsインターフェースの詳細についてはNEQTO Docsを参照ください。
https://docs.neqto.com/docs/ja/
それでは、実際に使用したJavaScriptのサンプルコードを例に説明します。コードの4行目~8行目はUARTインターフェースの記述になります。UARTはNODE2、通信速度は9600を設定しています。
※データビット数、ストップビット数についてはNEQTOではデータビット数は8ビット、ストップビット数は1にのみ対応しているため設定は不要です。
3行目から39行目はR6411Bとのコマンドインターフェースに関する記述となります。コマンドを送信するときのデリミタ(区切り文字)の設定、コマンド送信時およびデータ受信時の処理を定義しています。
44行目から59行目は「Alarm」についての記述になります。RTCオブジェクトを使用して、30秒周期でアラームを生成します。このアラームは次に説明する「Main routine」で使用します。
64行目から100行目までがメインルーチンになります。64行目から72行目はnqMqtt通信設定を行い、パブリッシュの結果を表示します。
75行目から81行目までがR6441Bの初期化処理を実施します。初期設定コマンドを送信し、受信したプロンプトの種類でコマンドが正常に送信出来たか確認しています。
初期設定コマンドの内容については下表をご確認ください。
初期設定設定コマンドの内容
項目 | コマンド | 備考 |
---|---|---|
初期化 | Z | 初期化コマンド |
測定ファンクション | F1 | 直流電圧測定 |
測定レンジ | R5 | 直流電圧20Vレンジ |
サンプル・レート | PR2 | MID |
表示桁数 | RE4 | 4桁 |
※詳細はR6411シリーズ デジタル・マルチメータ 取扱説明書」をご確認ください。
83行目から100行目はアラーム発生時の処理になります。アラーム発生後、測定データを照会する「MD?」コマンドを送信して、レスポンス「DV」を待ちます。「DV」を得られなかった場合にはエラー処理が行われます。「DV」を得られた場合には取得したデータの文字処理を行います。R6441Bを含むR6441シリーズでは「MD?」のレスポンスとして「DV +〇〇〇〇〇〇 E+〇」の形式でデータを返してくるため、測定結果として必要な「DV 」以降を取り出す処理を行います。
下図は30秒周期で測定した結果です。NEQTO Console上ではプロットされた状態を確認することができます。
今回取得したデータはnqMqttオブジェクトを使用してNEQTO Consoleへ送信していますが、お客様ご指定のクラウド環境へ送信することも可能です。詳細についてはNEQTO DocsのMQTTをご覧ください。
https://docs.neqto.com/docs/ja/spresense-series/js/obj_mqtt
5. まとめ
今回はRS-232インターフェース機器としてデジタルマルチメータ―の遠隔制御を行う方法について説明を致しました。使用した機器が測定器であったことから主に遠隔測定やデータロギングといった用途が考えられます。また、上記の様な測定器ではなく、お客様が運用する設備や装置などの場合、NEQTOのオプションサービスであるNEQTO Insights、NEQTO CustodiaやNEQTO Sparkを利用することで状態監視、異常通報を行うアプリケーションを構築可能です。更にNEQTOオプションサービスのNEQTO Machine Driverを利用することで設備や装置のマイコンに搭載されたファームウェアの書き換えをインターネット経由で実施する手段を構築することも可能です。
NEQTO を利用可能なSPRESENSEは、インターネットで購入可能ですので、ぜひ気軽にNEQTOをお試しください!
リンク
今回使用したデバイスの購入先
SPRESENSEメインボード[CXD5602PWBMAIN1]:チップワンストップ
SPRESENSE拡張ボード[CXD5602PWBEXT1] :チップワンストップ
SPRESENSE Wi-Fi Add-onボード [iS110B] :チップワンストップ
Pmod RS232コンバーター[Pmod RS232] :秋月電子通商