あっきぃ日誌

ラズピッピブログのようなオタクブログのようななにか

Raspberry Pi M.2 HAT+ Compactはアクティブクーラー実装のPi 5と組み合わせられるか?

KSYさんでPimoroniのMicro Dot pHATがまだ売られていたので、赤バージョンを購入しました。Pimoroniでは終売していて、販売しているところは貴重だったりします。このあと寝る前に組み立てようか、明日にするか……。


Raspberry Pi M.2 HAT+ CompactってアクティブクーラーなPi 5と組み合わせられる?

Micro Dot pHATだけ買うのもなんなのでRaspberry Pi M.2 HAT+ Compactも買ってみました。M.2を載せられるやつは足りてるんですけど、気になってたので……。ついで買いはしていますが、別に送料が無料になったわけでもないです。なぜ買った。

基板の表面。コンパクト版は公式のPi 5ケースと組み合わせて使用できるバージョンとしてリリースされたもので、ファンを避けるように基板がデザインされています。結果、FPCがよくわからん飛び出し方になっており、なんか引っ掛けて壊しそうなのがやや怖です。しかも、ケーブルは基板から直接飛び出しているので、FPCが破断したらボード全体が終了するハードモード仕様。どうしてコネクターにしなかったんだろう。

裏面。こちらにチップ部品類が実装されています。ピンソケットもこちら側です。

さてこのボード、公式のPi 5ケースとの組み合わせについては書かれていますが、アクティブクーラーを付けたPi 5と組み合わせられるのかについては特に言及がなく、まあなんとなくそのままではダメそうとは思っていましたが、誰も試した写真を上げてすらいないようだったので、試してみました。ググり方が悪いだけかもしれんけど。

だめでした。でしょうね。

もちろん、GPIOの延長ヘッダーを使えば搭載は可能です。ノーマルのM.2 HAT+から延長ヘッダーとスペーサーを拝借すると、こんな感じで使えそうです。

横から見るとこんな感じ。スペーサーがないとクーラーの金属部分に部品類が乗っかる感じになるので、スペーサーは付けたほうが良さそうです。ただし、ここで言うスペーサーはコンパクト版に付属のものではなく、ノーマル版に付属の16mmのものを指しています。

いちおう、比較用にノーマル版のM.2 HAT+の写真も。こちらは全体が覆われて公式ケースが使えなくなる代わりに、MIPIポートにアクセスしやすい形状になっています。給排気の面で有利・不利が変わりそうな気がしなくもないですが、正直誤差のような気もしています。どうなんでしょうね。


フーム

ここまで書いて公式ケースとの組み合わせは撮らないんかいって言われそうですが、だって、面倒だし、ググればでてくるし……。

公式ケースでNVMeを使いたい方はコンパクト版一択なのはさておき、アクティブクーラー派の人が、足りない延長ヘッダーと脚を別途用意してまでコンパクト版を使う意味があるかと言われると、そうでもなさそうという感想でした。

なんとなく、WaveShareとかが出している、アクティブクーラーのヒートシンク部分にM.2がくっついたやつの方が、コンパクトさを追求する意味ではアリなのかなあと思いました。いや、Pi 5とかそんなに何個もないので、これ以上M.2 HAT系は増やさないけど……。

Waveshare Raspberry Pi 5用 PCIe-M.2 SSD変換基板(ヒートシンク&ファン付属) — スイッチサイエンス

明日すぐに役立つわけでもない感じも小ネタみたいなレビュー記事でした。私の疑問は解消したからいいの!!!

ミクの日2026

いつもの

そしていつもの。

今回は青葉台のフードショーで見つけた新規開拓のお店でチーズケーキのショコラ。600円弱となかなかのお値段だったけど、ずっしり食感で美味でした。ノーマルは売り切れだったので、今度ノーマルも食べてみたい。

あと、スタバの普通のコーヒーもなんとなくついに初めて飲んだけど、飲めましたね……!舌が年をとってきましたな。ふふふ。

コーヒーはどっちかって言うと、飲んだあとに胃がやられないかとか、体がだるくなったりしないかとかのほうがアレなだけで、飲めはするんですよ……!

