Isi kandungan:

Stesen Cuaca Inky_pHAT: 5 Langkah
Stesen Cuaca Inky_pHAT: 5 Langkah

Video: Stesen Cuaca Inky_pHAT: 5 Langkah

Video: Stesen Cuaca Inky_pHAT: 5 Langkah
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, November
Anonim
Stesen Cuaca Inky_pHAT
Stesen Cuaca Inky_pHAT
Stesen Cuaca Inky_pHAT
Stesen Cuaca Inky_pHAT
Stesen Cuaca Inky_pHAT
Stesen Cuaca Inky_pHAT
Stesen Cuaca Inky_pHAT
Stesen Cuaca Inky_pHAT

Saya di sini ingin menerangkan stesen cuaca Raspberry Pi Zero yang sangat ringkas dan padat, yang memaparkan nilai yang diukur oleh sensor suhu / tekanan / kelembapan BME280 pada paparan e-kertas / e-dakwat pHim Pimoroni Inky. Untuk membolehkan penyambungan sensor dan pHAT ke GPIO Pi I meletakkan penggodam Pimorini Pico HAT dengan dua header wanita terpasang di antara GPIO dan paparan. Peranti telah digunakan untuk memasang beberapa sensor, jadi versi BME280 yang dijelaskan di sini hanyalah contoh.

Tidak seperti paparan LCD, paparan e-ink menyimpan gambar walaupun kuasa telah dimatikan. Oleh itu, mereka adalah penyelesaian yang sangat baik jika anda ingin memaparkan maklumat yang dikemas kini dari semasa ke semasa, terutamanya untuk membina peranti bertenaga rendah. Manfaat utama versi monokrom / hitam dari pHAT Inky adalah bahawa mengemas kini paparan hanya memerlukan sekitar satu saat, bukannya sepuluh hingga lima belas saat yang diperlukan oleh versi tiga warna. Lihat filem.

Perpustakaan Blafka Adafruit memungkinkan untuk menjalankan kod Circuit Python pada Raspberry Pi, dan sampel Circuit Python untuk pelbagai jenis sensor tersedia dari Adafruit. Penerangan terperinci mengenai cara memasang kod Blinka dan Circuit Python boleh didapati di laman web Adafruit. Perpustakaan yang saya uji sejauh ini (BMP280, BME280, TSL2591, TCS34785, VEML7065,…) berfungsi dengan baik, sementara terdapat sedikit masalah dalam beberapa contoh kod.

BME280 adalah sensor untuk mengukur suhu, kelembapan dan tekanan atmosfera. Breakout BMP280 tersedia dari banyak vendor, termasuk Adafruit, tetapi saya di sini menggunakan versi Cina yang murah. Perlu diketahui bahawa alamat ini menggunakan alamat i2c yang berbeza (Adafruit: 0x77, yang lain: 0x76).

Breakout disambungkan ke Pi oleh i2c, dan membaca sensor sangat mudah menggunakan perpustakaan dan kod contoh.

Langkah 1: Bahan Yang Digunakan

Bahan Yang Digunakan
Bahan Yang Digunakan
Bahan Yang Digunakan
Bahan Yang Digunakan
Bahan Yang Digunakan
Bahan Yang Digunakan
Bahan Yang Digunakan
Bahan Yang Digunakan

Raspberry Pi Zero, dengan kepala lelaki dilampirkan. Tetapi versi Raspberry Pi akan berlaku.

PHAT Pimoroni Inky, versi hitam / monokrom, 25 € | 22 £ | 20US $, di Pimoroni.

Seorang penggodam Pimoroni Pico HAT, 2,50 € | 2 £, dengan dua header wanita terpasang, salah satunya header booster dengan pin yang lebih panjang. Saya telah membina dua versi berbeza, lihat keterangan di bawah.

Pelarian BME280, Penghantaran AZ melalui Amazon.de @ 7.50 €, dengan header terpasang.

Kabel pelompat pemanjangan

Pilihan:

Pek kuasa USB, untuk aplikasi mudah alih

Perumahan untuk Pi atau peranti (tidak ditunjukkan di sini)

