Sadržaj:
Video: RuuviTag i PiZero W i Blinkt! termometar zasnovan na Bluetooth beacon -u: 3 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
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 skratimo: kako izgraditi najnovija dostignuća i pomalo štreberski termometar.
RuuviTag je bluetooth svjetionik sa senzorom otvorenog koda koji dolazi sa senzorima temperature/vlažnosti/pritiska 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 ga dobio prije nekoliko sedmica. Postoji Github sa python softverom za čitanje RuuviTaga pomoću maline, a ja sam koristio jedan od njihovih primjera, s nekim dodacima.
Raspberry Pi Zero W je najnoviji član porodice RPi, u osnovi Pi Zero s dodanim Bluetooth -om i WLAN -om.
Treptaj! pHAT iz Pimoronija je u osnovi 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 da li su prikazane vrijednosti vlažnosti ili temperature (+/-/0).
Korak 1: Postavljanje sistema
Postavljanje sistema je jednostavno:- Uključite RuuviTag (verzija senzora 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 treptaj! i RuuviTag softver, kako je navedeno na odgovarajućim GitHub stranicama.
- Sada morate identificirati MAC adresu vašeg RuuviTaga
- kopirajte priloženi Python program, 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 je, 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 sistem za čitanje podataka sa svjetionika i prikaz numeričkih vrijednosti na treptaju! ŠEŠIR, ili sličnu LED traku.
Opseg vrijednosti temperature za mjerenje sa RPi sistemom će u većini slučajeva biti negdje između - 50 ° C i +80 ° C, za vlažnost između 0 i 100%. Dakle, prikaz 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 pretvara u pozitivan broj pomoću "abs". Zatim se decimalni broj pretvara u sedmoznamenkasti 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. Da bi se pojednostavila razlika između vrijednosti temperature i vlažnosti, binarni pikseli su bijeli za temperaturu i žuti za vlažnost. Da bi se poboljšala čitljivost binarnih brojeva, piksel "0" nije potpuno isključen, već je postavljen mnogo slabije nego u stanju "1". As blinkt! pikseli su jako svijetli, možete postaviti opću svjetlinu mijenjajući parametar "sjajno"
Program prikazuje vrijednosti i dijelove procesa i na ekranu. Osim toga, pronaći ćete nekoliko prigušenih (#) uputstava za štampanje. Ostavio sam ih unutra jer će vam možda pomoći da razumijete proces ako se ne uključi zvuk.
Vrijednosti se također mogu pohraniti u datoteku dnevnika.
Korak 3: Programski kod
Kod je malo otklonjen i optimiziran. Možda ćete sada pronaći verziju 3 (20_03_2017).
'Ovaj program ima za cilj očitavanje vrijednosti temperature, vlažnosti i pritiska iz RuuviTaga' 'te prikaz temperature i vlažnosti kao binarne brojeve na Pimorinijevom treptaju! ŠEŠIR. '' '' Zasnovano je 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 bibliotekama. '
vreme uvoza
uvoz OS iz datetime uvoz datetime
od 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!
jasno ()
# boja i intenzitet piksela "1": 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)
# transformirati u apsolutni, sedmoznamenkasti binarni broj
i1 = i + 128 # za i rezultira osmocifrenim binarnim brojem koji počinje sa 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 ")
# Podesite 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 ostalo: 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!
jasno ()
# 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)
# transformirati u apsolutni, sedmoznamenkasti binarni broj i = abs (r) #print (i)
i1 = i + 128 # jer i daje osmocifreni 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 na 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
# Podesite 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 na mac adresu svog uređaja
print ('Pokretanje')
senzor = RuuviTagSensor (mac)
dok je True:
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 ('Pritisak: {0}', podaci ['pritisak'])
print ()
# 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
# prikaz vlažnosti na treptaju!
bg = str.format ('{0}', data ['vlažnost']) bh = float (bg) ispis (bh, " %") hum_blinkt (bh) print ()
# Očistite ekran i ispišite podatke senzora na ekran
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 …….')
# Sač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čuje se:
Arduino daljinski upravljač zasnovan na pregledniku (linux): 9 koraka (sa slikama)
Arduino daljinski upravljač zasnovan na pregledniku (linux): Imamo djecu. Volim ih do komadića, ali stalno skrivaju daljinski upravljač za satelit i televiziju kad uključe dječje kanale. Nakon što se to svakodnevno događalo nekoliko godina, i nakon što mi je draga žena dozvolila
3D štampani RD predajnik zasnovan na Arduinu: 25 koraka (sa slikama)
3D štampani RD predajnik zasnovan na Arduinu: Ovaj projekat će vam pokazati kako sam krenuo u projektovanje i izgradnju RD predajnika zasnovanog na Arduinu. Moj cilj za ovaj projekat je bio da dizajniram RC predajnik sa 3D štampanjem koji bih mogao koristiti za kontrolu drugih Arduino projekata. Htio sam da kontroler bude
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: Zdravo momci 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
Digitalni termometar zasnovan na Picaxe s maks. I min .: 13 koraka
Picaxe digitalni termometar sa maks. I min .: (ostavite poruku, ali nemojte biti previše kritični, ovo je moje prvo uputstvo !!) Ovo je termometar koji sam napravio za naš kamper-kombi, za prikaz vanjske temperature. Zasnovan je na Picaxe čipu jer je jeftin i jednostavan za upotrebu. Ako je ovo za