2018年5月31日木曜日

【Arduino】シリアル通信(Arduino→PC)


複数センサーを付けるのも必要なんですが、
そろそろArduinoで取得している情報をPCとかで使えるようにしたいので、
今回はシリアル通信です。

ArduinoだとSerial.print~とかで書いている時点で
それはシリアルで出力しているようなので、
これをPC側とかで取得できればいいのですかね?




受信側はPythonでとりあえず実験。
まあ、シリアル通信が取得できるなら何でもできそうだけどね。

Arduino側は今回は何も接続なし、
USBでPCから繋がっているだけです。

int gNumber = 0;
void setup()
{
  Serial.begin( 9600 );
}
void loop()
{
  Serial.print( "Hello World From Arduino... " );
  Serial.println( (gNumber++) );
  delay( 200 );
}

とりあえず、これでArduinoがつながっているシリアルポートから
ボー・レート9600でシリアル通信が行われるようになります。
(ボー・レートって何なんでしょうね…)


んで、今度はPythonです。
あんまり書いたことがないのでちょっと怪しめ。
serialのライブラリはインストールが必要

python -m pip install pyserial 

これでインストールできるはず。
ちなみにpython2.7です。3系はちょっと違うとか…。

今回はCOM5のシリアルポートにつないでいますので、このような感じ。

#coding utf-8
import serial
import re
def main():
    with serial.Serial( 'COM5', 9600, timeout=1 ) as ser:
        while True:
            c = ser.readline()
            print( c )
        ser.close()
if __name__=="__main__":
    main()

最後にArduinoをUSBでPCにつないで、
Pythonのコードを実行します。
成功していればArduinoから信号が来るはず。




よし!
後はこのシリアル通信で送る情報を
センサーで取得した温度であったり、角度であったりすれば使える…かな?



0 件のコメント:

コメントを投稿