0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MicroPython/CircuitPythonAdvent Calendar 2023

Day 17

Pybricks 独自デバイスの作成

Last updated at Posted at 2023-12-17

はじめに

Pybricks の API ドキュメントの中には独自デバイス用のものがあります。

スクリーンショット 2023-12-17 21.59.40.png

しかし、独自デバイスの作り方に関するドキュメントは見当たりませんでした。本記事では独自デバイスに挑戦してみたことを書きます。

ハブとデバイス間の通信プロトコル

ハブに繋げられるデバイスの多くはマイコンを内蔵していて、ハブとUARTでシリアル通信しています。通信プロトコルについて Pybricks で解析したドキュメントはここにあります。見てみると、けっこうめんどうくさいプロトコルです。

プロトコルの概略は次のようなものです。

  • システムメッセージ(2400bps)
    デバイス情報をハブに通知するメッセージ

    • デバイスID
    • モード数
    • 通信速度
    • デバイスバージョン(ファームウェア、ハードウェア)
  • モード情報メッセージ(2400bps)
    各デバイスモードの情報をハブに通知するメッセージ

    • モード名
    • データサイズ
    • 生データ値の範囲
    • パーセントデータ値の範囲
    • SI単位データ値の範囲
    • 単位名
    • マッピング(絶対値か相対値か、NULL値を許すかなど)
    • 値のフォーマット(データセット数、バイト数、全体桁数、小数部桁数)
  • 送信データメッセージ(システムメッセージで通知した通信速度)
    実際のデータ送信

    • デバイスモード
    • データ長
    • データ値

通信に使うピンとケーブル

13日目の記事にも書いたとおり、UART の通信にはコネクタの5番と6番を使います。

スクリーンショット 2023-12-13 22.26.57.png

ポートのピン構成は次のようになっています。

ピン ラベル 機能
1 M1 モータ出力用
2 M2 モータ出力用
3 GND グラウンド
4 VCC 3.3V
5 D1 UART(ハブ→デバイス)
6 D2 UART(デバイス→ハブ)

問題はケーブルです。独自デバイスのためにセットに付属のケーブルをぶった斬るのはもったいないですが、純正品の個別販売もしていないようでした。

AliExpress に互換品がないか探したところ、使えそうなのがありました。

image.png

これに、ピンソケットを半田付けして、独自デバイスの実験用にしてみました。

IMG_7221.JPG

独自デバイス作成

独自デバイス用のマイコンとしては XIAO RP2040 を使いました。センサーとしてはLEGO純正で絶対に出そうもない人感センサーを選んでみました。

結果、作ってみたのが以下のようなもので、人感センサーが反応すると、Color Light Matrix が点灯するものです。

スクリーンショット 2023-12-17 22.24.29.png

デバイス側スクリプトとしてはここにあるものを参考にさせてもらい、独自デバイスを拡張できることを確認できました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?