Raspberry Pi Compute Module 5を買ったのでレビュー

Raspberry Pi Advent Calendar 2024の14日目です。今日はこちらのブログに投稿です。

先月末に発売されたRaspberry Pi Compute Module 5を買ってみたのでレビューしていきます。

最初に言うと、CM5は技適がまだなので、今回は電波暗箱で検証しています。技適未取得機器を用いた実験等の特例制度を申請して検証するのもアリだと思いますが、180日ごとに検証内容を変えてまで、技適マークがつくのをまたずに買うものかどうかは各自で判断が必要そうです。わたしの場合は、暗箱である程度検証が済んだら、無線チップはヒートガンで炙って剥がしてしまおうかと考えています。

Seeedさんでポチポチ

今回は、先に販売ページができてたSeeedさんで購入しました。ついでにSeeed XIAO RP2350が欲しかったのもあります。さらについででUSBハブもポチり。

CM5は、4GB RAM・32GB eMMC・無線ありモデルです。Dev Kitに含まれているのと同モデルのため、これがCM5の標準的なモデルに当たりのではないかと思っています。Pimoroniでは8GB RAMモデルなど別のモデルも展開されていますが、今のところ”無線なし”が売られているところは確認していません。よって、日本では現状は技適がないなりの対応が求められます。

IOボードは、購入時点では売られていなかったので、一旦はCM4のIOボードを流用する方向にしました。

しかし、もう少し待てば、PimoroniからIOボードとかも含めて一式が発売されていたので、焦らないで待てばよかったなあと後悔しました。あと、Seeedからの配送は2週間ほどかかり、Pimoroniで購入した勢の方が先に受け取っていたようなので、それもまた悔しみ。

外観とか

表面は冒頭の画像の通り。右上には、Pi5で登場した容量の表記があります。CM5はeMMCの概念もあるので、列は2つです。16GBはCM5のリリースでも触れられていましたが、シルク印刷は今のところ略されている模様。Pi 5で増えたRP1がどうなるか気になっていましたが、ちゃんと搭載されましたね。このおかげで、CM5でもUSB3.0が標準で使えるようになったのはいい話です。

裏面。CM4と比べると、チップ部品が増えた印象です。そして、部品の斜め配置も少し増えたなと言う感じです。eMMCはこちらに移動しました。CM5ではRP1チップが増えたので、追いやられた感がありますね。認証は、FCCIDとIC、KC IDの3つが見えます。PIPで確認するとFCC、CE、イスラエルとシンガポールしか確認できませんでしたが、KC IDって韓国だったような。

実際にCM4と並べて比較。下がCM5です。上のCM4がLite版なせいもあるとは思いますが、密度が違いますね。

表面もついでに比較。

側面。Pi 5では側面の加工が改善されてバリがなくなりましたが、CM5でも同じく側面がきれいな処理になりました。以前のモデルでは、届いてたらまず紙やすりで側面を削ったりしていましたが、そんな作業とはお別れです。

GbEのトランシーバーチップは、CM4から変わらず、BCM54210PEが採用されています。

無線チップも、RPi-RM0 Cモジュールが搭載されています。じゃあ技適とか問題ないんじゃないのって思うかもしれませんが、アンテナがCM5側にあるため、アンテナと込みで技適の取り直しが必要になると推測されます。これがRM2みたいに、アンテナも込みのモジュールだったら関係なくなるんじゃないかと思うのですが、そうはなってないし、推測の話をしてもしょうがないので忘れます。

ブートローダーEEPROMも、さりげなく裏面に移動していたので、いちおう。

さわるぞ!!

というわけでやっと本編(?)。実際に触っていきます。いつもJAMの開催スペースを提供くださっているミドクラさんから借用中の電波暗箱を活用させていただきました。

箱内の構成は、スイッチサイエンスさんの5A対応電源と、D-Sub9端子経由で有線LANで接続をします。今回使用したのはIOボードはWaveShareのCM4-IO-BASE-Bと、CM4-NANO-Bの2種類。前者はNVMe SSDの接続も含めた検証用で、校舎はeMMCの書き込み管理およびeMMCからブートして試験する用にしました。

CM4-NANO-Bを使用してeMMCに書き込む準備をした状態。箱の右側にあるUSB端子を経由してMacに接続します。有線LANはいらないですが、その後起動することも考えて一応。IOボードのBOOTスイッチをオンにしたら箱を閉じます。

eMMCへのRaspberry Pi OSの書き込み

eMMCにRaspberry Pi OSを書き込むには、usbbootリポジトリのrpibootコマンドを使用します。コンパイルの手順はREADMEに従ってください。

https://github.com/raspberrypi/usbboot

rpibootコマンドのコンパイルができたら、次のコマンドを実行して、USBケーブルを接続します。箱の外から伸ばしたUSBケーブルをMacに接続します。しばらくすると、eMMCストレージが見えるようになるので、後はRaspberry Pi Imagerで書き込みを行います。

$ sudo ./rpiboot -d mass-storage-gadget64

起動!

一度MacからUSBケーブルを抜いて箱を開き、BOOTスイッチを戻したら、電源ケーブルにつなぎ替えて箱を閉じます。箱の外のコンセントを接続して、Raspberry Piを起動します。

起動後は普通にSSHして、いつも通りに使えます。

IOボードの互換性?

今回使用しているIOボードは、いずれもCM4向けのボードです。USB3.0ポートはないため、USB3.0の性能を得ることはできませんが、USB2.0ポート、HDMIポート、LANポートは使えるようでした。LANはSSHで、HDMIはUSBキャプチャボードで、USB2.0ポートは適当なCircuitPythonなPicoボードで確認できました。カメラポートとかも確認すべきですが、今日は一旦割愛ということで。まあ、一通り使えていそうです。

USBキャプチャから得られたデスクトップ多少日本語化とかの調整をした後だけどなにもない

HSMIキャプチャの接続の様子。

NVMeのことを忘れていますが、これはIOボードをチェンジする必要があるので後述します。

eMMCの読み書き速度をみてみる

CM4では、eMMCの速度はややいまいちな印象でした。実際、ベンチマークを取ってみると、100MB/s以下と、もっさりめです。ちなみにベンチマークは https://pibenchmarks.com/ のテストを使用しました。

$ sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash
(略)
MMC Type: eMMC v4 (Embedded) - Manufacturer: Samsung/SanDisk/LG - Model: AJTD4R - Size: 14.3G
(略)
     Category                  Test                      Result     
HDParm                    Disk Read                 75.54 MB/sec             
HDParm                    Cached Disk Read          76.34 MB/sec             
DD                        Disk Write                32.1 MB/s                
FIO                       4k random read            7922 IOPS (31690 KB/s)   
FIO                       4k random write           7449 IOPS (29799 KB/s)   
IOZone                    4k read                   18428 KB/s               
IOZone                    4k write                  22075 KB/s               
IOZone                    4k random read            20386 KB/s               
IOZone                    4k random write           20903 KB/s               

                          Score: 4701

では、CM5ではどうかと言うと……早い!!シーケンシャルリードは300MB/s、シーケンシャルライトは100MB/sと、普通に使うぶんにはまず困らない速度になりました。ランダム性能も100MB/s前後で悪くないですね。これは意外です。

$ sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash
(略)
MMC Type: eMMC v4 (Embedded) - Manufacturer: Samsung/SanDisk/LG - Model: BJTD4R - Size: 28.6G
(略)
     Category                  Test                      Result     
HDParm                    Disk Read                 313.89 MB/sec            
HDParm                    Cached Disk Read          227.71 MB/sec            
DD                        Disk Write                109 MB/s                 
FIO                       4k random read            23594 IOPS (94377 KB/s)  
FIO                       4k random write           25006 IOPS (100024 KB/s) 
IOZone                    4k read                   45470 KB/s               
IOZone                    4k write                  69301 KB/s               
IOZone                    4k random read            44893 KB/s               
IOZone                    4k random write           56323 KB/s               

                          Score: 13136

NVMeはどう?

IOボードをCM4-IO-BASE-Bにチェンジして、NVMeの性能をみていきます。Jeffがすでにテスト済みらしいのですが、CM4向けのIOボードでもPCIe3.0x1接続でNVMeを使えるらしく、追試ということにして私も試してみました。

ちなみに、デフォルトのブート順はeMMCが先になっているので、EEPROMの設定を開いて、eMMCの順番を後ろにしておきました。

$ sudo rpi-eeprom-config -e

# Default BOOT_ORDER for provisioning
# NVMe -> USB -> SD -> Network
BOOT_ORDER=0xf2146

これでNVMeからブートするようになりましたので、PCIeのスピードを3.0に変更します。

$ sudo vi /boot/firmware/config.txt

[cm5]
dtparam=pciex1_gen=3

これで再起動して、ベンチマークを取ってみましょう。結果は……あれ、なんかリードが妙に遅いですね。ライトは早いんですけど。あと、ランダムリードも早いので、シーケンシャルリードだけなんかおかしいですね。SSSTC CL1-3D256-Q11 256GBを使いましたが、こいつが悪いのかしら。

     Category                  Test                      Result     
HDParm                    Disk Read                 156.65 MB/sec            
HDParm                    Cached Disk Read          125.58 MB/sec            
DD                        Disk Write                594 MB/s                 
FIO                       4k random read            155151 IOPS (620606 KB/s)
FIO                       4k random write           88658 IOPS (354632 KB/s) 
IOZone                    4k read                   243558 KB/s              
IOZone                    4k write                  198683 KB/s              
IOZone                    4k random read            62502 KB/s               
IOZone                    4k random write           232042 KB/s              

                          Score: 51281

というわけで、Samsung PM991a 256GBに変更して再テスト。結果は以下の通り、PCIe3.0x1っぽいスピード感を得られていました。ふぅ〜よかった。

     Category                  Test                      Result     
HDParm                    Disk Read                 748.64 MB/sec            
HDParm                    Cached Disk Read          664.08 MB/sec            
DD                        Disk Write                493 MB/s                 
FIO                       4k random read            208979 IOPS (835918 KB/s)
FIO                       4k random write           93090 IOPS (372363 KB/s) 
IOZone                    4k read                   208154 KB/s              
IOZone                    4k write                  173558 KB/s              
IOZone                    4k random read            57892 KB/s               
IOZone                    4k random write           193770 KB/s              

                          Score: 48226

既存環境でCM5をブートするときはそのままではUSB2.0が使えないので注意

既存環境でブートしてUSBデバイスを試そうとしたら、デバイスが認識しなくて「おや?」となりました。IOボードの五感の問題かと思ったらそうではなく、CM4ではotg_modeの設定を投入する必要があったのと同じように、CM5ではdwc2の設定が必要になるようでした。eMMCに導入した環境のconfig.txtには含まれていたので、古いバージョンからのアップデートでは自動挿入されないようです。それもそうか。

というわけで、既存環境にも設定を投入したところ、無事にUSB2.0ポートが認識するようになりました

[cm4]
otg_mode=1

# [cm4]と[all]の間あたりに差し込んでおく
[cm5]
dtoverlay=dwc2,dr_mode=host

[all]

まとめ!

届いたCM5を早速舐め回してみました。一晩でざっと触っただけなので、まだ全然見きれていないですが、CM5は逃げるわけではないので、ゆっくり触っていけたらと思っています。

そう、冬コミの執筆が終わったら、ゆっくり触りたいンゴね……(死)

Raspberry Pi 500リリース

Raspberry Pi Ltd. は12月9日に、Raspberry Pi 500をリリースしました。

https://www.raspberrypi.com/news/raspberry-pi-500-and-raspberry-pi-monitor-on-sale-now

「Raspberry Pi 500」は、Raspberry Piがキーボード一体型となった「Raspberry Pi 400」のRaspberry Pi 5版にあたるモデルです。スペックは基本的にRaspberry Pi 5相当ながら、RAMはPi 400の4GBから倍の8GBが採用されました。

単品モデルには、Raspberry Pi OSが書き込み済みの32GBのSDカードがバンドルされます。価格は90ドルです。

キットモデルは、本体、電源アダプター、マウス、MicroHDMI-HDMIケーブル、入門ガイド、SDカードとケースが付属します。価格は120ドルです。

Raspberry Pi 500は、各リセーラーを通じて販売されますが、日本では技術基準適合証明の取得が完了していないため、取得が確認されて、日本のリセーラーによる販売が開始するのを待つ必要があります。

日本のリセーラーはぞれぞれ、今後の販売予定についてアナウンスしています。日本語版も登場予定で、スイッチサイエンスでは価格を20,130 円としています。

KSY https://raspberry-pi.ksyic.com/news/page/nwp.id/144

スイッチサイエンス https://prtimes.jp/main/html/rd/p/000000184.000064534.html

Raspberry PI 公式モニターの発売

Pi 500との組み合わせを想定した、Raspberry Pi 公式のモニターも合わせて発売されました。15.6インチのフルHS IPSパネルとスピーカーを2つ搭載し、折りたたみ式一体型スタンドとVESAポイントも備えています。価格は100ドルです。

Raspberry Pi 400の価格変更

Raspberry Pi 400については、今後も継続して販売されることと、価格が改定されて値下げされることが、合わせて発表されました。

単品のモデルは、価格変更後の出荷分にSDカードが付属するように変更されながら、価格が70ドルから60ドルに下がりました。また、キットモデルも100ドルから80ドルに価格が変更されています。

Raspberry Pi Compute Module 5リリース

Raspberry Pi Ltd.は11月27日に、Raspberry Pi Compute Module 5(CM5)をリリースしました。

https://www.raspberrypi.com/news/compute-module-5-on-sale-now

Raspberry Pi Compute Moduleは、おもに産業向けに開発された、モジュール用のRaspberry Piシリーズです。CM5は、CM4のフォームファクターを維持しながら、Raspberry Pi 5に搭載されたRP1を搭載しており、CM4にはなかったUSB3.0x2ポートを新たにサポートします。CM4とは多くの後方互換性がありますが、USB3.0ポートを搭載する代わりに2-lane MIPIインターフェイスが削除されるなど、いくつかの変更もあります。

CM4と同様、RAMの容量、eMMCストレージ、無線の有無に応じた多数のバリアントが存在します。RAMは2/4/8/16GBの4種類(16GBが追加。2025年に発売予定)、eMMCは0/16/32/64GBの4種類(64GBが追加)が選択可能です。これらの組み合わせに応じて、45ドルから135ドルで販売されます。

CM5に合わせて、CM5用パッシブクーラー(ヒートシンク)が5ドル、CM5用の新たなIOボードが20ドル、IOケースが15ドル発売されます。

さらに、CM5本体(無線あり・4GB RAM・32GB eMMC)といくつかのアクセサリをセットにしたDevelopment Kitも130ドルで発売されます。

CM5と関連アイテムは認定リセーラーを通じて販売されます。また、無線付きモデルは、日本では技術基準適合証明の取得が完了していないため、取得が確認されて、日本のリセーラーによる販売が開始するのを待つ必要があります。

