Daftar Isi:

Stasiun Cuaca Inky_pHAT: 5 Langkah
Stasiun Cuaca Inky_pHAT: 5 Langkah

Video: Stasiun Cuaca Inky_pHAT: 5 Langkah

Video: Stasiun Cuaca Inky_pHAT: 5 Langkah
Video: 5 дней на величайшем спальном поезде Канады | Канадец | Торонто-Ванкувер (Часть 1/2) 2024, Juli
Anonim
Stasiun Cuaca Inky_pHAT
Stasiun Cuaca Inky_pHAT
Stasiun Cuaca Inky_pHAT
Stasiun Cuaca Inky_pHAT
Stasiun Cuaca Inky_pHAT
Stasiun Cuaca Inky_pHAT
Stasiun Cuaca Inky_pHAT
Stasiun Cuaca Inky_pHAT

Saya di sini ingin menjelaskan stasiun cuaca berbasis Raspberry Pi Zero yang sangat sederhana dan ringkas, yang menampilkan nilai yang diukur oleh sensor suhu/tekanan/kelembaban BME280 pada layar e-paper/e-ink Pimoroni Inky pHAT. Untuk memungkinkan koneksi sensor dan pHAT ke GPIO Pi, saya menempatkan peretas Pimorini Pico HAT dengan dua header wanita yang terpasang di antara GPIO dan layar. Perangkat telah digunakan untuk memasang beberapa sensor, jadi versi BME280 yang dijelaskan di sini hanyalah sebuah contoh.

Tidak seperti layar LCD, layar e-ink menyimpan gambar meskipun daya telah dimatikan. Oleh karena itu mereka adalah solusi yang sangat baik jika Anda ingin menampilkan informasi yang diperbarui hanya dari waktu ke waktu, terutama untuk membangun perangkat hemat energi. Manfaat utama dari versi monokrom/hitam dari Inky pHAT adalah bahwa memperbarui tampilan hanya membutuhkan waktu sekitar satu detik, bukan sepuluh hingga lima belas detik yang dibutuhkan oleh versi tiga warna. Melihat film.

Pustaka Blinka Adafruit memungkinkan untuk menjalankan kode Circuit Python pada Raspberry Pi, dan sampel Circuit Python untuk berbagai macam sensor tersedia dari Adafruit. Penjelasan rinci cara menginstal Blinka dan kode Circuit Python dapat ditemukan di situs web Adafruit. Pustaka yang saya uji sejauh ini (BMP280, BME280, TSL2591, TCS34785, VEML7065, …) bekerja dengan sangat baik, sementara ada masalah kecil di beberapa kode contoh.

BME280 adalah sensor untuk mengukur suhu, kelembaban dan tekanan atmosfer. Jerawat BMP280 tersedia dari banyak vendor, termasuk Adafruit, tetapi saya di sini menggunakan versi Cina yang murah. Perlu diketahui bahwa ini menggunakan alamat i2c yang berbeda (Adafruit: 0x77, lainnya: 0x76).

Breakout terhubung ke Pi oleh i2c, dan membaca sensor sangat sederhana menggunakan perpustakaan dan kode contoh.

Langkah 1: Bahan yang Digunakan

Bahan-bahan yang digunakan
Bahan-bahan yang digunakan
Bahan-bahan yang digunakan
Bahan-bahan yang digunakan
Bahan-bahan yang digunakan
Bahan-bahan yang digunakan
Bahan-bahan yang digunakan
Bahan-bahan yang digunakan

Sebuah Raspberry Pi Zero, dengan header laki-laki terpasang. Tetapi versi Raspberry Pi apa pun bisa digunakan.

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

Seorang hacker Pimoroni Pico HAT, 2,50€|2£, dengan dua header wanita terpasang, salah satunya header booster dengan pin yang lebih panjang. Saya telah membangun dua versi yang berbeda, lihat deskripsi di bawah ini.

Sebuah terobosan BME280, AZ Pengiriman melalui Amazon.de @ 7,50 €, dengan header terpasang.

Kabel jumper pemanjangan

Opsional:

Paket daya USB, untuk aplikasi seluler

Perumahan untuk Pi atau perangkat (tidak ditampilkan di sini)

Langkah 2: Perakitan

perakitan
perakitan
perakitan
perakitan
perakitan
perakitan
  • Solder tajuk wanita ke peretas Pico HAT. Sebelum menyolder, periksa orientasi yang benar. Saya telah membangun dua versi ini, untuk tujuan yang berbeda. Satu dengan header booster menghadap ke bawah ditempatkan di baris depan dan header normal, menghadap ke 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, sedangkan versi dengan header menghadap ke dalam memungkinkan untuk melampirkan Pi, sensor dan Inky pHAT ke dalam housing. Atau Anda dapat menyolder kabel yang menghubungkan GPIO dan sensor langsung ke peretas Pico HAT dan/atau menyolder peretas Pico HAT langsung ke pin GPIO. Bagaimanapun, gunakan jumlah minimal solder yang dibutuhkan.
  • Solder header ke sensor, jika diperlukan.
  • Tumpuk unit peretas Pico HAT yang dimodifikasi di Pi, lalu tambahkan Inky pHAT. Jika diperlukan, masukkan beberapa dukungan, mis. Sebuah blok busa atau stand-off, untuk pHAT Inky.
  • Pasang kabel dan sensor menggunakan port 3V, GND, SDA dan SCL. Tidak semua sensor akan bertahan 5V, jadi harap periksa sebelum Anda menghubungkannya ke port 5V.
  • Instal library Blinka, lalu instal library Circuit Python BME280 dari Adafruit.
  • Instal perpustakaan Inky pHAT dari Pimoroni.
  • Instal contoh kode Python yang dijelaskan pada langkah selanjutnya dan dilampirkan ke instruksi ini.
  • Jalankan kodenya.

Langkah 3: Menggunakan Perangkat

Menggunakan Perangkat
Menggunakan Perangkat

Ada dua opsi untuk menggunakan perangkat.

Kode seperti yang ditunjukkan di sini harus dimulai menggunakan layar yang terpasang, tetapi kemudian bisa berjalan tanpanya.

Dengan sedikit modifikasi pada kode, Anda dapat menggunakan crontab untuk melakukan pengukuran pada titik waktu yang ditentukan. Ini akan memungkinkan untuk mengurangi konsumsi daya lebih jauh. Deskripsi yang sangat baik tentang cara menggunakan crontab dapat ditemukan di tempat lain.

Dalam hubungannya dengan power pack Anda dapat membangun perangkat mobile dan menggunakannya untuk mengukur kondisi di dalam atau di luar, di lemari es, di sauna, humidor Anda, gudang anggur, di pesawat, ….

Dengan menggunakan Zero W, Anda tidak hanya dapat menampilkan nilai pada layar, tetapi juga mengirimkannya ke server atau situs web Anda melalui WLAN, seperti yang dijelaskan di tempat lain.

Langkah 4: Skrip BME280

Skrip BME280
Skrip BME280

Seperti disebutkan sebelumnya, Anda perlu menginstal pustaka Adafruit Blinka dan Circuit Python BME280 serta pustaka Pimoroni Inky pHAT.

Kode pertama menginisialisasi sensor dan Inky pHAT, kemudian membaca nilai suhu, tekanan dan kelembaban dari sensor dan menampilkannya di layar dan tampilan e-ink. Menggunakan perintah time.sleep(), pengukuran dilakukan setiap menit. Sesuaikan sesuai kebutuhan. Dengan mengatur parameter bahasa, Anda dapat mengubah bahasa yang digunakan untuk menampilkan hasil.

Menggunakan tampilan e-ink Inky pHAT, Anda terlebih dahulu membuat gambar untuk ditampilkan di memori sebelum akhirnya ditransfer ke layar menggunakan perintah inkyphat.show(). Pustaka PHAT Inky menyederhanakan proses, menawarkan perintah untuk menggambar dan memformat teks, garis, persegi panjang, lingkaran atau menggunakan gambar latar belakang.

Selain nilai yang terukur, waktu pengukuran juga ditampilkan.

Harap diingat bahwa skrip serta pustaka ditulis dengan Python 3, jadi buka dan jalankan menggunakan Py3 IDLE atau yang setara.

# Skrip untuk sensor suhu/tekanan/kelembaban bme280 (versi non-Adafruit)# dan pHAT bertinta - versi hitam # # versi 01 Desember 2018, Dr H # # Memerlukan perpustakaan Adafruit Blinka dan Circuit Python BME280 # dan Pimoroni Inky perpustakaan pHAT waktu impor waktu impor papan impor tanggalwaktu impor busio dari adafruit_bme280 impor Adafruit_BME280 dari adafruit_bme280 impor Adafruit_BME280_I2C impor inkyphat impor sys dari PIL impor ImageFont inkyphat.set_colour('hitam') # untuk b/w inky phat inkyphat.set_rotation(180) 180° font1 = ImageFont.truetype(inkyphat.fonts. FredokaOne, 27) # Pilih font standar font2 = ImageFont.truetype(inkyphat.fonts. FredokaOne, 19) # Pilih data font standar # lang ="DE" # atur parameter bahasa, default ("") -> english lang="EN" i2c = busio. I2C(board. SCL, board. SDA) bmp = Adafruit_BME280_I2C(i2c, address=0x76) # alamat i2c default (untuk Adafruit BMP280) 0x77 (default), 0x76 untuk pelarian cina) #setel tekanan referensi # diperlukan untuk al perhitungan stitut, silahkan sesuaikan. Nilai standar 1013.25 hPa # input manual: #reference_hPa =input ("Masukkan tekanan referensi dalam hPa: ") # atau # setel tekanan pada waktu mulai sebagai referensi, mis. untuk waktu pengukuran tinggi relatif.tidur (1) # tunggu sebentar sebelum pengukuran pertama j= 0 pres_norm_sum = 0 saat j dalam rentang (5): # lakukan lima pengukuran untuk menentukan nilai referensi pres_norm_sum = pres_norm_sum + bmp.pressure j= j+ 1 time.sleep (1) reference_hPa=(pres_norm_sum/j) # setel pengukuran awal sebagai titik referensi untuk mengaktifkan pengukuran ketinggian bmp.sea_level_pressure = float (reference_hPa) print () while True: #runs forever, modifikasi untuk versi crontab # terukur nilai t=bmp.temperature p=bmp.pressure h=bmp.humidity a=bmp.altitude # dihitung oleh adafruit library dari tekanan #timestamp ts = datetime.datetime.now() # timestamp ts0_EN ='{:%Y-% m-%d}'.format(ts) # stempel waktu - tanggal, format EN ts0_DE ='{:%d.%m.%Y}'.format(ts) # stempel waktu - tanggal, format Jerman ts1='{: %H:%M:%S}'.format(ts) # timestamp - waktu 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 = "Kelembaban: " hText_DE = "rel. LF: " aText_EN = "Ketinggian: " aText_DE = "Höhe üNN: " # tepat: ü. NHN, über Normal Höhen Null if (lang =="DE"): ts0 = ts0_DE aText = aText_DE pText = pText_DE hText = hText_DE else: # default inggris ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # nilai cetak untuk menampilkan print (ts) print (tText, tmp, "°C") print (pText, pre, " hPa") print (hText, hyg, " %") print (aText, alt, " m") print () # nilai cetak ke Inky pHAT t1 = 5 # tab 1, kolom pertama, menyederhanakan optimasi tata letak t2 = 110 # tab 2, kolom kedua inkyphat. clear() inkyphat.text((t1, 0), ts0, inkyphat. BLACK, font2) # tulis tanggal stempel waktu inkyphat.text((t2, 0), ts1, inkyphat. BLACK, font2) # tulis waktu stempel waktu inkyphat.line ((t1, 25, 207, 25), 1, 3) # menggambar 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), (pra + " hPa"), inkyphat. HITAM, font2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text((t2, 80), (hyg + " %"), inkyphat. BLACK, font2) # sebagai alternatif menampilkan tinggi yang dihitung # inkyphat.text((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text((t2, 80), (alt + " m"), inkyphat. BLACK, font2) inkyphat.show() time.sleep(51) # tunggu beberapa detik sebelum pengukuran berikutnya, +19 detik per siklus inkyphat.clear() # prosedur tampilan pHAT Inky kosong, inkyphat.show() # diam untuk versi crontab

Langkah 5: Skrip BMP280

BMP280 sangat mirip dengan sensor BME280, tetapi hanya mengukur suhu dan tekanan. Skripnya sangat mirip, tetapi Anda memerlukan pustaka Circuit Python yang berbeda. Di sini, alih-alih kelembaban, ketinggian yang dihitung, berdasarkan tekanan referensi, ditampilkan.

Terlampir Anda menemukan skrip.

Direkomendasikan: