EV3用MicroPythonでプログラミングしてみた ~レゴマインドストームEV3~ | そう備忘録

EV3用MicroPythonでプログラミングしてみた ~レゴマインドストームEV3~

EV3用MicroPython

教育用レゴマインドストームEV3でEV3用MicroPythonでプログラミングしてみた時の備忘録。

レゴマインドストームEV3は通常は”レゴマインドストームソフトウェア(こちらでダウンロード可能)”でモジュールと呼ばれるブロックをドラッグ・アンド・ドロップで配置してプロパティを設定したりワイヤーと呼ばれる線を接続しながらプログラミングする。

いわゆるGUI(Graphical User Interface)でのプログラミング手法で初心者や子供には視覚的に分かりやすく、また結構凝ったロジックも構築できるので有り難く使わせてもらっている。

こんなイメージ

マインドストームソフトウェアでのプログラミング

一方、Pythonによるプログラミングは下記の様にPythonスクリプトを記述してプログラミングすることになる。

こんなイメージ(ダークカラー)

Visual Stadio Codeでの開発

正直、慣れていない人にとっては分かりにくいし、とっつきにくいのだがPythonでプログラミングできる人にとってはキーボード操作中心でコーディングができるのでこちらの方が手軽で早かったりする。

先日、EV3用のPythonによるプログラミングがこちらのページでリリースされていたので試してみた。

EV3用MicroPython紹介ページ

記事の最後に動画でこの記事の内容を紹介しているので確認してみて欲しい。

全体図

全体図は以下の通り。

パソコンのVisual Stadio Code上でプログラミングしたPython ScriptをUSB経由でEV3のMicro SDカードにコピーしてプログラムを動作させる。

EV3 MicroPython全体構成図

手順について

手順については上記ページからのリンクされているPDFに載っているが、自分が行った手順を記事にしておく。

おおまかな手順は以下の通り。

  1. Pythonコーディング用のVisual Studio Codeをインストール
  2. Visual Stadio CodeにMicroPython拡張機能をインストール
  3. MicroPythonツールのダウンロード
  4. EtcherでダウンロードしたツールをMicro SDカードにコピーする
  5. EV3のインテリジェントブロックとパソコンを接続する
  6. EV3をSDカードから起動する
  7. Visual Studio Codeでプログラミング&実行する

Visual Studio Codeのインストール

Pythonプログラミング用のMicrosoftが開発したソースコードエディタ(Visual Studio Code)をインストールする。

既にインストール済みの人は次セクションに飛んでもらって構わない。

ダウンロード

こちらのページからVisual Studio Codeをダウンロードする。

尚、当方の環境ではWindows User Installer 64Bitを選択した。

Visual Studio Codeのダウンロード

インストーラーの起動

ダウンロードしたインストーラーを起動する。

使用許諾書の同意

同意するを選択して「次へ」ボタンをクリックする。

※画面ショットを撮り損ねて下が欠けているがご了承ください

使用許諾書の同意

インストール先の指定

インストール先の指定をして「次へ」ボタンをクリックする。

インストール先の指定

プログラムグループの指定

プログラムグループの指定をして「次へ」ボタンをクリックする。

プログラムグループの指定

追加タスクの設定

デスクトップ上のアイコンなどの追加タスクの設定を行って「次へ」ボタンをクリックする。

追加タスクの設定

インストール

「インストール」ボタンをクリックする。

インストールの実行

インストール完了

インストールが完了するので「完了」ボタンをクリックする。

インストール完了

Visual Stadio Codeと拡張機能

Visual Stadio Codeが起動されてWelcomeページが表示されるので拡張機能タブを開く。

この拡張機能でVisual Stadio CodeにEV3 MicroPython拡張機能をインストールする。

※尚、下記の画面ショットだがこちらの記事でWindows10のカラーをダークカラーにしているので標準とはカラーが異なるかも知れない。

Visual Stadio Codeの起動と拡張機能タブ

検索欄で”EV3 MicroPython”を検索すると現れる”LEGO MINDSTORMS EV3 MicroPython”のInstallをクリックする。

MicroPython拡張機能のインストール

EV3 MicroPython拡張機能がインストールされると同時に左側のメニューにEV3のアイコンが追加される。

EV3用MicroPythonのインストール

パソコン側の開発環境の構築は以上で終了。

MicroPythonツールのダウンロード

次にEV3に差し込むMicro SDカードを作成する。

ちなみにMicro SDカードの容量は4GByte~32GByteが使用可能。

こちらのページから”EV3 MicroPython micro SD Card image”をダウンロードして適当なフォルダーに保存する。

ファイル名はev3micropythonv100sdcardimage-4b8c8333736fafa1977ee7accbd3338f.zipだった、なおイメージファイルはzip形式だが解凍する必要はない。

EV3 MicroPython micro SD Card imageのダウンロード

ツールをMicro SDカードにコピー

ダウンロードしたEV3 MicroPythonツールをEtcherでMicro SDカードにコピーする。

