続デジタルマルチメーターの出力を取り出す

これの続き。
http://d.hatena.ne.jp/kinneko/20130123/p1


MAS-345、1つ買う。
箱はこんな感じ。
https://lh5.googleusercontent.com/-zOWSOJj2KHA/UQYBqW-ZFKI/AAAAAAAAEUI/DBwlnAXeQTI/s800/27%2520-%25206.jpg
https://lh6.googleusercontent.com/-GEBqHN57vJI/UQYBqfJOMOI/AAAAAAAAETg/GTyzFUMmJEo/s800/27%2520-%25201.jpg
カバーはスタンドになる。
https://lh4.googleusercontent.com/-nPZm-BQW22c/UQYBqbF0NmI/AAAAAAAAEUA/gtf2Ji9Hukg/s512/27%2520-%25205.jpg
温度センサーもついてる!
https://lh3.googleusercontent.com/-RWxytbRevUQ/UQYFWcqPtTI/AAAAAAAAEUo/tRpAf_akm0s/s512/27%2520-%25201.jpg
なかなか遊べそうな買い物ですよ。


シリアルは、こんな風に挿す。
https://lh4.googleusercontent.com/-8hpF36svHic/UQYBqTYYHWI/AAAAAAAAET4/9hQKHr87VQk/s512/27%2520-%25204.jpghttps://lh5.googleusercontent.com/-W1RjbPQdTIw/UQYBqeXVvVI/AAAAAAAAETw/kSadHgmJKRQ/s512/27%2520-%25203.jpg
穴は上から以下のようになっている。

RxD
DTR

RTS
TxD
SG


USBシリアル変換は、USB-RSAQ5でふつーに使えた。
http://www.amazon.co.jp/gp/product/B000QW7NH0?ie=UTF8&camp=1207&creative=8411&creativeASIN=B000QW7NH0&linkCode=shr&tag=kinnekosblog-22
たけーよ!
https://lh3.googleusercontent.com/-ENzndJgzZPw/UQYGfrpKSAI/AAAAAAAAEU4/i5tmSquKscc/s320/27%2520-%25201.jpg


使い慣れたminicomだと600bpsは指定できないので、pyserialで操作することに。
前のログのPythonの例は完成していなくて使えない。


DTRをONに、RTSをOFFにしないとうまく通信できない。
ハマった。


一発目には、先頭に必ずゴミが入る。
とりあえずデータは無事なので問題なしか。


リクエストしてデータが拾えるまでには5秒強かかるので、リアルタイムの情報ではない。
つらい...

#!/usr/bin/python
import serial

class MAS345(object):
        def __init__(self, port="/dev/ttyUSB0"):
                self.port = port
                self.com=serial.Serial(
                        port,
                        600,
                        bytesize=7,
                        parity="N",
                        stopbits=1,
                        timeout=5,
                        xonxoff=0,
                        rtscts=0,
                        dsrdtr=None
                        )
                self.com.setRTS(0)
                self.com.setDTR(1)

        def _read_raw_value(self):
                self.com.write("\n")
                data = self.com.readline()
                return data

if __name__=="__main__":
        output = MAS345()
        print output._read_raw_value()


温度に設定してると、こういう感じが出る。

$ ./temp.py

TE 0022 C

"|"はゴミ。
ループで複数回取得すると二回目からは出ない。


ゴミ箱のマンガン乾電池を測ってみる。
V, 400mA, 10A、Ω。

DC 1.065 V
DC 007.9 mA
DC 00.00 A
OH 000.3 Ohm


OLになると回路的に切れるので、電源部を測定しているときにはデバイスがリセットになっちゃう。


http://d.hatena.ne.jp/kinneko/20130214/p2 に続く。