Turinys:

„RuuviTag“ir „PiZero W“bei „Blinkt“! „Bluetooth“švyturiu pagrįstas termometras: 3 žingsniai (su nuotraukomis)
„RuuviTag“ir „PiZero W“bei „Blinkt“! „Bluetooth“švyturiu pagrįstas termometras: 3 žingsniai (su nuotraukomis)

Video: „RuuviTag“ir „PiZero W“bei „Blinkt“! „Bluetooth“švyturiu pagrįstas termometras: 3 žingsniai (su nuotraukomis)

Video: „RuuviTag“ir „PiZero W“bei „Blinkt“! „Bluetooth“švyturiu pagrįstas termometras: 3 žingsniai (su nuotraukomis)
Video: Victron VenusOS & Raspberry Pi | Ruuvi temperature sensor with Bluetooth connection to Raspberry Pi 2024, Liepa
Anonim
RuuviTag ir PiZero W ir Blinkt! „Bluetooth“švyturiu pagrįstas termometras
RuuviTag ir PiZero W ir Blinkt! „Bluetooth“švyturiu pagrįstas termometras
„RuuviTag“ir „PiZero W“bei „Blinkt“! „Bluetooth“švyturiu pagrįstas termometras
„RuuviTag“ir „PiZero W“bei „Blinkt“! „Bluetooth“švyturiu pagrįstas termometras
RuuviTag ir PiZero W ir Blinkt! „Bluetooth“švyturiu pagrįstas termometras
RuuviTag ir PiZero W ir Blinkt! „Bluetooth“švyturiu pagrįstas termometras

Šioje instrukcijoje aprašomas būdas skaityti temperatūros ir drėgmės duomenis iš „RuuviTag“naudojant „Bluetooth“su „Raspberry Pi Zero W“ir rodyti reikšmes dvejetainiais skaičiais „Pimoroni“mirksėjime! pHAT. Arba trumpai: kaip sukurti naujausią techniką ir šiek tiek nerūdijančio termometro.

„RuuviTag“yra atviro kodo jutiklio „Bluetooth“švyturys, pateikiamas kartu su temperatūros/drėgmės/slėgio ir pagreičio jutikliais, tačiau taip pat gali veikti kaip standartinis „Eddystone ™“/„iBeacon“artumo švyturys. Tai buvo labai sėkmingas „Kickstarter“projektas, kurį aš gavau prieš kelias savaites. Yra „Github“su „python“programine įranga, skirta „RuuviTag“skaityti naudojant avietę, ir aš panaudojau vieną iš jų pavyzdžių su kai kuriais papildymais.

„Raspberry Pi Zero W“yra naujausias „RPi“šeimos narys, iš esmės „Pi Zero“su „Bluetooth“ir WLAN.

Mirksėjimas! „Pimoroni“pHAT iš esmės yra aštuonių RBG šviesos diodų juostelė, sukonfigūruota kaip „Raspberry Pi“skrybėlė. Tai labai paprasta naudoti ir yra su „python“biblioteka. Idėja buvo perskaityti „RuuviTag“duomenis ir rodyti juos naudojant „blinkt“! KEPURĖ. Reikšmės rodomos kaip dvejetainiai skaičiai, naudojant 7 šviesos diodus, o aštuoni-naudojami parodyti, ar rodomos drėgmės ar temperatūros (+/-/0) vertės.

1 veiksmas: nustatykite sistemą

Sistemą nustatyti paprasta:- Įjunkite „RuuviTag“(„RuuviTag“temperatūros jutiklio versija).

- Nustatykite savo „RPi Zero W“, „RPi3“ar bet kurį kitą RPi su „Bluetooth“pajėgumu, vadovaudamiesi www.raspberrypi.org instrukcijomis.

- Padėk mirksnį! Kepurė ant RPi (išjungta).

- Įdiekite blinkt! ir „RuuviTag“programinė įranga, kaip nurodyta atitinkamuose „GitHub“puslapiuose.

- Dabar turite nustatyti savo „RuuviTag“MAC adresą

- nukopijuokite pridėtą „Python“programą, atidarykite ją naudodami „IDLE for Python 3“

- pakeiskite „RuuviTag“MAC adresą į savo, tada išsaugokite ir paleiskite programą.

- drąsiai keiskite ir optimizuokite programą. Programa pateikiama tokia, kokia yra, kad ja naudotumėtės savo rizika, neprisiimame jokios atsakomybės už bet kokią žalą.

2 veiksmas: įrenginys ir programa

Įrenginys ir programa
Įrenginys ir programa
Įrenginys ir programa
Įrenginys ir programa
Įrenginys ir programa
Įrenginys ir programa
Įrenginys ir programa
Įrenginys ir programa

Kaip minėta aukščiau, idėja buvo sukurti paprastą ir nebrangią sistemą, leidžiančią nuskaityti duomenis iš švyturėlio ir rodyti skaitines vertes „blinkte“! Kepurė arba panaši LED juostelė.

Temperatūros verčių diapazonas, kurį reikia išmatuoti naudojant RPi pagrįstą sistemą, daugeliu atvejų bus tarp - 50 ° C ir +80 ° C, o drėgmės - nuo 0 iki 100%. Taigi daugeliui programų pakaks ekrano, kuris gali pateikti reikšmes nuo -100 iki +100. Dešimtainiai skaičiai, mažesni nei 128, gali būti rodomi kaip dvejetainiai skaičiai su 7 bitais (arba šviesos diodais). Taigi programa paima temperatūros ir drėgmės vertes iš „RuuviTag“kaip „plūduriuojančius“skaičius ir paverčia juos dvejetainiais skaičiais, kurie tada rodomi mirksint !.

Pirmiausia skaičius suapvalinamas, išanalizuojamas teigiamas, neigiamas ar nulis, o tada paverčiamas teigiamu skaičiumi naudojant „abs“. Tada dešimtainis skaičius paverčiamas 7 skaitmenų dvejetainiu skaičiumi, iš esmės 0 ir 1 sekų eilute, kuri analizuojama ir rodoma paskutiniuose 7 mirksėjimo taškuose !.

Kalbant apie temperatūros vertes, pirmasis pikselis rodo, ar vertė yra teigiama (raudona), nulis (rausvai raudona), ar neigiama (mėlyna). Rodant drėgmės vertes, ji yra žalia. Siekiant supaprastinti temperatūros ir drėgmės verčių atskyrimą, dvejetainiai pikseliai yra nustatyti baltai temperatūrai, o geltonai - drėgmei. Siekiant pagerinti dvejetainių skaičių įskaitomumą, „0“pikseliai nėra visiškai išjungti, o yra nustatyti daug silpniau nei „1“būsenoje. Kaip mirksi! taškai yra labai ryškūs, galite nustatyti bendrą ryškumą, pakeisdami parametrą „ryškus“

Programa taip pat rodo vertes ir proceso dalis ekrane. Be to, rasite keletą nutildytų (#) spausdinimo instrukcijų. Aš juos palikau, nes jums gali būti naudinga suprasti procesą, jei nėra nutildytų.

Reikšmės taip pat gali būti saugomos žurnalo faile.

3 žingsnis: programos kodas

Kodas buvo šiek tiek derinamas ir optimizuotas. Dabar galite rasti 3 versiją (20_03_2017).

„Ši programa skirta skaityti„ RuuviTag “temperatūros, drėgmės ir slėgio reikšmes“ir parodyti temperatūros ir drėgmės vertes kaip dvejetainius skaičius „Pimorini“mirksėjime! KEPURĖ. '' '' Jis pagrįstas print_to_screen.py pavyzdžiu iš ruuvitag bibliotekos github. '' Reikalingas „Pi Zero W“, „Pi 3“ar bet kuris kitas „Bluetooth“įrengtas RPi ir visos reikalingos bibliotekos. “

importo laikas

importuoti operacines sistemas iš datos laiko importuoti datų laiką

iš ruuvitag_sensor.ruuvi importuoti RuuviTagSensor

iš „blinkt“importo set_clear_on_exit, set_pixel, clear, show

def temp_blinkt (bt):

# ši rutina nustato temperatūros vertę ir parodo ją kaip dvejetainį skaičių mirksint!

aišku ()

# spalva ir „1“pikselių intensyvumas: balta

r1 = 64 g1 = 64 b1 = 64

#„0“pikselių spalva ir intensyvumas: balta

r0 = 5 g0 = 5 b0 = 5

# Apvalinkite ir paverskite sveiku skaičiumi

r = apvalus (bt)

# vz žymi algebrinį indikatoriaus pikselio ženklą

jei (r> 0): vz = 1 # teigiamas elifas (r <0): vz = 2 # neigiamas kitas: vz = 0 # nulis # spausdinimas (vz) i = abs (r) #print (i)

# paversti absoliučiu 7 skaitmenų dvejetainiu skaičiumi

i1 = i + 128 #, kai i gaunamas 8 skaitmenų dvejetainis skaičius, prasidedantis 1 # print (i1)

b = "{0: b}". formatas (i1) # konvertuoti į dvejetainį

# spausdinimas (b)

b0 = str (b) # konvertuoti į eilutę

b1 = b0 [1: 8] #truncate pirmasis bitas

spausdinti ("dvejetainis numeris:", b1)

# Nustatykite taškus „blinkt“!

# nustatykite dvejetainį skaičių

h diapazone (0, 7): f = (h+1), jei (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " yra 1, pikselis ", f) else: set_pixel (f, r0, g0, b0) # print (" nulis ")

# Nustatykite indikatoriaus pikselį

if (vz == 1): set_pixel (0, 64, 0, 0) # raudona teigiamoms reikšmėms elif (vz == 2): set_pixel (0, 0, 0, 64) # mėlyna, jei neigiamos vertės dar: set_pixel (0, 64, 0, 64) # rausvai raudona, jei nulis

Rodyti()

# pabaiga temp_blinkt ()

def hum_blinkt (bh):

# tai paima drėgmės vertę ir parodo ją kaip dvejetainį skaičių „blinkt“!

aišku ()

# spalva ir „1“pikselių intensyvumas: geltona

r1 = 64 g1 = 64 b1 = 0

#"0" pikselių spalva ir intensyvumas:

r0 = 5 g0 = 5 b0 = 0

# Apvalinkite ir paverskite sveiku skaičiumi

r = apvalus (bh)

# transformuoti į absoliutų, 7 skaitmenų dvejetainį skaičių i = abs (r) #print (i)

i1 = i + 128 #, nes i pateikia 8 skaitmenų dvejetainį skaičių, prasidedantį 1

# spausdinimas (i1)

b = "{0: b}". formatas (i1)

# spausdinimas (b)

b0 = str (b)

b1 = b0 [1: 8] #truncate pirmasis bitas

spausdinti ("dvejetainis numeris:", b1)

# Nustatykite taškus „blinkt“!

# nustatykite dvejetainį skaičių į pikselius

h diapazone (0, 7): f = (h+1), jei (b1 [h] == "1"): set_pixel (f, r1, g1, b1) else: # nutildyti iki tuščių šviesos diodų set_pixel (f, r0, g0, b0) # nutildykite tuščius šviesos diodus

# Nustatykite indikatoriaus tašką

set_pixel (0, 0, 64, 0) # žalia drėgmei

Rodyti()

# pabaiga hum_blinkt ()

set_clear_on_exit ()

# Duomenų skaitymas iš „RuuviTag“

mac = 'EC: 6D: 59: 6D: 01: 1C' # Pakeiskite savo įrenginio „mac“adresą

spausdinti („Pradėti“)

jutiklis = RuuviTagSensor (mac)

nors tiesa:

duomenys = sensor.update ()

line_sen = str.format („Jutiklis - {0}“, „Mac“)

line_tem = str.format ('Temperatūra: {0} C', duomenys ['temperatūra']) line_hum = str.format ('Drėgmė: {0} %', duomenys ['drėgmė']) line_pre = str.format ('Slėgis: {0}', duomenys ['slėgis'])

spausdinti ()

# ekrano temperatūra mirksi! ba = str.format ('{0}', duomenys ['temperatūra']) bt = plūdė (ba) spauda (bt, "° C") temp_blinkt (bt) print ()

time.sleep (10) # ekrano temperatūra 10 sekundžių

# mirksi ekrano drėgmė!

bg = str.format ('{0}', duomenys ['drėgmė']) bh = plūdė (bg) spauda (bh, " %") hum_blinkt (bh) print ()

# Išvalykite ekraną ir spausdinkite jutiklio duomenis į ekraną

os.system ('aiškus') print ('Norėdami išeiti, paspauskite Ctrl+C. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) spausdinti ('\ n / n / r …….')

# Palaukite kelias sekundes ir pradėkite iš naujo

try: time.sleep (8), išskyrus klaviatūrąInterrupt: # Kai paspaudžiamas klavišas Ctrl+C, kol ciklas sustabdomas, spausdinimas („Išeiti“) clear () show () break

Rekomenduojamas: