スマート農業への道①〜Raspberry Piで成長記録を自動撮影!〜

Raspberry Pi

スマート農業と聞くと、機械が自動でやってくれるので便利だと思う反面、「何か難しそう…」と思う人も多いのかもしれません。

しかし、実はスマート農業を始めるのはとても簡単になりました。スマート農業をするために必要な機械類が安価で簡単に性能の良い物が手に入るようになったからです。

特に、今回紹介する「成長記録の自動撮影」という面では、「Raspberry Pi」を使ったシステムが手軽で効果的な方法として注目されています。

このシステムを構築するとこんな感じで成長の差がわかるようになります。

1日でもかなり成長しているので、決まった時間に自動で撮影してくれるのはとても便利です!

この記事では、初めての方でもスムーズにスマート農業の世界に足を踏み入れるための手順を詳しく解説します。「Raspberry Pi」の活用方法や自動撮影の仕組みを丁寧に説明するので、心配せずに取り組んでみてください。

この記事では実際の「Raspberry Pi」の操作とプログラムの内容について、以下の項目についてまとめていきます。

実装手順
  • 「Raspberry Pi」とカメラモジュールの接続
  • 写真撮影用のシェルスクリプトの作成
  • 「crontab」によるスケジュール機能の設定

さあ、便利なスマート農業の世界へ、一緒に飛び込んでみましょう!

スポンサーリンク

はじめに:どんな機材を使えばいいのか

スマート農業を実現するためには、様々なことを自動化していく必要があります。最終的には、カメラや土壌センサー、ポンプなどを活用し、状況に応じた機械制御が必要になってきます。

特に今回のテーマである成長記録の撮影については、決まった時間に、同じ角度・距離になるように調整して撮影する必要があるのでかなり大変です。

「○時間ごとに〇〇をする」っていうのは、人力だとすごく手間がかかるよね

その手間を簡単に省くことができます。そう、「Raspberry Pi」ならね

そんな時に活躍するのが「Raspberry Pi」というコンピューターです。

この「Raspberry Pi」は電子工作をする人々にはおなじみのアイテムですが、このコンピューターに各種センサー類を取り付けることで、成長記録の撮影、土壌のモニタリング、灌水などの作業を全自動で行うことが可能となります。

「ラズパイ」っていう愛称で呼ばれているよ

今回は簡単に使用する本体の紹介とカメラに関する機材の紹介をしていきます。

本体:「Raspberry Pi」について

「Raspberry Pi」には大きく分けて4つのよく使われるラインナップがあります。

GPIO映像出力CSIポートアナログ入力備考
Raspberry Pi4×万能の基本型
Raspberry Pi Zero2×小型化モデル
Raspberry Pi 400××キーボード一体型
Raspberry Pi Pico××電子工作用モデル
※CSI(Camera Serial Interface)ポートとは、カメラモジュールを接続するために必要な端子のことです。これがあると簡単に使える専用カメラを利用することが可能になります。このCSIポートがない場合はウェブカメラを接続するのが一般的です。

色々な商品のラインナップがありますが、表にある上の2つを使うのが、できないことが少なくて無難だと思います。

私は表の上2つの型落ちの「Raspberry Pi 3」と「Raspberry Pi zero」を使っています。

ワンダフルスモールな「Raspberry Pi Zero」

また、旧型でも新型でも定価は大差のない価格設定なので、特にこだわりがなければ性能が高い新型を選んだ方が無難です。

でも、お高いんでしょう…?

安心してください!(正規代理店から購入すれば)安いですよ!

正規代理店のKSYではOS書き込み済みのSDカード、ケースや電源など6点がセットになったスターターキットが17600円(2023/06現在)で販売されています。

Amazonで販売されているセットは割高ですが、冷却ファンやカードリーダーなども含まれているようです

カメラの選び方について

今回は最初のステップとして、「自動で成長記録を撮影する」ことを目指していきます。

