Բովանդակություն:
Video: RuuviTag և PiZero W և Blinkt! Bluetooth փարոսի վրա հիմնված ջերմաչափ ՝ 3 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Այս ձեռնարկը նկարագրում է 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) բացառությամբ Ստեղնաշարի Անընդհատ.
Խորհուրդ ենք տալիս:
Օգտագործեք սմարթֆոնը որպես ոչ կոնտակտային ջերմաչափ / շարժական ջերմաչափ ՝ 8 քայլ (նկարներով)
Օգտագործեք սմարթֆոնը որպես ոչ կոնտակտային ջերմաչափ / շարժական ջերմաչափ. Մարմնի ջերմաստիճանի չափում ոչ կոնտակտային / անհպում, ինչպես թերմո ատրճանակը: Ես ստեղծեցի այս նախագիծը, քանի որ Thermo Gun- ը այժմ շատ թանկ է, ուստի ես պետք է այլընտրանք ստանամ DIY պատրաստելու համար: Եվ նպատակը ցածր բյուջետային տարբերակով պատրաստելն է: ՄատակարարումներMLX90614Ardu
Arduino- ի վրա հիմնված թվային ջերմաչափ `3 քայլ
Arduino- ի վրա հիմնված թվային ջերմաչափ. Այս նախագծում նախագծված է Arduino- ի վրա հիմնված թվային ջերմաչափ, որը կարող է օգտագործվել սենյակի ջերմաստիճանը վերլուծելու համար: thermերմաչափը հիմնականում օգտագործվում է որպես ջերմաստիճանի չափման գործիք: Կան տարբեր սկզբունքներ, որոնցով կարելի է չափել
Arduino- ի վրա հիմնված ոչ կոնտակտային ինֆրակարմիր ջերմաչափ - IR- ով հիմնված ջերմաչափ Arduino- ի միջոցով. 4 քայլ
Arduino- ի վրա հիմնված ոչ կոնտակտային ինֆրակարմիր ջերմաչափ | IR- ով հիմնված ջերմաչափ Arduino- ի միջոցով. Բարև ձեզ, այս հրահանգների մեջ մենք կդարձնենք ոչ կոնտակտային ջերմաչափ arduino- ով: Քանի որ երբեմն հեղուկի/պինդի ջերմաստիճանը չափազանց բարձր է կամ ցածր, ապա դժվար է դրա հետ կապ հաստատել և կարդալ այդ դեպքում ջերմաստիճանը
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր). 4 քայլ (նկարներով)
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 Based Midi Generator). Բարև, այսօր ես կբացատրեմ, թե ինչպես պատրաստել ձեր սեփական եղանակի վրա հիմնված փոքր երաժշտության գեներատոր: Այն հիմնված է ESP8266- ի վրա, որը նման է Arduino- ին և արձագանքում է ջերմաստիճանին, անձրևին: և լույսի ուժգնություն: Մի ակնկալեք, որ այն ամբողջ երգեր կամ ակորդներ կհաղորդի
Ինչպես միացնել MicroPython- ի որոնվածը ESP8266- ի վրա հիմնված Sonoff խելացի անջատիչի վրա. 3 քայլ (նկարներով)
Ինչպե՞ս միացնել MicroPython- ի որոնվածը ESP8266- ի վրա հիմնված Sonoff խելացի անջատիչի վրա. Այդ գծից ամենաճկուն և էժան սարքերից են Sonoff Basic- ը և Sonoff Dual- ը: Սրանք Wi-Fi- ով միացված անջատիչներ են ՝ հիմնված հիանալի չիպի ՝ ESP8266- ի վրա: Մինչդեռ