Raspberry Pi Pico Wは単体で使うのも便利ですが、パソコンや他のマイコンなど、さまざまな機器と通信できるとさらに活用の幅が広がります。
そこで今回は「シリアル通信」について紹介します。
まずは、パソコンから送られてきたデータをPico Wが受け取り、同じデータをそのままパソコンに送り返す、いわゆる「オウム返し(エコー)」を実装してみましょう。
シリアル通信とは?
シリアル通信は、マイコンとパソコンや他の機器がデータを1ビットずつ順番に送受信する通信方式です。Raspberry Pi Pico WではUART(Universal Asynchronous Receiver/Transmitter)というハードウェアを使って実現します。
接続回路
今回は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)
【実行結果】
📝 詳しい解説
🧩 UARTとは?
-
UARTはシリアル通信の一種で、マイコン同士やPCと接続する際に使います。
-
データを1ビットずつ非同期で送受信し、スタートビットとストップビットで区切ります。
⚡ MicroPythonのUARTクラスのポイント
-
UART(1, 9600)
:UART1ポートを9600bpsで使う -
init()
:通信パラメータ設定 -
write()
:データ送信(バイト列) -
read()
:データ受信(バイト列) -
any()
:受信データ有無チェック
🔁 このコードの動作
-
起動時に「Hello World」を送信(通信確認用)
-
受信したデータを即座に送り返す → オウム返し
⚠️ 注意点
-
通信速度(ボーレート)が合っているか確認
-
送受信ピン(TX/RX)とGNDが正しく配線されていること
-
文字列はバイト列に変換して送ること
コメント
コメントを投稿