Langkah 2: Perhimpunan

perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
  • Selesaikan pengepala wanita ke penggodam Pico HAT. Sebelum menyolder, periksa orientasi yang betul. Saya telah membina dua versi ini, untuk tujuan yang berbeza. Satu dengan header booster menghadap ke bawah diletakkan di baris depan dan header normal, atas / menghadap di baris belakang, dan versi dengan header booster menghadap ke bawah di baris belakang, dan header wanita sudut kanan di baris depan. Lihat gambar. Versi pertama memungkinkan untuk memasang dan menukar sensor dan kabel dengan sangat mudah, sementara versi dengan header menghadap ke dalam memungkinkan untuk memasukkan PiAT sensor, dan Inky pHAT ke dalam perumahan. Sebagai alternatif, anda boleh menyolder kabel yang menghubungkan GPIO dan sensor terus ke penggodam Pico HAT dan / atau menyolet penggodam Pico HAT terus ke pin GPIO. Walau apa pun, gunakan jumlah minimum pateri yang diperlukan.
  • Padankan header ke sensor, jika diperlukan.
  • Tumpukan unit penggodam Pico HAT yang diubah suai pada Pi, kemudian tambahkan pHAT Inky. Sekiranya diperlukan, masukkan beberapa sokongan, mis. Blok busa atau penyekat, untuk pHAT Inky.
  • Pasang kabel dan sensor, menggunakan port 3V, GND, SDA dan SCL. Tidak semua sensor akan bertahan 5V, jadi periksa sebelum anda menyambungkannya ke port 5V.
  • Pasang perpustakaan Blinka, kemudian pasang perpustakaan Circuit Python BME280 dari Adafruit.
  • Pasang pustaka pHAT Inky dari Pimoroni.
  • Pasang contoh kod Python yang dijelaskan pada langkah kemudian dan dilampirkan pada arahan ini.
  • Jalankan kod.

Langkah 3: Menggunakan Peranti

Menggunakan Peranti
Menggunakan Peranti

Terdapat dua pilihan untuk menggunakan peranti ini.

Kod seperti yang ditunjukkan di sini harus dimulakan menggunakan layar yang terpasang, tetapi kemudian dapat berjalan tanpa.

Dengan sedikit pengubahsuaian pada kod, anda boleh menggunakan crontab untuk melakukan pengukuran pada titik waktu yang ditentukan. Ini memungkinkan untuk mengurangkan penggunaan kuasa lebih jauh. Penerangan yang sangat baik bagaimana menggunakan crontab terdapat di tempat lain.

Bersama dengan power pack, anda boleh membina peranti mudah alih dan menggunakannya untuk mengukur keadaan di dalam atau di luar, di dalam peti sejuk, di sauna, kelembapan anda, bilik wain, di dalam pesawat,….

Dengan menggunakan Zero W, Anda tidak hanya dapat menampilkan nilai pada layar, tetapi juga mengirimnya ke pelayan atau laman web anda melalui WLAN, seperti yang dijelaskan di tempat lain.

Langkah 4: Skrip BME280

Skrip BME280
Skrip BME280

Seperti yang telah disebutkan sebelumnya, anda perlu memasang perpustakaan Adafruit Blinka dan Circuit Python BME280 serta perpustakaan pHAT Pimoroni Inky.

Kod pertama kali menginisialisasi sensor dan pHAT Inky, kemudian membaca nilai suhu, tekanan dan kelembapan dari sensor dan memaparkannya di layar dan paparan e-ink. Dengan menggunakan perintah time.sleep (), pengukuran dilakukan setiap minit. Laraskan mengikut keperluan. Dengan menetapkan parameter bahasa, Anda dapat mengubah bahasa yang digunakan untuk menampilkan hasilnya.

Dengan menggunakan paparan e-ink Ink pHAT, pertama-tama anda membina gambar yang akan dipaparkan dalam memori sebelum akhirnya dipindahkan ke layar menggunakan perintah inkyphat.show (). Perpustakaan pHAT Inky mempermudah proses, menawarkan perintah untuk menggambar dan memformat teks, garis, segi empat tepat, bulatan atau menggunakan gambar latar.

Selain nilai yang diukur, waktu pengukuran juga ditampilkan.

Perlu diingat bahawa skrip dan perpustakaan ditulis dalam Python 3, jadi buka dan jalankan menggunakan Py3 IDLE atau setara.

# Skrip untuk sensor suhu / tekanan / kelembapan bme280 (versi bukan Adafruit) # dan pHAT dakwat - versi hitam # # versi 01 Dis 2018, Dr H # # Memerlukan Adafruit Blinka dan Circuit Python BME280 perpustakaan # dan Pimoroni Inky pustaka pHAT masa import import datetime import board import busio dari adafruit_bme280 import Adafruit_BME280 dari adafruit_bme280 import Adafruit_BME280_I2C import inkyphat import sys dari PIL import ImageFont inkyphat.set_colour ('black') # for b / w inky phat inkyphat.set_set 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Pilih font font2 standard = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Pilih data fon standard # lang = "DE" # tetapkan parameter bahasa, lalai ("") -> english lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, address = 0x76) # alamat i2c lalai (untuk Adafruit BMP280) 0x77 (lalai), 0x76 untuk pelarian cina) #set tekanan rujukan # diperlukan untuk al pengiraan tajuk, sila sesuaikan. Nilai standard 1013.25 hPa # input manual: #reference_hPa = input ("Masukkan tekanan rujukan dalam hPa:") # atau # tetapkan tekanan pada waktu permulaan sebagai rujukan, mis. untuk masa pengukuran ketinggian relatif. tidur (1) # tunggu sebentar sebelum pengukuran pertama j = 0 pres_norm_sum = 0 sementara j dalam julat (5): # ambil lima pengukuran untuk menentukan nilai rujukan pres_norm_sum = pres_norm_sum + bmp. tekanan j = j + 1 time.sleep (1) reference_hPa = (pres_norm_sum / j) # tetapkan ukuran inital sebagai titik rujukan untuk membolehkan pengukuran ketinggian bmp.sea_level_pressure = float (Reference_hPa) mencetak () sementara True: #runs selamanya, ubah suai untuk versi crontab # diukur nilai t = bmp.temperature p = bmp.pressure h = bmp.humidity a = bmp.altitude # dikira oleh perpustakaan adafruit dari tekanan #timestamp ts = datetime.datetime.now () # timestamp ts0_EN = '{:% Y-% m-% d} '. format (ts) # cap waktu - tarikh, format EN ts0_DE =' {:% d.% m.% Y} '. format (ts) # cap waktu - tarikh, format Jerman ts1 =' {: % H:% M:% S} '. Format (ts) # timestamp - time 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 = "Temp.:" pText_EN = "Tekanan:" pText_DE = "Luftdruck:" h Text_EN = "Kelembapan:" hText_DE = "rel. LF: "aText_EN =" Ketinggian: "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 = hText: # default english ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # nilai cetak untuk memaparkan cetakan (ts) cetak (tText, tmp, "° C") cetak (pText, pre, "hPa") cetak (hText, hyg, "%") print (aText, alt, "m") print () # print value to Inky pHAT t1 = 5 # tab 1, frist column, memudahkan pengoptimuman susun atur t2 = 110 # tab 2, inkyphat lajur kedua. kosongkan () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # tulis tarikh cap waktu inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # tulis masa cap waktu inkyphat.line ((t1, 25, 207, 25), 1, 3) # lukis garis 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. HITAM, font2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + "%"), inkyphat. BLACK, font2) # secara alternatif memaparkan ketinggian yang dikira # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # tunggu beberapa saat sebelum pengukuran seterusnya, +19 saat setiap kitaran

Langkah 5: Skrip BMP280

BMP280 sangat mirip dengan sensor BME280, tetapi hanya mengukur suhu dan tekanan. Skripnya sangat serupa, tetapi anda memerlukan perpustakaan Circuit Python yang berbeza. Di sini, bukannya kelembapan, ketinggian yang dikira, berdasarkan tekanan rujukan, ditunjukkan.

Dilampirkan anda menemui skrip.

Disyorkan: