2025年8月12日火曜日

シリアル通信(オウム返し)

 Raspberry Pi Pico Wは単体で使うのも便利ですが、パソコンや他のマイコンなど、さまざまな機器と通信できるとさらに活用の幅が広がります。

そこで今回は「シリアル通信」について紹介します。

まずは、パソコンから送られてきたデータをPico Wが受け取り、同じデータをそのままパソコンに送り返す、いわゆる「オウム返し(エコー)」を実装してみましょう。

シリアル通信とは?

シリアル通信は、マイコンとパソコンや他の機器がデータを1ビットずつ順番に送受信する通信方式です。Raspberry Pi Pico WではUART(Universal Asynchronous Receiver/Transmitter)というハードウェアを使って実現します。

接続回路


 id      TX       RX        baudrate     parity    stopbit
 0  GPIO0 GPIO1   9600  なし  1
 1  GPIO4 GPIO5   9600  なし  1

今回はUART1(GPIO4:TX、GPIO5:RX)を使用します。


ソースコード例

from machine import UART, Pin

# UART1ポートを9600bpsで初期化(ボーレートを指定)
sirial = UART(1, 9600)

# UARTの詳細設定:9600bps、データビット8、パリティ無し、ストップビット1で初期化
sirial.init(9600, bits=8, parity=None, stop=1)

# UARTで文字列を送信する(※MicroPythonではバイト列で送るのが正しいため b'' にしたほうが安全)
sirial.write(b'Hello World\n\r')  # 起動時に「Hello World」を送信

# メインループ
while True:
    # 受信バッファにデータが存在するかチェック
    if sirial.any() > 0:
        # 受信バッファから1バイト読み取る
        data = sirial.read(1)
        # 読み取った1バイトをそのままUARTで送信(オウム返し)
        sirial.write(data)


【実行結果】



【TeraTermの設定】:ポート番号は接続したパソコンに合わせます。


このオウム返しプログラムで通信が正常に行われていることを確認できます。
これを基にセンサデータの送受信やコマンド制御など、さまざまな応用が可能です。

📝 詳しい解説

🧩 UARTとは?

  • UARTはシリアル通信の一種で、マイコン同士やPCと接続する際に使います。

  • データを1ビットずつ非同期で送受信し、スタートビットとストップビットで区切ります。

⚡ MicroPythonのUARTクラスのポイント

  • UART(1, 9600):UART1ポートを9600bpsで使う

  • init():通信パラメータ設定

  • write():データ送信(バイト列)

  • read():データ受信(バイト列)

  • any():受信データ有無チェック

🔁 このコードの動作

  • 起動時に「Hello World」を送信(通信確認用)

  • 受信したデータを即座に送り返す → オウム返し

⚠️ 注意点

  • 通信速度(ボーレート)が合っているか確認

  • 送受信ピン(TX/RX)とGNDが正しく配線されていること

  • 文字列はバイト列に変換して送ること

0 件のコメント:

コメントを投稿

Google Spread Sheetの利用

  以前に ESP32 で作っていたものを、Raspberry Pi Pico W + MicroPythonで再現してみました。 1.Googleスプレッドシートの設定 1.Google Drive → 右クリック → Google スプレッドシート 2.作成して共有をクリック