電波ガーデニング2016
2016年にもう少しパワーアップした形で電波ガーデニングを実施しています。よろしければ下記記事も御覧ください。
電波ガーデニングとは
勝手に命名しました。最近家庭菜園を始めたのですが、やっぱり電波な感じにしたいよね、ICTとか流行りのIoTとか活用したいよね、むしろIoP(Internet of Plants)だよね。ということで家庭菜園を電波な感じにしてみることにします。
海外では、ArduinoをベースとしたGarduinoって電波な栽培セットがあったりします。また、Garduino製作者は、最近KickstarterでGrowerbotというGarduinoを更に進化させたプロジェクトも始めています。
これを使ってみるのも面白そうですが、ちょっとお高いし輸入すると時間も手間もかかるので、自作してみようかと思います。使用するマイコンは、Arduinoでも良かったのですが、ネットやカメラの接続考えてRaspberry Pi使うことにしました。同じことしても面白くないですしね。目指すところは家庭栽培の完全自動化とエンタメ性向上です。
とりあえず今回はスマホ(iPhone等)で自宅の栽培の様子を以下のように観察することと、1時間おきの自動撮影にチャレンジしてみます。
電波ガーデニングセットアップ
まずは家庭菜園の様子を、動画でストリーミング再生してどこからでも見られるようにするのと、定点観測して毎時間写真を保存するようにしましょう。
必要なもの
- 出版社/メーカー: RaspberryPi.org
- メディア: エレクトロニクス
- この商品を含むブログ (10件) を見る
Raspberry Pi Video Module Raspberry Pi Camera Board 775-7731
- 出版社/メーカー: Raspberry Pi
- メディア: 付属品
- この商品を含むブログ (1件) を見る
TOSHIBA(東芝) microSDHCカード (日本製) EXCERIA Class10 UHS-I対応 95MB/s 16GB 海外パッケージ品 SD-C16GR7WA3
- 出版社/メーカー: 東芝
- メディア: Personal Computers
- この商品を含むブログを見る
BUFFALO 11n対応 11g/b 無線LAN子機 親機-子機デュアルモード対応モデル WLI-UC-GNM2
- 出版社/メーカー: バッファロー
- 発売日: 2011/07/30
- メディア: Personal Computers
- 購入: 198人 クリック: 5,602回
- この商品を含むブログを見る
【純正品】Apple iPadmini/iPad/iPhone/iPod用 10W USB電源アダプタ 販売店保証書付 バルク品
電源アダプタ。
Amazonベーシック USB2.0ケーブル 1.8m (タイプAオス- マイクロタイプBオス)
- 出版社/メーカー: AmazonBasics
- メディア: Personal Computers
- この商品を含むブログを見る
Raspberry Pi B+ (Plus) 専用ケース RS製 (Black)
- 出版社/メーカー: RS
- メディア: エレクトロニクス
- この商品を含むブログを見る
続きは徐々にマニアックになってくるので興味ある人だけ続きを読むをクリックください。
Raspberry Pi 2 セットアップ
最初にRaspberry Pi 2をセットアップしましょう。以下らへんの記事を参照ください。
動画ストリーミング
カメラ映像を外に飛ばすために、動画ストリーミングを行いましょう。以下の記事の「動画ストリーミング」の項目を設定すればOKです。あとは「インターネット経由でロボット操作」を参照にルータのポート 9000を解放すれば、外部からでもカメラ動画をリアルタイムで見られるようになります。
ルータのグローバルIPを調べた後、以下のようにブラウザに打ち込みましょう。例えば グローバルIPが 111.111.111.111だったときは以下のようにしましょう。
定点観測スクリプト
1時間毎にカメラを撮影します。
カメラ撮影スクリプト
昔デジカメを作った時作成したソフトを改造しました。
以下でファイル編集
$ vi shutter.py
中身は以下をコピペしましょう。
# -*- coding: utf-8 -*- import subprocess import picamera import os from time import sleep shutter_numb = 0 home_dir = '/home/pi/photo' cmd ="sudo /etc/init.d/stream stop" subprocess.call(cmd, shell=True) def cameraLoad(): global shutter_numb filename = os.path.join(home_dir, 'camera.set') fp = open(filename) tmp_shutter_numb = fp.readlines() tmp2_shutter_numb = tmp_shutter_numb[0].rstrip() shutter_numb = int(tmp2_shutter_numb) fp.close() def cameraSave(): filename = os.path.join(home_dir, 'camera.set') fp = open(filename, 'w') fp.write(str(shutter_numb)) fp.close() cameraLoad() shutter_numb +=1 cameraSave() filename = os.path.join(home_dir, str(shutter_numb) + '.jpg') photofile = open(filename, 'wb') print(photofile) with picamera.PiCamera() as camera: camera.resolution = (1024,768) camera.start_preview() sleep(1.000) camera.capture(photofile) photofile.close() #cmd ="tw 写真撮れたよ〜 --file=sample.jpg --yes" #subprocess.call(cmd, shell=True) cmd ="sudo /etc/init.d/stream start" subprocess.call(cmd, shell=True)
動画ストリーミングしていない場合は、9,10行目と最後の2行にある以下の行に関してはコメントアウトしてください(そのままでも多分動くけど)。
cmd ="sudo /etc/init.d/stream stop" subprocess.call(cmd, shell=True) cmd ="sudo /etc/init.d/stream start" subprocess.call(cmd, shell=True)
スクリプト使用する前に、事前準備として以下を実行ください。
$ mkdir /home/pi/photo $ echo 0 > /home/pi/photo/camera.set
後は、以下を実行すると撮影できます。 /home/pi/photo 以下に数字付きのjpgファイルが増えていきます。
$ python shutter.py
cronで定期的な撮影実行
これで撮影できるようになったので、後はこれを定期的に自動実行するようにしましょう。定期的なコマンドの実行はLinuxの場合、cron(クーロン)を使うのが定石です
最初にcronを編集するエディタを変更しましょう。おまじないみたいなものです。下記コマンドの後[3]を選択するとvimで編集できるようになります。
$ sudo update-alternatives --config editor
下記コマンドでcronの設定を変更できます
$ crontab -e
エディタが開くので、毎時10分に撮影実行するために一番下の行に下記内容を追記してやります。
10 * * * * python /home/pi/script/shutter.py
ちなみに10分毎に撮影したい場合は以下です
*/10 * * * * python /home/pi/script/shutter.py
設定したら以下のコマンドで再起動。
$ sudo shutdown -r now
うまくいけば指定した時間毎に写真が撮影されて /home/pi/photo以下に数字付きで保存されていきます
設置例
私の場合は、以下のように窓にテープで固定してやりました。各自やりやすいように固定するのがよいと思います。
今後の予定
実装したい機能は以下。予定は未定。
- 水やり自動化・もしくは遠隔地からの水やり
- 植物の生育データログ取得
- 育成日記自動生成
水やりはまさに以下のようなイメージ。ぜひ公開して欲しいな。
Arduino自動水やり器できた。プロトタイピングの手法で、なるべく部品加工せずに既成品の組み合わせでサクッと作る作戦。 塩ビパイプは2〜3メートルくらい延ばしても問題無さそう。 pic.twitter.com/p1ULQjCI6D
— 藤本直明/FUJIMOTO Naoaki (@naokiring) 2015年6月14日
参考サイト
上記2つのサイトはRaspberry Piでのcron設定の参考にしました。