2023-04-28

Grove Base Hat for Raspberry Pi の設定でハマったので備忘録

ゼミ生にセンサ情報を収集するのにラズパイでIoT化させていて学生がハマっていたので、実際に動作させる方法を調べた結果を備忘録として残しておく。 今回のターゲットはこのボード(Grove Base Hat for Raspberry Pi for Zero)

(追記2023/10/24) なお、ラズパイOSのバージョンは11(bullseye)以降で、古いOSは当てはまらないので注意

(追記2023/11/10) 現在売られているのはボード上のチップ(MM32)とアドレス(0x08)が変更されているバージョンなので注意が必要

・ハマった点
Python用のgrove.pyをインストールして使用しようとしたが、このBase Hatが見つからないと言われ、ライブラリが使用できない
 
・問題点
Wikiにも書いてあるのだが、バージョン違いでI2Cアドレスが変わっているので変更する必要があるのに、そのままインストールしてしまった
 
 
実はこのwikiは、同じBase Hatではあるのだが、フル規格のラズパイ用の方のもの(↓写真)で、Zero用の方には書いていないため、ゼミ生を含め、気がつかない人も多いのかもしれない。
とはいえ、使用するライブラリ自体は「grove.py」という同じモノなので、なんだかなぁという感覚は残るものの、Hatを認識しないというのだから、I2Cアドレスは一番にチェックしなければならないところだともいえるので、うちのゼミ生の経験不足といわれても仕方ない。。。
 
・解決法
解決法の前に、このライブラリのインストールの手順をおさらいしておく。
1.gitでライブラリのクローンをローカルに作成
     $ git clone https://github.com/Seeed-Studio/grove.py
2.pip3でインストール
     $ cd grove.py
     $ sudo pip3 install .
3.動作確認(D5にLEDを接続)
     $ python3 grove/grove_led.py 16
ここで、3の動作確認でHatがないと怒られるのである。
そこで、先ほどのwikiの注意を確認すると、adc.pyにI2Cアドレスの指定があるので、変えろと書いてある。念のため、このHatを購入したスイッチサイエンスのサイトを確認してみる。
 
 
やはり、I2Cアドレスは0x04となっている。 (追記2023/11/10 現在売られているのはMM32チップでアドレスが0x08に変更されているものなので、以下の変更は必要ない。)
で、肝心のadc.pyの方はというと、、、
 

0x08になってるじゃん!動くわけないじゃん!ということで、これをサクッと4に変更して、再度pip3でインストールをかける。
んでもって動作確認すると無事動きましたとさ。となるわけである。
 
以上の説明だけでサクッと解決できる人は、きっとこんなブログなんて必要のない人であろうことから、もう少し手順を説明しておく。
1.クローンはそのまま
2.pip3をかける前に、このgrove.pyフォルダにあるadc.pyをエディタで編集して、上記の08を04に変更して保存した上で、pip3をかける
3.動作確認がうまくいくことを確認して終了となる。
 
しかし、こんなところでつまずいていて肝心のIoTセンササーバの構築は大丈夫か???
 
(追記2023/5/9) なんとせっかくのオンボードのADCコントローラを制御するライブラリがオワコンになっていて使えないという情けない展開に。。。ということで、このボードを使用する時はアナログ端子は使えないので、デジタルかI2Cでどうぞということになる。まぁGroveのコネクタを使えるという意味では、このボードの存在意義はないわけではないが、なんだかなぁという感じ。。。これ以上の追求は時間がまたあるときにということで。
(追記2023/10/24) 久しぶりにWikiを見ると、ライブラリがアップデートされているのか、ポート番号さえ直せば使えるようになっていた。とりあえず、ここのやり方でボードの有無チェックについてはクリアできそうである。ただ、Wikiの一番最初に書いてあるPWMブザーのサンプルはライブラリのファイル不足で実行できないという残念な状態になっているので、ここでめげてしまわないように!ちなみにLED点灯やADC関係、サーボモータは動作することを確認しておいた。
 (追記2023/11/10) このたび、追加購入したものはチップとアドレスが変更されたバージョンのモノだった。今後は、通常のインストール方法で動作が可能なようだ。どちらのバージョンかは、i2cdetect -y 1で08が表示されていれば新バージョン、そうでなければ旧バージョンということになる。なお、旧バージョンの場合、i2cdetectで04は表示されない。

リアルRPGシステム第1弾「宝箱と魔法のリング」

リアルRPGシステムとは? ロールプレイングゲーム中では不思議な現象に出会うことも多いでしょう。でも、これは所詮は画面の中の話。元々誰かが作ったプログラムなんだから、そんなんできて当たり前!と思っていたんじゃつまらない!リアルな世界でもRPGに見られる現象を再現してみようというこ...