「スマート温度計を作ろう」2章 DHT22動作確認 データが取得できない

「スマート温度計を作ろう」2章 DHT22動作確認のステップについて、
以下の両方のコードを試しましたが、センサデータが取得できません。
・教材に書かれているコード(Adafruit_DHTを使うもの)
・教材中の「うまく動作しないとき」のリンク(教材「スマート温湿度計を作ろう」DHT22センサーの動作確認でエラーが出る)に書かれているコード(adafruit-circuitpythonを使うもの)

使用環境は以下です。
・Rasberry Pi : Pi 4 ModelB
・Python ver : 3.7.3, 3.8.12 (両方試しました)

教材中の「うまく動作しないとき」のコードを実行したときのエラーは、コード内でraiseしている以下のエラーです。

raise RuntimeError('Couldn\'t get sensor data while retrying.')

RuntimeError: Couldn’t get sensor data while retrying.

こんにちは。

より詳細なエラー内容を確認するため、こちらのサンプルプログラムを動かしてみてください。

9行目のGPIO番号がD18になっていますが、教材に合わせる場合はD4に変更が必要です。

ライブラリ内で出力されているエラーが確認できると思いますので、内容を教えて頂けたらと思います。

回答ありがとうございます。
いただいたリンクのコードを実行しました。
その結果、Thonny IDEから実行した場合は以下のエラーがでました。
ただ、端末からsudoで実行したら、いただいたコードも教材のコードも動くようになりました。

GPIOへのアクセス時は、Thonny IDEを管理者として実行する、もしくは端末からsudoで実行する必要があるということでしょうか?

Unable to open chip: gpiochip0
Traceback (most recent call last):
File “/home/ …”, line 9, in
dhtDevice = adafruit_dht.DHT22(board.D4)
File “/home/ …/python3.8/site-packages/adafruit_dht.py”, line 305, in init
super().init(False, pin, 1000, use_pulseio)
File “/home/ …/python3.8/site-packages/adafruit_dht.py”, line 86, in init
self.pulse_in = PulseIn(self._pin, maxlen=self._max_pulses, idle_state=True)
File “/home/ …/python3.8/site-packages/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py”, line 80, in init
message = self._wait_receive_msg(timeout=0.25)
File “/home/ …/python3.8/site-packages/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py”, line 98, in _wait_receive_msg
raise RuntimeError(
RuntimeError: Timed out waiting for PulseIn message. Make sure libgpiod is installed.

基本的には、piユーザーがgpioというグループに追加されているためsudoがなくても実行が可能です。経緯は私も分からないのですが「Unable to open chip: gpiochip0」のログ表示より、gpioグループから外れてしまっていると思われます。

対処手順を記載しますのでお試しください。

まず、piユーザーが所属するグループを確認するため、以下のコマンドを実行してください。

id pi

実行後、「gpio」の表示が確認できない場合、
piユーザーを gpio グループに追加するコマンドを実行してください。

sudo usermod -a -G gpio pi

グループに追加できたら、一度Raspberry Piを再起動し、プログラムを実行してみてください。

回答ありがとうございます。
gpioグループから外れてしまっていました。
グループに追加・再起動により、sudoなしでプログラムが実行できるようになりました。
ありがとうございます。

「いいね!」 1