Raspbrry Pi Pico はUSBシリアルのコンソール機能を使ってPCと接続が容易と言うことで、センサーからの入力をPCに送るような機能を容易に実現出来るようです。
これまでにもPCやRaspberry Pi にマイコンボードをUSBシリアル変換ケーブルで繋いで、検査装置のようなものを作ったりしましたがpicoを使えばUSBケーブルだけで済みそうです。
MicroPythonによるPCとの通信はprint と input が使えることを確認しました。
一定間隔で測定値を送り続けるだけの用途ならprintだけで済むのですが、送信間隔等の設定値を変更したいと言った場合は、inputでPCからのコマンドを受ける必要がありそうです。
inputを使うと入力が済むまでの間、他の処理が止まってしまうのでinputの待ち受けに_threadを試してみることにしました。
動作確認用のプログラム
電源を入れると0~9の数字を繰り返し送信して来ます。
PCから文字列'stop'を送ると繰り返し送信が停止し、'stop'以外の文字列を送ると繰り返し送信を再開します。
teratermでも動作確認しました。
ソースコード
以下のコードで確認しました。
import _thread # スレッドモジュールを準備
from utime import sleep
instr = ['']
def core0(instr): # print 担当
intf = 1
while True:
for i in range(10):
if instr[0] == 'stop':
intf = 0
else:
intf = 1
if intf > 0:
print(str(i))
sleep(1)
def core1(instr): # input 担当
while True:
a = input()
print(a)
instr[0] = a
# 新しいスレッドでcore1関数を実行 引数はタプルで指定(要素1つの時はカンマ付)
_thread.start_new_thread(core1, (instr,))
# メインスレッドでcore0関数を実行
core0(instr)
使えそうなので、センサーの読み出しなど肉付けしてみたいと思います。
今後とも宜しく、お願い致します。