2021年2月6日土曜日

micro:bitの加速度センサーの3軸の値をMicroPythonを使用して取得・USBシリアルで送信する

micro:bitはMicroPythonでプログラミングする事もできます。micro:bitの加速度センサーの3軸の値を取得してUSBシリアルで送信して、PCで受信するには、以下の手順を実行します。

実行手順

1.pipenvのインストール
pipenvをインストール済みでない場合は、以下のコマンドでインストールします。
sudo dnf -y install python3

sudo pip3 install --upgrade pip

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

source ~/.bashrc

2. pyserialのインストール
以下のコマンドでpyserialをインストールした仮想環境を作成します
mkdir -p ~/pyserial

cd ~/pyserial

pipenv --python 3

pipenv install pyserial

pipenv shell

3. PC側受信プログラムの保存
以下をoutput_accelerometer.pyとして保存します。
import serial

try:
  ser = serial.Serial('/dev/ttyACM0',115200,timeout=None)
  while True:
    line = ser.readline()
    ary = line.decode('utf-8').strip().split(',')
    if len(ary) == 3:
      print(ary)
finally:
  ser.close()

4. micro:bitとPCを接続して、Thonnyなどで以下のプログラムをmain.pyとして保存します。
from microbit import *

uart.init(115200)
display.show(Image.HEART)
while True:
    values = "{},{},{}".format(accelerometer.get_x(), accelerometer.get_y(), accelerometer.get_z())
    uart.write(values + "\n")
    if button_a.is_pressed() and button_b.is_pressed():
        display.clear()
        break
    sleep(100)
uart.init(115200)

プログラムをmicrobitに保存後、Thonnyを閉じておきます(※受信プログラムを使用せずにUSBシリアルの出力を見たい場合は、閉じないでおきます)
Micro:bitが反応しなくなった場合は「ThonnyからMicoPythonのプログラムをmicro:bitに転送する設定」の手順でMicroPythonを再インストールします。

5. PC側の受信プログラムの実行
シェルで以下を実行後、micro:bitのAボタンやBボタンを押したときのメッセージが表示されることを確認します。最後にAボタンとBボタンを同時押してmicro:bit側のプログラムを終了します。PC側のプログラムはCtrl+Cで終了します。
python output_accelerometer.py

関連情報

・Thonnyに関する記事は、こちらを参照してください。

・Micro:bitに関する記事は、こちらを参照してください。

0 件のコメント:

コメントを投稿