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

PixelWall: 7 քայլ (նկարներով)
PixelWall: 7 քայլ (նկարներով)

Video: PixelWall: 7 քայլ (նկարներով)

Video: PixelWall: 7 քայլ (նկարներով)
Video: Pixel Wall 2024, Սեպտեմբեր
Anonim
PixelWall
PixelWall

Գիտե՞ք Pixel-Table նախագիծը: Ես գաղափար ունեի գիտակցել նման պիքսելային բան, բայց ոչ որպես սեղան, փոխարենը այն պատին դնելու համար:

Որպեսզի կարողանամ պառկել բազմոցին և հանգստանալիս մի քանի խաղ խաղալ դրա վրա::)

Իրականացված խաղերն են ՝

  • Tetris
  • Տիեզերական զավթիչներ
  • Օձ
  • Pixel Draw

լրացուցիչ գործառույթներն են.

  • Showույց տալ ընթացիկ ժամանակը
  • Showույց տալ գունային անիմացիաները

PixelWall- ն ունի ESP8266, որպեսզի կարողանա միանալ իմ տան WLAN- ին: Բայց հնարավոր է նաև օգտագործել PixelWall- ը որպես մուտքի կետ և անմիջապես միանալ դրան:

Իմ PixelWall- ի օգտագործումը դյուրին դարձնելու համար պատը միացումից հետո վեբ կայք է տալիս վերահսկողության համար: Բոլոր sրագրերը վերահսկելի/նվագարկելի են վեբ էջի միջոցով: Այսպիսով, օգտագործման համար որևէ ծրագրային ապահովում պարտադիր չէ:

Բացի այդ, կա NES վերահսկիչ, որն ավելի հեշտ է դարձնում խաղերը:

Բաց աղբյուր

Բոլոր ծրագրային և մեխանիկական գծագրերը, որոնք տեղադրեցի github- ում. Https://github.com/C3MA/PixelWallFeel ազատ օգտագործեք այն ձեր սեփական նախագծի համար:

Քայլ 1: Սկսեք էլեկտրոնիկայից

Սկսած էլեկտրոնայինից
Սկսած էլեկտրոնայինից
Սկսած էլեկտրոնայինից
Սկսած էլեկտրոնայինից
Սկսած էլեկտրոնայինից
Սկսած էլեկտրոնայինից

Մեկ այլ նախագծից գոյություն ունի PCB ՝ WS2812 LED- ով: PCB- ն ունի 3 տող `յուրաքանչյուր LED- ի 12 LED- ով:

Ես որոշեցի օգտագործել այս PCB- ն 6 անգամ: Այսպիսով, ես ստանում եմ 12x18 LED մատրիցա:

Առաջին քայլն այն էր, որ բոլոր 216 LED- ները, մոտ 100 կոնդենսատորները և ESP8266- ը միացվեն:

Ձեռքով զոդման համար անհրաժեշտ էր մոտ 10 ժամ:

Առաջին արագ փորձարկումից հետո պարզվեց. Ամեն ինչ աշխատում է:

Այսպիսով, մենք կարող ենք գնալ մեխանիկական մաս:

Քայլ 2: Մեխանիկի ստեղծում

Մեխանիկի ստեղծում
Մեխանիկի ստեղծում
Մեխանիկի ստեղծում
Մեխանիկի ստեղծում
Մեխանիկի ստեղծում
Մեխանիկի ստեղծում
Մեխանիկի ստեղծում
Մեխանիկի ստեղծում

Առաջին հերթին մեզ անհրաժեշտ է յուրաքանչյուր պիքսելի համար անջատիչ: Գաղափարն այն է, որ հորիզոնական և ուղղահայաց գոտին V- կտրվածքի միջոցով միասին դնենք:

Յուրաքանչյուր ժապավեն ունի 3 մմ հաստություն և 17 մմ բարձրություն: Նրանք կտրված են HDF ափսեից ՝ լազերահատի միջոցով:

Լազերահատի բոլոր գծագրերը գծված են FreeCad- ում («Leiste» անվանումով github նախագծի մեխանիկական թղթապանակում)

Theանցը տրվում է PCB- ի դասավորությամբ: Այն ունի 28 մմ սյունակի լայնություն և 31 մմ շարքի բարձրություն:

Հաջորդ հարցը հետևյալն է. Կպչելը այնքան էլ լավ գաղափար չէ, քանի որ այն պետք է հնարավոր լինի քանդել, եթե ինչ -որ բան թերի է: Այսպիսով, ես որոշեցի այն քանդել: Բայց պտուտակը կբաժանի 3 մմ բարակ ժապավենը: Այսպիսով, ես 3D տպիչով տպեցի խմբի գրպանը (սա github նախագծում «Halter» անվանումով հատվածն է): Սա բավականին լավ աշխատեց դրանք PCB- ի վրա շտկելու համար:

Հաջորդ քայլը դրա համար շրջանակ ստանալն է: Կան առցանց խանութներ, որոնք առաջարկում են կտրել անհատական նկարների շրջանակներ: Այսպիսով, ես պատվիրեցի շրջանակ ՝ 343 մմ x 565 մմ չափսերով:

Շրջանակը լրացուցիչ փոս է ստանում ներքևի մասում ՝ էլեկտրամատակարարման համար:

Պլեքսիգլասի առջևի ափսեը ես նույնպես պատվիրեցի առցանց: Դա WN770 օպալ Milchglasoptik LD45% չափ ՝ 567x344x2 մմ

Այն ունի 45%կիսաթափանցիկություն:

Բոլոր մասերը միասին դնելով շրջանակի մեջ:

Վերջում պտտվելու են մի քանի շերտեր դեպի հետևը, այնպես որ ամեն ինչ ամրագրված է և չի կարող ընկնել:

Առանց WLAN կապի pixelWall- ի գործունակության տարբերակ ունենալու համար ես ստեղծեցի խափանվող կառավարման վահանակ, որը կարող է ընտրովի տեղադրվել շրջանակի աջ կողմում (github նախագծում կոչվում է «Bedieneinheit»):

Քայլ 3. Softwareրագրակազմ - հիմունքներ

Softwareրագրային ապահովում - հիմունքներ
Softwareրագրային ապահովում - հիմունքներ

Օգտագործման դեպքերից մեկը խաղեր խաղալ PixelWall- ով:

Բայց պիքսելային խաղ գրելիս միշտ անհրաժեշտ կլինի կարգաբերման օգտակար միջավայր: Ես չգիտեմ ESP8266 կարգավորիչը համապատասխան եղանակով կարգաբերելու որևէ եղանակ: Այսպիսով, ես որոշեցի մոդելավորել ամբողջ կոդը իմ համակարգչի վրա: ESP կոդը գրված է Arduino C ++ - ով, այնպես որ ես համակարգչում մոդելավորման համար օգտագործել եմ Visual Studio C ++/CLI լեզու: Կան որոշակի տարբերություններ ստանդարտ C ++ և C ++/CLI լեզուների միջև: Օրինակ, C ++/CLI- ում դուք չեք կարող ստեղծել String տիպի օբյեկտ, աղբահանության պատճառով չի թույլատրվում ստեղծել նման օբյեկտի օբյեկտ կամ հղում/ցուցիչ: C ++/CLI- ում պետք է օգտագործել բռնակներ ՝ String^: Բայց նման բռնակներ գոյություն չունեին C ++ ստանդարտում: Այսպիսով, ես պետք է ստեղծագործական լինեի, որպեսզի երկու աշխարհներն ի մի բերեի: Ես դա լուծեցի ՝ ստեղծելով իմ սեփական Arduino.h ֆայլը սիմուլյացիայի համար: Այս ֆայլը պարզապես անտեսում է մոդելավորման բոլոր տողերը ՝ սահմանելով «#սահմանել տողերի տողը^»: Սա սովորական եղանակ չէ, բայց աշխատում է.

LED մատրիցա

Առաջին դասը, որը ես գրել եմ, LED-Matrix դասարանն է: Այս դասը կարգավորում է WS2812 LED- ների հսկողությունը և քարտեզագրումը:

Այս դասը գրվել է երկու անգամ ՝ մեկ անգամ ESP8266 վերահսկիչի (LEDMatrixArduino.cpp) և մյուսի համար, որը կվերահսկի ձևի GUI- ի ձևերը մոդելավորման մեջ (LEDMatrixGUI.cpp):

Այս դասը տրամադրում է մի քանի հիմնական մեթոդ ՝ առանձին LED- ի տեղադրման և մաքրման համար ՝ իր սյունակով և շարքով:

Բացի այդ, այն ապահովում է setBrightness գործառույթը: Այս արժեքը հաշվի կառնվի, եթե LED տեղադրվի: Այսպիսով, LED- ի սահմանած բոլոր հրամանները կարող են կատարվել ամբողջ պայծառությամբ: Օրինակ. Եթե պայծառությունը սահմանվում է 50% և setLed () գործառույթը կոչվում է RGBColor (255, 255, 255), այն LED- ը կդնի 127, 127, 127:

LED վահանակ

LED Matrix դասի վերևում ես տեղադրեցի LED վահանակի դաս: Այս դասը տրամադրում է որոշ օգտակար գործառույթներ ցանկացած ծրագրի համար: Այն ապահովում է երկու անկախ շերտ: Սա կարող է օգտակար լինել դիմումի համար: Օրինակ ՝ tetris խաղի մասին. Այսպիսով, յուրաքանչյուր ցիկլի ընթացքում քարը ընկնում է մեկ պիքսել դեպի ներքև, կիրառումը պարզապես կարող է մաքրել շերտը 1 և քարը քաշել իր նոր դիրքի վրա: Անհրաժեշտ չէ ներքևում բոլոր ամրացված քարերը վերագծել:

Բացի այդ, վահանակը տրամադրում է

printImage - տպել պատկերակներ, ինչպիսիք են սմայլիկները կամ WLAN խորհրդանիշը

Քայլ 4. Softwareրագրակազմ - Կիրառման հայեցակարգ

Softwareրագրային ապահովում - կիրառման հայեցակարգ
Softwareրագրային ապահովում - կիրառման հայեցակարգ

Պիքսելային պատի ընդհանուր հայեցակարգը հետևյալն է.

  • Յուրաքանչյուր դիմում ունի իր սեփական անունը
  • Հավելվածը սկսվում է ՝ զանգահարելով pixel պատի URL- ին, ներառյալ հայտի անունը (օրինակ ՝ 192.168.4.1/tetris)
  • URL- ը կարող է ունենալ նաև GET պարամետրեր, որոնք կփոխանցվեն հայտին
  • Յուրաքանչյուր ծրագիր պետք է տրամադրի վեբ կայք, որը ցուցադրվում է բրաուզերում:
  • Այս կայքը կարող է ընտրովի բացել ցանցի միացում հավելվածին արագ փոխազդեցության համար
  • Applicationրագիրը կարող է օգտագործել այս ցանցային կապը ՝ համացանցային առջև վերադառնալու համար:
  • Վեբ ինտերֆեյսի կողքին, հավելվածը ստանում է լրացուցիչ սեղմման իրադարձություններ կառավարման վահանակից և NES վերահսկիչից:

Դիմումի միջերես

PixelWall- ի համար նոր ծրագրեր մշակելը հեշտացնելու համար ես ստեղծեցի միջերես `« IPixelApp.h »անունով ծրագրերի համար: Այս ինտերֆեյսը պարունակում է 8 սահմանում.

  • վիրտուալ դատարկ սկիզբ () = 0;
  • վիրտուալ դատարկ վերջ () = 0;
  • վիրտուալ դատարկ շրջան () = 0;
  • վիրտուալ անվավեր newWebsocketData (uint8_t * բեռնվածություն, չափս_ երկարություն) = 0;
  • վիրտուալ WebsiteResponse_t getWebsiteResponse (լարային պարամետր) = 0;
  • վիրտուալ դատարկություն buttonEvent () = 0;
  • վիրտուալ անվավեր timerTick () = 0;
  • վիրտուալ տող getName () = 0;

սկսել / ավարտել - այս գործառույթը կոչվում է, եթե ծրագիրը սկսվում / ավարտվում է, քանի որ այլ ծրագիր է սկսվում

loop - այս գործառույթը կոչվում է հիմնական ծրագրի հիմնական հանգույցից: Այս զանգն անկանոն է և ընդմիջումից դուրս է:

newWebsocketData - այս գործառույթը կոչվում է, եթե համացանցի առջևի տվյալները ուղարկվում են:

getWebsiteResponse - սա օգտագործվում է հիմնական ծրագրի կողմից ՝ վեբ էջ ստանալու համար, որը պետք է արձագանքի խնդրանքին:

buttonEvent - սա կոչվում է, եթե կառավարման վահանակի որևէ կոճակ սեղմված կամ բաց թողնված է:

timerTick - այս գործառույթը կոչվում է յուրաքանչյուր 10ms, որը առաջանում է ժմչփի ընդհատումից: Այն կարող է օգտագործվել ժամանակի համար, բայց չպետք է պարունակի ժամանակի ինտենսիվ իրեր, քանի որ դա ընդհատվող համատեքստ է:

getName - սա պետք է վերադարձնի URL- ի հայտի անունը

Քայլ 5. Softwareրագրակազմ - ationsրագրեր

Softwareրագրային ապահովում - ծրագրեր
Softwareրագրային ապահովում - ծրագրեր
Softwareրագրային ապահովում - ծրագրեր
Softwareրագրային ապահովում - ծրագրեր
Softwareրագրային ապահովում - ծրագրեր
Softwareրագրային ապահովում - ծրագրեր
Softwareրագրային ապահովում - ծրագրեր
Softwareրագրային ապահովում - ծրագրեր

Հետևյալ 7 ծրագրերն իրականացվում են ընթացիկ տարբերակում.

Կանխադրված հավելված

Սա հատուկ ծրագիր է, որը ցուցադրում է PixelWall- ի WLAN- ի ընթացիկ վիճակը: Եթե պատը կարողանա միանալ ներկայիս WLAN- ին, այն կցուցադրի IP հասցեն, որը ստացել է անցից:

Եթե դա հնարավոր չէր (ssid- ը տեղադրված չէ կամ WLAN- ը չկա կամ գաղտնաբառը սխալ է) այն կբացի Accesspoint: Այս դեպքում կարող եք միանալ PixelWall- ին ESP8266- ից կանխադրված Accesspoint IP- ի միջոցով. 192.168.4.1

Webinterface- ում այս ծրագիրը ներկայացնում է 6 կոճակ: Կոճակը սեղմելով ՝ կարող եք սկսել համապատասխան Դիմումը:

Կարգավորումների հավելված

Այս ծրագիրը WLAN SSID- ի և գաղտնաբառի տեղադրման համար: Պարզապես տեղադրեք ձեր WLAN- ի հավատարմագրերը և PixelWill- ի հաջորդ մեկնարկին այն կփորձի միանալ այս WLAN- ին:

Խաղեր

PixelWall- ում ծրագրված են երեք դասական խաղեր.

  • Tetris
  • Օձ
  • Տիեզերական զավթիչներ

Բոլոր խաղերը կարելի է խաղալ webinterface- ի միջոցով կամ NES վերահսկիչով:

Image հավելված

Սա ծրագիր է, որը գույներ է ցուցադրում PixelWall- ում: Կարող եք ընտրել, արդյոք այն պետք է լինի շարժվող ծիածան, խամրի տարբեր գույներ, ցույց տա ստատիկ գույն կամ պարզապես ցուցադրի պատահական գունավոր պիքսելներ:

Pixel It

Այս հավելվածով դուք կարող եք առանձին սահմանել յուրաքանչյուր պիքսել ՝ մատով հպելով Webinterface- ին: Այսպիսով, դուք կարող եք նկարել խրթին նկարներ:)

Քայլ 6. Կառավարեք Twitch Extension- ի միջոցով

Վերահսկեք Twitch Extension- ի միջոցով
Վերահսկեք Twitch Extension- ի միջոցով

Twitch- ում կա ընդլայնում ՝ GetInTouch անունով: Այս ընդլայնումը թույլ է տալիս ինտեգրել Arduino նախագծերը ձեր ուղիղ հեռարձակմանը, որպեսզի դիտողները կարողանան վերահսկել ձեր arduino- ն հոսքի ընթացքում:

Դրա համար Arduino գրադարանը գրված է Arduinos- ի համար: Բայց պարզվեց, որ այն աշխատում է նաև ESP8266- ով:

Հոսքում այն օգտագործելու համար անհրաժեշտ են հետևյալ քայլերը.

  • Միացրեք GetInTouch գրադարանը ծածկագրին (տես ձեռնարկը)
  • Միացրեք pixelWall- ը ձեր համակարգչի հետ USB/RS232 փոխարկիչի միջոցով (որը նույնպես օգտագործվում է ESP- ը թարթելու համար)
  • Տեղադրեք GetInTouch հավելվածը կայքից
  • Տեղադրեք GetInTouch ընդլայնումը ձեր Twitch ալիքում (տես ձեռնարկը)

Քայլ 7: Կառավարում Nintendo NES Controller- ի կողմից

Կառավարում Nintendo NES Controller- ի կողմից
Կառավարում Nintendo NES Controller- ի կողմից

Որոշ ժամանակ օգտագործելուց հետո պարզվում է, որ դիպչող բջջային հեռախոսով խաղալը այնքան էլ հեշտ չէ: Fromամանակ առ ժամանակ դուք բաց եք թողնում կոճակները, քանի որ ձեր մատի վրա հետադարձ կապ չունեք ՝ կոճակի վրայով եք, թե ոչ: Ավելին, երբեմն Websocket հաղորդակցությունը կարող է կարճ ժամանակով արտահոսել:

Այդ պատճառով ես որոշեցի գնել հին Nintendo NES վերահսկիչ: Այս վերահսկիչն ունի շատ պարզ ինտերֆեյս: Դա ընդամենը 4021 հերթափոխի գրանցամատյան է, որն աշխատում է 3, 3 Վ լարման միջոցով: Այսպիսով, այն կարող է ուղղակիորեն միացվել ESP8266- ին:

Բոլոր կոճակի իրադարձությունները վերահսկիչի վրա փոխանցվում են գործարկվող ծրագրին buttonEvent () գործառույթի միջոցով:

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