説明
DS18B20デジタルサーモメータのDS18B20は、9ビット~12ビットの摂氏温度測定値を提供し、不揮発性のユーザー設定可能な上限/下限トリガポイントを備えたアラーム機能を内蔵しています。DS18B20は1-Wire®バス上で通信を行います。名称通りに、このバスは中央のマイクロプロセッサとの通信に1つのデータライン(およびグランド)のみを必要とします。このデバイスは-55℃~+125℃の温度範囲で動作し、精度は-10℃~+85℃の範囲で±0.5℃です。さらに、DS18B20はデータラインから直接給電することが可能なため(「寄生電源」)、外部電源は不要です。
各DS18B20は固有の64ビットシリアルコードを備えているため、複数のDS18B20が同一の1-Wireバス上で機能することができます。そのため、1つのマイクロプロセッサを使用して広範囲に分散した多数のDS18B20を制御することが容易です。この機能が役立つアプリケーションとして、HVAC環境制御、ビル/機器/機械内の温度監視システム、およびプロセス監視/制御システムなどがあります。
必要なパーツ
Pi3ボード x1
|
|
DS18B20 x1
|
|
ジャンプワイヤー x3
|
ハードウェア
DS18B20モジュールの”S”PINとラズパイのGPIO4(BCM)と接続して、”-“とラズパイの”GND”、真ん中の”+”とラズパイの5Vを接続してくださいませ。配線図をご確認くださいませ:
Raspberry Pi3の GPIO端子の 1-Wire®機能を有効化
コマンド欄に下記のコマンドを入力、動作して、configファイルを編集します。
sudo nano /boot/config.txt
カーソルをconfigファイルの一番下に移動して、下記の内容をファイルにコーピーして下さい。
dtoverlay=w1-gpio
キーボードのCtrlとXキーを押して、Yを入力したら、ファイルを保存します。
コマンド欄に下記のコマンドを動作したら、ラズパイを再起動して、配置を有効にする
sudo reboot
再起動したら、下記のコマンドを動作して、 1-Wire®が起動していたと確認できます。詳しく画像をご確認:
lsmod
上記の画像のように、w1_gpio wire などの内容が有ったら、1-Wire®が正常起動していたと判明できます。もし、無ければ、下記のコマンドを動作して、1-Wire®を有効します。
sudo modprobe w1-gpio sudo modprobe w1-therm
下記の各コマンドを作動したら、今現在の温度をリターンします。
sudo modprobe w1-gpio Enterキー sudo modprobe w1-therm Enterキー cd /sys/bus/w1/devices Enterキー cd /28-xxxxxx Enterキー cat w1_slave Enterキー
ソフトウエア
下記のコマンドを動作したら、temp.pyファイルを新規作成します。
sudo nano temp.py
下記の内容をtemp.pyファイルにコーピーして下さい。
import os import glob import time os.system('modprobe w1-gpio') os.system('modprobe w1-therm') base_dir = '/sys/bus/w1/devices/' device_folder = glob.glob(base_dir + '28*')[0] device_file = device_folder + '/w1_slave' def read_temp_raw(): f = open(device_file, 'r') lines = f.readlines() f.close() return lines def read_temp(): lines = read_temp_raw() while lines[0].strip()[-3:] != 'YES': time.sleep(0.2) lines = read_temp_raw() equals_pos = lines[1].find('t=') if equals_pos != -1: temp_string = lines[1][equals_pos+2:] temp_c = float(temp_string) / 1000.0 temp_f = temp_c * 9.0 / 5.0 + 32.0 return temp_c, temp_f while True: print('C =%3.3f F = %3.3f'% read_temp()) time.sleep(1)
キーボードのCtrlとXキーを押して、Yを入力したら、ファイルを保存します。
ファイルが保存したら、下記のコマンドを動作して、結果を確認します。
sudo python ./temp.py
説明:
1)os.system(‘modprobe w1-gpio’)とos.system(‘modprobe w1-therm’)はプログラムの最初にmodprobeコマンドを作動します。
2)base_dir = ‘/sys/bus/w1/devices/’とdevice_folder = glob.glob(base_dir + ’28*’)[0]は/sys/bus/w1/devices/の28からのファイルを獲得します。
3)device_file = device_folder + ‘/w1_slave’はファイルを開けて、データを獲得します。
4)while lines[0].strip()[–3:] != ‘YES’: 読み取れたファイル第1行最後の文字はYESかどうか判明します。
5)equals_pos = lines[1].find(‘t=’) :読み取れたファイル第2行(t=)を検索します。もし、見つからない場合、1をリターンします。
DownLoad Url osoyoo.com