İçindekiler:

Inky_pHAT Hava İstasyonu: 5 Adım
Inky_pHAT Hava İstasyonu: 5 Adım

Video: Inky_pHAT Hava İstasyonu: 5 Adım

Video: Inky_pHAT Hava İstasyonu: 5 Adım
Video: Nilüfer - Her Sevda Yeni Bir Veda (1992) 2024, Kasım
Anonim
Inky_pHAT Hava İstasyonu
Inky_pHAT Hava İstasyonu
Inky_pHAT Hava İstasyonu
Inky_pHAT Hava İstasyonu
Inky_pHAT Hava İstasyonu
Inky_pHAT Hava İstasyonu
Inky_pHAT Hava İstasyonu
Inky_pHAT Hava İstasyonu

Burada, bir BME280 sıcaklık/basınç/nem sensörü tarafından ölçülen değerleri bir Pimoroni Inky pHAT e-kağıt/e-mürekkep ekranında görüntüleyen çok basit ve kompakt Raspberry Pi Zero tabanlı bir hava durumu istasyonunu açıklamak istiyorum. Sensörlerin ve pHAT'ın Pi'nin GPIO'suna bağlanmasına izin vermek için, GPIO ile ekran arasına iki dişi başlık takılı bir Pimorini Pico HAT korsanı yerleştirdim. Cihaz birkaç sensör takmak için kullanıldı, bu nedenle burada açıklanan BME280 sürümü sadece bir örnektir.

LCD ekranların aksine, e-ink ekranlar, güç kapatılsa bile görüntüyü korur. Bu nedenle, özellikle düşük enerjili cihazlar oluşturmak için sadece zaman zaman güncellenen bilgileri görüntülemek istiyorsanız, çok iyi bir çözümdür. Inky pHAT'ın monokrom/siyah versiyonunun en büyük yararı, ekranın güncellenmesinin üç renkli versiyonların gerektirdiği on ila on beş saniye yerine sadece bir saniye sürmesidir. Film izle.

Adafruit'in Blinka kütüphanesi, Raspberry Pi üzerinde Circuit Python kodunu çalıştırmaya izin verir ve Adafruit'te çok çeşitli sensörler için Circuit Python örnekleri mevcuttur. Blinka ve Circuit Python kodlarının nasıl kurulacağı ayrıntılı bir açıklama Adafruit web sitesinde bulunabilir. Şimdiye kadar test ettiğim kütüphaneler (BMP280, BME280, TSL2591, TCS34785, VEML7065,…) çok iyi çalışıyordu, bazı örnek kodlarda ise ufak tefek sorunlar vardı.

BME280, sıcaklık, nem ve atmosfer basıncını ölçmek için bir sensördür. BMP280 kesintileri Adafruit dahil birçok satıcıda mevcuttur, ancak ben burada ucuz bir Çince sürüm kullanıyordum. Lütfen bunların farklı i2c adresleri kullandığını unutmayın (Adafruit: 0x77, diğerleri: 0x76).

Breakout, i2c ile Pi'ye bağlanır ve kütüphane ve örnek kodu kullanarak sensörü okumak çok basittir.

Adım 1: Kullanılan Malzemeler

Kullanılan malzemeler
Kullanılan malzemeler
Kullanılan malzemeler
Kullanılan malzemeler
Kullanılan malzemeler
Kullanılan malzemeler
Kullanılan malzemeler
Kullanılan malzemeler

Bir erkek başlık takılı bir Raspberry Pi Zero. Ancak herhangi bir Raspberry Pi sürümü yapardı.

Pimoroni Inky pHAT, siyah/tek renkli versiyon, 25€|22£|20US$, Pimoroni'de.

Bir Pimoroni Pico HAT korsanı, 2,50€|2£, iki dişi başlık takılı, bunlardan biri daha uzun pimli bir güçlendirici başlık. İki farklı sürüm oluşturdum, aşağıdaki açıklamaya bakın.

Bir BME280 koparma, Amazon.de üzerinden AZ Teslimatı @ 7,50 €, başlık ekli.

Uzatma atlama kabloları

İsteğe bağlı:

Mobil uygulamalar için bir USB güç paketi

Pi veya cihaz için bir muhafaza (burada gösterilmemiştir)

2. Adım: Montaj

toplantı
toplantı
toplantı
toplantı
toplantı
toplantı
  • Dişi başlıkları Pico HAT korsanına lehimleyin. Lehimlemeden önce doğru yönlendirmeyi kontrol edin. Farklı amaçlar için bunun iki versiyonunu oluşturdum. Ön sırada aşağı bakan yükseltici başlık ve arka sırada normal, yukarı/karşı bakan başlık ve arka sırada aşağı bakan güçlendirici başlık ve ön sırada dik açılı dişi başlık bulunan bir versiyon. Resimlere bakın. İlk versiyon, sensörlerin ve kabloların çok kolay bir şekilde takılmasına ve değiştirilmesine izin verirken, içe bakan başlıklı versiyon, Pi, sensör ve Inky pHAT'ı bir muhafaza içine yerleştirmeye izin verir. Alternatif olarak, GPIO ve sensörü doğrudan Pico HAT korsanına bağlayan kabloları ve/veya Pico HAT korsanını doğrudan GPIO pinlerine lehimleyebilirsiniz. Her durumda, gereken minimum miktarda lehim kullanın.
  • Gerekirse başlığı sensöre lehimleyin.
  • Değiştirilmiş Pico HAT korsan birimini Pi'ye istifleyin, ardından Inky pHAT'ı ekleyin. Gerekirse, biraz destek ekleyin, örn. Inky pHAT için bir köpük blok veya ayırıcılar.
  • 3V, GND, SDA ve SCL bağlantı noktalarını kullanarak kabloları ve sensörü bağlayın. Tüm sensörler 5V'a dayanamaz, bu yüzden lütfen bunları 5V bağlantı noktalarına bağlamadan önce kontrol edin.
  • Blinka kitaplığını kurun, ardından Adafruit'ten Circuit Python BME280 kitaplığını kurun.
  • Pimoroni'den Inky pHAT kitaplığını yükleyin.
  • Daha sonraki bir adımda açıklanan ve bu talimata ekli örnek Python kodunu yükleyin.
  • Kodu çalıştırın.

3. Adım: Cihazı Kullanma

Cihazı Kullanma
Cihazı Kullanma

Cihazı kullanmak için iki seçenek vardır.

Burada gösterilen kod, ekli bir ekran kullanılarak başlatılacaktır, ancak daha sonra onsuz çalışabilir.

Kodda yapılan küçük değişikliklerle, tanımlı zaman noktalarında ölçümler yapmak için crontab'ı kullanabilirsiniz. Bu, güç tüketimini daha da azaltmaya izin verecektir. Crontab'ın nasıl kullanılacağına dair mükemmel açıklamalar başka bir yerde bulunabilir.

Bir güç paketi ile bağlantılı olarak bir mobil cihaz yapabilir ve onu içeride veya dışarıda, buzdolabında, saunada, neme dolabınızda, şarap mahzeninde, uçakta, …. koşulları ölçmek için kullanabilirsiniz.

Sıfır W kullanarak değerleri yalnızca ekranda görüntülemekle kalmaz, aynı zamanda başka bir yerde açıklandığı gibi WLAN aracılığıyla bir sunucuya veya web sitenize de gönderebilirsiniz.

4. Adım: BME280 Komut Dosyası

BME280 Komut Dosyası
BME280 Komut Dosyası

Daha önce de belirtildiği gibi Adafruit Blinka ve Circuit Python BME280 kitaplıklarının yanı sıra Pimoroni Inky pHAT kitaplığını da yüklemeniz gerekir.

Kod önce sensörü ve Inky pHAT'ı başlatır, ardından sensörden sıcaklık, basınç ve nem değerlerini okur ve bunları ekranda ve e-ink ekranında görüntüler. time.sleep() komutu kullanılarak her dakika ölçümler alınır. Gerektiği gibi ayarlayın. Bir dil parametresi ayarlayarak sonuçları görüntülemek için kullanılan dili değiştirebilirsiniz.

Inky pHAT e-ink ekranını kullanarak, inkyphat.show() komutunu kullanarak nihayet ekrana aktarılmadan önce bellekte görüntülenecek görüntüyü oluşturursunuz. Inky pHAT kitaplığı, süreci basitleştirerek metin, çizgi, dikdörtgen, daire çizmek ve biçimlendirmek veya arka plan resimlerini kullanmak için komutlar sunar.

Ölçülen değerlere ek olarak, ölçüm zamanı da görüntülenir.

Lütfen komut dosyasının yanı sıra kitaplıkların da Python 3'te yazıldığını unutmayın, bu nedenle Py3 IDLE veya eşdeğerini kullanarak açın ve çalıştırın.

# bme280 sıcaklık/basınç/nem sensörü (Adafruit olmayan sürüm)# ve mürekkepli pHAT için bir komut dosyası - siyah sürüm # # sürüm 01 Aralık 2018, Dr H # # Adafruit Blinka ve Circuit Python BME280 kitaplıkları gerektirir # ve Pimoroni Inky pHAT kitaplığı içe aktarma saati içe aktarma tarihsaat içe aktarma panosu içe aktarma adafruit_bme280'den busio'yu içe aktar adafruit_bme280'den Adafruit_BME280'i içe aktar Adafruit_BME280_I2C'yi içe aktar PIL'den inkyphat içe aktarma sys'i içe aktar ImageFont inkyphat.set_color('black') # s/b için inky phat inkyphat.set_rotation # dönüş ekranı 180° font1 = ImageFont.truetype(inkyphat.fonts. FredokaOne, 27) # Standart font seç font2 = ImageFont.truetype(inkyphat.fonts. FredokaOne, 19) # Standart font verilerini seç # lang ="DE" # dil parametresini ayarla, default ("") -> english lang ="EN" i2c = busio. I2C(board. SCL, board. SDA) bmp = Adafruit_BME280_I2C(i2c, address=0x76) # default i2c adresi (Adafruit BMP280 için) 0x77 (varsayılan), 0x76 çin koparma için) # set referans basıncı # al için gerekli titute hesaplama, lütfen ayarlayın. Standart değer 1013,25 hPa # manuel giriş: #reference_hPa =input ("Referans basıncını hPa olarak girin: ") # veya # referans olarak başlangıç zamanında basıncı ayarlayın, örn. bağıl yükseklik ölçümleri için time.sleep (1) # 1. ölçümden önce bir saniye bekleyin j= 0 pres_norm_sum = 0 j aralığında (5): # referans değerini tanımlamak için beş ölçüm yapın pres_norm_sum = pres_norm_sum + bmp.pressure j= j+ 1 time.sleep (1) Reference_hPa=(pres_norm_sum/j) # yükseklik ölçümlerini etkinleştirmek için ilk ölçümü referans noktası olarak ayarla bmp.sea_level_pressure = float (reference_hPa) print () iken True: #sonsuza kadar çalışır, crontab-versiyonu için değiştirin # ölçülen değerler t=bmp.temperature p=bmp.basınç h=bmp.humidity a=bmp.altitude # adafruit kitaplığı tarafından basınçtan hesaplanır #timestamp ts = datetime.datetime.now() # timestamp ts0_EN ='{:%Y-% m-%d}'.format(ts) # zaman damgası - tarih, EN biçimi ts0_DE ='{:%d.%m.%Y}'.format(ts) # zaman damgası - tarih, Almanca biçimi ts1='{: %H:%M:%S}'.format(ts) # zaman damgası - zaman tmp = "{0:0.1f}".format(t) pre = "{0:0.1f}".format(p) hyg = "{0:0.1f}".format(h) alt="{0:0.1f}".format(a) tText = "Sıcaklık: " pText_EN = "Basınç: " pText_DE = "Luftdruck: " h Text_EN = "Nem: " hText_DE = "rel. LF: " aText_EN = "Rakım: " aText_DE = "Höhe üNN: " # exakt: ü. NHN, über Normal Höhen Null if (lang =="DE"): ts0 = ts0_DE aText = aText_DE pText = pText_DE hText = hText_DE else: # varsayılan ingilizce ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # görüntülemek için yazdırma değerleri print (ts) print (tText, tmp, "°C") print (pText, pre, " hPa") print (hText, hyg, " %") yazdır (aText, alt, " m") print () # değerleri Inky'ye yazdır pHAT t1 = 5 # sekme 1, ilk sütun, t2 = 110 # sekme 2, ikinci sütun inkyphat düzeninin optimizasyonunu basitleştirir. clear() inkyphat.text((t1, 0), ts0, inkyphat. BLACK, font2) # zaman damgası tarihi yaz inkyphat.text((t2, 0), ts1, inkyphat. BLACK, font2) # zaman damgası yaz inkyphat.line ((t1, 25, 207, 25), 1, 3) # bir çizgi çiz inkyphat.text((t1, 30), tText, inkyphat. BLACK, font2) inkyphat.text((t2, 30), (tmp + "°C"), inkyphat. BLACK, font2) inkyphat.text((t1, 55), pText, inkyphat. BLACK, font2) inkyphat.text((t2, 55), (pre + " hPa"), inkyphat. SİYAH, font2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text((t2, 80), (hyg + " %"), inkyphat. BLACK, font2) # alternatif olarak hesaplanan yüksekliği göster # inkyphat.text((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text((t2, 80), (alt + " m"), inkyphat. BLACK, font2) inkyphat.show() time.sleep(51) # sonraki ölçümlerden önce birkaç saniye bekleyin, döngü başına +19 sn inkyphat.clear() # boş Inky pHAT görüntüleme prosedürü, inkyphat.show() # crontab-versiyonu için sessizlik

Adım 5: BMP280 Komut Dosyası

BMP280, BME280 sensörüne çok benzer, ancak yalnızca sıcaklık ve basıncı ölçer. Komut dosyaları çok benzer, ancak farklı Circuit Python kitaplıklarına ihtiyacınız var. Burada nem yerine referans basıncına dayalı olarak hesaplanan bir yükseklik görüntülenir.

Ekte betiği bulabilirsiniz.

Önerilen: