PR

ロボット制御⑨ Raspberry Pi 5 を使ってみる
今回は、ロボット制作とは、少し外れますが、最新Raspberry Pi 5 のセットアップをしたみた話です。

制御

昨年の秋ごろに発売された「Raspberry Pi 5」ですが、日本の技適マーク対応を待ってスイッチサイエンスから購入しました。この記事を書いているのが8月なので、随分と時間が経ってしまいました。
実は、あまり先頭を走らないタイプなのです。

今回は、Raspberry Pi 5 のセットアップケースの組み立てPython環境の構築までをやってみようと思います。

ちなみに Raspberry Pi 4B のセットアップも過去に記事にしています。

Raspberry Pi 5 のセットアップ

Raspberry Pi 5 をセットアップするには、以下のものが必要です。

  • Raspberry Pi 5 本体
  • Raspberry Pi 5用 アクティブクーラー
  • MicroSDカード
  • 電源(5.1V-5A推奨)
  • マウス、キーボード、ディスプレイ
  • イメージOS書き込み用のPC

開封前の各パーツ、写真には、マウス、キーボード、ディスプレイ、PCは載っていません。

Raspberry Pi 5 本体

スイッチサイエンスさんから「Raspberry Pi 5 / 8GB」を購入しました。
理由は、間違いなく純正品で、技適マーク取得後に発売しているからです。
今では、Amazon等でも純正品&技適取得のものも販売されているようです。

【特徴】

  • Broadcom BCM2712、2.4 GHz quad-core 64 bit Arm Cortex-A76 CPU(512KB L2
    キャッシュ/2MB 共有L3キャッシュ)
  • VideoCore VII GPU、supporting OpenGL ES 3.1、Vulkan 1.2
  • 2 x 4Kp60 HDMIディスプレイ出力(HDR対応)
  • 4Kp60 HEVCデコーダー
  • 8 GB LPDDR4X-4267 SDRAM
  • 802.11ac Wi-Fi(2.4 GHz / 5.0 GHz)
  • Bluetooth 5.0 / Bluetooth Low Energy (BLE)
  • SDR104(高速区分)が利用可能なMicro SDカードスロット
  • 2 × USB 3.0ポート(同時に5 Gbpsの通信が可能)
  • 2 × USB 2.0ポート
  • ギガビットイーサネット(別売りのPi 5用PoE+ HATを接続することでPoE+も利用可能)
  • 2 × 4レーンMIPI(カメラ/ディスプレイ用)
  • 高速周辺機器用PCIe 2.0 x1インタフェース
  • 電源入力:推奨5 V/5 A(カスタムPD)、最低5 V/3 A
  • Raspberry Pi標準の40ピン ピンヘッダ
  • 別売りの外部電源によるリアルタイムクロック(RTC)
  • 電源ボタン搭載

Raspberry Pi 5用 アクティブクーラー

Raspberry Pi 5 用のアクティブクーラー(ヒートシンク+冷却ファン)が発売されています。
高負荷時でもRaspberry Pi 5を適切な温度範囲に収めます。冷却ファンは温度で回転数が制御できます。

【特徴】

  • アルマイト加工されたアルミ製ヒートシンク
  • 冷却ファンは回転数制御が可能
  • Raspberry Pi 5とはプッシュピンで固定可能
  • ヒートシンクには熱伝導率を改善するサーマルパッド塗布済
  • Raspberry Pi 5 専用の電源供給ピンヘッダーに対応

MicroSDカード

Raspberry Pi 5はハイスピードSDR104モードをサポートしているため、SDカードの読み書きも速くなっていました。書き込み速度はSDカードの性能によるところなのであまり速くなっていませんが、読み込み速度はRaspberry Pi 4の2倍になっていました。SDカードを選ぶときはSDR104モードに対応したSDカード(SDHC IやSDXC I、SDUC Iなどのロゴ付きのもの)を選ぶと良いとのことです。

電源(5.1V-5A推奨)

Raspberry Pi 4B の時は、別売りの推奨電源や電源付属キットを購入して使ってもアラートが表示されることがあったので、今回は、確実に対応しているOUTPUTが5.1V-5A(27W)の電源を購入しました。(ディープラーニングや機械学習などを行うと、電力を大きく消費します。)

アクティブクーラーの取り付け

まずは、Raspberry Pi 5 にアクティブクーラーを取り付けます。

【取付手順】

  1. アクティブクーラー裏面のパッド表面のシールを剥がします。
  2. Raspberry Pi 5 の位置を合わせて貼り付け、プッシュピンで固定します。
  3. アクティブクーラーのピンを本体のピンヘッダに繋ぎます。
    ④写真のオレンジで囲った部分
① Raspberry Pi 本体
③ アクティブクーラーを取り付け
② アクティブクーラーの裏面
④ 専用のピンヘッダーを差し込む

プッシュピンがあるので、思ったより位置合わせは、簡単に出来ました。

Raspberry Pi OS イメージの準備

ソフトウェアの準備を行います。
私の場合は、WindowsPCを使ってイメージを書き込みました。

まずは、http://raspberrypi.com/software/ で最新のImagerをダウンロードします。

ダウンロードしたファイルを実行して、Imagerのセットアップを行います。

Raspberry PI Imagerを起動して、デバイスに「RASPBERRY PI 5」、OSに「RASPBERRY PI OS(64-BIT)」、ストレージに「SDXC CARD」をそれぞれ選択して「次へ」を押します。

「Would you like to apply OS customization settings?」と聞かれるので「設定を編集する」を押します。

「一般」の内容を設定して「保存」し、前の画面に戻るので「はい」を押します。
SDXCカードの内容が完全に削除されると言われますが、構わず「はい」を押します。

書き込みが完了して、イメージの準備が完了です。

Raspberry Pi 5 の初回起動

Raspberry Pi OS の Image を書き込んだMicroSDカードを差し込み、キーボードやマウス、ディスプレイを接続して、Raspberry Pi 5 を起動します。

裏面にMicroSDカードを差し込みます。

起動すると右側の画面になりました。この壁紙なんだか渋めですね。

問題なく、初回起動は出来ました。

マウスやディスプレイは、Jetson nanoRaspberry Pi 4B の時に使用していたものを流用していたので、少し古いものです。
なお、ディスプレイとディスプレイ切り替え機は、3Dプリンタで作成したケースにはめ込んで使用しています。

以下に類似のもののリンクを貼り付けておきます。

セットアップは、これにて完了です。

ケースの組み立て

合わせて Raspberry Pi 5 に対応している以下のケースを購入したので組み立ててみました。

① 箱から取り出した状態
② 底のアクリルの保護シートを剥がす

箱から取り出すと①のように組みあがった状態になっているので、一度、ネジを止めて分解します。なお、この時に出来るだけ元の状態を崩さない方が後からの組み立てが楽になります。
底と上のアクリルは、保護シートが貼りついているので②のように剥がします。

③ ケース部品を重ねる
⑤ Raspberry Pi 5 を載せる
④ もう1つケース部品を重ねる
⑥ 周りを囲うようにケース部品を重ねる

組み立てマニュアル通りに Raspberry Pi 5 をピッタリと囲うようにケース部品を重ねていきます。

⑦ 蓋のアクリルの保護シートを剥がす
⑧ 蓋部品を重ねる

蓋のアクリルの保護シートを剥がして、ケースに重ねます。

ねじ止めして完成です。

日本語環境の構築

まずは、システムの最新化を行います。

続いて日本語設定を行います。(初期で日本語設定になっていません。)
※この方法では、Chromiumだけは日本語入力対応にはできませんでした。

ウィンドウマネージャーは、Wayland がデフォルトになっており、従来のX11からの変更が大きいため一部のソフトウェアが動作しないなどの問題が起きているようです。
例えば、画面コピーをとるscrotですが、ウインドウ指定するとエラーになります。
以下の画面コピーは、全体画像をトリミングして貼り付けています。

メニュー等の日本語化

まずは、ロケール設定を日本にしてメニュー等を日本語化します。

まずは、メニューから「Preferences」⇒「Raspberry Pi Configuration」を選択します。

Raspberry Pi Configration 画面の「Localisation」タブを選択します。
ここで、「Set Locale…」ボタンを押して次のように設定します。
Language: ja (Japanese)
Country: JP (Japan)
Character Set: UTF-8

タイムゾーンの設定は、そのままで問題なかったのそっと閉じました。
キーボードの設定は、次のように設定します。
モデル: Generic 105-key PC
配列: Japanese
種類: Japanese (ODAG 109A)

再起動して、ロケール設定は、完了です。

基本的には、これで完了ですが、一部のソフトウェアは、個別にロケールの設定が必要です。
FireFox もアプリのメニューからSettingsを選んでLanguageに日本語を指定します。

言語を日本語にすると下のようにすぐに日本語に変更されます。

日本語入力の設定

今回は、日本語入力メソッドは、fcitx5-mozc を使います。(他に ibus-mozcがあります。)
以下のコマンドで fcitx5-mozc をインストールします。

これだけで日本語入力は可能になりました。
Chromium だと日本語入力できないので、デフォルトのブラウザを FireFox にしました。

お気に入りのフォント等をインストールします。
私は、IPAフォント と notoフォント をインストールしました。

システムの標準フォントを変更します。
メニューから「設定」⇒「外観の設定」を選びます。

外観の設定のフォントを選択します。
フォントの中から「IPAexゴシック Regular」を選択します。(何でも好きなので良いです。)

chronium の日本語化

簡単でした起動時に「–gtk-version=4」を追加すればで日本語入力が可能になりました。

アイコン設定を修正することで日本語入力が可能になりました。

Python 仮想環境の構築

2023年10月から Raspberry Pi OS がバージョンアップして、bullseye から bookwarm に変わりました。これにより python2がなくなり、python3だけになりました。pip でのインストールにも制限がかかるようになっており、python 仮想環境を構築して、そのなかにあるpythonにモジュール(ライブラリ)をインストールして利用する形が推奨されているようです。
なので、その方法を試してみたいと思います。

まずは、必要な外部モジュールをインストールします。

pyenv をインストールします。

pyenvをインストールして、パスを通しました。
実は、このままだとRaspberry Pi デスクトップのターミナルだと毎回「source ~/.bash_profile」を記載しないと pyenv が動きません。対応は、後ほど記載します。

仮想環境用の python を設定します。
インストール可能な python のバージョンを表示します。

上記のように表示されました。どうも最新版は、3.12.4 なのでそちらをインストールします

python のバージョンを切り替えます。

仮想環境を構築して有効化します。

仮想環境に入るとプロンプトが少し変わります。

他にも必要なものをセットアップしていきます。

仮想環境にいくつかのライブラリをインストールしました。
以下のコマンドで仮想環境を無効化して通常に戻ります。

以上でpythonの仮想環境構築は、完了です。

LXTerminal 起動時に ~/.bash_profile を読み込ませる

デスクトップ版を使っているとターミナルのアイコンをクリックしただけで、~/.bash_profile を読み込んで欲しいですよね。そこでアイコンの設定ファイルを編集して、読み込むようにします。

アイコン設定は、「lxterminal.desktop」というファイルに定義されているのですが、場所を探すのが面倒なので検索します。ファイル検索ツールを使って、/usr/share 以下をファイル名で検索します。

おそらく2ファイル表示されるので、パスをコピーして、nanoで編集します。

Exec設定の行を編集します。

「Exec=lxterminal」⇒「Exec=lxterminal -e “bash -il”」に修正します。
保存して、アイコンから LXTerminal を起動すると ~/.bash_profile が読み込まれるようになっています。

Wayland/Wayfire 環境でスクリーンショットを撮る

アクティブウィンドウのスクリーンショットを撮る方法

アクティブウィンドウのスクリーンショットを撮る。
こんな些細なことがX11からWaylandに変わったことで出来なくなってしまいました。
記事を書く上では、非常に不便です。

X11にすれば、「scrot -u -d 10」などが動くのですが、何故かキーボードレイアウトが強制的に英語101キーボードに変更されてしまい、入力が超不便になります。
なんとか、Waylandのままでアクティブウィンドウのスクショを撮りたいと思い色々調査して見つけました。

こちらは、画面全体のスクリーンショットを撮ります。

マウスで矩形領域を選択できるユーティリティをインストールします。

こちらだとマウスで選択した領域のスクリーンショットを撮ります。
マウスで選択も毎回だとかなり面倒です。何とかアクティブウインドウのスクリーンショットを撮りたいと探していたら以下の記事を見つけました。

これで行けるっぽいです。いざ実行してみます。

wf-infoがインストールされていません。apt searchを使ってもヒットしませんでした。
以下のgithubでソースからビルドする必要があるようです。

wf-info のビルド

「Raspberry Pi OS 12 (bookworm)」にインストールされている「Wayfire」のバージョンは、0.7.5なので、0.7.x用のソースをビルドする必要があります。

まずは、ビルドに必要なツールとライブラリをインストールします。

ライブラリのインストールは、結構、時間がかかりました。
必要なものがインストールできたらビルドを行います。

こちらは、ほぼ一瞬で終わりました。

wf-infoコマンドがインストール出来たので、wf-infoプラグインを有効にします。
まずは、デフォルトで有効になっているプラグインを確認します。

プラグイン設定を自分の設定ファイル(~/.config/wayfire.ini)に行います。
[core]セクションを追加して、上記の結果をコピーし、末尾にwf-infoを追加します。

wf-info を使ってみる

wf-infoを実行してみます。

実行しても黙っています。
何かウィンドウを選択すると答えを返してきます。

アクティブなウィンドウを自動的に選ぶのは、以下のオプションで実行します。

これだとコマンド入力後、即時に画面情報が取得されるのでアクティブウィンドウを選択する余地がないですね。シェルを作って少し後にアクティブウィンドウのスクリーンショットを撮るようにします。

grim-active-window.sh の作成

grim-active-window.sh

#!/bin/bash
WAIT=0
while getopts "w:" opt; do
  case "$opt" in
    "w")
      WAIT=$OPTARG;;
  esac
done
sleep $WAIT
grim -g "$(wf-info -i -1 | grep 'Geome' | awk {'print $2, $3'})"
Bash

実行可能にモード変更します。

実行してみます。

5秒後にアクティブウィンドウのスクリーンショットが取れました。

Raspberry Pi のスクリーンレイアウトには注意してください。
wf-info が取得するのは、そのスクリーンの原点からの位置になります。
スクリーンの原点が離れた位置、例えば 「HDMI-A-2」となると、レイアウト座標での指定が必要となり、grim -g がエラーになります。

ショートカットキーに設定

ショートカットのキーバインドに設定します。
ショートカットには、全画面版とアクティブウィンドウ版をそれぞれ登録します。
単独のPrintScrは全画面版、Ctrl+Alt+PrintScrはアクティブウィンドウ版にします。
ショートカット割付に上記の長いコマンドを書いて動くようにするのは時間がかかりそうなので、シェルスクリプトをパスの通った場所に作成して呼び出すようにしたいと思います。

ホームディレクトリに作ったシェルスクリプトは、-wオプションがありましたが、ショートカットに登録するものには必要ないので削除しました。

/usr/bin/grim-active-window.sh

#!/bin/bash
grim -g "$(wf-info -i -1 | grep 'Geome' | awk {'print $2, $3'})"
Bash

警告が出ますが、無視して編集します。
CLIツールでメンテすべきなのかもしれませんが、このファイル長いのでGUIツールで編集しました。

    <!-- Keybindings for running applications -->
    <keybind key="Print">
      <action name="Execute">
        <command>scrot</command>
      </action>
    </keybind>
    <keybind key="Print">
      <action name="Execute">
        <command>grim</command>
      </action>
    </keybind>
    <keybind key="C-A-Print">
      <action name="Execute">
        <command>grim-active-window.sh</command>
      </action>
    </keybind>

左の状態から右の状態に変更しました。
元々は、scrotが設定されていたのですね。Ctrl+Alt+PrintScrでアクティブ画面のスクリーンショットが撮れるようになるはず。

再起動してショートカットを試してみました・・・うーん。全画面版は動いたが、アクティブスクリーン版が動かない。Wayland版のショートカット設定方法が分からない。
そもそもこれは「X11/OpenBox」での設定ですね。「Wayland/Wayfire」では関係なさそうです。

Wayfireのショートカット設定

「~/.config/wayfire.ini」に設定が見つかりました。
INIファイルの先頭に[command]セクションがあり、ショートカット設定があるように見えます。
他の設定を参考にアクティブウィンドウのスクリーンショットを撮るショートカットキーを追加してみます。

[command]
repeatable_binding_volume_up=KEY_VOLUMEUP
command_volume_up=wfpanelctl volumepulse volu
repeatable_binding_volume_down=KEY_VOLUMEDOWN
command_volume_down=wfpanelctl volumepulse vold
binding_mute=KEY_MUTE
command_mute=wfpanelctl volumepulse mute
binding_menu=<super>
command_menu=wfpanelctl smenu menu
binding_terminal=<ctrl> <alt> KEY_T
command_terminal=lxterminal
binding_bluetooth=<ctrl> <alt> KEY_B
command_bluetooth=wfpanelctl bluetooth menu
binding_netman=<ctrl> <alt> KEY_W
command_netman=wfpanelctl netman menu
binding_grim=KEY_SYSRQ
command_grim=grim
binding_orca=<ctrl> <alt> KEY_SPACE
command_orca=gui-pkinst orca reboot
binding_quit=<ctrl> <alt> KEY_DELETE
command_quit=lxde-pi-shutdown-helper
binding_power=KEY_POWER
command_power=pwrkey
...
INI
[command]
...
binding_grim=KEY_SYSRQ
command_grim=grim
# Added shortcut to take screenshots
binding_screenshot_active_window=<ctrl> KEY_SYSRQ
command_screenshot_active_window=wf-info -i -1 | grep 'Geome' | awk {'print $2, $3'} | grim -g - 
binding_screenshot_interactive=<shift> KEY_SYSRQ
command_screenshot_interactive=slurp | grim -g - 
# Add up to here
...
INI

「PrintScr」キーは、KEY_SYSRQみたいです。<ctrl>+<PrintScr>でアクティブウィンドのスクリーンショットが撮れました。ついでに<shift>+<PrintScr>で矩形選択してスクリーンショットを撮るショートカットも追加しました。

画面全体のスクリーンショット
アクティブウィンドウのみのスクリーンショット

以上です。

コメント

タイトルとURLをコピーしました