- DHT11 Sensörüne Genel Bakış:
- Ön Koşullar:
- Adafruit LCD kütüphanesini Raspberry Pi'ye kurmak:
- Adafruit DHT11 kütüphanesini Raspberry Pi'ye kurmak:
- Devre şeması:
- DHT11 sensörü için Python Programlama:
- Raspberry Pi Kullanarak Nem ve Sıcaklığın Ölçülmesi:
Sıcaklık ve Nem, herhangi bir ortamda izlenen en yaygın parametrelerdir. Sıcaklık ve nemi ölçmek için aralarından seçim yapabileceğiniz tonlarca sensör vardır, ancak en çok kullanılanı, makul ölçüm aralığı ve doğruluğu nedeniyle DHT11'dir. Aynı zamanda tek pimli iletişim ile çalışır ve bu nedenle Mikroişlemciler veya Mikroişlemcilerle arayüz oluşturmak çok kolaydır. Bu eğitimde , popüler DHT11 sensörünü Raspberry Pi ile nasıl arayüzleyeceğimizi ve 16x2 LCD ekranda sıcaklık ve nem değerini nasıl görüntüleyeceğimizi öğreneceğiz. Bunu zaten IoT Raspberry Pi Hava İstasyonu oluşturmak için kullandık.
DHT11 Sensörüne Genel Bakış:
DHT11 sensörü, aşağıdaki özelliklerle bağıl nem ve sıcaklığı ölçebilir
Sıcaklık Aralığı: 0-50 ° C Sıcaklık Doğruluğu: ± 2 ° C Nem Aralığı:% 20-90 RH Nem Doğruluğu: ±% 5
DHT11 sensörü, modül formunda veya sensör formunda mevcuttur. Bu eğitimde sensörün modül formunu kullanıyoruz, her ikisi arasındaki tek fark, modül formunda sensörün bir filtreleme kapasitörüne ve sensörün çıkış pinine takılı bir çekme direncine sahip olmasıdır. Dolayısıyla, sensörü tek başına kullanıyorsanız, bu iki bileşeni eklediğinizden emin olun. Ayrıca Arduino ile DHT11 arayüzünü öğrenin.
DHT11 Sensörü nasıl çalışır:
DHT11 sensörü mavi veya beyaz renkli bir kasa ile birlikte gelir. Bu kasanın içinde bağıl nem ve sıcaklığı algılamamıza yardımcı olan iki önemli bileşen var. İlk bileşen bir çift elektrottur; bu iki elektrot arasındaki elektrik direncine nem tutan bir substrat karar verir. Dolayısıyla ölçülen direnç, ortamın bağıl nemi ile ters orantılıdır. Bağıl nem ne kadar yüksekse, direnç değeri o kadar düşük olur ve bunun tersi de geçerlidir. Ayrıca Bağıl nemin gerçek nemden farklı olduğunu unutmayın. Bağıl nem, havadaki sıcaklığa göre havadaki su içeriğini ölçer.
Diğer bileşen, yüzeye monte bir NTC Termistördür. NTC terimi, Negatif sıcaklık katsayısı anlamına gelir, sıcaklık artışı için direnç değeri azalacaktır.
Ön Koşullar:
Raspberry Pi'nizin zaten bir işletim sistemi ile yanıp söndüğü ve internete bağlanabildiği varsayılmaktadır. Değilse, devam etmeden önce Raspberry Pi ile Başlarken öğreticisini izleyin.
Ayrıca pi'nize ya terminal pencerelerinden ya da python programları yazıp çalıştırabileceğiniz ve terminal penceresini kullanabileceğiniz diğer uygulamalar aracılığıyla erişebileceğiniz varsayılır.
Adafruit LCD kütüphanesini Raspberry Pi'ye kurmak:
Sıcaklık ve nem değeri 16 * 2 LCD ekranda görüntülenecektir. Adafruit bize bu LCD'yi 4 bit modunda kolayca çalıştırabilmemiz için bir kütüphane sağlıyor, bu yüzden Pi terminal penceresini açıp aşağıdaki adımları takip ederek Raspberry Pi'mize ekleyelim.
Adım 1: Aşağıdaki satırı kullanarak Raspberry Pi'nize git yükleyin. Git, Github'daki herhangi bir proje dosyasını klonlamanıza ve bunu Raspberry pi'nizde kullanmanıza olanak tanır. Kütüphanemiz Github'da, bu yüzden bu kütüphaneyi pi'ye indirmek için git yüklememiz gerekiyor.
apt-get install git
Adım 2: Aşağıdaki satır, kütüphanenin bulunduğu GitHub sayfasına bağlanır, sadece proje dosyasını Pi ana dizinindeki klonlamak için satırı çalıştırın
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Adım 3: İndirdiğimiz proje dosyasına girmek için dizin satırını değiştirmek için aşağıdaki komutu kullanın. Komut satırı aşağıda verilmiştir
cd Adafruit_Python_CharLCD
Adım 4: Dizinin içinde setup.py adında bir dosya olacak, kütüphaneyi kurmak için onu kurmamız gerekiyor. Kitaplığı kurmak için aşağıdaki kodu kullanın
sudo python setup.py install
Yani kitaplığın başarıyla kurulmuş olması gerekirdi. Şimdi benzer şekilde yine Adafruit'tan olan DHT kütüphanesini kurmaya devam edelim.
Adafruit DHT11 kütüphanesini Raspberry Pi'ye kurmak:
DHT11 Sensör, tek telli sistem prensibiyle çalışır. Sıcaklık ve nem değeri sensör tarafından algılanır ve ardından çıkış pininden seri veri olarak iletilir. Daha sonra bu verileri bir MCU / MPU üzerindeki I / O pinini kullanarak okuyabiliriz. Bu değerlerin nasıl okunduğunu anlamak için DHT11 sensörünün veri sayfasını okumanız gerekir, ancak şimdilik işleri basitleştirmek için DHT11 sensörüyle konuşmak için bir kitaplık kullanacağız.
DHT11 kütüphanesi Adafruit sağladığı da DHT11, DHT22 ve diğer bir tel sıcaklık sensörleri için kullanılabilir. DHT11 kitaplığını kurma prosedürü de LCD kitaplığını kurmak için izlenene benzer. Değişecek tek satır, DHT kitaplığının kaydedildiği GitHub sayfasının bağlantısıdır.
DHT kitaplığını kurmak için dört komut satırını terminalde birer birer girin
git klon
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Tamamlandığında, her iki kitaplığı da Raspberry Pi'mize başarıyla yükleyeceksiniz. Şimdi donanım bağlantısına geçebiliriz.
Devre şeması:
DH11'i Raspberry pi ile Arayüzlemenin tam devre şeması aşağıda verilmiştir, Fritzing kullanılarak yapılmıştır. Bağlantıları takip edin ve devreyi yapın
Hem LCD hem de DHT11 sensörü + 5V besleme ile çalışır, bu nedenle her ikisine de güç sağlamak için Raspberry Pi üzerindeki 5V pinleri kullanırız. DHT11 sensörünün çıkış pininde 1k değerinde bir yukarı çekme direnci kullanılır, bir modül kullanıyorsanız bu direnci önleyebilirsiniz.
LCD'nin kontrast seviyesini kontrol etmek için LCD'nin Vee pinine 10k'lık bir düzeltici pot eklenir. Bunun dışında tüm bağlantılar oldukça basit. Ancak programımızda ihtiyaç duyacağımız için pinleri bağlamak için hangi GPIO pinlerini kullandığınızı not edin. Aşağıdaki tablo, GPIO pin numaralarını anlamanıza izin vermelidir.
Tabloyu kullanın ve bağlantılarınızı devre şemasına göre yapın. Bağlantılarımı yapmak için bir breadboard ve jumper kabloları kullandım. DHT11 modülünü kullandığım için doğrudan Raspberry Pi'ye bağladım. Donanımım aşağıdaki gibi görünüyordu
DHT11 sensörü için Python Programlama:
DHT11 sensöründen sıcaklık ve nem değerini okumak için bir program yazmalı ve ardından aynısını LCD'de görüntülemeliyiz. Hem LCD hem de DHT11 sensörü için kitaplıklar indirdiğimizden, kod hemen hemen basit olmalıdır. Piton komple bir program bu sayfanın sonunda bulunabilir, ancak programın nasıl çalıştığını anlamak için daha fazla okuyabilirsiniz.
Biz zorundayız LCD kütüphanesi ve DHT11 kütüphane ithal bununla ilgili işlevleri kullanmak için programımıza. Bunları zaten indirip Pi'mize yüklediğimizden, bunları içe aktarmak için aşağıdaki satırları kullanabiliriz. Gecikme işlevini kullanmak için zaman kitaplığını da içe aktarıyoruz.
içe aktarma süresi # gecikme oluşturmak için içe aktarma süresi Adafruit_CharLCD'yi LCD olarak içe aktar # LCD kitaplığını içe aktar Adafruit_DHT # Sensör için DHT Kitaplığını içe aktar
Daha sonra sensörün hangi pinlere bağlandığını ve hangi tip sıcaklık sensörünün kullanıldığını belirtmemiz gerekiyor. Burada DHT11 sensörünü kullandığımız için sensör_adı değişkeni Adafruit_DHT.DHT11'e atanmıştır. Sensörün çıkış pini Raspberry Pi'nin GPIO 17'sine bağlıdır ve dolayısıyla aşağıda gösterildiği gibi sensor_pin değişkenine 17 atarız.
sensor_name = Adafruit_DHT.DHT11 # DHT11 sensörünü kullanıyoruz sensor_pin = 17 # Sensör Pi üzerinde GPIO17'ye bağlı
Benzer şekilde, LCD'nin hangi GPIO pinlerine bağlı olduğunu da tanımlamamız gerekiyor. Burada LCD'yi 4 bit modunda kullanıyoruz, dolayısıyla pi'nin GPIO pinlerine bağlanmak için dört veri pinimiz ve iki kontrol pinimiz olacak. Ayrıca, arka ışığı da kontrol etmek istiyorsak, arka ışık pinini bir GPIO pinine bağlayabilirsiniz. Ama şimdilik onu kullanmıyorum, bu yüzden ona 0 atadım.
lcd_rs = 7 #RS LCD'nin PI üzerinde GPIO 7'ye bağlı lcd_en = 8 # LCD'nin PI üzerinde GPIO 8'e bağlı lcd_d4 = 25 # LCD'nin D4'ü , PI lcd_d5 = 24 üzerinde GPIO 25'e bağlıdır. PI lcd_d6 = 23 üzerinde GPIO 24'e bağlı # LCD'nin D6'sı PI üzerindeki GPIO 23'e bağlı lcd_d7 = 18 # LCD'nin D7'si PI üzerinde GPIO 18'e bağlı lcd_backlight = 0 #LED bağlı değil, bu yüzden 0'a atıyoruz
Raspberry pi ile LCD'yi 8 bit modunda da bağlayabilirsiniz, ancak daha sonra boş pimler azalacaktır.
Adafruit'den indirdiğimiz LCD kitaplığı, her tür karakteristik LCD ekran için kullanılabilir. Burada projemizde 16 * 2 LCD ekran kullanıyoruz, bu nedenle aşağıda gösterildiği gibi bir değişkene Satır ve Sütun sayılarından bahsediyoruz.
lcd_columns = 16 # için 16 * 2 LCD lcd_rows = 2 # 16 * 2 LCD için
Artık LCD için LCD pinlerini ve Satır ve Sütun sayılarını açıkladığımıza göre, gerekli tüm bilgileri kütüphaneye gönderen aşağıdaki satırı kullanarak LCD ekranını başlatabiliriz.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # Tüm pin ayrıntılarını kitaplığa gönderin
Programı başlatmak için lcd.message () işlevini kullanarak küçük bir giriş mesajı görüntüleriz ve ardından mesajı okunabilir hale getirmek için 2 saniyelik bir gecikme veririz . 2. satıra yazdırmak için \ n komutu aşağıda gösterildiği gibi kullanılabilir
lcd .message ('Pi \ n -CircuitDigest ile DHT11') # Bir giriş mesajı verin. time.sleep (2) # 2 saniye bekleyin
Son olarak, while döngümüzün içinde sensörden sıcaklık ve nem değerini okumalı ve 2 saniyede bir LCD ekranda görüntülemeliyiz. While döngüsü içindeki programın tamamı aşağıda gösterilmiştir
while 1: # Sonsuz Döngü
nem, sıcaklık = Adafruit_DHT.read_retry (sensör_adı, sensör_pin) # sensörden okuyun ve ilgili değerleri sıcaklık ve nem değişkenine kaydedin
lcd.clear () # LCD ekranı temizle lcd.message ('Sıcaklık =%.1f C'% sıcaklık) # Sıcaklık değerini göster lcd.message ('\ nHum =%.1f %%'% nem) # Ekran Nem süresi değeri. uyku (2) # 2 saniye bekleyin ve ardından değerleri güncelleyin
Aşağıdaki bu tek satırı kullanarak sensörden sıcaklık ve nem değerini kolayca alabiliyoruz. Gördüğünüz gibi değişken nem ve sıcaklıkta depolanan iki değer döndürüyor. Sensor_name ve sensor_pin ayrıntıları parametre olarak geçirilir; bu değerler programın başlangıcında güncellenmiştir
nem, sıcaklık = Adafruit_DHT.read_retry (sensor_name, sensor_pin)
LCD ekranda bir değişken adı görüntülemek için & d,% c vb. Gibi tanımlayıcıları kullanabiliriz. Burada ondalık noktadan sonra yalnızca bir rakam olan bir kayan nokta numarası gösterdiğimiz için, değeri görüntülemek için %.1f tanımlayıcısını kullanıyoruz . değişken sıcaklık ve nem
lcd. mesaj ('Sıcaklık =%.1f C'% sıcaklık) lcd. mesaj ('\ nHum =%.1f %%'% nem)
Raspberry Pi Kullanarak Nem ve Sıcaklığın Ölçülmesi:
Bağlantıları devre şemasına göre yapın ve gerekli kitaplıkları kurun. Ardından bu sayfanın sonunda verilen python programını başlatın. LCD'niz bir giriş mesajı göstermeli ve ardından aşağıdaki resimde gösterildiği gibi mevcut sıcaklık ve nem değerini görüntülemelidir.
LCD'de görüntülenecek hiçbir şey bulamazsanız, python kabuğu penceresinin herhangi bir hata gösterip göstermediğini kontrol edin, herhangi bir hata görüntülenmezse bağlantılarınızı bir kez daha kontrol edin ve LCD'nin kontrast seviyesini değiştirmek için potansiyometreyi ayarlayın ve herhangi bir şey olup olmadığını kontrol edin ekran.
Umarım projeyi anladınız ve inşa etmekten keyif aldıysanız, bunu yaparken herhangi bir sorunla karşılaştıysanız, yorum bölümüne bildirin veya teknik yardım için forumu kullanın. Tüm yorumlara cevap vermek için elimden geleni yapacağım.
DHT11'i diğer mikrodenetleyici ile kullanarak diğer projelerimizi de kontrol edebilirsiniz.