日照センサー(GY-30)を試してみる

スマート農業を始めようと思っています。センシングのためのセンサーを試行しています。今回は日照量をセンシングする光センサーを試行してみたいと思います。

はんだ付け

GY-30は部品がバラバラになって送られてくるので、まず最初にはんだ付けする必要があります。

はんだ付けとか、しばらくやってなかったので緊張しますが、スマート農業の発展のため頑張りました。

ハンダがなかったのでホームセンターに買いに行きました。300円くらいで国産の精密プリント基板用のハンダを手に入れました。

早速はんだ付けします。

はんだ付けのコツは、村田製作所さんのサイトを参考にしました。1、2、3、4、5、6、7、8と数えながらやるといいそうです。

最初やった時、5、6でハンダが溶けず焦りましたが、しばらくトライするとハンダも溶け始め、ハンダの溶けた時の懐かしい匂いを嗅ぎながら、5個の穴をはんだ付けしました。

我ながら、上手にできたと思います。溶けたハンダが綺麗な富士山型になっています。

ハンダがうまくついたかどうかを確認するためにも、ラズパイに接続してみます。

接続はココを参考にしました。配線の感じは、ココも参考にしました。

データシートはココです。

  • GY-30 VCC -> 3.3V
  • GY-30 SCL ->GPIO 5番
  • GY-30 SDA -> GPIO 3番
  • GY-30 ADD -> GND
  • GY-30 GND -> GND

という風に配線しました。

配線がどんどん複雑になってきました。コンパクト化したかったのでミニブレッドボードを使ったんですが、通常ブレッドボードにすれば良かったかな。

まぁ、とりあえず配線は終わりました。きちんと配線がされているかどうかを確かめつつ、実際に照度を取得していきます。

I2Cを有効化

GY-30はI2Cを使用しているので、Raspberry piで、I2Cを有効化します。

まずは、/etc/modulesという設定ファイルに値を追加します。ここに書くとブート時に読み込まれるカーネルモジュールを指定できます。

$ sudo vi /etc/modules

などで、エディターを開いて、末尾に下記の2行を追加します。

i2c-bcm2708
i2c-dev

保存したら、一旦ラズパイを再起動します。

$ sudo reboot

I2Cに接続されているデバイスの情報を見ることができる下記コマンドを実行します。

$ sudo i2cdetect -y 1

このコマンドがない場合は、sudo apt install i2c-toolsでインストールしてください。

実行してみると下記エラーが発生しました。

Could not open file `/dev/i2c-1' or `/dev/i2c/1': No such file or directory

調べると、ラズパイでI2Cが有効化されていないことが原因のようでしたので、有効化設定をしてみます。下記コマンドでラズパイの設定を開きます。

$ sudo raspi-config

下記のような画面になるので、Interfacing Optionsを選択します。(ラズパイのバージョンによってI2Cの設定の位置が異なるようです。参考にしたサイトでは、Advanced Optionsを選択するようになってました。I2Cの設定が見つからない場合は頑張って探してください。)

I2Cを選択します。

ARM I2Cインターフェイスを有効化したいんですか?と聞かれるのではいと答えます。Yesを選択します。

ARM I2C インターフェイスを有効化しました。というメッセージが出ます。

設定画面が閉じたらラズパイを再起動しましょう。

$ sudo reboot

再起動が終わったら、もう一度コマンドを実行してみます。

$ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --  

今度は、表示されました。センサーのアドレスは、0x23となっているようです。

Pythonで動作確認

Pythonで動作確認してみましょう。まずは、smbus2をインストールします。(参考にしたサイトではsmbusを使用していました。)

$ pip install smbus2

動作確認はJupyterで実施するので、Jupyter Notebookを起動します。

起動したら、以下のプログラムを実行します。まずは、必要なモジュールをインポートします。

import smbus2 as sambas
import time

定数を定義します。addrには、先ほどi2cdetectコマンドで表示された0x23を指定します。

bus = sambas.SMBus(1)
addr = 0x23

1秒おきに bus.read_i2c_block_dataを呼び出して照度を取得し、表示しています。

try:
    while True: 
        luxRead = bus.read_i2c_block_data(addr, 0x11, 4)
        print("照度:" + str(luxRead[1]* 10))
        time.sleep(1)
except KeyboardInterrupt:
    print("interrupt")

実行すると以下のように表示されました。うまく照度が取得できているようです。

照度:2010
照度:1950
照度:1940
照度:1960
照度:1970
照度:1970
照度:1980

はんだ付けもうまくいっていたみたいで良かったです。

これで当初計画していた全てのセンサーの取り付けが完了しました。次は、これらのデータをクラウドにアップロードして、どこからでも確認できるようにして行きたいと思います。

SORACOM+AWSか、SORACOM+GCPにするか。。。悩むところです。

コメント

  1. […] それぞれのテストの際のコードの詳細は、DHT22、LM393、GY-30のそれぞれを参照してください。 […]

タイトルとURLをコピーしました