PythonでLM61温度を知る。

ee9king に投稿

温度が計算通りきちんと反映されるかを知りたくて、Teratermの表示を流れているをみていたが、よくわかならい。VitualBoxでデータを加工する方法ならPythonがいいが、それだったらMacでできないのかなって調べたらできそうだった。

PySerial

PySerialを使えばMacでも、PythonでUSB-UART変換で使えそうな感じだ。で、やってみた。

Anacondaの初期状態での”installed"には含まれていなかったのでPythonターミナルで

$ conda install pyserial

でインストールして使用する。

上のページでも書いたが、Macのterminalから接続デバイスをまず探しておく。そのときはVirtualBoxで使用しているポートを外しておいてやらないといけない。VirtualBoxで掴んでいると、ここには表示されないみたいだった。私の場合、下記コマンドで4つ表示された。

$ ls /dev/tty.*
/dev/tty.Bluetooth-Incoming-Port	/dev/tty.Powerbeats3-WirelessiAP
/dev/tty.Powerbeats3-SPPServer		/dev/tty.usbmodemC_73_3349211

最後の奴がUSBシリアルだと思われる。あとの3つはわからない、USBシリアルを外すと最後のやつがなくなるので、間違いない。

途中過程省きますが、これで、一応温度が出ている。

import serial

ss=serial.Serial("/dev/tty.usbmodemC_73_3349211",115200)

while True:
    lines=ss.readline()
    print(lines)
    ad1u=int(lines[37:39],16)*4
    ad1h=int(lines[45:47],16) & 0x03
    ad1=(ad1u+ad1h)*4
    t=(ad1-600)/10
    print(t)

で、そのコンソール出力結果です

b':78811501CF81003BB67827EB000B291B000031FFFFFFFDAC\r\n'
18.8
b':78811501CF81003BB678282B000B291B000031FFFFFFFD6B\r\n'
18.8
b':78811501CF81003BB678286B000B291B000031FFFFFFFD2B\r\n'
18.8

で、このreadline()なんですがbyte型が返される。これがよくわからんが、どうもbyte型の配列のようだ。なので、配列スライスで、値がいい感じであったので、上の方法で一応値は取り出せて計算できている。一応目的は達した。

次は、mbedで読み込みをおこなってみる。

 

 

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
  • 行と段落は自動的に折り返されます。