ずいぶん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のライブラリのソース