Selam arkadaşlar. Raspberry Pi ile adım adım otomasyonun ilk makalesinde ısı ve nem sensörünün kullanımı anlatılacaktır. Olabildiğince ayrıntılı anlatmaya çalışacağım.
Gerekli Malzemeler :Raspberry Pi
Breadboard
Isı ve Nem Sensörü (Dht11)
Direnç (4.7K veya 10 K - 1 Adet)
Jumper Kablo
Eğer ısı sensörünü
dx.com gibi bir siteden alırsanız plaket üzerine monte edilmiş olarak kullanmanız mümkün. Ayrıca pinlerin ne olduğu da üzerinde yazılı olur. Isı sensörünün 3 bacağı kullanım için yeterli.
Pin Name Description
1 VDD Güç Kaynağı 3 - 5.5 V DC (Power supply 3 - 5.5 V DC)
2 DATA Data çıkış bağlantısı (Serial data output)
3 NC Boş (Not connected)
4 GND Şase (Ground)
Devremizin şemasını Adafruit sayfasından aldım. Buna göre breadboard üzerinde devremizi hazırlıyoruz.
Bende Raspberry Pi Model B rev 1 olduğu için açıklamalarda buna göre anlatılacaktır, rev 2 de de aynı pinler kullanılabilir.
Kırmızı ile gösterilen güç bağlantısı 1 nolu pine, siyah kablo (ground) gnd yazan pine, beyaz kablolu data bağlantısı 7 nolu pine bağlanıyor. Ayrıca data bağlantısına arada direnç kullanarak güç veriliyor. Bende belirttiğim direnç olmadığı için elimdeki rasgele bir direnci kullandım mecburen. Aşağıdaki resimlerde daha net görülüyor sanıyorum.
Artık sıra Python kodumuzu hazırlayıp çalıştırmakta. Orjinal kodumuz [2] ısı ve nem bilgilerini alıp Google Spread'e aktarmaktaydı. Ben kodu sadeleştirip konsola bilgi verecek şekilde düzenledim [1]. Program DHT11 sensöründen aldığı veriyi 3 saniyede bir ekrana tarih ve saat bilgisi ile yazdırmaktadır.
#!/usr/bin/python
import subprocess
import re
import sys
import time
import datetime
while(True):
output = subprocess.check_output(["./dht11", "11", "4"]);
matches = re.search("Temp =\s+([0-9.]+)", output)
if (not matches):
time.sleep(3)
continue
temp = float(matches.group(1))
matches = re.search("Hum =\s+([0-9.]+)", output)
if (not matches):
time.sleep(3)
continue
humidity = float(matches.group(1))
print "-----------------------------------------"
print datetime.datetime.now()
print "Sicaklik : %.1f C" % temp
print "Nem Orani: %.1f %%" % humidity
time.sleep(3)
Bu işlemin dışında bir nokta çok önemli. Python kodu sensörden bilgi almak için yavaş kaldığından dolayı bu işlemi yapması için bir C koduda geliştirilmiş. Bu kodu da aşağıdaki gibi indirebilirsiniz.
$ git clone git://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
$ cd Adafruit-Raspberry-Pi-Python-Code
$ cd Adafruit_DHT_Driver
Bu kodları çalışma dizinine indirdiğinizde Adafruit_DHT dosyası göreceksiniz. Ben bu dosyanın adını dht11 olarak değiştirdim. Aşağı da görüldüğü gibi. Burada
11 sensör tipini (DHT11, DHT22, AM2302), 4 yazan yerde sensörün bağlı olduğu
GPIO pinini göstermektedir.
output = subprocess.check_output(["./dht11", "11", "4"]);
Program çıktısı aşağıdaki şekildedir.
Sonraki aşamalarda çıktıyı 16x2 lcd ekrana yazdırma işlemini de yapacağız.
Projeye ait kodu aşağıdaki adresten indirebilirsiniz.
[1]
http://www.truvalinux.org.tr/raspi/isivenem/isi_nem.py[2]
Orjinal Proje Sayfası :http://learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging/wiringNot : Program ve devreyi çalıştırma esnasında meydana gelebilecek sorunlardan Truva Linux sorumlu tutulamaz. Kaynak gösterilmek şartıyla paylaşılabilir.