係数のやる気のない備忘録

文章力ないじゃん自分

Arduino UNOでPythonを使ってシリアル通信をすると再起動してしまう件

ArduinoUNOとPyserialを利用してシリアル通信を試みていた。

が、どうしてもシリアルを送ると再起動してしまう。

Leonardoだと問題なくできるのでプログラムの問題でもないし、本体が壊れているわけでもなかった。

 

調べるとpyserialはCOMポートを開く際にDTRがLowになり、

LowになるとArduino UNOが再起動してしまうことがわかった。

 

なので、シリアルオープンのコマンドを

 

com = serial.Serial("port",9600)

で一行にせず

com = serial.Serial()
com.port = port
com.baudrate = baud
com.timeout = 1
com.setDTR(False)
com.open()

とすることでDTR信号が送られず、UNOが再起動されずに正常に通信できるようになった。

 

stackoverflow.com