…
流浪の青年海外協力隊員 t28-miya でございます。
Raspberry Pi Sensor 第2回目です。
いただいたセンサーとRaspberry Piを使って温度計を作ってみました。
…
使用したセンサーは Osoyoo というところから出ているセンサーモージュール20種類キットに入っていた DH18B20温度センサーを使いました。
…
まずは基盤を作ります。
1. 基盤を作る
ブレッドボード、ジャンパワイヤ、抵抗を使って組んでいきますが、
こちらに記載されていた構成と同じように組みました。
…
すみません。引用させていただいております。
S側のピンをGPIO 4ピンに、真ん中のピンを5Vピンに、- 側のピンをGNDにつなぎます。
実際につないだ様子です。
ジャンパワイヤを使って、ブレットボードからセンサー部分を伸ばしてみました。
…
2.モジュールの設定、インストール
センサーを使うための設定をしていきます。まずはこちらのコマンドを入力します。
sudo modprobe w1-gpio
sudo modprobe w1_therm
入力をしたらコマンド
lsmod | grep w1
で w1_gpio, w1_therm が表示されることを確認します。
次にディレクトリ /boot 配下にある config.txt の設定をします。まずは vi エディタで開きます。
vi /boot/config.txt
末尾に
dtoverlay1=w1-gpio-pullup,gpiopin=4
を追記します。
次に
ls -l /sys/bus/w1/devices
で28- から始まるセンサーアドレスが表示されるか確認します。
28-0416753f37ff というものが表示されています。それぞれの機器でこの値は違うはずです。
次にこの値をつかい
cat /sys/bus/w1/devices/28-XXXX/w1_slave
を入力します。
すると t=と書かれた部分に数字が表示されます。これが温度です。
ちなみに、31.1度です。
この値を使って温度を表示させるプログラムを書きます。
pythonを使って下記のようなプログラムを作成しました。
import os
import glob
from time import sleep
os.system('modprobe w1-gpio')
os.system('modprobe w1-gpio')
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':
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
var = 'Current Temperture is'
try:
while True:
print var, read_temp()
sleep(1)
except KeyboardInterrupt:
pass
import glob
from time import sleep
os.system('modprobe w1-gpio')
os.system('modprobe w1-gpio')
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':
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
var = 'Current Temperture is'
try:
while True:
print var, read_temp()
sleep(1)
except KeyboardInterrupt:
pass
このプログラムを実施してみます。
0.2秒おきに温度が表示されていきます。
このプログラムを応用したり、PHPやHTMLと連動させて、温度表示をブラウジングできるようなものが作れたら面白いなと思ったりしています。
今後の課題ですね。
もしよろしければ
ポチっとお願いします。
↓
0 件のコメント:
コメントを投稿