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

Inky_pHAT Եղանակային կայարան ՝ 5 քայլ
Inky_pHAT Եղանակային կայարան ՝ 5 քայլ

Video: Inky_pHAT Եղանակային կայարան ՝ 5 քայլ

Video: Inky_pHAT Եղանակային կայարան ՝ 5 քայլ
Video: Inky pHAT test - Raspberry Pi Zero 2024, Նոյեմբեր
Anonim
Inky_pHAT եղանակային կայան
Inky_pHAT եղանակային կայան
Inky_pHAT եղանակային կայան
Inky_pHAT եղանակային կայան
Inky_pHAT եղանակային կայան
Inky_pHAT եղանակային կայան
Inky_pHAT եղանակային կայան
Inky_pHAT եղանակային կայան

Այստեղ ես կցանկանայի նկարագրել մի շատ պարզ և կոմպակտ, Raspberry Pi Zero եղանակային կայան, որը ցուցադրում է BME280 ջերմաստիճանի/ճնշման/խոնավության սենսորով չափված արժեքները Pimoroni Inky pHAT էլեկտրոնային թղթի/էլեկտրոնային թանաքի էկրանին: Սենսորների և pHAT- ի կապը Pi- ի GPIO- ին թույլատրելու համար տեղադրեցի Pimorini Pico HAT հաքերը ՝ GPIO- ի և ցուցադրման միջև ամրացված երկու կին վերնագրերով: Սարքն օգտագործվել է մի քանի սենսորներ ամրացնելու համար, այնպես որ այստեղ նկարագրված BME280 տարբերակը ընդամենը օրինակ է:

Ի տարբերություն LCD էկրանների, էլեկտրոնային թանաքով էկրանները պահում են պատկերը, նույնիսկ եթե հոսանքն անջատված է: Հետևաբար, դրանք շատ լավ լուծում են, եթե ցանկանում եք ցուցադրել տեղեկություններ, որոնք ժամանակ առ ժամանակ թարմացվում են, հատկապես ցածր էներգիայի սարքեր կառուցելու համար: Inky pHAT- ի միագույն/սև տարբերակի հիմնական առավելությունն այն է, որ էկրանը թարմացնելը տևում է ընդամենը մեկ վայրկյան ՝ եռագույն տարբերակներով պահանջվող տասից տասնհինգ վայրկյանի փոխարեն: Դիտել ֆիլմը:

Adafruit- ի Blinka գրադարանը թույլ է տալիս գործարկել Circuit Python ծածկագիրը Raspberry Pi- ի վրա, իսկ Adafruit- ից հասանելի են Circuit Python- ի նմուշներ սենսորների լայն տեսականիով: Blinka- ի և Circuit Python կոդերի տեղադրման մանրամասն նկարագրությունը կարելի է գտնել Adafruit կայքում: Մինչ այժմ իմ փորձարկած գրադարանները (BMP280, BME280, TSL2591, TCS34785, VEML7065,…) շատ լավ էին աշխատում, մինչդեռ որոշ կոդերում չնչին խնդիրներ կային:

BME280- ը ջերմաստիճան, խոնավություն և մթնոլորտային ճնշում չափելու տվիչ է: BMP280- ի ճեղքումները հասանելի են բազմաթիվ վաճառողներից, ներառյալ Adafruit- ը, բայց ես այստեղ օգտագործում էի էժան չինական տարբերակ: Խնդրում ենք տեղյակ լինել, որ դրանք օգտագործում են տարբեր i2c հասցեներ (Adafruit: 0x77, մյուսները `0x76):

Խզումը i2c- ով միացված է Pi- ին, և սենսորը կարդալը շատ պարզ է `օգտագործելով գրադարանը և օրինակելի կոդը:

Քայլ 1: Օգտագործված նյութեր

Օգտագործված նյութեր
Օգտագործված նյութեր
Օգտագործված նյութեր
Օգտագործված նյութեր
Օգտագործված նյութեր
Օգտագործված նյութեր
Օգտագործված նյութեր
Օգտագործված նյութեր

Raspberry Pi Zero, արական վերնագրով կցված: Բայց Raspberry Pi- ի ցանկացած տարբերակ կանի:

A Pimoroni Inky pHAT, սև/միագույն տարբերակ, 25 € | 22 £ | 20 ԱՄՆ դոլար, Պիմորոնիում:

A Pimoroni Pico HAT հաքեր, 2.50 € | 2 £, երկու կին վերնագրերով ամրացված, որոնցից մեկը ՝ ավելի երկար կապում վերնագիր: Ես կառուցել եմ երկու տարբեր տարբերակ, տես ստորև նկարագրությունը:

BME280 բեկում, AZ Առաքում Amazon.de @ 7.50 € -ով, վերնագիրն ամրացված է:

Elongation jumper մալուխներ

Լրացուցիչ:

USB հոսանքի փաթեթ, բջջային ծրագրերի համար

Pi- ի կամ սարքի համար նախատեսված բնակարան (այստեղ ցուցադրված չէ)

Քայլ 2: Հավաքում

Ժողով
Ժողով
Ժողով
Ժողով
Ժողով
Ժողով
  • Կնոջ վերնագրերը կպցրեք Pico HAT հակերին: Soldոդումից առաջ ստուգեք ճիշտ կողմնորոշումը: Ես կառուցել եմ դրա երկու տարբերակ ՝ տարբեր նպատակների համար: Մեկը ՝ ներքևի երեսին բարձրացնող վերնագրով, որը տեղադրված է առաջին շարքում և սովորական ՝ վերև/երեսպատված վերնագրով ՝ հետևի շարքում, և տարբերակ ՝ ներքևի ներքևի երեսպատող բարձրացնող վերնագրով ՝ հետևի շարքում, և աջ անկյան իգական վերնագրով ՝ առաջին շարքում. Տես պատկերներ: Առաջին տարբերակը թույլ է տալիս շատ հեշտությամբ կցել և փոխանակել տվիչներ և մալուխներ, մինչդեռ դեպի ներքև գտնվող վերնագրով տարբերակը թույլ է տալիս շրջափակել Pi- ն, սենսորը և Inky pHAT- ը պատյանում: Այլապես կարող եք GPIO- ն և սենսորը միացնող մալուխներն ուղղակիորեն զոդել Pico HAT հակերին և/կամ Pico HAT հաքերին ուղղակիորեն կպցնել GPIO կապում: Ամեն դեպքում օգտագործեք անհրաժեշտ զոդի նվազագույն քանակ:
  • Անհրաժեշտության դեպքում վերնագիրը կպցրեք սենսորին:
  • Տեղադրեք փոփոխված Pico HAT հաքերային միավորը Pi- ի վրա, այնուհետև ավելացրեք Inky pHAT- ը: Անհրաժեշտության դեպքում տեղադրեք որոշ աջակցություն, օրինակ. Փրփուր բլոկ կամ կանգառներ, Inky pHAT- ի համար:
  • Կցեք մալուխներն ու տվիչը ՝ օգտագործելով 3V, GND, SDA և SCL նավահանգիստները: Ոչ բոլոր սենսորները կդիմանան 5V- ի, ուստի խնդրում ենք ստուգել դրանք 5V նավահանգիստներին միացնելուց առաջ:
  • Տեղադրեք Blinka գրադարանը, այնուհետև Adafruit- ից տեղադրեք Circuit Python BME280 գրադարանը:
  • Տեղադրեք Inky pHAT գրադարանը Պիմորոնիից:
  • Տեղադրեք Python կոդը, որը նկարագրված է ավելի ուշ քայլում և կցված է այս հրահանգին:
  • Գործարկեք կոդը:

Քայլ 3: Սարքի օգտագործումը

Օգտագործելով Սարքը
Օգտագործելով Սարքը

Սարքը օգտագործելու երկու տարբերակ կա.

Ինչպես ցույց է տրված այստեղ, ծածկագիրը պետք է սկսվի կցված էկրանով, բայց այնուհետև կարող է աշխատել առանց դրա:

Կոդի աննշան փոփոխություններով դուք կարող եք օգտագործել crontab- ը չափումներ կատարելու սահմանված ժամանակային կետերում: Սա թույլ կտա էլ ավելի նվազեցնել էներգիայի սպառումը: Crontab- ի օգտագործման գերազանց նկարագրություններ կարելի է գտնել այլուր:

Էլեկտրահաղորդման տուփի հետ միասին կարող եք կառուցել բջջային սարք և օգտագործել այն չափելու համար պայմանները ներսում կամ դրսում, սառնարանում, սաունայում, ձեր խոնավացուցիչում, գինու նկուղում, ինքնաթիռում,…

Eroրոյական W- ի միջոցով դուք կարող եք ոչ միայն ցուցադրել արժեքները էկրանին, այլև դրանք ուղարկել սերվեր կամ ձեր վեբ կայք WLAN- ի միջոցով, ինչպես նկարագրված է այլուր:

Քայլ 4: BME280 սցենար

BME280 սցենար
BME280 սցենար

Ինչպես արդեն նշվեց, դուք պետք է տեղադրեք Adafruit Blinka և Circuit Python BME280 գրադարանները, ինչպես նաև Pimoroni Inky pHAT գրադարանը:

Կոդը նախ սկզբնավորում է սենսորը և Թանաքային pHAT- ը, այնուհետև կարդում է սենսորից ջերմաստիճանի, ճնշման և խոնավության արժեքները և ցուցադրում դրանք էկրանին և էլեկտրոնային թանաքի էկրանին: Օգտագործելով time.sleep () հրամանը, չափումները կատարվում են ամեն րոպե: Կարգավորեք, ինչպես պահանջվում է: Լեզվի պարամետր սահմանելով ՝ կարող եք փոխել արդյունքները ցուցադրելու համար օգտագործվող լեզուն:

Օգտագործելով Inky pHAT էլեկտրոնային թանաքի էկրանը, դուք նախ կառուցում եք պատկերը, որը կցուցադրվի հիշողության մեջ, նախքան այն վերջապես էկրանին փոխանցելը `օգտագործելով inkyphat.show () հրահանգը: Inky pHAT գրադարանը պարզեցնում է գործընթացը ՝ առաջարկելով տեքստ, գծեր, ուղղանկյուններ, շրջանակներ նկարելու և ձևավորելու կամ ֆոնային պատկերներ օգտագործելու հրամաններ:

Չափված արժեքներից բացի, ցուցադրվում է նաև չափման ժամանակը:

Խնդրում ենք նկատի ունենալ, որ սցենարը, ինչպես նաև գրադարանները գրված են Python 3 -ում, այնպես որ բացեք և գործարկեք Py3 IDLE- ի կամ համարժեքի միջոցով:

# Սցենար bme280 ջերմաստիճանի/ճնշման/խոնավության տվիչի համար (ոչ Adafruit տարբերակ) # և թանաքային pHAT - սև տարբերակ # # տարբերակ 01 Դեկտեմբեր 2018, բժիշկ H # # Պահանջում է Adafruit Blinka և Circuit Python BME280 գրադարաններ # և Pimoroni Inky pHAT գրադարան ներմուծման ժամանակ ներմուծման օր ժամաթերթ 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Ընտրել ստանդարտ տառատեսակ 2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Ընտրել ստանդարտ տառատեսակի տվյալներ # lang = "DE" # սահմանել լեզվի պարամետր, լռելյայն ("") -> անգլերեն lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, հասցե = 0x76) # լռելյայն i2c հասցե (Adafruit BMP280- ի համար) 0x77 (կանխադրված), 0x76 չինական ճեղքման համար) # սահմանել հղման ճնշում # պահանջվում է ալ տիտղոսի հաշվարկ, խնդրում եմ ճշգրտել: Ստանդարտ արժեքը 1013.25 hPa # ձեռքով մուտքագրում ՝ #reference_hPa = մուտքագրում («Մուտքագրեք հղման ճնշումը hPa- ում.») # Կամ # սկզբնական պահին որպես ճնշում նշեք ճնշումը, օրինակ. հարաբերական բարձրության չափման ժամանակի համար. քուն (1) # 1 վայրկյան սպասել 1 -ին չափումից առաջ j = 0 pres_norm_sum = 0 մինչդեռ j միջակայքում (5). 1 time.sleep (1) reference_hPa = (pres_norm_sum/j) # սահմանել սկզբնական չափումը որպես հղման կետ բարձրության չափումները թույլ տալու համար bmp.sea_level_pressure = float (reference_hPa) print () while True: արժեքներ t = bmp.temperature p = bmp.pressure h = bmp.humidity a = bmp.altitude # հաշվարկվում է adafruit գրադարանի կողմից ճնշումից # timestamp ts = datetime.datetime.now () # timestamp ts0_EN = '{:%Y-% m-%d} '. format (ts) # timestamp - date, EN format ts0_DE =' {:%d.%m.%Y} '. format (ts) # timestamp - date, German format ts1 =' {: %H:%M:%S} '. Format (ts) # timestamp - time tmp = "{0: 0.1f}". Format (t) pre = "{0: 0.1f}". Format (p) hyg = "{0: 0.1f}". Ձևաչափ (ը) alt="{0: 0.1f}". Ձևաչափ (ա) tText = "Տեմպ.:" pText_EN = "Pressնշում." PText_DE = "Luftdruck:" h Text_EN = "Խոնավություն." HText_DE = "rel. LF: "aText_EN =" Բարձրություն. "AText_DE =" Höhe üNN: " # exakt: ü. NHN, über Normal Höhen Null if (lang ==" DE "): ts0 = ts0_DE aText = aText_DE pText = hText_DExt = hText_DE = այլ ՝ # լռելյայն անգլերեն ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # տպման արժեքներ տպագիր (ts) տպագիր (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, " %") print (aText, alt, "m") print () # print values to Inky pHAT t1 = 5 # tab 1, frist սյունակ, պարզեցնում է դասավորության օպտիմալացումը t2 = 110 # ներդիր 2, երկրորդ սյունակի ներկված: clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # գրել ժամանակացույցի ամսաթիվը inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # գրել timestamp time inkyphat.line ((t1, 25, 207, 25), 1, 3) # գծեք inkyphat.text ((t1, 30), tText, inkyphat. BLACK, font2) inkyphat.text ((t2, 30), (tmp + "° C"), inkyphat. BLACK, font2) inkyphat.text ((t1, 55), pText, inkyphat. BLACK, font2) inkyphat.text ((t2, 55), (pre + "hPa"), inkyphat: ՍԵՎ, տառատեսակ 2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + " %"), inkyphat. BLACK, font2) # այլընտրանք ցուցադրել հաշվարկված բարձրությունը # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # հաջորդ չափումներից մի քանի վայրկյան սպասեք, +19 վրկ մեկ ցիկլի համար inkyphat.clear () # դատարկ Inky pHAT ցուցադրման ընթացակարգ, inkyphat.show () # լռություն crontab- տարբերակի համար

Քայլ 5: BMP280 սցենարը

BMP280- ը շատ նման է BME280 սենսորին, բայց պարզապես չափում է ջերմաստիճանը և ճնշումը: Սցենարները շատ նման են, բայց ձեզ անհրաժեշտ են տարբեր Circuit Python գրադարաններ: Այստեղ խոնավության փոխարեն ցուցադրվում է հաշվարկված բարձրությունը ՝ հիմնված հղման ճնշման վրա:

Կից գտնում եք սցենարը:

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