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(プライムデー)2023
Amazon Prime Day(プライムデー)2023はプライム会員に向け、年一度のビッグセールです。7/11 火曜0時から7/12 水曜23時59分まで、トップブランドや中小企業から数多くのお買得商品が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に登録したりします。
以上です!
コメント