半蔵モン線を見に行った週末散歩、2日分

ぽこあポケモンの広告として半蔵門線がメタモンにジャックされているということで、見に行ってきました。

車両編

土曜日に運用を追っかけてちょい乗り。乗れたのは18112Fでした。18113Fもジャックされているようですが、この週末は乗れず。日曜日にも意図せず乗れましたが、18112Fでした。

釣り広告もメタモン

袖仕切り板にメタモン。18112F以降はガラス板が申し訳程度に残った、若干不格好気味な白い板に変わっていましたが、なるほど、広告スペースになることも考慮されていたのか。なんかすごい納得した感じがあります。めっちゃかわいいから、ここだけ3年くらい貼りっぱなしにしといてもらえないかな。

こいつ……(☝ ՞ਊ ՞)☝ウイーンしてやがる……!!

このロゴも好き。これも3年くらい貼りっぱなしにしといてもらえないかな。

ドア窓も


長津田検車区ウォッチ

メタモンで検索してきた人にはアレですが、長津田で降りて、そのままいつもの散歩コースをやったのでついでに長津田検車区ウォッチの話も。興味なかったら少しスクロールでもしてください。

さて例の追突事故で派手に擦っちゃった方の車両こと2135F。パンタを上げて、なんかやっています。1号車の床下の点検蓋を開けて確認か何かをしていました。どうするんでしょうねこの子。

西武への譲渡が進む中、わりと初期に離脱しながら何もなかった9020系9023Fが、扉を開けて何かをしているようでした。よく見ると正面のLED表示機がなかったり。

奥の方を見ると、鳥小屋からでは9400を1両引っ張り出している?なんでしょうね?

奥の方に向かっていたら、メトロ8000もいないのに菱形パンタグラフが?まさか……

まさかの8637F。いつもの絶妙に見えないところから、こんなところに移動して、しかもパンタを上げていました。隣の2020系も狙ったのかなんなのか37編成でした。

さらに歩いて川崎町田線の工事具合を眺めて、恩田へ。何アレでっっか!!?工場の建て替えで5階建てくらいになるみたいなのは見てたけど、実際鉄骨が組まれるとでかいな?!

恩田はとくに何も……いや、三越前ってなんだ?03ってまさか3月を表している?8606F、地味に方向幕でサービスみたいなのをしていて好き。ありがとうテクノの人


半蔵モン駅編

さてスクロールいただきありがとうございました。日曜日は半蔵モン駅も見てきました。リリースでも目立っていた駅の柱ジャックはホーム中央の数カ所だけでしたが、帰りに眺めていたら、ホームの端の方にも多少メタモンがいたような気がしました。

さすがに日曜日だけあって、家族連れがこれを目当てに写真を撮りに来ており、人が入りこまずに撮影するのは難しいかんじでした。カメラを持ってきていたけれど、ここはスマホで軽く撮って、散歩の時にカメラを使いました。


散歩

半蔵門で居りて、外堀内堀を南回りでぐるっと歩いて、最終的に東京駅まで到達しました。意外とさらっと歩けるもんですね。

結局このあとは秋葉原を見て回って帰ってきました。アキバ用事ないわと思ったけど、多少はあったのを思い出せて良かったです。

なお

ぽこあポケモンを買うどころかSwitch2を買う予定すらないのでした。おい。

ポケスリは今週初めてワカクサでマスター20を達成できました。やったぜ!

OSC2026 Tokyo/Springレポート

先週末(2/27-28)はOSC2026 Tokyo/Springでした。1年ぶりの駒澤大学での開催でしたが、個人的にはこちらの方が浅草よりも近く、大変助かります。おかげで、1日目に寝坊をしても、余裕でリカバーできました。前日設営の空き時間でブース設営済みだったのもありますが。

そして、この週末は本来雨の天気予報でしたが、当日は予報が外れて、日中の日向は上着無しでも過ごせそうな晴れになりました。


今回のブース

