全開記事でラズピコの自動実行とその終了方法についていろいろ苦労したことを書いたが、その補足。 分電盤センサを作っている過程で、偶然見つけてた。
Thonny上でラズピコとラズパイのUSBシリアル通信を実行する方法。
基本は全開記事に書いてあるものと同じだが、うまくいかなかった理由は、「マウントポイント」の指定がうまくいっていなかったから。
いろいろなサイトにはUSBシリアル通信をするときは「/dev/ttyACM0」がデフォルト値として指定されているが、自分の環境ではttyACM1だった。
つまり、ラズパイ側でラズピコとシリアル通信を受信するプログラムの冒頭でマウントポイントを指示するわけだが、そこで正しく指示しないといけない。
マウントポイントの確認方法は、コマンドラインでdmesgコマンドを実行。
すると、接続デバイスに関するログがもろもろ出てくるので、その中から最新のマウントポイントと思しきも文字列を探す。
具体的なフローは以下。
ThonnyのMicroPythonでラズピコのシリアル送信プログラムを実行。
↓
出力ウィンドウにはラズピコからの出力が表示される。
↓
Thonnyのタブをラズパイの受信プログラムに切替、Pythonでプログラムを実行。
↓
しかしここではttyACM0がビジーか見つからないかで怒られ、実行に失敗する。
↓
この時点で出力ウィンドウからはラズピコの出力が見えなくなり、ラズピコを制御できなくなる。
↓
コマンドラインでdmesgを実行。マウントポイントを確認。
↓
ラズパイ側の受信プログラムのマウントポイントを変更、実行。
↓
ラズピコからの受信データを受信プログラムが処理した結果が出力ウィンドウに表示される。
では停止はどうやるか。やはり、ThonnyのStopボタンからは停止できないため、ラズピコのRUNピンのショートが必要。ただ、前回と異なり、ラズピコ側をmain化していないので、最悪USBケーブルの抜き差しでも可能。ラズパイ側のSDカードが壊れるリスクは少ない。(と思いたい)
マウントポイントがわかったので、sudo unmountコマンドでラズピコプログラムを強制的に切れるかと思いきや、ダメだった。
ただ、main関数を使わずに実行できるようになっただけでも進歩である。