Bu içerik 16 Ocak 2017 Tarihinde Raspberry Pi 3 Uyumlu Olacak Şekilde Güncellenmiştir. Güncellenen kısımları daha kolay şekilde görebilmeniz için farklı renkte (lacivert) yazdık. Güncelliğini yitiren kısımların ise üzerini çizdik. Keyifle oku, bol bol üret!

Merhabalar. Bu dersimizde Raspberry Pi’mize dijital sıcaklık sensörü bağlayarak sıcaklık ölçümü yapacağız. Gerekli malzemelerimiz:

Raspberry Pi’de, Arduino’nun aksine ADC (analog-to-digital converter, analogtan dijitale çevirici) bulunmamaktadır. Bu sebeple, LM35 gibi analog çıkış veren sıcaklık sensörlerini Raspberry Pi ile doğrudan kullanmamız mümkün değildir. Bu dersimizde dijital haberleşme yeteneğine sahip DS18B20 sıcaklık sensörü kullanacağız.

DS18B20

(*) DS18B20 sıcaklık sensörü, yukarıdaki resimde görüldüğü gibi TO92 kılıfta gelebileceği gibi su geçirmez yapıda veya devre kartına lehimlenmiş halde hazır modül olarak ta bulunmaktadır. Hazır modülden temin ederseniz, malzeme listesinde yer alan 4.7kΩ dirence ihtiyacınız kalmayacaktır, çünkü bu kartta direnç zaten bulunmaktadır. Su geçirmez ve TO92 kılıflarda ise bu direnci kullanmanız gereklidir.

Devremizi aşağıdaki şemada belirtilen şekilde kuruyoruz:

ders10_temp_bb

Bağlantıyı yaptıktan sonra Raspberry Pi’mizi çalıştırıyoruz. DS18B20 sensörü one-wire isimli bir protokol kullanmaktadır. Bu protokolü Raspberry Pi’mizde kullanmak için öncelikle

sudo nano /boot/config.txt

komutunu kullanarak açılan ekranda en alt kısmına

dtoverlay=w1-gpio

satırını eklememiz gerekiyor.

Alternatif olarak, one-wire protokol desteğini grafik arayüzü kullanarak da açabiliriz. Raspberry Pi Dersleri 1: raspi-config İle İlk Ayarlama yazımıza başvurabilirsiniz.

config_

Bu satırı ekledikten sonra Raspberry Pi’mizi yeniden başlatıyoruz. Raspberry Pi’miz açılınca temp.py isimli bir dosya oluşturup içine aşağıdaki kodumuzu kopyalıyoruz:

import os
import glob
import time
 
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
 
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':
        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
        temp_f = temp_c * 9.0 / 5.0 + 32.0
        return temp_c, temp_f
	
while True:
	print(read_temp())	
	time.sleep(1)

Dosyamızı kaydettikten sonra

sudo python temp.py

komutu ile çalıştırıyoruz. Raspbian’ın güncel sürümünde Python komutlarından önce sudo yazmamıza gerek yoktur. Ekranda görülen ilk değer Celcius, ikincisi ise Fahrenheit cinsinden sıcaklık değeridir.

temp

3 Yorumlar

CEVAP VER