Përmbajtje:
Video: RuuviTag dhe PiZero W dhe Blinkt! një termometër i bazuar në fener Bluetooth: 3 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:20
Ky udhëzues përshkruan një qasje për të lexuar të dhënat e temperaturës dhe lagështisë nga një RuuviTag duke përdorur Bluetooth me një Raspberry Pi Zero W dhe për të shfaqur vlerat në numrat binarë në një ndezje Pimoroni! pHAT. Ose për ta thënë shkurt: si të ndërtoni një gjendje të artit dhe një termometër pak të çuditshëm.
RuuviTag është një fener bluetooth me burim të hapur që vjen me sensorë të temperaturës/lagështisë/presionit dhe përshpejtimit, por gjithashtu mund të veprojë si një fener standard i afërsisë Eddystone ™/iBeacon. Ishte një projekt me shumë sukses Kickstarter dhe unë e mora para disa javësh. Ekziston një Github me softuer python për të lexuar RuuviTag duke përdorur një mjedër, dhe unë kam përdorur një nga shembujt e tyre, me disa shtesa.
Raspberry Pi Zero W është anëtari më i fundit i familjes RPi, në thelb një Pi Zero me Bluetooth dhe WLAN të shtuar.
E blinkt! pHAT nga Pimoroni është në thelb një brez prej tetë LED RBG të konfiguruar si HAT për Raspberry Pi. Veryshtë shumë e lehtë për t'u përdorur dhe vjen me një bibliotekë python. Ideja ishte të lexoni të dhënat nga RuuviTag dhe t'i shfaqni ato duke përdorur dritën e blinkt! HAT. Vlerat shfaqen si numra binarë duke përdorur 7 LED, ndërsa tetë përdoret për të treguar nëse shfaqen vlerat e lagështisë ose temperaturës (+/-/0).
Hapi 1: Vendosja e sistemit
Vendosja e sistemit është e lehtë:- Ndizni RuuviTag (versioni i sensorit të temperaturës RuuviTag).
- Vendosni RPi Zero W, RPi3 ose ndonjë RPi tjetër me kapacitet bluetooth të shtuar, duke ndjekur udhëzimet në www.raspberrypi.org.
- Vendosni dritaren! HAT në RPi (ndërsa jashtë).
- Instaloni blinkt! dhe programin RuuviTag, siç tregohet në faqet përkatëse të GitHub.
- Tani duhet të identifikoni adresën MAC të RuuviTag tuaj
- kopjoni programin e bashkangjitur Python, hapeni atë me IDLE për Python 3
- ndryshoni adresën MAC të RuuviTag në tuajin, pastaj ruani dhe drejtoni programin.
- mos ngurroni të modifikoni dhe optimizoni programin. Programi vjen ashtu siç është, për t'u përdorur në rrezikun tuaj, asnjë përgjegjësi nuk merret për dëmet.
Hapi 2: Pajisja dhe Programi
Siç u përmend më lart, ideja ishte të ndërtohej një sistem i thjeshtë dhe i lirë për të lexuar të dhëna nga feneri dhe për të shfaqur vlerat numerike në blinkt! HAT, ose një shirit LED i ngjashëm.
Gama e vlerave për temperaturën që do të matet me një sistem të bazuar në RPi do të jetë në shumicën e rasteve diku midis - 50 ° C dhe +80 ° C, për lagështi midis 0 dhe 100%. Pra, një ekran që mund të japë vlera nga -100 në +100 do të jetë i mjaftueshëm për shumicën e aplikacioneve. Numrat dhjetorë më të vegjël si 128 mund të shfaqen si numra binarë me 7 bit (ose LED). Pra, programi merr vlerat e temperaturës dhe lagështisë nga RuuviTag si numra "notues" dhe i shndërron ato në numra binarë, të cilët më pas shfaqen në blinkt !.
Si hap i parë, numri rrumbullakohet, analizohet nëse është pozitiv, negativ ose zero, dhe më pas shndërrohet në një numër pozitiv duke përdorur "abs". Pastaj numri dhjetor shndërrohet në një numër binar 7-shifror, në thelb një varg 0s dhe 1s, i cili analizohet dhe shfaqet në 7 pikselët e fundit të blinkt !.
Për vlerat e temperaturës pikseli i parë tregon nëse vlera është pozitive (e kuqe), zero (magenta) ose negative (blu). Duke shfaqur vlerat e lagështisë është vendosur në të gjelbër. Për të thjeshtuar diskriminimin midis vlerave të temperaturës dhe lagështisë, pikselët binarë vendosen të bardhë për temperaturën dhe të verdhë për lagështinë. Për të rritur lexueshmërinë e numrave binarë, pikselët "0" nuk janë fikur plotësisht, por në vend të kësaj janë vendosur shumë më të dobët sesa në gjendjen "1". Si blinkt! pikselët janë shumë të ndritshëm, mund të vendosni shkëlqimin e përgjithshëm duke ndryshuar parametrin "ndritshëm"
Programi shfaq vlerat dhe pjesët e procesit gjithashtu në ekran. Përveç kësaj do të gjeni disa udhëzime të shtypura (#) të shtypura. I lashë brenda, pasi mund t'i gjeni të dobishme për të kuptuar procesin nëse nuk heshtin.
Vlerat gjithashtu mund të ruhen në një skedar regjistri.
Hapi 3: Kodi i Programit
Kodi ishte pak i korrigjuar dhe i optimizuar. Tani mund të gjeni versionin 3 (20_03_2017).
'Ky program ka për qëllim të lexojë vlerat e temperaturës, lagështisë dhe presionit nga një RuuviTag' "dhe të shfaqë vlerat e temperaturës dhe lagështisë si numra binarë në një pulsim Pimorini! HAT. '' '' Bazohet në shembullin print_to_screen.py nga biblioteka ruuvitag në github. "Kërkon një Pi Zero W, Pi 3 ose ndonjë RPi tjetër të pajisur me bluetooth dhe të gjitha bibliotekat e nevojshme të instaluara."
koha e importit
import os nga dataetime import dataetime
nga ruuvitag_sensor.ruuvi import RuuviTagSensor
nga blinkt import set_clear_on_exit, set_pixel, qartë, shfaq
def temp_blinkt (bt):
# kjo rutinë merr vlerën e temperaturës dhe e shfaq atë si një numër binar në ndezje!
qartë ()
# ngjyra dhe intensiteti i pikselave "1": e bardhë
r1 = 64 g1 = 64 b1 = 64
#ngjyra dhe intensiteti i pikselave "0": e bardhë
r0 = 5 g0 = 5 b0 = 5
# Rrumbullakos dhe konverto në numër të plotë
r = e rrumbullakët (bt)
# vz përfaqëson shenjën algjebrike për pikselin tregues
nëse (r> 0): vz = 1 # elif pozitiv (r <0): vz = 2 # negativ tjetër: vz = 0 # zero # print (vz) i = abs (r) #print (i)
# transformohet në numër binar absolut, 7-shifror
i1 = i + 128 # për i rezulton në një numër binar 8-shifror duke filluar me printimin 1 # (i1)
b = "{0: b}". format (i1) # konvertohet në binar
# print (b)
b0 = str (b) # konvertohet në varg
b1 = b0 [1: 8] #shkurtoj bitin e parë
print ("numri binar:", b1)
# Vendosni piksele në ndezje!
# vendosni numrin binar
për h në rangun (0, 7): f = (h+1) nëse (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " është 1, piksel ", f) tjetër: set_pixel (f, r0, g0, b0) # print (" zero ")
# Vendosni pikselin tregues
nëse (vz == 1): set_pixel (0, 64, 0, 0) # e kuqe për vlerat pozitive elif (vz == 2): set_pixel (0, 0, 0, 64) # blu për vlerat negative tjetër: set_pixel (0, 64, 0, 64) # magenta nëse është zero
shfaqje()
# fundi i temp_blinkt ()
def hum_blinkt (bh):
# kjo merr vlerën e lagështisë dhe e shfaq atë si një numër binar në blinkt!
qartë()
# ngjyra dhe intensiteti i pikselave "1": e verdhë
r1 = 64 g1 = 64 b1 = 0
#ngjyra dhe intensiteti i pikselave "0":
r0 = 5 g0 = 5 b0 = 0
# Rrumbullakoseni dhe shndërrohuni në numër të plotë
r = e rrumbullakët (bh)
# transformo në numrin binar absolut, 7-shifror i = abs (r) #print (i)
i1 = i + 128 # për i jep një numër binar 8-shifror duke filluar me 1
# print (i1)
b = "{0: b}". format (i1)
# print (b)
b0 = str (b)
b1 = b0 [1: 8] #shkurtoj bitin e parë
print ("numri binar:", b1)
# Vendosni piksele në ndezje!
# vendos numrin binar në piksele
për h në rangun (0, 7): f = (h+1) nëse (b1 [h] == "1"): set_pixel (f, r1, g1, b1) tjetër: # hesht në LED të zbrazët set_pixel (f, r0, g0, b0) # hesht në LED të zbrazët
# Vendosni pikselin tregues
set_pixel (0, 0, 64, 0) # jeshile për lagështi
shfaqje()
# fundi i hum_blinkt ()
set_clear_on_exit ()
# Leximi i të dhënave nga RuuviTag
mac = 'EC: 6D: 59: 6D: 01: 1C' # Ndrysho në adresën mac të pajisjes tuaj
print ("Fillimi")
sensor = RuuviTagSensor (mac)
ndërsa e vërtetë:
të dhëna = sensor. përditësim ()
line_sen = str.format ('Sensor - {0}', mac)
line_tem = str.format ('Temperatura: {0} C', të dhënat ['temperatura']) line_hum = str.format ('Lagështia: {0} %', të dhënat ['lagështia']) line_pre = str.format ('Presioni: {0}', të dhënat ['presioni'])
print ()
# temperatura e ekranit në dritë të hapur! ba = str.format ('{0}', të dhënat ['temperatura']) bt = notimi (ba) print (bt, "Â ° C") temp_blinkt (bt) print ()
koha.fjetja (10) # temperatura e ekranit për 10 sekonda
# shfaq lagështinë në dritë!
bg = str.format ('{0}', të dhënat ['lagështia']) bh = notimi (bg) print (bh, " %") hum_blinkt (bh) print ()
# Pastroni ekranin dhe printoni të dhënat e sensorit në ekran
os.system ('clear') print ('Shtypni Ctrl+C për ta lënë. / n / n') print (str (dataetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) print ('\ n / n / r …….')
# Prisni për disa sekonda dhe filloni përsëri
provo: time.sleep (8) përveç tastierësNdërprer: # Kur shtypet Ctrl+C ekzekutimi i lakut while është ndalur printimi ('Exit') clear () show () break () break
Recommended:
Kthejeni një mjedër Pi në një fener Bluetooth: 4 hapa
Kthejeni një Raspberry Pi në Bluetooth Beacon: Bluetooth është një nga teknologjitë novatore për të transferuar të dhëna pa tel, për të ndërtuar sisteme të automatizimit të shtëpisë, për të kontrolluar pajisje të tjera, etj. Në këtë udhëzues, unë do të përpiqem ta kthej një Raspberry Pi në Bluetooth Beacon. Kërkesat Raspberry PiBleuIO (A Bl
Një makinë për frikësimin e Halloween -it duke përdorur një PIR, një kungull të printuar në 3D dhe një Pranker audio të pajtueshme me Troll Arduino/Bordi praktik i Shakasë.: 5 Hapa
Një makinë për frikësimin e Halloween -it duke përdorur një PIR, një kungull të printuar në 3D dhe Tran Arduino Compatible Audio Pranker/Joke Board praktike .: Bordi Troll i krijuar nga Patrick Thomas Mitchell i EngineeringShock Electronics, dhe u financua plotësisht në Kickstarter jo shumë kohë më parë. Unë mora shpërblimin disa javë më parë për të ndihmuar në shkrimin e disa shembujve të përdorimit dhe ndërtimin e një biblioteke Arduino në një përpjekje
Gjenerator muzikor i bazuar në mot (ESP8266 Bazuar në Midi Generator): 4 hapa (me fotografi)
Gjenerator muzikor i bazuar në mot (ESP8266 Bazuar në Midi Generator): Përshëndetje, sot unë do t'ju shpjegoj se si ta bëni vetë gjeneratorin tuaj të vogël të Muzikës me bazë moti. Bazohet në një ESP8266, i cili është si një Arduino, dhe i përgjigjet temperaturës, shiut dhe intensiteti i dritës. Mos prisni që ajo të bëjë këngë të tëra ose progord të akordit
Shtoni një takometër optik të bazuar në Arduino në një ruter CNC: 34 hapa (me fotografi)
Shtoni një Tachometer Optik të bazuar në Arduino në një Router CNC: Ndërtoni një tregues optik RPM për ruterin tuaj CNC me një Arduino Nano, një sensor IR LED/IR Photodiode dhe një ekran OLED për më pak se 30 dollarë. Unë u frymëzova nga Masa RPM eletro18 - Tachometer Optical Instructable dhe doja të shtoja një tahometër
Termometër dixhital i bazuar në piksaj me maksimum dhe min: 13 hapa
Termometër dixhital i bazuar në Picaxe Me Max dhe Min: (Ju lutemi lini një mesazh, por mos jini shumë kritik, ky është udhëzimi im i parë !!) Ky është një termometër që kam bërë për kamionin tonë, për të treguar temperaturën e jashtme. Bazohet në një çip Picaxe pasi ato janë të lira dhe të lehta për t'u përdorur. Nëse kjo është për