2学期開始!体験授業 受付中 →
ROBO SCIENCE

なぜ Pybricks か ―
ブロックから文字へ

2026.10.14
R3 ER(Expert-rescue)

SPIKE プライムは、ブロックでも Python でも動かせます。ロボサイエンスでは Pybricks を使い、Python という文字のプログラムで動かします。理由は3つです。細かく決められること、Pico と通信できること、文字のまま保存できること。Pybricks の入れ方と、モーターを1回転させる最初のプログラムまで進みます。

Pybricks とは ― SPIKE を Python で動かす

Pybricks は、ハブの中に入れるファームウェアです。入れかえると、ハブは Python のプログラムで動くようになります。

プログラムはブラウザの上で書けます。専用のアプリとしてパソコンに入れて、そこから動かすこともできます。書いたプログラムは、Bluetooth か USB でハブへ送ります。

同じ動きを、ブロックと Python で書く ブロック Python(Pybricks) ずっと A を 1 回転 回す 1 秒待つ while True: motor.run_angle(360, 360) wait(1000) 字下げした2行が「ずっと」の中身
ブロックの1個が、Python の1行になる。組み立て方は変わらない。
ブロックPython
ずっとwhile True:
もし 〜 ならif 〜:
1 秒待つwait(1000)
変数を 10 にするx = 10

ブロックの「はさむ形」は、Python では字下げで表します。行の頭を下げた部分が、その中身です。

理由1 細かく決められる ― 速さ・止め方・加速

Pybricks では、モーターの動きを数値で決めます。

決めるもの書き方意味
速さmotor.run(360)1秒に360度。1秒で1回転
回す角度motor.run_angle(360, 90)90度だけ回して止まる
止め方then=Stop.HOLDその位置を保つ。押されても戻る
then=Stop.BRAKEブレーキをかけて止める。押されても戻らない
then=Stop.COAST力を抜く。惰性で止まる
加速motor.control.limits()速さの上限、加速のきつさ、力(トルク)の上限を決める

速さの単位は「1秒に何度回るか」です。パーセントではないので、進む距離を計算で出せます。タイヤの直径が分かれば、何度回せば何 cm 進むかが決まります。

止め方のちがいは、止まったあとのモーターを手で回すと分かります。HOLD は回せず、COAST は軽く回ります。

理由2 Pico と通信できる ― UARTDevice

Pybricks には UARTDevice があります。これを使うと、ハブのポートがシリアル通信の口になります。

from pybricks.iodevices import UARTDevice
from pybricks.parameters import Port

uart = UARTDevice(Port.C, baudrate=115200)   # ポート C をシリアル通信に使う
data = uart.read(1)                          # 1バイト受け取る

つなぐ相手は Raspberry Pi Pico です。Pico でセンサーを読んで計算し、結果だけを SPIKE へ送る。シリアル通信の回でやったメインとサブの分担が、SPIKE と Pico のあいだでもできます。

これで、LEGO のセンサーにないものを SPIKE につなげます。配線とプログラムは、別の回でやります。

理由3 文字で保存できる ― コピーして、使い回せる

Python のプログラムは、ただの文字です。だからコピーが簡単です。必要なところを選んで、別のプログラムに貼りつけるだけで使えます。

いちばん効くのは関数です。「1マス進む」「線をたどる」のように一度作った関数を、次のロボット、次の大会のプログラムへそのまま持っていけます。作るたびに、使える部品が増えていきます。

できること役に立つ場面
コピーして貼りつける前に作った関数を、新しいプログラムで使う
VS Code で開くGitHub に保存して、版を残せる。仲間とも共有できる
前の版とくらべる動かなくなったとき、どこを変えたかが1行単位で分かる
コメントを書くその数字にした理由を、数字の横に残す

もう1つあります。Python で覚えた変数・関数・while・if は、Pico のプログラムでもそのまま使う考え方です。書き方は少しちがいますが、組み立ては同じです。

Pybricks を入れる ― ファームウェアを書きかえる

パソコンのブラウザは Chrome か Edge を使います。

やること
1code.pybricks.com ↗ を開く
2左の歯車を押し、Firmware の Install Pybricks Firmware を選ぶ
3Select hub type:SPIKE プライムのハブを選ぶ
4Accept licenses:ライセンスに同意する
5Configure options:ハブに名前を付ける
6Install:画面の手順どおりにハブを更新モードにして、USB ケーブルでつなぐ。一覧からハブを選ぶと、書きこみが始まる
Pybricks Code の Install Pybricks Firmware の画面。左に Select hub type、Accept licenses、Configure options、Install の4つの手順が並び、右のハブの一覧で黄色い大きなハブ(SPIKE プライム)が選ばれている。
手順3の画面。黄色い大きなハブが SPIKE プライム。左の4つを上から順に進める。

名前は、ほかのハブと区別できるものにします。教室では同時に何個も動くので、名前が同じだと、どれが自分のハブか分かりません。

Pybricks を入れているあいだ、LEGO の純正アプリではそのハブを動かせません。元に戻すときは、同じ画面の歯車の中にある Restore Official LEGO Firmware を使います。

はじめてのプログラム ― モーターを1回転させる

ポート A にモーターを1個つなぎます。ハブの電源を入れ、画面の Bluetooth のボタンを押して、自分のハブを選びます。

from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor
from pybricks.parameters import Port, Stop
from pybricks.tools import wait

hub = PrimeHub()
motor = Motor(Port.A)                 # ポート A のモーター

motor.run_angle(360, 360)             # 1秒に360度の速さで、360度回す
wait(1000)                            # 1秒待つ
motor.run_angle(360, -360, then=Stop.COAST)   # 逆へ1回転。止めたら力を抜く
Pybricks Code の画面。上に左からファイル、歯車、USB、Bluetooth、再生、停止のボタンが並び、左にプログラムの一覧、中央に sample.py のプログラムが色分けされて表示されている。
Pybricks Code の画面。上のボタンは左から、ファイル・設定・USB・Bluetooth・▶(実行)・■(停止)。

▶ のボタンを押すと、プログラムがハブへ送られて動きます。

行やっていること
from 〜 import 〜使う部品を呼び出す。毎回、いちばん上に書く
hub = PrimeHub()ハブを使えるようにする
motor = Motor(Port.A)ポート A のモーターに motor という名前を付ける
run_angle(360, 360)1つめが速さ、2つめが角度
run_angle(360, -360, …)角度をマイナスにすると、逆に回る

止まったあとのモーターを手で回してみます。1回めのあとは回せず、2回めのあとは軽く回ります。then= を書かなければ Stop.HOLD になるからです。

送ったプログラムはハブに残ります。パソコンから離しても、ハブの中央のボタンを押せばもう一度動きます。

動かないときに見るところ ― 症状から原因を引く

症状原因対処
Bluetooth のボタンを押しても何も出ないブラウザが対応していないChrome か Edge で開く
一覧に自分のハブが出ない電源が入っていない。またはほかのパソコンにつながっているハブの電源を入れなおす
ENODEV と出て止まるそのポートにモーターがつながっていないPort.A と、実際にさしたポートを合わせる
IndentationError と出る字下げがそろっていない行の頭の空白を、上の行とそろえる
NameError と出る名前のつづりがちがう。または import を書いていないエラーに出た行と、いちばん上の import を見る
純正アプリからつながらないPybricks が入っている純正のファームウェアに戻す
ロボサイエンスについて

ロボカップジュニア2027 に向けて、レスキュー(災害救助)とサッカーの2種目に取り組みます。プログラミングと電子工作の経験は問いません。

ロボサイエンスの記録一覧 →
体験授業・お問い合わせ →

← ロボサイエンスの記録一覧へ戻る