Sadržaj:

Pipboy izgrađen od otpada: 26 koraka (sa slikama)
Pipboy izgrađen od otpada: 26 koraka (sa slikama)

Video: Pipboy izgrađen od otpada: 26 koraka (sa slikama)

Video: Pipboy izgrađen od otpada: 26 koraka (sa slikama)
Video: Батьхождение - Мод "Наёмный убийца" часть 3 (HD 1080) 2024, Novembar
Anonim
Image
Image
Izgradnja srca Pipboya
Izgradnja srca Pipboya

Ovo je moj radni Pipboy, napravljen od slučajnog smeća iz garaže i pretresa mojih zaliha elektroničkih komponenti. Smatrao sam da je ovo izazovna građevina i trebalo mi je nekoliko mjeseci rada pa ovo ne bih kategorizirao kao kompletan projekt za početnike. Potrebne vještine uključuju plastične i drvene radove, elektroniku i kodiranje. Tijelo je izrađeno od raznih komada otpadne plastike izrezanih i zavarenih zajedno. Koristio sam Raspberry Pi 0 kao mikrokontroler, sa zaglavljem ekrana montiranim na dio GPIO pinova. Preostali pinovi koriste se za pogon LED dioda i povezivanje tipki/kontrola. Napisao sam korisničko sučelje u stilu "Pipboy" s nekim demo ekranima u Pythonu kako bih dovršio projekt.

Moji ciljevi na projektu bili su:

  • Morao je raditi - tj. Morao je imati zaslon koji je radio stvari
  • Htio sam da ima "brojčanik" za odabir različitih ekrana jer mi se to uvijek isticalo kao kultni dio korisničkog sučelja u Falloutu
  • Cijela je izgradnja morala biti dovršena korištenjem stvari koje sam već imao u garaži ili u uredu (to nije u potpunosti postignuto, ali sam se približio - više od 90% toga je pronađeno ili stvari koje sam već ležao okolo)
  • Mora biti nosivo

Jedan cilj koji nisam imao bio je napraviti točnu kopiju jednog od modela u igri - više volim stvarati stvari "u stilu" stvari, jer mi daje prostora za prilagođavanje slučajnog smeća koje pronađem, i dozvolite mi da budem malo kreativniji. Konačno, da, znam da ih možete kupiti, ali ni to nije bila poenta;)

Supplies

Supplies

  • Široka cijev (poput komada odvodne cijevi)
  • Otpadna plastika (i za izradu tijela i u dekorativne svrhe)
  • Mali kontejner
  • Podna prostirka od pjene
  • Raspberry Pi
  • Ekran od 3,5"
  • KY040 Rotacijski davač
  • 3x LED diode
  • 2x tipke
  • Powerbank
  • Ožičenje
  • Vijci, ljepila, boje, punila itd

Alati

  • Dremmel
  • Višenamenski alat sa nastavcima za sečenje i brušenje
  • Drill
  • Datoteke
  • Lemilica
  • Pištolj za vruće ljepilo
  • Odvijači
  • Oštri nož
  • Saw

Korak 1: Izgradnja srca Pipboya

Izgradnja srca Pipboya
Izgradnja srca Pipboya

Prvo što sam trebao učiniti je osigurati da mogu dobiti ekran i mikrokontroler u formatu s kojim mogu raditi. Slučajno sam imao 3.5 -inčni ekran koji je postavljen kao HAT na GPIO pinove Raspberry PI -a, pa sam odlučio koristiti ovo. Upario sam ga s Raspberry Pi 0 i uvjerio se da radi u redu, postoje nekoliko koraka do toga da Linux prepozna displej koji morate proći.

Kao što možete vidjeti na drugoj slici, dodao sam malu platformu od kartona/pjene koju sam zalijepio za kućište kako bih podržao ekran. Učinio sam to jer sam znao da ću se dosta baviti ovim dijelom i nisam htio slomiti pinove ili ekran zbog nedostatka podrške. Na kraju je ovo zamijenjeno, ali je to bila dobra dodatna zaštita tokom procesa izgradnje.

U ovom trenutku također je vrijedno napomenuti da sam kasnije u izgradnji naišao na probleme s performansama s ovim postavljanjem - pretežno brzinu osvježavanja preko sučelja između Pi -a i ekrana, o tome ću kasnije više u izgradnji, ali ako uradio ovo ponovo, mogao bih razmotriti drugačiji hardver ovdje.

Evo nekoliko korisnih veza za to:

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…

U github povezan s ovim uvrstit ću i neke napomene o tome šta sam zapravo učinio da ovo funkcionira (iako iz mog čitanja teme postoji mnogo varijacija u načinu na koji ovo funkcionira za određene instance/upravljačke programe, pa vaš miljaž može varirati).

Korak 2: Prototip kartona

Kartonski prototip
Kartonski prototip
Kartonski prototip
Kartonski prototip
Kartonski prototip
Kartonski prototip

Pronašao sam neke stare oluke/cijevi koje bih mogao koristiti za tijelo, ali morao sam smisliti dizajn za stvarnu površinu ekrana i kontrolnu ploču. Za to sam samo napravio makete od kartona i upotrijebio maskirnu traku da ih pričvrstim na cijev. Prva je bila jednostavna "kutija", ali činilo mi se da je previše jednostavna, pa sam je izmijenila kako bih područje zaslona učinila zanimljivijim i dodala zasebnu površinu upravljačke ploče. Ovo je manje -više postalo konačni dizajn (bilo je nekoliko izmjena kao što ćete vidjeti, ali blizu).

Korak 3: Od prototipa do predloška

Od prototipa do predloška
Od prototipa do predloška
Od prototipa do predloška
Od prototipa do predloška
Od prototipa do predloška
Od prototipa do predloška

Sada sam imao prototip s kojim sam bio zadovoljan, mogao sam spljoštiti karton i pretvoriti ga u predložak koji sam zatim premjestio na dio starog kućišta za računalo koje sam razbijao. Bilo koja slična čvrsta plastika bi radila, samo sam koristio otpad koji sam morao imati u ruci. Nakon što sam ih označio, tada sam mogao izrezati komade kako bih mogao početi sastavljati glavno tijelo. Ovdje je koristan savjet, kako bih olakšao označavanje, a zatim i rezanje plastike, pokrio sam područja koja bih trebao izrezati prvo maskirnom trakom, što mi je oboje omogućilo lakši način da nacrtam predložak na plastiku, i nešto što će spriječiti klizanje diska za rezanje prilikom prvih rezova.

Korak 4: Dodajte futrolu za Screen & Pi

Dodaj futrolu za Screen & Pi
Dodaj futrolu za Screen & Pi
Dodaj futrolu za Screen & Pi
Dodaj futrolu za Screen & Pi

Htio sam da uglovi područja ekrana budu zakrivljeni i trebalo mi je nešto za držanje Pi -a i prikaz u njemu - moje rješenje je bilo upotrijebiti mali plastični spremnik koji sam imao. Izrezao sam rupu na vrhu tijela i zalijepio posudu kroz ovo. Zatim sam zalijepila sve strane. Ovdje sam upotrijebio super ljepilo s obilnom sodom bikarbonom za jačanje zavara. Kasnije sam napunio i popunio/brusio sve kako bih sve pospremio i dao osjećaj "oblikovanijeg".

Korak 5: Ponovite za kontrolnu tablu

Ponovite za kontrolnu tablu
Ponovite za kontrolnu tablu
Ponovite za kontrolnu tablu
Ponovite za kontrolnu tablu
Ponovite za kontrolnu tablu
Ponovite za kontrolnu tablu

Zatim sam napravio potpuno isti predložak za transponiranje, rezanje i lijepljenje za izgradnju kućišta kontrolne ploče.

Korak 6: Izrežite cijev

Izrežite cev
Izrežite cev

Kao što vidite, spremnik koji planiram koristiti za smještaj glavnih elektroničkih komponenti sada ponosno sjedi u crnom plastičnom okviru, to znači da moram napraviti otvor u cijevi u koji će se smjestiti. Ponovo sam upotrijebio maskirnu traku kako bih se poredao tamo gdje sam želio izrezati i izrezati kvadrat cijevi tako da se dijelovi uklapaju.

Korak 7: Okvir

Bezel
Bezel
Bezel
Bezel

Jedan izazov koji sam si slučajno nametnuo bio je pokušaj da smislim okvir koji bi ispunio područje oko ekrana do rubova kontejnera. Nažalost, način na koji je ekran napravljen nema ništa korisno u svom dizajnu (poput rupa ili bilo čega drugog) što bi mu pomoglo pri montiranju, pa je i okvir morao držati ekran na mjestu. Moj prvi pokušaj (viđen ovdje) bio je mješavina plastike i pjene. Na kraju sam ovo ponovio nekoliko puta i na kraju je to bio jedan od izazovnijih dijelova konstrukcije. Pogoršavaju male tolerancije i osjetljiva priroda samog okvira i zaslona.