※CM5は産業向けのため、希望のモデルが個人向けショップで購入できるとは限らない点にご注意ください。

Raspberry Pi Pico 2W リリース

Raspberry Pi Ltdは11月25日、Raspberry Pi Pico 2Wをリリースしました。

https://www.raspberrypi.com/news/raspberry-pi-pico-2-w-on-sale-now

Raspberry Pi Pico 2Wは、8月にリリースされたRaspberry Pi Pico 2の無線機能搭載バージョンです。

Pico 2と同様に、RP2350A マイクロコントローラーを搭載しており、QSPIもPico 2と同じく4MBを搭載します。

また、GPIOピン、ソフトウェアの互換性、無線コントローラー(CYW43439 2.4GHz無線LAN / Bluetooth 5.2)は、Raspberry Pi Pico Wと同様となります。

Raspberry Pi Pico 2Wの価格は7ドルで(参考: Pico 2は5ドル、Pico Wは6ドル)、Raspberry Pi認定リセーラーを通じて発売されます。

なお、日本での販売については、技術基準適合証明の取得が完了していないため、取得が確認されて、日本のリセーラーによる販売が開始するのを待つ必要があります。

記事の中では、すでにPimoroniでいくつかの製品に採用・販売がされているものの、まだ正式にはリリースされていないRaspberry PiのRM2無線モジュールについても、近日中に発売予定と言及されています。

RP2040とネットワークチップが合体! WIZnet W55RP20-EVB-PICO レポート

はじめに

こんにちは、tnishinagaです。

今回はWiznetの新製品W55RP20-EVB-PICOをいただいたので、遊んでみようと思います。

要約

  • W55RP20はW5500とRP2040とFlashが1パッケージになったもの
  • メリット
    • チップ面積が減るので基板をつくる人にはサイズメリットがあるかも
  • デメリット
    • W5500とRP2040間の通信にPIOが必要
      • 代わりにSPI0は不要。一長一短。

W55RP20

W5500は韓国のWIZnet社で作られているマイコン向けのネットワークチップです。
TCP/IPの通信の大部分をハードウェアが行ってくれるので、プログラムサイズや処理コストなどを抑えつつ外部とのネットワーク通信が行えるようになります。
たとえば、有線LANに繋がるIoTデバイスをマイコンで作りたい場合などに重宝するでしょう。

W55RP20はこのネットワークチップW5500と、Raspebrry Pi Picoに載っているRP2040とFlashを1パッケージにまとめた製品です。
1パッケージにまとめるメリットとしては、中身のW5500とRP2040とFlashを別々に基板に乗せる場合に比べてチップ1枚分の面積が減らせて基板を小型化できたり、配線をシンプルにできるなどがあります。私は趣味でRP2040の基板設計制作もしているので、個人的にも1パッケージになって面積や配線のコストが減るのは大変嬉しいです。

EVB-PICOの比較

(EVB-PICOの比較画像。3チップが1パッケージになって回路がだいぶスッキリしている。USB端子がType-Cになったのも地味に嬉しいポイント)

サンプルの動作

W5500-EVB-PICO向けのコードそのままでは動かない

W55RP20向けのサンプルコードは、2024/10/09現在以下の環境向けに提供されています(W55RP20-EVB-PICOページ より引用)

  • C/C++
    • Ethernet Examples
    • AWS Examples
    • Azure Examples
    • LwIP Examples
    • FreeRTOS Examples
  • MicroPython Examples
    • Ethernet Examples

私は普段embassy-rsというRust用のライブラリを使って開発をしているので、紹介されているサンプルではなくembassyのW5500-EVB-PICO用サンプルを試すことにしました。
W55RP20はW5500とRP2040がパッケージ内で接続されているだけなので、W5500とRP2040が使われているW5500-EVB-PICO用のサンプルはちょっと手直しするだけで動くだろうと思って試してみたのですが、うまく動きませんでした。なぜでしょうか?

W55RP20のW5500とRP2040の接続

W5500-EVB-PICO用のサンプルがW55RP20で動かない原因を探るため、W5500とRP2040の接続を公式サイトのsystem overviewより調べます。

W55RP20

(画像はW55RP20プロダクトページより引用)

この図によると、RP2040のGPIO20から25がW5500のSPIインターフェイスに繋がれているようです。
次にRP2040のGPIO20-25を見ていきます。

RP2040GPIO20-25

(rp2040のデータシートpp.237より引用)

データシートによるとRP2040のGPIO20-25にはSPI0の割当ができるので、SPIペリフェラル経由でW5500を制御できると思っていたのですが、うまく動きません。
結論を先にいうと、W55RP20でW5500を制御するためにはPIOでSPI通信する必要があります。

SPI0で通信できない理由

SPI0を使って制御できない理由はW5500とRP2040のピン配線にあります。
通常SPI通信を行うためには、マイコンとデバイス間のIO方向があうように接続が必要です。
しかし、W55RP20のサンプルコードよりSPIピン配置を調べてみると、RP2040のデータシートに記されたピン配置とまったく合いません。

