16
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RaspberryPiでRS232C機器を制御した

Posted at

配線が果てしなく面倒だったので、RS232Cの機器をラズパイで制御したいなーと。
Ethernetでラズパイを通してコマンドを送れれば新たに配線の必要ありませんし、どのPCからでもアクセスできたりといろいろと嬉しいことがあるかと思います。

#概要
ググったらいろいろと記事がありました。

Pythonとハードウェア ー PythonでRS232Cを利用する -
https://qiita.com/nonbiri15/items/2211547da4dc9abcc321
Raspberry Pi でシリアル通信
https://hack-le.com/44765804-2/
などなどいろいろと参考にさせていただきました。ありがとうございます。

で、どうやらラズパイとRS232C機器の入出力方式には、

  • GPIO (ラズパイの一般入出力インターフェイス) を用いる
  • USB-RS232C変換チップを用いる
    の二つのやり方があるようです。GPIOはちょっと面倒なので、後者にしました。

USB-RS232C変換チップはFTDI社FT232RLを用い、実際にはそれを実装した変換ケーブルを使います。
Windowsしかサポートされてませんが、Linuxであれば標準で認識してくれます。
このデバイスに向かってPythonのライブラリPySerialでコマンドを送るということにしました。

#用意したもの
Raspberry Pi 3
Python2.7 + PySerial
FT232 USB-シリアル変換ケーブル VE488 (FT232RLを利用するものならなんでもいいです)
http://akizukidenshi.com/catalog/g/gM-08343/

RS232C機器、外部制御用のPCなど。

#実装
ラズパイと変換ケーブルを繋ぐと、

/dev/ttyUSB0

このttyUSB0が変換チップで、ちゃんと認識されます。
変換ケーブルをさらにRS232C機器に接続して、その後ラズパイでttyUSB0に向かってコマンドを送ります。

serial.py
import serial    #    PySerial

dev = "/dev/ttyUSB0"    #    デバイス名
rate = 9600    #    レート (bps)
ser = serial.Serial(dev, rate, timeout=10)

string = "Hello World"
string = string + "\r\n"    #    ターミネーターを付ける
ser.write(string)    #    コマンド送信

res = ser.readline()    #    コマンド受信
res = res.encode()    #    エンコード
print res

こんな感じで。実行すればRS232C機器にコマンドが送られます。

pythonの文字型はpython2と3で違うようなので十分注意してください。
僕もよくわかってないのですが、とりあえず2の場合は上のような感じで送れば大丈夫かと思います。
後はsshでラズパイに接続して直接スクリプトを動かすなり、サーバーを立てるなりすればいいのではないでしょうか。

#まとめ
RS232C機器はちゃんと動いてくれました。これが万が一できなかったら30m以上の配線が必要だったのでハッピーです。IoTの息吹を感じる。

16
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?