Isi kandungan:
Video: RuuviTag dan PiZero W dan Blinkt! Termometer Berasaskan Bluetooth Beacon: 3 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Petunjuk ini menerangkan pendekatan untuk membaca data suhu dan kelembapan dari RuuviTag menggunakan Bluetooth dengan Raspberry Pi Zero W dan untuk menunjukkan nilai dalam nombor binari pada sekejap Pimoroni! pHAT. Atau secara ringkas: bagaimana membina keadaan yang canggih dan termometer sedikit kutu buku.
RuuviTag adalah suar bluetooth sensor sumber terbuka yang dilengkapi dengan sensor suhu / kelembapan / tekanan dan akselerasi, tetapi juga dapat berfungsi sebagai suar jarak dekat Eddystone ™ / iBeacon. Ia adalah projek Kickstarter yang berjaya dan saya mendapat projek saya beberapa minggu yang lalu. Terdapat perisian Github dengan python untuk membaca RuuviTag menggunakan raspberry, dan saya telah menggunakan salah satu contohnya, dengan beberapa penambahan.
Raspberry Pi Zero W adalah ahli terbaru keluarga RPi, pada dasarnya Pi Zero dengan Bluetooth dan WLAN ditambah.
Sekelip mata! pHAT dari Pimoroni pada dasarnya adalah jalur lapan LED RBG yang dikonfigurasi sebagai HAT untuk Raspberry Pi. Ia sangat mudah digunakan dan dilengkapi dengan perpustakaan python. Ideanya ialah membaca data dari RuuviTag dan memaparkannya menggunakan sekelip mata! HATI. Nilai dipaparkan sebagai nombor binari menggunakan 7 LED, sementara nilai lapan digunakan untuk menunjukkan sama ada nilai kelembapan atau suhu (+ / - / 0) ditampilkan.
Langkah 1: Menyiapkan Sistem
Menyiapkan sistem mudah: - Hidupkan RuuviTag (versi sensor suhu RuuviTag).
- Siapkan RPi Zero W, RPi3, atau RPi lain dengan kapasitas bluetooth yang ditambahkan, mengikuti petunjuk di www.raspberrypi.org.
- Letakkan sekelip mata! HATI pada RPi (semasa dimatikan).
- Pasang sekelip mata! dan perisian RuuviTag, seperti yang ditunjukkan pada halaman GitHub yang sesuai.
- Anda sekarang harus mengenal pasti alamat MAC RuuviTag anda
- salin program Python yang dilampirkan, buka dengan IDLE untuk Python 3
- ubah alamat MAC RuuviTag menjadi milik anda, kemudian simpan dan jalankan program.
- jangan ragu untuk mengubah dan mengoptimumkan program. Program ini hadir sebagaimana mestinya, untuk digunakan atas risiko anda sendiri, tidak ada tanggungjawab yang diambil untuk sebarang kerosakan.
Langkah 2: Peranti dan Program
Seperti disebutkan di atas, ideanya adalah untuk membangun sistem yang sederhana dan murah untuk membaca data dari suar dan menampilkan nilai numerik dalam sekejap! HAT, atau jalur LED yang serupa.
Julat nilai suhu yang akan diukur dengan sistem berdasarkan RPi dalam kebanyakan kes berada di antara - 50 ° C dan + 80 ° C, untuk kelembapan antara 0 dan 100%. Jadi paparan yang dapat memberikan nilai dari -100 hingga +100 akan mencukupi untuk kebanyakan aplikasi. Nombor perpuluhan lebih kecil sebanyak 128 boleh dipaparkan sebagai nombor binari dengan 7 bit (atau LED). Oleh itu, program mengambil nilai suhu dan kelembapan dari RuuviTag sebagai nombor "float" dan mengubahnya menjadi nombor binari, yang kemudiannya dipaparkan pada sekelip mata !.
Sebagai langkah pertama, bilangannya dibundarkan, dianalisis jika positif, negatif atau sifar, dan kemudian diubah menjadi angka positif menggunakan "abs". Kemudian nombor perpuluhan ditukar menjadi nombor perduaan 7 digit, pada dasarnya rentetan 0 dan 1, yang akan dianalisis dan dipaparkan pada 7 piksel terakhir dalam sekelip mata !.
Untuk nilai suhu piksel pertama menunjukkan jika nilainya positif (merah), sifar (magenta) atau negatif (biru). Menampilkan nilai kelembapan diatur ke hijau. Untuk mempermudah diskriminasi antara nilai suhu dan kelembapan, piksel binari ditetapkan putih untuk suhu dan kuning untuk kelembapan. Untuk meningkatkan keterbacaan nombor binari, piksel "0" tidak dimatikan sepenuhnya, tetapi disetkan jauh lebih lemah daripada keadaan "1". Seperti sekelip mata! piksel berwarna terang, anda boleh mengatur kecerahan umum mengubah parameter "terang"
Program ini memaparkan nilai dan bahagian proses juga di layar. Di samping itu, anda akan menemui beberapa arahan cetak (#) yang diredam. Saya membiarkan mereka masuk, kerana anda mungkin dapat membantu mereka memahami prosesnya jika tidak disenyapkan.
Nilai mungkin juga disimpan dalam fail log.
Langkah 3: Kod Program
Kodnya sedikit debug dan dioptimumkan. Anda sekarang boleh menemui versi 3 (20_03_2017).
'Program ini bertujuan untuk membaca nilai suhu, kelembapan dan tekanan membentuk RuuviTag' 'dan untuk menunjukkan nilai suhu dan kelembapan sebagai nombor binari pada sekejap Pimorini! HATI. '' '' Ini berdasarkan contoh print_to_screen.py dari perpustakaan ruuvitag di github. "Memerlukan Pi Zero W, Pi 3 atau RPi lain yang dilengkapi dengan bluetooth dan semua perpustakaan yang diperlukan dipasang."
masa import
import os dari datetime import datetime
dari ruuvitag_sensor.ruuvi import RuuviTagSensor
dari blinkt import set_clear_on_exit, set_pixel, clear, show
def temp_blinkt (bt):
# rutin ini mengambil nilai suhu dan memaparkannya sebagai nombor binari pada sekelip mata!
jelas ()
# warna dan intensiti piksel "1": putih
r1 = 64 g1 = 64 b1 = 64
#warna dan intensiti piksel "0": putih
r0 = 5 g0 = 5 b0 = 5
# Bulat dan ubah menjadi integer
r = bulat (bt)
# vz mewakili tanda algebra untuk piksel penunjuk
jika (r> 0): vz = 1 # elif positif (r <0): vz = 2 # negatif lain: vz = 0 # sifar # cetak (vz) i = abs (r) #print (i)
# ubah menjadi nombor perduaan 7 digit mutlak
i1 = i + 128 # untuk i menghasilkan nombor binari 8 digit bermula dengan cetakan 1 # (i1)
b = "{0: b}". format (i1) # tukar kepada binari
# cetak (b)
b0 = str (b) # tukar ke rentetan
b1 = b0 [1: 8] #turunkan bit pertama
cetak ("nombor binari:", b1)
# Tetapkan piksel pada sekelip mata!
# tetapkan nombor binari
untuk h dalam julat (0, 7): f = (h + 1) jika (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " ialah 1, piksel ", f) lain: set_pixel (f, r0, g0, b0) # print (" nil ")
# Tetapkan piksel penunjuk
if (vz == 1): set_pixel (0, 64, 0, 0) # red untuk nilai positif elif (vz == 2): set_pixel (0, 0, 0, 64) # biru untuk nilai negatif lain: set_pixel (0, 64, 0, 64) # magenta jika sifar
tunjuk ()
# akhir temp_blinkt ()
def hum_blinkt (bh):
# ini mengambil nilai kelembapan dan memaparkannya sebagai nombor binari dalam sekelip mata!
jelas ()
# warna dan intensiti piksel "1": kuning
r1 = 64 g1 = 64 b1 = 0
#warna dan intensiti piksel "0":
r0 = 5 g0 = 5 b0 = 0
# Bulat dan ubah menjadi integer
r = bulat (bh)
# ubah menjadi mutlak, nombor perduaan 7 digit i = abs (r) #print (i)
i1 = i + 128 # untuk i memberikan nombor binari 8 digit bermula dengan 1
# cetak (i1)
b = "{0: b}". format (i1)
# cetak (b)
b0 = str (b)
b1 = b0 [1: 8] #turunkan bit pertama
cetak ("nombor binari:", b1)
# Tetapkan piksel pada sekelip mata!
# tetapkan nombor perduaan kepada piksel
untuk h dalam julat (0, 7): f = (h + 1) jika (b1 [h] == "1"): set_pixel (f, r1, g1, b1) lain: # bisu ke LED kosong set_pixel (f, r0, g0, b0) # senyap ke LED kosong
# Tetapkan piksel penunjuk
set_pixel (0, 0, 64, 0) # hijau untuk kelembapan
tunjuk ()
# akhir hum_blinkt ()
set_clear_on_exit ()
# Membaca data dari RuuviTag
mac = 'EC: 6D: 59: 6D: 01: 1C' # Tukar ke alamat mac peranti anda sendiri
cetak ('Bermula')
sensor = RuuviTagSensor (mac)
Walaupun Betul:
data = sensor.update ()
line_sen = str.format ('Sensor - {0}', mac)
line_tem = str.format ('Suhu: {0} C', data ['suhu']) line_hum = str.format ('Kelembapan: {0}%', data ['kelembapan']) line_pre = str.format ('Tekanan: {0}', data ['tekanan'])
cetak ()
# suhu paparan dalam sekelip mata! ba = str.format ('{0}', data ['temperature']) bt = float (ba) print (bt, "Â ° C") temp_blinkt (bt) print ()
time.sleep (10) # suhu paparan selama 10 saat
# paparkan kelembapan dalam sekelip mata!
bg = str.format ('{0}', data ['kelembapan']) bh = float (bg) print (bh, "%") hum_blinkt (bh) print ()
# Kosongkan data sensor dan cetak ke skrin
cetakan os.system ('clear') ('Tekan Ctrl + C untuk berhenti. / n / n') cetak (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) cetak ('\ n / n / r ……')
# Tunggu beberapa saat dan mulakan sekali lagi
cuba: time.sleep (8) kecuali Keyboard Interrupt: # Apabila Ctrl + C ditekan pelaksanaan loop sementara dihentikan cetak ('Exit') jelas () tunjukkan () putus
Disyorkan:
Gunakan Telefon Pintar Sebagai Termometer Tanpa Kenalan / Termometer Mudah Alih: 8 Langkah (dengan Gambar)
Gunakan Telefon Pintar Sebagai Termometer Tidak Sentuh / Termometer Mudah Alih: Mengukur suhu badan dengan tidak bersentuhan / tanpa sentuh seperti senapang termo. Saya membuat projek ini kerana Thermo Gun sekarang sangat mahal, jadi saya mesti mendapat alternatif untuk membuat DIY. Dan tujuannya dibuat dengan versi bajet yang rendah. Menyediakan MLX90614Ardu
Termometer Inframerah Bukan Hubungan Berasaskan Arduino - Termometer Berasaskan IR Menggunakan Arduino: 4 Langkah
Termometer Inframerah Bukan Hubungan Berasaskan Arduino | Termometer Berasaskan IR Menggunakan Arduino: Hai kawan-kawan dalam arahan ini, kami akan membuat Termometer tanpa kontak menggunakan arduino. Oleh kerana kadang-kadang suhu cecair / pepejal terlalu tinggi atau terlalu rendah dan sukar untuk bersentuhan dengannya dan membacanya suhu di pemandangan itu
Penjana Muzik Berasaskan Cuaca (Generator Midi Berasaskan ESP8266): 4 Langkah (dengan Gambar)
Penjana Muzik Berasaskan Cuaca (Generator Midi Berasaskan ESP8266): Hai, hari ini saya akan menerangkan cara membuat penjana Muzik berasaskan Cuaca kecil anda sendiri. Ia berdasarkan ESP8266, yang seperti Arduino, dan ia bertindak balas terhadap suhu, hujan dan intensiti cahaya. Jangan berharap untuk membuat keseluruhan lagu atau kord progres
Lightsaber Berasaskan Arduino Dengan Kesan Cahaya dan Bunyi: 14 Langkah (dengan Gambar)
Lightsaber Berasaskan Arduino Dengan Kesan Cahaya dan Bunyi: Hello jedi! Instruksional ini adalah mengenai membuat lampu terang, yang kelihatan, terdengar dan tampil seperti yang terdapat dalam filem! Satu-satunya perbezaan - ia tidak boleh memotong logam: (Peranti ini didasarkan pada platform Arduino, dan saya memberikan banyak ciri dan fungsi, ia
Termometer Digital Berasaskan Picaxe Dengan Maks dan Min: 13 Langkah
Termometer Digital Berasaskan Picaxe Dengan Maks dan Min: (Tolong tinggalkan mesej, tetapi jangan terlalu kritikal, ini adalah petunjuk pertama saya !!) Ini adalah termometer yang saya buat untuk kemping-van kami, untuk menunjukkan suhu luaran. Ia berdasarkan cip Picaxe kerana ia murah dan mudah digunakan. Sekiranya ini untuk