Menu

2016年12月24日土曜日

Raspberry Pi Sensor ② 〜温度センサー〜

ສະບາຍດີ!!



流浪の青年海外協力隊員 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


このプログラムを実施してみます。


0.2秒おきに温度が表示されていきます。

このプログラムを応用したり、PHPやHTMLと連動させて、温度表示をブラウジングできるようなものが作れたら面白いなと思ったりしています。

今後の課題ですね。


もしよろしければ

ポチっとお願いします。



にほんブログ村 海外生活ブログ 青年海外協力隊へ

0 件のコメント:

コメントを投稿