観葉植物の気持ち
2017年11月11日
AITCシニア会 観葉植物チーム
吉田、依田、須能Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

目 次
１章 光合成が活発になる環境をしりたい
２章 CO2センサーで光合成を測る
３章 Webカメラ+OpenCVで葉面積を測る
４章 環境センサーで生育条件を測る
５章 感想と今後について

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

1-1. アイディア• 観葉植物を一生懸命育てても、枯らせてしまうことはありませんか？
• どうやら植物によって、環境の好みがちがうようです。
• そんな植物たちの「気持ちが知りたい！」と、計測する仕組みを考えました。
明るくていいねー♥
乾燥する所はキライ(>_<)

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

1-2. 検討した手段
植物の元気さと環境データから、植物にとって良好な生育条件を見つけます。
定期：光合成の活発さ＋環境計測

通常：植物の生長＋環境計測

土壌水分センサー

土壌水分センサー

照度センサー

照度センサー

CO2センサーWebカメラ

容器

RaspberryPi
容器中のCO2減衰速度で光合成を計測

RaspberryPi
画像中の葉面積で植物の生長を計測→〇章で説明Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

→〇章で説明1-3. 光合成の活発さ計測• チャンバー法

CO2交換速度 P [µmol/m2sec]
𝑃=​𝐶↓1 −​𝐶↓2 /​𝑡↓2 −​𝑡↓1 ∙​𝑉/𝐴

CO2

葉面積 A[m2]

CO2濃度

容器 V[m3]

呼気導入

C1

計測値を指数近似
Cnt1tn

参考URL:http://envbio.envi.osakafu-u.ac.jp/osakafu-content/uploads/sites/34/2015/12/Chamber-1.pdf
Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

時刻[sec]2-1. CO2センサー MH-Z19• 秋月電子では扱っていない• 中国のメーカーから直接購入– PayPalが使えたのでちょっと安心– 配達方法の選択肢がたくさん• Fedex：とっても高い• 中華郵政:いつ届くか不明• 佐賀ダイレクトメール：
リーズナブルだけどそれ誰？
è届いてみたら「佐川急便」でした• 端子は別途購入して半田付け• 大きさがブレッドボードいっぱいなので本体下のジャンパーで別の列へ
Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

6

2-2. 通信方法は２つ• PWM：– デジタル出力に1004ms周期のHIGHの長さでppmを表現
7501004

ex. 2*(750ms-2ms)=1496ppm• UART（シリアル通信）

1msが2ppm

0ppmを2msで表現– Rx(シリアル入力)をArduinoのTx(1番)に接続– Tx(シリアル出力）をArduinoのRx(0番)に接続– Request 0xFF0186000000000079 を送信– Response 0xFF86HHLL00000000?? を受信
ppm = HH * 256 + LL(??はcheck sum)
Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

7

2-3. PWM通信のコード (Arduino)#deﬁne pwmPin 5
int prevVal = LOW;
long th, tl, h, l, ppm = 0;
void setup() {Serial.begin(9600);
pinMode(pwmPin,INPUT);
Serial.println("ms:PPM");}void loop() {long tt = millis();int myVal = digitalRead(pwmPin);if (myVal == HIGH) {if (myVal != prevVal) {h = tt; tl = h - l;prevVal = myVal;}} else if (myVal != prevVal) {l = tt; th = l - h;prevVal = myVal;
ppm = 2000 * (th - 2) / (th + tl - 4);
Serial.println(String(i) + “:” +String(ppm));}}

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

8

2-4. PWM通信のコード (RasPi)#!/usr/bin/python
import RPi.GPIO as GPIO
import nme
import sys# import serial,os,nme,sys,datenme,csv
pwmPin = 24
GPIO.setmode(GPIO.BCM)
GPIO.setup(pwmPin, GPIO.IN)
preVal = GPIO.LOW
th = 0tl = 0
h=0
l=0
ppm = 0snme = nme.nme()*1000

try:while True:i = nme.nme()*1000
myVal = GPIO.input(pwmPin)
if myVal == GPIO.HIGH:
if myVal != preVal:
h=itl = h - l
preVal = myValelse:
if myVal != preVal:
l=ith = l - h
preVal = myVal
ppm = 2000*(th - 2)/(th + tl - 4)
print("%s, %s")%(i-snme,ppm)
sys.stdout.ﬂush()
except Excepnon as e:
sys.stderr.write('Error occurred: %s'%e)
except KeyboardInterrupt as e:
sys.stderr.write('nCtrl+C pressed’)

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

92-5. UART通信のコード#define RxPin 0#define TxPin 1

void loop() {int c;
int ppm;char CAL[9] = {0XFF, 0x01, 0x87, 0x00, 0x00,0x00, 0x00, 0x00, 0x78};
Serial.print("Write CMD");
char CMD[9] = {0xFF, 0x01, 0x86, 0x00, 0x00, for (int i=0; i<9; i++) {0x00, 0x00, 0x00, 0x79};
Serial.write(CMD[i]);}void setup() {if (Serial.available() > 0) {Serial.begin(9600);
do {pinMode(RxPin, INPUT);c = Serial.read();pinMode(TxPin, OUTPUT);} while ( c != 0xff);
Serial.print("Calibrate to 400ppm");for (int i=0; i<8; i++) {for (int i=0; i<9; i++) {c = Serial.read();Serial.write(CAL[i]);if (i == 1) ppm = c * 256;}
if (i == 2) ppm += c;Serial.println("");
Serial.print(" ");}Serial.print(String(c,HEX));}
Serial.print(" ppm = ");Serial.println(ppm);
delay(1000);}}

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

2-6. CO2測定中息を吹き込む！

須能さん

MH-Z19Raspberry PIの
電源コード

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

11

2.7 測定結果
622ppm700600

この凸凹は何？

500400室内標準は 300
160ppmくらい
200
10000

須能さんが息を吹き込むと少しずつ上昇

1000

2000

3000

4000

5000

6000

８０分ほどで200ppmまで下がったところで時間切れ！

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

123-1. 植物の生育計測
ラズパイ上のPython-OpenCVプログラムにより、カメラ画像から葉面積を求めてCSV出力しました。
USB

日時 葉面積型式:RaspberryPi3 model B
CPU:1.2GHz 64-bit quad-core ARMv8
メモリ:1GB
OS:Raspbian ver.4.9
言語:Python3,OpenCV3
Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

型式:Logicool C270
画素数：120万画素
撮影レート:最大30フレーム/秒
機能:自動明るさ調整

13

3-2. 葉面積計測処理• バックプロジェクション法
事前撮影画像

参照画像

参照画像読込

画像キャプチャヒストグラム算出

局所領域設定No

ヒストグラム類似？
セル数

OpenCV関数:
cv2.calcBackProject

局所領域抽出
抽出セル数算出

セル値
撮影画像

Yes

CSV出力
抽出画像

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

14

3-3. 葉面積計測方法• 光が安定する夜間に連続計測
日付

画像全体に対する比率
時間 抽出セル数

画素サイズを測る

方眼紙

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

15

3-4. 葉面積計測結果• 光が安定する夜間に連続計測

部屋の消灯若干成長？
遮光カーテンの光漏れ？

カーテン開成長していたとしたら、一晩で葉面積8mm2に相当
Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

16

4-1. 気温・湿度センサー DHT11• AMAZONで購入• スペック– 動作電圧：DC 5V– 湿度測定範囲：20－90% RH– 湿度精度：±5% RH– 温度測定範囲：0～60℃– 温度測定精度：±2℃• 出力値は構成済で無調整で使用可• データピンにプルアップ抵抗が付いており直接GPIOに接続可
Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

174-2. 接続方法

表にまとめました。
Raspberry Pi3

DHT11

PIN2 (5V)

VDD

PIN7 (GPIO4)DATA

PIN6 (Ground)

GND

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

18

4-3. ソースコード

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

19

4-4. 測定結果

温度22℃～23℃、湿度17%～18%で計測された。
Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

20

4-5. 照度センサー Cdsセル• 秋月電子で購入• スペック– ピーク波長：540nm– 最大電圧：150VDC– 最大電力：100mW– 明抵抗：10k～20kΩ
– 暗抵抗：±1MΩ
– 温度係数：0.002/℃• 光の強さに応じて電気抵抗が低下する抵抗器• 緑色の光に対して高感度
Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

21

4-6. 土壌湿度センサー• AMAZONで購入• スペック– 動作電圧：ＤＣ3.3～5Ｖ• コンパレータモジュール(ＹＬ-38)と土壌湿度プローブ(ＹＬ-96)のセットで使用• 土壌の抵抗値を測定• アナログ・デジタル出力• 今回の実験では、土壌の湿度が低かったため計測不可

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

22

4-7. 接続方法
アナログ出力なのでA/Dコンバータ MCP3208を介してRaspberry Pi3のGPIOに接続する。
表にまとめました。
Raspberry Pi3

MCP3208

PIN1 (3.3V)

VDD

PIN1 (3.3V)

VREF

PIN6 (Ground)

AGND

PIN23(SP0 SCLK)CLK

PIN21(SPIO MISO)

DOUT

PIN19(SPIO MOSI)DIN

PIN17(SPIO CE1)

CS

PIN6(Ground)

DGND＊ 土壌湿度センサーも同様の接続方式

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

23

4-8. ソースコード

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

24

4-9. 測定結果

土壌湿度と照度を交互に計測した。照度は222～224で計測された。

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

25

4-10. 測定時の回路構成
土壌湿度プローブ

気温・湿度センサー

照度センサー

コンパレータモジュール
Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

26

5-1. 感想(須能)• 分かったこと– 日当たりが良すぎるより、少し暗い方がCO2交換速度が速いなど、植物の環境の好みが測れました。

• 難しかったところ– RaspberryPiでのPythonとOpenCVの環境構築→お世話になりました！
– OpenCVでの葉領域の抽出処理→葉の色が複雑なため、二値化処理ではダメでした。
– 定周期撮影でのキャプチャ失敗 [未解決]→Sleepが長いほど、成功率が大きく低下します。

• 隘路事項– 光合成・葉面積に対して良好な環境条件を分析します。
Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

27

5-1. 感想(須能)• センサが統合できて、よかったです！

計測中

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

28

5-2. 感想、その他（吉田）• やっぱりセンサーは難しい！
理論的に思ったような数値が全然出ない• Raspberry Pi 3ではシリアル通信に成功せず
なんとか頑張りたいけど、手がかりが…
• Raspberry PiをLANケーブルでMacに直結して、キーボードとディスプレイを持ち歩かないで済む方法を確立しました（付録参照）

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

5-3. 感想（依田）• 講習からテーマを決めた製作まで、約1年間 IoTに取り組むことが出来て良かったです。ありがとうございました。
• Raspberry Pi使用してセンサーの制御を行いましたが、特にアナログ入力に苦戦しました。
• 今後も、モーター制御やWebカメラといった機器の制御に挑戦していきたいと思います。

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

30

Raspberry Piをディスプレイもキーボードも無しで使う
2017年10月
AITCシニア会 観葉植物チーム
吉田

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

課題意識• Raspberry PIを操作するには、HDMI接続可能なディスプレイと、USBキーボードが必要• Macからsshでログインすれば使えるが、接続するIPアドレスを知る必要がある• 自宅等であれば、一度接続しておけば、あとは起動すればいつも同じIPアドレスにたいてい接続するので良いが、公共の場では無線LAN設定から始めなければならない

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

解決策• MacとLANケーブルで直結• 必要条件– MacのLANアダプタ（昔のMacProには付属してた）– LANケーブル– Raspberry Pi 3で実証済• 効果– Raspberry Pi側に新たな無線LAN設定が不要– Macのみインターネット接続すればいい– ディスプレイとキーボードを持ち歩かないで良い• 課題：Windowsではうまくいかないことが多いらしい
Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

手順• Macのアップルメニュー→「システム環境設定」→「共有」→「インターネット共有」にチェックを入れる• MacとRaspberry PiをLANケーブルで直結• Raspberry Piを起動• Macのターミナルを開き、arp –a | grep 192で192.168.2.?が出現するの待つ（?は普通は2）• 出現したら ssh pi@192.168.2.?
• piのパスワード入力（デフォルトはraspberry)
Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

名前でアクセスIPアドレスではなく名前でアクセスkanouできるようにする方法• Raspberry Piにavahi-daemonを設定する– sudo apt-get install avahi-daemon– sudo insserv avahi-daemon– sudo apt-get install avahi-autoipd• すると次回からは raspberrypi.local でアクセス可能– ssh pi@raspberrypi.local
Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

35

Raspberry PiのGUIを使う• Raspberry Piにnghtvncを設定– sudo apt-get update– sudo apt-get upgrade– sudo apt-get install nghtvncserver• sshでログインした後にnghtvncserverを起動– nghtvncserver– 初回起動時のみパスワードを入力• MacのFinderから「移動」→「サーバへ接続」→「vnc://raspberrypi.local:5901」と入力して「接続」• パスワードを入力

Copyright © 2017 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

36