撮影するためのカメラとして専用のカメラモジュールかUSB接続のウェブカメラのどちらかが必要になってきます。簡単にそれぞれ特徴をまとめます。

画素数値段汎用性選択肢特徴
カメラモジュール500万999〜×専用のCSI接続カメラで低価格・高性能
ウェブカメラ200万〜2000〜PC用カメラなので使い回し可だがピンキリ
ウェブカメラ500万〜3000〜500万画素以上だと価格帯が上がる

同じ画素数だと、カメラモジュールの安さが分かるね!

純粋に画素数だけで性能は決まりませんが、最小限の設備のカメラモジュールはかなりお手頃ですね

次からはそれぞれの違いを詳しく紹介していきます。

カメラモジュールの場合

カメラモジュールは、Raspberry PiのCSIポートに直接接続できる専用のカメラです。

このカメラは小型ですが性能が高く、性能の割に安価で手に入るのが魅力です。「Raspberry Pi」専用のカメラになっているので撮影や設定などが簡単に行えるのも特徴です。

現在(2023/06/05)の価格はAmazonでは999円となっています。

1000円を切る価格で、解像度は500万画素で2592 × 1944ピクセルの静止画を撮影することが可能です。

色々剥き出しなのが気になるけど、かなり性能は良さそうだね!

ケース付きのものを買うのも良いですが、自分でホルダーなどを作るのも面白いですよ

値段が安く性能も悪くないのですが、注意点としてはCSIポートを仕様するので、このポートがない機種では使うことができません。

「400」と「Pico」ではCSIポートがないから使えないんだね

GPIOを使うカメラもありますが、割高で性能があまり高くないのでオススメできません…

他には広角タイプや赤外線カメラなど様々なモデルが販売されています。

植物の成長記録には通常のモデルで問題ありませんが、庭全体を撮ったり、夜間の害獣の監視をしたりする用途では他のモデルを探してみると良いかもしれません。

ウェブカメラの場合

ウェブカメラは、通常のPC用品として販売されているUSB接続のカメラのことです。

リモートワーク需要によって一時は品薄になりましたが、今では普通に在庫が復活し、各メーカーが様々な機能や見た目のカメラを販売しています。

カメラモジュールと比較すると商品のラインナップが多いので選択肢が多い点が特徴で、機能面でカメラモジュールには無い性能のものを選べる上に、棚にかけたり、スタンドが付いていたりとすぐに設置できるものメリットです。

価格としては2000円程度から販売されている物が最安モデルになると思いますが、この価格の商品の画素数はほとんどが200万画素となっています。

カメラモジュールの500万画素と比べると若干物足りない印象です。また、同程度の500万画素のモデルだと価格帯が3000円程度からになってしまいます。

ウェブカメラとして高いわけではないけど、カメラモジュールの3倍の値段って考えると…

様々な選択肢があるのがメリットの一方で、デメリットにもなりえます。

メーカーによってカメラの仕様が違うので、「Raspberry Pi」での初期設定や撮影条件の設定などで手間がかかる場合があるかもしれません。

ウェブカメラはUSB接続なので他のPCと併用できるので、家に使っていないものがあったり、別で使う機会がある場合は試しに使ってみると機材が無駄に増えずに済むでしょう。

最終的には、予算や利用環境によって変わるので両方を検討して、自分に最も適したものを選択してください。

カメラモジュールの取り付けと撮影環境の構築について

次にカメラモジュールの取り付けと撮影環境を整えていきます。

まず最初にカメラモジュールと「Raspberry Pi」の本体をリボンケーブルで接続します。

カメラモジュールとケーブルの接続

端子についている黒い留め具がケーブルのロックになっているので、引っ張ってロックを解除し、ケーブルを差し込んでから黒い留め具を押してロックします。ケーブルがグラつかなければOKです。

次に、決まった位置から撮影できるようにカメラモジュールを固定していきます。

固定にはこちらのクランプと関節式のマジックアームを使ってカメラモジュールと棚を2つのクランプで挟み込むことで位置や角度などを自由に調節できるようにしています。

クランプでのカメラモジュールの固定

関節式のマジックアームの両サイドにクランプを取り付けることで、クランプが取り付けられる場所であれば自由な角度でカメラを設置することができるようになります。

このような感じでカメラモジュールを固定しています。吊り下げが可能なので、灌水などの作業でも邪魔になりません

また、最初についているケーブルは15cm程度と私の環境には短かったので、長いケーブルを購入して使っています。

次はいよいよプログラムを入力していきます!

カメラモジュールを使った写真撮影のプログラムコードについて

初期設定は入手経路によって異なるので一概には言えませんが、KSYのスターターセットにはOS書き込み済みのSDカードが付属しているので簡単です。

初期設定が済んだら、カメラモジュールが実際に機能するかどうかの確認をしていきます。

「Raspberry Pi」で撮影を行うためのプログラムは以下のとおりです。今回は画像の名前に日時をつけて画像をファイル名から区別できるようにしました。

フォルダ上で「右クリック」→「新規作成」→「空のファイル」→「〇〇.sh」でファイルを作ったら以下のプログラムコードをコピペします。(以降はcamera.shという名前を付けたとして話を進めます)

〇〇には、文字だけで内容がわかるような名前を入れるといいよ

#!/bin/bash

# 現在の日時を取得
datetime=$(date +"%Y-%m-%d_%H-%M-%S")

# 画像を撮影してファイルに保存
raspistill -o "$filename".jpg

これで「camera.sh」がある場所に、「2023-6-01_12-34-56.jpg」のような撮影した日時付きの画像が保存されます

めっちゃ簡単だね!

これを実行させれば写真が撮れるようになります。次は実際にこれを動かしてみましょう。

実践!実際に写真を撮ってみよう!

まず、先ほど作った「camera.sh」を「Raspberry Pi」に実行してもらうためには、

「〇〇って場所に書かれてる××」っていうプログラムを実行して

「〇〇の××」ですね。分かりました!

という感じで、「どこにある何という名前のプログラムを実行するのか」を伝える必要があります。

この「どこにある何という名前のプログラム」を指定するフレーズはパス(path)と呼ばれていて、コンピューターの中の住所のような存在になります。

このパスを取得するのは簡単で、パスを知りたいファイルなどを「右クリック」→「パスを取得する」を押すだけでパスのコピーが完了するので、後は必要な場所でこのパスを貼り付けると使えるようになります。

パスを取得したら、指示を出せる「ターミナル」に入力をして、プログラム通りに動いてもらいましょう。

実際に「camera.sh」を実行するためには2つの手順が必要です。

まず1つ目は、「camera.sh」に実行権限を与えます。コード自体は簡単で、「chmod +x 」を入力した後にコピーしたパスを貼り付けてエンターキーを押します。

chmod +x [パスのコピーを貼り付ける]

簡単に言えば、「これは起動を認めたファイルですよ」という連絡をしてあげます。この連絡は各ファイルにつき最初の一回だけ必要です。

ウイルスとか誰かが勝手にやっているわけではないよ、という確認なんだね

「camera.sh」に実行権限を与えたら、いよいよ「camera.sh」を実行します。今度はターミナルに次のコードを入力してエンターキーを押します。

sudo [パスのコピーを貼り付ける]

この「sudo」は管理者権限を使ってパスの内容を実行すると言う意味です

これも「ちゃんと許可出してますよ!」っていう報告なんだね

起動するとファインダービューが表示され、しばらくすると画像が保存されます。

おぉぉ!これで自由に写真が撮れるんだね!

もし、カメラ位置の調整をしたければ次のコードを試してみてください。写真は撮影できませんが何かのキーを押すまでファインダービュー(プレビュー)を表示させっぱなしにできます。

#!/bin/bash

raspistill --nopreview --fullscreen --timeout 0 &

# キーボード入力待ち
read -n1 -s -r -p "Press any key to exit..."

# プレビュープロセスを終了
killall raspistill

(詳しくはこちらのプログラムコード置き場に散らかしてあります…)

「crontab」で決まった時間に写真を撮ってもらおう

いよいよ自動で撮影する方法についてまとめていきます。

先ほど作った「camera.sh」は、今のままでは手動でしか写真を取れません。これを決まった時間に起動させることで成長記録を自動で撮ることが可能になります。

自動化を行う時に一番簡単なのは「crontab」というスケジュール管理ができる機能を使うことです。

0 5-19/1 * * * /path/to/camera.sh
0 0 * * 1 /path/to/timelapse.sh

1行目のコードでは、「毎日5〜19時の1時間ごとに/path/toの場所にあるcamera.shの処理を行う」というスケジュールです。これにより毎日15枚分の写真を自動で取れるようになります。

2行目のコードで「月曜日の0時にtimelapse.shの処理を行う」ことによって、前の月曜日から日曜日までの1週間分に撮り貯めた画像をタイムラプスに変換するようにします。

今回はタイムラプスまではやれませんが、次回でこの方法をまとめていきます

このように「crontab」を設定すればプログラムさえ用意しておけば、何もしなくても毎回写真や動画が次々に生成されていくので非常に便利です。

おぉ!一気に話がそれっぽくなってきたね!

こういった単純作業を自動化することで、植物栽培や鑑賞の方に時間を費やすことができるようにするのが目的です

「crontab」の設定について

順を追って設定を済ませていきましょう。作成した「camera.sh」を右クリックしてパスを取得して、ターミナルから次のコードを入力して「crontab」の設定を開きます。

corntab -e

設定が開けたら、日時設定をした後に先ほどコピーしたパスを貼り付けていきます。

0 5-19/1 * * * [パスのコピーを貼り付ける]

これで毎日5〜19時の1時間ごとに設定したプログラムを実行できるようになりました。

もし、毎日朝の8時30分に1回だけ実行したいなら次のようになります。

30 8 * * * [パスのコピーを貼り付ける]

順番に分、時、日、月、曜日を表しています

ここまで設定できれば後は待つだけです!

誤字やコピペミスなどのケアレスミスがなければシンプルなプログラムなのでしっかりと動いてくれるはずです。

crontabでスケジュール通りに機能しているのが確認できたら、これで毎回カメラを構えずとも植物の成長を自動で追ってくれるようになりました!

自動で成長記録装置が完成!

これで写真撮影、スケジュール設定の2つができればこれで自動的に成長記録が撮れるようになりました。

写真が溜まってくると、1時間毎でも植物の成長が確認できるのですごく楽しいです

これでスマート農業の1歩が踏み出せたね!でも、まだ終わりじゃないんでしょ?

第2回は栽培環境のデータをセンサーを使って測定して集計する機能をつけていきます!

これから更に機能を拡張していきます。予定としては以下のような順番で機能を発展していく予定です。

Raspberry Pi の機能拡張
  • 今回
    成長記録の自動撮影
  • 2回目
    センサーを用いた栽培環境の記録

    温度・湿度と土壌水分の測定をして、データログを作成する

  • 3回目
    各種情報を埋め込んだ画像の作り方について

    成長記録に余白を作成し、その余白に日付や気温などの各種情報を記載する

  • 4回目
    成長記録の自動でタイムラプス化を目指す

    撮影した成長記録を確認しやすいように定期的にタイムラプス動画に変換する

  • 5回目
    ガスセンサーによる熟期の判定を行う

    ガスセンサーを用いて、イチジクがどの程度熟したのかを判定する

番外編:「成長記録だけで十分!」という人向けに

もし成長記録の撮影ができれば十分という場合には、タイムラプス機能を持った定点観測用カメラも選択肢に入るかもしれません。

設定した間隔で静止画を撮影した後、自動でタイムラプス動画に変換してくれます

かなり便利だけど、結構お高いんだよね…

その分液晶がついていたり、すぐに使えるので「自分で色々設定するのは…」という人にはオススメです

コメント

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