今回は物販ができたので、Raspberry Pi ブースのほかに個人のブースもかまえて、コミケくらい気合をいれて同人誌頒布ブースを設営してみました。布まで敷いたのはOSCでは初めてくらいあるかも?冬コミでつくったポスターとポスタースタンドも出動です。ポスターの下にぶらさがっているのはPokemon Go++。土曜日がイベントと被っており、申し訳程度に自動で狩りをしていました……。

頒布結果は、冬の新刊は持ち込んだ10部が2日で完売できました。ありがたや。他の本もぼちぼち。ありがとうございました。

そして、Ejectの展示物は2019年に製作したEjecTeaを再現したものを出しました。経緯は後述のLTにも書いた通りですが、Misskey.ioでこれを擦りまくっていたらFediverse外人ニキがXに無断転載をして、それもちゃんとバズっていたので「まだ擦れるな」と思った次第。3Dプリントで作り直したのがアップデートポイント。これは別途、LTとも別途、ブログでちゃんと記事を書きたいところ。

ちなみに動画はこんな感じで。おもろかったらいいねを押しといてね。

www.youtube.com

そしてRaspberry Piブース。いつも通りに見せかけて、ちょっと出し物を変えています。家が近いのでやれるエディション。

Inky Impression 7.3''を家から持ち出してみました。地方発送してパネルが割れたら嫌なので、今回が初出展でした。Pi 500も、スペースとか電源とかの都合で持って行ったり行かなかったりしていますが、今回は持って行きました。この方が500+と比較もできて良いですからね。ちなみに、Pi 500を持っていかないときのOSCは、Pi 4あたりがトイレサイネージを担当しています。

2日目に追加した「はよねろアラーム」。自宅で実稼働しているものを連れてきて、現場で鳩時計として動いてもらっていましたが、まあ普通に聞こえなかったと思います……wちなみに最近PiZero 2Wにリプレースされました。

細かなところで言うと、Pico Jumboの実演は省略してみました。ホントは動いてるとなお良しではあるんですが、設営コストが地味に高く、使っていたLEDも元々はPCD8544 HATの回路試作用のやつで、雑がすぎるので。結果的には、触って動かしても電源ケーブルがなくて安全になったので、問題はなさそうでした。改良はまたそのうち考えますかね。

Raspberry Pi Official Magazineの布教活動もぼちぼち。なんか作ってるという人にはMakerMondayをすかさず紹介するなどしてみました。教えてもらったんで送ったら載りましたっていう人、ちょいちょいいるんですよ。

LT「EjecTea 2026」

LT開催週の初め頃、たまたまLTのリンクをタイムラインで見かけて見に行ったら、全国各地のOSCやら何やらの告知ばかりで、これじゃ聞く方がなあと思い、勢いでLTに申し込みました。ちょうどEjectネタをやろうと進めていた頃だったので、そのままEjecTeaネタをやってきました。OSCのLTは久しぶりかも。最近はまあいいかと言って片付けに回りがちだったので。

speakerdeck.com

告知は後から3分枠としてまとめられましたが、北海道の番ではくすけさんが北海道のLTの雰囲気をいい感じに持ってきてくれたのが印象的でした。偉業。

懇親会

2日目の夜は学食で懇親会。そうだ、ここの懇親会はご飯がうまいんでした!

おしゃれ!

佐々木さんからはサックラのご提供。5箱も……!

Bar rootも健在。VTuber白銀ノエルコラボのクラフトジン。普通に美味しかったです。なぜか最後にケースが捨てられかけていて、私が持ち帰ってきましたが、どうするんだこれ。

お酒紹介をする宮原さん。笑顔すぎる🤣

死後さばきにあう瓶は日本酒でした。

わりと珍しく、今回は二次会まで参加。近くの中華屋さんで紹興酒をキメて、泥酔で帰宅しました。

誰かに撮ってもらった自分の写真でシメということで🤣

Pimoroni Micro Dot pHATをMicroPython系に移植してRaspberry Pi Picoで動かす

昔々、Pimoroniが出していたMicro Dot pHAT(現在は廃盤)が、個人的にはいまもお気に入りでとは言えずっと引き出して眠っていたのですが、いよいよRaspberry Pi Picoで動かしたくなったのでやりました。

