屋外設置水槽向け
環境監視システムの製作
Hamamatsu.rb / Xiao Project / Rowan Tools
Langur
Last update: 2022/12/03
ごめんなさい
Rubyの話はないです
Introduction
ミナミヌマエビ
4
• 体長2~3cm程度
• 水槽のコケ掃除用によく飼育される
• コケというか藻
• 死骸も捕食する→魚や貝の死骸は骨や殻だけになる
• 卵から稚エビとして産まれる
• 他種はプランクトンとして産まれるものが
多く繁殖困難
• 屋外で飼育すると爆殖する
• 発泡スチロールに水を張っておくだけでよい
• ザリガニの餌を与えるともっと増える
• 釣りで餌に使える
画像出典:
[a] https://ja.wikipedia.org/
ミナミヌマエビの画像の著作表示
Sasapy, 2007
ミナミヌマエビ[a]
CC-表示 3.0
飼育環境
5
• 天面に寒冷紗を貼付け
• 通気口
• 蚊や他の昆虫の侵入防止
• 万が一蚊が湧いたら近所迷惑…
• エビがボウフラやヤゴ等に捕食される…
• ソイル(土)の設置
• エビの足場用
• 糞の分解促進用
• 浮遊性の水草の設置
• エビの足場用
• 飼育水の富栄養状態化の防止用
• マツモやアナカリス(オオカナダモ)を栽培
• メンテナンスは水の注ぎ足し、水草を間引く程度
エビの大量死
6
屋外に設置した水槽で夏にエビの大量死が発生。
飼育水が熱かったことから、太陽光や外気温により茹ったと思われる。
また、酸素欠乏が疑われる。
画像出典:
[b] エビ水槽以外 https://www.irasutoya.com/
[c] エビ水槽 https://www.gex-fp.co.jp/fish/blog/columns/vol-08-2/
[d] 水中の飽和溶存酸素量 https://www.toadkk.co.jp/
外気温・水温から取得を始めてみる
環境の実態把握が急務
Solution
システム構成
8
収集した
データの閲覧
データの
蓄積・解析
LAMP構成
- Linux
- Apache
- MySQL
- PHP
RESTful API
データの収集
WSNノード
- Wi-Fi接続
- 外気温・水温計測
屋外設置
- 要高温環境耐性
- 要防水性
Raspberry Piの採用
- Wi-Fi対応
- センサの接続
- 高温環境耐性
→防水加工耐性
Shrimp Tank Pi Nodeと命名
[1] 小野田晃久, 峰野博史, 施設園芸環境向け無線センサノードの開発, 農業情報学会2020年度年次大会講演要旨集, vol. 2020, pp. 162-163, May. 2020
高温環境耐性はPiNode[1]で実証済
STP Node
9
Hardware / Software構成
• メイン基板
• Raspberry Pi Zero W
• Raspberry Pi OS
• ApplicationはPythonで作成
• 水温センサ
• DS18B20 … 1-Wireで接続
• ファイル読出しでOK
• 温湿度センサ
• SHT31 … I2Cで接続
• pisht30[2]を使用 … PyPIで公開済
• GPIOの操作にpigpiodを使用
• Pythonのセミナで利用するために作成・公開
• M5StickC用のEHV III HATを利用するために作成
• ENV III HATにSHT30が搭載されている
Raspberry Pi Zero W DS18B20 SHT31
[2] Akihisa ONODA, pisht30, https://pypi.org/project/pisht30/, PyPI, Jan. 2022
画像出典:
[e] Raspberry Pi Zero W https://www.raspberrypi.com/
[f] DS18B20 / SHT31 https://akizukidenshi.com/
[g] ENV III HAT https://www.m5stack.com
温度センサはアナログセンサ + A/Dコンバータ
を使う手もあるが、利便性のためモジュール化
されたものを採用(お金で解決)。
STP Node
10
部品 数量 調達先 備考 画像
Raspberry Pi Zero W 1 KSY 昔購入した在庫
microSDカード 1 Amazon 高耐久モデル推奨
Ex. SanDisk Extreme Pro シリーズ
DS18B20 1 Amazon
水温センサ
1-Wire
SHT31 1 秋月電子通商
温湿度センサ
I2C
主な部品と調達先
STP Node
11
Application
#- -*- coding: utf-8 -*-
import pisht30 as SHT31
import time
import json
import requests
URL = “サーバーのURL"
AUTH = “サーバーの認証情報"
DS18B20 = "/sys/devices/w1_bus_master1/28-012025646549/temperature"
def read_ds18b20():
val = 0.0
try:
file = open(DS18B20)
wt_str = file.read()
val = float(wt_str.strip()) / 1000.0
except Exception as e:
print(e)
finally:
file.close()
return val
def read_sht31():
config = {'address': SHT31.Address.HIGH.value}
obj = SHT31.PiSht30(config)
return obj.read()
ds18b20 = read_ds18b20()
sht31 = read_sht31()
value = {}
value['wt'] = round(ds18b20, 2)
value['at'] = round(sht31['temperature'], 2)
value['rh'] = round(sht31['humidity'], 2)
value['time'] = int(time.time())
value['auth'] = AUTH
data = json.dumps(value)
body = {'record': data}
#print(body)
res = requests.post(URL, body)
DS18B20の読み出し
SHT31の読み出し
センサの読み出し
データの加工
データの送信
Results
計測結果
13
11/04
11/11
11/18
11/25
12/02
• 日中: 気温 > 水温
• 夜間: 気温 < 水温
• peakが水温のほうが遅れる
• 水の方が温度変化が少ない
猛暑日のエビの死滅は
気温のピークより遅れる
可能性がある
対策を取れる可能性がある
水の方が空気よりも比熱が高い
→ 温まりにくく冷めにくい
… 意図せず確認できた
Conclusion
まとめ
15
• 屋外設置水槽を監視する仕組みはできた
• STP Nodeによる外気温・湿度、水温の監視
• サーバーへのデータ蓄積
• 今後の展望
• 可視化や通知の仕組みの構築
• 気象庁のデータとの連携
• FAQ
• pHや溶存酸素などの対応予定はない
• センサーが高い(安いもので、pH $70、溶存酸素 $170くらい)
• 2w~4w毎に校正が必要 (校正に劇薬が必要、個人で調達は厳しい)
• 試薬の方が安価で対応しやすい
• センサーの寿命が長くて1年
Thank You!

221203_stpnode.pdf

  • 1.
    屋外設置水槽向け 環境監視システムの製作 Hamamatsu.rb / XiaoProject / Rowan Tools Langur Last update: 2022/12/03
  • 2.
  • 3.
  • 4.
    ミナミヌマエビ 4 • 体長2~3cm程度 • 水槽のコケ掃除用によく飼育される •コケというか藻 • 死骸も捕食する→魚や貝の死骸は骨や殻だけになる • 卵から稚エビとして産まれる • 他種はプランクトンとして産まれるものが 多く繁殖困難 • 屋外で飼育すると爆殖する • 発泡スチロールに水を張っておくだけでよい • ザリガニの餌を与えるともっと増える • 釣りで餌に使える 画像出典: [a] https://ja.wikipedia.org/ ミナミヌマエビの画像の著作表示 Sasapy, 2007 ミナミヌマエビ[a] CC-表示 3.0
  • 5.
    飼育環境 5 • 天面に寒冷紗を貼付け • 通気口 •蚊や他の昆虫の侵入防止 • 万が一蚊が湧いたら近所迷惑… • エビがボウフラやヤゴ等に捕食される… • ソイル(土)の設置 • エビの足場用 • 糞の分解促進用 • 浮遊性の水草の設置 • エビの足場用 • 飼育水の富栄養状態化の防止用 • マツモやアナカリス(オオカナダモ)を栽培 • メンテナンスは水の注ぎ足し、水草を間引く程度
  • 6.
    エビの大量死 6 屋外に設置した水槽で夏にエビの大量死が発生。 飼育水が熱かったことから、太陽光や外気温により茹ったと思われる。 また、酸素欠乏が疑われる。 画像出典: [b] エビ水槽以外 https://www.irasutoya.com/ [c]エビ水槽 https://www.gex-fp.co.jp/fish/blog/columns/vol-08-2/ [d] 水中の飽和溶存酸素量 https://www.toadkk.co.jp/ 外気温・水温から取得を始めてみる 環境の実態把握が急務
  • 7.
  • 8.
    システム構成 8 収集した データの閲覧 データの 蓄積・解析 LAMP構成 - Linux - Apache -MySQL - PHP RESTful API データの収集 WSNノード - Wi-Fi接続 - 外気温・水温計測 屋外設置 - 要高温環境耐性 - 要防水性 Raspberry Piの採用 - Wi-Fi対応 - センサの接続 - 高温環境耐性 →防水加工耐性 Shrimp Tank Pi Nodeと命名 [1] 小野田晃久, 峰野博史, 施設園芸環境向け無線センサノードの開発, 農業情報学会2020年度年次大会講演要旨集, vol. 2020, pp. 162-163, May. 2020 高温環境耐性はPiNode[1]で実証済
  • 9.
    STP Node 9 Hardware /Software構成 • メイン基板 • Raspberry Pi Zero W • Raspberry Pi OS • ApplicationはPythonで作成 • 水温センサ • DS18B20 … 1-Wireで接続 • ファイル読出しでOK • 温湿度センサ • SHT31 … I2Cで接続 • pisht30[2]を使用 … PyPIで公開済 • GPIOの操作にpigpiodを使用 • Pythonのセミナで利用するために作成・公開 • M5StickC用のEHV III HATを利用するために作成 • ENV III HATにSHT30が搭載されている Raspberry Pi Zero W DS18B20 SHT31 [2] Akihisa ONODA, pisht30, https://pypi.org/project/pisht30/, PyPI, Jan. 2022 画像出典: [e] Raspberry Pi Zero W https://www.raspberrypi.com/ [f] DS18B20 / SHT31 https://akizukidenshi.com/ [g] ENV III HAT https://www.m5stack.com 温度センサはアナログセンサ + A/Dコンバータ を使う手もあるが、利便性のためモジュール化 されたものを採用(お金で解決)。
  • 10.
    STP Node 10 部品 数量調達先 備考 画像 Raspberry Pi Zero W 1 KSY 昔購入した在庫 microSDカード 1 Amazon 高耐久モデル推奨 Ex. SanDisk Extreme Pro シリーズ DS18B20 1 Amazon 水温センサ 1-Wire SHT31 1 秋月電子通商 温湿度センサ I2C 主な部品と調達先
  • 11.
    STP Node 11 Application #- -*-coding: utf-8 -*- import pisht30 as SHT31 import time import json import requests URL = “サーバーのURL" AUTH = “サーバーの認証情報" DS18B20 = "/sys/devices/w1_bus_master1/28-012025646549/temperature" def read_ds18b20(): val = 0.0 try: file = open(DS18B20) wt_str = file.read() val = float(wt_str.strip()) / 1000.0 except Exception as e: print(e) finally: file.close() return val def read_sht31(): config = {'address': SHT31.Address.HIGH.value} obj = SHT31.PiSht30(config) return obj.read() ds18b20 = read_ds18b20() sht31 = read_sht31() value = {} value['wt'] = round(ds18b20, 2) value['at'] = round(sht31['temperature'], 2) value['rh'] = round(sht31['humidity'], 2) value['time'] = int(time.time()) value['auth'] = AUTH data = json.dumps(value) body = {'record': data} #print(body) res = requests.post(URL, body) DS18B20の読み出し SHT31の読み出し センサの読み出し データの加工 データの送信
  • 12.
  • 13.
    計測結果 13 11/04 11/11 11/18 11/25 12/02 • 日中: 気温> 水温 • 夜間: 気温 < 水温 • peakが水温のほうが遅れる • 水の方が温度変化が少ない 猛暑日のエビの死滅は 気温のピークより遅れる 可能性がある 対策を取れる可能性がある 水の方が空気よりも比熱が高い → 温まりにくく冷めにくい … 意図せず確認できた
  • 14.
  • 15.
    まとめ 15 • 屋外設置水槽を監視する仕組みはできた • STPNodeによる外気温・湿度、水温の監視 • サーバーへのデータ蓄積 • 今後の展望 • 可視化や通知の仕組みの構築 • 気象庁のデータとの連携 • FAQ • pHや溶存酸素などの対応予定はない • センサーが高い(安いもので、pH $70、溶存酸素 $170くらい) • 2w~4w毎に校正が必要 (校正に劇薬が必要、個人で調達は厳しい) • 試薬の方が安価で対応しやすい • センサーの寿命が長くて1年
  • 16.