ラズピッピACの11日目です。なんか続いてる。
Raspberry Pi Advent Calendar 2025 - Adventar
10日目はかぐらぁさんの「ラズピコでPS2対応の弐寺専コンをつくる」でした。Picoで昔の入力系デバイスをどうにかするの、良いですね。ロマンがあるー。
Raspberry Pi RM2モジュールのブレイクアウトを試す
Pimoroniのブラックフライデーの時に買った物が着弾しました。狙ったわけじゃないですが、これでACのネタがもちましたね。

TINY2350は自作キーボードのコントローラー用に買い足したものなので、ただのキーボードになります。RM2 Breakoutが今日の本題。
RM2は今年正式に発表された、Pico Wの無線LANの部分だけ切り出したやつです。
Pimoroniはその前からなぜか先行して搭載製品を販売していて、今回のBreakoutも去年から存在していましたが、今回はこいつと、これを接続するためのSP/CE用のケーブルをポチりました。
去年はRM2が載ったPico Plus 2Wの動作確認をやっていますが、これでやるのと、他のPico系につなぐのとではまた話が違いますからね。
というわけでこれがRM2 Breakoutです。スルーホールもありますが、SP/CEケーブルを使えばはんだ付け不要で他のデバイスに接続が可能という設計です。

技適はまだない
残念ながら例によってRM2の技適はまだ取得されていないため、「技適未取得機器を用いた実験等の特例制度」を利用しての実験となります。
https://www.tele.soumu.go.jp/j/sys/others/exp-sp/
FCC/CE以外はカナダとインド程度と、認証国が増えている様子があまり見られないので、日本が追加されるのはいつの日か……。
Python系のサポートもない
MicroPythonは実装が少し進んだところで止まっているようです。おしい。
CircuitPythonは、RM2の入手性を理由に実装が後回しの模様。ぐぎぎ。
Support for Raspberry Pi RM2 wifi / ble module · Issue #9777 · adafruit/circuitpython · GitHub
しかし、Pimoroniがビルドしているカスタム版MicroPythonなら利用できるので、今回はこれを使います。ホントはPicoでやりたいのですが、network.WLAN()にピン番号指定ができる変更が入ってるのはPico Plus 2向けだけのようなので、pimoroni_pico_plus2-v1.26.1-micropython.uf2を使用しました。Pico2W向けでもだめらしいです。
GitHub - pimoroni/pimoroni-pico-rp2350: MicroPython builds for Pimoroni Pico 2 / RP2350 boards.
接続
Pico2に接続した様子がこちら。

配線の内訳はこうです。SPIっぽいのでSPIに合わせて配線していて、実際違うSPIの場所につなぐと動作NGになったりしたのですが、実際にはSPIではないらしい?です。よくわかっておらず。
| ケーブルの色 | 役割 | Picoへの接続先 |
| 赤 | - | 未使用 |
| オレンジ | 3V3 | 3V3 |
| 黄 | CSn | GPIO1 |
| 緑 | SCLK | GPIO2 |
| 青 | DATA(IN/OUT/WAKEの3つに指定) | GPIO0 |
| 紫 | WL_ON | GPIO3 |
| 茶 | RM2のGPIO0 | 未使用 |
| 黒 | GND | GND |
こちらのコードをベースに、GPIOの設定を追加したバージョンを作ります。
import network import requests from time import sleep wlan = network.WLAN(network.STA_IF, pin_on=3, pin_out=0, pin_in=0, pin_wake=0, pin_clock=2, pin_cs=1) wlan.active(True) wlan.connect("ssid", "passphrase") print(wlan.ipconfig("addr4")) mac_address = ubinascii.hexlify(wlan.config("mac"), ':').decode() print(mac_address) while wlan.isconnected() is False: print('Waiting for connection...') sleep(1) request = requests.get('http://catfact.ninja/fact').json() fact = request['fact'] print('Cat fact!') print(fact)
実行するとこんな感じ。無線LANに接続できて、IPアドレスが取得できました。サンプルのコードでURLから取得しているのは、猫のうんちくみたいなのを垂れ流す謎APIのようです。
Waiting for connection...
(中略)
Waiting for connection...
('192.168.29.125', '255.255.255.0')
28:cd:c1:XX:XX:XX
Cat fact!
A cat only has the ability to move their jaw up and down, not side to side like a human can.
もっと小さく
Pico2につなぐならPico2Wを使えばいいじゃんという話になりますが、そもそもRM2は、自分でRP2040/2350を組み込んだ基板とかに載せて使われることを想定しています。なので、本来的にはPicoのスルーホールでは提供されていない、Pico Wで使われるのと同じGPIOに接続すれば良いことになっています。
ただ、あいにくその予定はないので他のケースを考えると、例えばPico以外のRP2系のボードとかに載せられれば便利になるかもしれませんね。意外と無線を搭載していないボードとかはありますし。
というわけで、TINY2350につないでみました。サイズを追求する代わりに無線は搭載されていないので、TINY2350向けにアドオンボードなんかが作れたら楽しそうです。まあ、Seeed XIAO ESP32C3あたりを使えと言われればそれまでですが、いいの!
そして接続した様子がこちら。GPIO 0〜7はPicoからGNDを抜かした以外同じ配列なので、隙間を詰めて差し替えるだけでした。ファームウェアは先程と同じpimoroni_pico_plus2-v1.26.1-micropython.uf2を使用します。

結果は問題なく動作。フーム、こう言うのを見ると、コンパクトなやつが作れそうだな?というインスピレーションが沸いてきそうです。
ちなみに、本来はWaveShareのRP2040-LCD-1.28に載せてみたくて、その検証用に買ったのですが、RP2向けで使えるMicroPythonが見当たらなかったので、一旦断念という感じです。動くことがわかってから変えと言われればそうなのですが。これで動くのがわかれば、RM2が載る拡張ボードとかも作れますね。絶妙に使いみちがなくて困ってるので、なんとかネットワーク接続に対応したいところ。つって、有線LANに対応したやつも使い所を思いつけなくて放置してるので、もうこれ自体だめなんじゃないかという説も。
今後に期待、技適は早くくれ
手軽に扱うためのPython系の実装が見当たらないので、私は一旦様子見という感じになりそうです。実装オナシャス。
……というパッとしないブログを読まされてきて「じゃあいまいちっぽいし、技適も来ないんじゃね〜」と思うじゃないですか。でも海外ではRM2を組み込んだ面白そうなブツがポコポコ作られていくわけで、そうなった時に日本じゃ使えねえ〜!となってしまうので、技適自体は頑張って取得いただきたい次第です。
先行でRM2採用製品を作ってきたPimoroniはつい最近、新たにバッジシリーズ「Badgeware」を発表してきました。Badger2040とかのシリーズをアップデートしつつ、RM2を載せた製品になっています。
個人的にはBlinkyが気になっています。

裏面、RM2とかバッテリーとかが見えますね。

……みたいな、いい感じアイテムが出てきても、特例を使わないと日本じゃ使えないよ〜、都度検証内容書くの面倒だよ〜!なんてことになるので、技適はよ頼む〜!という感じです。








