ロボジョイちゃれんじ教室

23-1 SPIKEプライムBluetooth LE入門

第1回「ラージハブと通信をする」

  • Page:
  • 1
  • 2

◆サンプルプログラムを動かす

先ほどダウンロードしたソースファイル「app.py」をThonnyのエディタで開きます。
注釈には「Bluetooth LEを使って、ラージハブの状態を読み取ったり、プログラムを転送することができます。」という意味のことが書かれています。

ラージハブの決定ボタンを長押しして電源を入れます。起動すると、決定ボタンは緑色に点灯します。もし、白色に点灯している場合にはハブOSのバージョンが古いので、アップデートが必要です。
電源を入れたら、Bluetoothボタンを長押しします。これで通信の待機状態になります。「ピッピッピッピッ」という音が鳴り続けます。

プログラム「app.py」を実行すると、シェル画面に「スロット0にプログラムを上書きしますが、よろしいですか?」という意味のメッセージが表示されます。
キーボードの「Y」「Enter」キーを押します。

ラージハブが見つからない場合、「No hubs detected.」というエラーが表示されて、異常終了します。
ラージハブの電源を入れ忘れてないか。Bluetoothボタンを押し忘れていないか確認しましょう。

ラージハブが見つかった場合には「Hub detected!」と表示されます。
続いて、ラージハブへの接続を開始します。接続に成功した場合には「Connected!」と表示されます。

接続が成功した場合、スロット0にPythonのプログラムを転送します。「TransferChunkRequest」という関数の引数を見ると、プログラムのソースコードがそのまま表示されています。

プログラムの転送が完了すると、プログラムを実行します。ライトマトリクスに「Hello, world!」の文字が表示されます。

文字の表示が終わったら、プログラムが自動的に終了します。
終了しても、Bluetoothの接続は続いています。

ラージハブ側のプログラムの動作は終わりましたが、パソコン側のプログラムはまだ動いています。約5秒おきにラージハブの情報が表示されます。「Battery」はバッテリー残量、「IMU」は加速度とジャイロ、「5x5」はライトマトリクスの状態という意味です。
この状態でラージハブにモーターを接続すると、「Motor」という項目が追加されて、軸の角度などの情報が表示されます。
カラーセンサーを接続すると、エラーが表示されてしまいます。どうやらプログラムにバグがあるようです。
プログラムを終了するにはキーボードのCtrl+Cキーを押します。ツールバーの「STOP」ボタンを押しても終了できます。

ラージハブ~パソコン間でどのような通信をやりとりしているのでしょうか? この問いについては、レゴ グループの次の公式の資料が参考になります。
https://lego.github.io/spike-prime-docs/#
この資料を見ると、Messages(メッセージ)という項目に通信のコマンドの仕様が書かれています。あとは、サンプルプログラムの「messages.py」と照らし合わせていけば、オリジナルのプログラムが作れるようになると思います。サンプル側にクラスがない場合は追加しないといけません。かなり大変な作業になりそうです。

  • Page:
  • 1
  • 2