Raspberry Pi Camera Module 3を触ってみる

あっきぃです。昨日発売されたRaspberry Pi Camera Module 3のサンプルがおおたさんから送られてきましたので、レポートをしていきます。リリース情報の概要は昨日の記事を確認してください。

形状を見る

中央のケーブルがついたものがCamera Module 3です。左が初代、右が2代目、上は参考までにArduicamの16MPオートフォーカスカメラです。基板サイズは2代目と変わりありませんが、カメラセンサー自体は大きくなっているため、Raspberry Pi公式ブログのコメントでもやり取りがあるように、公式のPiZeroケースとは互換がないようです。

続いて裏面。まあ、こちらを見てもあまり面白みはないと言えばないのですが、Camera Module 3と2代目とで意外と回路デザインが変わっていないのは面白いですね。

最新のRaspberry Pi OSとlibcamera環境が必要

早速試していく前に、Camera Module 3を使用するには、最新のRaspberry Pi OS Bullseyeと、libcameraによるカメラ環境が必要な点に注意してください。

libcameraは、Raspberry Pi OS Bullseyeで利用が開始されて、旧来のraspistillやraspividコマンドなど(Legacy camera stackなどと呼ばれています)が置き換えられました。ただし、Picamera2 Pythonライブラリの提供が遅れたなどの理由により、旧来のコマンド等を使用するための方法が現在も提供されています。注意が必要なのは、この旧来のほうでは新しいカメラモジュールは利用できないということですね。

Camera Module 3リリース以前に構築されたRaspberry Pi OS Bullseye環境がある場合は、OSのアップグレードをしておきましょう。また、Picamera2 Pythonライブラリも合わせて触ってみたい場合には、以下のコマンドでインストールできます。

$ sudo apt install python3-picamera2

オートフォーカスを試す

まずはlibcamera-helloコマンドで画面に出しっぱなしにして、動きを見てみましょう。コマンドに–autofocus-modeが追加されており、これを使ってオートフォーカスを有効にできます。

$ libcamera-hello -t 0 --autofocus-mode continuous

この状態でカメラに遠くのものを映させたり、手で遮ってみたりすると、フォーカスを自動で合わせてくれます。手元のスマホなら当然の動きですが、Raspberry Piでも手軽にできるようになったのは感動ですね。

天井です。

なにもない天井をきれいに映しているカメラにRaspberry Pi Picoをかざすと、Pico……よりも手にピントが合いましたね。

指のシワが鮮明
Picoをより近づけても指のほうが鮮明

オートフォーカス中のカメラモジュールはこのようにレンズがモーターによって上下しています。

手をかざすとレンズが上下に動く

写真を撮影するときはlibcamera-stillコマンドで撮影します。こちらもオートフォーカスに関するオプションが追加されているため、それらを使用可能です。

$ libcamera-still -o af1.jpg --autofocus-mode continuous

マスコットを撮影してみました。

「有隣堂しか知らない世界」からブッコローのキーチェーンと回転寿司皿。どちらもSTORY STORY YOKOHAMAで買えます

ここで、ぬいぐるみを避けてもう一枚撮影すると、背景に使っていたダンボールにピントが合って、「こわれもの」の文字が鮮明になりましたね。

皿とダンボールだけ

HDRモードもすごい

もうひとつ、HDRモードも注目すべき機能です。異なる露光時間で複数同時に露光をして、センサーがいい感じに合成をしてくれるものです。これもスマホでは普通に使える機能ではありますが、Raspberry Piで手軽に扱えるようになりました。

まずはHDRが無効の状態です。室内で飼育中のメダカですが、日当たりが良いので室内で撮影すると逆光に近い感じになります。

奥の水槽と別に、手前の鉢にも生まれた時期が違うメダカがいます。

HDRモードを有効にするには、–hdrオプションを付け足すだけです。

$ libcamera-hello -t 0 --autofocus-mode continuous --hdr 1

$ libcamera-still -o hdr.jpg --autofocus-mode continuous --hdr 1

HDRを有効にして撮影すると以下のようになります。水槽のメダカが明るくなり、手前の鉢も明るく写って見えるようになりました。

全体的に明るくなりました

なお、HDRモードを有効にした場合は、解像度が1/4になる点には注意です。上記画像も、4608 × 2592ピクセルから2304 × 1296ピクセルになっており、1/4ピクセルになっていることが確認できました。上の画像を新しいタブで開いて比較してみてください。

ちなみに撮影風景はこちら。比較で使用したArducamのカメラモジュールから奪い取ったカメラメースと、100円ショップの三脚を組み合わせています。

購入するには

国内ではすでに認定リセーラーのKSYさんが発売を開始している他、スイッチサイエンスさんも販売に向けて準備中のようです。

KSYさん

個人的に広角版が気になったのでイギリスのPimoroniで注文をしましたが、KSYさんが販売開始していたのを見落としていました……。私が広角版を触れるのは再来週くらいになりそうです。しくしく。

また、NOIR版についてはPimoroniを含めてまだどこも入荷していないようなので、こちらは少し待つ必要がありそうです。
(1/16追記)KSYさんでNOIR版の取り扱いが開始したようです。 https://raspberry-pi.ksyic.com/main/index/pdp.id/908,909,910,911/

