Pi5ユニークポイントのメモ(未整理)

Pi5でやろうとしていること

①RetroPieを入れてゲーム機を作る。

  RetroPieの64Bit対応とか、その中のサターンエミュがうまく動かないとかあって放置中

②AIおしゃべりBOT+画像認識ラジカセを作る

  単に余裕がなくて放置中。

ユニーク事項

・電源周りの変更

 RPi5はなんか5Aモード(特殊なUSB PDで供給する)と3Aモードがある??

 私がやりたいのはUSB-PDではなく、GPIOからの電源供給。

 このままだと、PD電源じゃないと言って周辺機器への電流制限をされてしまう。

 /boot/firmware/config.txtでusb_max_current_enable=1と設定する。

 (これはUSB起動を許可する命令ではなく、
  電流制限を0.6Aから1.6Aに引き上げる命令っぽいですよ?
  結構間違えている人がいそうだけど、大丈夫?)

・retropie久々のインストール(環境移植)

bookworm 64bitをインストール

CUIログインに切り替え

sudo apt update
sudo apt upgrade
sudo apt install xrdp tightvncserver

sudo systemctl set-default multi-user.target

sudo apt install fcitx-mozc fdclone tightvncserver xrdp gddrescue parted gparted cpufrequtils remmina chromium-browser chromium-browser-l10n terminator pcmanfm-qt libc6-dev build-essential i2c-tools git vlc remmina-plugin-rdp remmina-plugin-vnc blueman net-tools netcat-traditional git build-essential libx11-dev python3-pip cmatrix hollywood sl fortune bastet curl code

mkdir 00_temp
mkdir 01_install


cd 01_install
git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git
cd RetroPie-Setup
chmod +x retropie_setup.sh
sudo ./retropie_setup.sh

・シリアルコンソール用のUARTがGPIOとは別に出ている。

 RaspberryPiOS bookwormからの使い方が以下で解説されている

https://qiita.com/nak435/items/d8133b89a6a605d84282

・ついでに・・・UARTの有効化とシリアル通信のやり方

 有効化:https://tshell.hatenablog.com/entry/2021/03/04/205346

 dtoverlayの書式:https://www.ingenious.jp/articles/howto/raspberry-pi-howto/gpio-uart/

 ubuntuへのraspi-configの導入:https://pc.watch.impress.co.jp/docs/column/ubuntu/1594245.html

ループバックテスト(RaspberryPiOS):https://qiita.com/tatsu11/items/98463598ec6bb64b928b

 sudoが必要になる問題:Ubuntu + Raspberry PiでGPIOアクセスのための設定 #RaspberryPi – Qiita

●ルーティングするサーバ

softether VPN

●raspberry pi 5 + raspberrypi OS bookworm 64bit環境で現在再生中の音楽の音量を表示する

・準備

sudo apt install python3 python3-pip
sudo apt install portaudio19-dev

python3 -m venv myenv

source myenv/bin/activate

ここまで入れるとpythonの仮想環境か実行され、プロンプトが

<myenv> hore@hogehoge: ~/

のように変わる。

「メモ」venvとros2の相性がなんかよくないので以下で強引にvenvなしでpipする手もある

pip install pyaudio --break-system-packages
とか
pip install transitions --break-system-packages
(ROS2でよく使うやつ)とか。
「メモ」AIによると以下のような方法でros2に認識させる方法もあらしいが試していない。
・仮想環境をアクティブにする:
source /path/to/your/venv/bin/activate

・ROS2の環境を設定する:
source /opt/ros/humble/setup.bash

・PythonのパスをROS2に追加する: 仮想環境のPythonパスをROS2の環境変数に追加します。以下のコマンドを実行します:
export PYTHONPATH=$PYTHONPATH:/path/to/your/venv/lib/python3.x/site-packages

・colconのビルドキャッシュをクリアして再ビルドを試みる:
colcon build --cmake-clean-cache

・プログラム本体(volume_display_py)

import pyaudio
import numpy as np

# PyAudioの設定
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 1024

# PyAudioのインスタンスを作成
audio = pyaudio.PyAudio()

# ストリームを開く
stream = audio.open(format=FORMAT, channels=CHANNELS,
                    rate=RATE, input=True,
                    frames_per_buffer=CHUNK)

print("音量を表示します。Ctrl+Cで終了します。")

try:
    while True:
        # 音声データを読み取る
        data = np.frombuffer(stream.read(CHUNK), dtype=np.int16)
        # 音量を計算
        volume = np.linalg.norm(data) / CHUNK
        print(f"音量: {volume:.2f}")
except KeyboardInterrupt:
    print("終了します。")

# ストリームを閉じる
stream.stop_stream()
stream.close()
audio.terminate()

で、以下実行

python volume_display_py

●ROS2 humble install

https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html

sudo apt install software-properties-common

削除[
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y
]

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

修正要[
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
]

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu bookworm main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null




sudo apt update && sudo apt install -y \
  python3-flake8-docstrings \
  python3-pip \
  python3-pytest-cov \
  python3-flake8-blind-except \
  python3-flake8-builtins \
  python3-flake8-class-newline \
  python3-flake8-comprehensions \
  python3-flake8-deprecated \
  python3-flake8-import-order \
  python3-flake8-quotes \
  python3-pytest-repeat \
  python3-pytest-rerunfailures \
  ros-dev-tools

mkdir -p ~/01_ros2_humble/src
cd ~/01_ros2_humble
vcs import --input https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos src

sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers"


削除[
cd ~/ros2_humble/
colcon build --symlink-install
]

sudo mkdir -p /opt/ros/humble
sudo colcon build --install-base /opt/ros/humble

以上参考

https://qiita.com/vrn/items/80e36a3171ad973dde691

末尾に以下追加

source /opt/ros/humble/setup.bash
source ~/11_colcon_ws/install/setup.bash

・確認。

新しくコンソールを2つ起動し

こうなったら成功

それぞれで

ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_py listener

を実行。

こうなったら成功。

●AI HAT

https://gigazine.net/news/20241031-raspberry-pi-ai-hat-plus-camera/