Raspberry pi 4 で温湿度センサーを付けて、気温湿度に合わせてLEDを点灯させたいです。
Raspberry Pi 4にインストールしたOSはMac用のRaspbian です。
センサーはBME280、LEDはNeo Pixel 16連リングを使用、通信はi2cを使ってます。
python3で実行した際に以下のエラーメッセージが出ます。
from smbus2 import SMBus ModuleNotFoundError: No module named ‘smbus2’
smbus2はインストール済で、同じコードを使ったサンプルプログラムでは実行出来るので原因が分かりません。
※インストール時のコマンドは次の通りです。
sudo pip install smbus2
ラズパイ内にインストールされてるか格納先も確認済です。
※格納先の確認コマンドと返答内容は次の通りです。
pip show smbus2 Location: /user/local/lib/python2.7/dist-packages
しかしどのサイトを見ても、「smbus2をインストールしましょう」としか回答が出てこず困っております。
どなたか早急に教えてくださると助かります。
なお、今回のプログラミングで参考にしたコードが全部書いてあるサイトは以下です。
リンク内容
こちらのサイトの指示に従い、サンプルプログラムをコピーし(動作確認済)、そこにコードを追加し、最後にpython3で実行する流れです。
具体的に追加したコードは大きく分けて次の2つのまとまったコードです。
import RPi.GPIO as GPIO interrupted = False GPIO.setwarnings(False) import time import board import neopixel pixel_pin = board.D18 num_pixels = 16 ORDER = neopixel.GRB pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.2, auto_write=False, pixel_order=ORDER)
setup() get_calib_param() if __name__ == '__main__': try: temp, press, hum = readData() except KeyboardInterrupt: pass if temp: msg = "今の室温は、" + str(round(temp,1)) + "度、湿度は、" + str(round(hum,1)) + "パーセントです!" if temp > 25: msg += "暑くないですか?" pixels.fill((255, 0, 0)) elif temp < 15: msg += "寒いですね!" pixels.fill((0, 0, 255)) elif hum > 70: msg += "蒸し蒸ししますね" pixels.fill((255, 0, 0)) else: msg += "快適です!" pixels.fill((0, 255, 0)) pixels.show() print (msg) time.sleep(3) pixels.fill((0, 0, 0)) pixels.show()
★暫定解決方法(根本解決せず)★
解決方法をご教示いただき、pip3でsmbus2をインストールし直すと"from smbus2 import SMBus"の部分のコードのエラーは無くなりました。
しかし、代わりに別のコードにエラーが出ました。
temp, press, hum = readData() TypeError: cannot unpack non-iterable NoneType object
このエラー内容は変数の定義がないと言う意味と解釈しましたが、何故定義されてないことになるか分からず困っており、根本解決に至っていない状況です。
回答1件
あなたの回答
tips
プレビュー