まとめ

Raspberry Piの新しいCamera Moduleの簡単なテストレポートでした。近年のスマホならどれも当たり前になって久しい機能ですが、当たり前になって久しいことで、枯れたカメラセンサーもRaspberry Piのカメラモジュールとして採用できる価格にまでなったと言えます(これまでのRaspberry Pi製品に組み込まれた各モジュールにも言えることではありますが)。

ちなみに、Sony IMX708センサーは、ググってみるとOPPO Find X2、OPPO Reno4 Proなど2年半〜3年前のスマートフォンに採用されていたようです。こうして見ると枯れたと言うにはまだ早い気もしますが、こうしてRaspberry Piで触って遊べるようになったことは大歓迎ですね。

Raspberry Pi Camera Module 3リリース

Raspberry Pi (Trading) Ltdは2023年1月9日に、Camera Module 3をリリースしました。

Camera Module 3はオートフォーカスやHDR撮影に対応した12メガピクセルのSONY IMX708イメージセンサーを採用したカメラモジュールです。従来の通常モデルとNoIRモデルに加えて、それぞれに広視野角モデルが追加され、4種類のカメラモジュールが販売されます。通常の視野角のモデルは各25ドル、広視野角モデルは各35ドルで、認定リセラーを通じて販売されます。

なお、Camera Module 3の利用にあたっては、最新のlibcamera環境及びPicamera2 Pythonライブラリが必要で、レガシーカメラスタックでは利用できない点に注意が必要です。

また、Raspberry Pi High Quality CameraのM12マウントマウントバージョンも合わせてリリースされています。価格は50ドルです。

無線LANが搭載された Raspberry Pi Pico W で遊ぶ

本日発表されたRaspberry Pi Pico W(以下、Pico W)は、これまでのRaspberry Pi Pico(以下、Pico)に無線LANが追加されたバージョンです。Raspberry Pi Zeroに無線LANが搭載された時と似た流れを感じますね。

Picoで遊んでいると、ネットワーク接続が欲しくなることがよくあったため、Pico Wはある意味で待望のリリースと言えそうです。

今回もサンプルをお預かりしましたので、さっそく遊んで、もとい、色々試していきます。

外観

外観をPicoと比べてみます。左がPico W、右がPicoです。

まずは表面。Picoと比べると、四角い銀色のパーツとアンテナが増えたのが分かりやすい変化です。アンテナの配置の都合で、DEBUGのスルーホールが移動してしまったため、これがあることを前提とした基板を作成している人は要注意かも知れません。

Picoで他に惜しいポイントだった、MicroUSBと、RESETボタンがない点は変わりませんでした。(※右のPicoにはPimoroni Captain Resettiが増設されています)

Raspberry Pi Pico W(左)とRaspberry Pi Pico(右)

つづいて裏面。Picoよりも各種認証や権利関係のロゴと文字でいっぱいになりました。EUを離脱したイギリスの適合性評価マークであるUKCAロゴが加わった点は、イギリスの製品らしい新たな特徴です。基板の余白が少ないため、今後日本で技適が取得されても、基板への直接の印字は難しそうです(他の国などもそうですが……)。

基板裏面(並びは表面と同じ)

MicroPythonファームウェアの用意と書き込み

今回はかんたんな例として、HTTPサーバーを動かして、BME280のセンサーデータJSONで提供するAPIと、それを毎秒取得してデータを表示するようなHTMLを提供する、MicroPython向けのスクリプトを作成しました。スクリプトはGitHubに配置しました。

今回はPimoroniのBME280ライブラリを使用するために、ライブラリを組み込んだPico W向けMicroPythonファームウェアを自前でビルドして使用しました。ビルドの詳細は割愛しますが、MicroPythonのビルドは初めてで、少し苦労しました……。Pico Wリリース前だったため自前ビルドをしましたが、リリース後はきっとPimoroniからPico W向けのファームウェアが提供されると思われるので、今後はそちらを使えば良いでしょう。

さて、Pico Wのテストには、スイッチサイエンスさんからお借りしているいつもの電波暗箱を使用しました。ファームウェアを書き込むには、BOOTSELボタンを押しながら通電する必要があるため、洗濯バサミでボタンを挟んだ状態で暗箱に設置して、電波暗箱の外から書き込みを実行しました。書き込み後はケーブルを抜いてから電波暗箱を開き、洗濯ばさみを外しました。これで準備は完了です。

ファームウェアの書き込み

電波暗箱の無線LAN環境の構築

電波暗箱の中では当然ながら外の電波は遮断されて、部屋の無線LANが使用できません。そこで、Raspberry Piとhostapdを使用した無線LANのブリッジを作成して、それを電波暗箱の中に入れて、Pico WはRaspberry Piの無線LANブリッジに接続するようにします。

電波暗箱内でのテスト環境のようす

Thonnyからスクリプトを実行して、起動後にPico WのIPアドレスにアクセスします。すると、HTMLファイルが読み込まれて、毎秒センサーのデータが更新されました。

電波暗箱内のRaspberry Pi Pico Wをテストするようす

なお、電力チェッカーを使用して消費電力を確認したところ、無線LANに接続したあと何もしていない状態では0.02A、データを転送している最中では0.08A前後となりました。

転送速度の調査

Pico Wの転送速度を調べるために、/longにアクセスされたら500KBくらいの文字列を送るようにスクリプトを少し改造しました。これを無線LANブリッジのRaspberry Piからcurlでダウンロードして、平均ダウンロード速度を確認しました。

akkie@raspberrypi:~ $ curl http://192.168.2.21/long -o /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  500k    0  500k    0     0  43708      0 --:--:--  0:00:11 --:--:-- 44116

結果は約42.7KB/秒となりました。軽量なHTMLやJSONデータを読み込むには問題ない速度で、実用的そうです。

vs Pimoroni Pico Wireless Pack

Pimoroni Pico Wireless Packは、Pico向けの無線LAN機能拡張ボードで、ESP32を使用して無線LAN接続を使用するため実現します。Pico Wが出る以前のPicoではこのような拡張ボードが必要でした。

まず物理的な比較をすると、Picoのピンがボードで覆われるため、他のボードと同時に使うにはPimoroni Pico Omnibusのような拡張ボードが別途必要になり、作品も大きくなってしまいます。Pico Wであれば、無線のためにピンを使うことはなくなるため、見た目をスッキリさせられます。

Pico Wと、PicoとPico Wireless Packの組み合わせを並べたようす

続けて転送速度です。Pimoroniのサンプルスクリプトをベースに、先ほどと同じく文字列をたくさん転送するスクリプトを作成して、curlでダウンロードして調べます。

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 10240  100 10239    0     0   1424      0  0:00:07  0:00:07 --:--:--  1467

結果は1.4KB/sで、Pico Wの1/40になってしまいました……。実際に別の用途で使用したときもHTMLの転送にとても時間がかかっていたため、改めて数字にしてみるとなかなか遅いです。

最消費電力です。BME280のセンサーを読み出してネットワーク通信するようなスクリプトを動かして調べたところ、何もしていない状態では0.06A、通信時は0.12A程度となりました。Pico Wと比較するといずれも消費電力は大きめですね。

Raspberry Pi Pico + Pico Wireless Pack + BME280の消費電力を計測したようす

まとめ

Raspberry Pi Pico Wの登場によって、拡張ボードがなくてもネットワークが扱えるようになり、IoT用途として非常に使い勝手の良いボードに進化しました。

もし、通常のRaspberry Piでセンサーを読み出してネットワークで転送するような作品を動かしているなら、Pico Wに移植することで消費電力を大きく減らせそうです。ラジコンカーやロボットなどもPico Wを使って作れそうですね。

一方で、従来のPicoもネットワークを必要としない作品では引き続き需要があると考えられるので、用途に応じて無線あり・なしどちらかのPicoを使い分けると良いでしょう。

そして、毎度残念ながら、Pico Wがいつごろ日本で使用できるようになるのかは不明ですが、日本で発売されるのが待ち遠しいアイテムがまた増えました。

(2023/3/27追記)日本での販売が開始しました。

Raspberry Pi Pico WおよびRaspberry Pi Pico H、Pico WHがリリース

Raspberry Pi財団は6月30日に、Raspberry Pi Pico W、およびRaspberry Pi Pico H、Pico WHをそれぞれ発表しました。

Raspberry Pi Pico Wは、2021年1月に発売したRaspberry Pi Picoにワイヤレス機能を追加したモデルです。Raspberry Pi Picoと同様、Raspberry Piが設計したRP2040チップが使用されており、133MHzのARM Cortex-M0+デュアルコア、256KB RAM、30個のGPIO、様々なインターフェースを搭載します。また、コードとデータ用の2MBのオンボードQSPIフラッシュメモリを搭載しています。

Raspberry Pi Pico Wのワイヤレス機能には、Infineon CYW43439チップを採用しており、無線LANはIEEE802.11 b/g/nを、Bluetoothは5.2をサポートします。なお、リリース時点では無線LANのみがサポートされます。Raspberry Pi Pico Wは6ドルで販売されます。

Raspberry Pi Pico HおよびPico WHは、GPIOにヘッダーと、JTAGにコネクタがあらかじめ実装されたモデルです。自分でヘッダーを実装する必要がなく、簡単にプロジェクトに使用することが可能になります。Raspberry Pi Pico Hは5ドル、Raspberry Pi Pico Hは7ドルで販売されます。

国内ではKSYおよびスイッチサイエンスが各モデルの販売について案内を出しています。Pico WについてはKSYでは990円(税込)、スイッチサイエンスでは1,111円(税込)で販売するとのことです。

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

https://prtimes.jp/main/html/rd/p/000000091.000064534.html

Japanese Raspberry Pi Users Groupでは、お預かりしたサンプルの実機レポートを別途掲載しています。ぜひご覧ください。

(2023/3/27追記)日本での販売が開始しました。

Raspberry Pi Zero 2 Wを見て触ってレポート

本日発表されたRaspberry Pi Zero 2 Wですが、サンプルをお預かりしていますので、レポートをしていきます。

外観

いきなりですが先代のRaspberry Pi Zero Wとの比較写真です。上がPiZero W、下がPiZero 2 Wです。

物理的なサイズとポートの配置・形状は一切変わりません。HDMIポートはMicroHDMIにはならずMiniHDMIのままですし、電源とUSBポートもUSB-CにはならずMicroUSBを維持しています。SDカードスロットも以前と同様ロックのないタイプです。強いて言えば、無線LANのアンテナが数ミリメートルほど左にずれました。

基板上のチップ類の配置については、アクセスランプは以前と同じ場所にACTランプが配置されていますが、その他についてはもちろんというか配置等は異なります。例えばPimoroniのPiBowなどのような、基板のパーツを避けながら被せるレイヤーが存在するようなケースは互換性はないと思われます。オフィシャルのケースなどは流用可能です。話を戻して、銀色のカバーがついているのは無線の回路部分です。

基板表面をもう少し見ます。SoCは機能的にはRaspberry Pi 3のBCM2837と同等のCortex-53ですが、RAMを統合して1パッケージ(System-in-Package)にした「RP3A0」パッケージとなっています。ちなみに、SoCの2行目の2041は、Raspberry Pi Picoで使われるRP2040の続番ではなく、製造された年と週番(2020年41週)がたまたまそれっぽかっただけとのことです。我々の手元に届く頃には2141とか2205とかになっているんでしょうね。

基板裏面を見ていきます。Zero Wまではアナログビデオ出力とリセット用にピンを取り付けられるスルーホールが左上にありましたが、省略されてしまいました。おそらく、利用されていない判断されたか、3B+以降で採用されたPoEポートとの衝突が考慮されたか、どちらかの可能性が考えられそうです。一応、スルーホールの代わりに、基板裏面にランドが残されており、リセットは左上、アナログビデオ出力は右下にそれぞれ刻印が見られます。

なお、現時点で日本の無線に関する認証はまだ取得されていないため、Zero Wのような技適マークの印字はありません。

カタログスペック比較

スペックをおさらい&いくつかのモデルと比較してみます。

Zero 2 W3A+3BZero W
CPUCortex-A53Cortex-A53Cortex-A53ARM1176JZF-S
周波数1GHz1.4GHz1.2GHz1GHz
コア数4441
64-bit×
DRAM512MB512MB1GB512MB
無線LAN802.11 b/g/n802.11 b/g/n/ac802.11 b/g/n802.11 b/g/n
Bluetoorh4.2,BLE4.2,BLE4.1,BLE4.1,BLE

Zero 2 WはRaspberry Pi 3シリーズと同じCortex-A53 CPUを採用しており、4コア・64-bit対応の点で3B・3A+と共通です。周波数に関しては少し抑えめの1GHzとなっていますが、Zero Wとの性能差を考えれば3B・3A+より多少遅いことなどもはや誤差と言えそうです。

DRAMについてはZero Wや3A+と同様512MBです。1GBあると嬉しい感じはしますが、3A+と差ができてしまうので仕方ないかなと思います。個人的には本当は3A+も1GBあると嬉しいですけど。

無線LANについては引き続き2.4GHz帯のみのサポートです。ここは3A+との棲み分けポイントになりそうです。5GHzがほしかった!という方は3A+を検討すると良いでしょう。

ベンチマーク

恒例のUnixBenchでベンチマークを取得しました。今回もスイッチサイエンスさんからお借りしている電波暗箱を使用させていただいております。

ベンチマーク中の様子は、画像右下にあるPiZero v1.3をWebカメラ化したものを箱のUSBポートを通じてMacと接続して撮影しています。作り方は私あっきぃ個人のブログで紹介しているのでよければどうぞ。

さて、箱を閉じて通電を開始します。起動後のアイドル時の消費電力は0.26Aでした。ただし、これはUSB-LANアダプターを接続しているため、その消費電力も含まれる点に注意が必要です。写真は省略しますが、LANアダプターを抜いた状態では0.11A前後であることを確認できました。これはPiZero Wと同程度です。

UnixBench中のようす。0.26A→0.37Aまで上昇することを確認できました。先述のLANアダプターの消費電力0.15Aを引けば、およそ0.11A→0.25Aとなるでしょう。

Raspberry Pi 2 W UnixBench結果

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: yamanooku: GNU/Linux
   OS: GNU/Linux -- 5.10.17-v7+ -- #1414 SMP Fri Apr 30 13:18:35 BST 2021
   Machine: armv7l (unknown)
   Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
   CPU 0: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

   CPU 1: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

   CPU 2: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

   CPU 3: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

   17:08:28 up 1 min,  1 user,  load average: 0.05, 0.03, 0.01; runlevel Oct

------------------------------------------------------------------------
Benchmark Run: 日 10月 17 2021 17:08:28 - 17:36:44
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        3695886.3 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     1025.3 MWIPS (9.9 s, 7 samples)
Execl Throughput                                626.1 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         94927.9 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           26547.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        273223.5 KBps  (30.0 s, 2 samples)
Pipe Throughput                              140439.4 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  26513.9 lps   (10.0 s, 7 samples)
Process Creation                               1184.1 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   1523.0 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    457.4 lpm   (60.1 s, 2 samples)
System Call Overhead                         486290.0 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    3695886.3    316.7
Double-Precision Whetstone                       55.0       1025.3    186.4
Execl Throughput                                 43.0        626.1    145.6
File Copy 1024 bufsize 2000 maxblocks          3960.0      94927.9    239.7
File Copy 256 bufsize 500 maxblocks            1655.0      26547.0    160.4
File Copy 4096 bufsize 8000 maxblocks          5800.0     273223.5    471.1
Pipe Throughput                               12440.0     140439.4    112.9
Pipe-based Context Switching                   4000.0      26513.9     66.3
Process Creation                                126.0       1184.1     94.0
Shell Scripts (1 concurrent)                     42.4       1523.0    359.2
Shell Scripts (8 concurrent)                      6.0        457.4    762.4
System Call Overhead                          15000.0     486290.0    324.2
                                                                   ========
System Benchmarks Index Score                                         214.9

------------------------------------------------------------------------
Benchmark Run: 日 10月 17 2021 17:36:44 - 18:05:01
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       14799937.3 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     4100.3 MWIPS (9.9 s, 7 samples)
Execl Throughput                               1699.7 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        160309.0 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           42973.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        456233.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                              560846.9 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 103772.9 lps   (10.0 s, 7 samples)
Process Creation                               3647.1 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   3588.7 lpm   (60.1 s, 2 samples)
Shell Scripts (8 concurrent)                    438.1 lpm   (60.3 s, 2 samples)
System Call Overhead                        1874972.7 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   14799937.3   1268.2
Double-Precision Whetstone                       55.0       4100.3    745.5
Execl Throughput                                 43.0       1699.7    395.3
File Copy 1024 bufsize 2000 maxblocks          3960.0     160309.0    404.8
File Copy 256 bufsize 500 maxblocks            1655.0      42973.0    259.7
File Copy 4096 bufsize 8000 maxblocks          5800.0     456233.9    786.6
Pipe Throughput                               12440.0     560846.9    450.8
Pipe-based Context Switching                   4000.0     103772.9    259.4
Process Creation                                126.0       3647.1    289.5
Shell Scripts (1 concurrent)                     42.4       3588.7    846.4
Shell Scripts (8 concurrent)                      6.0        438.1    730.2
System Call Overhead                          15000.0    1874972.7   1250.0
                                                                   ========
System Benchmarks Index Score                                         552.5

同じSDカードを使ってZero 2 W、3B、3B+の3環境でテストをしましたが、Zero 2 W < 3B < 3B+の結果となりました。

最後のSystem Benchmarks Index Scoreだけで見ると、ストレージ速度に影響するファイルシステム読み書きの項目を含んでしまうため、おもにCPUのベンチマーク項目である整数演算処理、浮動小数点数演算処理、Execlシステムコールの結果(4コア時)を抜き出して表にまとめてみました。

Zero 2 W3B3B+
Dhrystone 2 using register variables14799937.3 lps (10.0 s, 7 samples)15492821.1 lps (10.0 s, 7 samples)17748593.7 lps (10.0 s, 7 samples)
Double-Precision Whetstone4100.3 MWIPS (9.9 s, 7 samples)4928.4 MWIPS (9.9 s, 7 samples)4935.7 MWIPS (9.9 s, 7 samples)
Execl Throughput1699.7 lps (29.9 s, 2 samples)1910.9 lps (29.6 s, 2 samples)1969.6 lps (29.9 s, 2 samples)
System Benchmarks Index Score552.5592.0664.0

全環境のフルの結果はまとめのあとに貼り付けます。

発熱

Zero 2 Wは、発熱が抑えられている点もアピールポイントになっています。手間ではありつつ、電源を落としてすぐに暗箱の中のZero 2 Wを触ってみる方法で確認をしてみましたが、アイドル状態では触ってもなんの問題もないぬるさでした。「yes > /dev/null &」x4回で長時間(具体的な時間計測はしませんでしたが3〜4分)負荷をかけるようなことをすると流石に熱くなりますが、開始から30秒程度なら、何秒もじっくり指を押し当ててやっと熱いと感じるくらいの温度(58℃くらい)でした。それぞれを「vcgencmd measure_temp」コマンドで見ると、アイドル時38.6℃、高負荷時は68℃ほどとなりました。3Bの場合はアイドル42.9℃、高負荷時80.6℃(!)となったので、それなりの差になりました。

以下のコマンドで高負荷時のクロックとスロットル発動状況を同時に見ていくと、3Bでは80℃に達したところでスロットルが発動してクロック数を下げようとし始めましたが、Zero 2 Wでは80度に達しないためスロットルが発動しないまま1GHz駆動を維持したことになります。

$ vcgencmd measure_temp; vcgencmd measure_clock arm; vcgencmd get_throttled
temp=80.2’C
frequency(48)=1200000000←この数字が徐々に下がっていく
throttled=0x2002

まとめ

おそらく待っていた人が結構多いと思われるRaspberry Pi Zeroのアップデート。その内容は性能を確実に進歩させつつ、先代との物理的な互換性を維持した堅実なものでした。

使い所としては、シンプルにZero Wからのアップデートもよし、3A+程度の性能はほしいが物理サイズを抑えたい時もよし、と言ったところでしょうか。Pi1/Zeroの古いCPUのARM命令に対応しないソフトウェアもZero 2 Wでコンパクトに動かすことが可能になった点も大きいです。

惜しむらくは、日本はリリース時点で技適が未取得状態のため、例によってお預け状態な点でしょう。日本で使えるようになる日が待ち遠しいですね……!!

Raspberry Pi 3 Model B UnixBench結果

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: yamanooku: GNU/Linux
   OS: GNU/Linux -- 5.10.17-v7+ -- #1414 SMP Fri Apr 30 13:18:35 BST 2021
   Machine: armv7l (unknown)
   Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
   CPU 0: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

   CPU 1: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

   CPU 2: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

   CPU 3: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

   13:18:47 up 18 min,  1 user,  load average: 0.00, 0.00, 0.00; runlevel Oct

------------------------------------------------------------------------
Benchmark Run: 火 10月 19 2021 13:18:47 - 13:46:54
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        4435259.3 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     1233.3 MWIPS (9.8 s, 7 samples)
Execl Throughput                                737.2 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        114078.3 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           31844.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        323093.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                              168626.6 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  31239.6 lps   (10.0 s, 7 samples)
Process Creation                               1443.8 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   1784.3 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    454.3 lpm   (60.1 s, 2 samples)
System Call Overhead                         583581.3 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    4435259.3    380.1
Double-Precision Whetstone                       55.0       1233.3    224.2
Execl Throughput                                 43.0        737.2    171.4
File Copy 1024 bufsize 2000 maxblocks          3960.0     114078.3    288.1
File Copy 256 bufsize 500 maxblocks            1655.0      31844.0    192.4
File Copy 4096 bufsize 8000 maxblocks          5800.0     323093.9    557.1
Pipe Throughput                               12440.0     168626.6    135.6
Pipe-based Context Switching                   4000.0      31239.6     78.1
Process Creation                                126.0       1443.8    114.6
Shell Scripts (1 concurrent)                     42.4       1784.3    420.8
Shell Scripts (8 concurrent)                      6.0        454.3    757.2
System Call Overhead                          15000.0     583581.3    389.1
                                                                   ========
System Benchmarks Index Score                                         252.7

------------------------------------------------------------------------
Benchmark Run: 火 10月 19 2021 13:46:54 - 14:15:41
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       12227835.6 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     3682.3 MWIPS (12.8 s, 7 samples)
Execl Throughput                               1399.4 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        121227.0 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           33277.4 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        369295.4 KBps  (30.1 s, 2 samples)
Pipe Throughput                              457605.4 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  79855.0 lps   (10.0 s, 7 samples)
Process Creation                               2955.7 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2707.8 lpm   (60.1 s, 2 samples)
Shell Scripts (8 concurrent)                    342.1 lpm   (60.2 s, 2 samples)
System Call Overhead                        1626120.6 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   12227835.6   1047.8
Double-Precision Whetstone                       55.0       3682.3    669.5
Execl Throughput                                 43.0       1399.4    325.4
File Copy 1024 bufsize 2000 maxblocks          3960.0     121227.0    306.1
File Copy 256 bufsize 500 maxblocks            1655.0      33277.4    201.1
File Copy 4096 bufsize 8000 maxblocks          5800.0     369295.4    636.7
Pipe Throughput                               12440.0     457605.4    367.9
Pipe-based Context Switching                   4000.0      79855.0    199.6
Process Creation                                126.0       2955.7    234.6
Shell Scripts (1 concurrent)                     42.4       2707.8    638.6
Shell Scripts (8 concurrent)                      6.0        342.1    570.2
System Call Overhead                          15000.0    1626120.6   1084.1
                                                                   ========
System Benchmarks Index Score                                         445.3

Raspberry Pi 3 Model B+ UnixBench結果

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: yamanooku: GNU/Linux
   OS: GNU/Linux -- 5.10.17-v7+ -- #1414 SMP Fri Apr 30 13:18:35 BST 2021
   Machine: armv7l (unknown)
   Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
   CPU 0: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

   CPU 1: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

   CPU 2: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

   CPU 3: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

   22:36:09 up 1 min,  1 user,  load average: 0.66, 0.39, 0.15; runlevel Oct

------------------------------------------------------------------------
Benchmark Run: 金 10月 22 2021 22:36:09 - 23:04:14
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        5176786.8 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     1442.7 MWIPS (9.8 s, 7 samples)
Execl Throughput                                856.3 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        131242.3 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           36993.1 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        364366.1 KBps  (30.0 s, 2 samples)
Pipe Throughput                              196669.2 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  36451.0 lps   (10.0 s, 7 samples)
Process Creation                               1768.2 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2015.8 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    541.2 lpm   (60.1 s, 2 samples)
System Call Overhead                         681516.9 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    5176786.8    443.6
Double-Precision Whetstone                       55.0       1442.7    262.3
Execl Throughput                                 43.0        856.3    199.1
File Copy 1024 bufsize 2000 maxblocks          3960.0     131242.3    331.4
File Copy 256 bufsize 500 maxblocks            1655.0      36993.1    223.5
File Copy 4096 bufsize 8000 maxblocks          5800.0     364366.1    628.2
Pipe Throughput                               12440.0     196669.2    158.1
Pipe-based Context Switching                   4000.0      36451.0     91.1
Process Creation                                126.0       1768.2    140.3
Shell Scripts (1 concurrent)                     42.4       2015.8    475.4
Shell Scripts (8 concurrent)                      6.0        541.2    901.9
System Call Overhead                          15000.0     681516.9    454.3
                                                                   ========
System Benchmarks Index Score                                         294.5

------------------------------------------------------------------------
Benchmark Run: 金 10月 22 2021 23:04:14 - 23:32:27
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       17748593.7 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     4935.7 MWIPS (9.9 s, 7 samples)
Execl Throughput                               1969.6 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        192140.3 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           51625.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        561711.5 KBps  (30.0 s, 2 samples)
Pipe Throughput                              673693.8 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 121560.4 lps   (10.0 s, 7 samples)
Process Creation                               4247.2 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   4309.2 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    569.1 lpm   (60.3 s, 2 samples)
System Call Overhead                        2247810.8 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   17748593.7   1520.9
Double-Precision Whetstone                       55.0       4935.7    897.4
Execl Throughput                                 43.0       1969.6    458.1
File Copy 1024 bufsize 2000 maxblocks          3960.0     192140.3    485.2
File Copy 256 bufsize 500 maxblocks            1655.0      51625.0    311.9
File Copy 4096 bufsize 8000 maxblocks          5800.0     561711.5    968.5
Pipe Throughput                               12440.0     673693.8    541.6
Pipe-based Context Switching                   4000.0     121560.4    303.9
Process Creation                                126.0       4247.2    337.1
Shell Scripts (1 concurrent)                     42.4       4309.2   1016.3
Shell Scripts (8 concurrent)                      6.0        569.1    948.5
System Call Overhead                          15000.0    2247810.8   1498.5
                                                                   ========
System Benchmarks Index Score                                         664.0

Raspberry Pi Zero 2 W 発表

Raspberry Pi財団は2021年10月28日に、Raspberry Pi Zeroシリーズの最新版である「Raspberry Pi Zero 2 W」を発表しました。

Raspberry Pi Zero 2 Wは、Raspberry Pi 3シリーズで採用されたCortex-A53を搭載した64-bit対応の4コア 1GHzのBCM2710A1 CPUを採用し、Raspberry Pi Zero Wに比べて大幅に性能が向上しました。また、DRAMを統合したSiP(System-in-Package)を採用し、「RP3A0」パッケージとして本体上に搭載されます。また、発熱にも配慮されており、高負荷時でもサーマルスロットリングせずに安定した動作が可能としています。

無線はIEEE 802.11 b/g/nに対応した無線LANおよびBluetooth 4.2(BLE対応)を搭載します。

フォームファクターはZero Wをほぼ継承しており、Mini HDMIポート、Micro USB OTGポート、Micro USB 電源ポート、CSIポートが用意されています。また、RUN・AV用のスルーホールは省略され、基板裏にランドとして配置が変更されました。

Raspberry Pi 2 Wの価格は15ドルで、本日より認定リセラーを通じて発売されます。

なお、発表時点では日本向けの技術基準適合証明の取得がないため、日本の通常環境下での使用はまだできません。

また、Raspberry Pi Zero 2 Wのリリースに合わせて、公式の電源アダプターが8ドルで発売されます。

Raspberry Pi Build HAT発表

Raspberry Pi財団は10月19日、Raspberry Pi Build HATを発表しました。

Build HATは、Raspberry PiとLEGO®を組み合わせてハンズオンで楽しく創造的な学習をするためのアドオンボードです。Build HATにはRaspberry Pi Picoに続く2つ目のRP2040マイクロコントローラー搭載製品としています。

Build HATには最新世代のLEGO®Technic™のモーターや、LEGO® Education SPIKE™ Primeの各種センサーと互換性があり、最大4つのモーターもしくはセンサーがBuild HATに接続できます。

Build HAT用のPythonライブラリが提供されており、かんたんにプロトタイプを作成することが可能です。

https://buildhat.readthedocs.io/en/latest/

また、モーターに安定した電力を供給するために、48W(DC8V/6A)の電源アダプターも同時に発売されます。

価格は、Build HAT本体が25ドル、電源アダプターは15ドルとなっています。

Build HATはRaspberry Pi認定リセラーを通じて販売されます。

製品情報ページ: https://www.raspberrypi.com/products/build-hat/

RP2040発売

Raspberry Pi財団は6月1日、RP2040の発売を発表しました。

RP2040はRaspberry Pi Picoに搭載されているマイクロコントローラーチップで、Raspberry Pi初の自社開発コントローラーとなります。Raspberry Pi Pico発表当初より将来的なRP2040チップの発売について言及されていました。

RP2040の単体販売により、Raspberry Pi Picoを使用することなく、直接自分のプロジェクトや製品の基板に組み込むことが可能になります。

1つあたりの販売価格は1ドルで、Raspberry Pi認定リセラーを通じて販売されます。(参考までに、Pimoroniでは10個単位での販売ページを公開しています。)

PoE+ HAT リリース

Raspberry Pi 財団は5月24日、PoE+ HATをリリースしました。価格は20ドルで、6月上旬よりRaspberry Pi認定リセラーから準備発売されます。

PoE+ HATは2018年に発売されたPoE HATの改良版となるPoEに対応したHATボードです。PoE HATは802.3afに対応しており最大15.4Wの電力が供給可能でしたが、今回リリースされたPoE+ HATは802.3atに対応しており、対応したPoEインジェクターと組み合わせることで最大25.5Wの電力供給が可能としています。これにより、Raspberry Pi 4にたくさんのUSBデバイスを接続している状況でもPoE+ HATで安定した電力供給が可能になります。

その他、部品を見直すことで発熱や部品サイズをコンパクトにするなどの改良が加えられています。

なお、以前のPoE HATも引き続き生産されますが、昨今の世界的な半導体不足によって入手困難なシリコンが使用されているため、そのようなシリコンを使用しておらずリードタイムが短いPoE + HATへの移行が検討可能としています。

Raspberry Pi Pico実機レポート!

あっきぃです。本日リリースされたRaspberry Pi Picoのサンプルを太田さんからお借りしているので、レポートしていきます。

外観

外観の紹介。サンプルのため、製品版とは一部異なる場合があります。また、製品はピンヘッダーが未実装の状態で販売されます。

表面
裏面

Raspberry Pi PicoにMicroPythonを入れて使う

Raspberry Pi Pico上でMicroPythonを使うことができます。何かを簡単に動かしてみるならこれが一番手軽でしょう。

セットアップの方法はRaspberry Pi Picoのサイトで解説されているため、そちらを参照してください。

https://pico.raspberrypi.org/getting-started

また、プログラミングにはRaspberry Pi OSにバンドルされているThonnyを使うことができます。こちらも上記サイトのMicroPython documentation(PDF)の4章で説明されているので、これを参照してセットアップすると良いでしょう。MicroPythonの場合ファイルの送受信にはampyなどを利用しますが、Thonnyでもファイル保存ダイアログを通じてファイルの送り込みや取得ができるようになるため、用意しておくと便利です。

……本当はドキュメント見ろではなくてステップごとの解説ができると良いのですが、今回はひとまず簡易レポートということで端折らせてください……!

PCD8544 LCDを動かしてみる

手持ちのそれっぽいデバイスでMicroPythonで動かせそうなものを漁ってみたところ、大昔に買ったNokia 5110ことPCD8544 LCDが出てきたので、これを動かしてみることにしました。

まずは配線。Raspberry Pi PicoのSPI0ポートを使用しつつ、これ以外は適当なGPIOピンに差し込みました。

[pcd8544:pico(physical pin)]
Gnd: Pico GND (38)
BL : Pico GP28(34)
Vcc: Pico 3V3 (36)
Clk: Pico GP6 ( 9)
Din: Pico GP7 (10)
DC : Pico GP4 ( 6)
CE : Pico GP5 ( 7)
RST: Pico GP8 (11)

PCD8544用のMicroPython向けライブラリはGithubにあり、そのまま使う事ができました。

https://github.com/mcauser/micropython-pcd8544

pcd8544とpcd8544_fbの2つライブラリがあり、後者のほうが文字を書いたり図を描いたりしやすいので、これをインストールしますが、ThonnyのManage Packagesではインストールできません。pcd8544_fb.pyをRaspberry Pi上に用意して一旦Thonnyで開き、Raspberry Pico上に/lib/pcd8544_fb.pyとして保存することでファイルを転送して、インストールします。

テストプログラムは、リポジトリのexample/framebuf.pyを元にピン番号を書き換えるだけで動きます。ピン番号の書き換えは以下の通り。SPI0番を使うのでSPI(0)で初期化します。Pinの番号はGPの方の数字を指定します。

spi = SPI(0)
spi.init(baudrate=2000000, polarity=0, phase=0)
print(spi)
cs = Pin(5)
dc = Pin(4)
rst = Pin(8)

# if your pcd8544 has BL pin, uncomment this line.
bl = Pin(28, Pin.OUT, value=1)

lcd = pcd8544_fb.PCD8544_FB(spi, cs, dc, rst)

その後の描画テストは、処理の度にframebuf.fill(0)が挟まれており、ほとんどのテストが見えずに終わってしまうため、framebuf.fill(0)を削りつつ、順に描画している様子がわかるようにちょっと書き換えたものを用意しました。

実行結果はこの通りです。

動画で!

ソースコードは以下のURLで公開しています。

https://gist.github.com/Akkiesoft/c72034f89b9aa6a3bedd4994bd51676a

まとめ

新しいRaspberry Pi Picoをさわってみる記事でした。

4ドル(日本では500円前後になるようです。スイッチサイエンスさんでは550円とのアナウンスがありました)と安価なので、気軽に買って遊んでよし、積みボードにしても罪悪感薄しな感じで良いですね(こら)。

また、MicroPythonの豊富なライブラリが利用できるのはわりと強いのかなと思いました。ESPと比べると無線周りがない点が弱みのような気もしますが、無線はいらない場合も多々なので、これはこれでありなのではないかと思います。