EV3用MicroPythonでプログラミングしてみた ~レゴマインドストームEV3~
Contents
EV3用MicroPython
教育用レゴマインドストームEV3でEV3用MicroPythonでプログラミングしてみた時の備忘録。
レゴマインドストームEV3は通常は”レゴマインドストームソフトウェア(こちらでダウンロード可能)”でモジュールと呼ばれるブロックをドラッグ・アンド・ドロップで配置してプロパティを設定したりワイヤーと呼ばれる線を接続しながらプログラミングする。
いわゆるGUI(Graphical User Interface)でのプログラミング手法で初心者や子供には視覚的に分かりやすく、また結構凝ったロジックも構築できるので有り難く使わせてもらっている。
一方、Pythonによるプログラミングは下記の様にPythonスクリプトを記述してプログラミングすることになる。
正直、慣れていない人にとっては分かりにくいし、とっつきにくいのだがPythonでプログラミングできる人にとってはキーボード操作中心でコーディングができるのでこちらの方が手軽で早かったりする。
先日、EV3用のPythonによるプログラミングがこちらのページでリリースされていたので試してみた。
記事の最後に動画でこの記事の内容を紹介しているので確認してみて欲しい。
全体図
全体図は以下の通り。
パソコンのVisual Stadio Code上でプログラミングしたPython ScriptをUSB経由でEV3のMicro SDカードにコピーしてプログラムを動作させる。
手順について
手順については上記ページからのリンクされているPDFに載っているが、自分が行った手順を記事にしておく。
おおまかな手順は以下の通り。
- Pythonコーディング用のVisual Studio Codeをインストール
- Visual Stadio CodeにMicroPython拡張機能をインストール
- MicroPythonツールのダウンロード
- EtcherでダウンロードしたツールをMicro SDカードにコピーする
- EV3のインテリジェントブロックとパソコンを接続する
- EV3をSDカードから起動する
- Visual Studio Codeでプログラミング&実行する
Visual Studio Codeのインストール
Pythonプログラミング用のMicrosoftが開発したソースコードエディタ(Visual Studio Code)をインストールする。
既にインストール済みの人は次セクションに飛んでもらって構わない。
ダウンロード
こちらのページからVisual Studio Codeをダウンロードする。
尚、当方の環境ではWindows User Installer 64Bitを選択した。
インストーラーの起動
ダウンロードしたインストーラーを起動する。
使用許諾書の同意
同意するを選択して「次へ」ボタンをクリックする。
※画面ショットを撮り損ねて下が欠けているがご了承ください
インストール先の指定
インストール先の指定をして「次へ」ボタンをクリックする。
プログラムグループの指定
プログラムグループの指定をして「次へ」ボタンをクリックする。
追加タスクの設定
デスクトップ上のアイコンなどの追加タスクの設定を行って「次へ」ボタンをクリックする。
インストール
「インストール」ボタンをクリックする。
インストール完了
インストールが完了するので「完了」ボタンをクリックする。
Visual Stadio Codeと拡張機能
Visual Stadio Codeが起動されてWelcomeページが表示されるので拡張機能タブを開く。
この拡張機能でVisual Stadio CodeにEV3 MicroPython拡張機能をインストールする。
※尚、下記の画面ショットだがこちらの記事でWindows10のカラーをダークカラーにしているので標準とはカラーが異なるかも知れない。
検索欄で”EV3 MicroPython”を検索すると現れる”LEGO MINDSTORMS EV3 MicroPython”のInstallをクリックする。
EV3 MicroPython拡張機能がインストールされると同時に左側のメニューにEV3のアイコンが追加される。
パソコン側の開発環境の構築は以上で終了。
MicroPythonツールのダウンロード
次にEV3に差し込むMicro SDカードを作成する。
ちなみにMicro SDカードの容量は4GByte~32GByteが使用可能。
こちらのページから”EV3 MicroPython micro SD Card image”をダウンロードして適当なフォルダーに保存する。
ファイル名はev3micropythonv100sdcardimage-4b8c8333736fafa1977ee7accbd3338f.zipだった、なおイメージファイルはzip形式だが解凍する必要はない。
ツールをMicro SDカードにコピー
ダウンロードしたEV3 MicroPythonツールをEtcherでMicro SDカードにコピーする。
Micro SDカードのフォーマット
コピーする前に必要に応じてMicro SDカードをフォーマットする。
自分はSD Card Formatterを使って上書きフォーマットした。
確認メッセージが表示されるので「はい」をクリックする。
フォーマットされた。
Etcherでコピー
イメージファイルのコピーはEtcherを使用した。
Etcher以外でもMicro SDカードにイメージファイルをコピー(して展開)できるツールであれば何でも良い。
Etcherのインストール
一応、Etcherのインストール方法についても記述しておく。
既にインストール済みの人は次のセクションに飛んでしまって構わない。
こちらのページからDownloadをクリックしてインストーラーを適当なフォルダーに保存する。
インストーラーを起動するとライセンス契約書が表示されるので確認した後、「同意する」ボタンをクリックする。
インストールは以上で終了。
Etcherでのコピー
EtcherでイメージファイルをMicro SDカードにコピーする。
Etcherを起動した後、「Select Image」をクリックして先程ダウンロードしたEV3 MicroPython micro SD Card imageファイルを選択する。
真ん中のChangeをクリックすると出力先ドライブの確認ができるのでMicro SDカードのドライブが選択されていることを確認する。
またクリックしなくてもマウスオーバーでもドライブ名が表示されるので確認ができる。
「Flash」ボタンでMicro SDカードに書き込む。
数分で書き込みが成功した。
EV3とパソコンの接続
SDカードの差し込み
作成したMicro SDカードはレゴマインドストームEV3のSDカードスロットに差し込む。
パソコンとの接続
教育用レゴマインドストームEV3基本セットに付属のUSBケーブルでパソコンと接続する。
パソコン側はType-A、レゴインテリジェントブロック側はMini USB Type-Bを “PC” と表示されているコネクタに差し込む。
尚、この接続はVisual Stadio Codeでのプログラミング後のスクリプト実行直前でも構わない。
EV3をSDカードから起動する
インテリジェントブロックの電源をオンにするとMicro SDカードからOSが起動される。
※前述のパソコンとのUSB接続はしていても、いなくても構わない。
オレンジ色のLEDが点滅して起動プロセスが画面に表示される。
しばらく待って、オレンジの点灯がしなくなって下記の画面が表示されればOSの起動は終了。
※LEDは緑の点灯
それぞれのメニュー内容については後述する。
終了方法
その前に終了方法。
インテリジェントブロックの左上の戻るボタンを押すと下記のメニューが表示されるので”Power Off”を選択して中央ボタンを押せばEV3は終了する。
- Reboot:再起動
- Cancel:先程のメニューに戻る
ハングした時
何らかの理由でハングしてキーを一切受け付けなくなってしまった時の対処法は以下の通り。
左上の戻るボタン、中央ボタン、左ボタンを”順番”に最終的には同時に押す。
ちょっと分かりにくい表現だが、ホームページ説明では”同時に押す”とだけあるので本当に同時に押すと受け付けて貰えなかった。
最初に戻るボタンを押して、押しながら次に中央ボタンを押す、そしてふたつのボタンを押しながら最後に左ボタンを押すという様に順番に押す必要があった。
押し続けていると画面が消えるので戻るボタンを離す。
そして”Starting”と表示されたら左と中央ボタンも離すことによりハングが解消される。
今回のテスト中にOS起動時に一度だけハングしてしまい、キーを一切受け付けなくなってしまった時があったのだがこの方法で解消した。
メニュー構成
File Browser | Micro SDカード内のファイルブラウザ Visual Stadio Codeで作成したPythonスクリプトもここから実行する |
Device Browser | デバイスが表示される
センサー類はWatch Valuesで値の参照、Set Modeでモードの変更ができる またSend commandでコマンドが送れるのだと思うのだがやり方が分からなかった モーター類はWatch Valuesで現在の値の参照ができた |
Wireless and Networks | Wifi及びネットワークの設定
のメニューがある |
Battery | バッテリー状態の表示 |
Open Roberta Lab | Not 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」ボタンをクリックする。
GYRO_TESTプロジェクトが作成されて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”をクリックする。
“ev3dev イーサネットXX”を選択する。
緑色の丸が表示されればev3devとのコネクションが成功。
プログラムの実行
メニューからrun、Start DebuggingまたはF5を押下してプログラムを実行してプログラムが思惑通りに動作することを確認する。
一度F5で実行するとev3dev側にプログラムがコピーされるので2度目からはインテリジェントブロックのメニューからFile Browserでプロジェクトのフォルダーを指定してmain.pyを選択して中央ボタンを押せばパソコンとUSB接続されていなくてもプログラムが実行される。
動画
プログラムの実行までの手順とLモータが動く様子を動画にしているので確認してみて欲しい。
以上で今回の記事は終了。
mindstorms EV3関連、幾度となく色んな記事参考にさせていただいております
今回もです!
ありがとうございます。
mtmtさん
コメントありがとうございます!
MINDSTORMS EV3面白いですよね。
自分の書いた記事が役に立っている様で良かったです?
いつも、参考にさせていただきながら、勉強させていただいています。
すごく、初歩的な質問なのですが、SDカードを挿入して環境を構築した後でも、SDカードを抜けば、従来のEV3ソフトウェアを使用することはできるようでしょうか?
よろしくお願いします。
コメントありがとうございます。
SDを指していればSDカードから起動、指していなければ従来のインテリジェントブロックからの起動だったと思います(直ぐに試せる環境でないで記憶に頼っていますが)
いずれにしても従来のEV3のソフトウェアが使えなくなってしまうことは無いですよ?
ブログ拝見させていただき、いろいろ勉強になります。
EV3のbluetooth接続について、質問なのですが、
PC以外にJOYCONなど、接続認証時のパスワードが入力できない端末でも接続可能でしょうか?
joyconでEV3を動かしたいなぁ、と考えていたのですが、なかなか実現できそうなソースに辿り着けず、、質問させていただきました。
よろしくお願いします。
かもめさん コメントありがとうございます。
Bluetoothは接続時にパスワードは不要(WiFiは必要)だとは思いますが、Joy-Conから接続できるかはちょっと分かりません。
PC(Windows10)とEV3をBluetoothで接続する時は一覧から選択するだけなのでパスワードは入力していません。
ただ、すいません、Joy-Conと接続できるのかは「やってみないと」と言ったところでしょうか。
早速コメントありがとうございます。
EV3にJOYCON接続する際、パスキーの入力を求められ、JOYCONからの入力をどうやってやるんだろ、と考えていました。
いろいろ試してみます、ありがとうございました。