Nem, Sıcaklık ve Basınç, herhangi bir Hava İstasyonunu kurmak ve çevre koşullarını ölçmek için üç temel parametredir. Daha önce Arduino'yu kullanarak mini bir Hava İstasyonu kurduk ve bu sefer hava istasyonunu Raspberry Pi ile genişletiyoruz. Bu IoT tabanlı Proje, mevcut Nem, Sıcaklık ve Basınç parametrelerini, onu bir Raspberry Pi Hava İstasyonu yapan Raspberry Pi kullanarak LCD'de ve İnternet sunucusunda göstermeyi amaçlamaktadır. Bu kurulumu istediğiniz yere kurabilir ve o yerin hava koşullarını internet üzerinden dünyanın her yerinden izleyebilirsiniz, sadece güncel verileri göstermekle kalmaz, geçmiş değerleri de Grafikler şeklinde gösterebilir.
Kullandığımız DHT11 nem ve sıcaklık sensörü sıcaklık ve algılanması için BM180 basınç algılama modülünü barometrik basıncı ölçümü için. Bu Santigrat ölçekli Termometre ve yüzde ölçeği Nem ölçer, bir LCD ekran aracılığıyla ortam sıcaklığını ve nemi gösterir ve barometrik basınç milibar veya hPa (hektopaskal) olarak görüntülenir. Tüm bu veriler internet üzerinden dünyanın her yerinden canlı izleme için ThingSpeak sunucusuna gönderilir. Bu eğitimin sonunda verilen Gösteri Videosu ve Python Programını kontrol edin.
Çalışma ve ThingSpeak Kurulumu:
Bu IoT tabanlı projenin dört bölümü vardır. Öncelikle DHT11 sensörü Nem ve Sıcaklık Verilerini algılar ve BM180 sensörü atmosferik basıncı ölçer. İkinci olarak Raspberry Pi, DHT11 sensör modülünün çıkışını, I2C protokolünü kullanarak tek tel protokolünü ve BM180 basınç sensörünün çıkışını kullanarak okur ve her iki sensör değerini yüzde (nem), Santigrat ölçeği (sıcaklık), hektoPascal veya milibar (basınç) cinsinden uygun bir sayıya çıkarır.. Üçüncüsü, bu değerler Raspberry Pi 3'ün dahili Wi-Fi'ı kullanılarak ThingSpeak sunucusuna gönderilir. Ve son olarak ThingSpeak verileri analiz eder ve bir Grafik biçiminde gösterir. Bu değerleri yerel olarak görüntülemek için bir LCD de kullanılır.
ThingSpeak, IoT tabanlı projeler için çok iyi bir araç sağlar. ThingSpeak web sitesini kullanarak, ThingSpeak tarafından sağlanan Kanalları ve web sayfalarını kullanarak verilerimizi izleyebilir ve sistemimizi İnternet üzerinden kontrol edebiliriz. ThingSpeak, sensörlerden gelen verileri 'Toplar', verileri 'Analiz Et ve Görselleştir' ve bir reaksiyonu tetikleyerek 'Eylemler'. ThingSpeak'e veri gönderme hakkında daha önce detaylı bir şekilde açıklamıştık, buradan kontrol edebilirsiniz. Burada, bu Raspberry Pi Hava Durumu istasyonu için ThingSpeak'in kullanılmasını kısaca açıklıyoruz.
Öncelikle ThingSpeak web sitesinde hesap oluşturmanız ve içinde bir 'Yeni kanal' oluşturmanız gerekir. Yeni kanalda, izlemek istediğiniz veriler için bazı alanlar tanımlamalısınız, bu projede olduğu gibi Nem, Sıcaklık ve Basınç verileri için üç alan oluşturacağız.
Şimdi 'API anahtarları' sekmesine tıklayın ve Yazma ve Okuma API anahtarlarını kaydedin, burada sadece Yazma anahtarını kullanıyoruz. Bu anahtarı Koddaki 'anahtar' değişkenine kopyalamanız gerekir.
Bunun ardından, 'Veri Al / Ver' tıklayıp Güncelleme Kanal Besleme GET isteği URL'sini kopyalayıp olduğunu:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Şimdi, "api.thingspeak.com" u açmak ve ardından bu Besleme İsteğini sorgu dizesi olarak kullanarak veri göndermek için Python kodumuzda bu 'Besleme İsteği URL'sine ihtiyacımız var. Ve veri göndermeden önce kullanıcının programdaki değişkenleri kullanarak bu sorgu dizisindeki sıcaklık, nem ve basınç verilerini girmesi gerekir, bu makalenin sonundaki Kodu kontrol edin.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (basınç)
DHT11'in çalışması, DHT11'den veri almak için tek kablolu seri iletişime dayanmaktadır. Burada DHT11'i Raspberry Pi ile arayüzlemek için AdaFruit DHT11 kütüphanesini kullandık. Raspberry Pi burada DHT11'den Nem ve sıcaklık verilerini ve BMP180 sensöründen atmosferik basıncı toplar ve ardından bunu 16x2 LCD ve ThingSpeak sunucusuna gönderir. ThingSpeak, Verileri aşağıdaki gibi Grafik biçiminde görüntüler:
DHT11 Sensörü ve Arduino ile Arayüzü hakkında daha fazla bilgiyi buradan edinebilirsiniz.
Devre şeması:
Raspberry Pi Yapılandırması ve Python Programı:
Program için burada Python dilini kullanıyoruz. Kodlamadan önce, kullanıcının Raspberry Pi'yi yapılandırması gerekir. Raspberry Pi'ye Başlarken ve Raspbian Jessie OS'yi Pi'de Kurmak ve Yapılandırmak için önceki eğitimlerimizi inceleyebilirsiniz.
Öncelikle bu projeyi Raspberry Pi üzerinde çalıştırmak için Adafruit Python DHT Sensör Kitaplığı dosyalarını yüklememiz gerekiyor. Bunu yapmak için verilen komutları izlememiz gerekir:
sudo apt-get install git-core sudo apt-get update git clone https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Bundan sonra, kullanıcının Raspberry Pi I2C'yi RPi Software Configuration Too'ya giderek etkinleştirmesi gerekir:
sudo raspi-config
Ardından 'Gelişmiş Seçenekler'e gidin,' I2C'yi ve 'Etkinleştir'i seçin.
Bu projenin programlama kısmı tüm işlemlerin gerçekleştirilmesinde çok önemli bir rol oynamaktadır. Öncelikle gerekli tüm kitaplıkları ekliyoruz, değişkenleri başlatıyoruz ve LCD ve DHT11 için pinler tanımlıyoruz.
sys içe aktar RPi.GPIO'yu GPIO olarak içe aktar os içe aktarma Adafruit_DHT içe aktarma urllib2 ctype içe aktarma smbus içe aktarma süresi içe aktarma c_short # Kayıt Adresi regCall = 0xAA……………..
In def ana (): fonksiyonu, aşağıdaki kod sürekli içinde, sunucuya veri gönderme ve LCD üzerinde göstermek için kullanılır iken döngü.
def main (): 'Sistem Hazır…' URL = 'https://api.thingspeak.com/update?api_key=%s'% anahtar yazdırma "Bekle…." iken True: (humi, temp) = readDHT () (basınç) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (sıcaklık, basınç)) finalURL = URL + "& alan1 =% s & alan2 =% s"% (humi, sıcaklık) + "& alan3 =% s"% (basınç) baskı finalURL s = urllib2.urlopen (finalURL); baskı humi + "" + sıcaklık + "" + basınç s.close () time.sleep (10)
LCD için, def lcd_init () işlev dört bit modunda LCD başlatmak için kullanılan, def lcdcmd (ch) işlevi, LCD'ye komutu göndermek için kullanılır def lcddata (CH) işlevi LCD verilerin gönderilmesi ve kullanılan def lcdstring (Str ) işlevi, veri dizisini LCD'ye göndermek için kullanılır. Tüm bu fonksiyonları daha sonra verilen Kod'da kontrol edebilirsiniz.
Verilen def readDHT () işlevi DHT11 Sensörünü okumak için kullanılır:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
def readBmp180 işlevi, BM180 sensöründen basınç okumak için kullanılır. BM180 sensörü de sıcaklık verebilir ancak burada sadece basınç hesaplamak için kullandık.
def readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr, regCall, 22) # Kalibrasyon verilerini okuyun # Bayt verilerini word değerlerine dönüştür AC1 = convert1 (değer, 0) AC2 = convert1 (değer, 2) AC3 = convert1 (değer, 4) AC4 = dönüştür2 (değer, 6)……………………..
Yani bu temel Raspberry Pi Hava İstasyonu, rüzgar hızı, toprak sıcaklığı, aydınlatma (lux), yağış, hava kalitesi vb. Gibi çeşitli hava ile ilgili parametreleri ölçmek için daha da genişletebilirsiniz.