Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
Share Thread:
[Proje] Raspberry Pi ile Isı ve Nem Sensörü (DHT11) Kullanımı
#1
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.

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.
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.


1.jpg

2.jpg

3.jpg

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.

Kod:
#!/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.

Kod:
$ 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.

Kod:
output = subprocess.check_output(["./dht11", "11", "4"]);



Program çıktısı aşağıdaki şekildedir.
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-s...ing/wiring


Not : Program ve devreyi çalıştırma esnasında meydana gelebilecek sorunlardan makale yazarı ve forum sorumlu tutulamaz. Kaynak gösterilmek şartıyla paylaşılabilir.
Truva Linux - Türkiye'nin Linux Dağıtımı
http://www.truvalinux.org.tr
http://truvalinux.blogspot.com
---------------------------------------------
Raspberry Pi Model B 256 Mb
Raspberry Pi Model B+
Cevapla
#2
Eline sağlık @atlantis , devamını bekliyoruz Wink
Lütfen özel mesajla soru sormayın arkadaşlar. Cevaplamayacağım. Bu forumdaki ben de dahil herkese sorabilecekken neden bir kişiyle yetinesiniz ki?

-Dubito, Ergo Cogito, Ergo Sum
Ara
Cevapla
#3
İnşallah. Aslında herşeyin denemesi var ama oturup makale yazma fırsatım olmadı.
Truva Linux - Türkiye'nin Linux Dağıtımı
http://www.truvalinux.org.tr
http://truvalinux.blogspot.com
---------------------------------------------
Raspberry Pi Model B 256 Mb
Raspberry Pi Model B+
Cevapla
#4
Eline sağlık güzel çalışma

Bir sonraki aşamada
sensor ile GPIO arasını kablo değilde radyo frekansı ile yapabilir miyiz? Smile
Ara
Cevapla
#5
Sağol. oturupta adam akıllı ilgilenemiyorum ama hayalimde senin dediğin türde bir sistem var Big Grin
Truva Linux - Türkiye'nin Linux Dağıtımı
http://www.truvalinux.org.tr
http://truvalinux.blogspot.com
---------------------------------------------
Raspberry Pi Model B 256 Mb
Raspberry Pi Model B+
Cevapla
#6
Elektronik konusun bende derin bir yara Smile hobi seviyesinde bir kurs bulsam hemen koşacam.

bir çok örnek var internette ama raspi olmasının en güzel yani aldığın veriyi python ile cekip veritabanına kaydeder ordan istediğim gibi kullabilirim ama önemli olan o sıcaklık vs bilgileri almak Smile

öncelikle bu kablolu örneği yapayim gerisi Allah kerim

kendi verici ile sensorlerim ve raspi'yi alıcı modda nasıl kullanacam
Ara
Cevapla
#7
Biz de uzman değiliz bu konularda. Azıcık bilgimizle internetteki bilgileri birleştiriyoruz. Birazcık kodlama yapıyoruz. Ortaya bunlar çıkıyor. Bahsettiğin şeylerin örnekleri sitelerde mevcuttur ama hepsini bir anda yapamayabilirsin. Zamana bırak. Adım adım ilerle.
Truva Linux - Türkiye'nin Linux Dağıtımı
http://www.truvalinux.org.tr
http://truvalinux.blogspot.com
---------------------------------------------
Raspberry Pi Model B 256 Mb
Raspberry Pi Model B+
Cevapla
#8
@atlantis yeni makaleler bekliyoruz Smile
Lütfen özel mesajla soru sormayın arkadaşlar. Cevaplamayacağım. Bu forumdaki ben de dahil herkese sorabilecekken neden bir kişiyle yetinesiniz ki?

-Dubito, Ergo Cogito, Ergo Sum
Ara
Cevapla
#9
İlham perisinin biraz gaz vermesi lazım.
Truva Linux - Türkiye'nin Linux Dağıtımı
http://www.truvalinux.org.tr
http://truvalinux.blogspot.com
---------------------------------------------
Raspberry Pi Model B 256 Mb
Raspberry Pi Model B+
Cevapla
#10
Dediklerinizi yapıp kodu çalıştırdıktan sonra output = subprocess.check_output(["./dht11", "11", "4"]); satırında OSError:[Errno 2] No such file or directory hatası veriyor.
Hata neden kaynaklı? Yardımcı olabilir misiniz?
Ara
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  [Proje] Raspberry Pi B+ Hareket Sensörü (PIR) Projesi mergul87 40 32,075 05-12-2020, 01:59 AM
Son Yorum: gegasafa
  DHT11 ile Google Docs Veri Aktarımı brslds 0 2,378 05-22-2015, 10:07 PM
Son Yorum: brslds

Hızlı Menü:


Konuyu Okuyanlar: 1 Ziyaretçi