Truva Linux Destek Forumu
Raspberry Pi => Projeler => Konuyu başlatan: atlantis - 13 Ocak 2014, 11:54:59 ös
-
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 (http://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.
(http://www.truvalinux.org.tr/raspi/isivenem/DHT11_pinout.JPG)
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.
(http://www.truvalinux.org.tr/raspi/isivenem/sema.gif)
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.
(http://www.truvalinux.org.tr/raspi/isivenem/1.jpg)
(http://www.truvalinux.org.tr/raspi/isivenem/2.jpg)
(http://www.truvalinux.org.tr/raspi/isivenem/3.jpg)
(http://www.truvalinux.org.tr/raspi/isivenem/4.jpg)
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.
(http://www.truvalinux.org.tr/raspi/isivenem/5.jpg)
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/wiring
Not : Program ve devreyi çalıştırma esnasında meydana gelebilecek sorunlardan Truva Linux sorumlu tutulamaz. Kaynak gösterilmek şartıyla paylaşılabilir.
-
Teşekkürler atlantis.
-
Rica ederim. Hastalıktan kurtuldum baya. Faaliyete başladım. Gerisi de gelecek inşallah.
-
Rica ederim. Hastalıktan kurtuldum baya. Faaliyete başladım. Gerisi de gelecek inşallah.
Hasta mıydın, geçmiş olsun. Görünmez olmuştun, işlerin olduğuna yormuştum.
-
Sağol. 9 gündür hastalıkla mücadele ediyorum. Aynı zamanda bebekte hastaydı. Katarin sağolsun ben kendime getirdi ama tam düzelme yok hala. 2-3 kilo verdim hastalık sırasında :D
-
Sağol. 9 gündür hastalıkla mücadele ediyorum. Aynı zamanda bebekte hastaydı. Katarin sağolsun ben kendime getirdi ama tam düzelme yok hala. 2-3 kilo verdim hastalık sırasında :D
Öyle mi, bayağı rahatsızmışsın yahu. Tekrar geçmiş olsun. Tabii bebeğe de geçmiş olsun. :)
-
Sağol. Evet baya kötüydüm. 2 gün sadece su içebildim.