成果物はオリジナルのリポジトリをフォークして、別ブランチとしてpush してあります。まずはCircuitPython。

github.com

今回はMicroPythonも作ってみました。ライブラリのコードにほとんど差がなく、どちらのPythonかの情報も取得できるので、頑張れば共通化できそうだなと思っているところです。

github.com

やったこと

大雑把にやったことは以下の通り。先にCircuitPython版を作って、後からMicroPython版を作りました。

  • ライブラリからnumpyを使用したコードを除去(Copilotにやらせました)
  • Copilotがミスってたところを修正
  • ライブラリの関数をクラス化
  • サンプルの更新
  • MicroPython版も作成

オリジナルのライブラリではnumpyが使われていましたが、組み込み系Pythonにそんなものはない(似たようなやつはいくつかあるらしい)ので、numpyを使わないコードに変換する必要があります。基本的にはバッファのxyをどうこうするような処理に使われているはずですが、numpyがわからないので、今回はCopilotにやらせました。

Copilotにやらせた結果、Pythonの配列操作とループに置き換わりました。サンプルも概ね問題なく動くましたが、一部挙動が違うところがあったので、そこは自分でxyをどうこうしているコードをにらめっこして修正しました。

ライブラリは元々Raspberry Pi用なので、I2CのGPIOピンの番号のことは考えなくて良いように作られてありましたが、組み込み系Pythonの場合、GPIOピンの位置を指定できたほうがうれしいので、そのように作り変えました。Micro Dot pHATは0x61〜0x63の3つのI2Cデバイスがあり、それぞれ初期化する時にSMBusが呼び出されていましたが、同じことをCircuitPythonではできなかった(何回もI2Cを初期化しようとすると怒られる)ので、コード側でI2Cを初期化して、それをライブラリに渡して使うようにしています。I2Cをライブラリにわたすには、元の状態では関数がベタッと置かれている状態で不都合だったので、クラス化をしました。この結果、関数の使い方が少し変わりましたが、「クラス.元の関数」に書き換える程度で済むので、そこまで影響はないでしょう。以上を踏まえて、初期化のコードは次のようになりました。いいね。

import board
from busio import I2C
from microdotphat import MicroDotpHAT

bus = I2C(board.GP5, board.GP4)
mdp = MicroDotpHAT(bus)

あとはこれを全部のサンプルに適用します。時計サンプルのclock.pyはネットワークを使わないと時刻が取れないので、Wi-Fi接続とNTPの時刻同期のコードを含めたりしています。いっこ、advanced_scrolling.pyだけは、オリジナルの文字の量ではRAMが不足するらしくずっこけるので、文字数を減らさない限り実行不可という感じです。

MicroPython版は、busioがmachineに変わり、boardのインポートとI2Cのピン番号指定が不要になった程度で、大差はありません。ただし、ドキュメントには書かれているはずのsys.atexit()が呼び出せなかったため、もし使えたら使うようにして、使えなかったら使わないようにするようなコードを追加しています。現状は使えないので、コードを停止しても自動で消灯はしてくれません。

動作のようす

動作の様子は先日のOSC大阪のレポートにも貼った通り。基本的には自作のuHAT Porter Picoで動かしていますが、もっと小さいやつで直接繋いでも良いかもしれません。

昔作った為替表示アプリを移植してみました。使用しているAPIは新たに見つけてきたサービスのものを利用していますが、他はほぼ一緒です。他に大きく変わったのは……為替のレートですかね(スゥーー……)。

youtu.be

スクリプトはこちらに置いてあります。

github.com

まとめ

Micro Dot pHATを組み込み系Python on Raspberry Pi Picoで動くようにしてみました。昔もやろうとして「numpyの除去なぁ」と思って放り投げていたのが、AIにやらせたらほぼ一瞬で片付いたので、これはAI様々案件だったかもしれませんね。

引き出しの奥でMicro Dot pHATを眠らせている方は、Picoでまた動かしてあげてみてください。

uHAT Porter Picoは、スイッチサイエンスさんで委託販売中です。あわせてぜひ。

uHAT Porter Pico — スイッチサイエンス