汎用 UART デバイス

Powered Up と EV3 は、汎用UARTデバイスをハブに接続することをサポートしています。ピン配置は以下に示します。コネクタの向きに注意してください。EV3の場合、内部配線の色は下の図と一致します。

../_images/pinout_numbered.jpg

ピン

Powered Up (UART)

EV3 (UART sensor)

EV3 (I2C sensor)

1 (white)

Motor Terminal 1

Optional battery power

Optional battery power

2 (black)

Motor Terminal 2

N/A

N/A

3 (red)

Ground

Ground

Ground

4 (green)

VCC (3.3 V)

VCC (5 V)

VCC (5 V)

5 (yellow)

Hub TX (Sensor RX) (3.3 V)

Hub TX (Sensor RX) (3.3 V)

SCL (master) (3.3 V)

6 (blue)

Hub RX (Sensor TX) (3.3 V)

Hub RX (Sensor TX) (3.3 V)

SDA (master) (3.3 V)

class UARTDevice(port, baudrate=115200, timeout=None, power_pin=0)

汎用 UART デバイス。

注: power_pin オプションは自己責任で使用してください。ピンに電源を供給する場合、注意しないとハブやデバイスが損傷する可能性があります。このオプションを使う場合、リスクを理解していることを確認するよう求められます。

パラメータ:
  • port (Port) -- デバイスが接続されているポート。Powered UPハブでは、すべてのポートをサポートしています。EV3では、センサーポートのみをサポートしています。

  • baudrate (int) -- UART デバイスのボーレート

  • timeout (Number, ms) -- readwrite 中にどれくらいの時間待機してから諦めるかを指定します。 None を指定すると永久に待機します。

  • power_pin (int) -- デバイスの電源要件。ピンに電源を供給しない場合は 0 (デフォルト)を指定してください。Powered UP ハブでは、ピン 1 または 2 にそれぞれ 1 または 2 を指定してください。これにより、ピンにバッテリー電源が供給され、モーターを駆動するのと同等になります。EV3でピン 1 にバッテリー電源を供給するには 1 を指定してください。ただし、利用できる電流は最小限です。

例外:

ValueError -- timeout が 0 以下の場合に発生します。

awaitread(length=1) bytes

バッファから指定したバイト数分を読み取ります。

プログラムは、要求したバイト数を受信するまで待機します。 timeout 時間よりも長くかかる場合は ETIMEDOUT 例外が発生します。

パラメータ:

length (int) -- 読み込むバイト数。少なくとも1バイトの指定が必要です。

戻り値:

デバイスから返されたバイト列。

例外:
  • ValueError -- length が 1 を下回っている場合に発生します。

  • OSError -- 読み取りに timeout より時間がかかった場合に発生します。

read_all() bytes

バッファ内の現在すべてのバイト列を読み取ります。バッファが空であっても、待機せずにすぐに戻ります。

戻り値:

バッファに現在格納されているバイト列。読み取るものがない場合は空のバイト列オブジェクト。

awaitwrite(data)

デバイスにバイト列を書き出します。

パラメータ:

data (bytes) -- 書き出すバイト列。

例外:
  • TypeError -- databytes, bytearray, str のどれでもない場合に発生します。

  • OSError -- 書き出しに timeout より時間がかかった場合に発生します。

waiting() int

読み取り待ちのバイト列サイズを取得します。

戻り値:

バッファ中のバイト列のサイズ。

set_baudrate(baudrate)

UART デバイスのボーレートを変更します。

パラメータ:

baudrate (int) -- すべての値がサポートされているとは限りません。

例外:

ValueError -- If baudrate is less than 1.

awaitwait_until(pattern)

特定のバイトシーケンスが受信されるまで待機します。パターンに一致しないバイトは破棄されます。

パラメータ:

pattern (bytes) -- 待機するバイトシーケンス。空であってはなりません。

例外:
  • ValueError -- pattern が空の場合に発生します。

  • OSError -- このメソッドがすでに進行中である場合に発生します。

clear()

受信バッファを空にします。

例: UART デバイスへの読み書き

#!/usr/bin/env pybricks-micropython
from pybricks.hubs import EV3Brick
from pybricks.iodevices import UARTDevice
from pybricks.parameters import Port
from pybricks.media.ev3dev import SoundFile

# EV3 の初期化
ev3 = EV3Brick()

# センサーポート 2 UART デバイスとして初期化
ser = UARTDevice(Port.S2, baudrate=115200)

# データを書き出し
ser.write(b"\r\nHello, world!\r\n")

# データが届くまで音を鳴らす
for i in range(3):
    ev3.speaker.play_file(SoundFile.HELLO)
    ev3.speaker.play_file(SoundFile.GOOD)
    ev3.speaker.play_file(SoundFile.MORNING)
    print("Bytes waiting to be read:", ser.waiting())

# 音声再生中に受信したすべてのデータを読み取る
data = ser.read_all()
print(data)