Raspberry Piの最新アドオンであるBuild HATは、Raspberry PiとLEGO Educationのコラボレーションによる製品です。この新しいボードは、Spike Prime、Technic、Mindstormsキットに搭載されているモーターやセンサーなどの互換性のあるLEGOコンポーネントをRaspberry Piで使用できるようにします。LEGOは数十年の歴史があり、扱いやすい組み立てツールとしてよく知られていますが、ルービックキューブを解くロボットのような高度なプロジェクトの作成にも使用できることをご存知でしたか?
25ドルで購入できるBuild HATは、ブロックベースのプログラミング言語に重点を置いたオリジナルのレゴキットの応用範囲を広げるために開発されました。Build HATの使いやすいPythonモジュールと4つのLPF2コネクタ(レゴパーツに使用されているもの)を使えば、レゴと既存のRaspberry Piアドオンを組み合わせることができます。
Build HATを紹介するために、シンプルな色覚センサー装置を作成しました。ボタンを押すと、カラーセンサーがその下に置かれた物体の色を読み取ります。センサーが「見た」色は、10ドルのBlinktで再現されます。
- 40ピンGPIOを備えたRaspberry Piの任意のモデル
- HATを構築する
- HAT PSUを構築する
- レゴスパイクプライムキット(フォースセンサーとカラーセンサーを含む)
- ピモロニ・ブリンクト
- 拡張GPIOヘッダー
- microSDカードにインストールされた最新のRaspberry Pi OS
Build HATのセットアップ
Build HAT を Raspberry Pi に追加するのは比較的簡単で、拡張ヘッダーを使用して Build HAT の上に別の HAT ボードを追加できます。
1. GPIOに拡張GPIOヘッダーを取り付けます。これによりGPIOのピン長が延長され、Build HATを貫通できるようになります。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
2. Build HATをRaspberry PiのGPIOに接続します。付属のM2.5 9mmスペーサーを使用して、ボードがオーディオ/ビデオジャックに接触しないようにします。
3. Blinktを拡張GPIOピンに取り付けます。Blinktの湾曲したエッジがRaspberry Piの角に合うように注意してください。
4. LEGO フォース センサーをBuild HAT のポート A に接続し、カラー センサーをポート B に接続します。
5. Build HAT PSU を介して Raspberry Pi に電源を入れます。
6. デスクトップから、メイン メニュー >> 設定 >> Raspberry Pi 構成をクリックします。
7. 「インターフェース」をクリックし、「シリアルポート」を「有効」に、「シリアルコンソール」を「無効」に設定します。Build HATは、GPIOピンの一部を使用するシリアルインターフェースを介してRaspberry Piと通信します。
8.ターミナルを開き、Build HAT Python モジュールをインストールします。
$ pip3 install buildhat
9.カスタム インタラクティブ インストーラーを使用して、Pimoroni Blinkt Python モジュールをインストールします。
$ curl https://get.pimoroni.com/blinkt | bash
プロジェクトのコーディング
1.メインメニュー >> プログラミング に移動し、Thonny を選択します。
2.新しいドキュメントに、3つのコードモジュールをインポートします。1つ目はBuild HATモジュールで、力覚センサーと色覚センサーを操作するためのクラスです。2つ目はインストール時間で、コードに遅延を追加します。最後に、LEDを制御するためのBlinktモジュールをインポートします。
from buildhat import ForceSensor, ColorSensor
import time
import blinkt
3.フォース センサーとカラー センサーがどのポートに接続されているかを Build HAT に伝えるために使用する button と cs という 2 つのオブジェクトを作成します。
button = ForceSensor('B')
cs = ColorSensor('A')
4.コードの終了時に Blinkt がオフになるようにするコード行を追加します。
blinkt.set_clear_on_exit()
5.コードを継続的に実行するためのループを追加します。最初のステップでは、フォース センサーの状態をチェックして、押されたかどうかを確認します。
while True: if button.is_pressed() == True:
6.フォースセンサーが押されたときに実行される2行のコードを追加します。このコードはカラーセンサーをアクティブにし、読み取りを行い、RGBデータをリストに保存します。
cs.on() colors = cs.get_color_rgbi()
7.リスト「colors」の内容を印刷する行を追加し、 colors リストの最初、2 番目、3 番目の値を変数 r、g、b に保存します。
print(colors) r = colors[0] g = colors[1] b = colors[2]
8. Blinkt を設定して、r、g、b の値を使用して RGB LED を点灯し、カラー センサーが「認識」する色と一致させます。
blinkt.set_all(r, g, b) blinkt.show()
9. 3 行を追加します。最初の行ではコードを 5 秒間一時停止し、2 行目と 3 行目では Blinkt を設定して LED をオフにします。
time.sleep(5) blinkt.set_all(0, 0, 0) blinkt.show()
10.使用されていないときにカラー センサーがオフになるようにする else 条件を追加します。
else: cs.off()
11.コードを lego-color-blinkt.py として保存します。
12.緑色の再生ボタンをクリックしてコードを開始します。コードが有効になるまで数秒かかる場合がありますが、準備が完了するとカラーセンサーが短時間点灯します。
13.スキャンしたい物体をカラーセンサーの下に置き、フォースセンサーボタンを押して読み取ります。Blinktは指定された色に合わせて5秒間点灯し、その後LEDが消灯します。
完全なコードリスト
from buildhat import ForceSensor, ColorSensor
import time
import blinkt button = ForceSensor('B')
cs = ColorSensor('A')
blinkt.set_clear_on_exit() while True: if button.is_pressed() == True: cs.on() colors = cs.get_color_rgbi() print(colors) r = colors[0] g = colors[1] b = colors[2] blinkt.set_all(r, g, b) blinkt.show() time.sleep(5) blinkt.set_all(0, 0, 0) blinkt.show() else: cs.off()