ラズパイで水温センサー(DS18B20)からpython3で水温を取得する。

ラズパイ

DS18B20センサーを使用し、pythonにより水温を取得します。

前提

ラズパイ:Raspberry pi 4B
OS:Raspbian GNU/Linux 10 (buster)
使用言語:python3

事前準備

アップデート

# sudo apt-get update
# sudo apt-get upgrade
# sudo apt-get dist-upgrade

1-wire通信有効化

以下の通りラズパイの1-wire通信を有効にします。

# sudo raspi-config
Interfacing Options > 1-Wire > Yesで1-wireを有効にできます。

実際には/boot/config.txtに以下の一行が追加されます。

dtoverlay=w1-gpio

加えて/boot/config.txtに以下の設定を行います。

dtoverlay=w1-gpio,pullup=on

DS18B20

DS18B20準備

amazonから購入しました。

※Amazonプライムデーのタイミングでお買い物するとお得です!

Amazon.co.jp | Amazon Prime Day(プライムデー)2021
Amazon Prime Day(プライムデー)はプライム会員に向けた、年一度のビッグセールです。魅力的なエンターテイメントコンテンツと、トップブランドや中小企業から数多くのお買得商品が48時間に渡って登場します。

購入時のままではブレッドボードに結線できないため,ジャンパーワイヤーへ半田付けして,ビニールテープでまきました。

DS18B20結線

DS18B20ラズパイ
VCC(赤)3.3V(Pin1)
GND(黒)GND(Pin9)
Data(黄)1-Wire(Pin7)

VCCとDataの間に4.7Kの抵抗を入れます。

ラズパイ

センサー接続確認

結線が終わったら値の取得確認をします。

# cd /sys/bus/w1/devices/
# ls -la

上記コマンド実行後,ディレクトリに28-から始まるファイルができていれば値が取得できています!

値の取得

pythonのライブラリを使用して値を取得するので、ライブラリインストール。

# sudo pip install w1thermsensor

あとは以下のようなプログラムを作成すれば水温が取得可能です。

water-temp.py
-- coding: utf-8 --
 from w1thermsensor import W1ThermSensor
 sensor = W1ThermSensor()
 water_temperature = sensor.get_temperature()
 print("water-temperature:{0:.3f}".format(water_temperature))

実行結果

#python test.py
water-temperature:21.938

この値を利用して、spread sheetやBigQueryに登録したりします。

以上です!

コメント

タイトルとURLをコピーしました