- Raspberry Pi'de Python için AWS IOT Device SDK'yı Yükleme:
- Devre şeması:
- Raspberry Pi'nizi programlama:
- Python programını Kabuk Penceresi aracılığıyla test etmek:
- Çalışma:
Raspberry Pi, belirli bir hesaplama düzeyi söz konusuysa, IoT tabanlı uygulamalar geliştirmek için her zaman ilk tercih olmuştur. Python ve güçlü geliştirici topluluğunun esnekliği ile Pi'yi kullanarak bir dizi veriyi toplamak, günlüğe kaydetmek, analiz etmek veya raporlamak çok kolaydır. Bu eğiticide, verileri çevrimiçi olarak İnternette yayınlamak için Raspberry Pi'nin gücünü Amazon AWS hizmetiyle nasıl harmanlayacağımızı öğreneceğiz.
Bu eğiticide, Sıcaklık ve Nem değerini okumak için DHT11 sensörünü kullanacağız, ardından AWS IOT hizmetine bağlanacağız ve AWS IOT SDK kullanarak sensör değerlerini güncelleyeceğiz. Daha sonra bu veriler, internette yayınlanan verileri aldığımızdan emin olmak için Amazon IOT konsolunda görselleştirilebilir.
Ayrıca bu sensör değerlerini alıp bir veritabanında depolamak için AWS Elastic Search Service'i kullanabilir ve ardından sensör verilerini düzgün bir grafik olarak görselleştirmek için Kibana Dashboard hizmetini kullanabilirsiniz. Yeterince İlginç mi? !!! Öyleyse başlayalım…
Ön koşullar:
Bu eğitici, ücretsiz AWS hesabınızı zaten oluşturduğunuzu ve bir nesne, sertifika, ilke oluşturma ve bunu kullanarak değerleri yayınlama gibi AWS IoT hizmetiyle ilgili temel bilgileri bildiğinizi varsayar. Aksi takdirde aşağıdaki öğreticiyi okuyun.
- MQTT.fx ile Amazon AWS IOT'yi kullanmaya başlama
Ayrıca, bir LCD ve DHT11 sensörünü Raspberry Pi'ye nasıl bağlayacağınızı bildiğinizi ve aynısını yapmak için kütüphanelerin zaten Pi'nizde yüklü olduğunu varsayar. Değilse, aşağıdaki eğiticiye devam edin.
- DHT11'i Raspberry Pi ile arayüzleme
Yukarıdaki öğreticinin sonunda, AWS-IOT üzerinde bir şey yaratmış olurdunuz ve ayrıca, şeyinize erişmek için gereken sertifikalarla birlikte, şeyiniz için komisyoncu adresine sahip olmanız gerekir. Ayrıca Raspberry pi'nizin zaten bir işletim sistemi ile kurulduğunu ve internete bağlı olduğunu varsayıyoruz. Bunlar yerinde olduğunda öğreticiye devam edelim. Raspberry Pi'de yeniyseniz, önce Raspberry pi'ye Başlarken bölümüne gidin.
Raspberry Pi'de Python için AWS IOT Device SDK'yı Yükleme:
Pi üzerinde AWS hizmetini kullanmak için iki SDK'dan birini kurabiliriz. Biri JavaScript'i programlama dili olarak kullanan JavaScript SDK, diğeri ise Python'u programlama dili olarak açıkça kullanan Python SDK'dır. Burada , Python'u JavaScript'ten biraz daha rahat bir şekilde kullandığımız için SDK'mız olarak Python'u seçiyoruz.
AWS IOT SDK ile ilgili tüm bilgiler GitHub sayfasında mevcuttur.
Adım 1: SDK'yı Pi'nize kurmak için aşağıdaki komutu yazarak terminali açın
git klon
Adım 2: Bu, aws dizinini Pi'nize yüklemiş olmalı, şimdi aşağıdaki komutu kullanarak ona gidin.
cd aws - IOT -device- sdk -python
Adım 3: Dizinin içinde aşağıdaki satırı kullanarak kurulum dosyasını kurun
python setup.py install
Devre şeması:
Donanım tarafında , DHT11 Sensörüne bağlı bir Raspberry Pi ve bir LCD ekrana sahibiz. DHT11, Sıcaklık ve Nem değerini almak için kullanılır ve LCD, değerleri ve hata giderme bilgilerini görüntülemek için kullanılır. Aynısı için devre şeması aşağıda gösterilmiştir.
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. Bir modül kullandığım için onu doğrudan Raspberry Pi'ye bağladım. Donanımım aşağıdaki gibi görünüyordu
Raspberry Pi'nizi programlama:
Python programımızda sıcaklık ve nem değerini okumalı, LCD ekranda göstermeliyiz ve ayrıca her iki değeri de önceki eğitimde oluşturduğumuz Amazon IOT şeyine yayınlamalıyız. Öyleyse, bir şeyi yarattığınızdan ve üç anahtar dosyasının hepsine ve yarattığınız şeyin komisyoncu adresine sahip olduğunuzdan emin olun.
Bizim de piton programı biz Ahududu Pi bizim şeye değerleri yayınlamak erişebilir, böylece üç önemli dosyaları bağlamak zorunda. Bu nedenle, üç anahtar dosyayı da kopyalayın ve programımızda yol adreslerine ihtiyacımız olacağından, Raspberry pi'nizin masaüstüne yapıştırın.
Tam piton programı bu sayfanın alt kısmında bulunabilir, oluşturduğunuz şey göre komisyoncu adresi ve yol dizinleri düzenledikten sonra programını kullanabilirsiniz. Ayrıca aşağıda kodu küçük parçacıklarla açıkladım.
Biz kütüphaneleri ithal ederek başlamak projemizin için gerekli. Üç ana kitaplık AWS SDK, LCD kitaplığı ve DHT Kitaplığıdır, Pi'nizin üçünü de yüklediğinizden emin olun. Zaman ve tarih saat kütüphane varsayılan olarak kurulacaktır.
AWS-IOT Kütüphanesi dan AWSIoTPythonSDK.MQTTLib ithalat AWSIoTMQTTClient alma işlemi ithalat süresi # oluşturmak için gecikme gelen tarih saat ithalat tarihi, tarih saat için * Tarih ve saat olsun LCD alma LCD kütüphanesi olarak ithalat Adafruit_CharLCD sensörü ithalat Adafruit_DHT #import DHT Kütüphanesi
Bir sonraki satırda , Broker adresi, Müşteri adı ve sertifika ve anahtar dosyalarının yolu gibi Öğe ayrıntılarını sağlamamız gerekir. Burada, müşteri adını new_Client olarak kullandım, aynı veya istediğiniz herhangi bir adı kullanabilirsiniz. Broker adresi, yarattığınız şeyin adresi ile değiştirilmeli ve yol dizini de sizin işinize göre değiştirilmelidir. Bu 2 şey dışında aşağıdaki satırlarda hiçbir şeyi değiştirmek zorunda değilsiniz.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883 ) myMQTTClient.configureCredentials ("/ home / pi / Desktop / ESP32_ "/ home / pi / Masaüstü / ESP32_Thing sertifikaları / private.pem.key", "/ home / pi / Masaüstü / ESP32_Thing sertifikaları / sertifika.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-1) # MyMQTTClient'i sıraya alan sonsuz çevrimdışı yayınlama . configureDrainingFrequency (2) # Drenaj: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sn myMQTTClient.configureMQTTOperationTimeout (5) # 5 sn
Ardından bağlantımızın pin detaylarını belirtmemiz gerekiyor. Her pinin GPIO pin numarası, ilgili ismine atanır. Burada DHT sensörünü pin 17 ve LCD'de 4-bit modunda kullandık. Aynı kod aşağıda gösterilmiştir
sensor_name = Adafruit_DHT.DHT11 # DHT11 sensörünü kullanıyoruz sensor_pin = 17 #Sensör Pi üzerinde GPIO17'ye bağlı lcd_rs = 7 #RS LCD GPIO 7'ye bağlı PI lcd_en = 8 #EN LCD GPIO 8'e bağlı PI üzerinde lcd_d4 = 25 # LCD'nin D4'ü PI üzerinde GPIO 25'e bağlı lcd_d5 = 24 # LCD'nin D5'i PI'de GPIO 24'e bağlı lcd_d6 = 23 # D6, PI lcd_d7'de GPIO 23'e bağlı lcd_d7 = 18 # D7 LCD, PI üzerinde GPIO 18'e bağlı lcd_backlight = 0 #LED bağlı değil, bu yüzden 0'a atıyoruz
Sonra LCD'yi başlatırız ve LCD ekranda küçük bir giriş mesajı görüntüleriz. Bundan sonra, yukarıda girilen broker adresini ve anahtar dosyalarını kullanarak AWS ile bağlantı kurmaya çalışacağız. Bağlantı başarılıysa, LCD " AWS'ye bağlı " mesajını gösterecek veya 10 saniye deneyecek ve başarısız olursa Hata mesajı gösterecektir. Hata mesajı alırsanız, şeyi başarıyla oluşturduğunuzdan ve kodu doğru şekilde bağladığınızdan emin olun. Bir şeyi AWS'de doğru şekilde oluşturup oluşturmadığınızı görmek için her zaman önceki eğiticiye geri dönebilirsiniz.
time.time () <bağlantı_süresi: # AWS'ye 10 saniye boyunca bağlanmayı deneyin myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "bağlı", 0) "MQTT İstemci bağlantısı başarılı!" yazdırın! lcd.message ('\ n AWS nesnesine bağlandı') # başka bir şekilde bağlıysa : print "Hata: Programdaki AWS ayrıntılarınızı kontrol edin" lcd.message ('Hata: \ nGeçersiz ayrıntılar') # bağlı değilse
Bağlantı başarıyla kurulduktan sonra, yük olarak zaman, sıcaklık ve Nem değerini yayınlamak için sonsuz süre döngüsüne giriyoruz. Buradaki yük her zaman JSON biçiminde bir dize olmalıdır. Bu yüzden önce şu anki tarih ve saati okuyup aşağıdaki satırları kullanarak bir değişkene kaydediyoruz.
now = datetime.utcnow () #get tarih ve saat current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') #dize biçiminde geçerli zamanı al
Daha sonra DHT11 sensöründen nem ve sıcaklık değerlerini okuyoruz ve LCD ekranda görüntülüyoruz. Değişken nem ve sıcaklık, sırasıyla nem ve sıcaklık değerini tutacaktır.
nem, sıcaklık = Adafruit_DHT.read_retry (sensör_adı, sensör_pin) # sensörden okuma
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
Daha önce de belirtildiği gibi, yük, etrafında kıvrımlı parantezler olan dize şeklinde olmalıdır, değişkeni aşağıda gösterildiği gibi dizilere dönüştürdükten sonra tarih, saat, Sıcaklık ve nem değerlerini ekliyoruz.
# Yükü dize biçiminde hazırlayın payload = '{"timestamp": "' + current_time + '", "temperature":' + str (sıcaklık) + ', "nem":' + str (nem) + '}'
Son olarak, yük hazır olduğunda, onu MQTT İstemcisinde yayınlamamız gerekir. Bu, myMQTTclient.publish komutu kullanılarak yapılabilir. Bir şeyi yayınlarken ona bir isim de vermeliyiz, burada ona DHT11 / data adını verdim ama istediğiniz herhangi bir ad verebilirsiniz. Ancak, verileri görüntülemek için ürünümüze abone olmamız gerekeceğinden adı hatırladığınızdan emin olun.
Python programını Kabuk Penceresi aracılığıyla test etmek:
Program hazır olduğunda, kendi seçiminizi kullanarak başlatın. Programı kabuk penceresinde başlatmak için Python IDE'yi kullandım. Her şey yolunda giderse, başarılı bir mesaj bağlantısı almalısınız ve tüm yük pencerede görüntülenmelidir. Sıcaklık ve nem değerlerinin doğru okunup okunmadığını kontrol edebilirsiniz. Yük, her 5 saniyede bir güncellenecektir. Kabuk penceresi aşağıdaki gibi görünecek
Herhangi bir sorunla karşılaşırsanız, doğru anahtar ayrıntılarını ve komisyoncu adresini verdiğinizden emin olun, ayrıca nesnenin MQTT.fx yazılımı kullanılarak bağlanıp bağlanamadığını da kontrol edin. Kabuk MQTT İstemci bağlantısının başarılı olduğunu gösterirse ve orada asılı kalırsa, bu DHT11 sensörünün yanıt vermediği anlamına gelir, doğru pime bağlandığınız ve sensörün çalışıp çalışmadığını kontrol edin.
Çalışma:
Programı başlattıktan ve kabuk penceresinde yukarıdaki ayrıntıları aldığınızda, bu, programın doğru şekilde yanıt verdiği ve değerlerin Amazon AWS sunucusuna yüklendiği anlamına gelir. Ayrıca aşağıda gösterildiği gibi her 5 saniyede bir AWS-IoT'de Yayınlandı yazıp yazmadığını kontrol etmek için LCD ekrana dikkat edebilirsiniz.
MQTT.fx uygulamasına girebilir ve DHT11 / data konusuna abone olabiliriz. O zaman Raspberry Pi tarafından yayınlanan tüm verileri alabilmeliyiz. Bu veriler ayrıca her 5 saniyede bir güncellenecektir; MQTT ekranınız aşağıdaki gibi görünecek
Gördüğünüz gibi, maviyle vurgulanan yük MQTT yazılımında alınıyor. Projenin nasıl çalıştığını öğrenmek için aşağıdaki videoyu da izleyebilirsiniz. Şu andan itibaren verilerimizi internette tuttuğumuzdan, verileri bir veritabanına kaydetmek veya daha sonra bir grafikte görselleştirmek için Amazon tarafından sağlanan Elastic search ve Lambda gibi diğer araçlarla birlikte kullanabiliriz. Verilerden nasıl yararlanmamız gerektiğine bağlı olarak çok daha fazla uygulama var.
Öğreticiyi anladığınızı ve benzer bir şey yapmaktan keyif aldığınızı umuyoruz, eğer bunu yapmakta herhangi bir sorun yaşarsanız, aşağıdaki yorum bölümüne gönderin veya teknik yardım için forumları kullanın.