ずいぶんLEGOやラズパイの情報をチェックしてなかったけど、「Raspberry Pi Build HAT」という製品が発売されていたのを今更発見。 早速スイッチサイエンスさんで購入して遊んでみた。
とりあえずゲームパッドでレゴのLEDを変化させてみた
前回、ラズパイからゲームパッドの情報を取得できたので、それを使ってレゴ距離センサーに付いている4つのLEDを制御してみた。
(というか距離センサーにLED付いているのを初めて知った。さらに、ネジを外すと拡張コネクタがあるなんて知らなかった。)

確認した環境
ハード: Raspberry Pi 3 model B、Raspberry Pi Build HAT、F710ワイヤレス ゲームパッド OS: Raspberry Pi OS (32bit)
初期セットアップ
おおまかな初期セットアップは下記を行うだけ。簡単簡単。
詳しくは公式ドキュメント参照。
・ラズパイにBuild HATを載せる。
・ラズパイのシリアル通信を有効、シリアルコンソールを無効にする。
・Pythonライブラリをインストール
$ pip3 install buildhat
コントローラーでセンサーのLEDを操作するプログラム
下記プログラムをファイルに保存して、実行すれば出来上がり。
sensor_test.py
import os
import pygame
from buildhat import DistanceSensor, Hat
from pygame.locals import *
os.environ["SDL_VIDEODRIVER"] = "dummy"
pygame.init()
pygame.joystick.init()
joy = pygame.joystick.Joystick(0)
joy.init()
hat = Hat()
sensor = DistanceSensor('A')
print('Hat voltage = %f' % hat.get_vin())
while True:
pygame.time.wait(30)
for e in pygame.event.get():
if e.type == pygame.locals.JOYBUTTONDOWN or e.type == pygame.locals.JOYBUTTONUP:
right_upper = joy.get_button(2) * 100
left_upper = joy.get_button(3) * 100
right_lower = joy.get_button(0) * 100
left_lower = joy.get_button(1) * 100
sensor.eyes(right_upper, left_upper, right_lower, left_lower)
if e.type == pygame.locals.JOYBUTTONDOWN:
print('BUTTON %d DOWN' % e.button)
if e.button == 4:
print('distance = %f' % float(sensor.get_distance() / 10))
elif e.type == pygame.locals.JOYBUTTONUP:
print('BUTTON %d UP ' % e.button)
結果
ラズパイからLEGOのモーターやセンサーなどがお手軽に制御できるので大満足。
メモ
ラズパイをレゴに固定する方法
公式ドキュメントにはBBEという名前のメイカープレートが出てくる。
このメーカープレートは新しく発売されたSPIKE Prime拡張セットのパーツで、単独では売ってない。
他の固定方法は、こちらのページの「Raspberry Pi と Build HAT を LEGO® に取り付ける」をクリックすると表示される。
それ以外の方法としては、3Dプリンタで作ったメイカープレートのデータを公開してくれている人がいたので、こちらを使いました。
Build HatのLED
プログラムでも書き換え可能だけど、初期の内容は次のとおり。
赤:ファームウェアがロードされてない
緑:ファームウェアがロード済み
buildhat.exc.BuildHATError: HAT not foundエラーの対処法
プログラム実行時に時々HAT not foundと表示されてしまうことがあった。
自分の場合、原因はだいたいが自分の使い方のミスで、次のような原因だった。
・既に別のターミナルやバックグラウンドでBuild hatを使うプログラムを実行中
・シリアル通信が行えない状態(というケースもあるらしい。未確認)
・電力不足
その他
・電源ジャックは、2.1mm標準DCジャック(内径2.1mm、外径5.5mm)。
・電源ON後、初回のプログラム実行は数秒待たされる。Build Hatのファームウェアを電源投入後に1度だけロードするっぽい。
リンク
公式ページ
公式ドキュメント
Build HATのライブラリのリファレンス
Build HATのライブラリのソース
