Sadržaj:
Video: RuuviTag i PiZero W i Blinkt! termometar na bazi Bluetooth beacon -a: 3 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Ova instrukcija opisuje pristup čitanju podataka o temperaturi i vlažnosti iz RuuviTaga pomoću Bluetootha s Raspberry Pi Zero W i za prikaz vrijednosti u binarnim brojevima na Pimoronijevom svjetlucanju! pHAT. Ili da skratim: kako izgraditi vrhunsko stanje i pomalo štreberski termometar.
RuuviTag je bluetooth svjetionik senzora otvorenog koda koji dolazi sa senzorima temperature/vlažnosti/tlaka i ubrzanja, ali može djelovati i kao standardni Eddystone ™/iBeacon svjetionik za blizinu. Bio je to vrlo uspješan Kickstarter projekt i ja sam svoj dobio prije nekoliko tjedana. Postoji Github s python softverom za čitanje RuuviTaga pomoću maline, a ja sam upotrijebio jedan od njihovih primjera, s nekim dodacima.
Raspberry Pi Zero W najnoviji je član obitelji RPi, u osnovi Pi Zero s dodanim Bluetoothom i WLAN -om.
Treptaj! pHAT iz Pimoronija u osnovi je traka od osam RBG LED dioda konfiguriranih kao HAT za Raspberry Pi. Vrlo je jednostavan za korištenje i dolazi s python bibliotekom. Ideja je bila pročitati podatke iz RuuviTaga i prikazati ih pomoću treptaja! ŠEŠIR. Vrijednosti se prikazuju kao binarni brojevi pomoću 7 LED dioda, dok se osam koristi za označavanje jesu li prikazane vlažnosti ili temperature (+/-/0).
Korak 1: Postavljanje sustava
Postavljanje sustava je jednostavno:- Uključite RuuviTag (verzija osjetnika temperature RuuviTag).
- Postavite svoj RPi Zero W, RPi3 ili bilo koji drugi RPi s dodatnim bluetoothom, slijedeći upute na www.raspberrypi.org.
- Stavi treptaj! ŠEŠIR na RPi (dok je isključen).
- Instalirajte blinkt! i RuuviTag softver, kako je naznačeno na odgovarajućim stranicama GitHub -a.
- Sada morate identificirati MAC adresu vašeg RuuviTaga
- kopirajte priloženi program Python, otvorite ga pomoću IDLE za Python 3
- promijenite MAC adresu RuuviTaga u svoju, a zatim spremite i pokrenite program.
- slobodno izmijenite i optimizirajte program. Program dolazi takav kakav jest, ako ga želite koristiti na vlastitu odgovornost, ne preuzimate odgovornost za bilo kakvu štetu.
Korak 2: Uređaj i program
Kao što je gore spomenuto, ideja je bila izgraditi jednostavan i jeftin sustav za čitanje podataka sa svjetionika i prikaz numeričkih vrijednosti na treptaju! ŠEŠIR, ili sličnu LED traku.
Raspon vrijednosti temperature za mjerenje sustavom zasnovanim na RPi u većini će slučajeva biti negdje između - 50 ° C i +80 ° C, za vlažnost između 0 i 100%. Dakle, zaslon koji može dati vrijednosti od -100 do +100 bit će dovoljan za većinu aplikacija. Decimalni brojevi manji od 128 mogu se prikazati kao binarni brojevi sa 7 bitova (ili LED dioda). Tako program uzima vrijednosti temperature i vlažnosti iz RuuviTaga kao "plutajuće" brojeve i pretvara ih u binarne brojeve, koji se zatim prikazuju na treptaju !.
Kao prvi korak, broj se zaokružuje, analizira je li pozitivan, negativan ili nula, a zatim se pomoću "ABS" pretvara u pozitivan broj. Zatim se decimalni broj pretvara u 7-znamenkasti binarni broj, u osnovi niz od 0 i 1, koji se analizira i prikazuje na posljednjih 7 piksela treptaja !.
Za vrijednosti temperature prvi piksel označava je li vrijednost pozitivna (crvena), nula (magenta) ili negativna (plava). Prikaz vrijednosti vlažnosti postavljen je na zeleno. Kako bi se pojednostavila razlika između vrijednosti temperature i vlažnosti, binarni pikseli postavljeni su bijeli za temperaturu i žuti za vlažnost. Kako bi se poboljšala čitljivost binarnih brojeva, pikseli "0" nisu potpuno isključeni, već su postavljeni mnogo slabije nego u stanju "1". Kao treptaj! pikseli su jako svijetli, možete postaviti opću svjetlinu mijenjajući parametar "svijetlo"
Program prikazuje vrijednosti i dijelove procesa također na ekranu. Osim toga, pronaći ćete nekoliko prigušenih (#) uputa za ispis. Ostavio sam ih unutra jer će vam možda pomoći da razumijete proces ako nema zvuka.
Vrijednosti se također mogu pohraniti u datoteku dnevnika.
Korak 3: Programski kod
Kod je pomalo otklonjen i optimiziran. Sada možete pronaći verziju 3 (20_03_2017).
'Ovaj je program namijenjen čitanju vrijednosti temperature, vlažnosti i tlaka iz RuuviTaga' 'te za prikaz temperature i vlažnosti kao binarnih brojeva na Pimorinijevom svjetlucanju! ŠEŠIR. '' '' Temelji se na primjeru print_to_screen.py iz biblioteke ruuvitag na githubu. '' Zahtijeva Pi Zero W, Pi 3 ili bilo koji drugi RPi opremljen bluetoothom i instaliranim svim potrebnim knjižnicama. '
vrijeme uvoza
uvoz OS iz datetime uvoz datetime
s ruuvitag_sensor.ruuvi uvoz RuuviTagSensor
from blinkt import set_clear_on_exit, set_pixel, clear, show
def temp_blinkt (bt):
# ova rutina uzima vrijednost temperature i prikazuje je kao binarni broj na blinkt!
čisto ()
# boja i intenzitet "1" piksela: bijela
r1 = 64 g1 = 64 b1 = 64
#boja i intenzitet "0" piksela: bijela
r0 = 5 g0 = 5 b0 = 5
# Zaokružite i pretvorite u cijeli broj
r = okruglo (bt)
# vz predstavlja algebarski znak za piksel indikatora
if (r> 0): vz = 1 # pozitivan elif (r <0): vz = 2 # negativan else: vz = 0 # nula # print (vz) i = abs (r) #print (i)
# pretvori u apsolutni, 7-znamenkasti binarni broj
i1 = i + 128 # za i rezultira 8-znamenkasti binarni broj koji počinje s 1 # print (i1)
b = "{0: b}". format (i1) # pretvori u binarni
# ispis (b)
b0 = str (b) # pretvori u niz
b1 = b0 [1: 8] #skraći prvi bit
print ("binarni broj:", b1)
# Postavite piksele na blinkt!
# postavljen binarni broj
za h u rasponu (0, 7): f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " je 1, piksel ", f) else: set_pixel (f, r0, g0, b0) # print (" nil ")
# Postavite piksel indikatora
if (vz == 1): set_pixel (0, 64, 0, 0) # crveno za pozitivne vrijednosti elif (vz == 2): set_pixel (0, 0, 0, 64) # plavo za negativne vrijednosti else: set_pixel (0, 64, 0, 64) # magenta ako je nula
pokazati()
# kraj temp_blinkt ()
def hum_blinkt (bh):
# ovo uzima vrijednost vlažnosti i prikazuje je kao binarni broj na blinktu!
čisto()
# boja i intenzitet "1" piksela: žuta
r1 = 64 g1 = 64 b1 = 0
#boja i intenzitet "0" piksela:
r0 = 5 g0 = 5 b0 = 0
# Zaokruži i pretvori u cijeli broj
r = okruglo (bh)
# pretvori u apsolutni, 7-znamenkasti binarni broj i = abs (r) #print (i)
i1 = i + 128 # jer i daje 8-znamenkasti binarni broj koji počinje s 1
# ispis (i1)
b = "{0: b}". format (i1)
# ispis (b)
b0 = str (b)
b1 = b0 [1: 8] #skraći prvi bit
print ("binarni broj:", b1)
# Postavite piksele na blinkt!
# postavite binarni broj u piksele
za h u rasponu (0, 7): f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) else: # isključivanje zvuka u prazne LED diode set_pixel (f, r0, g0, b0) # isključivanje zvuka na prazne LED diode
# Postavite piksel indikatora
set_pixel (0, 0, 64, 0) # zeleno za vlažnost
pokazati()
# kraj hum_blinkt ()
set_clear_on_exit ()
# Čitanje podataka iz RuuviTaga
mac = 'EC: 6D: 59: 6D: 01: 1C' # Promijenite se na mac adresu svog uređaja
print ('Pokretanje')
senzor = RuuviTagSensor (mac)
dok je istina:
data = sensor.update ()
line_sen = str.format ('Senzor - {0}', mac)
line_tem = str.format ('Temperatura: {0} C', podaci ['temperatura']) line_hum = str.format ('Vlažnost: {0} %', podaci ['vlažnost']) line_pre = str.format ('Tlak: {0}', podaci ['tlak'])
ispis ()
# temperatura prikaza na treptaju! ba = str.format ('{0}', data ['temperature']) bt = float (ba) ispis (bt, "Â ° C") temp_blinkt (bt) print ()
time.sleep (10) # temperatura prikaza 10 sekundi
# vlažnost zaslona na treptaju!
bg = str.format ('{0}', data ['vlažnost']) bh = float (bg) ispis (bh, " %") hum_blinkt (bh) print ()
# Očistite zaslon i ispišite podatke senzora na zaslon
os.system ('clear') print ('Pritisnite Ctrl+C za izlaz. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) print ('\ n / n / r …….')
# Pričekajte nekoliko sekundi i počnite ispočetka
try: time.sleep (8) osim KeyboardInterrupt: # Kada se pritisne Ctrl+C, izvršavanje while petlje je zaustavljeno print ('Exit') clear () show () break
Preporučeni:
IR termometar bez kontakta: 8 koraka (sa slikama)
IR termometar bez kontakta: Moje lokalno Ministarstvo zdravstva stupilo je u kontakt sa mnom jer im je trebao način da svakodnevno prate tjelesnu temperaturu zdravlja svojih zaposlenika tijekom krize Covid-19 2020. Normalni, infracrveni termometri počeli su biti rijetki
Arduino laserski infracrveni termometar: 7 koraka (sa slikama)
Arduino laserski infracrveni termometar: U ovom projektu ću vam pokazati kako izgraditi digitalni laserski infracrveni termometar s prilagođenim 3D tiskanim kućištem
Arduino infracrveni termometar pištolj MDF kućište: 4 koraka (sa slikama)
Arduino infracrveni termometar s pištoljem od MDF-a: Ovaj projekt služi za izradu infracrvenog termometra s Arduinom, sklop je postavljen u kućište od MDF-a koji izgleda kao medicinski infracrveni termometar na tržištu. Senzorni infracrveni termometar GY-906 koristi se za mjerenje temperature objekta bez kontakta, može značiti
Koristite pametni telefon kao beskontaktni termometar / prijenosni termometar: 8 koraka (sa slikama)
Koristite pametni telefon kao beskontaktni termometar / prijenosni termometar: Mjerenje tjelesne temperature beskontaktnim / beskontaktnim poput termo pištolja. Napravio sam ovaj projekt jer je Thermo Gun sada jako skup, pa moram pronaći alternativu za izradu DIY -a. A svrha je napraviti s niskobudžetnom verzijom.SuppliesMLX90614Ardu
Infracrveni termometar na bazi Arduina - IR termometar na bazi Arduina: 4 koraka
Infracrveni termometar na bazi Arduina | Infracrveni termometar pomoću Arduina: Bok dečki, u ovim uputama napravit ćemo beskontaktni termometar pomoću arduina. Budući da je ponekad temperatura tekućine/krutine previsoka ili preniska, a onda je teško stupiti u kontakt s njom i pročitati je temperatura u tom prizoru