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

Վերադարձ դեպի ապագա ժամացույց. 8 քայլ (նկարներով)
Վերադարձ դեպի ապագա ժամացույց. 8 քայլ (նկարներով)

Video: Վերադարձ դեպի ապագա ժամացույց. 8 քայլ (նկարներով)

Video: Վերադարձ դեպի ապագա ժամացույց. 8 քայլ (նկարներով)
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, Նոյեմբեր
Anonim
Վերադարձ դեպի ապագա ժամացույց
Վերադարձ դեպի ապագա ժամացույց

Այս նախագիծը սկսեց կյանքը որպես զարթուցիչ իմ որդու համար: Ես այնպես արեցի, որ նման լինի «Հետ դեպի ապագա» ժամանակային շղթային: Theուցադրումը կարող է ցույց տալ ժամանակը տարբեր ձևաչափերով, ներառյալ ֆիլմերից, իհարկե: Այն կարող է կարգավորվել պարիսպի վերևում գտնվող կոճակների միջոցով, ինչպես նաև ներսում Raspberry Pi Zero- ի կողմից սպասարկվող վեբ էջի միջոցով: Theուցադրման ռեժիմներից մեկում այն կցուցադրի տեղական եղանակը (իմ Arduino- ով աշխատող եղանակային կայանից), ինչպես նաև կանխատեսումն ու ամենօրյա հիշեցումները, որոնք կազմաձևված են վեբ ինտերֆեյսի միջոցով: Այն նաև աուդիո ունի DAC- ի շնորհիվ և երաժշտություն կհեռարձակի ՝ օգտագործելով AirPlay արձանագրությունը: Theարթուցիչի ձայնը կարող է լինել ձեր ընտրած ցանկացած աուդիո ֆայլ: Այն ավտոմատ կերպով լուսավորելու և լուսավորելու է ցուցադրումը օրվա տվյալ ժամերին (օրինակ ՝ լուսաբաց և մայրամուտ):

Քայլ 1: Նախապատմություն

Անցյալ տարի ես փնտրում էի Arduino- ի նոր նախագիծ ՝ վերջերս ավարտելով իմ առաջին նախագիծը ՝ տնային եղանակային կայանը: Իմ 11-ամյա որդին նոր էր առաջին անգամ դիտել «Վերադարձ դեպի ապագա» ֆիլմերը, ուստի ես մտածեցի, որ զվարճալի կլինի նրան զարթուցիչ սարքել, որը նման էր իր ծննդյան տարեդարձի Դելորեանի ժամանակային շղթային: Սա նոր գաղափար չէ, կան բավականին շատ նմանատիպ նախագծեր (օրինակ ՝ այս մեկը), ուստի ես մտածեցի, որ դա լավ նախագիծ կլինի սովորել ուրիշներից և նոր հմտություններ ձեռք բերել:

Առաջին տարբերակը բավականին լավ աշխատեց (այն պատրաստ չէր նրա ծննդյան տարեդարձին. Ես դա արեցի մինչև Սուրբ Christmasնունդ), բայց ես բավականին հավակնոտ դարձա այն, ինչ ուզում էի, և գտա, որ իմ ուրվագիծը շարունակում է բախվել Arduino- ի հիշողության սահմանին: Ես ունեի նաև մի քանի փոքր արտաքին ապարատային մոդուլներ (WiFi, MP3 նվագարկիչ, աուդիո ուժեղացուցիչ, RTC և այլն), ուստի ամեն ինչ մի փոքր անշուք էր դառնում: Ի վերջո, ես որոշեցի տեղափոխվել Raspberry Pi հարթակ, որը պարզեցրեց սարքավորումները և թույլ տվեց ինձ փաթեթավորել շատ ավելի ֆունկցիոնալ և հնարավորություններ:

Քայլ 2: Հիմնական ապարատային բաղադրիչներ

Տուփի ներսում

Ահա իմ օգտագործած էլեկտրոնային բաղադրիչները: Դրանցից շատերը աղբյուրներ էին Ավստրալիայի Core Electronics- ից, բայց, իհարկե, դրանք մատչելի են նաև այլուր.

  • 4 x Quad Alphanumeric Display -դեղին -կանաչ
  • Ազնվամորի Pi Zero W
  • Pimoroni pHAT DAC ազնվամորի Pi Zero- ի համար
  • Աուդիո ուժեղացուցիչ (PAM8403 IC)
  • Raspberry Pi 3+ էլեկտրամատակարարում
  • 4 x Jumper մետաղալար - 0.1 ", 5 -փին, 12"
  • 40 փին (2 x 20) ժապավենի մալուխ
  • Raspberry Pi GPIO արական վերնագիր
  • Raspberry Pi Model B - GPIO ծածկված վերնագիր (2X20)
  • GPIO Stacking Header Pi A+/B+/PI 2/PI 3 - լրացուցիչ երկար 2X20
  • 4 x 5 փին արական վերնագիր
  • 2 փոքր 3W բարձրախոս
  • 2 x coaxial մալուխներ DAC- ի և AMP- ի անալոգային աուդիո միացման համար
  • Veraboard կամ անհատական PCB ՝ Rpi- ն ուժեղացուցիչի, LED- ի, կոճակների հետ աշխատելու համար
  • 5 x ակնթարթային անջատիչ
  • 4 x երկկողմանի PCB- ով տեղադրվող պտուտակային տերմինալային բլոկներ

Տուփը

  • MDF- ի կտորներ, պտուտակներ և պտուտակներ `« շասսի »ստեղծելու համար
  • Կանաչ երանգավորված perspex, տեղական մատակարար
  • Ստիրոլ, մոդելավորման սոսինձ, լակի ներկ (ալյումինե գույն) տեղական հոբբիի խանութից
  • Կպչուն պիտակներ (ֆայլը հասանելի է ըստ պահանջի - տպված է Redbubble- ի կողմից)

Քայլ 3: Ամեն ինչ միասին դնելը

Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը

Displayամացույցի լուսադիոդային էկրանը բաղկացած է 16x14 հատվածից բաղկացած այբբենական թվային էկրաններից, բարեբախտաբար նույն թվով նիշերով, ինչ «Հետ դեպի ապագա» ժամանակաշրջանը: Թեև միայն առաջին երեք նիշերը պետք է լինեն այբբենական, իսկ մնացածը կարող են լինել 7 հատվածից բաղկացած թվային ցուցադրումներ ՝ ֆիլմի սցենարը նմանեցնելու համար, ես որոշեցի դրանք բոլորը դարձնել այբբենական, ինչը թույլ կտա որոշակի ճկունություն ցուցաբերել ցուցադրվողի մեջ և պահել նրանց բոլորին տեսքը նույնը Adafruit քառաթև ուսապարկերն այստեղ հիանալի լուծում են և կարող են գործարկվել Raspberry Pi- ի I2C ավտոբուսով: Այս միավորների և դրանց միացման եղանակների մասին լրացուցիչ տեղեկություններ կարելի է գտնել այստեղ ՝ Adafruit- ի կայքում: Միակ ոչ ստանդարտ բանը, որ պետք է անեի, դա նրանցից երեքի հասցեները փոխելն էր, որպեսզի յուրաքանչյուր ուսապարկ յուրահատուկ լիներ:

Աուդիո նվագարկելու համար (ստերեո) ես ներառեցի Pimoroni pHAT DAC- ը և 2 x 3W ստերեո աուդիո ուժեղացուցիչ ՝ հիմնված PAM8403 չիպի վրա: PHAT DAC- ն իսկապես հեշտ է միացնել Pi- ին: Pi- ի վրա դրեցի 2 x 20 փին արական վերնագիր և DAC- ի վրա GPIO- ի վրա տեղադրվող վերնագիր, որպեսզի դրանք կարողանան միացվել մյուսին: Տղամարդու վերնագրի քորոցները անցնում են DAC- ի վերևով, ինչը թույլ է տալիս ինձ միացնել ժապավենային մալուխը կին միակցիչներով, սկզբում Raspberry Pi- ի ճեղքվածքի համար `տախտակի փորձարկման համար, իսկ վերջում` պատվերով պատված PCB- ի վրա ծածկված վերնագրով:

Աուդիո ուժեղացուցիչի համար կան բազմաթիվ տարբերակներ (ներառյալ պարզապես չիպը ձեռք բերելը և ձեր սեփականը հավաքելը): Այս մեկն ունի ելքը խլացնելու տարբերակ ՝ պարզապես փոխելով կապանքներից մեկի վիճակը (բարձրը միացված է, ցածրը անջատված է), և ես այն լարեցի, որպեսզի այն վերահսկվի Pi- ից: Սա հաղորդակցելու իմ սկզբնական փորձերում ես հայտնաբերեցի բավականին մեծ ֆոնային աղմուկ, երբ ձայնը միացված էր: Հիմնավորման հետ շատ խաղալուց հետո, ի վերջո, ես փորձեցի մուտքի մատակարարման լարումը Pi- ի 5V- ից տեղափոխել 3.3V, և դա շտկեց այն: Ենթադրում եմ, որ բավականին մեծ աղմուկ է առաջանում շուրջբոլորը թռչող թվային ազդանշանների պատճառով, բայց թվում է, որ 3.3 Վ հոսանքը ինչ -որ կերպ մեկուսացված է:

Այլ միացումներ ներառում են անալոգային աուդիո DAC- ից մինչև ուժեղացուցիչ (ես այստեղ օգտագործել եմ կոաքսիալ մալուխ ՝ աղմուկի բարձրացումը կառավարելու համար) և աուդիո թողարկում զույգ փոքր 3W բարձրախոսներին, որոնք տեղավորվում են պարիսպում: Կան նաև GPIO միացումներ տուփի վերևում գտնվող չորս ակնթարթային անջատիչների համար, և ես միացրի մի ակնթարթային կոճակ կոշտ վերականգնման «RUN» կապում (տես այս էջի Լրացուցիչ կապեր բաժինը): Վերակայման կոճակը տեղադրված է պարիսպի հետևի մասում ՝ տեսադաշտից դուրս: Ահա միացում, որը ցույց է տալիս կապերը.

Քայլ 4: Պատվերով PCB

Պատվերով PCB
Պատվերով PCB

Շրջանակի մեջ շատ բարդ բան չկա, բայց բավականին շատ էլեկտրագծեր կան, և տախտակը բավականին արագ սպագետտիի տեսք ունի: Այսպիսով, ես նախագծեցի PCB ՝ այդ ամենը վերահսկողության տակ պահելու համար: Դա տան պատրաստման միակողմանի տախտակ է, և ես ընկեր ունեմ, որը կօգնի պատրաստել այն: Այն պատրաստվելուց և լարվելուց հետո ես հասկացա, որ մոռացել եմ ներառել աուդիոյի տերմինալային բլոկների միացումները, և ես հետագայում փոփոխություն կատարեցի ՝ ձայնային ուժեղացուցիչի հոսքը 5 Վ -ից տեղափոխելու 3.3 Վ, ուստի դա իդեալական չէ, և ես ստիպված էի միացնել այն: որոշ Veroboard թույլ է տալիս ձայնային կապերը: Բացի այդ, աուդիո ուժեղացուցիչի տախտակի քորոցները գտնվում են ոչ ստանդարտ տարանջատման մեջ (դրանք նույնիսկ տարբերվում են կապումների միջև), ուստի դրա հիմնական PCB- ի հետ կապը մի փոքր սարսափելի է `11 կարճ ~ 1 սմ կարճ միացման լարերով:

Եթե ես այլ տախտակ պատրաստեի, կներառեի այս բոլոր փոփոխությունները և նաև չորս կոճակների միակցիչը կփոխեի մի փոքր ավելի լավ բանի: DAC- ն և Pi- ը կտեղադրվեն հենց վերևում, այնպես որ ժապավենի մալուխի կարիք չկա: Վերը նշված դիագրամը ցույց է տալիս, թե ինչ տեսք կարող է ունենալ այն:

Քայլ 5: Շրջանակը

Պարիսպը
Պարիսպը
Պարիսպը
Պարիսպը
Պարիսպը
Պարիսպը

Ես ուզում էի մի պարիսպ պատրաստել, որը նման լիներ ֆիլմի ժամանակային շրջանի մեկ շարքին: Երեք տող LED էկրաններ չափազանց շատ կլինեին զարթուցիչի համար և զգալիորեն կավելացնեին ինքնարժեքը: Ես մտածում էի պարիսպը ալյումինից պատրաստելու մասին, բայց ես ոչ մի հմտություն չունեմ այդ ոլորտում: Ես իմ կյանքում բավականին պլաստմասե մոդելներ եմ պատրաստել և փայտամշակման փորձ ունեմ, ուստի որոշեցի MDF- ով շրջանակ պատրաստել LED- ները և բարձրախոսները ամրացնելու համար, իսկ պերսպեքսը ամրացնել առջևում, այնուհետև այն ծածկել 5 կողմի ստիրոլով: տուփ ՝ առջևի եզրով, ներկված ալյումինե մետաղական լակի ներկով: Պլաստիկը և ներկը ձեռք են բերվել տեղական մոդելային խանութից: Ես ուշադիր նայեցի ֆիլմի հենարանի պիտակներին և ամեն ինչ արեցի ՝ պատճենելու գույները, տառատեսակի տեսակը և չափը: Ես պիտակներ ստեղծելու համար օգտագործեցի Photoshop- ը և դրանք տպեցի որպես Redbubble- ի կպչուն պիտակներ:

Վերևում պատկերները ցույց են տալիս.

  1. MDF շասսիի ճակատը: 4 լուսադիոդային ուսապարկերը տեղադրված են առջևում ՝ կանաչ երանգով պերսպեքսով
  2. Տուփի ներսում: Բոլոր ուսապարկերը տեղադրված և շարված են, Raspberry Pi և անհատական PCB ներս, երկու կողմից բարձրախոսներ:
  3. Տեղադրված և արտաքին պատյանները պատրաստ են շարունակել: Դա մի փոքր սեղմում էր:

Քայլ 6: Ազնվամորու Pi- ի կարգավորում

Ես որոշ համատեղելիության խնդիրներ ունեի Raspbian Stretch- ի հետ (որոնք գուցե լուծելի լինեին, եթե համառեի), բայց essեսսին դրա հետ լավ է աշխատում, ուստի որոշեցի գնալ դրանով:

Ես Pi- ն ստեղծեցի որպես անգլուխ միավոր ՝ VNC և SSH մուտքով: Դա կարող էր արվել առանց ստեղնաշարի կամ մոնիտորի միացման, բայց ես պարզապես վերցրեցի հեռուստացույցը և մաքրեցի ստեղնաշարը, և այն արագորեն գլխատվեց: Այդ ժամանակից ի վեր, ես այդուհետև բավականին շատ օգտագործեցի VNC:

Իմ ժամացույցի կոդն օգտագործում է Python 2.7.9 և հիմնված է մի քանի գրադարանների վրա, որոնք թվարկված են ստորև: Բացի այդ, ես վարում եմ Flask վեբ սերվեր և MQTT հեռակառավարման համար և Shairplay ՝ երաժշտության հոսքի համար: Ես պարզապես հետևեցի այս բոլորի առցանց տեղադրման նշումներին և ընդհանրապես խնդիրներ չունեի: Ահա python գրադարանները և այլ փաթեթներ և այլն, որոնք ես պետք է տեղադրեի տեղադրման նշումների հղումներով կամ պարզապես այն ստանալու համար անհրաժեշտ հրամանով.

Python գրադարաններ

  • Adafruit_LED_Backpack
  • Rpi. GPIO (apt-get install python-rpi.gpio)
  • ալսաաուդիո
  • paho.mqtt.client (pip install paho-mqtt)
  • շիշ (apt-get install python-flask)

Այլ փաթեթներ և այլն

  • մոծակ (apt-get տեղադրել մոծակ)
  • shairport
  • Pimoroni վեբ կայքը ունի մի քանի լավ փաստաթղթեր DAC- ի ստեղծման վերաբերյալ, այնպես որ ես պարզապես վազեցի դրա հետ:

Քայլ 7:.րագրակազմ

Image
Image
Ծրագրային ապահովում
Ծրագրային ապահովում

Theամացույցի ծածկագիրը գրված է Python- ում և օգտագործում է թելեր ՝ ազդանշանը նվագարկելու համար, իսկ երբեմն հետզհետե ձայնը հնչում է հետին պլանում ՝ առանց ցուցադրման թարմացումները արգելափակելու: Ես օգտագործեցի ConfigParser գրադարանը, և այն պահող կազմաձևման ֆայլը կարդացվում և գրվում է ժամացույցի կոդով, ինչպես նաև Flask վեբ հավելվածով, այնպես որ, երբ կոնֆիգուրացիան փոխվում է վեբ ինտերֆեյսի կամ ժամացույցի միջոցով, այն համաժամացվում է: Theամացույցի ծրագրակազմը ներառում է նաև MQTT միջնորդ, որը թույլ է տալիս վերահսկել ցուցադրման ռեժիմը և խլացնելը վերահսկել հեռակա կարգով: Իմ հետին դրդապատճառը, ի վերջո, հեռակառավարման համար iOS ծրագիր գրելն է, բայց վեբ ինտերֆեյսը առայժմ բավական լավ է աշխատում:

Վերևի առաջին պատկերը ցույց է տալիս, թե ինչպես է ժամացույցը ցուցադրվում իր ցուցադրման տարբեր ռեժիմներում, և կա կարճ տեսանյութ, որը ցույց է տալիս այն ոլորման ռեժիմում:

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

Վեբ հավելվածը

Հաջորդ պատկերը ցույց է տալիս, թե ինչ տեսք ունի ժամացույցի վեբ ինտերֆեյսը: Կան նաև կազմաձևման և վերահսկման էջեր, և դրանք շատ ավելի հեշտ են դարձնում ժամացույցի հետ խաղը ՝ առանց կոճակների բազմանման:-):

Քայլ 8: Ի՞նչ հաջորդ

Ի՞նչ հաջորդ
Ի՞նչ հաջորդ

Կա Python shareport մետատվյալների ապակոդավորիչ, այնպես որ, կարծում եմ, ես մի քանի կոդ կավելացնեմ ՝ երաժշտության նվագարկման ժամանակ տեղեկություններ ցուցադրելու համար, ինչպիսիք են վերնագիրը և կատարողը: Նաև բավականին հեշտ կլիներ հաշվարկել արևածագի և մայրամուտի ժամանակները, որպեսզի էկրանն ինքնաբերաբար լուսավորվի և լուսավորվի, այլ ոչ թե ձեռքով կարգավորվի: Գուցե ինտերնետային ռադիոյի գործառույթ ավելացնելը նույնպես հաճելի կլինի: Պտտվող էկրանը կարող է նաև ավելի կարգավորելի լինել:

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