Obsah:

Pipboy postavený zo šrotu: 26 krokov (s obrázkami)
Pipboy postavený zo šrotu: 26 krokov (s obrázkami)

Video: Pipboy postavený zo šrotu: 26 krokov (s obrázkami)

Video: Pipboy postavený zo šrotu: 26 krokov (s obrázkami)
Video: САМОЕ ВАЖНОЕ видео на YouTube ... 2024, Júl
Anonim
Image
Image
Budovanie srdca Pipboy
Budovanie srdca Pipboy

Toto je môj pracovný Pipboy, zostavený z náhodných harabúrd z garáže a nájazdu na zásoby elektronických súčiastok. Považoval som to za náročnú stavbu a trvalo mi to niekoľko mesiacov práce, takže by som to nekategorizoval ako úplný projekt pre začiatočníkov. Medzi potrebné zručnosti patrí práca s plastom a drevom, elektronika a kódovanie. Telo je vyrobené z rôznych kúskov šrotu plastov narezaných a zvarených dohromady. Ako mikroradič som použil Raspberry Pi 0 so záhlavím displeja namontovaným na časti pinov GPIO. Zostávajúce piny slúžia na napájanie diód LED a pripojenie tlačidiel/ovládačov. Na dokončenie projektu som napísal používateľské rozhranie v štýle „Pipboy“s niekoľkými demo obrazovkami v Pythone.

Moje ciele pre projekt boli:

  • Muselo to fungovať - t. J. Potrebné na to, aby mal skutočne displej, ktorý niečo robil
  • Chcel som, aby mal „číselník“na výber rôznych obrazoviek, pretože ten pre mňa vždy vynikal ako ikonická súčasť používateľského rozhrania vo Falloute.
  • Celú stavbu bolo potrebné dokončiť pomocou vecí, ktoré som už mal v garáži alebo v kancelárii (to sa úplne nepodarilo, ale priblížil som sa - viac ako 90% z toho boli nájdené položky alebo veci, ktoré som už mal položené)
  • Potrebné byť nositeľné

Jeden cieľ, ktorý som nemal, bolo urobiť z neho presnú repliku jedného z herných modelov - dávam prednosť stavaniu vecí „v štýle“veci, pretože mi dáva priestor prispôsobiť sa náhodnému odpadu, ktorý nájdem, a dovoľte mi byť trochu kreatívnejší. Nakoniec áno, viem, že si ich môžete kúpiť, ale ani o to nešlo;)

Zásoby

Zásoby

  • Rúra so širokým otvorom (napríklad kus odtokovej rúry)
  • Šrot z plastov (na vytvorenie tela aj na dekoratívne účely)
  • Malý kontajner
  • Penová podložka
  • Malinový koláč
  • 3,5 "displej
  • Rotačný kodér KY040
  • 3x LED diódy
  • 2x tlačidlá
  • Externá batéria
  • Elektrické vedenie
  • Skrutky, lepidlá, farby, tmely atď

Nástroje

  • Dremmel
  • Multifunkčný nástroj s frézou a brúsnymi nadstavcami
  • Vŕtačka
  • Súbory
  • Spájkovačka
  • Horúca lepiaca pištoľ
  • Skrutkovače
  • Ostrý nôž
  • Videl

Krok 1: Budovanie srdca Pipboy

Budovanie srdca Pipboy
Budovanie srdca Pipboy

Prvá vec, ktorú som musel urobiť, bolo zaistiť, aby som mohol získať displej a mikroradič vo formáte, s ktorým môžem pracovať. Náhodou som narazil na 3,5 -palcový displej, ktorý sedí ako HAT na GPIO piny Raspberry PI, a tak som sa rozhodol použiť to. Spároval som to s Raspberry Pi 0 a uistil som sa, že to funguje dobre. niekoľko krokov k tomu, aby Linux rozpoznal obrazovku, ktorou musíte prejsť.

Ako vidíte na druhom obrázku, pridal som malú kartónovú/penovú platformu, ktorú som prilepil k puzdru, aby pomohla podporiť displej. Urobil som to, pretože som vedel, že s touto časťou budem veľa zaobchádzať a nechcel som rozbiť kolíky alebo displej kvôli nedostatku podpory. Nakoniec to bolo nahradené, ale bola to dobrá pridaná ochrana počas procesu vytvárania.

V tejto chvíli stojí za zmienku, že neskôr v zostave som pri tomto nastavení narazil na problémy s výkonom - hlavne obnovovaciu frekvenciu cez rozhranie medzi Pi a displejom, budem sa tomu venovať neskôr v zostave, ale ak urobil to znova, mohol by som tu zvážiť iný hardvér.

Tu je niekoľko užitočných odkazov:

www.raspberrypi.org/forums/viewtopic.php?t…

www.raspberrypi.org/forums/viewtopic.php?t…

www.raspberrypi.org/forums/viewtopic.php?f…

learn.sparkfun.com/tutorials/serial-periph…

Tiež do githubu s tým spojeného zahrniem niekoľko poznámok k tomu, čo som vlastne urobil, aby to fungovalo (aj keď z môjho čítania témy existuje značná variabilita v spôsobe, akým to funguje pre konkrétne inštancie/ovládače, takže vaša milá sa môže líšiť).

Krok 2: Kartónový prototyp

Kartónový prototyp
Kartónový prototyp
Kartónový prototyp
Kartónový prototyp
Kartónový prototyp
Kartónový prototyp

Našiel som nejaké staré odkvapové potrubie/potrubie, ktoré by som mohol použiť na telo, ale potreboval som vymyslieť návrh skutočnej oblasti obrazovky a ovládacieho panela. Za týmto účelom som vyrobil kartónové makety a pomocou maskovacej pásky ich pripevnil k potrubiu. Prvá bola jednoduchá „škatuľka“, ale pripadala mi príliš jednoduchá, a tak som ju upravil, aby bola oblasť obrazovky zaujímavejšia, a pridal som oddelenú oblasť ovládacieho panela. Toto sa viac -menej stalo konečným dizajnom (ako ste videli, došlo k niekoľkým vylepšeniam, ale je to blízko).

Krok 3: Od prototypu k šablóne

Od prototypu k šablóne
Od prototypu k šablóne
Od prototypu k šablóne
Od prototypu k šablóne
Od prototypu k šablóne
Od prototypu k šablóne

Teraz som mal prototyp, s ktorým som bol spokojný. Kartón som mohol vyrovnať a zmeniť na šablónu, ktorú som potom transponoval na časť starého puzdra na počítač, do ktorého som kopal. Každý podobný tvrdý plast by fungoval, len som používal haraburdu, ktorú som musel mať poruke. Keď som bol označený, mohol som potom vystrihnúť kúsky, aby som mohol začať montovať hlavné telo. Tu je užitočný tip, aby som uľahčil označovanie a následné rezanie plastu, oblasti, ktoré by som potreboval vystrihnúť, som najskôr prekryl maskovacou páskou, vďaka čomu som mohol jednoduchšie nakresliť šablónu na plast, a niečo, čo pomôže zabrániť skĺznutiu rezného kotúča, keď som robil prvé rezy.

Krok 4: Pridajte puzdro pre Screen & Pi

Pridajte puzdro pre Screen & Pi
Pridajte puzdro pre Screen & Pi
Pridajte puzdro pre Screen & Pi
Pridajte puzdro pre Screen & Pi

Chcel som, aby rohy oblasti obrazovky boli zakrivené, a potreboval som niečo, čo by skutočne držalo Pi a displej - mojím riešením bolo použiť malý plastový kontajner, ktorý som mal. Vyrezal som dieru z hornej časti tela a cez ňu som prilepil nádobu. Potom som všetky strany zlepil. Tu som použil superglue s výdatnou sódou bikarbónou, aby som pomohol spevniť zvary. Neskôr som všetko naplnil a brúsil/brúsil, aby som to všetko upratal a dodal tomu „tvarovanejší“pocit.

Krok 5: Opakujte pre ovládací panel

Opakujte pre ovládací panel
Opakujte pre ovládací panel
Opakujte pre ovládací panel
Opakujte pre ovládací panel
Opakujte pre ovládací panel
Opakujte pre ovládací panel

Ďalej som urobil presne rovnakú šablónu, ktorou som transponoval, rezal a lepil, aby som postavil kryt ovládacieho panela.

Krok 6: Vystrihnite potrubie

Vystrihnite potrubie
Vystrihnite potrubie

Ako vidíte, kontajner, ktorý plánujem použiť na umiestnenie hlavných elektronických súčiastok, je teraz hrdý vo vnútri čierneho plastového rámu, to znamená, že v potrubí potrebujem urobiť otvor, aby sa doň mohol umiestniť. Opäť som použil maskovaciu pásku na zarovnanie tam, kde som chcel rezať, a vyrezal som štvorec rúrky, aby sa diely zmestili.

Krok 7: Bezel

Luneta
Luneta
Luneta
Luneta

Jednou výzvou, ktorú som si omylom vynútil, bolo pokúsiť sa prísť s fazetou, ktorá by vyplnila oblasť okolo displeja až po okraje nádoby. Bohužiaľ, spôsob, akým je displej vyrobený, tiež nemá vo svojom dizajne nič užitočné (ako diery alebo čokoľvek), čo by mu mohlo pomôcť namontovať ho, takže luneta tiež musela držať displej na svojom mieste. Môj prvý pokus (tu videný) bola zmes plastu a peny. Nakoniec som to zopakoval niekoľkokrát a skončilo to ako jedna z najnáročnejších častí zostavy. Zhoršujú to malé tolerancie a chúlostivá povaha samotného rámu a displeja.

Krok 8: Test batérie

Test batérie
Test batérie
Test batérie
Test batérie
Test batérie
Test batérie

V tomto mieste som sa zameral na to, ako zabezpečiť, aby to bežalo nezávisle od USB napájaného zo siete. Testoval som rôzne batérie a zistil som, že displej Raspberry Pi + v skutočnosti neberie toľko energie a je úplne šťastné, že beží aj na jednom z mojich menších batériových balíkov (bezplatná reklama z veľtrhu). To bolo naozaj šťastie, pretože balíček perfektne zapadol do medzery vo vnútri zostavy (fotografie neskôr). Teraz môžeme dočasne zlepiť hlavné časti tela dohromady a nechať si prvý testovací cyklus zapnúť na ruke!

Krok 9: Testovanie vhodnosti

Testovanie vhodnosti
Testovanie vhodnosti
Testovanie vhodnosti
Testovanie vhodnosti
Testovanie vhodnosti
Testovanie vhodnosti

Tu vidíte, kde som ďalej upravil rúrku jadra, aby som umožnil prístup k spodnej strane komponentov. Môžete tiež vidieť, ako som mal šťastie na batériu, ktorá pekne zapadala do dutiny na jednej strane kontajnera Pi. Nakoniec sa začal proces čistenia väzieb, plnenia, brúsenia a vykonal sa testovací náter základného náteru, aby sa získal pocit dokončeného vzhľadu (vedel som, že v tejto fáze to budem brúsiť ešte mnohokrát a takmer celý ten základný náter pôjde, ale chcel som zistiť, ako to bude vyzerať).

Krok 10: Pridajte ovládacie prvky a detaily

Pridajte ovládacie prvky a detaily
Pridajte ovládacie prvky a detaily
Pridajte ovládacie prvky a detaily
Pridajte ovládacie prvky a detaily
Pridajte ovládacie prvky a detaily
Pridajte ovládacie prvky a detaily

Chcel som sériu červených/žltých/zelených diód LED na vytvorenie meradla, ako aj otočný volič a najmenej 2 tlačidlá. Všetky boli namontované do sekcie ovládacieho panela - jednoducho prípad vyvŕtania všetkých správnych otvorov. Začal som tiež pridávať malé kúsky plastových súčiastok do šrotu (v zásade vybitie súpravy), aby som pridal detaily a väčší záujem o telo a ovládací panel.

Krok 11: Obnovenie rámu č. 3

Prestavba bezel č. 3
Prestavba bezel č. 3
Prestavba bezel č. 3
Prestavba bezel č. 3
Prestavba bezel č. 3
Prestavba bezel č. 3

Ako som už spomenul, pri tejto zostave som bojoval s lunetou a niekoľkokrát som ju prestaval. Toto je tretia iterácia, ktorej som sa držal. Môj prístup tu je použiť sololit a vyrezať 2 rôzne tvary, jeden mysliteľ ako druhý, a potom ich zlepiť (a zovrieť) dohromady, aby vytvorili stredný obrázok. Tieto tvary umožnili sedieť štvorcovému displeju vo vnútri a potom držal displej na mieste vo vnútri kontajnera (ako na obrázku 3). To mi poskytlo dostatok materiálu na použitie 4 veľmi malých skrutiek ako upínacích prípravkov - ktoré som použil na pevné upevnenie vo vnútri puzdra, a to zase udržalo obrazovku stabilnú a bezpečnú. Pri spätnom pohľade by som našiel displej, ktorý mal slušné možnosti montáže (alebo použiť 3D tlačiareň - ktorú som vtedy nemal).

Krok 12: Prototypovanie elektroniky

Prototypovanie elektroniky
Prototypovanie elektroniky
Prototypovanie elektroniky
Prototypovanie elektroniky

Na rozloženie svojich jednoduchých obvodov takto používam breadboard a keďže často robím túto časť projektu v inom priestore ako pri konštrukcii hlavného tela, spároval som ho aj s iným Raspberry PI. Tu som použil model 3, ktorý mi dal o niečo väčšiu silu, aby som sa k nemu skutočne priamo pripojil a spustil integrované IDE. To mi trochu uľahčilo rýchle prototypovanie kódu. Existuje mnoho ďalších spôsobov vzdialeného pripojenia/kódu/ladenia, to je to, čo som tu radšej urobil.

Máme tu celkom priamy dizajn;

  1. Rotačný kodér - používa uzemnenie a zväzok pinov GPIO na riešenie smeru kliknutia a tlačidla.
  2. Pár tlačidiel, tieto jednoducho používajú každý jeden pin GPIO a spoločnú zem
  3. 3 LED diódy, každá s vloženým odporom, ktorý zabraňuje ich vyskočeniu, všetky idú na spoločnú zem, ale s každým samostatným kolíkom GPIO, aby bolo možné každú z nich riešiť individuálne.

To mi poskytlo 3 diódy LED pre môj merač, rotačný snímač otáčania obrazoviek na pipboyi a 3 tlačidlá na ovládanie akcií (jedna na rotačnom snímači a 2 samostatne zapojené). To bolo asi všetko, na čo som sa zmestil, a keďže displej zaberal veľa pinov, spotrebováva do značnej miery to, čo máte v štandardnom rozložení Pi GPIO. Na moje účely to však bolo v poriadku.

Druhý obrázok do značnej miery ukazuje konečné vnútorné rozloženie, s ktorým som išiel. Strávil som tu nejaký čas testovaním spôsobov riadenia komponentov a overením, či to všetko fungovalo, než som to transponoval do tela zostavy. Celý kód je v github.

Poznámka o rotačných snímačoch. Strávil som veľa času písaním vlastného stavového stroja Rotary Encoder, aby som sledoval vysoké/nízke zmeny GPIO a mapoval ich do rotačných polôh. Tu som mal zmiešaný úspech, fungovalo to vo „väčšine“prípadov, ale vždy sa vyskytli prípady hrany a (de) poskakovanie atď. Je oveľa jednoduchšie používať hotovú knižnicu a je tu skvelá knižnica, ktorú je možné nainštalovať pre Python. Nakoniec som to použil, pretože mi to umožnilo zamerať sa na zábavnú časť budovania, a nie na veky ladenia problémov. Všetky podrobnosti sú uvedené v zdrojovom kóde.

Ak ste nováčik v Raspberry Pi, GPIO a elektronike, dôrazne odporúčam nasledujúce návody, ktoré vás prevedú všetkým, čo potrebujete na vykonanie vyššie uvedeného rozloženia;

projects.raspberrypi.org/en/projects/physi…

thepihut.com/blogs/raspberry-pi-tutorials/…

Krok 13: Transpozícia elektroniky do tela

Transpozícia elektroniky do tela
Transpozícia elektroniky do tela
Transpozícia elektroniky do tela
Transpozícia elektroniky do tela
Transpozícia elektroniky do tela
Transpozícia elektroniky do tela

Potom, čo som dokončil rozloženie pomocou breadboardu, bolo načase začať premýšľať o tom, ako ich namontovať do tela pipboy. Rozhodol som sa, že to chcem vyrobiť, aby som mohol v prípade potreby v budúcnosti niečo opraviť alebo zmeniť, demontovať a odstrániť všetky elektronické súčiastky. Aby som to dosiahol, rozhodol som sa, že všetky náhradné diely bude možné zapojiť pomocou konektorov dupont.

Pri tlačidlách, ktoré som spájkoval na niektorých predlžovacích kábloch a použil som na izoláciu koncov drôtený obal, mi to umožnilo tieto zostaviť a rozobrať z tela (napr. Na testovanie, potom maľovanie atď.). Rotačný kodér už mal kolíky, ktoré dokázali prijať dupontné konektory, takže som potreboval urobiť iba niekoľko vodičov správnej dĺžky.

LED diódy si vyžiadali trochu viac práce - na tento účel som sa rozhodol použiť trochu plastového šrotu, ktorý som mal (narezané, aby sa zmestilo) na výrobu odnímateľného panela, do ktorého sa diódy LED namontujú. Potom som ich za tepla prilepil na miesto a spájkoval odpory a drôty. Vďaka tomu bola odstrániteľná jednotka, ktorú som mohol namontovať a odstrániť, a uľahčilo sa maľovanie a dokončovanie.

Všimnite si, že moje spájkovanie je strašné, a tak som to udržal jednoduché a vyhýbal sa všetkému príliš podrobnému/jemnému. Na konečnom obrázku môžete vidieť, že mám aj niekoľko veľmi malých broadboardov (5x5), jeden z nich som použil namontovaný vo vnútri a poskytol panel na pripojenie všetkého k/z GPIO. Zvlášť to bolo užitočné na vytvorenie spoločnej pozemnej koľajnice, ktorú by som mohol použiť, a vyhnúť sa tomu, aby sa veľa uzemňovacích drôtov hadilo späť k Pi.

Potom som do nádoby vyrezal rôzne otvory, aby som nimi previedol vodiče k Pi a pripojil sa k GPIO. Tento dizajn mi umožnil úplne odstrániť všetko, čo bolo potrebné (niečo, čo som urobil niekoľkokrát, keď som finalizoval stavbu).

Krok 14: Jemné doladenie fit

Jemné doladenie fit
Jemné doladenie fit
Jemné doladenie fit
Jemné doladenie fit

V tomto mieste som narazil na niektoré "vhodné" problémy. Po prvé, použitie dupontových konektorov na zapojenie znamenalo, že bolo ťažké ich namontovať na kolíky s nasadeným klobúkom displeja, pretože nebola dostatočná svetlá výška. Vyriešil som to kúpou (toto je jedna z mála vecí, ktoré som v skutočnosti kúpil pre tento projekt) malého predlžovača GPIO pinov, aby som mohol klobúk displeja posadiť vyššie a nechať priestor na prístup k zostávajúcim pinom GPIO pomocou konektorov dupont.

Tiež som narezal niekoľko malých kúskov penovej podlahovej rohože, aby som vnútri kontajnera urobil nejaké bočné vypchávky, čo pomohlo usadiť displej Pi + na správne miesto a zastaviť jeho pohyb.

Krok 15: Retro up to the Rotary Encoder

Spätný chod rotačného enkodéra
Spätný chod rotačného enkodéra

Rotačné enkodéry často prichádzajú (rovnako ako moje) s pekným lesklým moderným gombíkom v štýle „hi -fi“. Toto bolo úplne mimo charakteru stavby, takže som musel vymyslieť niečo iné. V mojej náhodnej škatuli dielov som narazil na starý ozubený kolík z vrtáka, ktorý som už dávno zlomil. Vyzeralo to dobre, ale nezmestilo sa to do rotačného snímača. Moje riešenie tu bolo vyskúšať rôzne hmoždinky do steny, kým som nenašiel ten, ktorý by vyhovoval rotačnému ciferníku, a potom ho rozrezať do tvaru, aby som ho mohol použiť ako „vnútorný golier“na usadenie vŕtačky na rotačný kodér ako vhodnejšiu tému. ovládanie.

Krok 16: Vnútorná výstelka

Vnútorná podšívka
Vnútorná podšívka
Vnútorná podšívka
Vnútorná podšívka

Viac penových dlaždíc! Tentokrát som ich použil na stavbu mäkkej podšívky, aby sa pohodlnejšie nosil (bez toho, aby bol príliš voľný). Vyrezaním otvoru z peny som tiež dokázal absorbovať časť „hrudky“, ktorú vytvára nádoba na Pi. Celkovo to robilo to oveľa nositeľnejšie. Na týchto fotografiách nie je zobrazený, ale urobil som ho o niečo väčší ako hlavné telo, aby bol viditeľný na koncoch, ktoré som neskôr namaľoval a to všetko pomohlo dodať hotovému predmetu trochu kontrastu a záujmu.

Krok 17: Pridanie podrobností

Pridávanie podrobností
Pridávanie podrobností
Pridávanie podrobností
Pridávanie podrobností

Čas začať pridávať dekorácie a urobiť ich zaujímavejšími. Najprv som pridal niekoľko šrotu z plastu pozdĺž jednej tváre, aby to trochu vizuálne zaujalo. Potom som k niektorým svorkám pridal falošné drôty a len som ich zasunul do otvoru, ktorý som vyvŕtal do tela. To všetko bolo neskôr namaľované rôznymi farbami.

Krok 18: Maľovanie a dokončovanie stavby tela

Maľovanie a dokončovanie stavby tela
Maľovanie a dokončovanie stavby tela
Maľovanie a povrchová úprava stavby tela
Maľovanie a povrchová úprava stavby tela
Maľovanie a dokončovanie stavby tela
Maľovanie a dokončovanie stavby tela

Nebol som príliš znepokojený nedotknutým povrchom - ako by mal byť starý a dobre používaný (v skutočnosti sa k nemu môžem v určitom okamihu vrátiť a ešte viac zvetrávať). Ale chcel som, aby to vyzeralo ako konzistentný a úplný predmet, ktorý nebol spojený s náhodným odpadkom (aj keď to presne bolo). Prešiel som mnohými iteráciami brúsenia, plnenia (miliput je moja výplň, ktorú som si vybral pre plast) a opakujem. Potom niekoľko vrstiev základného náteru a farby, ktoré ďalej pomôžu vyhladiť všetky spoje. Potom ďalšie brúsenie a viac výplne a ďalšie maľovanie.

Akonáhle som mal vzhľad a pocit tela, s ktorým som bol spokojný, začal som pridávať niektoré detaily. Na grily na ovládacích prvkoch som použil trenie a leštenie, aby mali pocit drôteného pletiva. Tiež som sem a tam pridal malé detaily farby pomocou akrylov.

Zahrabal som sa do svojej zbierky náhodných nálepiek a pridal som niekoľko, aby som dosiahol efekt. Potom som urobil zvetrávanie niekoľkými zmiešanými farbami, aby som pridal špinu a špinu do ťažko dostupných oblastí, ktoré by bolo ťažké vyčistiť. V tejto chvíli je to možno príliš jemné a možno sa vrátim a neskôr pridám ďalšie.

Krok 19: Kódovanie

Kódovanie
Kódovanie

Súčasťou mojej ambície pre tento projekt bolo dosiahnuť, aby reagoval ako skutočný pipboy - a pre mňa je najikonickejšou súčasťou tejto hry otáčanie číselníka na prepínanie medzi rôznymi obrazovkami. Aby som to dosiahol, rozhodol som sa napísať používateľské rozhranie pipboy, ktoré by dokázalo zobraziť sériu obrazoviek a umožniť medzi nimi listovať. Chcel som, aby bol obsah obrazoviek niečím, čo by som mohol ľahko zmeniť, a aby bolo možné pridávať/odstraňovať obrazovky.

Rozhodol som sa to napísať v Pythone kvôli vynikajúcej podpore pre Raspberry Pi, GPIO atď. Python je v mojom zozname jazykov, ktoré poznám, dosť nízky, takže to bola pre mňa veľká krivka učenia a veľká časť kódu je chaotický vo výsledku. Časom to budem aktualizovať, pretože som ešte nedokončil všetko, čo som tu chcel urobiť - ale je to dosť blízko na to, aby som sa o to mohol podeliť, pretože sú tam všetky hlavné koncepty.

Môj návrh kódu používateľského rozhrania je pomerne jednoduchý, existuje hlavný skript Pythonu, ktorý nastavuje zobrazenie, konfiguruje GPIO, načítava obrazovky a vstupuje do nekonečnej aktualizačnej slučky, čaká na udalosti používateľov a podľa potreby aktualizuje zobrazenie. Okrem toho existujú rôzne podporné skripty, ktoré pomáhajú vopred generovať obrazovky používateľského rozhrania.

Použité hlavné knižnice:

  • pygame: Používam to ako motor na spustenie používateľského rozhrania, pretože mi to umožnilo kresliť ľubovoľnú grafiku, manipulovať s obrázkami, písmami, prechádzať na celú obrazovku atď.
  • pyky040: Toto poskytuje ovládanie otočného voliča a ušetrilo mi to veľa času (veľká vďaka Raphaelovi Yanceymu za vydanie tohto.
  • RPi. GPIO: Aby som dobre jazdil na GPIO, pohrával som si tu s niekoľkými možnosťami, ale to mi poskytlo správnu úroveň flexibility, ktorú som chcel, najmä pri veciach, ako je používanie náhradného GPIO ako ďalšieho 3,3 V na pohon rotačného snímača atď.
  • šum: Na generovanie perlinového šumu, ktorý mi umožňuje vytvoriť náhodný priebeh vlny pre obrazovku rádia, ktorý vyzerá prirodzenejšie
  • fronta: Narazil som na frustrujúcu chybu s načasovaním udalostí z otáčania rotačného enkodéra a (veľmi) pomalou obnovovacou frekvenciou LCD displeja. Nakoniec som to vyriešil tak, že som zaradil do frontu prichádzajúce udalosti z rotačného enkodéra a vyberal ich jeden po druhom, keď sa obrazovka obnovovala.
  • os, sys, threading, čas: všetky sa používajú pre štandardné funkcie pythonu

Poznámka k dizajnu ovládania obrazovky. Obrazovky sú definované ako zoznam mien v kóde. Ku každému záznamu v zozname môže byť priradený buď súbor-p.webp

Obsah týchto súborov je generovaný inde (ručne alebo inými skriptmi), ktorých výstup je uložený ako súbory-p.webp

Existujú zvláštne výnimky, kde je kódovaných niekoľko vecí - napríklad tvar vlny pre obrazovku náhodného rádia, ktorý sa počíta v reálnom čase a je animovaný.

Ak vám analógia pomôže, predstavte si návrh používateľského rozhrania ako mimoriadne hrubý a jednoduchý webový prehliadač - každá „obrazovka“je ako skutočne jednoduchá webová stránka, ktorá môže pozostávať iba z jedného súboru png, jedného súboru txt alebo ich kombinácie. Ich obsah je nezávislý a kreslí ich používateľské rozhranie tak, ako by prehliadač nakreslil webovú stránku.

Tu sú odkazy na hlavné knižnice, ktoré som tu použil:

www.pygame.org/news

pypi.org/project/pyky040/

pypi.org/project/noise/

Krok 20: Obrazovka so štatistikami

Štatistická obrazovka
Štatistická obrazovka

Žiadny pipboy by nebol úplný bez klasickej obrazovky so štatistikami siluety pipboy. Za týmto účelom môj priateľ vytvoril statický PNG, ktorý zobrazujem ako držiak miesta. V budúcnosti sa možno vrátim a urobím to dynamickejším s nejakým náhodným znázornením poškodenia alebo podobným spôsobom, ale zatiaľ je to statická obrazovka.

Krok 21: Obrazovka inventára

Obrazovka inventára
Obrazovka inventára

Niečo, čo je pri projektoch Pi vždy užitočné, má spôsob, ako zobraziť základné informácie, ako je IP adresa jeho DHCP atď. Rozhodol som sa preťažiť obrazovku Inventár ako zobrazenie „inventára“Pi - aký procesor, pamäť, IP adresa atď. Napísal som malý skript Linuxu, ktorý zhromaždí tieto informácie a presmeruje ich do vhodne pomenovaného textového súboru (.txt), ktorý systém používateľského rozhrania potom vyberie a zobrazí. Týmto spôsobom, kedykoľvek budem na inom mieste, môžem spustiť skript a vyzdvihnúť nový súbor.txt s aktuálnou adresou IP atď.

Krok 22: Obrazovka mapy

Obrazovka mapy
Obrazovka mapy

Táto obrazovka bola jednou z komplexnejších obrazoviek, na ktorých sa dalo pracovať. Raspberry Pi 0 nie je dodávaný s modulom GPS, ale chcel som dosiahnuť, aby mapa mala určitú platnosť tam, kde bola Pi. Moje riešenie je samostatný skript, ktorý ťahá IP adresu Pi a používa https://ipinfo.io na vyhľadanie približného umiestnenia. Odozva JSON je zachytená a potom konvertujem súradnice, aby som mohol stiahnuť dlaždicu openstreetmap.org pre približne umiestnenie.

Dlaždice sú dodávané vo viacerých farbách, ale chcel som, aby obrázok v zelenom meradle zodpovedal vzhľadu a štýlu Pipboy, a nenašiel som presne taký, a tak som v Pythone napísal filter v zelenom meradle, ktorý farby premapuje. dlaždice openstreetmap a potom uložte nový obrázok do pamäte cache do súboru png.

Počas vyššie uvedeného procesu sa vygeneruje textový súbor s približnou polohou a súradnicami a dlaždica mapy sa vytvorí ako png. Používateľské rozhranie pipboy stiahne oba tieto súbory a prekryje obsah a vytvorí obrazovku s mapou, ktorá funguje (s presnosťou rozlíšenia adresy IP na miesto).

Krok 23: Obrazovka údajov

Obrazovka údajov
Obrazovka údajov

Toto je iba testovacia karta (vygenerovaná iným skriptom pythonu a výstupom do súboru png), ktorá sa zobrazí na pomoc pri testovaní veľkosti/rozloženia. Nechal som to tam, pretože je to stále veľmi užitočné na overenie toho, s akými nehnuteľnosťami sa musím pri zosmiešňovaní obrazoviek hrať.

Krok 24: Obrazovka rádia

Obrazovka rádia
Obrazovka rádia

Spolu s obrazovkou mapy je to ďalšia obrazovka, ktorá mi skutočne spôsobila veľa práce. Toto je jediná obrazovka, s ktorou som sa pohrával s animáciou - a väčšinou funguje podľa plánu, ale výkon je stále problémom s obnovovacou frekvenciou obrazovky LCD. Štruktúra obrazovky je textový súbor obsahujúci niektoré náhodne zvolené názvy rádií (sú to len ľubovoľné reťazce a nerobia nič iné, ako zobrazovať zoznam na obrazovke), súbor png, ktorý obsahuje os grafickej oblasti (I napísal ďalší skript na ich generovanie a vytvorenie súboru png, aby som mohol meniť kroky atď., Ak by som chcel zmeniť vzhľad) a nakoniec som to prekryl v dynamickej oblasti, kde pomocou perlinového šumu vytvorím „živý“priebeh. Použitie perlinového šumu pomáha zaistiť, aby bol priebeh vlny prirodzenejší a aby nebol chaoticky hlučný, ako by to prinieslo úplne náhodné poradie čísel. Tu používam 2D perlinový šum, 1D na generovanie vrcholov a žľabov pozdĺž čiary a potom 2. dimenziu na ich zmenu v časovom slede, aby vrcholy a žľaby stúpali po páde s príjemným hladkým pocitom, ako keby boli frekvencie naladený.

Toto je jediná obrazovka, kde pygameová slučka robí v každom cykle skutočnú prácu, musí vypočítať nový priebeh, vymazať časť obrazovky, v ktorej žije, a prekresliť.

Krok 25: Záverečné myšlienky

Image
Image
Záverečné myšlienky
Záverečné myšlienky

Toto je možno najnáročnejšia stavba, akú som kedy urobil, s mnohými rôznymi konceptmi a schopnosťami, ale zároveň je to aj jedna z najzábavnejších skutočných vecí, ktoré vo výsledku fungujú. Stále pracujem na úprave niektorých svojich technickejších poznámok a repo služby github pre kód. Všetky položky čoskoro sprístupním, takže sa čoskoro objavíte znova a získajte ďalšie podrobnosti a informácie, keď budem mať čas pridať ich do zápisu.

Ak sa k niečomu takému odhodláte, rád by som videl výsledky. Ak máte nejaké otázky, neváhajte ma kontaktovať a ja sa pokúsim pridať ďalšie informácie o všetkých krokoch, v ktorých chcete pomôcť.

Krok 26: Kód otvorený na Github

Kód otvorený na Github
Kód otvorený na Github

Nakoniec som sa dostal k otvoreniu kódu na Github. Je k dispozícii na tomto odkaze:

Odporúča: