2010年9月24日金曜日

ArduinoでRS-232C・イーサネットアダプタ

HEIDENHAIN社製のデジタルカウンタを使っているんですが、
これの表示値を計算機に取り込みたい、と考えました。

このカウンタは、D-sub9ピンのシリアルとUSB-UARTを備えてるので、
普通ならば、どちらかで計算機に接続してやれば簡単に取得できるわけです。

ところが今回は、「複数の計算機から取得したい」ので、この手は使えません。
なので、 シリアル・イーサネットコンバータを使って、カウンタをLANに載せる
ことを考えました。
が、シリアル・イーサネットコンバータの市販品が、ちょっと引くくらい高いw

やりたいことは、表示値の取得だけですので、汎用のメディアコンバータ使う
必要はありません。

なので、Arduino使って最低限の機能だけサクっと作ることにしました。

やることは、ArduinoとEthernet Shield使ってサーバを立てて、
クライアントから接続があったら、シリアルでカウンタ叩いて値を
取得し、それをクライアントにTCP/IPで投げるだけ。

…要するにショボい『XPort』ですねwww

面倒なのは、Arduinoのシリアル通信はTTLレベルなので、
カウンタのRS-232Cとの間でレベル変換をしないといけないとこ。

このRS-232Cとのレベル変換を行うためのシールドが市販されているんですが、
どうも日本国内で取り扱ってるとこは、今のところないっぽい。

仕方ないのでMAX232互換IC使って自前でブレッドボード上に組むことに。

んで、完成したのがこちら。


左半分にデッカく写ってるのがカウンタ、右上の白いブレッドボードがRS-232Cレベル変換回路。
カウンタとの接続は、とりあえずRS-232Cケーブルぶった切って、必要な線をハンダ上げして
ぶっ刺してあります。

Arduinoを外部電源で起動して、ハイパーターミナルで接続確認。


成功。

カウンタとシリアル通信するのに0・1番ピンのRX・TX使ってるので、カウンタと繋ぎっぱだと、
スケッチのアップロードは出来ないわ、デバッグしにくいわ、ってのが面倒でしたw

後は、ケーブル直結なのをコネクタに変えて、ケースに入れれば完成なんですが、
ケースどうしよう…コレにしてみるかなぁ。

それと、いちいちレベル変換を自前で作るのも面倒なので、どこかでRS232Shield扱ってくれないかなぁ。
¥1,980-くらいまでなら出すんだけどなぁ…


あ、「XPort買うのと大してコスト変わんねぇんじゃね?」ってのは言わないようにw

0 件のコメント:

コメントを投稿