Korak 8: Test baterije

Test baterije
Test baterije
Test baterije
Test baterije
Test baterije
Test baterije

U ovom trenutku razmišljao sam o tome kako ovo pokrenuti neovisno o USB -u koji se napaja iz mreže. Testirao sam razne baterije i otkrio da Raspberry Pi + ekran zapravo ne troši toliko energije i da je savršeno sretan što radi čak i na jednom od mojih manjih baterija (besplatan sa sajma). Ovo je bilo zaista sretno jer se paket savršeno uklopio u prazninu unutar konstrukcije (fotografije kasnije). Sada možemo privremeno zalijepiti glavne dijelove tijela i pokrenuti našu prvu probnu vožnju na mojoj ruci!

Korak 9: Testiranje sposobnosti

Testiranje fit
Testiranje fit
Testiranje fit
Testiranje fit
Testiranje fit
Testiranje fit

Ovdje možete vidjeti gdje sam dodatno izmijenio jezgru kako bih omogućio pristup donjoj strani komponenti. Takođe možete vidjeti kako mi se posrećilo što je baterija lijepo postavljena u šupljinu s jedne strane Pi kontejnera. Konačno je započeo proces čišćenja spojeva, punjenje, brušenje i napravio probni sloj temeljnog premaza kako bi se dobio osjećaj gotovog izgleda (znao sam da ću u ovoj fazi brusiti ovo još mnogo puta i skoro sav taj prajmer će otići, ali htio sam osjetiti kako će to izgledati).

Korak 10: Dodajte kontrole i detalje

Dodajte kontrole i detalje
Dodajte kontrole i detalje
Dodajte kontrole i detalje
Dodajte kontrole i detalje
Dodajte kontrole i detalje
Dodajte kontrole i detalje

Želeo sam da niz crvenih/žutih/zelenih LED dioda formira merač, kao i okretni točkić i najmanje 2 tastera. Svi su oni postavljeni na odjeljak upravljačke ploče - jednostavno slučaj bušenja svih odgovarajućih rupa. Takođe sam počeo dodavati male komadiće plastičnih dijelova od starog otpada (u osnovi, skupljanje kompleta) kako bih dodao detalje i povećao interes za tijelo i kontrolnu ploču.

Korak 11: Obnova okvira broj 3

Obnova maske br. 3
Obnova maske br. 3
Obnova maske br. 3
Obnova maske br. 3
Obnova maske br. 3
Obnova maske br. 3

Kao što sam ranije spomenuo, borio sam se s okvirom za ovu konstrukciju i obnavljao je nekoliko puta. Ovo je treća iteracija na kojoj sam ostao. Moj pristup ovdje je upotreba lesonita i izrezivanje 2 različita oblika, jednog mislioca od drugog, a zatim njihovo lijepljenje (i pričvršćivanje) zajedno kako bi nastala srednja slika. Ovi oblici su omogućili da kvadratni ekran stane u ovaj okvir, a zatim je držao ekran na mestu unutar kontejnera (kao na slici 3). To mi je dalo dovoljno materijala da za pričvršćivanje koristim 4 vrlo mala vijka - pomoću kojih sam ovo čvrsto učvrstila na kućištu, a on bi zauzvrat držao zaslon stabilnim i sigurnim. U retrospektivi bih našao ekran koji je došao s nekim pristojnim mogućnostima ugradnje (ili upotrijebio 3D štampač - koji tada nisam imao).

Korak 12: Prototipiranje elektronike

Prototipiranje elektronike
Prototipiranje elektronike
Prototipiranje elektronike
Prototipiranje elektronike

Koristim ploču za postavljanje svojih jednostavnih krugova na ovaj način, a kako često ovaj dio projekta radim u drugom prostoru u odnosu na glavnu konstrukciju karoserije, spojio sam ga i sa drugim Raspberry PI. Ovdje sam koristio model 3, koji mi je dao malo više snage da se zapravo izravno povežem s njim i pokrenem IDE na ploči. Ovo mi je samo malo olakšalo brzo prototipiranje koda. Postoji mnogo drugih načina za daljinsko povezivanje/kod/otklanjanje grešaka, ovo je samo ono što sam volio učiniti ovdje.

Dizajn ovdje je prilično jednostavan, imamo;

  1. Rotacijski koder - koristi se uzemljenje i hrpa GPIO pinova za upravljanje smjerom klika i pritiskom na gumb.
  2. Par tipki, oni jednostavno koriste po jedan GPIO pin i zajedničku masu
  3. 3 LED diode, svaka sa ugrađenim otpornikom kako bi se spriječilo njihovo pojavljivanje, sve ide na zajedničko uporište, ali sa svakom pojedinačnom GPIO iglom tako da se svaka može adresirati zasebno.

To mi je dalo 3 LED diode za moj mjerač, rotacijski koder za rotiranje kroz ekrane na pipboyu i 3 tipke za pokretanje radnji (jedna na rotacijskom davaču i 2 odvojeno ožičena). To je otprilike sve što sam mogao uklopiti, a s obzirom da zaslon zauzima hrpu pinova, prilično troši ono što imate na standardnom Pi GPIO rasporedu. Međutim, za moje svrhe to je bilo u redu.

Druga slika prilično prikazuje konačni unutrašnji izgled s kojim sam krenuo. Ovdje sam proveo neko vrijeme testirajući načine upravljanja komponentama i provjeravajući da li je sve to uspjelo prije nego što sam ovo prenio u tijelo konstrukcije. Sav kôd je u githubu.

Napomena o rotacijskim koderima. Potrošio sam hrpu vremena pišući vlastitu mašinu stanja rotacijskog kodera za praćenje GPIO visokih/niskih promjena i preslikavanje na rotacijske položaje. Ovdje sam imao mješoviti uspjeh, uspio sam za "većinu" slučajeva, ali uvijek se moraju rješavati predmeti i (de) odbijanje itd. Daleko je, daleko lakše koristiti gotovu biblioteku, a postoji i odlična za one koje su dostupne za instalaciju na Python. Iskoristio sam to na kraju jer mi je omogućilo da se usredotočim na zabavni dio izgradnje, umjesto da provedem godine rješavajući probleme. Svi detalji o tome uključeni su u izvorni kod.

Ako ste tek počeli s Raspberry Pi, GPIO i elektronikom, toplo preporučujem sljedeće vodiče koji će vas provesti kroz sve što vam je potrebno za rad na gore navedenom rasporedu;

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

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

Korak 13: Transponiranje elektronike u tijelo

Transponiranje elektronike u tijelo
Transponiranje elektronike u tijelo
Transponiranje elektronike u tijelo
Transponiranje elektronike u tijelo
Transponiranje elektronike u tijelo
Transponiranje elektronike u tijelo

Nakon što sam dovršio izgled koristeći ploču, došlo je vrijeme da počnem razmišljati o tome kako ih montirati u tijelo pipboya. Odlučio sam da to želim učiniti tako da mogu demontirati i ukloniti sve elektroničke komponente u slučaju da u budućnosti trebam popraviti ili promijeniti bilo što. Da bih to postigao, odlučio sam sve pod-dijelove učiniti spojenim pomoću dupont konektora.

Za gumbe koje sam lemio na nekim produžnim žicama i koristio žičane omote za izolaciju krajeva, to mi je omogućilo da ih sastavim i rastavim s tijela (npr. Za testiranje, zatim slikanje itd.). Rotacijski koder već je imao pinove koji su mogli prihvatiti dupont konektore, pa sam samo trebao napraviti neke žice odgovarajuće duljine.

LED -ima je trebalo malo više posla - za ovo sam odlučio upotrijebiti malo otpadne plastike koju sam imao (izrezanu da stane) da napravim uklonjivu ploču za ugradnju LED -a. Zatim sam ih vruće zalijepio na mjesto i lemio otpornike i žice. To je učinilo jedinicu za uklanjanje koju sam mogao postaviti i ukloniti te je olakšalo slikanje i doradu.

Imajte na umu da je moje lemljenje užasno, pa sam ovo držao jednostavno i izbjegao sve previše detaljno/fino. Na konačnoj slici možete vidjeti da sam imao i vrlo male ploče (5x5). Koristio sam jednu od njih montiranu unutra kako bih osigurao panel za povezivanje svega na/sa GPIO -a. Posebno je ovo bilo korisno za stvaranje zajedničke uzemljene šine koju bih mogao koristiti i izbjeći da se puno uzemljenih žica vijuga natrag u Pi.

Zatim sam izrezao razne rupe u spremniku kako bih žice provukao do Pi i spojio na GPIO. Ovaj dizajn mi je omogućio da sve do kraja uklonim ako je potrebno (nešto što sam radio nekoliko puta dok sam dovršavao izgradnju).

Korak 14: Fino podešavanje Fit -a

Fine Tuning the Fit
Fine Tuning the Fit
Fine Tuning the Fit
Fine Tuning the Fit

U ovom trenutku naišao sam na neke "fit" probleme. Prvo, upotreba dupont konektora za ožičenje značila je da ih je bilo teško namjestiti na igle s postavljenim šeširom za prikaz jer nije postojao dovoljan razmak po visini. To sam riješio tako što sam kupio (ovo je jedna od rijetkih stvari koje sam zapravo kupio za ovaj projekt) mali GPIO pin produživač kako bih mogao postaviti šešir na ekran i ostaviti prostor za pristup preostalim GPIO pinovima pomoću dupont konektora.

Također sam izrezao neke male komade podloge od pjene da napravim bočne obloge unutar spremnika, što je pomoglo da se Pi + zaslon postavi na pravo mjesto i spriječi njegovo kretanje.

Korak 15: Povucite okretni davač unatrag

Pomaknite okretni davač unatrag
Pomaknite okretni davač unatrag

Rotacijski enkoderi često dolaze (kao i moj) s lijepim, sjajnim modernim gumbom u stilu "hi fi". Ovo je bilo potpuno neprirodno za gradnju, pa sam morao smisliti nešto drugo. U svojoj slučajnoj kutiji sa dijelovima naišao sam na stari zupčanik iz bušilice koju sam davno polomio. Ovo je izgledalo dobro, ali nije odgovaralo rotacijskom koderu. Moje rješenje ovdje je bilo isprobavanje različitih zidnih utikača sve dok nisam pronašao jedan koji odgovara okretnom točkiću, a zatim ga izrezati u oblik kako bih ga mogao koristiti kao "unutarnju ogrlicu" za postavljanje svrdla na rotacijski davač kao prikladniju temu kontrola.

Korak 16: Unutrašnja obloga

Unutrašnja obloga
Unutrašnja obloga
Unutrašnja obloga
Unutrašnja obloga

Još podnih pločica od pjene! Ovaj put sam ih iskoristio za izradu mekane obloge kako bi joj bilo udobnije (bez previše labave). Izrezivanjem rupe od pjene također sam uspio apsorbirati dio "grudvice" koju čini spremnik za Pi. Sve u svemu, ovo ga je učinilo mnogo nosivijim. Nije prikazano na ovim fotografijama, ali učinio sam ga malo većim od glavnog tijela tako da je vidljiv na krajevima, koje sam kasnije naslikao i sve je to pomoglo da se gotovom predmetu doda malo kontrasta i interesa.

Korak 17: Dodavanje detalja

Dodavanje detalja
Dodavanje detalja
Dodavanje detalja
Dodavanje detalja

Vrijeme je da počnete dodavati ukrase i učinite ih zanimljivijima. Prije svega, dodao sam nekoliko traka od plastike uz jedno lice kako bih mu dao vizualni interes. Zatim sam na neke stezaljke dodao neke lažne žice i samo ih gurnuo u rupu koju sam izbušio u tijelu. Sve je to kasnije obojeno u različite boje.

Korak 18: Bojenje i završna izrada karoserije

Bojenje i završna izrada karoserije
Bojenje i završna izrada karoserije
Bojenje i završna izrada karoserije
Bojenje i završna izrada karoserije
Bojenje i završna izrada karoserije
Bojenje i završna izrada karoserije

Nisam se previše brinuo oko netaknute završne obrade - jer bi ona ionako trebala biti stara i dobro korištena (zapravo ću se možda vratiti i kad -tad još više izdržati). Ali ja sam htio da izgleda kao dosljedan i cjelovit objekt koji nije spojen zajedno od slučajnog otpada (iako je to upravo ono što je bilo). Prošao sam kroz brojne iteracije brušenja, punjenja (miliput je moj izbor punjenja za plastiku) i ponovio. Zatim nekoliko slojeva temeljnog premaza i boje kako bi se dodatno izgladili svi spojevi. Zatim više brušenja i punjenja, te više slikanja.

Kad sam pogledao i osjetio tijelo s kojim sam bio zadovoljan, počeo sam dodavati neke detalje. Koristio sam trljanje i poliranje rešetki na kontrolama kako bih im dao osjećaj žičane mreže. Tu i tamo sam dodao i male detalje boje koristeći akril.

Ukopao sam se u svoju kolekciju nasumičnih naljepnica i dodao nekoliko da dovršim učinak. Zatim sam isprao atmosferske utjecaje s mješovitim bojama kako bih dodao malo prljavštine i prljavštine u teško dostupna područja koja bi bilo teško očistiti. Ovo je možda trenutno previše suptilno, pa ću se kasnije možda vratiti i dodati još neke.

Korak 19: Kodiranje

Kodiranje
Kodiranje

Dio mojih ambicija za ovaj projekt bio je postići da reagira poput pravog pipboya - a za mene je najpoznatiji dio te igre okretanje brojčanika za prebacivanje između različitih ekrana. Da bih to postigao, odlučio sam napisati pipboy korisničko sučelje koje će moći prikazati niz ekrana i omogućiti vam da se krećete između njih. Želeo sam da sadržaj ekrana učinim nečim što bih lako mogao da promenim, i zaista mogu da dodam/uklonim ekrane.

Odabrao sam da ovo pišem u Pythonu zbog odlične podrške za Raspberry Pi, GPIO itd. Python je prilično nisko na mojoj listi jezika koje poznajem, tako da je ovo za mene bila velika krivulja učenja, a veliki dio koda je kao rezultat neuredan. S vremenom ću ovo ažurirati jer nisam u potpunosti završio sve što sam htio ovdje učiniti - ali sada je dovoljno blizu da ga podijelim jer su svi glavni koncepti prisutni.

Moj dizajn UI koda je prilično jednostavan, postoji glavna Python skripta koja postavlja ekran, konfigurira GPIO, učitava ekrane i ulazi u beskonačnu petlju ažuriranja, čekajući korisničke događaje i ažurirajući prikaz prema potrebi. Osim toga, postoje različite skripte za podršku koje pomažu u generiranju ekrana korisničkog sučelja prije vremena.

Glavne biblioteke koje se koriste:

  • pygame: Koristim ovo kao motor za pokretanje korisničkog sučelja jer mi je omogućilo crtanje proizvoljne grafike, manipulaciju slikama, fontovima, prikaz na cijelom ekranu itd.
  • pyky040: Ovo omogućava rukovanje okretnim brojčanikom i uštedjelo mi je puno vremena (veliko hvala Raphaelu Yanceyju što je ovo objavio).
  • RPi. GPIO: Za dobru GPIO vožnju, poigrao sam se s nekoliko opcija ovdje, ali to mi je dalo pravi nivo fleksibilnosti koji sam želio, posebno sa stvarima poput korištenja rezervnog GPIO -a kao još 3,3 V za pogon rotacijskog davača itd.
  • šum: Za generiranje perlin šuma, koji mi omogućuje stvaranje slučajnog valnog oblika za radio ekran koji izgleda prirodnije
  • red: Naišao sam na frustrirajuću grešku sa vremenskim rasporedom događaja iz okretnog kodera i (vrlo) sporom frekvencijom osvježavanja LCD ekrana. Na kraju, način na koji sam to riješio bio je stavljanje ulaznih događaja u red čekanja iz rotacijskog kodera i njihovo odabiranje jedan po jedan dok se ekran osvježavao.
  • os, sys, threading, time: sve se koristi za standardne python funkcije

Napomena o dizajnu rukovanja ekranom. Zasloni su definirani kao lista imena unutar koda. Svaki unos na popisu može imati ili-p.webp

Sadržaj tih datoteka generira se na drugom mjestu (ručno ili pomoću drugih skripti), čiji se izlaz sprema kao-p.webp

Postoje čudni izuzeci gdje se kodira nekoliko stvari - poput valnog oblika za slučajni radio ekran koji se izračunava u stvarnom vremenu i animira.

Ako vam analogija pomaže, zamislite dizajn UI -a kao izuzetno grub i jednostavan web preglednik - svaki "ekran" je poput zaista jednostavne web stranice koja se može sastojati samo od jednog-p.webp

Evo veza do glavnih biblioteka koje sam ovdje koristio:

www.pygame.org/news

pypi.org/project/pyky040/

pypi.org/project/noise/

Korak 20: Ekran sa statistikom

Ekran sa statistikom
Ekran sa statistikom

Nijedan pipboy ne bi bio potpun bez ekrana za statistiku klasične pipboy siluete. Za to je moj prijatelj stvorio statički-p.webp

Korak 21: Ekran inventara

Ekran inventara
Ekran inventara

Nešto što je uvijek korisno kod Pi projekata je način prikazivanja osnovnih informacija poput IP adrese koju je imao DHCP itd. Odlučio sam preopteretiti ekran Inventory kao prikaz Pi "inventara" - koji CPU, memorija, IP adresa itd. Napisao sam malu Linux skriptu za prikupljanje ovih podataka i samo ih preusmjerio u tekstualnu (.txt) datoteku s odgovarajućim imenom koju UI sistem tada preuzima i prikazuje. Na ovaj način, ako se ikada nađem na drugoj lokaciji, mogu pokrenuti skriptu i pokupiti novu.txt datoteku s ažuriranom IP adresom itd.

Korak 22: Zaslon karte

Zaslon karte
Zaslon karte

Ovaj ekran je bio jedan od složenijih ekrana za rad. Raspberry Pi 0 ne dolazi s GPS modulom, ali htio sam učiniti da karta ima određenu valjanost tamo gdje je Pi bio. Moje rješenje za ovo je zasebna skripta koja povlači Pi IP adresu, koristi https://ipinfo.io za traženje približne lokacije. JSON odgovor se snima i tada pretvaram koordinate kako bih mogao povući ploču openstreetmap.org za približno lokaciju.

Pločice se pojavljuju u više boja, ali želio sam da slika u zelenoj ljestvici odgovara izgledu i osjećaju Pipboya, ali nisam mogao pronaći baš takvu, pa sam napisao filtar u zelenoj ljestvici u Pythonu kako bih promijenio boje ploče openstreetmap, a zatim novu sliku keširajte u-p.webp

Tijekom gornjeg procesa generira se tekstualna datoteka s približnom lokacijom i koordinatama, a pločica karte stvara se kao png. Korisničko sučelje pipboya povlači obje ove datoteke i prekriva sadržaj kako bi stvorio ekran karte koji radi (u granicama tačnosti razlučivosti IP adrese prema lokaciji).

Korak 23: Ekran sa podacima

Ekran sa podacima
Ekran sa podacima

Ovo je samo probna kartica (generirana drugom python skriptom i ispisana u-p.webp

Korak 24: Radio ekran

Radio ekran
Radio ekran

Uz ekran karte, ovo je drugi ekran koji mi je zaista napravio mnogo posla. Ovo je jedini ekran na kojem sam se igrao sa animacijama - i uglavnom radi kako je predviđeno, ali performanse i dalje predstavljaju problem sa učestalošću osvježavanja LCD ekrana. Struktura ekrana je tekstualna datoteka koja sadrži neke nasumično odabrane nazive radija (ovo su samo proizvoljni nizovi i ne rade ništa osim prikazivanja liste na ekranu),-p.webp

Ovo je jedini ekran na kojem petlja pygame -a zaista radi u svakom ciklusu, mora izračunati novi valni oblik, izbrisati dio ekrana u ovom živom i ponovo ga iscrtati.

Korak 25: Završne misli

Image
Image
Završne misli
Završne misli

Ovo je vjerovatno najizazovnija konstrukcija koju sam napravio, sa mnogo različitih koncepata i vještina, ali je i jedna od najugodnijih stvarnih stvari koje kao rezultat toga funkcioniraju. Još sam u procesu sređivanja nekih svojih tehničkih napomena, kao i github repo za kôd. Sve ću uskoro učiniti dostupnim, pa se uskoro vratite za više detalja i informacija kako budem imao vremena da ih dodam u zapis.

Ako počnete raditi ovako nešto, volio bih vidjeti rezultate, a ako imate bilo kakvih pitanja, slobodno me kontaktirajte, a ja ću nastojati dodati više informacija u svim koracima u kojima želite pomoći.

Korak 26: Kod otvoren na Githubu

Kod otvoren na Githubu
Kod otvoren na Githubu

Konačno sam stigao otvoriti kod na Githubu. Dostupno je na ovoj poveznici:

Preporučuje se: