XPortでシリアル通信-Ethernetの変換を試してみた

簡単にマイコンからLANを介した通信ができると聞いて前々から気になってたXPortを使ってみました。

XPortとは

Lantronix社が作ってる製品で、シリアル通信-Ethernetの変換ができます。製品的にはサーバを想定?詳しいことはまだよく分かっていません。

外見はRJ-45のジャックそのものです。
値段はお高めで7,000円弱のようです。(参考 : 若松通商 http://www.wakamatsu-net.com/cgibin/biz/pageshousai.cgi?code=38060095&CATE=3806)

DHCP環境ならばLANケーブルを接続するとIPアドレスが割り当てられ、あとはLANを介してXPortIPアドレス宛にデータを送ればXPortのシリアル通信線からそのデータが出てきます。逆にXPortにシリアル通信でデータを送るとEthernet経由で接続してる端末にそのデータが届きます。

面倒なEthernetを全く意識すること無く非常に簡単にシリアル-Ethernet変換ができるようになるモジュールです。

準備

準備は電源(3.3V)とシリアル通信用の送信・受信の計4本を繋ぐだけです。
これだけで動いてます。

足が縦・横共に2.54mmピッチなのですが、横方向が1.27mm上下で互い違いになってるので、以下のようにピンヘッダをはんだ付けして2.54mmピッチ環境で使いやすいようにしました。


ピン配置は以下の通り。

ピンNo. 機能
1 GND
2 VDD(3.3V)
3 外部リセット入力
4 シリアルデータOUT(出力ピン)
5 シリアルデータIN(入力ピン)
6〜8 拡張端子

基本的にはこのままで使えますが、固定IPにしたいなどいろいろ設定をしたい場合はLantronix社から提供されている設定ツール、DeviceInstallerを使います。(「デバイスインストーラ」なんていうから最初は設定ソフトとは思わず見逃してました。)
ダウンロードページ : http://ltxfaq.custhelp.com/app/answers/detail/a_id/644
ネットワーク上にXPortが検出されると一覧に出てきます。

ころころIPアドレスが変わるのも嫌なのでなんとなく192.168.11.11に固定しました。その他にもたくさんの設定項目があります。単体でメールも送れるとか...


それからmbedでUSB-シリアル通信変換のプログラムを書いて中継をさせました。

#include "mbed.h"

Serial pc(USBTX, USBRX);
Serial xPort(p28, p27);

int main() {
    while(1) {
        if(pc.readable()) {
            xPort.putc(pc.getc());
        }
        if(xPort.readable()) {
            pc.putc(xPort.getc());
        }
    }
}

使ってみる

XPortとはtelnetプロトコルで通信します。
コマンドプロンプトtelnetを起動します。

C:\Documents and Settings\Administrator>telnet

このままでは入力した文字が画面に反映されないので、起動したらまずローカルエコーを有効にします。

Microsoft Telnet クライアントへようこそ

エスケープ文字は 'CTRL+]' です

Microsoft Telnet> set localecho

次にXPortとの通信を開始します。仕様でシリアル通信でデータを送受信するにはポートの10001番を利用しないといけないようです。

Microsoft Telnet クライアントへようこそ

エスケープ文字は 'CTRL+]' です

Microsoft Telnet> set localecho
ローカル エコー: オン
Microsoft Telnet> open 192.168.11.11 10001
接続中: 192.168.11.11...

これで準備完了です。あとはキーボードで何か打ち込むと遅延することもなくXPortのシリアル通信ピンから出てきます。(telnetのローカルエコーは左上に出てしまいます)

その逆も然り。

まとめ

すごく簡単でした。
XPortにHTMLファイル置いておいて、ブラウザ経由で何かアクション起こしたらシリアル通信でデータが出てくるということをやりたかったのですがどうやらJavaアプレットを使う方法しかないようです。このJavaアプレット自体は公式で配布されているみたいです(未確認ですが)。
iPhoneのブラウザから操作をしたいのですがどうやら厳しそうです。PHPが動くサーバでも立てておいてそっち経由で、とかならできそうですがXPort単体では無理なようです。
ともあれ、用途を限定しなければLAN経由で様々なことができそうなのでいろいろと可能性を感じました。


それから、nyatlaさんが最近開発されたMiMicというものがちょっと気になってます。
http://nyatla.jp/mimic/wp/

MiMicは、TCP/IPをインタフェイスとして、WebAPIからハードウェアを制御する為のソフトウェアです。LPCXpresso1769で動作するファームフェアとそのSDK、ブラウザや他のWebプラットフォームで動作するスクリプトライブラリで構成されています。
ファームウェアをインストールしたLPCXpresso1769 評価ボードをイーサネットケーブルでネットワークに接続することで、Webブラウザを通して、電子デバイスMCUを制御することができます。

つい先日のver 1.2へのアップデートでmbedにも対応したようなので、XPortと同じくEthernet×マイコンの可能性を広げるツールとしてこちらもそのうち試してみたいと思います。