Isi kandungan:

RuuviTag dan PiZero W dan Blinkt! Termometer Berasaskan Bluetooth Beacon: 3 Langkah (dengan Gambar)
RuuviTag dan PiZero W dan Blinkt! Termometer Berasaskan Bluetooth Beacon: 3 Langkah (dengan Gambar)

Video: RuuviTag dan PiZero W dan Blinkt! Termometer Berasaskan Bluetooth Beacon: 3 Langkah (dengan Gambar)

Video: RuuviTag dan PiZero W dan Blinkt! Termometer Berasaskan Bluetooth Beacon: 3 Langkah (dengan Gambar)
Video: Аудиокнига «Зов предков» Джека Лондона 2024, November
Anonim
RuuviTag dan PiZero W dan Blinkt! Termometer Berasaskan Bluetooth
RuuviTag dan PiZero W dan Blinkt! Termometer Berasaskan Bluetooth
RuuviTag dan PiZero W dan Blinkt! Termometer Berasaskan Bluetooth
RuuviTag dan PiZero W dan Blinkt! Termometer Berasaskan Bluetooth
RuuviTag dan PiZero W dan Blinkt! Termometer Berasaskan Bluetooth
RuuviTag dan PiZero W dan Blinkt! Termometer Berasaskan Bluetooth

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

Peranti dan Program
Peranti dan Program
Peranti dan Program
Peranti dan Program
Peranti dan Program
Peranti dan Program
Peranti dan Program
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: