- Published on
Raspberry Piに「DS18B20」を接続し制御する
1475文字3分で読めます–––
閲覧数
- Authors
- Name
- 将 有坂
- short bio
- ラズパイやArduinoで電子工作をしてます。
はじめに
Raspberry Piは小型で強力なシングルボードコンピューターであり、様々なセンサーやデバイスを制御するのに適しています。この記事では、温度センサー「DS18B20」をRaspberry Piに接続し、Pythonを使用して制御する方法について解説します。
※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚
1. DS18B20温度センサーの概要
DS18B20は、デジタル温度センサーであり、1本のデータ線を介して温度情報を提供します。このセンサーは防水型もあり、室内外の温度測定に広く利用されています。
2. DS18B20の接続
DS18B20をRaspberry Piに接続するには、以下の手順を実行します。
- DS18B20の接続:
- VCC(赤色): Raspberry Piの3.3Vピン
- GND(黒色): Raspberry PiのGNDピン
- データ線(黄色または白色): Raspberry PiのGPIOピン(通常はGPIO4)
3. Raspberry Piの設定
Raspberry Pi上でDS18B20を利用するには、まず以下の手順で1-Wireインターフェースを有効にします。
- Raspberry Piを起動し、
sudo raspi-config
を実行します。 - "Interfacing Options"を選択し、1-Wireを有効にします。
- リブートします。
4. Pythonコードの作成
次に、Pythonスクリプトを作成してDS18B20を制御します。以下は、温度を読み取り、コンソールに表示する簡単な例です。
import os
import glob
import time
# DS18B20のセンサーIDを指定
sensor_id = "28-xxxx" # 実際のIDはls /sys/bus/w1/devices/で確認
# 温度センサーのディレクトリ
base_dir = "/sys/bus/w1/devices/"
device_folder = glob.glob(base_dir + sensor_id)[0]
device_file = device_folder + "/w1_slave"
def read_temp_raw():
with open(device_file, "r") as f:
lines = f.readlines()
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
return temp_c
# 温度を表示
while True:
print("温度: {} °C".format(read_temp()))
time.sleep(1)
5. コードの実行と確認
コードを保存し、実行します。ターミナルに温度が表示されれば、DS18B20が正常に動作しています。
これで、Raspberry PiにDS18B20を接続し、Pythonを使用して温度を読み取り、制御する方法についての基本的な手順が完了しました。これをベースにして、データの保存や他のセンサーとの組み合わせなど、さまざまなプロジェクトを展開することができます。
※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