はじめに
CHIRIMENにZero/Zero2用のBullseyeイメージがアップされてたので早速使ってみたのですが、Node-REDがうまくはいらなかったので、Bullseye 32bit lite上にNode-RED + CHIRIMEN環境を作ります。
基本環境
・Raspberry Pi Zero W
・Bullseye 32bit lite
のmicro sdを作って、Wi-FiとかUSB OTG SSHとかで操作します。
Node-REDをインストール
sudo apt-get update -y
sudo apt-get upgrade -y
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
以上でサクッとNode-REDが入りました
今後は自動起動するようにしておきます。 環境次第かと思いますが、以下のコマンドだと、メモリ不足のせいか起動しないことも。
sudo systemctl enable nodered.service
公式推奨の省メモリ起動をcrontabで自動起動させます。
まずはスクリプトを作っておいて
nano node-red-start.sh
スクリプト中身
node-red-pi --max-old-space-size=256
crontabにコマンド追加
crontab -e
初めて起動するときはエディタに何を使うか聞いてくるのでお好みで。
よくわからない人はnanoを選んでおくとよいかな。
設定ファイルの一番最後に一行追加して保存
@reboot /home/airpocket/Workspace/node-red-start.sh
airpocketのところは自分のuser名を。
Web-I2C-API と Web-GPIO-APIをインストール
作業用フォルダとしてWorkspaceを作ってインストールします。
mkdir Workspace
cd Workspace
npm init -y
npm install node-web-gpio node-web-i2c
CHIRIMEN関係のライブラリは$HOMEに置くことにしました。
cd $HOME
wget https://github.com/chirimen-oh/chirimen/archive/refs/heads/master.zip
unzip master.zip
mv chirimen-master/ chirimen/
OpenCV をインストール
RasPiをセットアップしたらとりあえずOpenCVを入れておくのがお作法です。
Bullseye lite版にはpipが入ってなかったので、pipをインストールするところからです。
sudo apt install python3-pip
以前の記事通り進めて、numpyのバージョンアップをしたらOKでした。
sudo apt-get -y install python3-dev python3-pip libgl1-mesa-dev libopenjp2-7-dev libavcodec-extra58 libavformat58 libswscale5 libgtk-3-dev liblapack3 libatlas-base-dev
pip install opencv-python opencv-contrib-python
sudo apt-get -y install libgl1-mesa-dev
sudo pip install numpy --upgrade
Raspberry Camera V1設定
今回の用途ではRaspberry Camera V1相当のSpy Cameraを使います。イメージセンサはOV5647が載っているためこのカメラ使用の設定も行います。
sudo raspi-config
でメニューを立上げ、「3 Interface Options」⇒「I1 Legacy Camera Enable/disable legacy camera support」⇒「yes」⇒「ok」とし、rebootして設定を有効にします。
/boot/config.txtの最後に次の1行を追加します。
dtoverlay=ov5647
v4l2を使って、カメラのステータスが読めます。
v4l2_ctl -L
libcamera-stillで画像を取得してみます。
libcamera-still -n -o test.jpg
動作テスト
では、Node-REDでlibcamera-stillを使って静止画を撮ってみます。
使用するのは「inject」ノードと「exec」ノードです。
二つのノードを接続して設定します。
設定ができたら、デプロイして実行してみましょう。
Workspacesフォルダに画像ファイルが出力されていれば成功です。
i2cの有効化
sudo raspi-config
3 Interface Optins => P5 I2C => yes
i2ctoolsのインストール
sudo apt install i2ctools
これでi2cdetect -y 1が使える
まとめ
Raspberry Pi Zero にCHIRIMEN +αの環境構築をしました。
Node-REDでの画像取得には「node-red-contrib-camerapi」というノードがありますが、Bullseyeではカメラの取り扱いが変わった為使用できません。execノードから直接libcamera-stillコマンドを使って撮影するのが簡単でした。