(W55RP20のサンプルコード更新履歴より引用)

RP2040のSPI0を使う前提で図示したらこんな感じでばらばらになっています。どういうことでしょう?

ここでW55RP20のsystem overviewを見直してみると、SPI接続部に「PIO SPI」と書かれていました。

(画像はW55RP20プロダクトページより引用)

また、W55RP20対応時の差分を見直してみると、PIOのアセンブリが追加されていました。
つまり、どうやらRP2040のSPI0はピンの接続があわなくて使えないので、PIOを使ってピンを入れ替えてW5500を制御する必要があるようです。

サンプルコード作成と動作確認

制御のためにPIOのプログラムが必要とわかったので、早速作って動かしてみました。

とりあえず動かすことを目的にSPI MODE0のみ対応かつクロックもテキトーなPIOのコードを書いて、emabssyのwiznet driverで使えるようにSpiBus traitを実装してSPIデバイス部を差し替えています。
抽象レイヤーをちゃんとつかって作られているライブラリは、こういう入れ替えが簡単にできて嬉しいです。

ベースにしたembassyのtcp_serverのサンプルコードは、入力をechobackするだけの簡単なTCPサーバーを立ち上げるだけです。
動作の様子はこんな感じです。

サンプルコードは以下で公開しています。

https://github.com/tnishinaga/w55rp20_tcp_server_example

感想

実際に触ってみての感想です。

  • チップ面積が減るのは基板をつくる人的には大変嬉しい
  • ライブラリが充実してくるまでは使いづらいチップかも
    • W5500制御のためにPIOでSPI制御プログラムを作るのはちょっと大変
      • デバッグ時に疑うところが増えるのも大変
    • 逆に考えればPRチャンスでもある
  • SPIの代わりにPIOが1つ使えなくなるのは一長一短
    • RP2350ならPIOが3つ付いてるので欠点にならないかも?
    • チップリビジョン変更時にSPI0でも制御できるようになると嬉しい

どこで買えるの?

公式通販サイトではcomming soonとなっていますが、digikeyではすでに買えそうでした。

チップ単体はまだ買えませんが、WIZnetさんが以下のような投稿をしているので近いうちに買えるようになると思います。楽しみですね。

Raspberry Pi SSD および SSD Kitsを発表

Raspberry Pi Ltdは10月23日にRaspberry Pi SSD および SSD Kitsを発表しました。

https://www.raspberrypi.com/news/raspberry-pi-ssds-and-ssd-kits

256GBと512GBの2種類が用意されており、SSD単品の場合は256GBが30ドル、512GBが45ドルとなっています。また、M.2 HATとセットになったSSD Kitの場合は、256GBが40ドル、512GBが55ドルとなっています。

なお、今月上旬には、A2クラスに対応した公式のMicroSDカードと、Raspberry Pi 5向けのバンパーも発表されています。

https://www.raspberrypi.com/news/sd-cards-and-bumper

Raspberry Pi AI Cameraをさわってみた

こんにちは、あっきぃです。

先日発売されたRaapberry Pi AI Cameraのサンプルをミドクラ様からお借りできましたので、さわってみたレポートをお送りします。

製品のようす

カメラ本体。カメラセンサーはソニーのIMX500という、2020年頃に登場したセンサーを使用しています。

一見すると今までのカメラモジュールと同じように見えますが、AI Cameraは、搭載されているIMX500カメラセンサー自体がAI処理を実行して結果を返すため、映像と結果を受け取ることも、結果だけ受け取ることもできます。後者を活用すれば、通信帯域を節約しながら物体検出を行ったり、プライバシーに配慮しながらデータを軽量に保存することも可能になります1。ちなみに、右側のパーツはレンズ部分に付属する保護カバー?のようです。使うときは外して使用するようです。

カメラセンサーの下にチップが見えていますが、これはRaspberry Pi PicoでおなじみRP2040チップです。以下は製品画像の引用2ですが、センサーの下はこうなっているようです。

こちらは特筆することはないのですが、カメラセンサーの裏側も。

パッケージと付属物はこちら。白いドーナツ状のパーツは、Camera Module2にも付属していた。レンズのフォーカス調整用リングです。カメラケーブルはPi 5で登場した、今までより硬めのケーブルが、Pi 5とZero系向けのものと、それ以外の従来モデル向けのものの2種類付属しています。

導入してみよう

今回はドキュメントのチュートリアルをそのまま試すだけとしたため、手順は以下のページを参照ください。

https://www.raspberrypi.com/documentation/accessories/ai-camera.html

とはいえ、OSを最新にアップデートして(カーネル、libcamera、Picamera2などをIMX500のバージョンに上げる必要があります)、imx500-allパッケージを導入するだけで遊び始められるため、比較的かんたんです。

動かしてみる

実際に動かしてみましょう。まずはRaspberry Pi 5を使用して、いろいろなサンプルを動かしてみました。カメラは、カメラケーブルにマスキングテープで針金(ケーブルを束ねるのに使われているネジネジのやつ)を貼り付けて、フレキシブルなケーブルにするハックと、スマホスタンドの組み合わせで固定しました。

まずはシンプルな物体検出のサンプル。最近はあまり見かけないような気もする、Raspberry Pi公式マスコットのクマ「Babbage Bear」が、きちんと「teddy bear」として認識されていますね。皆さんご存知でしょうか?Pimoroniで現在もふつうに購入できるので、気になる方はこちらです。

少し見づらいですが、ディスプレイの左下でhtopコマンドを実行しています。Raspberry Pi自体に負荷がそれほどかかっていない=カメラがAI処理をやっています。

こちらはスクリーンショットでちゃんと撮影してかつ、Picamera2バージョンの物体検出サンプルです。AI Cameraももちろん、Picamera2で開発できるのが利点の一つです。こちらのほうがhtopの結果が見やすいですね。ちなみに、左上のデモ実行の出力を見ると、Network Firmware Uploadという出力が見えますが、コマンドを実行すると、カメラにデータを転送する処理があり、起動までに30秒〜1分ほど時間がかかります。

こちらは人間のモーション検出デモ。これも先のデモも含め、AI Kitで同様のデモが実行できますが、ほぼ同じことがカメラだけでできています。おかしなポーズをとってもちゃんと認識していますね。

これはセグメンテーションのデモ。検出したものの物体に色をつけてくれるものですが、暗めの緑で色付けをされて、呪いにかかった人間のエフェクトっぽいなと思ったので、そんなポーズにしてみました。夜に試していたときの写真なので、実際に疲れているのですが。

他のモデルでも動かしてみる

AI Cameraのリリースの記事では、AI CameraはPi Zeroをふくむすべてのモデルで動作しますと言及されています。

The AI Camera can be connected to all Raspberry Pi models, including Raspberry Pi Zero, using our regular camera ribbon cables.

実際に、先日のMaker Faire Tokyo 2024のKSYブースでは、Raspberry Pi Ltdから来ていたMattさんがAI Cameraのデモを持参して展示していて、ここではPi Zero(おそらく2W)が使用されていました。

というわけでわたしもPi Zero 2Wで環境を再現してみました。ディスプレイはPimoroniのHyperPixel4を使用しました。

裏面。こちらのカメラの固定には簡易的に、厚紙とマスキングテープを使用しています。

MicroSDカードのセットアップは、あらかじめRaspberry Pi 5で済ませて、動作も確認してからPi Zero 2Wに移しました。が、どうやらこれではPiZero 2W上のRaspberry Pi OSがカメラを自動認識できないようです。ドキュメントのチュートリアルでも、「少し手を加えれば」という一文があるので、どうやら手を加える必要がありそうです。

With minor changes, you can follow these instructions on other Raspberry Pi models with a camera connector, including the Raspberry Pi Zero 2 W and Raspberry Pi 3 Model B+.

ドキュメントには記載がありませんが、はカメラを手動でも認識できるようにすれば良いので、つまり、/boot/firmware/config.txtに設定を追記すればOKです。

# この設定をコメントアウトする
# Automatically load overlays for detected cameras
#camera_auto_detect=1 

# ファイル末尾の[all]以下に追記
[all]
dtoverlay=imx500

# これはHyperPixel4用の設定
dtoverlay=vc4-kms-dpi-hyperpixel4

設定後にOSを再起動をしたら無事に認識してくれたので、試してみた結果がこちら。

動画で!

もちろん、PiZero 2WはRAMが512MBしかないため、デスクトップが起動するまで待たされたりしますが、起動してしまえば、動画のように物体検出の結果がすぐにでてきます。

AI KitとAI Cameraどちらにしよう?

公式のリリースでも言及されていますが、AI Kitはパフォーマンスの代わりにPi 5限定である一方、AI Cameraはカメラと一体になっているため用意するものがこれ一個で済んで、Pi 5以外のほぼすべてのRaspberry Piで使えます。

個人的には、手軽な入門としては、後者のほうが手軽そうな印象をもちました。

入手するには?

AI Cameraは各リセーラーを通じて販売される見込みです。観測している範囲では、KSYさんと、イギリスのPimoroniは未入荷です。スイッチサイエンスだけ昨晩に販売がありましたが、初回入荷分は少量だったようで、一瞬で完売してしまったようです(わたしはなんとか間に合って購入できました)。1万3千円ほどするのに、皆さん判断が早い……!!

そう言った状況のため、例によって当面入手が難しいと予想されます。AI Cameraが欲しい方は、リセーラーさんの入荷通知機能や、Pre-Orderを活用してみてください。

  1. https://www.sony.com/ja/SonyInfo/News/Press/202005/20-037/ ↩︎
  2. https://www.raspberrypi.com/products/ai-camera/ ↩︎

Raspberry Pi AI Camera発表

Raspberry Pi Ltd.は、9月30日にRaspberry Pi AI Cameraを発表しました。価格は70ドルです。

https://www.raspberrypi.com/news/raspberry-pi-ai-camera-on-sale-now

AI Cameraは、AI アクセラレータを統合したソニーのIMX500センサーを使用したカメラモジュールす。また、カメラモジュールのニューラルネットワークとファームウェアの管理にはRP2040が使用されています。

6月に発売されたAi Kitは、性能が高い代わりにRaspberry Pi 5専用でしたが、AI Cameraはコンパクトで、Raspberry Pi Zeroを含む全てのRaspberry Piに接続が可能です。

ソニーが提供するAIツールを使用すると、TensorFlowやPyTorchなどのフレームワークを使用したニューラルネットワークモデルを変換して、AI カメラで効率的に実行できるとしています。また、AI CameraはRaspberry Pi libcameraと統合されており、Picamera2やrpicam-appsなどのアプリケーションを通じて使用が可能です。

センサーの詳細やドキュメントは、AITRIOSの開発者サイトに掲載されています。

https://developer.aitrios.sony-semicon.com/en/raspberrypi-ai-camera

なお、ソニーからもニュースリリースが公開されています。合わせて参照ください。

https://www.sony-semicon.com/ja/news/2024/2024093001.html

AI Cameraは今後リセラーを通じて販売される見込みです。

https://raspberry-pi.ksyic.com/main/index/pdp.id/1098/pdp.open/1098

Raspberry Pi Pico 2およびRP2350がリリース

Raspberry Pi Ltdは2024年8月8日に、Raspberry Pi Pico 2 およびRP2350を発表しました。

https://www.raspberrypi.com/news/raspberry-pi-pico-2-our-new-5-microcontroller-board-on-sale-now

Raspberry Pi Pico 2は、RP2350を搭載した新しいマイクロコントローラー開発ボードで、外形やピン配置はPicoと互換性がありますが、RP2350の搭載によって、よりパワフルなボードになりました。価格は5ドルです。

RP2350は、RP2040の機能を強化した新しいマイクロコントローラーチップです。CPUはPicoで採用されていたデュアルArm Cortex-M0+@133MHzから、浮動小数点およびDSPをサポートするDual Arm Cortex-M33@150MhzもしくはDual RISC-V Hazard3@150Mhzに強化され、ArmコアかRISC-Vコアかのどちらかを選んで使えるようになりました。SRAMは264KBから520KBとほぼ倍になり、QSPI Flashも2MBから4MBと倍に増量しています。PIO state machinesは8から12に強化されています。

また、RP2350は60-QFNのRP2350Aと、80-QFNのRP2350Bの2種類が展開されており、RP2350Bの場合はGPIOが48個提供されます。さらに、2MBのQSPI フラッシュを内蔵したRP2354A / RP2354Bも展開されます。なお、Pico 2にはRP2350Aが搭載されます。

RP2350は、2024年末頃までに量産の開始が予定されています。今後RP2040の用にRP2350が入手可能になることで、サードパーティベンダーからRP2350を搭載した様々なボードが販売されたり、開発者は自分のボードに組み込んだりすることが可能です。

Raspberry Pi Pico 2は今後各認定リセーラーを通じて販売が開始されます。

KSY: https://raspberry-pi.ksyic.com/main/index/pdp.id/1094/pdp.open/1094
スイッチサイエンス: https://www.switch-science.com/products/9809

Raspberry Pi 4のリビジョンと消費電力の話

昨日はちょっと久々のRaspberry Pi JAM Tokyoでした。天気が悪くてどうなるかと思いましたが、ピークが前にずれたおかげで、移動してる間に雨がやんだのでなんとかなりました。よかったーー。

ミドクラさんのスペースの入口にJAMのロゴが入りました。すごい……!

参加人数は天気などの都合で参加できなくなってしまった人もいたぶん減ってしまいましたが、たこ焼きパーティをしながらラズパイの話とかとかラズパイじゃない話とかで盛り上がりました。

Raspberry Pi 4のリビジョンの話

昨日の発表はPi 5とかOSの近況をやったのですが、当日追加でつっこんで話したPi 4の話題をブログにもまとめなおしてみます。Pi 4は最初の発表から3回ほどリビジョンが変わっていて、現在はRev.1.5です。ざっくり以下の内訳です。Rev.1.3がないのは不明ですが、ボツにでもなったのでしょう……?。

  • Rev.1.1(2019/6〜): 最初。PD電源が使えない問題があった初期リビジョン。日本未発売なので大多数の日本人ユーザーには関係ない
  • Rev.1.2(2019/10〜12): PD電源が使えるように修正されたリビジョン。ここから日本で発売されるようになった。 
  • Rev.1.4(2020/5, 2021/1〜): 8GB RAM登場以降のデザイン。Dialogのsub-PMICが搭載され、TVSダイオードが移動した。2021/1〜はおそらく他のRAMのモデル?
  • Rev.1.5(2021/10〜): 現行。PMIXがMxLからDialog DA9090に変更された

カッコ内はおもに変更履歴のTransition Dateから引用(1.4の2020/5は8GB RAM登場時)ですが、現行リビジョンは2021年10月から移行ということになっていて、実はもう2年半くらい経過しているので、多分これを持っている人も多そうな気がしますが、半導体不足真っ只中だったので、そうでない可能性もあるような気がしています。どうでしょう。

変更履歴はRaspberry Pi Production Information Portal(PIP)で誰でも確認できます。

https://pip.raspberrypi.com/categories/560-pcn

また、手持ちのPi 4のリビジョンはcat /proc/cpuinfoコマンドで確認できます。

最新リビジョンが欲しい

わたしの場合、出たらすぐに買ってしまうので、最新リビジョンは持っていないことに気づきました。パーツが変わっても動作に変更はないはずですが、もしかして電力の効率が変わって省エネになってたりしたら嬉しいよななどと思ってしまい、しばらく悶々とした結局、我慢できずに買ってしまいました。

ヤフオクで1週間くらい出物を探し回り、マークしてたやつが値下げ再出品されたタイミングで即決落札して、ヤフオクのクーポンとPayPayのポイントを駆使しました。おかげで散財が軽減されました(セルフ暗示)。届いたのがこちら。赤枠部分がPMIC、MxLからDialogになっているのがわかります。

ところで、ヤフオクで物色するために見分け方を研究しまくっていたせいで、先日話題になっていた、ロシアで使われていたというPi 4も、瞬時に「こいつはRev.1.4以降…」と見分けられてしまいました。ちなみに、TVSダイオードがHDMI0の左にいなければRev.1.4以降です。

https://togetter.com/li/2385032

半導体不足でメイカー向けに流れなくてヒーヒー言ってるそばでロシアにRPiが戦争用途に流れてしまっていたのは遺憾(製品の規約でも元から禁止されている)です。ロシアには、やはりというか中国から流されているのがイギリス有料ニュース記事で指摘されていたようです。500万ドル分らしいので、4GB RAM(55ドル)と仮定して利益云々無視した単純な割り算をすれば約9万台となり、なかなかひどいお話です(なお、ウクライナ側も使っていたりするようで……?)。

https://forums.raspberrypi.com/viewtopic.php?t=368865

消費電力を見る

話を戻し「もしかして電力の効率が変わって省エネになってたりしたら嬉しいよな」を確かめるべく電力を測ってみます。USB電流計測器のUT70にPi 5の公式電源を入力して、OUTからPi 4に接続して、MicroSDからOSを起動します。起動が終わって落ち着いた頃の電流をチェックしていきます。

なお、OS側では、電源LEDオフと、無線の無効化の設定を投入しています。設定してない状態で比較すればよかったですね……。設定方法は私のブログのほうで触れています。

また、EEPROMのバージョンも全部そろえてあります。

Rev.1.2

これだけRAMが4GBですが(このリビジョンに8GBモデルはない)それは見なかったことにしつつ、結果は358mAでした。

Rev.1.4

8GBがでてすぐに買ったやつです。結果は353mA。誤差かもしれないけど、Rev.1.2よりも5mAくらい低いかも?

Rev.1.5

これも8GB RAMです。なんと285mA!?50〜60mAも差があるのですが、なんですかこれは?

ついでにRev.1.1

昔Pimoroniで2GB RAMを買ってみたら、まだ在庫のRev.1.1があったらしく来ちゃったやつもいちおう試してみます。技適はないことになっているので、ここでは念のため暗箱に投入します。特例出すよりこっちのが出すだけで早いので……。なお、今回からミドクラ様からユーザー会に貸与いただいた暗箱を使用しています。ありがとうございます。そしていきなり個人的な興味のために使ってしまいすみませんでした。

雑に箱の中にiPhoneをつっこんで、動画をとることでUT70の値を読むことにしました。

結果は390mA。1.5とは100mAも差がついてしまいました。さすがにこの結果をもってPi 4同士で買い替えることはないと思うのですが、Rev.1.1ユーザーはちょっと心揺れてしまいそうな結果です。

Rev.1.5ならSoCの温度も低い気がする

この消費電力ならと、アイドル時のRev.1.5のSoCに指を乗せると、やはりというか全然ぬるいことに気が付きました。初期のアツアツはどこへやら。SoCに指を載せては「熱くて触れない!」などと言われがち(どうしてそんなことを?)ですが、そんな一部な方にもぜひ触ってみて欲しいです。ちなみに45.7℃でした。やっぱりぬるめ。

$ vcgencmd measure_temp
temp=45.7'C

まとめ

1万円ちょっとでただ知的好奇心を満たしました。なんとなく想像だけで買ってみたものの、想定外に消費電力が減っていたのでビビりました。しかし散財である。

リビジョンアイドル時の電流(mA。無線と電源LEDを無効化した状態)
1.1390
1.2358
1.4353
1.5285
表でまとめ。

DA9090に変更後にそのような支店で見ている人がいるか探そうとしたら、フォーラムで「DA9090が壊れやすく、入手性がMxLよりも悪いため修理もできない」と騒いでいる、おそらく少数の人を見かけました。入手性はさておき、本当に壊れやすいならとっくに対策が入っているはずですから、無視して良いと思われます。

買ったPi 4は、デスクの上で動いているPi 2Bを置き換えるのに使おうと考えているところです。上に張ったカリカリチューニングのブログに書きましたが、Pi 2Bは現状340mAで動いているので、50〜60mAの節電をしながらRAMを8倍にできそうです。