Mündəricat:
Video: RuuviTag və PiZero W və Blinkt! Bluetooth mayak əsaslı termometr: 3 addım (şəkillərlə birlikdə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Bu təlimat bir Raspi Pi Zero W ilə Bluetooth istifadə edərək bir RuuviTag -dan temperatur və rütubət məlumatlarını oxumaq və dəyərləri ikili ədədlərlə Pimoroni yanıb -sönməkdə göstərmək üçün bir yanaşmanı təsvir edir! pHAT. Yoxsa qısaca desək: ən son texnologiyanı necə qurmaq olar.
RuuviTag, temperatur/rütubət/təzyiq və sürətləndirici sensorlar ilə gələn, lakin eyni zamanda standart bir Eddystone ™/iBeacon yaxınlıq işarəsi kimi çıxış edə bilən açıq mənbə bluetooth mayakdır. Çox uğurlu bir Kickstarter layihəsi idi və bir neçə həftə əvvəl mənimki var. Bir moruq istifadə edərək RuuviTag oxumaq üçün python proqramı olan bir Github var və mən bəzi əlavələrlə onların nümunələrindən birini istifadə etdim.
Raspberry Pi Zero W, əsasən Bluetooth və WLAN əlavə edilmiş bir Pi Zero olan RPi ailənin son üzvüdür.
Göz qırpım! Pimoroni -dən pHAT, əsasən Raspberry Pi üçün HAT olaraq qurulmuş səkkiz RBG LED -dən ibarətdir. İstifadəsi çox asandır və bir python kitabxanası ilə birlikdə gəlir. Fikir, RuuviTagdakı məlumatları oxumaq və göz qırpımından istifadə edərək göstərmək idi! HAT. Dəyərlər 7 LED-dən istifadə edərək ikili ədədlər kimi göstərilir, səkkiz rəqəm rütubət və ya temperaturun (+/-/0) göstərilib-göstərilmədiyini göstərmək üçün istifadə olunur.
Addım 1: Sistemin qurulması
Sistemin qurulması asandır:- RuuviTag-ı yandırın (RuuviTag temperatur sensoru versiyası).
- Raspi Zero W, RPi3 və ya bluetooth tutumu olan başqa bir RPi qurun, www.raspberrypi.org saytındakı təlimatları izləyin.
- Göz qırpımını qoy! RPi -də HAT (istirahətdə olduqda).
- Flaşı quraşdırın! və müvafiq GitHub səhifələrində göstərildiyi kimi RuuviTag proqramı.
- İndi RuuviTagınızın MAC ünvanını təyin etməlisiniz
- əlavə edilmiş Python proqramını kopyalayın, Python 3 üçün IDLE ilə açın
- RuuviTag -ın MAC ünvanını özünüzə dəyişdirin, sonra proqramı saxla və işlədin.
- Proqramı dəyişdirmək və optimallaşdırmaqdan çekinmeyin. Proqram olduğu kimi gəlir, öz riski ilə istifadə etmək üçün heç bir ziyana görə heç bir öhdəlik götürülmür.
Addım 2: Cihaz və Proqram
Yuxarıda qeyd edildiyi kimi, fikir mayakdakı məlumatları oxumaq və sayısal dəyərləri göz qırpımında göstərmək üçün sadə və ucuz bir sistem qurmaq idi! HAT və ya buna bənzər bir LED şeridi.
RPi əsaslı bir sistemlə ölçülən temperaturun dəyər aralığı, əksər hallarda - 50 ° C ilə +80 ° C arasında, 0 ilə 100%arasında rütubət üçün olacaq. Buna görə -100 ilə +100 arasında dəyər verə bilən bir ekran əksər tətbiqlər üçün kifayət edər. 128 -dən kiçik olan ondalık ədədlər 7 bit (və ya LED) olan ikili ədədlər kimi göstərilə bilər. Beləliklə, proqram RuuviTag -dan temperatur və rütubət dəyərlərini "üzən" ədədlər kimi götürür və onları ikili ədədlərə çevirir, sonra isə göz qırpımında göstərilir!
İlk addım olaraq, ədəd yuvarlaqlaşdırılır, müsbət, mənfi və ya sıfır olduqda təhlil edilir və sonra "abs" istifadə edərək müsbət bir rəqəmə çevrilir. Sonra ondalık sayı, 7 rəqəmdən ibarət ikili rəqəmə çevrilir, əsasən 0 və 1-lərdən ibarət bir simli təhlil edilir və blinkt-in son 7 pikselində göstərilir!
İstilik dəyərləri üçün ilk piksel dəyərin müsbət (qırmızı), sıfır (magenta) və ya mənfi (mavi) olub olmadığını göstərir. Rütubət dəyərlərinin göstərilməsi yaşıl olaraq təyin olunur. İstilik və rütubət dəyərləri arasındakı fərqi asanlaşdırmaq üçün ikili piksellər temperatur üçün ağ, rütubət üçün sarı rəngdədir. İkili ədədlərin oxunaqlılığını artırmaq üçün "0" piksel tamamilə söndürülmür, əksinə "1" vəziyyətinə nisbətən çox zəif olaraq təyin olunur. Göz qırpımında! piksel çox parlaqdır, "parlaq" parametrini dəyişdirərək ümumi parlaqlığı təyin edə bilərsiniz.
Proqram, prosesin dəyərlərini və hissələrini ekranda da göstərir. Əlavə olaraq bir neçə səssiz (#) çap təlimatı tapa bilərsiniz. Səssiz olduqda prosesi başa düşmək üçün faydalı ola biləcəyiniz üçün onları içəridə buraxdım.
Dəyərlər bir qeyd sənədində də saxlanıla bilər.
Addım 3: Proqram Kodu
Kod bir az düzəldildi və optimallaşdırıldı. İndi 3 -cü versiyanı (20_03_2017) tapa bilərsiniz.
'Bu proqram, temperatur, rütubət və təzyiq dəyərlərini bir RuuviTag' şəklində oxumaq və temperatur və rütubət dəyərlərini ikiqat ədəd olaraq Pimorini -də göstərmək üçün nəzərdə tutulmuşdur! HAT. '' '' Githubdakı ruuvitag kitabxanasından print_to_screen.py nümunəsinə əsaslanır. '' Pi Zero W, Pi 3 və ya bluetooth ilə təchiz edilmiş hər hansı digər RPi və bütün lazımi kitabxanaların quraşdırılmasını tələb edir. ''
idxal vaxtı
datetime -dan os -ı idxal edin
ruuvitag_sensor.ruuvi saytından idxal RuuviTagSensor
blinkt idxalından set_clear_on_exit, set_pixel, aydın, göstər
def temp_blinkt (bt):
# bu rejim temperatur dəyərini götürür və blinkt -də ikili ədəd kimi göstərir!
aydın ()
# rəng və "1" piksel intensivliyi: ağ
r1 = 64 g1 = 64 b1 = 64
#rəng və "0" piksel intensivliyi: ağ
r0 = 5 g0 = 5 b0 = 5
# Yuvarlaqlaşdırın və tam ədədə çevirin
r = yuvarlaq (bt)
# vz göstərici pikselinin cəbri işarəsini təmsil edir
if (r> 0): vz = 1 # müsbət elif (r <0): vz = 2 # mənfi başqa: vz = 0 # sıfır # print (vz) i = abs (r) #print (i)
# mütləq, 7 rəqəmli ikili rəqəmə çevrilir
i1 = i + 128 # i üçün 1 # çapdan başlayan 8 rəqəmli ikili ədədlə nəticələnir (i1)
b = "{0: b}". format (i1) # ikiliyə çevir
# çap (b)
b0 = str (b) # sətrə çevir
b1 = b0 [1: 8] #biti kəsin
çap ("ikili nömrə:", b1)
# Pikselləri blinkt -ə qoyun!
# ikili nömrə təyin edin
h aralığında (0, 7): f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " 1, piksel ", f) başqa: set_pixel (f, r0, g0, b0) # print (" sıfır ")
# Göstərici pikselini təyin edin
if (vz == 1): set_pixel (0, 64, 0, 0) # qırmızı müsbət dəyərlər üçün elif (vz == 2): set_pixel (0, 0, 0, 64) # başqa mənfi dəyərlər üçün mavi: set_piksel (0, 64, 0, 64) # magenta sıfır olarsa
göstərmək ()
# temp_blinkt sonu ()
def hum_blinkt (bh):
# bu rütubət dəyərini götürür və blinkt -də ikili nömrə kimi göstərir!
aydın ()
# rəng və "1" piksel intensivliyi: sarı
r1 = 64 g1 = 64 b1 = 0
#rəng və "0" piksel intensivliyi:
r0 = 5 g0 = 5 b0 = 0
# Yuvarlaqlaşdırın və tamsaya çevirin
r = yuvarlaq (bh)
# mütləq, 7 rəqəmli ikili rəqəmə çevrilmə i = abs (r) #print (i)
i1 = i + 128 # i üçün 8-dən ibarət ikili ədəd verir
# çap (i1)
b = "{0: b}". format (i1)
# çap (b)
b0 = str (b)
b1 = b0 [1: 8] #biti kəsin
çap ("ikili nömrə:", b1)
# Pikselləri blinkt -ə qoyun!
# ikili rəqəmi piksel olaraq təyin edin
h aralığında (0, 7): f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) başqa: boş LEDlərin # səssizliyi set_piksel (f), r0, g0, b0) # boş LED -lərə səssiz
# Göstərici pikselini təyin edin
set_pixel (0, 0, 64, 0) # rütubət üçün yaşıl
göstərmək ()
# hum_blinkt sonu ()
set_clear_on_exit ()
# RuuviTag -dan məlumatların oxunması
mac = 'EC: 6D: 59: 6D: 01: 1C' # Öz cihazınızın mac ünvanını dəyişdirin
çap ('Başlanır')
sensor = RuuviTagSensor (mac)
Doğru halda:
data = sensor.update ()
line_sen = str.format ('Sensor - {0}', mac)
line_tem = str.format ('Temperatur: {0} C', data ['temperatur']) line_hum = str.format ('Rütubət: {0} %', data ['rütubət']) line_pre = str.format ('Təzyiq: {0}', məlumatlar ['təzyiq'])
çap ()
# ekran temperaturu yanıb -sönür! ba = str.format ('{0}', data ['temperatur']) bt = float (ba) çap (bt, "Â ° C") temp_blinkt (bt) çap ()
time.sleep (10) # 10 saniyə ərzində temperaturun göstərilməsi
# rütubət yanıb -sönür!
bg = str.format ('{0}', data ['rütubət']) bh = float (bg) çap (bh, " %") hum_blinkt (bh) çap ()
# Ekranı təmizləyin və sensor məlumatlarını ekrana yazın
os.system ('clear') print ('Çıxmaq üçün Ctrl+C düymələrini basın. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre)) çap et ('\ n / n / r …….')
# Bir neçə saniyə gözləyin və yenidən başlayın
cəhd edin: time.sleep (8) KeyboardInterrupt istisna olmaqla: # Ctrl+C basıldığında while döngəsinin dayandırılması dayandırılır ('Çıx') clear () show () break
Tövsiyə:
Hava proqnozu mayak: 4 addım (şəkillərlə)
Hava Proqnozu Beacon: Bu layihədə, növbəti günün hava proqnozunu əldə etmək üçün 3D çap, LED şeritləri, enerji təchizatı və wifi bağlantısı olan bir Arduino lövhəsi istifadə edərək hazırladığım yerli bir hava mayakından bir model təqdim edirəm. Tədbirin əsas məqsədi
Smartfonu Kontaktsiz Termometr / Portativ Termometr Olaraq İstifadə Edin: 8 Addım (Şəkillərlə)
Smartfonu Kontaktsiz Termometr / Portativ Termometr Olaraq İstifadə Edin: Termo tabancası kimi təmassız / təmassız bədən istiliyinin ölçülməsi. Thermo Gun indi çox bahalı olduğu üçün bu layihəni yaratdım, buna görə DIY etmək üçün alternativ almalıyam. Və məqsəd aşağı büdcə versiyası ilə etməkdir.SuppliesMLX90614Ardu
Arduino əsaslı rəqəmsal termometr: 3 addım
Arduino Əsaslı Rəqəmsal Termometr: Bu layihədə, otaq temperaturunu analiz etmək üçün istifadə edilə bilən Arduino əsaslı rəqəmsal termometr nəzərdə tutulmuşdur. Ölçmək üçün istifadə edilə bilən müxtəlif prinsiplər var
Arduino əsaslı təmassız infraqırmızı termometr - Arduino İstifadə edən İQ Əsaslı Termometr: 4 Addım
Arduino əsaslı təmassız infraqırmızı termometr | Arduino İstifadə edən İK Əsaslı Termometr: Salam uşaqlar bu təlimatlarda arduino istifadə edərək təmasda olmayan bir Termometr hazırlayacağıq. Bəzən mayenin/bərkin temperaturu çox yüksək və ya aşağıya enir, sonra onunla əlaqə qurmaq və oxumaq çətindir. o səhnədə temperatur
Hava əsaslı musiqi generatoru (ESP8266 əsaslı Midi Generator): 4 addım (şəkillərlə)
Hava əsaslı musiqi generatoru (ESP8266 əsaslı Midi Generator): Salam, bu gün öz kiçik hava əsaslı musiqi generatorunuzu necə düzəltəcəyinizi izah edəcəyəm, bir növ Arduino kimi bir ESP8266 -ya əsaslanır və temperatur, yağışa cavab verir. və bütün mahnıların və ya akkordların proqramlaşdırılmasını gözləməyin