Orodha ya maudhui:

RuuviTag na PiZero W na Blinkt! kipima joto cha Bluetooth Beacon: Hatua 3 (na Picha)
RuuviTag na PiZero W na Blinkt! kipima joto cha Bluetooth Beacon: Hatua 3 (na Picha)

Video: RuuviTag na PiZero W na Blinkt! kipima joto cha Bluetooth Beacon: Hatua 3 (na Picha)

Video: RuuviTag na PiZero W na Blinkt! kipima joto cha Bluetooth Beacon: Hatua 3 (na Picha)
Video: BTT SKR2 - Установка прошивки FluiddPi и Klipper 2024, Julai
Anonim
RuuviTag na PiZero W na Blinkt! kipima joto cha Bluetooth Beacon
RuuviTag na PiZero W na Blinkt! kipima joto cha Bluetooth Beacon
RuuviTag na PiZero W na Blinkt! kipima joto cha Bluetooth Beacon
RuuviTag na PiZero W na Blinkt! kipima joto cha Bluetooth Beacon
RuuviTag na PiZero W na Blinkt! kipima joto cha Bluetooth Beacon
RuuviTag na PiZero W na Blinkt! kipima joto cha Bluetooth Beacon

Hii inaelezea njia ya kusoma data ya joto na unyevu kutoka kwa RuuviTag ukitumia Bluetooth na Raspberry Pi Zero W na kuonyesha maadili kwa nambari za binary kwenye blom ya Pimoroni! pHAT. Au kuiweka fupi: jinsi ya kujenga hali ya sanaa na kipimajoto kidogo cha neva.

RuuviTag ni beacon ya sensa ya chanzo ya wazi inayokuja na joto / unyevu / shinikizo na sensorer za kupendeza, lakini pia inaweza kuwa kama taa ya karibu ya Eddystone ™ / iBeacon. Ulikuwa mradi wa Kickstarter uliofanikiwa sana na nilipata yangu wiki chache zilizopita. Kuna Github iliyo na programu ya chatu ya kusoma RuuviTag kwa kutumia rasiberi, na nimetumia moja ya mifano yao, na nyongeza zingine.

Raspberry Pi Zero W ndiye mwanachama wa hivi karibuni wa familia ya RPi, haswa Pi Zero na Bluetooth na WLAN imeongezwa.

Kupepesa macho! pHAT kutoka Pimoroni kimsingi ni ukanda wa LED nane za RBG zilizosanidiwa kama HAT kwa Raspberry Pi. Ni rahisi sana kutumia na inakuja na maktaba ya chatu. Wazo lilikuwa kusoma data kutoka kwa RuuviTag na kuionyesha kwa kutumia blinkt! Kofia. Thamani zinaonyeshwa kama nambari za kibinadamu kwa kutumia 7 za LED, wakati ile nane inatumika kuonyesha ikiwa unyevu au joto (+ / - / 0) maadili yanaonyeshwa.

Hatua ya 1: Kuanzisha Mfumo

Kuweka mfumo ni rahisi: - Washa RuuviTag (toleo la sensa ya joto ya RuuviTag).

- Weka RPi Zero W yako, RPi3, au RPi nyingine yoyote iliyo na uwezo wa bluetooth iliyoongezwa, kufuata maagizo kwenye www.raspberrypi.org.

- Weka blinkt! Kofia kwenye RPi (wakati iko mbali).

- Sakinisha blinkt! na programu ya RuuviTag, kama inavyoonyeshwa kwenye kurasa zinazolingana za GitHub.

- Sasa lazima utambue anwani ya MAC ya RuuviTag yako

- nakili programu ya Python iliyoambatanishwa, ifungue na IDLE kwa Python 3

- badilisha anwani ya MAC ya RuuviTag iwe yako, kisha uhifadhi na uendesha programu hiyo.

- jisikie huru kurekebisha na kuboresha programu. Programu inakuja kama ilivyo, kutumiwa kwa hatari yako mwenyewe, hakuna deni zinazochukuliwa kwa uharibifu wowote.

Hatua ya 2: Kifaa na Programu

Kifaa na Programu
Kifaa na Programu
Kifaa na Programu
Kifaa na Programu
Kifaa na Programu
Kifaa na Programu
Kifaa na Programu
Kifaa na Programu

Kama ilivyoelezwa hapo juu, wazo lilikuwa kujenga mfumo rahisi na wa bei rahisi kusoma data kutoka kwa beacon na kuonyesha maadili ya nambari kwenye blinkt! Kofia, au mkanda sawa wa LED.

Viwango vya viwango vya joto vinavyopimwa na mfumo msingi wa RPi katika hali nyingi itakuwa mahali fulani kati ya - 50 ° C na + 80 ° C, kwa unyevu kati ya 0 na 100%. Kwa hivyo onyesho ambalo linaweza kutoa maadili kutoka -100 hadi +100 litatosha kwa matumizi mengi. Nambari za desimali ndogo kama 128 zinaweza kuonyeshwa kama nambari za binary zilizo na bits 7 (au LEDs). Kwa hivyo mpango huchukua viwango vya joto na unyevu kutoka kwa RuuviTag kama nambari za "kuelea" na kuzibadilisha kuwa nambari za binary, ambazo zinaonyeshwa kwenye blinkt!.

Kama hatua ya kwanza, nambari imezungukwa, ikichanganuliwa ikiwa chanya, hasi au sifuri, kisha hubadilishwa kuwa nambari nzuri kwa kutumia "abs". Kisha nambari ya desimali inabadilishwa kuwa nambari ya binary ya tarakimu 7, kimsingi kamba ya 0s na 1s, ambayo inachambuliwa na kuonyeshwa kwenye saizi 7 za mwisho za blinkt!.

Kwa maadili ya joto pikseli ya kwanza inaonyesha ikiwa thamani ni chanya (nyekundu), sifuri (magenta) au hasi (bluu). Kuonyesha maadili ya unyevu imewekwa kijani. Ili kurahisisha ubaguzi kati ya maadili ya joto na unyevu saizi za binary zimewekwa nyeupe kwa joto na manjano kwa unyevu. Ili kuongeza uhalali wa nambari za kibinadamu, pikseli "0" hazizimwi kabisa, lakini badala yake zimewekwa dhaifu sana kuliko hali ya "1". Kama kupepesa macho! saizi ni veery mkali, unaweza kuweka mwangaza wa jumla kubadilisha parameter "mkali"

Programu inaonyesha maadili na sehemu za mchakato pia kwenye skrini. Kwa kuongeza utapata maagizo kadhaa ya kuchapisha yaliyonyamazishwa (#). Niliwaacha ndani, kwani unaweza kupata msaada wa kuelewa mchakato ikiwa hautajadiliwa.

Thamani zinaweza pia kuhifadhiwa kwenye faili ya kumbukumbu.

Hatua ya 3: Msimbo wa Programu

Nambari hiyo ilitatuliwa kidogo na kuboreshwa. Sasa unaweza kupata toleo la 3 (20_03_2017).

Programu hii imekusudiwa kusoma joto, unyevu na viwango vya shinikizo huunda RuuviTag "na kuonyesha viwango vya joto na unyevu kama nambari za binary kwenye blinkt ya Pimorini! Kofia. Inategemea mfano wa print_to_screen.py kutoka maktaba ya ruuvitag huko github. "Inahitaji Pi Zero W, Pi 3 au RPi nyingine yoyote iliyo na vifaa vya Bluetooth na maktaba zote muhimu."

muda wa kuagiza

kuagiza os kutoka wakati wa kuingiza wakati wa kuingilia

kutoka ruuvitag_sensor.ruuvi kuagiza RuuviTagSensor

kutoka blinkt kuagiza set_clear_on_exit, set_pixel, wazi, onyesha

def temp_blinkt (bt):

# utaratibu huu unachukua joto na kuionyesha kama nambari ya binary kwenye blinkt!

wazi ()

# rangi na ukubwa wa saizi "1": nyeupe

r1 = 64 g1 = 64 b1 = 64

# rangi na ukubwa wa saizi "0": nyeupe

r0 = 5 g0 = 5 b0 = 5

# Mzunguko na ubadilishe kuwa nambari kamili

r = pande zote (bt)

# vz inawakilisha ishara ya algebraic kwa pixel ya kiashiria

ikiwa (r> 0): vz = 1 # elif elif (r <0): vz = 2 # hasi nyingine: vz = 0 # zero # print (vz) i = abs (r) #print (i)

# badilisha kuwa nambari kamili ya nambari 7 ya binary

i1 = i + 128 # kwa maana napata nambari ya binary yenye tarakimu 8 kuanzia 1 # chapa (i1)

b = "{0: b}". fomati (i1) # badili kuwa ya binary

# kuchapisha (b)

b0 = str (b) # badilisha kuwa kamba

b1 = b0 [1: 8] # truncate kwanza kidogo

chapa ("nambari ya binary:", b1)

# Weka saizi kwenye blinkt!

# weka nambari ya binary

kwa h katika masafa (0, 7): f = (h + 1) ikiwa (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # chapa ("bit", h, " ni 1, pixel ", f) mwingine: set_pixel (f, r0, g0, b0) # chapa (" nil ")

# Weka pikseli ya kiashiria

ikiwa (vz == 1): set_pixel (0, 64, 0, 0) # nyekundu kwa maadili mazuri elif (vz == 2): set_pixel (0, 0, 0, 64) # bluu kwa nambari hasi nyingine: set_pixel ((0, 64, 0, 64) # magenta ikiwa sifuri

onyesha ()

# mwisho wa temp_blinkt ()

def hum_blinkt (bh):

# hii inachukua thamani ya unyevu na kuionyesha kama nambari ya binary kwenye blinkt!

wazi ()

# rangi na ukubwa wa saizi "1": manjano

r1 = 64 g1 = 64 b1 = 0

# rangi na ukubwa wa saizi "0":

r0 = 5 g0 = 5 b0 = 0

# Mzunguko na ubadilishe kuwa nambari kamili

r = pande zote (bh)

# badilisha kuwa nambari kamili ya nambari 7 ya binary i = abs (r) #print (i)

i1 = i + 128 # kwa maana ninatoa nambari ya binary yenye tarakimu 8 kuanzia 1

# kuchapisha (i1)

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

# kuchapisha (b)

b0 = str (b)

b1 = b0 [1: 8] # truncate kwanza kidogo

chapa ("nambari ya binary:", b1)

# Weka saizi kwenye blinkt!

# weka nambari ya binary kuwa saizi

kwa h katika masafa (0, 7): f = (h + 1) ikiwa (b1 [h] == "1"): set_pixel (f, r1, g1, b1) mwingine: # bubu kwa tupu za LED set_pixel (f, r0, g0, b0) # bubu kwa LED tupu

# Weka pikseli ya kiashiria

set_pixel (0, 0, 64, 0) # kijani kibichi kwa unyevu

onyesha ()

# mwisho wa hum_blinkt ()

seti_safisha_katika_kutoka ()

# Kusoma data kutoka RuuviTag

mac = 'EC: 6D: 59: 6D: 01: 1C' # Badilisha kwa anwani ya mac ya kifaa chako mwenyewe

chapisha ('Kuanzia')

sensor = RuuviTagSensor (mac)

wakati Kweli:

data = sensor.update ()

line_sen = str.format ('Sensor - {0}', mac)

line_tem = str.format ('Joto: {0} C', data ['joto']) line_hum = str.format ('Humidity: {0}%', data ['humidity']) line_pre = str.format ('Shinikizo: {0}', data ['shinikizo'])

chapisha ()

# joto la kuonyesha kwenye blinkt! ba = str.fomati ('{0}', data ['joto']) bt = kuelea (ba) kuchapisha (bt, "° C") temp_blinkt (bt) chapa ()

kulala (10) # joto la kuonyesha kwa sekunde 10

# onyesha unyevu kwenye blinkt!

bg = str.format ('{0}', data ['humidity']) bh = kuelea (bg) print (bh, "%") hum_blinkt (bh) print ()

# Futa skrini na uchapishe data ya sensa kwa skrini

mfumo. ('clear') chapa ('Bonyeza Ctrl + C kuacha. chapisha ('\ n / n / r …….')

# Subiri kwa sekunde chache na uanze tena

jaribu: saa. kulala (8) isipokuwa Kinanda Uingiliano

Ilipendekeza: