はじめに
最近では5万円程度の安いセンサーも販売されていますが、ATOM Liteを使って約3,000円で温湿度・気圧計を作ります。ちなみに単純なセンシングだけならSwitchbotの方が安くて簡単です。
用意するもの
プログラミング(UIFlow)
プログラミングは無償で使えるブロックプログラミングのUIFlow(M5Flow)を利用します。
Micro Python
from m5stack import *
from m5ui import *
from uiflow import *
import wifiCfg
from machine import WDT
import time
import unit
env3_0 = unit.get(unit.ENV3, unit.PORTA)
env3_temp = None
env3_hurmid = None
env3_press = None
wifiCfg.autoConnect(lcdShow=False)
wifiCfg.reconnect()
wdt = WDT(timeout=1000000)
while True:
if not (wifiCfg.wlan_sta.isconnected()):
pass
env3_temp = env3_0.temperature
env3_hurmid = env3_0.humidity
env3_press = env3_0.pressure
rgb.setColorAll(0x003300)
import urequests
def ambientSend(_channelId, _writeKey, _data):
if isinstance(_data, list):
__d = _data
else:
__d = [_data]
try:
req = urequests.request(method='POST', url=((('http://ambidata.io/api/v2/channels/' + str(_channelId))) + '/dataarray'),json={'writeKey':_writeKey,'data':__d}, headers={'Content-Type':'application/json'})
_ret = True
except:
_ret = False
return _ret
ambientSend(******, '**********', {'d1':env3_temp,'d2':env3_hurmid,'d3':env3_press})
wait_ms(5000)
rgb.setColorAll(0x000000)
wdt.feed()
wait_ms(2)
ポイント
- Ambientブロックの入手先→ https://github.com/AmbientDataInc/UIFlow
- Ambientブロックはファイルを開くたびに読み込む必要がある
- AmbientのwriteKeyはシングルクォートで括る
- WDTは約16分間ハングアップしたら強制リブート
- wifiは毎ループで再接続判定
設置
レゴの互換ブロック+マグネットフックでビニールハウスの柱に設置しています。(写真手前のセンサーはCO2センサー)今後強制通風筒を製作してより精度を高めようと思っています。
結果
Ambientに温度、湿度、気圧が蓄積され、スマホでいつでもどこでも確認できるようになりました。約1年間粉塵や農薬、ミストなどに曝されていますが正常に動作しています。
補足
ENV IIIに使用されているセンサーは温度湿度計がスイス センシリオン社のSHT30、気圧計は中国メーカー?のQMP6988という製品。
SHT30は温度精度0.3度、相対湿度精度3%RHと農業用としては十分な性能です。