6.2 温度・湿度センサー¶
湿度と温度は、物理量自体から日常生活まで密接に関連しています。 人間の環境の温度と湿度は、体温調節機能や熱伝達の効果に直接影響を与えます。 さらに、これは思考活動や精神状態にも影響を与え、学習や仕事の効率にも影響を与えます。
温度は、国際単位系(SI)での7つの基本的な物理量の一つであり、物体の熱さや寒さを測るために使用されます。 摂氏度は、世界でよく使用される温度の尺度の一つで、"℃"という記号で表されます。
湿度は、空気中に存在する水蒸気の濃度です。 一般的には相対湿度が使用され、%RHで表されます。相対湿度は温度に密接に関連しています。 密閉された一定量のガスに対して、温度が高いほど相対湿度は低く、温度が低いほど相対湿度は高くなります。
このキットには基本的なデジタル温度・湿度センサー、 DHT11 が付属しています。 このセンサーは、周囲の空気の温度と湿度を測るために、容量性湿度センサーとサーミスターを使用し、データピンでデジタル信号を出力します(アナログ入力ピンは不要です)。
必要なコンポーネント
このプロジェクトでは、以下のコンポーネントが必要です。
一式をまとめて購入すると便利です、リンクはこちら:
名前 |
このキットに含まれるアイテム |
リンク |
---|---|---|
ケプラーキット |
450+ |
以下のリンクから個別にも購入できます。
SN |
コンポーネント |
数量 |
リンク |
---|---|---|---|
1 |
1 |
||
2 |
Micro USBケーブル |
1 |
|
3 |
1 |
||
4 |
いくつか |
||
5 |
1 |
回路図
配線
コード
注釈
kepler-kit-main/micropython
フォルダ内の6.2_temperature_humidity.py
ファイルを開くか、このコードをThonnyにコピーしてから、「Run Current Script」をクリックするか、F5キーを押して実行してください。右下の角にある「MicroPython(Raspberry Pi Pico)」のインタープリターを選択することを忘れないでください。
詳細なチュートリアルは、 コードを直接開いて実行する を参照してください。
ここでは
dht.py
というライブラリを使用する必要があります。Pico Wにアップロードされているか確認してください。詳細なチュートリアルは 1.4 Picoにライブラリをアップロード を参照してください。
from machine import Pin, I2C
import utime as time
from dht import DHT11, InvalidPulseCount
pin = Pin(16, Pin.IN, Pin.PULL_UP)
sensor = DHT11(pin)
time.sleep(5) # 初期遅延
while True:
try:
sensor.measure()
string = "Temperature:{}\nHumidity: {}".format(sensor.temperature, sensor.humidity)
print(string)
time.sleep(4)
except InvalidPulseCount as e:
print('Bad pulse count - retrying ...')
コードを実行すると、シェルには温度と湿度が継続して表示され、プログラムが安定して動作するにつれて、これらの値はますます正確になります。
仕組み
dhtライブラリでは、関連する機能を DHT11
クラスに統合しています。
from dht import DHT11, InvalidPulseCount
DHT11
オブジェクトを初期化します。このデバイスは、デジタル入力だけで使用できます。
pin = Pin(16, Pin.IN, Pin.PULL_UP)
sensor = DHT11(pin)
sensor.measure()
を使用して現在の温度と湿度を読み取り、 sensor.temperature
、 sensor.humidity
に保存されます。
それらはその後、出力されます。
最後に、DHT11のサンプリングレートは1HZなので、ループ内で time.sleep(1)
が必要です。
while True:
try:
sensor.measure()
string = "Temperature:{}\nHumidity: {}".format(sensor.temperature, sensor.humidity)
print(string)
time.sleep(4)
except InvalidPulseCount as e:
print('Bad pulse count - retrying ...')