Micro SDカードのフォーマット

コピーする前に必要に応じてMicro SDカードをフォーマットする。

自分はSD Card Formatterを使って上書きフォーマットした。

SD Card Formatterで上書きフォーマット

確認メッセージが表示されるので「はい」をクリックする。

確認メッセージ

フォーマットされた。

フォーマットされた

Etcherでコピー

イメージファイルのコピーはEtcherを使用した。

Etcher以外でもMicro SDカードにイメージファイルをコピー(して展開)できるツールであれば何でも良い。

Etcherのインストール

一応、Etcherのインストール方法についても記述しておく。

既にインストール済みの人は次のセクションに飛んでしまって構わない。

こちらのページからDownloadをクリックしてインストーラーを適当なフォルダーに保存する。

Etcherのダウンロード

インストーラーを起動するとライセンス契約書が表示されるので確認した後、「同意する」ボタンをクリックする。

ライセンス契約に同意する

インストールは以上で終了。

Etcherでのコピー

EtcherでイメージファイルをMicro SDカードにコピーする。

Etcherを起動した後、「Select Image」をクリックして先程ダウンロードしたEV3 MicroPython micro SD Card imageファイルを選択する。

イメージファイルの選択

真ん中のChangeをクリックすると出力先ドライブの確認ができるのでMicro SDカードのドライブが選択されていることを確認する。

出力先ドライブの確認

またクリックしなくてもマウスオーバーでもドライブ名が表示されるので確認ができる。

「Flash」ボタンでMicro SDカードに書き込む。

FlashでSDカードに書き込む

数分で書き込みが成功した。

書き込みの終了

EV3とパソコンの接続

SDカードの差し込み

作成したMicro SDカードはレゴマインドストームEV3のSDカードスロットに差し込む。

SDカードスロットに差し込む

パソコンとの接続

教育用レゴマインドストームEV3基本セットに付属のUSBケーブルでパソコンと接続する。

パソコン側はType-A、レゴインテリジェントブロック側はMini USB Type-Bを “PC” と表示されているコネクタに差し込む。

尚、この接続はVisual Stadio Codeでのプログラミング後のスクリプト実行直前でも構わない。

インテリジェントブロック側のUSBコネクタ

EV3をSDカードから起動する

インテリジェントブロックの電源をオンにするとMicro SDカードからOSが起動される。

※前述のパソコンとのUSB接続はしていても、いなくても構わない。

オレンジ色のLEDが点滅して起動プロセスが画面に表示される。

OS起動中

しばらく待って、オレンジの点灯がしなくなって下記の画面が表示されればOSの起動は終了。

※LEDは緑の点灯

OSの起動終了

それぞれのメニュー内容については後述する。

終了方法

その前に終了方法。

インテリジェントブロックの左上の戻るボタンを押すと下記のメニューが表示されるので”Power Off”を選択して中央ボタンを押せばEV3は終了する。

  • Reboot:再起動
  • Cancel:先程のメニューに戻る

Power Off

ハングした時

何らかの理由でハングしてキーを一切受け付けなくなってしまった時の対処法は以下の通り。

左上の戻るボタン、中央ボタン、左ボタンを”順番”に最終的には同時に押す。

ちょっと分かりにくい表現だが、ホームページ説明では”同時に押す”とだけあるので本当に同時に押すと受け付けて貰えなかった。

最初に戻るボタンを押して、押しながら次に中央ボタンを押す、そしてふたつのボタンを押しながら最後に左ボタンを押すという様に順番に押す必要があった。

ハングした時の対処方法

押し続けていると画面が消えるので戻るボタンを離す。

そして”Starting”と表示されたら左と中央ボタンも離すことによりハングが解消される。

今回のテスト中にOS起動時に一度だけハングしてしまい、キーを一切受け付けなくなってしまった時があったのだがこの方法で解消した。

メニュー構成

File BrowserMicro SDカード内のファイルブラウザ

Visual Stadio Codeで作成したPythonスクリプトもここから実行する

Device Browserデバイスが表示される

  • Ports:EV3に接続されているデバイスがポート別に表示される
  • Sensors:EV3に接続されているセンサー類が表示される
  • Motors:EV3に接続されているモーター類が表示される

センサー類はWatch Valuesで値の参照、Set Modeでモードの変更ができる

またSend commandでコマンドが送れるのだと思うのだがやり方が分からなかった

モーター類はWatch Valuesで現在の値の参照ができた

Wireless and NetworksWifi及びネットワークの設定

  • Bluetooth
  • Wi-Fi(EV3にWifiドングルが必要)
  • All Network
  • All Network Connections
  • Tethering
  • Offline Mode

のメニューがある

Batteryバッテリー状態の表示
Open Roberta LabNot Availableと表示されてしまう
Aboutシステム情報が表示される

brickman v0.10.0

The ev3dev Brick Manager

とあった

Visual Studio Codeでプログラミングする

Visual Studio Codeで簡単なサンプルプログラムを書いてみる。

ジャイロボーイを組んでいたのでビープ音を鳴らした後、片輪のLモータを回転させるプログラムを書くことにした。

新しいプロジェクトの作成

左のメニューのEV3 MicroPythonのボタンを選択した後に、”Create a new project”をクリックする。

新しいプロジェクトの作成

プロジェクト名に”gyro_test”と入力してenterキー。

プロジェクト名の入力

保存するフォルダーを聞かれるので、新しいフォルダーで”GyroTest”フォルダーを作成して選択した後に「Select Folder」ボタンをクリックする。

GyroTestフォルダーを選択

GYRO_TESTプロジェクトが作成されてmain.pyファイルが自動的に作成される。

ファイルの作成

main.py

main.pyをダブルクリックすると中身が表示される。

デフォルトで必要なモジュールをインポートするコーディングが既にされている。

main.pyの中身

プログラミング

プログラムの上部はそのままにして14行目以降を追加した。

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
                                 InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import (Port, Stop, Direction, Button, Color,
                                 SoundFile, ImageFile, Align)
from pybricks.tools import print, wait, StopWatch
from pybricks.robotics import DriveBase

# Write your program here
brick.sound.beep()

a_motor = Motor(Port.A) # ポート指定(A)
a_motor.reset_angle(0) # 累積回転角度をリセット
a_motor.run_target(30, 180, Stop.COAST, True) # 速度(度/秒)、目標角度、惰性走行、目標角度まで待機 
brick.sound.beep(500, 1000, 20) # Hz、 持続時間(ミリ秒)、音量

ポートAに接続されているLモータを毎秒30度の速度で180度回転させた後に(6秒掛かる計算)500Hzのビープ音を1秒間鳴らしている

実行

接続

前述のパソコンとの接続でEV3(インテリジェントブロック)とパソコンが接続されていることを確認する。

Visual Stadio Codeで左下のEV3DEV DEVICE BROWSERから”Click here to connect to a device”をクリックする。

connect device

“ev3dev イーサネットXX”を選択する。

ev3devを選択する

緑色の丸が表示されればev3devとのコネクションが成功。

ev3devと接続された

プログラムの実行

メニューからrun、Start DebuggingまたはF5を押下してプログラムを実行してプログラムが思惑通りに動作することを確認する。

プログラムの実行

一度F5で実行するとev3dev側にプログラムがコピーされるので2度目からはインテリジェントブロックのメニューからFile Browserでプロジェクトのフォルダーを指定してmain.pyを選択して中央ボタンを押せばパソコンとUSB接続されていなくてもプログラムが実行される。

インテリジェントブロックから実行する

動画

プログラムの実行までの手順とLモータが動く様子を動画にしているので確認してみて欲しい。

以上で今回の記事は終了。

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

おすすめ

7件のフィードバック

  1. mtmt より:

    mindstorms EV3関連、幾度となく色んな記事参考にさせていただいております
    今回もです!
    ありがとうございます。

    • souichirou より:

      mtmtさん
      コメントありがとうございます!
      MINDSTORMS EV3面白いですよね。
      自分の書いた記事が役に立っている様で良かったです?

  2. 匿名 より:

    いつも、参考にさせていただきながら、勉強させていただいています。
    すごく、初歩的な質問なのですが、SDカードを挿入して環境を構築した後でも、SDカードを抜けば、従来のEV3ソフトウェアを使用することはできるようでしょうか?
    よろしくお願いします。

    • souichirou より:

      コメントありがとうございます。
      SDを指していればSDカードから起動、指していなければ従来のインテリジェントブロックからの起動だったと思います(直ぐに試せる環境でないで記憶に頼っていますが)
      いずれにしても従来のEV3のソフトウェアが使えなくなってしまうことは無いですよ?

  3. かもめ より:

    ブログ拝見させていただき、いろいろ勉強になります。
    EV3のbluetooth接続について、質問なのですが、
    PC以外にJOYCONなど、接続認証時のパスワードが入力できない端末でも接続可能でしょうか?
    joyconでEV3を動かしたいなぁ、と考えていたのですが、なかなか実現できそうなソースに辿り着けず、、質問させていただきました。
    よろしくお願いします。

    • souichirou より:

      かもめさん コメントありがとうございます。
      Bluetoothは接続時にパスワードは不要(WiFiは必要)だとは思いますが、Joy-Conから接続できるかはちょっと分かりません。
      PC(Windows10)とEV3をBluetoothで接続する時は一覧から選択するだけなのでパスワードは入力していません。
      ただ、すいません、Joy-Conと接続できるのかは「やってみないと」と言ったところでしょうか。

  4. かもめ より:

    早速コメントありがとうございます。
    EV3にJOYCON接続する際、パスキーの入力を求められ、JOYCONからの入力をどうやってやるんだろ、と考えていました。
    いろいろ試してみます、ありがとうございました。

匿名 へ返信する コメントをキャンセル

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。