kun432's blog

Alexaなどスマートスピーカーの話題中心に、Voiceflowの日本語情報を発信してます。たまにAWSやkubernetesなど。

〜スマートスピーカーやVoiceflowの記事は右メニューのカテゴリからどうぞ。〜

Raspberry Piで観葉植物の監視をする①

f:id:kun432:20220219171625p:plain

以前に空気コンディションモニタを作った際に使った「Anavi」のuHAT、他にも色々あるみたいです。

その中で、最近ちょっと個人的にハマっている観葉植物向けに、必要なセンサーを組み合わせた「Gardening uHAT」があったので購入してみました。

今回はとりあえず各センサーの使い方まで。

目次

必要なもの

Raspberry Pi

f:id:kun432:20220326185807j:plain

実は在庫がどこにもなくて、これが一番ハードルが高いかも。以前買ったままで使ってなかったRaspberry Pi Zero Wがたまたまあって、uHATをつなげるにはGPIOピンが必要、ということで自分でハンダ付けしました。ちなみに人生ほぼ初のハンダ付けで、いろいろわかってなくてちょっと苦労しました。

今にして思えばなぜWHにしなかったのかとほんと後悔・・・でもおかげで学べたし、なんとか動いてよかった。

Anavi Gardening uHAT

f:id:kun432:20220326190032j:plain

今回のキモ。3パターンのパッケージがありますが、Developer Kitにしました。Developer Kitだと以下のセンサーが入ってます。

  • 土壌水分センサー x 2
  • 温湿度センサー(HTU21D)
  • 光センサー(BH1750)
  • 防水温度センサー(DS18B20)

全部つなぐとこんな感じです。

f:id:kun432:20220326202343j:plain

あと、本体にLEDが2つあります。

f:id:kun432:20220326203910j:plain

観葉植物

f:id:kun432:20220326181902j:plain

近所で見つけて買ってきた緋牡丹サボテンです。オレンジでほんとかわいい。いつか株分けとかしてみたい。

手順

OSイメージの書き込み

ZERO WなのでOSは"Raspberry Pi OS 32-bit"です。あと、今まで全然気づかなかったのだけど、Raspberry Pi ImagerでOS初期設定とか出来ちゃうんですね。

f:id:kun432:20220326203211j:plain

f:id:kun432:20220326203238j:plain

とりあえず、

  • ホスト名
  • SSH有効化
    • ユーザ名・パスワードの設定
  • WiFi設定
  • ロケール設定

あたりを設定してSDメモリに書き込みます。これならモニタもキーボードもいらないし、ホント便利ですね。

セットアップ

RPiを起動して、あとはマニュアルに従ってやっていくだけですが、一応一通りやってみます。

OSアップデート

$ sudo apt update
$ sudo apt upgrade

パッケージをインストール。マニュアルの下の方にもパッケージ追加する箇所がありますがここでまとめて。wiringpiはとりあえず不要。wiringpiもまだ必要ですね

$ sudo apt install -y git i2c-tools vim python3-rpi.gpio python3-dev
$ cd /tmp
$ wget https://project-downloads.drogon.net/wiringpi-latest.deb
$sudo dpkg -i wiringpi-latest.deb

raspi-configで各種インタフェースの有効化

$ sudo raspi-config

"Interfacing Options"を選択

f:id:kun432:20220326204459p:plain

以下のインタフェースを選択して、それぞれ有効化していきます。

  • SPI
  • I2C
  • 1-Wire

f:id:kun432:20220326204558p:plain

f:id:kun432:20220326204614p:plain

f:id:kun432:20220326204720p:plain

全部のインタフェースを有効にしたら、raspi-configを終了して、一旦再起動します。

f:id:kun432:20220326204730p:plain

各センサーの使い方

ここから各センサーの使い方を見ていきます。

公式のサンプルがあるのでまずはそちらをgit cloneします。

$ cd ~
$ git clone https://github.com/AnaviTechnology/anavi-examples.git
土壌水分センサー

公式のサンプルにPythonのコードが含まれています。

$ cd ~/anavi-examples/anavi-gardening-uhat/soil-moistore-sensors/python/
$ python3 soil-moistore-sensors.py
Soil Moisture Sensor 1: 95.0 % Soil Moisture Sensor 2: 0 %
Soil Moisture Sensor 1: 95.0 % Soil Moisture Sensor 2: 0 %
Soil Moisture Sensor 1: 95.0 % Soil Moisture Sensor 2: 0 %
...snip...

今回はセンサー1つだけなので、Sensor 1のほうですね。水につけてなくても95%もあるの?とりあえず水につけてみる。

...snip...
Soil Moisture Sensor 1: 100 % Soil Moisture Sensor 2: 0 %
Soil Moisture Sensor 1: 100 % Soil Moisture Sensor 2: 0 %
Soil Moisture Sensor 1: 100 % Soil Moisture Sensor 2: 0 %
...snip...

一応100%にはなる。これはちょっとコードを読んでみないといけないかも。とりあえずセンサーとしては動いていることは確認できたので良しとする。

温湿度センサー(HTU21D)

こちらも公式のサンプルを。Infrared pHATと同じですね。

$ cd ~/anavi-examples/sensors/HTU21D/c/
$ make
gcc -c -o HTU21D.o HTU21D.c -I.
gcc -c -o HTU21D-example.o HTU21D-example.c -I.
gcc -o HTU21D HTU21D.o HTU21D-example.o -I. -lwiringPi
$ ./HTU21D
HTU21D Sensor Module
25.29C
40.23%rh

取れていますね。

光センサー(BH1750)

こちらも公式のサンプルを。Infrared pHATと同じ。

$ cd ~/anavi-examples/sensors/BH1750/c/
$ make
$ ./BH1750
BH1750 Sensor Module
Light: 76 Lux
防水温度センサー(DS18B20)

こちらはサンプル不要です。

$ ls /sys/bus/w1/devices/
28-03089779830a  w1_bus_master1

$ cat /sys/bus/w1/devices/*/w1_slave
81 01 55 05 7f a5 a5 66 a3 : crc=a3 YES
81 01 55 05 7f a5 a5 66 a3 t=24062

t=の後の数字が温度です。1000で割ると摂氏温度になるようなので、上の例だと24℃ってことですね。

LED

最後にセンサーではないですが、LEDの操作。サンプルがあります。

$ cd ~/anavi-examples/anavi-gardening-uhat/led/python
$ python ./blink.py

f:id:kun432:20220326213801g:plain

まとめ

これで各センサーやLEDが操作できるところまできました。次回は実際に植物の監視的なことをやっていきます。