Seeed K.K.の中井です。
Raspberry PiなどでGroveモジュールをお手軽に制御することができるPythonライブラリGrove.py。 最近になって二酸化炭素濃度を計測できるSCD30用のライブラリが追加されたそうなので早速動作確認してみました。
使ったもの
- Raspberry Pi 4 Model B
- Grove Base HAT for Raspberry Pi
- Grove - CO2 & Temperature & Humidity Sensor for Arduino (SCD30)
- micro SDカード
準備
Raspberry Piのソフトウェアは、公式から配布されているRaspberry Pi Imagerを使って用意しました。PCにmicro SDを接続した後にRaspberry Pi Imagerを起動して、OSをRaspberry Pi OS
、ストレージにはmicro SD
を選択し、最後に書き込む
で完了です。
デフォルト状態のRaspberry Pi OSには、Python3(やGit)が標準でインストールされているので特に追加でインストールするものはありませんでした。
Grove.py
PythonライブラリのGrove.pyはGitを使って取り込みました。
pi@raspberrypi:~$ git clone https://github.com/Seeed-Studio/grove.py Cloning into 'grove.py'... remote: Enumerating objects: 1472, done. remote: Counting objects: 100% (211/211), done. remote: Compressing objects: 100% (99/99), done. remote: Total 1472 (delta 117), reused 190 (delta 108), pack-reused 1261 Receiving objects: 100% (1472/1472), 735.56 KiB | 5.49 MiB/s, done. Resolving deltas: 100% (945/945), done.
続いてインストールしておきます。
pi@raspberrypi:~$ cd grove.py/
pi@raspberrypi:~/grove.py$ sudo pip3 install .
Grove Base HAT for Raspberry Pi
Raspberry Piの40-Pin GPIO Headerに接続されるGrove Base HATは、Digital, Analog, I2C, PWM, UARTに対応するGroveポートを追加することができます。
今回使用するGrove SCD30はI2Cで通信するので、上記の3個のI2Cポートのいずれかに接続します。 I2Cポートのバスは共通で、Raspberry Pi 40-Pin GPIO Header、Grove Base HATと次のようにつながっているようです。
ピン番号 | GPIO番号 | 機能 |
---|---|---|
Pin.3 | GPIO2 | SDA |
Pin.5 | GPIO3 | SCL |
動作確認
Raspberry Piのセットアップが終わったのでいよいよ動作確認ができます。 Grove.pyに収録されているgrove_co2_scd30.pyを実行すればよいですね。
pi@raspberrypi:~$ cd grove.py/ pi@raspberrypi:~/grove.py$ python grove/grove_co2_scd30.py Traceback (most recent call last): File "/home/pi/grove.py/grove/grove_co2_scd30.py", line 181, in <module> main() File "/home/pi/grove.py/grove/grove_co2_scd30.py", line 168, in main sensor = GroveCo2Scd30() File "/home/pi/grove.py/grove/grove_co2_scd30.py", line 54, in __init__ self.bus = Bus(bus) File "/usr/local/lib/python3.9/dist-packages/grove/i2c.py", line 51, in __init__ Bus.instance = smbus.SMBus(bus) File "/usr/local/lib/python3.9/dist-packages/smbus2/smbus2.py", line 280, in __init__ self.open(bus) File "/usr/local/lib/python3.9/dist-packages/smbus2/smbus2.py", line 310, in open self.fd = os.open(filepath, os.O_RDWR) FileNotFoundError: [Errno 2] No such file or directory: '/dev/i2c-1'
エラーですね。。/dev/i2c-1
がない。確かに/dev/
以下に存在していません。
pi@raspberrypi:~$ ls /dev/i2c-*
/dev/i2c-20 /dev/i2c-21
調べてみるとRaspberry Pi OSのデフォルト状態では40-Pin HeaderのI2C信号(SDA:GPIO2、SCL:GPIO3)は無効状態となっているようです。 raspi-configでInterface Options > I2Cを選択してEnableにしてあげます。
pi@raspberrypi:~$ sudo raspi-config
I2Cを有効化すると/dev/i2c-1
が作成されました。
pi@raspberrypi:~$ ls /dev/i2c*
/dev/i2c-1 /dev/i2c-20 /dev/i2c-21
これで問題ないはずなので再度Pythonを実行。
pi@raspberrypi:~/grove.py$ python grove/grove_co2_scd30.py CO2 concentration is 746.7 ppm Temperature in Celsius is 25.41 C Relative Humidity is 39.97 % CO2 concentration is 753.1 ppm Temperature in Celsius is 25.43 C Relative Humidity is 40.56 %
無事Grove SCD30から二酸化炭素濃度、気温、湿度を読み出すことができました。
まとめ
Raspberry Pi 4 Model BでGrove.pyを使ってGrove SCD30から測定データを読み出してみました。 Raspberry Piのインターフェースの有効化があるものの、非常に簡単にセットアップすることができました。 下記リンクにGrove.pyに対応するGroveモジュールの一覧がありますので是非お試しあれ。
変更履歴
日付 | 変更者 | 変更内容 |
---|---|---|
2022/4/5 | mnakai | 作成 |