- DHT11センサーの概要:
- 前提条件:
- RaspberryPiへのAdafruitLCDライブラリのインストール:
- RaspberryPiへのAdafruitDHT11ライブラリのインストール:
- 回路図:
- DHT11センサーのPythonプログラミング:
- Raspberry Piを使用した湿度と温度の測定:
温度と湿度は、あらゆる環境で監視されている最も一般的なパラメータです。温度と湿度を測定するために選択できるセンサーはたくさんありますが、最もよく使用されるのは、その適切な測定範囲と精度のためにDHT11です。また、1ピン通信でも機能するため、マイクロコントローラーまたはマイクロプロセッサーとのインターフェースが非常に簡単です。このチュートリアルでは、人気のあるDHT11センサーをRaspberry Piとインターフェースし、温度と湿度の値を16x2LCD画面に表示する方法を学習します。すでにIoTRaspberry Pi WeatherStationの構築に使用しています。
DHT11センサーの概要:
DHT11センサーは、以下の仕様で相対湿度と温度を測定できます。
温度範囲:0-50°C 温度精度:±2°C 湿度範囲:20-90%RH 湿度精度:±5%
DHT11センサーは、モジュール形式またはセンサー形式のいずれかで入手できます。このチュートリアルでは、センサーのモジュール形式を使用しています。両方の違いは、モジュール形式では、センサーにフィルターコンデンサとプルアップ抵抗がセンサーの出力ピンに接続されていることだけです。したがって、センサーのみを使用している場合は、これら2つのコンポーネントを追加してください。また、ArduinoとのDHT11インターフェースについても学びます。
DHT11センサーの仕組み:
DHT11センサーには、青または白のカラーケーシングが付属しています。このケーシングの内部には、相対湿度と温度を感知するのに役立つ2つの重要なコンポーネントがあります。最初のコンポーネントは一対の電極です。これら2つの電極間の電気抵抗は、保湿基板によって決まります。したがって、測定された抵抗は、環境の相対湿度に反比例します。相対湿度が高いほど抵抗の値は低くなり、逆もまた同様です。また、相対湿度は実際の湿度とは異なることに注意してください。相対湿度は、空気中の温度に対する空気中の水分量を測定します。
他のコンポーネントは、表面実装されたNTCサーミスタです。NTCという用語は負の温度係数を表し、温度が上昇すると抵抗値が減少します。
前提条件:
Raspberry Piはすでにオペレーティングシステムでフラッシュされており、インターネットに接続できると想定されています。そうでない場合は、先に進む前に「RaspberryPi入門」チュートリアルに従ってください。
また、ターミナルウィンドウまたはPythonプログラムを記述して実行し、ターミナルウィンドウを使用できる他のアプリケーションを介してpiにアクセスできることも前提としています。
RaspberryPiへのAdafruitLCDライブラリのインストール:
温度と湿度の値は16 * 2LCDディスプレイに表示されます。Adafruitは、このLCDを4ビットモードで簡単に操作するためのライブラリを提供しているので、ターミナルウィンドウPiを開き、以下の手順に従って、RaspberryPiに追加しましょう。
ステップ1:以下の行を使用して、RaspberryPiにgitをインストールします。Gitを使用すると、Githubでプロジェクトファイルのクローンを作成し、Raspberrypiで使用できます。私たちのライブラリはGithubにあるので、そのライブラリをpiにダウンロードするにはgitをインストールする必要があります。
apt-get install git
ステップ2:次の行は、ライブラリが存在するGitHubページにリンクしています。この行を実行して、Piホームディレクトリにプロジェクトファイルのクローンを作成します。
git clone git://github.com/adafruit/Adafruit_Python_CharLCD
ステップ3:以下のコマンドを使用してディレクトリ行を変更し、ダウンロードしたばかりのプロジェクトファイルにアクセスします。コマンドラインを以下に示します
cd Adafruit_Python_CharLCD
ステップ4:ディレクトリ内に setup.py というファイルがあります。ライブラリをインストールするには、それをインストールする必要があります。次のコードを使用してライブラリをインストールします
sudo python setup.py install
つまり、ライブラリは正常にインストールされているはずです。同様に、同じくAdafruitからのDHTライブラリのインストールに進みましょう。
RaspberryPiへのAdafruitDHT11ライブラリのインストール:
DHT11センサーは、単線システムの原理で動作します。温度と湿度の値はセンサーによって検出され、シリアルデータとして出力ピンを介して送信されます。その後、MCU / MPUのI / Oピンを使用してこれらのデータを読み取ることができます。これらの値がどのように読み取られるかを理解するには、DHT11センサーのデータシートを読む必要がありますが、ここでは簡単にするために、ライブラリを使用してDHT11センサーと通信します。
DHT11ライブラリAdafruitによって提供もDHT11、DHT22他方ワイヤ温度センサのために使用することができます。DHT11ライブラリをインストールする手順も、LCDライブラリをインストールする手順と同様です。変更される唯一の行は、DHTライブラリが保存されているGitHubページのリンクです。
ターミナルに4つのコマンドラインを1つずつ入力して、DHTライブラリをインストールします
git clone
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
完了すると、両方のライブラリがRaspberryPiに正常にインストールされます。これで、ハードウェア接続を続行できます。
回路図:
DH11とRaspberrypiのインターフェースの完全な回路図を以下に示します。これは、Fritzingを使用して作成されました。接続に従って回路を作ります
LCDセンサーとDHT11センサーはどちらも+ 5V電源で動作するため、RaspberryPiの5Vピンを使用して両方に電力を供給します。DHT11センサーの出力ピンには値1kのプルアップ抵抗が使用されています。モジュールを使用している場合は、この抵抗を回避できます。
10Kのトリマーポットは、 LCDのコントラストレベルを制御するために、LCDのV字形ピンに追加されます。それ以外のすべての接続は非常に簡単です。ただし、プログラムで必要になるため、ピンの接続に使用しているGPIOピンをメモしてください。以下のチャートは、GPIOピン番号を理解するのに役立つはずです。
チャートを使用して、回路図に従って接続してください。ブレッドボードとジャンパー線を使用して接続しました。DHT11モジュールを使用したので、RaspberryPiに直接配線しました。私のハードウェアは以下のようになりました
DHT11センサーのPythonプログラミング:
DHT11センサーから温度と湿度の値を読み取り、それをLCDに表示するプログラムを作成する必要があります。LCDセンサーとDHT11センサーの両方のライブラリをダウンロードしたので、コードはかなり単純なはずです。Pythonの完全なプログラムは、このページの最後に見つけることができますが、あなたは、プログラムがどのように機能するかを理解するためにさらに読むことができます。
LCDライブラリとDHT11ライブラリをプログラムにインポートして、それに関連する関数を使用する必要があります。すでにPiにダウンロードしてインストールしているので、次の行を使用してインポートできます。また、遅延関数を使用するためにタイムライブラリをインポートします。
インポート時間 # 遅延を作成するためのインポート時間インポートAdafruit_CharLCDをLCDとしてインポート#LCDライブラリをインポートインポートAdafruit_DHT#センサー用のDHTライブラリをインポート
次に、センサーが接続されているピンと使用される温度センサーのタイプを指定する必要があります。ここではDHT11センサーを使用しているため、変数 sensor_name はAdafruit_DHT.DHT11に割り当てられています。センサーの出力ピンはRaspberryPiのGPIO17に接続されているため、以下に示すように、sensor_pin変数に17を割り当てます。
sensor_name = Adafruit_DHT.DHT11#DHT11センサーを使用しています sensor_pin = 17#センサーはPiのGPIO17に接続されています
同様に、LCDが接続されているGPIOピンも定義する必要があります。ここでは、LCDを4ビットモードで使用しているため、piのGPIOピンに接続するための4つのデータピンと2つの制御ピンがあります。また、バックライトも制御したい場合は、バックライトピンをGPIOピンに接続することができます。しかし、今のところ私はそれを使用していないので、それに0を割り当てました。
lcd_rs = 7#RSのLCDはPIの GPIO7に 接続されていますlcd_en = 8 #ENのLCDはPIのGPIO8に 接続されていますlcd_d4 = 25#D4のLCDはPIのGPIO25に 接続されていますlcd_d5 = 24#D5のLCDはPIのGPIO24に 接続lcd_d6 = 23 LCDの#D6はPIのGPIO23に接続lcd_d7 = 18 LCDの#D7はPIの GPIO18に接続lcd_backlight = 0 #LEDは接続されていないため、0に割り当てます
LCDを8ビットモードでRaspberrypiに接続することもできますが、そうすると空きピンが減少します。
ダウンロードしたAdafruitのLCDライブラリは、あらゆるタイプの特徴的なLCDディスプレイに使用できます。このプロジェクトでは、16 * 2 LCDディスプレイを使用しているため、以下に示すように、変数の行と列の数に言及しています。
lcd_columns = 16#16 * 2LCDの場合lcd_rows = 2#16 * 2LCDの場合
これで、LCDピンとLCDの行と列の数を宣言したので、必要なすべての情報をライブラリに送信する次の行を使用して、LCD表示を初期化できます。
lcd = LCD.Adafruit_CharLCD(lcd_rs、lcd_en、lcd_d4、lcd_d5、lcd_d6、lcd_d7、 lcd_columns、lcd_rows、lcd_backlight)#すべてのピンの詳細をライブラリに送信
プログラムを開始するには、 lcd.message() 関数を使用して小さな紹介メッセージを表示し、メッセージを読みやすくするために2秒の遅延を与えます。2行目に印刷するには、次のようにコマンド\ nを使用できます。
lcd .message( 'DHT11 with Pi \ n -CircuitDigest')#イントロメッセージを 与えるtime.sleep(2)#2秒間待つ
最後に、 while ループ内で 、センサーから温度と湿度の値を読み取り、 2秒ごとにLCD画面に表示する必要があります。whileループ内の完全なプログラムを以下に示します。
while 1:#Infinite Loop
湿度、温度= Adafruit_DHT.read_retry(sensor_name、sensor_pin)#センサーから読み取り、それぞれの値を温度と湿度の変数に保存します
lcd.clear()#LCD画面を クリアし ますlcd.message( 'Temp =%。1f C'%温度)#温度の値を表示しますlcd.message( '\ nHum =%。1f %%'%湿度)湿度 time.sleep(2)の値#2秒間待ってから、値を更新します
以下の1行を使用して、センサーから温度と湿度の値を簡単に取得できます。ご覧のとおり、可変湿度と温度に保存されている2つの値を返します。 sensor_nameの と sensor_pin 詳細はパラメータとして渡されます。これらの値は、プログラムの開始時に更新されました
湿度、温度= Adafruit_DHT.read_retry(sensor_name、sensor_pin)
LCD画面に変数名を表示するには、&d、%cなどの識別子を使用できます。ここでは、小数点以下1桁の浮動小数点数を表示しているため、識別子%.1fを使用して値を表示します。可変の温度と湿度
lcd .message( 'Temp =%。1f C'%温度) lcd .message( '\ nHum =%。1f %%'%湿度)
Raspberry Piを使用した湿度と温度の測定:
回路図に従って接続し、必要なライブラリをインストールします。次に、このページの最後にあるpythonプログラムを起動します。LCDにイントロメッセージが表示され、次の画像に示すように現在の温度と湿度の値が表示されます。
LCDに何も表示されていない場合は、Pythonシェルウィンドウにエラーが表示されていないかどうかを確認します。エラーが表示されていない場合は、接続をもう一度確認し、ポテンショメータを調整してLCDのコントラストレベルを変更し、何かが表示されるかどうかを確認します。スクリーン。
プロジェクトを理解し、構築を楽しんだことを願っています。これを行う際に問題が発生した場合は、コメントセクションに報告するか、フォーラムを使用して技術的なヘルプを参照してください。私はすべてのコメントに答えるために最善を尽くします。
他のマイクロコントローラーでDHT11を使用して他のプロジェクトを確認することもできます。