Բովանդակություն:

RuuviTag և PiZero W և Blinkt! Bluetooth փարոսի վրա հիմնված ջերմաչափ ՝ 3 քայլ (նկարներով)
RuuviTag և PiZero W և Blinkt! Bluetooth փարոսի վրա հիմնված ջերմաչափ ՝ 3 քայլ (նկարներով)

Video: RuuviTag և PiZero W և Blinkt! Bluetooth փարոսի վրա հիմնված ջերմաչափ ՝ 3 քայլ (նկարներով)

Video: RuuviTag և PiZero W և Blinkt! Bluetooth փարոսի վրա հիմնված ջերմաչափ ՝ 3 քայլ (նկարներով)
Video: Ձեր Raspberry Pi Pico-ն վերածելով Mitsubishi FX1N PLC-ի 2024, Հուլիսի
Anonim
RuuviTag և PiZero W և Blinkt! Bluetooth փարոսի վրա հիմնված ջերմաչափ
RuuviTag և PiZero W և Blinkt! Bluetooth փարոսի վրա հիմնված ջերմաչափ
RuuviTag և PiZero W և Blinkt! Bluetooth փարոսի վրա հիմնված ջերմաչափ
RuuviTag և PiZero W և Blinkt! Bluetooth փարոսի վրա հիմնված ջերմաչափ
RuuviTag և PiZero W և Blinkt! Bluetooth փարոսի վրա հիմնված ջերմաչափ
RuuviTag և PiZero W և Blinkt! Bluetooth փարոսի վրա հիմնված ջերմաչափ

Այս ձեռնարկը նկարագրում է RuuviTag- ի ջերմաստիճանի և խոնավության տվյալները Bluetooth- ով կարդալու մոտեցում Raspberry Pi Zero W- ով և երկուական թվերով արժեքները ցուցադրելու Pimoroni blinkt- ում: pHAT: Կամ կարճ ասած. ինչպես կառուցել արվեստի նորագույն մակարդակ և մի փոքր անհանգիստ ջերմաչափ:

RuuviTag- ը բաց կոդով bluetooth փարոս է, որը գալիս է ջերմաստիճանի/խոնավության/ճնշման և արագացման տվիչներով, բայց կարող է նաև հանդես գալ որպես ստանդարտ Eddystone ™/iBeacon հարևանության փարոս: Դա շատ հաջող Kickstarter նախագիծ էր, և ես մի քանի շաբաթ առաջ ձեռք բերեցի իմը: Կա Github python ծրագրով `RuuviTag- ը ազնվամորու միջոցով կարդալու համար, և ես օգտագործել եմ դրանցից մեկը` որոշ լրացումներով:

Raspberry Pi Zero W- ը RPi ընտանիքի վերջին անդամն է, հիմնականում Pi Zero- ն ՝ Bluetooth- ով և WLAN- ով ավելացված:

Ակնթարթ! Pimoroni- ի pHAT- ը հիմնականում RBG ութ LED- ների ժապավեն է, որը կազմված է որպես գլխարկ Raspberry Pi- ի համար: Այն շատ հեշտ է օգտագործել և գալիս է պիթոնի գրադարանով: Գաղափարն այն էր, որ RuuviTag- ի տվյալները կարդան և ցուցադրվեն ՝ օգտագործելով blinkt! ՀԱԹ. Արժեքները ցուցադրվում են որպես երկուական թվեր ՝ օգտագործելով LED- ներից 7-ը, իսկ ութն օգտագործվում է ՝ ցույց տալու համար, թե արդյոք ցուցադրվում են խոնավության կամ ջերմաստիճանի (+/-/0) արժեքները:

Քայլ 1: Համակարգի կարգավորում

Համակարգը կարգավորելը հեշտ է.- Միացրեք RuuviTag- ը (RuuviTag ջերմաստիճանի տվիչների տարբերակ):

- Կարգավորեք ձեր RPi Zero W, RPi3 կամ որևէ այլ RPi ՝ ավելացված bluetooth հզորությամբ ՝ հետևելով www.raspberrypi.org- ի հրահանգներին:

- Տեղադրեք աչքերը: HAT RPi- ի վրա (անջատված վիճակում):

- Տեղադրեք blinkt! և RuuviTag ծրագրակազմը, ինչպես նշված է համապատասխան GitHub էջերում:

- Այժմ դուք պետք է բացահայտեք ձեր RuuviTag- ի MAC հասցեն

- պատճենեք կցված Python ծրագիրը, բացեք այն IDLE- ով Python 3 -ի համար

- փոխեք RuuviTag- ի MAC հասցեն ձերինը, այնուհետև պահեք և գործարկեք ծրագիրը:

- ազատ զգալ փոփոխել և օպտիմալացնել ծրագիրը: Comesրագիրը գալիս է այնպիսին, ինչպիսին կա, ձեր սեփական ռիսկով օգտագործելու համար, որևէ պարտավորություն չի կրում որևէ վնասի համար:

Քայլ 2: Սարքը և ծրագիրը

Սարքը և ծրագիրը
Սարքը և ծրագիրը
Սարքը և ծրագիրը
Սարքը և ծրագիրը
Սարքը և ծրագիրը
Սարքը և ծրագիրը
Սարքը և ծրագիրը
Սարքը և ծրագիրը

Ինչպես նշվեց վերևում, գաղափարն այն էր, որ կառուցվեր պարզ և էժան համակարգ `փարոսից տվյալները կարդալու և թարթում թվային արժեքներ ցուցադրելու համար: HAT, կամ նման LED շերտ:

RPi համակարգով չափվող ջերմաստիճանի արժեքների միջակայքը շատ դեպքերում կլինի ինչ -որ տեղ `50 ° C- ից +80 ° C, խոնավությունը` 0 -ից 100%: Այսպիսով, ցուցադրումը, որը կարող է տալ արժեքներ -100 -ից +100 -ը, բավարար կլինի շատ ծրագրերի համար: 128 -ից փոքր տասնորդական թվերը կարող են ցուցադրվել որպես 7 բիթ (կամ LED) երկուական թվեր: Այսպիսով, ծրագիրը վերցնում է ջերմաստիճանի և խոնավության արժեքները RuuviTag- ից որպես «բոց» թվեր և դրանք վերածում երկուական թվերի, որոնք այնուհետև ցուցադրվում են blinkt!

Որպես առաջին քայլ, թիվը կլորացվում է, վերլուծվում է դրական, բացասական կամ զրոյի դեպքում, այնուհետև վերածվում է դրական թվի ՝ օգտագործելով «abs»: Այնուհետև տասնորդական թիվը վերածվում է 7-նիշանոց երկուական թվի, հիմնականում 0-երի և 1-երի տողի, որը վերլուծվում և ցուցադրվում է թարթման վերջին 7 պիքսելներում:

Temperatureերմաստիճանի արժեքների համար առաջին պիքսելը ցույց է տալիս, եթե արժեքը դրական է (կարմիր), զրո (մագենտա) կամ բացասական (կապույտ): Խոնավության արժեքները ցուցադրելով այն կանաչ է: Temperatureերմաստիճանի և խոնավության արժեքների միջև խտրականությունը պարզեցնելու համար երկուական պիքսելները ջերմաստիճանի համար սահմանվում են սպիտակ, իսկ խոնավության համար `դեղին: Երկուական թվերի ընթեռնելիությունը բարձրացնելու համար «0» պիքսելն ամբողջությամբ անջատված չեն, այլ փոխարենը դրված են շատ ավելի թույլ, քան «1» վիճակում: Ինչպես աչքով! պիքսելները շատ պայծառ են, կարող եք սահմանել ընդհանուր պայծառությունը ՝ փոխելով «պայծառ» պարամետրը

Programրագիրը ցուցադրում է գործընթացի արժեքներն ու մասերը նաև էկրանին: Բացի այդ, դուք կգտնեք մի քանի անջատված (#) հրահանգներ: Ես դրանք թողեցի, քանի որ դուք կարող եք դրանք օգտակար համարել գործընթացը հասկանալու համար, եթե այն անջատված է:

Արժեքները կարող են պահվել նաև տեղեկամատյանում:

Քայլ 3. Programրագրի ծածկագիրը

Կոդը մի փոքր կարգաբերված և օպտիմիզացված էր: Այժմ կարող եք գտնել 3 -րդ տարբերակը (20_03_2017):

«Այս ծրագիրը նախատեսված է կարդալու ջերմաստիճանի, խոնավության և ճնշման արժեքները, որոնք կազմում են RuuviTag» և ցուցադրում է ջերմաստիճանի և խոնավության արժեքները որպես երկուական թվեր Pimorini blinkt- ում: ՀԱԹ. '' '' Այն հիմնված է github- ում ruuvitag գրադարանի print_to_screen.py օրինակի վրա: '' Պահանջում է Pi Zero W, Pi 3 կամ ցանկացած այլ RPi `հագեցած bluetooth- ով և տեղադրված բոլոր անհրաժեշտ գրադարանները: '

ներմուծման ժամանակը

ներմուծել օպերացիոն տվյալները datetime- ից ներմուծել datetime

ruuvitag_sensor.ruuvi ներմուծումից RuuviTagSensor

blinkt ներմուծումից set_clear_on_exit, set_pixel, clear, show

def temp_blinkt (bt):

# այս ռեժիմը վերցնում է ջերմաստիճանի արժեքը և ցուցադրում այն որպես երկուական թիվ blinkt- ում:

պարզ ()

# 1 և «1» պիքսելների գույնը և ինտենսիվությունը ՝ սպիտակ

r1 = 64 g1 = 64 b1 = 64

#գույնը և «0» պիքսելների ինտենսիվությունը ՝ սպիտակ

r0 = 5 g0 = 5 b0 = 5

# Կլորացրեք և փոխարկեք ամբողջի

r = կլոր (bt)

# vz- ն ցույց է տալիս հանրահաշվական նշանը ցուցիչի պիքսելների համար

եթե (r> 0): vz = 1 # դրական էլիֆ (r <0): vz = 2 # բացասական այլ: vz = 0 # զրո # տպել (vz) i = abs (r) # տպել (i)

# փոխակերպել բացարձակ, 7 նիշանոց երկուական թվի

i1 = i + 128 # i- ի համար ստացվում է ութանիշ երկուական թիվ ՝ սկսած 1 # տպագրությամբ (i1)

b = "{0: b}". ձևաչափ (i1) # փոխակերպել երկուական

# տպագիր (բ)

b0 = str (b) # փոխակերպել տողի

b1 = b0 [1: 8] #կրճատել առաջին բիթը

տպել («երկուական համար ՝», b1)

# Տեղադրեք պիքսելները blinkt- ում:

# սահմանել երկուական համար

h- ի համար (0, 7). f = (h+1) եթե (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " է 1, պիքսել », զ) այլ ՝ set_pixel (f, r0, g0, b0) # տպել (« զրո »)

# Սահմանեք ցուցիչ պիքսել

if (vz == 1): set_pixel (0, 64, 0, 0) # կարմիր դրական արժեքների համար elif (vz == 2): set_pixel (0, 0, 0, 64) # կապույտ բացասական արժեքների դեպքում ՝ set_pixel (0, 64, 0, 64) # magenta եթե զրո

ցուցադրում()

# temp_blinkt- ի ավարտ ()

def hum_blinkt (bh):

# սա վերցնում է խոնավության արժեքը և ցուցադրում այն որպես երկուական թիվ blinkt- ում:

պարզ ()

# 1 և «1» պիքսելների գույնը և ինտենսիվությունը ՝ դեղին

r1 = 64 g1 = 64 b1 = 0

#գույնը և «0» պիքսելների ինտենսիվությունը.

r0 = 5 g0 = 5 b0 = 0

# Կլորացրեք և վերածեք ամբողջի

r = կլոր (bh)

# փոխակերպվել բացարձակ, յոթանիշ երկուական թվի i = abs (r) #print (i)

i1 = i + 128 # i- ի համար տալիս է 8-նիշանոց երկուական թիվ 1-ով սկսվող

# տպել (i1)

b = "{0: b}". ֆորմատ (i1)

# տպագիր (բ)

b0 = փող (բ)

b1 = b0 [1: 8] #կրճատել առաջին բիթը

տպել («երկուական համար ՝», b1)

# Պիքսել դրեք blinkt- ում:

# երկուական համարը դրեք պիքսելների վրա

h- ի համար (0, 7). f = (h+1) եթե (b1 [h] == "1"): set_pixel (f, r1, g1, b1) այլ ՝ # անջատել դատարկ LED- ների վրա set_pixel (f, r0, g0, b0) # անջատել դատարկ LED- ները

# Սահմանեք ցուցիչի պիքսել

set_pixel (0, 0, 64, 0) # կանաչ ՝ խոնավության համար

ցուցադրում()

hum_blinkt- ի # վերջ ()

set_clear_on_exit ()

# Տվյալների ընթերցում RuuviTag- ից

mac = 'EC: 6D: 59: 6D: 01: 1C' # Փոխեք ձեր սեփական սարքի mac հասցեն

տպել («Սկիզբ»)

տվիչ = RuuviTagSensor (mac)

իսկական True:

տվյալներ = sensor.update ()

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

line_tem = str.format ('peratերմաստիճանը `{0} C', տվյալները ['ջերմաստիճանը']) line_hum = str.format ('Խոնավությունը` {0} %', տվյալները ['խոնավությունը']) line_pre = str.format («Pressնշում. {0}», տվյալներ [«ճնշում»])

տպել ()

# ցուցադրման ջերմաստիճանը blinkt- ում: ba = str.format ('{0}', data ['temperature']) bt = float (ba) print (bt, "Â ° C") temp_blinkt (bt) print ()

time.sleep (10) # ցուցադրման ջերմաստիճանը 10 վայրկյան

# ցուցադրել խոնավությունը blinkt!

bg = str.format ('{0}', տվյալները ['խոնավություն']) bh = float (bg) print (bh, " %") hum_blinkt (bh) print ()

# Մաքրել էկրանը և տպել սենսորի տվյալները էկրանին

os.system ('clear') print ('Սեղմեք Ctrl+C `դուրս գալու համար: / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) տպել ('\ n / n / r …….')

# Սպասեք մի քանի վայրկյան և նորից սկսեք

փորձեք ՝ time.sleep (8) բացառությամբ Ստեղնաշարի Անընդհատ.

Խորհուրդ ենք տալիս: