KSYさんから発売されたセンサーモジュールキットを購入してみたので、Raspberry Piで試してログを残していこうと思います。
「いいね!」 1
温湿度センサー
温湿度センサーをRaspberry Piで試してみました。動かすだけなら、Pythonのモジュールをインストールするだけで温湿度の取得はできました。
下記GitHubのサンプルコードがそのまま動作しました。
https://github.com/szazo/DHT11_Python
必要なモジュール:
$ pip3 install dht11
サンプルコード:
import RPi.GPIO as GPIO
import dht11
# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
# read data using pin 14
instance = dht11.DHT11(pin = 14)
result = instance.read()
if result.is_valid():
print("Temperature: %-3.1f C" % result.temperature)
print("Humidity: %-3.1f %%" % result.humidity)
else:
print("Error: %d" % result.error_code)
実行してみると時折「Error: 1」や「Erro:2」のような表示がでて、データが取得できないことがありました。
「いいね!」 1
回転センサーモジュール
回転センサーモジュールを (ロータリーエンコーダー) 動かすことができました。特に追加の電子部品は必要なく、ラズパイと直接つないで使用できます。
詳しい使い方はこちら:
使い方を教えてくださった @yasuhiroyamashita さんありがとうございます!
「いいね!」 1
RPi PICO と RPiのUSB Serialについて確認してみました。
PICOから1secごとにデータ送信、RPiで60secごとに読み込んだ場合、以下のコードではバッファにたまったデータの古いデータから一行ずつ読み込むので、最新のデータが読めませんでした。(検証はしてませんが、いずれバッファが溢れそう)
While True:
line = ser.readline()
print(line)
time.sleep(60)
RPiで60秒ごとに読み取りつつ、送られてきたデータの最新値を表示する方法として、こんなのはどうでしょう?
while True:
while ser.in_waiting > 0: #バッファがなくなるまで読み込み
line = ser.readline()
if ser.in_waiting == 0: #バッファがなくなったら、最後に読み取った行を表示
print(line)
time.sleep(60)
60秒ごとに、バッファがなくなるまでreadlineして、最後に読み取った内容だけを表示しています。
ただし、私見としては、
①データを読み込みたいタイミングでRPi→PICOにキューを送信
②PICOはキューを受けたらその時点でのデータをRPiに送信
③RPiで送られてきたデータを読み取り
とした方がRPi側でタイミングをコントロールできるので気持ちいいですね。(^^)
「いいね!」 2