Pythonを使用したシリアル通信のプログラミング入門

Pythonを使用してシリアル通信を行うことは、ArduinoRaspberry Piなどの組み込みシステムとの連携やセンサーデータの取得など、さまざまなプロジェクトで役立ちます。ここでは、Pythonを使ったシリアル通信の基本的なプログラミング手法について解説します。

 

moun45.hatenablog.com

moun45.hatenablog.com

 

1. 必要なモジュールのインポート

Pythonの標準ライブラリに含まれるserialモジュールを使用してシリアル通信を行います。まずは、serialモジュールをインポートします。

import serial

2. シリアルポートの設定

使用するシリアルポートの設定を行います。ポート名やボーレートなどを指定します。

Linuxの場合

port = "/dev/ttyUSB0" # シリアルポートのパス(Linuxの場合)
baudrate = 9600 # ボーレート(Arduinoなどの設定に合わせる)

Windowsの場合

port = "COM3" # シリアルポートのパス(Windowsの場合)
baudrate = 9600 # ボーレート(Arduinoなどの設定に合わせる)

Macの場合

port = "/dev/tty.usbserial-XXXXXXXX" # シリアルポートのパス(macOSの場合)
baudrate = 9600 # ボーレート(Arduinoなどの設定に合わせる)

3. シリアルポートのオープンと通信の準備

serial.Serial()を使用してシリアルポートを開き、通信の準備を行います。

ser = serial.Serial(port, baudrate)

4. データの送信

write()メソッドを使用してデータを送信します。

data_to_send = b"Hello, Arduino!\n" # 送信するデータ(バイト列)
ser.write(data_to_send)

5. データの受信

read()メソッドを使用してデータを受信します。

received_data = ser.read(10) # 10バイト分のデータを受信
print(received_data)

 

6. シリアルポートのクローズ

通信が終了したら、シリアルポートをクローズします。

ser.close()

実例:Arduinoとのシリアル通信

以下は、ArduinoPython間でのシリアル通信の例です。

Arduino側のスケッチ:

void setup() {
Serial.begin(9600);
}

void loop() {
Serial.println("Hello, Python!");
delay(1000);
}

Python側のコード:

import serial

port = "/dev/ttyUSB0"
baudrate = 9600

ser = serial.Serial(port, baudrate)
data_to_send = b"Hello, Arduino!\n"
ser.write(data_to_send)

received_data = ser.read(50)
print(received_data)

ser.close()

このコードを実行すると、PythonArduinoに「Hello, Arduino!」というメッセージを送信し、Arduinoからの応答を受信して表示します。

以上が、Pythonを使用したシリアル通信の基本的なプログラミング手法です。Pythonserialモジュールを活用して、さまざまな組み込みシステムとの通信を行い、さまざまなプロジェクトを実現しましょう。