0
0

More than 1 year has passed since last update.

UV インデックスセンサー (VEML6075) を Raspberry Pi で使ってみる

Last updated at Posted at 2022-01-16

VEML6075 という UV インデックスセンサーを入手して Raspberry Pi で動かしてみました。UV インデックスセンサーの比較は英語ですがここ が詳しそうです。UV インデックスの数字の意味に関してはこのあたりが参考になります。

しかし Adafruit をはじめ既に VEML6705 の製品はほぼ売っていません。SI1145GUVA-S12SD なら引き続き販売されているようですが Adafruit の SI1145 ページにも VEML6075 を推奨すると書いてあり UV Index のセンサーとしては VELM6075 が優秀なようです。しかしなぜかは不明ですが製造元の Vishay がが製造を辞めてしまったようです。*

UV インデックスセンサー使ってみると言っても Adafruit のライブラリを使うので簡単です。まず CircuitPython ライブラリと adafruit-blinka (Blinka) をインストールします。CircuitPython とは MicroPython の一種で、adafruit-blinka は CircuitPython の API を Raspberry Pi では RPi.GPIO に変換するためのもののようです。Raspberry Pi だけではなく Arduino などでも使えるようです。*

OS のパッケージ最新にして python3-pip をインストールします。

$ sudo apt update && sudo apt upgrade -y
$ sudo apt-get install python3-pip
$ sudo pip3 install --upgrade setuptools

次に adafruit-python-shell を pip3 でインストールし raspi-blinka.py という名前のスクリプトをダウンロードします。

$ cd ~
$ sudo pip3 install --upgrade adafruit-python-shell
$ wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/raspi-blinka.py
$ sudo python3 raspi-blinka.py

raspi-blinka.py を実行すると adafruit-blinka がインストールされます。最後は Y と答えて Enter を押すと Raspberry Pi が再起動します。

~ $ sudo python3 raspi-blinka.py
This script configures your
Raspberry Pi and installs Blinka

RASPBERRY_PI_ZERO_W detected.

Updating System Packages
<snip>
Blinka Successfully installed Adafruit-PureIO-1.1.9 adafruit-blinka-6.18.0 pyftdi-0.53.3 pyusb-1.2.1 rpi-ws281x-4.3.1 sysv-ipc-1.1.0
DONE.

Settings take effect on next boot.

REBOOT NOW? [Y/n] Y

adafruit-blinka が正常にインストールされたかはここのコードを使って確認することができます。

再起動が完了したら veml6075 用のライブラリ (adafruit-circuitpython-veml6075) をインストールします。同時に adafruit-circuitpython-busdevice もインストールされます。

~ $ sudo pip3 install adafruit-circuitpython-veml6075

adafruit-circuitpython-veml6075 が正常にインストールされていれば以下のコマンドを実行した際に特にエラーなどは出力されません。

~ $ python3 -m adafruit_veml6075

配線はここにある通りこんな感じです。SparkFunGarvity のものは I2C のケーブルを使って接続できるので便利です。

adafruit_products_raspi_veml6075_i2c_bb.jpg

コードは以下のような感じです。

import time, board, busio
import adafruit_veml6075

interval = 3
i2c = busio.I2C(board.SCL, board.SDA)

while True:
    try:
        veml = adafruit_veml6075.VEML6075(i2c, integration_time=100)
        print("UV index:", veml.uv_index)
        time.sleep(interval)

    except KeyboardInterrupt:
        break

日中帯に太陽の方向にセンサーを向けて (窓は開けたほうが良いかもしれません) 上記を実行すると冬なら以下のような値を返します。室内で実行すると 0 に近い値が返ってくると思います。

~ $ python3 ./veml6075.py
UV Index: 0.6220514149999998
UV Index: 0.7128853399999999
UV Index: 0.74213456
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0