micro:bitのセンサーデータをPythonで利用する

micro:bitをセンサーボードとして利用する

micro:bitはそれ自体でデータ処理ができる立派なマイコンボードですが、センサーやスイッチを沢山搭載しているので、パソコンや他のデバイスのセンサーボードとして考えてもコスパが高いと言えます。
なんだかんだで10種類くらいの機能があって3000円はずいぶんお得です。

パソコンのアプリでセンサーを利用する場合、一番手軽なのはmicro:bit moreなどのScratch系ですが、Scratch以外の言語にデータを渡すのに一番簡単なのが、micro:bit標準のシリアル接続を使う方法です。

センサーのデータの値をシリアル通信で書き出すと、Makecodeの「データの表示 デバイス」画面で値が確認できるので、デバッグ目的でもよく使われますが、この画面だけでもグラフを書いたり、CSVでログを書き出だせるので教科学習でも使用できます。

しかしさらに他の言語の各種ライブラリで処理したい場合、RasPiなどのデバイスのセンサーとして利用したい場合はシリアル通信でデータを渡す方法が簡単です。
micro:bitのシリアル通信はデフォルトでUSBコネクタ経由のUSBシリアルになります。P0,P1などのカードエッジに切り替えることもできますが、データを渡す相手がパソコンの場合はUSBコネクタ経由が簡単です。

Pythonでシリアル通信でデータを読み込む

Pythonはすでにインストールされているという前提で進めます。(これからインストールされる場合も、検索すれば山のように情報があります)
Pythonでシリアル通信をするための”pySerial”ライブラリをインストールします。(これも情報は沢山あります)

pip install pyserial

例として、micro:bitで2秒おきに温度を測定し、シリアルでパソコンに送信します。それをPythonで読み出して、ターミナルに表示してみます。
micro:bit側のプログラムは次のような簡単なものです。

Pythonプログラムの基本的な構造は下のようになります。

さらに、PythonでGUIを実現するTkinterライブラリを加えて、GUIで表示したのが以下の例になります。(Tkinterも情報は多いです)

理科の教科学習の中でのPythonの学習に使えるのではないかと思います。

以上