Indholdsfortegnelse:

Pipboy bygget af skrot: 26 trin (med billeder)
Pipboy bygget af skrot: 26 trin (med billeder)

Video: Pipboy bygget af skrot: 26 trin (med billeder)

Video: Pipboy bygget af skrot: 26 trin (med billeder)
Video: История Bethesda Game Studios - Документальный фильм о The Elder Scrolls и Fallout 2024, Juli
Anonim
Image
Image
Bygger hjertet af Pipboy
Bygger hjertet af Pipboy

Dette er min fungerende Pipboy, bygget af tilfældigt skrammel fra garagen og et raid af mine elektroniske komponenter. Jeg fandt dette en udfordrende bygning, og det tog mig flere måneders arbejde, så jeg ville ikke kategorisere dette som et komplet begynderprojekt. Nødvendige færdigheder omfatter plast- og træarbejde, elektronik og kodning. Kroppen er bygget af forskellige stykker skrotplast, der er skåret og svejset sammen. Jeg brugte en Raspberry Pi 0 som mikrokontroller, med et displayhoved monteret på en del af GPIO-benene. De resterende ben bruges til at drive lysdioder og tilslutte knapper/knapper. Jeg skrev en brugergrænseflade i "Pipboy" -stil med nogle demoskærme i Python for at fuldføre projektet.

Mine mål for projektet var:

  • Var nødt til at arbejde - det vil sige nødvendigt for faktisk at have et display, der gjorde ting
  • Jeg ville have det til at have en "skive" til at vælge de forskellige skærme, da det altid stod for mig som en ikonisk del af brugergrænsefladen i Fallout
  • Hele bygningen skulle afsluttes ved hjælp af ting, jeg allerede havde i garagen eller på mit kontor (dette blev ikke fuldstændig opnået, men jeg kom tæt på - op mod 90% af dette blev fundet genstande eller ting, jeg allerede havde liggende)
  • Behov for at være bærbar

Et mål, jeg ikke havde, var at gøre det til en nøjagtig kopi af en af in -game -modellerne - jeg foretrækker at bygge ting "i stil" med en ting, da det giver mig plads til at tilpasse tilfældigt uønsket, jeg finder, og lad mig være lidt mere kreativ. Endelig, ja jeg ved du kan købe disse, men det var heller ikke meningen;)

Forbrugsvarer

Forbrugsvarer

  • Bredt hulrør (f.eks. Et stykke afløbsrør)
  • Skrotplast (både til at skabe kroppen og til dekorative formål)
  • Lille beholder
  • Skum gulvmåtte
  • Hindbær Pi
  • 3,5 "display
  • KY040 Rotary Encoder
  • 3x lysdioder
  • 2x trykknapper
  • Batteri
  • Ledninger
  • Skruer, lim, maling, fyldstof osv

Værktøjer

  • Dremmel
  • Multi-værktøj med fræser og slibefastgørelser
  • Bore
  • Filer
  • Loddekolbe
  • Varm limpistol
  • Skruetrækker
  • Skarp kniv
  • Sav

Trin 1: Bygger hjertet af Pipboy

Bygger hjertet af Pipboy
Bygger hjertet af Pipboy

Det første, jeg skulle gøre, var at sikre, at jeg kunne få et display og en mikro-controller i en formfaktor, jeg kunne arbejde med. Jeg havde tilfældigt et 3,5 display, der sparkede rundt, der sidder som en HAT på GPIO -benene på en Raspberry PI, så jeg besluttede at bruge dette. Jeg parrede det med en Raspberry Pi 0 og sørgede for, at det fungerede OK, der er en få trin til at få Linux til at genkende det display, du skal køre igennem.

Som du kan se på det andet billede, tilføjede jeg en lille pap/skumplatform, som jeg limede til sagen for at understøtte displayet. Jeg gjorde dette, da jeg vidste, at jeg ville håndtere denne del meget og ikke ville bryde stifter eller displayet på grund af manglende support. Til sidst blev dette udskiftet, men det var en god smule ekstra beskyttelse under byggeprocessen.

Det er også værd at bemærke på dette tidspunkt, at jeg senere i bygningen stødte på ydelsesproblemer med denne opsætning - overvejende opdateringshastigheden over grænsefladen mellem Pi og skærmen, vil jeg gå ind på dette mere senere i bygningen, men hvis jeg gjorde dette igen, jeg kunne overveje anderledes hardware her.

Her er nogle nyttige links til dette:

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…

Jeg vil også i github'en, der er forbundet med dette, medtage nogle noter til, hvad jeg faktisk gjorde for at få dette til at fungere (selvom der fra min læsning af emnet er stor variation i, hvordan dette fungerer for bestemte tilfælde/drivere, så din millage kan variere).

Trin 2: Kartonprototype

Pap prototype
Pap prototype
Pap prototype
Pap prototype
Pap prototype
Pap prototype

Jeg fandt nogle gamle tagrender/rør, som jeg kunne bruge til kroppen, men jeg havde brug for at komme med et design til selve skærmområdet og kontrolpanelet. Til dette lavede jeg bare papmock -ups og brugte malertape til at fastgøre dem til røret. Den første var en simpel "boks", men det føltes for enkelt, så jeg ændrede det for at gøre skærmområdet mere interessant og tilføjede et separat kontrolpanelområde. Dette blev mere eller mindre det endelige design (der var et par tweaks som du kan se, men det er tæt).

Trin 3: Fra prototype til skabelon

Fra prototype til skabelon
Fra prototype til skabelon
Fra prototype til skabelon
Fra prototype til skabelon
Fra prototype til skabelon
Fra prototype til skabelon

Nu havde jeg en prototype, jeg var glad for, jeg kunne flade kartonen ud og gøre den til en skabelon, som jeg derefter transponerede på en del af en gammel pc -kasse, jeg havde sparket rundt. Enhver lignende hård plast ville fungere, jeg brugte bare skrammel, jeg måtte aflevere. Når det var markeret, kunne jeg derefter skære stykkerne ud, så jeg kunne begynde at samle hoveddelen. Et nyttigt tip her, for at gøre det lettere at både markere og efterfølgende skære plasten, dækkede jeg de områder, jeg skulle skære med malertape først, dette gav mig begge en lettere måde at tegne skabelonen på plasten, og noget for at hjælpe med at stoppe skærepladen fra at glide, da jeg lavede de første udskæringer.

Trin 4: Tilføj etui til skærm og Pi

Tilføj etui til skærm og Pi
Tilføj etui til skærm og Pi
Tilføj etui til skærm og Pi
Tilføj etui til skærm og Pi

Jeg ville have, at hjørnerne af skærmområdet skulle være buede, og jeg havde brug for noget til faktisk at holde Pi og vise ind - min løsning var at bruge en lille plastbeholder, jeg havde. Jeg skar et hul ud af kroppen og limede beholderen igennem dette. Så limede jeg alle siderne sammen. Jeg brugte superlim her med rigelig bagepulver til at hjælpe med at styrke svejsningerne. Senere fyldte jeg og arkiverede/slibede alt for at rydde det hele op og give det en mere "støbt" fornemmelse.

Trin 5: Gentag for Kontrolpanel

Gentag for Kontrolpanel
Gentag for Kontrolpanel
Gentag for Kontrolpanel
Gentag for Kontrolpanel
Gentag for Kontrolpanel
Gentag for Kontrolpanel

Dernæst lavede jeg nøjagtig den samme skabelon ved at transponere, klippe og lime for at bygge kontrolpanelhuset.

Trin 6: Skær røret ud

Skær røret ud
Skær røret ud

Som du kan se beholderen, jeg planlægger at bruge til at huse de vigtigste elektroniske komponenter, sidder nu stolt inde i den sorte plastikring, det betyder, at jeg skal lave en åbning i røret, for at den kan placeres i. Jeg brugte malertape igen til at stille op, hvor jeg ville klippe, og skar en firkant af røret ud, så delene passede.

Trin 7: Bezel

Bezel
Bezel
Bezel
Bezel

En udfordring, jeg ved et uheld tvang til mig selv, var at forsøge at finde på en ramme, der ville fylde området omkring skærmen op til kanterne af beholderen. Desværre har måden displayet er lavet på, det har heller ikke noget nyttigt i sit design (som huller eller noget) for at hjælpe med at montere det, så rammen måtte også holde skærmen på plads. Mit første forsøg (set her) var en blanding af plast og skum. Jeg endte til sidst med at gentage dette flere gange, og det endte med at være en af de mere udfordrende dele af bygningen. Forværret af de små tolerancer og sarte karakter af både rammen og skærmen.

Trin 8: Batteritest

Batteritest
Batteritest
Batteritest
Batteritest
Batteritest
Batteritest

På dette tidspunkt vendte jeg mig om, hvordan jeg får dette til at køre uafhængigt af en USB -tilslutning. Jeg testede forskellige batterier og fandt ud af, at Raspberry Pi + displayet faktisk ikke trak så meget strøm, og det var fuldstændig glad for at køre på selv en af mine mindre batteripakker (en freebie fra en messe). Dette var virkelig heldigt, da pakken passede perfekt ind i et hul inde i bygningen (fotos senere). Nu kan vi midlertidigt tape de vigtigste kropskomponenter sammen og få vores første testkørsel af det tændt på min arm!

Trin 9: Test af pasform

Test af pasform
Test af pasform
Test af pasform
Test af pasform
Test af pasform
Test af pasform

Her kan du se, hvor jeg har ændret kernerøret yderligere for at give adgang til undersiden af komponenterne. Du kan også se, hvordan jeg var heldig med batteriet, der pænt passede i et hulrum til den ene side af Pi -beholderen. Endelig startede processen med at rydde op i bindinger, fylde, slibe og lavede et testlag med primer for at få en fornemmelse af det færdige look (jeg vidste på dette tidspunkt, at jeg ville slibe dette mange flere gange, og næsten alt det primer ville gå, men jeg ville gerne have en fornemmelse af, hvordan det ville se ud).

Trin 10: Tilføj kontrolelementer og detaljer

Tilføj kontrolelementer og detaljer
Tilføj kontrolelementer og detaljer
Tilføj kontrolelementer og detaljer
Tilføj kontrolelementer og detaljer
Tilføj kontrolelementer og detaljer
Tilføj kontrolelementer og detaljer

Jeg ville have en række røde/gule/grønne lysdioder til at danne en måler samt en drejeknap og mindst 2 trykknapper. Disse blev alle monteret på kontrolpanelets sektion - simpelthen et tilfælde af at bore alle de rigtige huller. Jeg begyndte også at tilføje små bidder af skrotplastkomponenter (dybest set kit bashing) for at tilføje detaljer og mere interesse for kroppen og kontrolpanelet.

Trin 11: Ombygning af ramme nr. 3

Bezel Rebuild nr.3
Bezel Rebuild nr.3
Bezel Rebuild nr.3
Bezel Rebuild nr.3
Bezel Rebuild nr.3
Bezel Rebuild nr.3

Som jeg nævnte tidligere, kæmpede jeg med rammen til denne build og genopbyggede den flere gange. Dette er den tredje iteration, som jeg holdt fast i. Min tilgang her til at bruge hardboard og skære 2 forskellige former, den ene tænker end den anden og derefter limet (og spændt) dem sammen for at danne det midterste billede. Disse former tillod det firkantede display at sidde inde i dette, og derefter holdt det displayet på plads inde i beholderen (som på billede 3). Dette gav mig lige nok materiale til at bruge 4 meget små skruer som armaturer - som jeg brugte til at fastgøre dette godt på plads inde i kabinettet, og det ville igen holde skærmen stabil og sikker. I eftertid ville jeg finde et display, der fulgte med nogle anstændige monteringsmuligheder (eller bruge en 3D -printer - som jeg ikke havde på det tidspunkt).

Trin 12: Prototyping af elektronikken

Prototyper elektronikken
Prototyper elektronikken
Prototyper elektronikken
Prototyper elektronikken

Jeg bruger et brødbræt til at oprette mine enkle kredsløb sådan her, og da jeg ofte laver denne del af projektet i et andet rum end hovedkroppens konstruktion, parrede jeg det også med et andet Raspberry PI. Her brugte jeg en model 3, som gav mig lidt mere kraft til faktisk at oprette forbindelse direkte til den og køre en IDE ombord. Dette gjorde bare hurtig kodeprototyping lidt lettere for mig. Der er masser af andre måder at eksternt forbinde/kode/debugge, det er bare det, jeg foretrak at gøre her.

Designet her er temmelig ligetil, vi har;

  1. Rotary encoder - denne bruger en jord og en masse GPIO -ben til at håndtere klikretningen og trykknappen.
  2. Et par trykknapper, disse bruger simpelthen en enkelt GPIO -pin hver og en fælles grund
  3. 3 lysdioder, hver med inline modstandsdygtighed for at stoppe dem med at poppe, alle går til en fælles grund, men med en individuel GPIO pin hver, så hver kan adresseres individuelt.

Dette gav mig 3 LED'er til min måler, en roterende encoder til at rotere gennem skærmene på pipboyen og 3 trykknapper til at drive handlinger (en på den roterende encoder og 2 separat kablet). Dette var omtrent alt, hvad jeg kunne passe, og da skærmen optog en masse pins, forbruger stort set det, du har på et standard Pi GPIO -layout. Men det var fint til mine formål.

Det andet billede viser stort set det endelige interne layout, jeg gik med. Jeg brugte noget tid her på at afprøve måder at køre komponenterne på og kontrollere, at det hele fungerede, før jeg transponerede dette i bygningens krop. Al koden er i github.

En note om roterende encodere. Jeg brugte en masse tid på at skrive min egen Rotary Encoder -tilstandsmaskine til at spore GPIO's høje/lave ændringer og kortlægge disse til roterende positioner. Jeg havde blandet succes her, jeg fik det til at fungere i "de fleste" sager, men der er altid kantsager og (de) hoppende osv. At håndtere. Det er langt, meget lettere at bruge et færdigt bibliotek, og der er et godt bibliotek til disse, der kan installeres til Python. Jeg brugte det til sidst, da det gav mig mulighed for at fokusere på den sjove del af bygningen, frem for at bruge aldre på fejlfinding af problemer. Alle detaljer om dette er inkluderet i kildekoden.

Hvis du er ny inden for Raspberry Pi, GPIO og elektronik, anbefaler jeg stærkt følgende selvstudier, der guider dig igennem alt hvad du har brug for for at lave ovenstående layout;

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

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

Trin 13: Transponering af elektronikken i kroppen

Transponering af elektronikken i kroppen
Transponering af elektronikken i kroppen
Transponering af elektronikken i kroppen
Transponering af elektronikken i kroppen
Transponering af elektronikken i kroppen
Transponering af elektronikken i kroppen

Efter at jeg havde afsluttet layoutet ved hjælp af et brødbræt, var det tid til at begynde at tænke på, hvordan man monterede dem i pipboyens krop. Jeg besluttede, at jeg ville gøre det, så jeg kunne demontere og fjerne alle de elektroniske komponenter, hvis jeg skulle reparere eller ændre noget i fremtiden. For at opnå dette besluttede jeg mig for at gøre alle delene plug-kompatible ved hjælp af dupont-stik.

For knapperne lodde jeg på nogle forlængerledninger og brugte wirewrap til at isolere enderne, dette tillod mig at samle og adskille disse fra kroppen (f.eks. Til test, derefter maling osv.). Rotary Encoder havde allerede stifter, der kunne acceptere dupont -stik, så jeg skulle bare lave nogle ledninger i den rigtige længde.

Lysdioderne tog lidt mere arbejde - til dette besluttede jeg at bruge en smule skrotplastik, jeg havde (skåret til at passe) til at lave et aftageligt panel til at montere lysdioderne i. Derefter varmlimede jeg dem på plads og lodde modstanderne og ledningerne. Dette gjorde en fjernelsesenhed, som jeg kunne montere og fjerne, og gjorde maling og efterbehandling lettere.

Bemærk, at min lodning er forfærdelig, så jeg holdt dette simpelt og undgik alt for detaljeret/fint. I det sidste billede kan du se, at jeg også havde nogle meget små bredbrætter (5x5), jeg brugte en af disse monteret indvendigt til at give et panel til at forbinde alt til/fra GPIO. Dette var især nyttigt til at oprette en fælles jordskinne, som jeg kunne bruge og undgå at have masser af jordledninger, der slang tilbage til Pi.

Jeg skar derefter forskellige huller i beholderen for at føre ledningerne igennem til Pi og forbinde op til GPIO. Dette design tillod mig at afslutte alt, hvis jeg havde brug for det (noget jeg gjorde flere gange, mens jeg var ved at færdiggøre byggeriet).

Trin 14: Finjuster pasformen

Finjustering af pasformen
Finjustering af pasformen
Finjustering af pasformen
Finjustering af pasformen

På dette tidspunkt stødte jeg på nogle "fit" -problemer. For det første betød brugen af dupont -stik til ledningerne, at det var svært at få dem til at passe på stifterne med displayhatten på plads, da der ikke var nok højdehøjde. Jeg løste dette ved at købe (dette er en af de få ting, jeg faktisk købte til dette projekt) en lille GPIO -pinforlænger, så jeg kunne få displayhatten til at sidde højere og give plads til at få adgang til de resterende GPIO -ben ved hjælp af dupont -stik.

Jeg skar også nogle små stykker skumgulvmåtte op for at lave noget sidepolstring inde i beholderen, dette hjalp med at sætte Pi + Displayet på det rigtige sted og stoppe det med at bevæge sig rundt.

Trin 15: Retro op Rotary Encoder

Retro op på roterende encoder
Retro op på roterende encoder

Rotary encoders kommer ofte (som min gjorde) med en flot skinnende moderne "hi fi" -knap. Dette var helt ude af karakter for bygningen, så jeg måtte finde på noget andet. I min tilfældige æske med dele stødte jeg på en gammel tandhjul fra en boremaskine, jeg brød for længe siden. Dette så godt ud, men passede ikke til den roterende encoder. Min løsning her var at prøve forskellige vægpropper, indtil jeg fandt en, der passede til drejeknappen, og derefter skære den i form, så jeg kunne bruge den som en "indre krave" til at sætte boretand på roterende encoder som et mere passende tema styring.

Trin 16: Indvendig foring

Indvendig foring
Indvendig foring
Indvendig foring
Indvendig foring

Flere skumgulvfliser! Denne gang brugte jeg dem til at bygge en blød foring for at gøre den mere behagelig at passe (uden at den er for løs). Ved at skære et hul ud af skummet var jeg også i stand til at absorbere noget af den "klump", som beholderen til Pi laver. Samlet set gjorde dette det meget mere bærbart. Ikke vist på disse fotos, men jeg gjorde det lidt større end hoveddelen, så det var synligt i enderne, som jeg senere malede, og det hele var med til at tilføre lidt kontrast og interesse til det færdige element.

Trin 17: Tilføjelse af detaljer

Tilføjelse af detaljer
Tilføjelse af detaljer
Tilføjelse af detaljer
Tilføjelse af detaljer

Tid til at begynde at tilføje noget dekoration og gøre det mere interessant. Først og fremmest tilføjede jeg nogle skrotstrimler af plast langs det ene ansigt for at give det lidt visuel interesse. Derefter tilføjede jeg nogle falske ledninger til nogle terminaler og skubbede dem bare ned i et hul, jeg borede i kroppen. Alt dette blev senere malet i forskellige farver.

Trin 18: Maling og efterbehandling Body Build

Maling og efterbehandling Body Build
Maling og efterbehandling Body Build
Maling og efterbehandling Body Build
Maling og efterbehandling Body Build
Maling og efterbehandling Body Build
Maling og efterbehandling Body Build

Jeg var ikke så bekymret over en uberørt finish - som formodet at være gammel og godt brugt alligevel (faktisk kan jeg komme tilbage og gøre endnu mere forvitring på det på et tidspunkt). Men jeg ville have, at det skulle ligne et konsistent og komplet objekt, der ikke blev humpet sammen fra tilfældigt uønsket (selvom det var præcis, hvad det var). Jeg gennemgik mange gentagelser af slibning, påfyldning (milliput er mit valgfri fyldstof til plast) og gentag. Derefter flere lag primer og maling for yderligere at hjælpe med at glatte alle sammenføjninger. Så mere slibning og mere fyldning og mere maling.

Da jeg havde et udseende og en fornemmelse af den krop, jeg var tilfreds med, begyndte jeg at tilføje nogle detaljer. Jeg brugte rub and buff på grillene på betjeningselementerne for at give dem en mere trådnettet fornemmelse. Jeg tilføjede også små detaljer om maling hist og her ved hjælp af akryl.

Jeg gravede ind i min samling af tilfældige klistermærker og tilføjede et par stykker for at afslutte effekten. Derefter vaskede jeg en forvitring med nogle blandede malinger for at tilføre snavs og snavs til de områder, der var svært tilgængelige, og som ville være vanskelige at rengøre. Dette er måske lidt for subtilt i øjeblikket, og jeg kan komme tilbage og tilføje nogle flere senere.

Trin 19: Kodning

Kodning
Kodning

En del af min ambition for dette projekt var at få det til at reagere som en egentlig pipboy - og for mig er den mest ikoniske del af det in -game at dreje skiven til at vende mellem forskellige skærme. For at opnå dette besluttede jeg at skrive en pipboy -brugergrænseflade, der kunne vise en række skærme og give dig mulighed for at rulle mellem dem. Jeg ville gøre indholdet på skærmene til noget, som jeg let kunne ændre, og faktisk kunne tilføje/fjerne skærme.

Jeg vælger at skrive dette i Python på grund af den fremragende støtte til Raspberry Pi, GPIO osv. Python er temmelig lavt på min liste over sprog, jeg kender, så dette var en stor læringskurve for mig, og meget af koden er rodet som følge heraf. Jeg opdaterer dette over tid, da jeg ikke helt har afsluttet alt, hvad jeg ville gøre her - men det er tæt nok til at dele nu, da alle hovedkoncepterne er der.

Mit design til UI -koden er rimeligt ligetil, der er et hoved Python -script, der opsætter displayet, konfigurerer GPIO, indlæser skærmene og går ind i en uendelig opdateringssløjfe, venter på brugerhændelser og opdaterer displayet efter behov. Derudover er der forskellige support scripts, der hjælper med at generere UI -skærmene på forhånd.

Hovedbiblioteker brugt:

  • pygame: Jeg bruger dette som motor til at køre brugergrænsefladen, da det tillod mig at tegne vilkårlig grafik, manipulere billeder, skrifttyper, gå i fuld skærm osv.
  • pyky040: Dette giver håndtering af drejeknappen og sparede mig meget tid (mange tak til Raphael Yancey for at have frigivet dette.
  • RPi. GPIO: Til godt GPIO -kørsel legede jeg rundt med et par muligheder her, men dette gav mig det rigtige fleksibilitetsniveau, jeg ønskede, især med ting som at bruge en ekstra GPIO som en anden 3.3v til at køre roterende encoder osv.
  • støj: Til generering af perlinstøj, for at give mig mulighed for at oprette en tilfældig bølgeform til radioskærmen, der ser mere naturlig ud
  • kø: Jeg stødte på en frustrerende fejl med timing af begivenheder fra roterende encoder, der blev drejet og (meget) langsom opdateringshastighed på LCD -displayet. I sidste ende den måde, jeg løste dette på, var at stå i kø for indgående hændelser fra den roterende encoder og vælge dem en ad gangen, mens skærmen opdateres.
  • os, sys, threading, time: alt bruges til standard python -funktioner

En note om design af skærmhåndtering. Skærme er defineret som en liste med navne i koden. Hver post på listen kan enten have en png- eller en txt -fil (eller begge) tilknyttet den, koden bygger en cache for hver skærm efter at have ledt efter filer i linux -biblioteksstrukturen, der er knyttet til koden.

Indholdet af disse filer genereres andre steder (i hånden eller ved andre scripts), hvis output gemmes som png- eller txt -filer, som pipboy -brugergrænsefladen derefter kan indlæses som en skærm, der skal vises. Dette holder hoved "opdaterings" -sløjfen relativt ren og enkel, men giver mig også fleksibiliteten til at opdatere eller ændre indholdet på skærmene med nye data, når jeg finder det passende.

Der er mærkelige undtagelser, hvor et par ting er kodet - f.eks. Bølgeformen for den tilfældige radioskærm, da den er beregnet i realtid og animeret.

Hvis en analogi hjælper, skal du tænke på UI -designet som en ekstremt rå og enkel webbrowser - hver "skærm" er som en virkelig enkel webside, der kun kan bestå af en png, en txt -fil eller en kombination af de to. Indholdet i dem er uafhængigt og tegnes bare af brugergrænsefladen, ligesom en browser ville tegne en webside.

Her er links til de vigtigste biblioteker, jeg brugte her:

www.pygame.org/news

pypi.org/project/pyky040/

pypi.org/project/noise/

Trin 20: Skærm med statistik

Statistik skærm
Statistik skærm

Ingen pipboy ville være komplet uden den klassiske pipboy silhuet statistik skærm. Til dette skabte en af mine venner en statisk PNG, som jeg bare viser som en pladsholder. På et senere tidspunkt kan jeg komme tilbage og gøre dette mere dynamisk med en vis tilfældig skaderepræsentation eller lignende, men i øjeblikket er det en statisk skærm.

Trin 21: Beholdningsskærm

Lagerskærm
Lagerskærm

Noget, der altid er nyttigt med Pi -projekter, er at have en måde at vise grundlæggende oplysninger som IP -adressen, dens DHCP'd osv. Jeg besluttede at overbelaste lagerskærmen som en visning af Pi "beholdningen" - hvilken CPU, hukommelse, IP -adresse osv.. Jeg skrev et lille Linux -script for at indsamle disse oplysninger og bare omdirigere det til en passende navngivet tekstfil (.txt), som UI -systemet derefter samler op og viser. På denne måde, hvis jeg nogensinde er et andet sted, kan jeg starte scriptet og hente en frisk.txt -fil med den opdaterede IP -adresse osv.

Trin 22: Kortskærm

Kortskærm
Kortskærm

Denne skærm var en af de mere komplekse skærme at arbejde på. Raspberry Pi 0 kommer ikke med et GPS -modul, men jeg ønskede at få kortet til at have en vis gyldighed for, hvor Pi var. Min løsning på dette er et separat script, der trækker Pi IP -adressen, bruger https://ipinfo.io til at slå en omtrentlig placering op. JSON-svaret fanges, og derefter konverterer jeg koordinaterne, så jeg kan trække en openstreetmap.org-flise ned for den omtrentlige placering.

Fliserne kommer ned i flere farver, men jeg ville have et billede i grøn skala, der matchede udseendet og følelsen af Pipboy, og jeg kunne ikke finde en sådan, så jeg skrev et filter i grøn skala i Python for at lave om på farverne af openstreetmap -flisen, og gem derefter det nye billede i en-p.webp

Under ovenstående proces genereres en tekstfil med den omtrentlige placering og koordinater, og kortflisen oprettes som en png. Pipboy -brugergrænsefladen trækker begge disse filer op og overlejrer indholdet for at oprette en kortskærm, der fungerer (inden for nøjagtigheden af IP -adresseopløsningen til et sted).

Trin 23: Dataskærm

Dataskærm
Dataskærm

Dette er bare et testkort (genereret af et andet python -script og output til en-p.webp

Trin 24: Radioskærm

Radio skærm
Radio skærm

Sammen med kortskærmen er dette den anden skærm, der virkelig forårsagede mig meget arbejde. Dette er den eneste skærm, hvor jeg legede med animation - og det fungerer for det meste efter hensigten, men ydelse er stadig et problem med LCD -skærmens opdateringshastigheder. Skærmens struktur er en tekstfil, der indeholder nogle tilfældigt valgte radionavne (disse er bare vilkårlige strenge og gør ikke andet end at præsentere en liste på skærmen), en-p.webp

Dette er den eneste skærm, hvor pygamesløjfen udfører noget rigtigt arbejde som hver cyklus, den skal beregne den nye bølgeform, slette den del af skærmen, der lever i og tegne om.

Trin 25: Endelige tanker

Image
Image
Endelige tanker
Endelige tanker

Dette er muligvis det mest udfordrende byggeri, jeg har foretaget, med mange forskellige koncepter og færdigheder, der er påkrævet, men det er også en af de mest behagelige med virkelige ting, der fungerer som et resultat. Jeg er stadig i gang med at rydde op i nogle af mine mere tekniske noter samt github -repoen til koden. Alt det vil jeg snart stille til rådighed, så kom snart tilbage igen for flere detaljer og info, da jeg får tid til at tilføje dem til opskrivningen.

Hvis du får lyst til at gøre sådan noget, vil jeg meget gerne se resultaterne, og hvis du har spørgsmål, er du velkommen til at kontakte os, og jeg vil bestræbe mig på at tilføje mere information i alle trin, hvor du vil hjælpe.

Trin 26: Kodeåben på Github

Kode Åben på Github
Kode Åben på Github

Jeg kom endelig til at åbne koden på Github. Den er tilgængelig på dette link:

Anbefalede: