Raspberry Pi Zero 2を使ってみる その2(カメラ、Thonny、Node-RED)

はじめに

 今回はRaspberry Pi Zero 2にカメラを取り付けてみました。

 少し古い書籍を読みながら試していたときは、コマンドを入力してもエラーが出て撮影できないことがありました。苦戦していた記憶があるのですが、今回はすんなり使えました。

 Node-REDを起動して、別のPCでエディタにアクセスして作業しています。かなり快適になりました。Zero 2でブラウザを開くと、動作が遅いんですよね...

▼以前の記事はこちら

Raspberry Pi Zero 2を使ってみる その1(Xfce、Vivaldi、Node-RED)

はじめに  今回はRaspberry Pi Zero 2を使ってみました。Maker Faire Tokyo 2023にて会場で販売されていたので購入してみました。  一度Raspberry Pi OSのデスクトップ…

ヒートシンクの取り付け

 効果があるのかどうかは分からないのですが、ヒートシンクを取り付けてみました。

▼こちらを購入してみました。

▼他にもいろいろ取り付けた様子

カメラの設定・撮影

カメラの種類

 カメラは2種類購入してみました。

▼一つめは小型カメラです。

 もう一つ、暗視カメラを購入しました。送料を無料にしようとすると買ってしまいますよね...

▼こちらを購入しました。

https://www.digikey.jp/ja/products/detail/seeed-technology-co-ltd/114992264/12396940

▼Seeed Studioでの販売ページはこちら

https://www.seeedstudio.com/IMX219-160IR-Camera160-FOV-Infrared-Applicable-for-Jetson-Nano-p-4602.html

▼これと同じタイプかな?と思います。

 Raspberry Pi Zero系は、カメラの端子の幅が狭いです。他のカメラを使うときは、専用のケーブルが必要です。

▼私はこちらを購入したのですが、短いので取り付けにくいような気がします。

▼長めのケーブルも販売されています。

▼部屋を暗くしてスマートフォンのカメラで撮影すると、赤く光っていました。赤外線LEDが2つあります。

カメラの有効化

 Raspberry Piのデスクトップ環境をインストールしていると、Raspberry Pi用の設定画面があります。そこからI2CやSPI、シリアルポートなどを有効化できます。

 しかし、私は以前の記事で別のデスクトップ環境をインストールしたので、設定画面がありません。コマンドでカメラを有効化します。

▼こちらの記事が参考になりました。

https://rb-station.com/blogs/article/raspberry-pi-i2c-activation

 raspi-configコマンドで、ソフトウェアの設定画面が表示されます。

▼root権限で実行する必要がある場合は、sudoをつけて実行してみてください。

▼Interface Optionsを選択します。

▼Legacy Cameraの選択肢を選んで、有効化します。

コマンドで撮影

 公式のGetting Startedのページにカメラの使い方が書かれていました。raspistillやraspividで撮影できます。

▼こちらのページです。

https://projects.raspberrypi.org/en/projects/getting-started-with-picamera/0

▼以下のコマンドで撮影できます。

▼他のコマンドはこちらに書かれているようです。

https://www.raspberrypi.org/app/uploads/2013/07/RaspiCam-Documentation.pdf

▼こちらの記事も参考になりました。

https://igarashi-systems.com/sample/translation/raspberry-pi/usage/raspistill.html

▼小型カメラではにわを撮影してみました。

 暗視カメラでも撮影してみました。

▼明るい状態で撮影した写真がこちら。若干紫がかっています。

▼部屋を暗くして撮影するとこんな感じ。ちょっとホラー...

Pythonのプログラムで撮影

 公式のGetting StartedのページにPythonでの撮影方法も書かれていたので試してみました。

▼こちらのページです。

https://projects.raspberrypi.org/en/projects/getting-started-with-picamera/4

 デスクトップ環境で使えるテキストエディタが何も入っていなかったので、今回はPython用のThonnyをインストールしました。

▼Thonnyのページはこちら

https://thonny.org/

▼以下のコマンドでインストールします。

▼DevelopmentにThonnyが追加されました。

▼起動できました!

▼シンプルにしたプログラムがこちら。<ユーザー名>は変更してください。

import picamera

camera = picamera.PiCamera()
camera.resolution = (800, 600)
camera.start_preview()
camera.capture('/home/<ユーザー名>/python.jpg')
camera.stop_preview()

▼撮影できました!

Node-REDでRaspberry Pi Zero 2の操作

起動時にNode-REDを起動する

 Node-RED MCUの記事でも触れていたのですが、Raspberry Piの起動時にNode-REDを起動させることができます。

▼「起動時に自動起動する」の項目に書かれています。

https://nodered.jp/docs/getting-started/raspberrypi

▼自動起動を設定するためのコマンドはこちら

▼やっぱり自動起動させたくないときのコマンドはこちら

▼以前の記事はこちら

xs-devでRaspberry PiにNode-RED MCUの環境を構築する

はじめに  今回はRaspberry PiにNode-RED MCUの環境を構築してみました。  少し前に発売された書籍での方法とは違って、xs-devを使っています。構築が楽になるそうです…

別端末からエディタにアクセス

 Raspberry Pi Zero 2で起動しているNode-REDに、WindowsのPCからアクセスします。自動起動と合わせると、Zero 2に電源を入れたらアクセスできるようになります。

 http://<IPアドレス>:1880でアクセスするので、IPアドレスを確認します。

▼「エディタを開く」の項目に書かれています。

https://nodered.jp/docs/getting-started/raspberrypi

▼以下のコマンドでIPアドレスを確認できます。

▼こちらのコマンドでは他の情報も表示されます。

rebootとshutdown

 execノードでrebootやshutdownを実行してもいいのですが、ノードがあったので使ってみました。

▼execノードについては、以前の記事でも使いました。

Node-REDを使ってみる その1(execノード、Pythonプログラム実行)

はじめに  今回はNode-REDのexecノードを使ってみました。コマンドを実行できるノードです。  私はNode-RED MCUを先に使い始めたので、Node-RED自体はあまり使っていま…

▼こちらのノードをインストールしました。

https://flows.nodered.org/node/node-red-contrib-rpi-shutdown

▼右のメニューの、パレットの管理からノードを追加できます。

▼injectノードで実行すると、rebootしたり、shutdownしたりできます。

▼ソースコードを見てみると、メッセージが届いたときにchild_processでコマンドを実行するようになっています。シンプルなノードですね。

https://github.com/pokiiio/node-red-contrib-rpi-shutdown/tree/master

フォルダ内のファイルを確認

 execノードでdirコマンドを実行してみました。

▼Picturesフォルダのファイルを確認するフローはこちら

▼debugノードを見ると、空白や改行文字で区切られていることが分かります。

▼splitノードで、空白や改行文字で分割してみました。

▼ファイルごとに分割されています。

撮影して画像を送信する

 execノードでコマンドを実行できるということは、撮影もできるということです。

▼raspistillコマンドを実行するフローがこちら

 撮影した写真を、WindowsのPCでも起動しているNode-REDに、HTTP通信で送信してみます。

 httpノードを使った、ローカルファイルを返すフローがクックブックにありました。

▼こちらです

https://cookbook.nodered.jp/http/serve-a-local-file

 画像を送受信する場合のファイル形式は、バイナリバッファにしています。

 Raspberry Pi Zero 2側では、http in/outノードと、read fileノードを使っています。

▼Zero 2側のフローはこちら

 このフローの場合、http://<IPアドレス>:1880/pictureにアクセスすると、画像がダウンロードされます。

▼出力形式はバイナリバッファです。

 Windows側では、http requestノードと、write fileノードを使っています。

▼Windows側のフローはこちら。送信できました!

▼先程のURLを指定して、出力形式はバイナリバッファにしています。

 フロー上に画像が表示されていますが、画像を扱うノードをインストールして使っています。

▼node-red-contrib-image-toolsノードです。

https://flows.nodered.org/node/node-red-contrib-image-tools?utm_source=pocket_mylist

▼こちらの記事で紹介されていました。

Node-REDのフロー上に画像を表示する方法 - uepon日々の備忘録

先日のエントリでNode-REDで生成した画像をデバッグ用途でフロー上に表示するという処理を使用しました。 今回はその部分を取り出して説明するとともに、もう一つの表示方…

最後に

 書いてみるとNode-REDの内容が多くなりました。このRaspberry Pi Zero 2をデバイスにまとめると、Node-REDを持ち歩いているようになりそうですね。

 IPアドレスが分かるとNode-REDにアクセスできるのは便利な反面、コマンドを自由に実行できてしまいます。セキュリティ的には危ないですね。ログインするときにパスワードを入力するなどの対策が必要になりそうです。

 カメラは簡単に使えました。取り替えも簡単なので、様々な種類のカメラを試すことができそうです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です